diff --git a/BUILD.gn b/BUILD.gn index 5ba5cc8..2214cac3 100644 --- a/BUILD.gn +++ b/BUILD.gn
@@ -162,7 +162,10 @@ } if (is_chromeos_lacros) { - deps += [ "//chrome/test:lacros_chrome_browsertests" ] + deps += [ + "//chrome/test:lacros_chrome_browsertests", + "//chrome/test:lacros_chrome_unittests", + ] } if (!is_ios) {
diff --git a/DEPS b/DEPS index 80fed57..80fd8d66 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': '6356cb1904b84dbda9941dd5668a3687bdde79a8', + 'skia_revision': '854ee85736e3ea38f874ac490a9ba24d2d58158a', # 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': 'b5675ec04fc391dcfbeb1f3894245a08f3e445af', + 'v8_revision': 'c8d1d1cbceae8f59975b2ec7d86981ec3fabb11b', # 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. @@ -211,7 +211,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. - 'angle_revision': '973bd4ba0f5775c66b6811bf81f6483e629365c7', + 'angle_revision': 'e91097bf3a24895f23b928ed12087dcbb1d54d7b', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. @@ -226,7 +226,7 @@ # # Note this revision should be updated with # third_party/boringssl/roll_boringssl.py, not roll-dep. - 'boringssl_revision': 'ca058c06474c4492f0fbd517679793234dde6165', + 'boringssl_revision': 'bac5544e9832c65c95283e95062263c79a9a6733', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling google-toolbox-for-mac # and whatever else without interference from each other. @@ -266,7 +266,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': 'de6e3a9d85af0a8bfdd39245e72dc94fd8b579d9', + 'catapult_revision': '6c876045de14333d460a9256ac6d700d94fcd0aa', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libFuzzer # and whatever else without interference from each other. @@ -553,7 +553,7 @@ }, 'src/ios/third_party/material_components_ios/src': { - 'url': Var('chromium_git') + '/external/github.com/material-components/material-components-ios.git' + '@' + '3bc7339b7a8e834a661de78fe3ae9805468f5259', + 'url': Var('chromium_git') + '/external/github.com/material-components/material-components-ios.git' + '@' + 'f03c0a36e0fcc5ded1f7ce51b0a0589224689d01', 'condition': 'checkout_ios', }, @@ -776,7 +776,7 @@ Var('chromium_git') + '/angle/angle.git' + '@' + Var('angle_revision'), 'src/third_party/dav1d/libdav1d': - Var('chromium_git') + '/external/github.com/videolan/dav1d.git' + '@' + 'ea65e1abc519e4cff196d80236fcf5751247c09f', + Var('chromium_git') + '/external/github.com/videolan/dav1d.git' + '@' + '441e643915bea71a0234d85121109d2816f18984', 'src/third_party/dawn': Var('dawn_git') + '/dawn.git' + '@' + Var('dawn_revision'), @@ -888,12 +888,12 @@ # For Linux and Chromium OS. 'src/third_party/cros_system_api': { - 'url': Var('chromium_git') + '/chromiumos/platform2/system_api.git' + '@' + 'd6f3734b69e2f842a58bdc6c6a63cf17d82629df', + 'url': Var('chromium_git') + '/chromiumos/platform2/system_api.git' + '@' + 'e5fc0c7ccb3c64ec9679dd00e95b504121745912', 'condition': 'checkout_linux', }, 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '81098e59adfcb81e94b0f8584f5bdbfdb0554573', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '6128ceacf0011786c1c3f0875911305fc5bdd086', 'src/third_party/devtools-frontend/src': Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'), @@ -904,6 +904,10 @@ 'src/third_party/eigen3/src': Var('chromium_git') + '/external/gitlab.com/libeigen/eigen.git' + '@' + '2ce2f5198929caab4b41a6ad1b9c93f67d8b9a69', + 'src/third_party/emoji-metadata/src': { + 'url': Var('chromium_git') + '/external/github.com/googlefonts/emoji-metadata' + '@' + '9d8e5cfe52ee763b7dd91e33e5a50250efbf7135', + 'condition': 'checkout_chromeos', + }, 'src/third_party/espresso': { 'packages': [ @@ -1340,7 +1344,7 @@ 'packages': [ { 'package': 'fuchsia/third_party/aemu/linux-amd64', - 'version': '9zubYTHwbH6DlxoyH3dV8sX48bSr3IkL8MkHYKlEtVkC' + 'version': 'sVTM9Oz2ICYVmyroC8mUqO8lr6-FvUbNVn4u7F-n-nMC' }, ], 'condition': 'host_os == "linux" and checkout_fuchsia', @@ -1552,7 +1556,7 @@ 'packages': [ { 'package': 'skia/tools/goldctl/linux-amd64', - 'version': 'h8KxWs4p5Ox0HAM1_xkOEZT6ctPb1Rfi3qeXr_mmL2YC', + 'version': 'CQ5a33Wu9Sm6bRTrd26RFsJVr42IoKD4Ediyp7eyuwwC', }, ], 'dep_type': 'cipd', @@ -1562,7 +1566,7 @@ 'packages': [ { 'package': 'skia/tools/goldctl/windows-amd64', - 'version': 'uyDrAODdxxnyC-OmE4swqMJGVNnO4tK6XpC4VfbZf-gC', + 'version': 'slJNuZyzBI9lNI9Uje1a2fiVtubv8LEBgUZLFdHZjssC', }, ], 'dep_type': 'cipd', @@ -1572,7 +1576,7 @@ 'packages': [ { 'package': 'skia/tools/goldctl/mac-amd64', - 'version': 'LNZgcy3MnDuxTfNU14P35CMe60eSA5owlqW81AdRROIC', + 'version': 'AXBg8ZzAzlIdv0U_KR8dr92w1szmAp-MB0Z9ZYBmFy4C', }, ], 'dep_type': 'cipd', @@ -1586,7 +1590,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@e8f563f111dbbd2f891c09487fc8f661c8547455', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@f257fc7a70558430d8225886810e6c724cdd0746', 'condition': 'checkout_src_internal', },
diff --git a/ash/BUILD.gn b/ash/BUILD.gn index 4a01bfa9..b6b069c 100644 --- a/ash/BUILD.gn +++ b/ash/BUILD.gn
@@ -1234,6 +1234,8 @@ "system/phonehub/silence_phone_quick_action_controller.h", "system/phonehub/task_continuation_view.cc", "system/phonehub/task_continuation_view.h", + "system/phonehub/tether_connection_pending_view.cc", + "system/phonehub/tether_connection_pending_view.h", "system/phonehub/ui_constants.h", "system/power/backlights_forced_off_setter.cc", "system/power/backlights_forced_off_setter.h", @@ -1672,16 +1674,16 @@ "wm/video_detector.h", "wm/window_animations.cc", "wm/window_animations.h", - "wm/window_cycle_controller.cc", - "wm/window_cycle_controller.h", - "wm/window_cycle_event_filter.cc", - "wm/window_cycle_event_filter.h", - "wm/window_cycle_list.cc", - "wm/window_cycle_list.h", - "wm/window_cycle_tab_slider.cc", - "wm/window_cycle_tab_slider.h", - "wm/window_cycle_tab_slider_button.cc", - "wm/window_cycle_tab_slider_button.h", + "wm/window_cycle/window_cycle_controller.cc", + "wm/window_cycle/window_cycle_controller.h", + "wm/window_cycle/window_cycle_event_filter.cc", + "wm/window_cycle/window_cycle_event_filter.h", + "wm/window_cycle/window_cycle_list.cc", + "wm/window_cycle/window_cycle_list.h", + "wm/window_cycle/window_cycle_tab_slider.cc", + "wm/window_cycle/window_cycle_tab_slider.h", + "wm/window_cycle/window_cycle_tab_slider_button.cc", + "wm/window_cycle/window_cycle_tab_slider_button.h", "wm/window_dimmer.cc", "wm/window_dimmer.h", "wm/window_finder.cc", @@ -2344,7 +2346,7 @@ "wm/toplevel_window_event_handler_unittest.cc", "wm/video_detector_unittest.cc", "wm/window_animations_unittest.cc", - "wm/window_cycle_controller_unittest.cc", + "wm/window_cycle/window_cycle_controller_unittest.cc", "wm/window_dimmer_unittest.cc", "wm/window_finder_unittest.cc", "wm/window_manager_unittest.cc", @@ -2680,8 +2682,6 @@ "wm/gestures/back_gesture/test_back_gesture_contextual_nudge_delegate.h", "wm/lock_state_controller_test_api.cc", "wm/lock_state_controller_test_api.h", - "wm/splitview/multi_display_overview_and_split_view_test.cc", - "wm/splitview/multi_display_overview_and_split_view_test.h", "wm/tablet_mode/tablet_mode_controller_test_api.cc", "wm/tablet_mode/tablet_mode_controller_test_api.h", "wm/test_activation_delegate.cc",
diff --git a/ash/accelerators/accelerator_controller_impl.cc b/ash/accelerators/accelerator_controller_impl.cc index efa0c34..a3d3026 100644 --- a/ash/accelerators/accelerator_controller_impl.cc +++ b/ash/accelerators/accelerator_controller_impl.cc
@@ -75,7 +75,7 @@ #include "ash/wm/overview/overview_session.h" #include "ash/wm/screen_pinning_controller.h" #include "ash/wm/tablet_mode/tablet_mode_controller.h" -#include "ash/wm/window_cycle_controller.h" +#include "ash/wm/window_cycle/window_cycle_controller.h" #include "ash/wm/window_positioning_utils.h" #include "ash/wm/window_state.h" #include "ash/wm/window_util.h"
diff --git a/ash/accelerators/accelerator_controller_unittest.cc b/ash/accelerators/accelerator_controller_unittest.cc index a8bda3a..c972dd0 100644 --- a/ash/accelerators/accelerator_controller_unittest.cc +++ b/ash/accelerators/accelerator_controller_unittest.cc
@@ -608,12 +608,6 @@ const AcceleratorControllerTestWithClamshellSplitView&) = delete; ~AcceleratorControllerTestWithClamshellSplitView() override = default; - void SetUp() override { - scoped_feature_list_.InitAndEnableFeature( - features::kDragToSnapInClamshellMode); - AcceleratorControllerTest::SetUp(); - } - protected: // Note: These functions assume the default display resolution 800x600. void EnterOverviewAndDragToSnapLeft(aura::Window* window) { @@ -634,8 +628,6 @@ GetOverviewItemForWindow(window)->target_bounds().CenterPoint())); generator->DragMouseTo(destination); } - - base::test::ScopedFeatureList scoped_feature_list_; }; TEST_F(AcceleratorControllerTestWithClamshellSplitView, WindowSnapUma) {
diff --git a/ash/accessibility/accessibility_controller_impl.cc b/ash/accessibility/accessibility_controller_impl.cc index 2ebc564..df90960 100644 --- a/ash/accessibility/accessibility_controller_impl.cc +++ b/ash/accessibility/accessibility_controller_impl.cc
@@ -46,6 +46,7 @@ #include "base/metrics/histogram_functions.h" #include "base/metrics/user_metrics.h" #include "base/strings/string16.h" +#include "base/strings/string_number_conversions.h" #include "chromeos/audio/cras_audio_handler.h" #include "components/pref_registry/pref_registry_syncable.h" #include "components/prefs/pref_change_registrar.h" @@ -189,9 +190,9 @@ prefs::kAccessibilitySwitchAccessAutoScanKeyboardSpeedMs, prefs::kAccessibilitySwitchAccessAutoScanSpeedMs, prefs::kAccessibilitySwitchAccessEnabled, - prefs::kAccessibilitySwitchAccessNextKeyCodes, - prefs::kAccessibilitySwitchAccessPreviousKeyCodes, - prefs::kAccessibilitySwitchAccessSelectKeyCodes, + prefs::kAccessibilitySwitchAccessNextDeviceKeyCodes, + prefs::kAccessibilitySwitchAccessPreviousDeviceKeyCodes, + prefs::kAccessibilitySwitchAccessSelectDeviceKeyCodes, }; // Helper function that is used to verify the validity of kFeatures and @@ -370,11 +371,11 @@ std::string PrefKeyForSwitchAccessCommand(SwitchAccessCommand command) { switch (command) { case SwitchAccessCommand::kSelect: - return prefs::kAccessibilitySwitchAccessSelectKeyCodes; + return prefs::kAccessibilitySwitchAccessSelectDeviceKeyCodes; case SwitchAccessCommand::kNext: - return prefs::kAccessibilitySwitchAccessNextKeyCodes; + return prefs::kAccessibilitySwitchAccessNextDeviceKeyCodes; case SwitchAccessCommand::kPrevious: - return prefs::kAccessibilitySwitchAccessPreviousKeyCodes; + return prefs::kAccessibilitySwitchAccessPreviousDeviceKeyCodes; case SwitchAccessCommand::kNone: NOTREACHED(); return ""; @@ -418,6 +419,26 @@ } } +void MigrateSwitchAccessKeyCodePref(PrefService* prefs, + const std::string& old_pref, + const std::string& new_pref) { + if (!prefs->HasPrefPath(old_pref)) + return; + + base::ListValue devices; + devices.Append(ash::kSwitchAccessInternalDevice); + devices.Append(ash::kSwitchAccessUsbDevice); + devices.Append(ash::kSwitchAccessBluetoothDevice); + + const auto old_keys = prefs->Get(old_pref)->GetList(); + base::DictionaryValue new_keys; + for (const auto& key : old_keys) + new_keys.SetPath(base::NumberToString(key.GetInt()), devices.Clone()); + + prefs->Set(new_pref, std::move(new_keys)); + prefs->ClearPref(old_pref); +} + } // namespace AccessibilityControllerImpl::Feature::Feature( @@ -663,17 +684,17 @@ registry->RegisterBooleanPref( prefs::kAccessibilitySwitchAccessEnabled, false, user_prefs::PrefRegistrySyncable::SYNCABLE_OS_PREF); - registry->RegisterListPref( - prefs::kAccessibilitySwitchAccessSelectKeyCodes, - base::Value(std::vector<base::Value>()), + registry->RegisterDictionaryPref( + prefs::kAccessibilitySwitchAccessSelectDeviceKeyCodes, + base::Value(base::Value::Type::DICTIONARY), user_prefs::PrefRegistrySyncable::SYNCABLE_OS_PREF); - registry->RegisterListPref( - prefs::kAccessibilitySwitchAccessNextKeyCodes, - base::Value(std::vector<base::Value>()), + registry->RegisterDictionaryPref( + prefs::kAccessibilitySwitchAccessNextDeviceKeyCodes, + base::Value(base::Value::Type::DICTIONARY), user_prefs::PrefRegistrySyncable::SYNCABLE_OS_PREF); - registry->RegisterListPref( - prefs::kAccessibilitySwitchAccessPreviousKeyCodes, - base::Value(std::vector<base::Value>()), + registry->RegisterDictionaryPref( + prefs::kAccessibilitySwitchAccessPreviousDeviceKeyCodes, + base::Value(base::Value::Type::DICTIONARY), user_prefs::PrefRegistrySyncable::SYNCABLE_OS_PREF); registry->RegisterBooleanPref( prefs::kAccessibilitySwitchAccessAutoScanEnabled, false, @@ -1333,6 +1354,26 @@ void AccessibilityControllerImpl::ObservePrefs(PrefService* prefs) { DCHECK(prefs); + // TODO(accessibility): Remove in m92 or later after deprecation; see + // https://bugs.chromium.org/p/chromium/issues/detail?id=1161305 + static const char kAccessibilitySwitchAccessSelectKeyCodes[] = + "settings.a11y.switch_access.select.key_codes"; + static const char kAccessibilitySwitchAccessNextKeyCodes[] = + "settings.a11y.switch_access.next.key_codes"; + static const char kAccessibilitySwitchAccessPreviousKeyCodes[] = + "settings.a11y.switch_access.previous.key_codes"; + + // Migrate old keys to the new format. + MigrateSwitchAccessKeyCodePref( + prefs, kAccessibilitySwitchAccessSelectKeyCodes, + prefs::kAccessibilitySwitchAccessSelectDeviceKeyCodes); + MigrateSwitchAccessKeyCodePref( + prefs, kAccessibilitySwitchAccessNextKeyCodes, + prefs::kAccessibilitySwitchAccessNextDeviceKeyCodes); + MigrateSwitchAccessKeyCodePref( + prefs, kAccessibilitySwitchAccessPreviousKeyCodes, + prefs::kAccessibilitySwitchAccessPreviousDeviceKeyCodes); + active_user_prefs_ = prefs; // Watch for pref updates from webui settings and policy. @@ -1398,17 +1439,17 @@ &AccessibilityControllerImpl::UpdateShortcutsEnabledFromPref, base::Unretained(this))); pref_change_registrar_->Add( - prefs::kAccessibilitySwitchAccessSelectKeyCodes, + prefs::kAccessibilitySwitchAccessSelectDeviceKeyCodes, base::BindRepeating( &AccessibilityControllerImpl::UpdateSwitchAccessKeyCodesFromPref, base::Unretained(this), SwitchAccessCommand::kSelect)); pref_change_registrar_->Add( - prefs::kAccessibilitySwitchAccessNextKeyCodes, + prefs::kAccessibilitySwitchAccessNextDeviceKeyCodes, base::BindRepeating( &AccessibilityControllerImpl::UpdateSwitchAccessKeyCodesFromPref, base::Unretained(this), SwitchAccessCommand::kNext)); pref_change_registrar_->Add( - prefs::kAccessibilitySwitchAccessPreviousKeyCodes, + prefs::kAccessibilitySwitchAccessPreviousDeviceKeyCodes, base::BindRepeating( &AccessibilityControllerImpl::UpdateSwitchAccessKeyCodesFromPref, base::Unretained(this), SwitchAccessCommand::kPrevious)); @@ -1666,12 +1707,26 @@ SyncSwitchAccessPrefsToSignInProfile(); + if (!accessibility_event_rewriter_) + return; + std::string pref_key = PrefKeyForSwitchAccessCommand(command); - const base::ListValue* key_codes_pref = active_user_prefs_->GetList(pref_key); - std::set<int> key_codes; - for (const base::Value& v : *key_codes_pref) { - int key_code = v.GetInt(); - key_codes.insert(key_code); + const base::DictionaryValue* key_codes_pref = + active_user_prefs_->GetDictionary(pref_key); + std::map<int, std::set<std::string>> key_codes; + for (const auto& v : key_codes_pref->DictItems()) { + int key_code; + if (!base::StringToInt(v.first, &key_code)) { + NOTREACHED(); + return; + } + + key_codes[key_code] = std::set<std::string>(); + + for (const base::Value& device_type : v.second.GetList()) + key_codes[key_code].insert(device_type.GetString()); + + DCHECK(!key_codes[key_code].empty()); } std::string uma_name = UmaNameForSwitchAccessCommand(command); @@ -1679,12 +1734,11 @@ SwitchAccessCommandKeyCode uma_value = UmaValueForKeyCode(0); base::UmaHistogramEnumeration(uma_name, uma_value); } - for (int key_code : key_codes) { - SwitchAccessCommandKeyCode uma_value = UmaValueForKeyCode(key_code); + for (const auto& key_code : key_codes) { + SwitchAccessCommandKeyCode uma_value = UmaValueForKeyCode(key_code.first); base::UmaHistogramEnumeration(uma_name, uma_value); } - if (accessibility_event_rewriter_) accessibility_event_rewriter_->SetKeyCodesForSwitchAccessCommand(key_codes, command); }
diff --git a/ash/ash_strings.grd b/ash/ash_strings.grd index 3ac4c6e..f160b19 100644 --- a/ash/ash_strings.grd +++ b/ash/ash_strings.grd
@@ -1163,6 +1163,9 @@ <message name="IDS_ASH_PHONE_HUB_PHONE_CONNECTING_DIALOG_TITLE" desc="The title of the generic connecting dialog that indicates the device is trying to connect to your phone."> Connecting... </message> + <message name="IDS_ASH_PHONE_HUB_TETHER_CONNECTION_PENDING_DIALOG_TITLE" desc="The title of the connecting dialog that indicates a tether connection to the phone is in progress."> + Connecting to hotspot... + </message> <message name="IDS_ASH_PHONE_HUB_PHONE_CONNECTING_DIALOG_DESCRIPTION" desc="The description of the generic connecting dialog that indicates the device is trying to connect to your phone."> Make sure your phone is nearby and has Bluetooth turned on. </message>
diff --git a/ash/ash_strings_grd/IDS_ASH_PHONE_HUB_TETHER_CONNECTION_PENDING_DIALOG_TITLE.png.sha1 b/ash/ash_strings_grd/IDS_ASH_PHONE_HUB_TETHER_CONNECTION_PENDING_DIALOG_TITLE.png.sha1 new file mode 100644 index 0000000..f6dde33 --- /dev/null +++ b/ash/ash_strings_grd/IDS_ASH_PHONE_HUB_TETHER_CONNECTION_PENDING_DIALOG_TITLE.png.sha1
@@ -0,0 +1 @@ +69e50ec816e45a15ae1bd0a97966ece8ca08e671 \ No newline at end of file
diff --git a/ash/clipboard/clipboard_history_controller_impl.cc b/ash/clipboard/clipboard_history_controller_impl.cc index d997319d..90fc252 100644 --- a/ash/clipboard/clipboard_history_controller_impl.cc +++ b/ash/clipboard/clipboard_history_controller_impl.cc
@@ -13,9 +13,13 @@ #include "ash/clipboard/clipboard_nudge_controller.h" #include "ash/clipboard/scoped_clipboard_history_pause_impl.h" #include "ash/public/cpp/clipboard_image_model_factory.h" +#include "ash/public/cpp/file_icon_util.h" #include "ash/public/cpp/window_tree_host_lookup.h" #include "ash/resources/vector_icons/vector_icons.h" #include "ash/shell.h" +#include "ash/style/ash_color_provider.h" +#include "base/base64.h" +#include "base/files/file_path.h" #include "base/location.h" #include "base/metrics/histogram_macros.h" #include "base/strings/utf_string_conversions.h" @@ -32,11 +36,13 @@ #include "ui/base/models/menu_separator_types.h" #include "ui/base/models/simple_menu_model.h" #include "ui/base/resource/resource_bundle.h" +#include "ui/base/webui/web_ui_util.h" #include "ui/display/screen.h" #include "ui/events/event.h" #include "ui/events/event_constants.h" #include "ui/events/keycodes/keyboard_codes_posix.h" #include "ui/events/types/event_type.h" +#include "ui/gfx/codec/png_codec.h" #include "ui/gfx/geometry/rect.h" #include "ui/strings/grit/ui_strings.h" #include "ui/views/controls/menu/menu_controller.h" @@ -45,6 +51,9 @@ namespace { +constexpr char kImageDataKey[] = "imageData"; +constexpr char kTextDataKey[] = "textData"; + ui::ClipboardNonBacked* GetClipboard() { auto* clipboard = ui::ClipboardNonBacked::GetForCurrentThread(); DCHECK(clipboard); @@ -269,6 +278,82 @@ clipboard_history_.get()); } +base::Value ClipboardHistoryControllerImpl::GetHistoryValues( + const std::set<std::string>& item_id_filter) const { + base::Value item_results(base::Value::Type::LIST); + + // Get the clipboard data for each clipboard history item. + for (const auto& item : history()->GetItems()) { + // If the |item_id_filter| contains values, then only return the clipboard + // items included in it. + if (!item_id_filter.empty() && + item_id_filter.find(item.id().ToString()) == item_id_filter.end()) { + continue; + } + + base::Value item_value(base::Value::Type::DICTIONARY); + switch (ash::ClipboardHistoryUtil::CalculateDisplayFormat(item.data())) { + case ash::ClipboardHistoryUtil::ClipboardHistoryDisplayFormat::kBitmap: + item_value.SetKey( + kImageDataKey, + base::Value(webui::GetBitmapDataUrl(item.data().bitmap()))); + break; + case ash::ClipboardHistoryUtil::ClipboardHistoryDisplayFormat::kHtml: { + const SkBitmap& bitmap = + *(resource_manager_->GetImageModel(item).GetImage().ToSkBitmap()); + item_value.SetKey(kImageDataKey, + base::Value(webui::GetBitmapDataUrl(bitmap))); + break; + } + case ash::ClipboardHistoryUtil::ClipboardHistoryDisplayFormat::kText: + item_value.SetKey(kTextDataKey, base::Value(item.data().text())); + break; + case ash::ClipboardHistoryUtil::ClipboardHistoryDisplayFormat::kFile: { + item_value.SetKey( + kTextDataKey, + base::Value(base::UTF16ToUTF8(resource_manager_->GetLabel(item)))); + gfx::ImageSkia image = GetIconForPath( + base::FilePath(item.data().text()), + ash::AshColorProvider::Get()->GetContentLayerColor( + AshColorProvider::ContentLayerType::kIconColorPrimary)); + item_value.SetKey( + kImageDataKey, + base::Value(webui::GetBitmapDataUrl(*image.bitmap()))); + break; + } + } + item_value.SetKey("idToken", base::Value(item.id().ToString())); + item_results.Append(std::move(item_value)); + } + + return item_results; +} + +bool ClipboardHistoryControllerImpl::PasteClipboardItemById( + const std::string& item_id) { + if (currently_pasting_) + return false; + + for (const auto& item : history()->GetItems()) { + if (item.id().ToString() == item_id) { + PasteClipboardHistoryItem(item, /*paste_plain_text=*/false); + return true; + } + } + return false; +} + +bool ClipboardHistoryControllerImpl::DeleteClipboardItemById( + const std::string& item_id) { + for (const auto& item : history()->GetItems()) { + if (item.id().ToString() == item_id) { + DeleteClipboardHistoryItem(item); + return true; + } + } + return false; +} + void ClipboardHistoryControllerImpl::OnClipboardHistoryCleared() { // Prevent clipboard contents getting restored if the Clipboard is cleared // soon after a `PasteMenuItemData()`. @@ -332,6 +417,12 @@ const ClipboardHistoryItem& selected_item = context_menu_->GetItemFromCommandId(command_id); + PasteClipboardHistoryItem(selected_item, paste_plain_text); +} + +void ClipboardHistoryControllerImpl::PasteClipboardHistoryItem( + const ClipboardHistoryItem& item, + bool paste_plain_text) { auto* clipboard = GetClipboard(); std::unique_ptr<ui::ClipboardData> original_data; @@ -339,19 +430,19 @@ // we can paste the selected history item. ui::DataTransferEndpoint data_dst(ui::EndpointType::kClipboardHistory); if (paste_plain_text || - selected_item.data() != *clipboard->GetClipboardData(&data_dst)) { + item.data() != *clipboard->GetClipboardData(&data_dst)) { std::unique_ptr<ui::ClipboardData> temp_data; if (paste_plain_text) { // When the shift key is pressed, we only paste plain text. temp_data = std::make_unique<ui::ClipboardData>(); - temp_data->set_text(selected_item.data().text()); - ui::DataTransferEndpoint* data_src = selected_item.data().source(); + temp_data->set_text(item.data().text()); + ui::DataTransferEndpoint* data_src = item.data().source(); if (data_src) { temp_data->set_source( std::make_unique<ui::DataTransferEndpoint>(*data_src)); } } else { - temp_data = std::make_unique<ui::ClipboardData>(selected_item.data()); + temp_data = std::make_unique<ui::ClipboardData>(item.data()); } // Pause clipboard history when manipulating the clipboard for a paste. @@ -367,6 +458,8 @@ if (!original_data) return; + currently_pasting_ = true; + // Replace the original item back on top of the clipboard. Some apps take a // long time to receive the paste event, also some apps will read from the // clipboard multiple times per paste. Wait a bit before replacing the item @@ -382,6 +475,7 @@ // should actually be opaque to the user. std::unique_ptr<ScopedClipboardHistoryPauseImpl> scoped_pause; if (weak_ptr) { + weak_ptr->currently_pasting_ = false; scoped_pause = std::make_unique<ScopedClipboardHistoryPauseImpl>( weak_ptr->clipboard_history_.get()); } @@ -413,8 +507,7 @@ // process the key event. const auto& to_be_deleted_item = context_menu_->GetItemFromCommandId(command_id); - ClipboardHistoryUtil::RecordClipboardHistoryItemDeleted(to_be_deleted_item); - clipboard_history_->RemoveItemForId(to_be_deleted_item.id()); + DeleteClipboardHistoryItem(to_be_deleted_item); // If the item to be deleted is the last one, close the whole menu. if (context_menu_->GetMenuItemsCount() == 1) { @@ -426,6 +519,12 @@ context_menu_->RemoveMenuItemWithCommandId(command_id); } +void ClipboardHistoryControllerImpl::DeleteClipboardHistoryItem( + const ClipboardHistoryItem& item) { + ClipboardHistoryUtil::RecordClipboardHistoryItemDeleted(item); + clipboard_history_->RemoveItemForId(item.id()); +} + void ClipboardHistoryControllerImpl::AdvancePseudoFocus(bool reverse) { DCHECK(context_menu_); context_menu_->AdvancePseudoFocus(reverse);
diff --git a/ash/clipboard/clipboard_history_controller_impl.h b/ash/clipboard/clipboard_history_controller_impl.h index d27c387..23aa497453 100644 --- a/ash/clipboard/clipboard_history_controller_impl.h +++ b/ash/clipboard/clipboard_history_controller_impl.h
@@ -80,6 +80,10 @@ void ShowMenu(const gfx::Rect& anchor_rect, ui::MenuSourceType source_type) override; std::unique_ptr<ScopedClipboardHistoryPause> CreateScopedPause() override; + base::Value GetHistoryValues( + const std::set<std::string>& item_id_filter) const override; + bool PasteClipboardItemById(const std::string& item_id) override; + bool DeleteClipboardItemById(const std::string& item_id) override; // ClipboardHistory::Observer: void OnClipboardHistoryCleared() override; @@ -94,6 +98,10 @@ // clipboard data should be pasted. void PasteMenuItemData(int command_id, bool paste_plain_text); + // Pastes the specified clipboard history item. + void PasteClipboardHistoryItem(const ClipboardHistoryItem& item, + bool paste_plain_text); + // Delete the menu item being selected and its corresponding data. If no item // is selected, do nothing. void DeleteSelectedMenuItemIfAny(); @@ -101,6 +109,9 @@ // Delete the menu item specified by `command_id` and its corresponding data. void DeleteItemWithCommandId(int command_id); + // Deletes the specified clipboard history item. + void DeleteClipboardHistoryItem(const ClipboardHistoryItem& item); + // Advances the pseudo focus (backward if `reverse` is true). void AdvancePseudoFocus(bool reverse); @@ -127,6 +138,9 @@ // Controller that shows contextual nudges for multipaste. std::unique_ptr<ClipboardNudgeController> nudge_controller_; + // Whether a paste is currently being performed. + bool currently_pasting_ = false; + base::WeakPtrFactory<ClipboardHistoryControllerImpl> weak_ptr_factory_{this}; };
diff --git a/ash/events/accessibility_event_rewriter.cc b/ash/events/accessibility_event_rewriter.cc index 24de2268..a5c06a6 100644 --- a/ash/events/accessibility_event_rewriter.cc +++ b/ash/events/accessibility_event_rewriter.cc
@@ -11,28 +11,35 @@ #include "ash/public/cpp/accessibility_event_rewriter_delegate.h" #include "ash/shell.h" #include "ui/chromeos/events/event_rewriter_chromeos.h" -#include "ui/events/devices/input_device.h" +#include "ui/events/devices/device_data_manager.h" #include "ui/events/event.h" #include "ui/events/event_utils.h" #include "ui/events/types/event_type.h" namespace ash { +namespace { + +// Returns a ui::InputDeviceType given a Switch Access string device type. +ui::InputDeviceType GetInputDeviceType( + const std::string& switch_access_device_type) { + if (switch_access_device_type == kSwitchAccessInternalDevice) + return ui::INPUT_DEVICE_INTERNAL; + if (switch_access_device_type == kSwitchAccessUsbDevice) + return ui::INPUT_DEVICE_USB; + if (switch_access_device_type == kSwitchAccessBluetoothDevice) + return ui::INPUT_DEVICE_BLUETOOTH; + + NOTREACHED(); + return ui::INPUT_DEVICE_UNKNOWN; +} +} // namespace + AccessibilityEventRewriter::AccessibilityEventRewriter( ui::EventRewriterChromeOS* event_rewriter_chromeos, AccessibilityEventRewriterDelegate* delegate) : delegate_(delegate), event_rewriter_chromeos_(event_rewriter_chromeos) { Shell::Get()->accessibility_controller()->SetAccessibilityEventRewriter(this); - - // By default, observe all input device types. - keyboard_input_device_types_.insert(ui::INPUT_DEVICE_INTERNAL); - keyboard_input_device_types_.insert(ui::INPUT_DEVICE_USB); - keyboard_input_device_types_.insert(ui::INPUT_DEVICE_BLUETOOTH); - keyboard_input_device_types_.insert(ui::INPUT_DEVICE_UNKNOWN); - - UpdateKeyboardDeviceIds(); - - observer_.Add(ui::DeviceDataManager::GetInstance()); } AccessibilityEventRewriter::~AccessibilityEventRewriter() { @@ -66,58 +73,36 @@ } } -bool AccessibilityEventRewriter::SetKeyCodesForSwitchAccessCommand( - std::set<int> new_key_codes, +void AccessibilityEventRewriter::SetKeyCodesForSwitchAccessCommand( + const std::map<int, std::set<std::string>>& key_codes, SwitchAccessCommand command) { - bool has_changed = false; - std::set<int> to_clear; - - // Clear old values that conflict with the new assignment. - // TODO(anastasi): convert to use iterators directly and remove has_changed as - // an extra step. - for (const auto& val : key_code_to_switch_access_command_) { - int old_key_code = val.first; - SwitchAccessCommand old_command = val.second; - - if (new_key_codes.count(old_key_code) > 0) { - if (old_command != command) { - has_changed = true; - // Modifying the map while iterating through it causes reference - // failures. - to_clear.insert(old_key_code); - } else { - new_key_codes.erase(old_key_code); - } - continue; - } - - // This value was previously mapped to the command, but is no longer. - if (old_command == command) { - has_changed = true; - to_clear.insert(old_key_code); - switch_access_key_codes_to_capture_.erase(old_key_code); + // Remove all keys for the command. + for (auto it = key_code_to_switch_access_command_.begin(); + it != key_code_to_switch_access_command_.end();) { + if (it->second == command) { + switch_access_key_codes_to_capture_.erase(it->first); + it = key_code_to_switch_access_command_.erase(it); + } else { + it++; } } - for (int key_code : to_clear) { - key_code_to_switch_access_command_.erase(key_code); + + for (const auto& key_code : key_codes) { + // Remove any preexisting key. + switch_access_key_codes_to_capture_.erase(key_code.first); + key_code_to_switch_access_command_.erase(key_code.first); + + // Map device types from Switch Access's internal representation. + std::set<ui::InputDeviceType> device_types; + for (const std::string& switch_access_device : key_code.second) + device_types.insert(GetInputDeviceType(switch_access_device)); + + switch_access_key_codes_to_capture_.insert({key_code.first, device_types}); + key_code_to_switch_access_command_.insert({key_code.first, command}); } - if (new_key_codes.size() == 0) - return has_changed; - - // Add any new key codes to the map. - for (int key_code : new_key_codes) { - switch_access_key_codes_to_capture_.insert(key_code); - key_code_to_switch_access_command_[key_code] = command; - } - - return true; -} - -void AccessibilityEventRewriter::SetKeyboardInputDeviceTypes( - const std::set<ui::InputDeviceType>& keyboard_input_device_types) { - keyboard_input_device_types_ = keyboard_input_device_types; - UpdateKeyboardDeviceIds(); + // Conflict resolution occurs up the stack (e.g. in the settings pages for + // Switch Access). } bool AccessibilityEventRewriter::RewriteEventForChromeVox( @@ -178,10 +163,29 @@ return false; const ui::KeyEvent* key_event = event.AsKeyEvent(); - bool capture = - switch_access_key_codes_to_capture_.count(key_event->key_code()) > 0; + const auto& key = + switch_access_key_codes_to_capture_.find(key_event->key_code()); + if (key == switch_access_key_codes_to_capture_.end()) + return false; - if (capture && key_event->type() == ui::ET_KEY_PRESSED) { + int source_device_id = key_event->source_device_id(); + ui::InputDeviceType keyboard_type = ui::INPUT_DEVICE_UNKNOWN; + for (const auto& keyboard : + ui::DeviceDataManager::GetInstance()->GetKeyboardDevices()) { + if (source_device_id == keyboard.id) { + keyboard_type = keyboard.type; + break; + } + } + + // An unknown |source_device_id| needs to pass this check as it's set that way + // in tests. + if (source_device_id != ui::ED_UNKNOWN_DEVICE && + key->second.count(keyboard_type) == 0) { + return false; + } + + if (key_event->type() == ui::ET_KEY_PRESSED) { AccessibilityControllerImpl* accessibility_controller = Shell::Get()->accessibility_controller(); @@ -199,7 +203,7 @@ delegate_->SendSwitchAccessCommand(command); } } - return capture; + return true; } bool AccessibilityEventRewriter::RewriteEventForMagnifier( @@ -266,15 +270,6 @@ delegate_->SendMagnifierCommand(MagnifierCommand::kMoveStop); } -void AccessibilityEventRewriter::UpdateKeyboardDeviceIds() { - keyboard_device_ids_.clear(); - for (auto& keyboard : - ui::DeviceDataManager::GetInstance()->GetKeyboardDevices()) { - if (keyboard_input_device_types_.count(keyboard.type)) - keyboard_device_ids_.insert(keyboard.id); - } -} - void AccessibilityEventRewriter::MaybeSendMouseEvent(const ui::Event& event) { // Mouse moves are the only pertinent event for accessibility component // extensions. @@ -288,11 +283,6 @@ ui::EventDispatchDetails AccessibilityEventRewriter::RewriteEvent( const ui::Event& event, const Continuation continuation) { - if (event.IsKeyEvent() && event.source_device_id() != ui::ED_UNKNOWN_DEVICE && - keyboard_device_ids_.count(event.source_device_id()) == 0) { - return SendEvent(continuation, &event); - } - bool captured = false; if (!delegate_) return SendEvent(continuation, &event); @@ -320,10 +310,4 @@ : SendEvent(continuation, &event); } -void AccessibilityEventRewriter::OnInputDeviceConfigurationChanged( - uint8_t input_device_types) { - if (input_device_types & ui::InputDeviceEventObserver::kKeyboard) - UpdateKeyboardDeviceIds(); -} - } // namespace ash
diff --git a/ash/events/accessibility_event_rewriter.h b/ash/events/accessibility_event_rewriter.h index 686342a..a89e8f3 100644 --- a/ash/events/accessibility_event_rewriter.h +++ b/ash/events/accessibility_event_rewriter.h
@@ -11,13 +11,11 @@ #include "ash/ash_export.h" #include "base/scoped_observer.h" -#include "ui/events/devices/device_data_manager.h" -#include "ui/events/devices/input_device_event_observer.h" +#include "ui/events/devices/input_device.h" #include "ui/events/event_rewriter.h" namespace ui { class EventRewriterChromeOS; -enum InputDeviceType; } namespace ash { @@ -29,9 +27,7 @@ // AccessibilityEventRewriter sends key events to Accessibility extensions (such // as ChromeVox and Switch Access) via the delegate when the corresponding // extension is enabled. Continues dispatch of unhandled key events. -class ASH_EXPORT AccessibilityEventRewriter - : public ui::EventRewriter, - public ui::InputDeviceEventObserver { +class ASH_EXPORT AccessibilityEventRewriter : public ui::EventRewriter { public: AccessibilityEventRewriter(ui::EventRewriterChromeOS* event_rewriter_chromeos, AccessibilityEventRewriterDelegate* delegate); @@ -44,14 +40,10 @@ // NOTE: These events may be delivered out-of-order from non-ChromeVox events. void OnUnhandledSpokenFeedbackEvent(std::unique_ptr<ui::Event> event) const; - // Sets what |key_codes| are captured for a given Switch Access command; - // returns true if any mapping changed. - bool SetKeyCodesForSwitchAccessCommand(std::set<int> key_codes, - SwitchAccessCommand command); - - // Set the types of keyboard input types processed by this rewriter. - void SetKeyboardInputDeviceTypes( - const std::set<ui::InputDeviceType>& keyboard_input_device_types); + // Sets what |key_codes| are captured for a given Switch Access command. + void SetKeyCodesForSwitchAccessCommand( + const std::map<int, std::set<std::string>>& key_codes, + SwitchAccessCommand command); void set_chromevox_capture_all_keys(bool value) { chromevox_capture_all_keys_ = value; @@ -64,7 +56,8 @@ } // For testing use only. - std::set<int> switch_access_key_codes_to_capture_for_test() { + std::map<int, std::set<ui::InputDeviceType>> + switch_access_key_codes_to_capture_for_test() { return switch_access_key_codes_to_capture_; } std::map<int, SwitchAccessCommand> @@ -84,10 +77,6 @@ void OnMagnifierKeyPressed(const ui::KeyEvent* event); void OnMagnifierKeyReleased(const ui::KeyEvent* event); - // Updates the list of allowed keyboard device ids based on the current set of - // keyboard input types. - void UpdateKeyboardDeviceIds(); - // Maybe sends a mouse event to be dispatched to accessibility component // extensions. void MaybeSendMouseEvent(const ui::Event& event); @@ -97,9 +86,6 @@ const ui::Event& event, const Continuation continuation) override; - // ui::InputDeviceObserver: - void OnInputDeviceConfigurationChanged(uint8_t input_device_types) override; - // Continuation saved for OnUnhandledSpokenFeedbackEvent(). Continuation chromevox_continuation_; @@ -113,8 +99,9 @@ // Whether to capture all keys for ChromeVox. bool chromevox_capture_all_keys_ = false; - // Set of keys to capture for Switch Access. - std::set<int> switch_access_key_codes_to_capture_; + // Maps a key to a set of devices which should be captured for Switch Access. + std::map<int, std::set<ui::InputDeviceType>> + switch_access_key_codes_to_capture_; // Maps a captured key from above to a Switch Access command. std::map<int, SwitchAccessCommand> key_code_to_switch_access_command_; @@ -123,17 +110,6 @@ // taylored behavior. ui::EventRewriterChromeOS* const event_rewriter_chromeos_; - // A set of keyboard device ids who's key events we want to process. - std::set<int> keyboard_device_ids_; - - // A set of input device types used to filter the list of keyboard devices - // above. - std::set<ui::InputDeviceType> keyboard_input_device_types_; - - // Used to refresh state when keyboard devices change. - ScopedObserver<ui::DeviceDataManager, ui::InputDeviceEventObserver> observer_{ - this}; - // Suspends key handling for Switch Access during key assignment in web ui. bool suspend_switch_access_key_handling_ = false; };
diff --git a/ash/events/accessibility_event_rewriter_unittest.cc b/ash/events/accessibility_event_rewriter_unittest.cc index 9f6183e..73be228 100644 --- a/ash/events/accessibility_event_rewriter_unittest.cc +++ b/ash/events/accessibility_event_rewriter_unittest.cc
@@ -9,6 +9,7 @@ #include "ash/accessibility/accessibility_controller_impl.h" #include "ash/public/cpp/accessibility_event_rewriter_delegate.h" +#include "ash/public/cpp/ash_constants.h" #include "ash/shell.h" #include "ash/test/ash_test_base.h" #include "base/macros.h" @@ -63,6 +64,8 @@ void SendMagnifierCommand(MagnifierCommand command) override {} }; +} // namespace + class ChromeVoxAccessibilityEventRewriterTest : public ash::AshTestBase, public ui::EventRewriterChromeOS::Delegate { @@ -126,16 +129,6 @@ modifier_remapping_[pref_name] = static_cast<int>(value); } - std::set<int> GetSwitchAccessKeyCodesToCapture() { - return accessibility_event_rewriter_ - ->switch_access_key_codes_to_capture_for_test(); - } - - std::map<int, SwitchAccessCommand> GetSwitchAccessCommandForKeyCodeMap() { - return accessibility_event_rewriter_ - ->key_code_to_switch_access_command_map_for_test(); - } - protected: // A test accessibility event delegate; simulates ChromeVox and Switch Access. ChromeVoxTestDelegate delegate_; @@ -407,6 +400,8 @@ SwitchAccessCommand last_command() { return commands_.back(); } int command_count() { return commands_.size(); } + void ClearCommands() { commands_.clear(); } + // AccessibilityEventRewriterDelegate: void SendSwitchAccessCommand(SwitchAccessCommand command) override { commands_.push_back(command); @@ -450,6 +445,14 @@ controller_->SetAccessibilityEventRewriter( accessibility_event_rewriter_.get()); controller_->switch_access().SetEnabled(true); + + std::vector<ui::InputDevice> keyboards; + ui::DeviceDataManagerTestApi device_data_test_api; + keyboards.push_back(ui::InputDevice(1, ui::INPUT_DEVICE_INTERNAL, "")); + keyboards.push_back(ui::InputDevice(2, ui::INPUT_DEVICE_USB, "")); + keyboards.push_back(ui::InputDevice(3, ui::INPUT_DEVICE_BLUETOOTH, "")); + keyboards.push_back(ui::InputDevice(4, ui::INPUT_DEVICE_UNKNOWN, "")); + device_data_test_api.SetKeyboardDevices(keyboards); } void TearDown() override { @@ -460,19 +463,20 @@ AshTestBase::TearDown(); } - void SetKeyCodesForSwitchAccessCommand(std::set<int> key_codes, - SwitchAccessCommand command) { + void SetKeyCodesForSwitchAccessCommand( + std::map<int, std::set<std::string>> key_codes, + SwitchAccessCommand command) { AccessibilityEventRewriter* rewriter = controller_->GetAccessibilityEventRewriterForTest(); rewriter->SetKeyCodesForSwitchAccessCommand(key_codes, command); } - const std::set<int> GetKeyCodesToCapture() { + const std::map<int, std::set<ui::InputDeviceType>> GetKeyCodesToCapture() { AccessibilityEventRewriter* rewriter = controller_->GetAccessibilityEventRewriterForTest(); if (rewriter) return rewriter->switch_access_key_codes_to_capture_for_test(); - return std::set<int>(); + return std::map<int, std::set<ui::InputDeviceType>>(); } const std::map<int, SwitchAccessCommand> GetCommandForKeyCodeMap() { @@ -494,58 +498,79 @@ TEST_F(SwitchAccessAccessibilityEventRewriterTest, CaptureSpecifiedKeys) { // Set keys for Switch Access to capture. - SetKeyCodesForSwitchAccessCommand({ui::VKEY_1, ui::VKEY_2}, - SwitchAccessCommand::kSelect); + SetKeyCodesForSwitchAccessCommand( + {{ui::VKEY_1, {kSwitchAccessInternalDevice}}, + {ui::VKEY_2, {kSwitchAccessUsbDevice}}}, + SwitchAccessCommand::kSelect); EXPECT_FALSE(event_capturer_.last_key_event()); - generator_->PressKey(ui::VKEY_1, ui::EF_NONE); - generator_->ReleaseKey(ui::VKEY_1, ui::EF_NONE); + // Press 1 from the internal keyboard. + generator_->PressKey(ui::VKEY_1, ui::EF_NONE, 1 /* keyboard id */); + generator_->ReleaseKey(ui::VKEY_1, ui::EF_NONE, 1 /* keyboard id */); // The event was captured by AccessibilityEventRewriter. EXPECT_FALSE(event_capturer_.last_key_event()); EXPECT_EQ(SwitchAccessCommand::kSelect, delegate_->last_command()); + delegate_->ClearCommands(); + + // Press 1 from the bluetooth keyboard. + generator_->PressKey(ui::VKEY_1, ui::EF_NONE, 3 /* keyboard id */); + generator_->ReleaseKey(ui::VKEY_1, ui::EF_NONE, 3 /* keyboard id */); + + // The event was not captured by AccessibilityEventRewriter. + EXPECT_TRUE(event_capturer_.last_key_event()); + EXPECT_EQ(0, delegate_->command_count()); + // Press the "2" key. - generator_->PressKey(ui::VKEY_2, ui::EF_NONE); - generator_->ReleaseKey(ui::VKEY_2, ui::EF_NONE); - - // We received a new event. - - // The event was captured by AccessibilityEventRewriter. - EXPECT_FALSE(event_capturer_.last_key_event()); - - // Press the "3" key. - generator_->PressKey(ui::VKEY_3, ui::EF_NONE); - generator_->ReleaseKey(ui::VKEY_3, ui::EF_NONE); + generator_->PressKey(ui::VKEY_2, ui::EF_NONE, 2 /* keyboard id */); + generator_->ReleaseKey(ui::VKEY_2, ui::EF_NONE, 2 /* keyboard id */); // The event was captured by AccessibilityEventRewriter. EXPECT_TRUE(event_capturer_.last_key_event()); + EXPECT_EQ(SwitchAccessCommand::kSelect, delegate_->last_command()); + + delegate_->ClearCommands(); + + // Press the "3" key. + generator_->PressKey(ui::VKEY_3, ui::EF_NONE, 1 /* keyboard id */); + generator_->ReleaseKey(ui::VKEY_3, ui::EF_NONE, 1 /* keyboard id */); + + // The event was not captured by AccessibilityEventRewriter. + EXPECT_TRUE(event_capturer_.last_key_event()); + EXPECT_EQ(0, delegate_->command_count()); } TEST_F(SwitchAccessAccessibilityEventRewriterTest, KeysNoLongerCaptureAfterUpdate) { // Set Switch Access to capture the keys {1, 2, 3}. - SetKeyCodesForSwitchAccessCommand({ui::VKEY_1, ui::VKEY_2, ui::VKEY_3}, - SwitchAccessCommand::kSelect); + SetKeyCodesForSwitchAccessCommand( + {{ui::VKEY_1, {kSwitchAccessInternalDevice}}, + {ui::VKEY_2, {kSwitchAccessInternalDevice}}, + {ui::VKEY_3, {kSwitchAccessInternalDevice}}}, + SwitchAccessCommand::kSelect); EXPECT_FALSE(event_capturer_.last_key_event()); // Press the "1" key. - generator_->PressKey(ui::VKEY_1, ui::EF_NONE); - generator_->ReleaseKey(ui::VKEY_1, ui::EF_NONE); + generator_->PressKey(ui::VKEY_1, ui::EF_NONE, 1 /* keyboard id */); + generator_->ReleaseKey(ui::VKEY_1, ui::EF_NONE, 1 /* keyboard id */); // The event was captured by AccessibilityEventRewriter. EXPECT_FALSE(event_capturer_.last_key_event()); EXPECT_EQ(SwitchAccessCommand::kSelect, delegate_->last_command()); // Update the Switch Access keys to capture {2, 3, 4}. - SetKeyCodesForSwitchAccessCommand({ui::VKEY_2, ui::VKEY_3, ui::VKEY_4}, - SwitchAccessCommand::kSelect); + SetKeyCodesForSwitchAccessCommand( + {{ui::VKEY_2, {kSwitchAccessInternalDevice}}, + {ui::VKEY_3, {kSwitchAccessInternalDevice}}, + {ui::VKEY_4, {kSwitchAccessInternalDevice}}}, + SwitchAccessCommand::kSelect); // Press the "1" key. - generator_->PressKey(ui::VKEY_1, ui::EF_NONE); - generator_->ReleaseKey(ui::VKEY_1, ui::EF_NONE); + generator_->PressKey(ui::VKEY_1, ui::EF_NONE, 1 /* keyboard id */); + generator_->ReleaseKey(ui::VKEY_1, ui::EF_NONE, 1 /* keyboard id */); // We received a new event. @@ -554,10 +579,13 @@ EXPECT_FALSE(event_capturer_.last_key_event()->handled()); // Press the "4" key. - generator_->PressKey(ui::VKEY_4, ui::EF_NONE); - generator_->ReleaseKey(ui::VKEY_4, ui::EF_NONE); + event_capturer_.Reset(); + generator_->PressKey(ui::VKEY_4, ui::EF_NONE, 1 /* keyboard id */); + generator_->ReleaseKey(ui::VKEY_4, ui::EF_NONE, 1 /* keyboard id */); // The event was captured by AccessibilityEventRewriter. + EXPECT_FALSE(event_capturer_.last_key_event()); + EXPECT_EQ(SwitchAccessCommand::kSelect, delegate_->last_command()); } TEST_F(SwitchAccessAccessibilityEventRewriterTest, @@ -571,14 +599,15 @@ EXPECT_EQ(0u, GetCommandForKeyCodeMap().size()); // Set key codes for Select command. - std::set<int> new_key_codes; - new_key_codes.insert(48 /* '0' */); - new_key_codes.insert(83 /* 's' */); + std::map<int, std::set<std::string>> new_key_codes; + new_key_codes[48 /* '0' */] = {kSwitchAccessInternalDevice}; + new_key_codes[83 /* 's' */] = {kSwitchAccessInternalDevice}; rewriter->SetKeyCodesForSwitchAccessCommand(new_key_codes, SwitchAccessCommand::kSelect); // Check that values are added to both data structures. - std::set<int> kc_to_capture = GetKeyCodesToCapture(); + std::map<int, std::set<ui::InputDeviceType>> kc_to_capture = + GetKeyCodesToCapture(); EXPECT_EQ(2u, kc_to_capture.size()); EXPECT_EQ(1u, kc_to_capture.count(48)); EXPECT_EQ(1u, kc_to_capture.count(83)); @@ -590,8 +619,8 @@ // Set key codes for the Next command. new_key_codes.clear(); - new_key_codes.insert(49 /* '1' */); - new_key_codes.insert(78 /* 'n' */); + new_key_codes[49 /* '1' */] = {kSwitchAccessInternalDevice}; + new_key_codes[78 /* 'n' */] = {kSwitchAccessInternalDevice}; rewriter->SetKeyCodesForSwitchAccessCommand(new_key_codes, SwitchAccessCommand::kNext); @@ -608,8 +637,8 @@ // Set key codes for the Previous command. Re-use a key code from above. new_key_codes.clear(); - new_key_codes.insert(49 /* '1' */); - new_key_codes.insert(80 /* 'p' */); + new_key_codes[49 /* '1' */] = {kSwitchAccessInternalDevice}; + new_key_codes[80 /* 'p' */] = {kSwitchAccessInternalDevice}; rewriter->SetKeyCodesForSwitchAccessCommand(new_key_codes, SwitchAccessCommand::kPrevious); @@ -627,8 +656,8 @@ // Set a new key code for the Select command. new_key_codes.clear(); - new_key_codes.insert(51 /* '3' */); - new_key_codes.insert(83 /* 's' */); + new_key_codes[51 /* '3' */] = {kSwitchAccessInternalDevice}; + new_key_codes[83 /* 's' */] = {kSwitchAccessInternalDevice}; rewriter->SetKeyCodesForSwitchAccessCommand(new_key_codes, SwitchAccessCommand::kSelect); @@ -646,86 +675,6 @@ EXPECT_EQ(command_map.end(), command_map.find(48)); } -TEST_F(SwitchAccessAccessibilityEventRewriterTest, SetKeyboardInputTypes) { - AccessibilityEventRewriter* rewriter = - controller_->GetAccessibilityEventRewriterForTest(); - EXPECT_NE(nullptr, rewriter); - - // Set Switch Access to capture these keys as the select command. - SetKeyCodesForSwitchAccessCommand( - {ui::VKEY_1, ui::VKEY_2, ui::VKEY_3, ui::VKEY_4}, - SwitchAccessCommand::kSelect); - - std::vector<ui::InputDevice> keyboards; - ui::DeviceDataManagerTestApi device_data_test_api; - keyboards.emplace_back(ui::InputDevice(1, ui::INPUT_DEVICE_INTERNAL, "")); - keyboards.emplace_back(ui::InputDevice(2, ui::INPUT_DEVICE_USB, "")); - keyboards.emplace_back(ui::InputDevice(3, ui::INPUT_DEVICE_BLUETOOTH, "")); - keyboards.emplace_back(ui::InputDevice(4, ui::INPUT_DEVICE_UNKNOWN, "")); - device_data_test_api.SetKeyboardDevices(keyboards); - - // Press the "1" key with no source device id. - generator_->PressKey(ui::VKEY_1, ui::EF_NONE); - generator_->ReleaseKey(ui::VKEY_1, ui::EF_NONE); - - // The event was captured by AccessibilityEventRewriter. - EXPECT_FALSE(event_capturer_.last_key_event()); - EXPECT_EQ(SwitchAccessCommand::kSelect, delegate_->last_command()); - - // Press the "1" key from the internal keyboard which is captured by - // AccessibilityEventRewriter. - generator_->PressKey(ui::VKEY_1, ui::EF_NONE, 1); - generator_->ReleaseKey(ui::VKEY_1, ui::EF_NONE, 1); - EXPECT_FALSE(event_capturer_.last_key_event()); - - // Press the "2" key from the usb keyboard which is captured by - // AccessibilityEventRewriter. - generator_->PressKey(ui::VKEY_2, ui::EF_NONE, 2); - generator_->ReleaseKey(ui::VKEY_2, ui::EF_NONE, 2); - EXPECT_FALSE(event_capturer_.last_key_event()); - - // Press the "3" key from the bluetooth keyboard which is captured by - // AccessibilityEventRewriter. - generator_->PressKey(ui::VKEY_3, ui::EF_NONE, 3); - generator_->ReleaseKey(ui::VKEY_3, ui::EF_NONE, 3); - EXPECT_FALSE(event_capturer_.last_key_event()); - - // Press the "4" key from the unknown keyboard which is captured by - // AccessibilityEventRewriter. - generator_->PressKey(ui::VKEY_4, ui::EF_NONE, 4); - generator_->ReleaseKey(ui::VKEY_4, ui::EF_NONE, 2); - EXPECT_FALSE(event_capturer_.last_key_event()); - - // Now, exclude some device types. - rewriter->SetKeyboardInputDeviceTypes( - {ui::INPUT_DEVICE_USB, ui::INPUT_DEVICE_BLUETOOTH}); - - // Press the "1" key from the internal keyboard which is not captured by - // AccessibilityEventRewriter. - generator_->PressKey(ui::VKEY_1, ui::EF_NONE, 1); - generator_->ReleaseKey(ui::VKEY_1, ui::EF_NONE, 1); - EXPECT_TRUE(event_capturer_.last_key_event()); - event_capturer_.Reset(); - - // Press the "2" key from the usb keyboard which is captured by - // AccessibilityEventRewriter. - generator_->PressKey(ui::VKEY_2, ui::EF_NONE, 2); - generator_->ReleaseKey(ui::VKEY_2, ui::EF_NONE, 2); - EXPECT_FALSE(event_capturer_.last_key_event()); - - // Press the "3" key from the bluetooth keyboard which is captured by - // AccessibilityEventRewriter. - generator_->PressKey(ui::VKEY_3, ui::EF_NONE, 3); - generator_->ReleaseKey(ui::VKEY_3, ui::EF_NONE, 3); - EXPECT_FALSE(event_capturer_.last_key_event()); - - // Press the "4" key from the unknown keyboard which is not captured by - // AccessibilityEventRewriter. - generator_->PressKey(ui::VKEY_4, ui::EF_NONE, 4); - generator_->ReleaseKey(ui::VKEY_4, ui::EF_NONE, 2); - EXPECT_TRUE(event_capturer_.last_key_event()); -} - class MagnifierTestDelegate : public AccessibilityEventRewriterDelegate { public: MagnifierTestDelegate() = default; @@ -828,5 +777,4 @@ EXPECT_TRUE(event_capturer_.last_key_event()); } -} // namespace } // namespace ash
diff --git a/ash/public/cpp/BUILD.gn b/ash/public/cpp/BUILD.gn index 8cd0d46..13918d89 100644 --- a/ash/public/cpp/BUILD.gn +++ b/ash/public/cpp/BUILD.gn
@@ -59,6 +59,7 @@ "app_types.h", "arc_app_id_provider.cc", "arc_app_id_provider.h", + "ash_constants.cc", "ash_constants.h", "ash_features.cc", "ash_features.h",
diff --git a/ash/public/cpp/ash_constants.cc b/ash/public/cpp/ash_constants.cc new file mode 100644 index 0000000..c1e39e42 --- /dev/null +++ b/ash/public/cpp/ash_constants.cc
@@ -0,0 +1,14 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ash/public/cpp/ash_constants.h" + +namespace ash { + +const char kSwitchAccessInternalDevice[] = "internal"; +const char kSwitchAccessUsbDevice[] = "usb"; +const char kSwitchAccessBluetoothDevice[] = "bluetooth"; +const char kSwitchAccessUnknownDevice[] = "unknown"; + +} // namespace ash
diff --git a/ash/public/cpp/ash_constants.h b/ash/public/cpp/ash_constants.h index 4bfcfb5..fc70c06 100644 --- a/ash/public/cpp/ash_constants.h +++ b/ash/public/cpp/ash_constants.h
@@ -6,6 +6,7 @@ #define ASH_PUBLIC_CPP_ASH_CONSTANTS_H_ #include "ash/public/cpp/accessibility_controller_enums.h" +#include "ash/public/cpp/ash_public_export.h" #include "base/time/time.h" #include "third_party/skia/include/core/SkColor.h" #include "ui/gfx/color_palette.h" @@ -27,6 +28,13 @@ // The option in the Switch Access settings for no switch assigned. constexpr int kSwitchAccessAssignmentNone = 0; +// These device types are a subset of ui::InputDeviceType. These strings are +// also used in Switch Access webui. +ASH_PUBLIC_EXPORT extern const char kSwitchAccessInternalDevice[]; +ASH_PUBLIC_EXPORT extern const char kSwitchAccessUsbDevice[]; +ASH_PUBLIC_EXPORT extern const char kSwitchAccessBluetoothDevice[]; +ASH_PUBLIC_EXPORT extern const char kSwitchAccessUnknownDevice[]; + // The default delay before Switch Access automatically moves to the next // element on the page that is interesting, based on the Switch Access // predicates.
diff --git a/ash/public/cpp/ash_features.cc b/ash/public/cpp/ash_features.cc index 130a12749..ab0931cf 100644 --- a/ash/public/cpp/ash_features.cc +++ b/ash/public/cpp/ash_features.cc
@@ -41,9 +41,6 @@ const base::Feature kDockedMagnifier{"DockedMagnifier", base::FEATURE_ENABLED_BY_DEFAULT}; -const base::Feature kDragToSnapInClamshellMode{ - "DragToSnapInClamshellMode", base::FEATURE_ENABLED_BY_DEFAULT}; - const base::Feature kEnhancedDeskAnimations{"EnhancedDeskAnimations", base::FEATURE_ENABLED_BY_DEFAULT}; @@ -84,9 +81,6 @@ const base::Feature kMovablePartialScreenshot{ "MovablePartialScreenshot", base::FEATURE_DISABLED_BY_DEFAULT}; -const base::Feature kMultiDisplayOverviewAndSplitView{ - "MultiDisplayOverviewAndSplitView", base::FEATURE_ENABLED_BY_DEFAULT}; - const base::Feature kNightLight{"NightLight", base::FEATURE_ENABLED_BY_DEFAULT}; const base::Feature kNotificationExpansionAnimation{
diff --git a/ash/public/cpp/ash_features.h b/ash/public/cpp/ash_features.h index 94c1ff2..eae7324 100644 --- a/ash/public/cpp/ash_features.h +++ b/ash/public/cpp/ash_features.h
@@ -46,10 +46,6 @@ // https://crbug.com/709824. ASH_PUBLIC_EXPORT extern const base::Feature kDockedMagnifier; -// Enables dragging and snapping an overview window in clamshell mode. -// TODO(crbug.com/890029): Remove this when the feature is fully launched. -ASH_PUBLIC_EXPORT extern const base::Feature kDragToSnapInClamshellMode; - // Enables chaining of keyboard and touchpad swipe induced desk animations. // Enables continuous touchpad swiping to switch desks. // TODO(crbug.com/1111445): Remove this when the feature is fully launched. @@ -109,10 +105,6 @@ // Enables resizing/moving the selection region for partial screenshot. ASH_PUBLIC_EXPORT extern const base::Feature kMovablePartialScreenshot; -// Enables multi-display support for overview and split view. -// TODO(crbug.com/952461): Remove this when the feature is fully launched. -ASH_PUBLIC_EXPORT extern const base::Feature kMultiDisplayOverviewAndSplitView; - // Enables the Night Light feature. ASH_PUBLIC_EXPORT extern const base::Feature kNightLight;
diff --git a/ash/public/cpp/ash_pref_names.cc b/ash/public/cpp/ash_pref_names.cc index e4114380..0a0d238 100644 --- a/ash/public/cpp/ash_pref_names.cc +++ b/ash/public/cpp/ash_pref_names.cc
@@ -105,15 +105,18 @@ // A boolean pref which determines whether Switch Access is enabled. const char kAccessibilitySwitchAccessEnabled[] = "settings.a11y.switch_access.enabled"; -// A pref that stores the key code for the "select" action. -const char kAccessibilitySwitchAccessSelectKeyCodes[] = - "settings.a11y.switch_access.select.key_codes"; -// A pref that stores the key code for the "next" action. -const char kAccessibilitySwitchAccessNextKeyCodes[] = - "settings.a11y.switch_access.next.key_codes"; -// A pref that stores the key code for the "previous" action. -const char kAccessibilitySwitchAccessPreviousKeyCodes[] = - "settings.a11y.switch_access.previous.key_codes"; +// A dictionary pref keyed on a key code mapped to a list value of device types +// for the "select" action. +const char kAccessibilitySwitchAccessSelectDeviceKeyCodes[] = + "settings.a11y.switch_access.select.device_key_codes"; +// A dictionary pref keyed on a key code mapped to a list value of device types +// for the "next" action. +const char kAccessibilitySwitchAccessNextDeviceKeyCodes[] = + "settings.a11y.switch_access.next.device_key_codes"; +// A dictionary pref keyed on a key code mapped to a list value of device types +// for the "previous" action. +const char kAccessibilitySwitchAccessPreviousDeviceKeyCodes[] = + "settings.a11y.switch_access.previous.device_key_codes"; // A boolean pref which determines whether auto-scanning is enabled within // Switch Access. const char kAccessibilitySwitchAccessAutoScanEnabled[] =
diff --git a/ash/public/cpp/ash_pref_names.h b/ash/public/cpp/ash_pref_names.h index 67f129e..5fa7e0c 100644 --- a/ash/public/cpp/ash_pref_names.h +++ b/ash/public/cpp/ash_pref_names.h
@@ -41,10 +41,12 @@ ASH_PUBLIC_EXPORT extern const char kAccessibilityFocusHighlightEnabled[]; ASH_PUBLIC_EXPORT extern const char kAccessibilitySelectToSpeakEnabled[]; ASH_PUBLIC_EXPORT extern const char kAccessibilitySwitchAccessEnabled[]; -ASH_PUBLIC_EXPORT extern const char kAccessibilitySwitchAccessSelectKeyCodes[]; -ASH_PUBLIC_EXPORT extern const char kAccessibilitySwitchAccessNextKeyCodes[]; ASH_PUBLIC_EXPORT extern const char - kAccessibilitySwitchAccessPreviousKeyCodes[]; + kAccessibilitySwitchAccessSelectDeviceKeyCodes[]; +ASH_PUBLIC_EXPORT extern const char + kAccessibilitySwitchAccessNextDeviceKeyCodes[]; +ASH_PUBLIC_EXPORT extern const char + kAccessibilitySwitchAccessPreviousDeviceKeyCodes[]; ASH_PUBLIC_EXPORT extern const char kAccessibilitySwitchAccessAutoScanEnabled[]; ASH_PUBLIC_EXPORT extern const char kAccessibilitySwitchAccessAutoScanSpeedMs[]; ASH_PUBLIC_EXPORT extern const char
diff --git a/ash/public/cpp/clipboard_history_controller.h b/ash/public/cpp/clipboard_history_controller.h index abd28a6..07d1379 100644 --- a/ash/public/cpp/clipboard_history_controller.h +++ b/ash/public/cpp/clipboard_history_controller.h
@@ -6,17 +6,21 @@ #define ASH_PUBLIC_CPP_CLIPBOARD_HISTORY_CONTROLLER_H_ #include <memory> +#include <set> #include "ash/public/cpp/ash_public_export.h" #include "base/observer_list_types.h" #include "ui/base/ui_base_types.h" +namespace base { +class Value; +} // namespace base + namespace gfx { class Rect; } // namespace gfx namespace ash { - class ScopedClipboardHistoryPause; // An interface implemented in Ash to enable the Chrome side to show the @@ -49,6 +53,18 @@ // its lifetime. virtual std::unique_ptr<ScopedClipboardHistoryPause> CreateScopedPause() = 0; + // Returns the history which tracks what is being copied to the clipboard. + // Only the items listed in |item_id_filter| are returned. If |item_id_filter| + // is empty, then all items in the history are returned. + virtual base::Value GetHistoryValues( + const std::set<std::string>& item_id_filter) const = 0; + + // Pastes the clipboard item specified by the item id. + virtual bool PasteClipboardItemById(const std::string& item_id) = 0; + + // Deletes the clipboard item specified by the item id. + virtual bool DeleteClipboardItemById(const std::string& item_id) = 0; + protected: ClipboardHistoryController(); virtual ~ClipboardHistoryController();
diff --git a/ash/public/cpp/holding_space/holding_space_metrics.h b/ash/public/cpp/holding_space/holding_space_metrics.h index bcc85635..78400646 100644 --- a/ash/public/cpp/holding_space/holding_space_metrics.h +++ b/ash/public/cpp/holding_space/holding_space_metrics.h
@@ -24,12 +24,14 @@ // should remain unchanged and new values should be added to the end. enum class PodAction { // kClick (Deprecated) = 0, - kShow = 1, - kClose = 2, + kShowBubble = 1, + kCloseBubble = 2, kShowContextMenu = 3, kShowPreviews = 4, kHidePreviews = 5, - kMaxValue = kHidePreviews, + kShowPod = 6, + kHidePod = 7, + kMaxValue = kHidePod, }; // Records the specified `action` taken on the holding space pod in the shelf.
diff --git a/ash/root_window_controller.cc b/ash/root_window_controller.cc index d8ac4a1..db7ccd2 100644 --- a/ash/root_window_controller.cc +++ b/ash/root_window_controller.cc
@@ -883,15 +883,8 @@ void RootWindowController::Init(RootWindowType root_window_type) { aura::Window* root_window = GetRootWindow(); - // If the |ash::features::kMultiDisplayOverviewAndSplitView| feature flag is - // enabled, create |split_view_controller_| for every display. Otherwise, - // create |split_view_controller_| for the primary display only. - display::Screen* screen = display::Screen::GetScreen(); - if (AreMultiDisplayOverviewAndSplitViewEnabled() || - screen->GetDisplayNearestWindow(root_window).id() == - screen->GetPrimaryDisplay().id()) { - split_view_controller_ = std::make_unique<SplitViewController>(root_window); - } + // Create |split_view_controller_| for every display. + split_view_controller_ = std::make_unique<SplitViewController>(root_window); Shell* shell = Shell::Get(); shell->InitRootWindow(root_window); auto old_targeter =
diff --git a/ash/shell.cc b/ash/shell.cc index 226c0b5..764e276 100644 --- a/ash/shell.cc +++ b/ash/shell.cc
@@ -159,7 +159,7 @@ #include "ash/wm/toplevel_window_event_handler.h" #include "ash/wm/video_detector.h" #include "ash/wm/window_animations.h" -#include "ash/wm/window_cycle_controller.h" +#include "ash/wm/window_cycle/window_cycle_controller.h" #include "ash/wm/window_positioner.h" #include "ash/wm/window_properties.h" #include "ash/wm/window_util.h"
diff --git a/ash/system/holding_space/holding_space_drag_util.cc b/ash/system/holding_space/holding_space_drag_util.cc index 84ffa636..9a789a1 100644 --- a/ash/system/holding_space/holding_space_drag_util.cc +++ b/ash/system/holding_space/holding_space_drag_util.cc
@@ -155,12 +155,18 @@ } void OnPaintBackground(gfx::Canvas* canvas) override { + // NOTE: The contents bounds are shrunk by a single pixel to avoid + // painting the background outside content bounds as might otherwise occur + // due to pixel rounding. Failure to do so could result in white paint + // artifacts. + gfx::Rect bounds(GetContentsBounds()); + bounds.Inset(gfx::Insets(1)); + cc::PaintFlags flags; flags.setAntiAlias(true); flags.setColor(SK_ColorWHITE); flags.setLooper(gfx::CreateShadowDrawLooper(GetShadowDetails().values)); - canvas->DrawRoundRect(GetContentsBounds(), kDragImageItemViewCornerRadius, - flags); + canvas->DrawRoundRect(bounds, kDragImageItemViewCornerRadius, flags); } private:
diff --git a/ash/system/holding_space/holding_space_tray.cc b/ash/system/holding_space/holding_space_tray.cc index f6c9e244..f37971ac 100644 --- a/ash/system/holding_space/holding_space_tray.cc +++ b/ash/system/holding_space/holding_space_tray.cc
@@ -153,7 +153,7 @@ return; holding_space_metrics::RecordPodAction( - holding_space_metrics::PodAction::kClose); + holding_space_metrics::PodAction::kCloseBubble); widget_observer_.Reset(); @@ -166,7 +166,7 @@ return; holding_space_metrics::RecordPodAction( - holding_space_metrics::PodAction::kShow); + holding_space_metrics::PodAction::kShowBubble); DCHECK(tray_container()); @@ -189,6 +189,15 @@ return "HoldingSpaceTray"; } +void HoldingSpaceTray::SetVisiblePreferred(bool preferred_visibility) { + if (visible_preferred() != preferred_visibility) { + holding_space_metrics::RecordPodAction( + preferred_visibility ? holding_space_metrics::PodAction::kShowPod + : holding_space_metrics::PodAction::kHidePod); + TrayBackgroundView::SetVisiblePreferred(preferred_visibility); + } +} + void HoldingSpaceTray::UpdateVisibility() { HoldingSpaceModel* model = HoldingSpaceController::Get()->model(); LoginStatus login_status = shelf()->GetStatusAreaWidget()->login_status();
diff --git a/ash/system/holding_space/holding_space_tray.h b/ash/system/holding_space/holding_space_tray.h index 9dc85c79..ff1d40f9 100644 --- a/ash/system/holding_space/holding_space_tray.h +++ b/ash/system/holding_space/holding_space_tray.h
@@ -64,6 +64,7 @@ void ShowBubble(bool show_by_click) override; TrayBubbleView* GetBubbleView() override; const char* GetClassName() const override; + void SetVisiblePreferred(bool visible_preferred) override; void set_use_zero_previews_update_delay_for_testing(bool zero_delay) { use_zero_previews_update_delay_ = zero_delay;
diff --git a/ash/system/holding_space/holding_space_tray_icon_preview.cc b/ash/system/holding_space/holding_space_tray_icon_preview.cc index 5266e7b..9c89059 100644 --- a/ash/system/holding_space/holding_space_tray_icon_preview.cc +++ b/ash/system/holding_space/holding_space_tray_icon_preview.cc
@@ -313,12 +313,16 @@ gfx::Canvas* canvas = recorder.canvas(); // Background. + // NOTE: The background radius is shrunk by a single pixel to avoid being + // painted outside `contents_image_` bounds as might otherwise occur due to + // pixel rounding. Failure to do so could result in white paint artifacts. cc::PaintFlags flags; flags.setAntiAlias(true); flags.setColor(SK_ColorWHITE); canvas->DrawCircle( contents_bounds.CenterPoint(), - std::min(contents_bounds.width(), contents_bounds.height()) / 2, flags); + std::min(contents_bounds.width(), contents_bounds.height()) / 2 - 1, + flags); // Contents. if (!contents_image_.isNull()) {
diff --git a/ash/system/phonehub/phone_hub_metrics.cc b/ash/system/phonehub/phone_hub_metrics.cc index 3b9c7a5b..75d3ba8b 100644 --- a/ash/system/phonehub/phone_hub_metrics.cc +++ b/ash/system/phonehub/phone_hub_metrics.cc
@@ -20,6 +20,8 @@ return "PhoneHub.InterstitialScreenEvent.BluetoothOrWifiDisabled"; case Screen::kPhoneConnecting: return "PhoneHub.InterstitialScreenEvent.PhoneConnecting"; + case Screen::kTetherConnectionPending: + return "PhoneHub.InterstitialScreenEvent.TetherConnectionPending"; case Screen::kOnboardingExistingMultideviceUser: return "PhoneHub.InterstitialScreenEvent.Onboarding." "ExistingMultideviceUser";
diff --git a/ash/system/phonehub/phone_hub_metrics.h b/ash/system/phonehub/phone_hub_metrics.h index ab8b200d..9c7a32e 100644 --- a/ash/system/phonehub/phone_hub_metrics.h +++ b/ash/system/phonehub/phone_hub_metrics.h
@@ -30,7 +30,8 @@ kOnboardingDismissPrompt = 7, kInvalid = 8, kPhoneConnecting = 9, - kMaxValue = kPhoneConnecting + kTetherConnectionPending = 10, + kMaxValue = kTetherConnectionPending }; // Keep in sync with corresponding enum in tools/metrics/histograms/enums.xml.
diff --git a/ash/system/phonehub/phone_hub_ui_controller.cc b/ash/system/phonehub/phone_hub_ui_controller.cc index 8e02573..bdef5db 100644 --- a/ash/system/phonehub/phone_hub_ui_controller.cc +++ b/ash/system/phonehub/phone_hub_ui_controller.cc
@@ -14,13 +14,16 @@ #include "ash/system/phonehub/phone_connecting_view.h" #include "ash/system/phonehub/phone_disconnected_view.h" #include "ash/system/phonehub/phone_hub_content_view.h" +#include "ash/system/phonehub/tether_connection_pending_view.h" #include "base/logging.h" #include "chromeos/components/phonehub/browser_tabs_model_provider.h" #include "chromeos/components/phonehub/connection_scheduler.h" #include "chromeos/components/phonehub/phone_hub_manager.h" +#include "chromeos/components/phonehub/tether_controller.h" #include "chromeos/components/phonehub/user_action_recorder.h" using FeatureStatus = chromeos::phonehub::FeatureStatus; +using TetherStatus = chromeos::phonehub::TetherController::Status; namespace ash { @@ -79,6 +82,8 @@ return std::make_unique<BluetoothDisabledView>(); case UiState::kPhoneConnecting: return std::make_unique<PhoneConnectingView>(); + case UiState::kTetherConnectionPending: + return std::make_unique<TetherConnectionPendingView>(); case UiState::kPhoneDisconnected: return std::make_unique<PhoneDisconnectedView>( phone_hub_manager_->GetConnectionScheduler()); @@ -147,6 +152,9 @@ auto* tracker = phone_hub_manager_->GetOnboardingUiTracker(); auto* phone_model = phone_hub_manager_->GetPhoneModel(); bool should_show_onboarding_ui = tracker->ShouldShowOnboardingUi(); + bool is_tether_connecting = + phone_hub_manager_->GetTetherController()->GetStatus() == + TetherStatus::kConnecting; switch (feature_status) { case FeatureStatus::kPhoneSelectedAndPendingSetup: @@ -164,13 +172,24 @@ case FeatureStatus::kEnabledButDisconnected: return UiState::kPhoneDisconnected; case FeatureStatus::kEnabledAndConnecting: - return UiState::kPhoneConnecting; + // If a tether network is being connected to, or the |ui_state_| + // was UiState::kTetherConnectionPending, continue returning + // the UiState::kTetherConnectionPending state. + return is_tether_connecting || + ui_state_ == UiState::kTetherConnectionPending + ? UiState::kTetherConnectionPending + : UiState::kPhoneConnecting; case FeatureStatus::kEnabledAndConnected: // Delay displaying the connected view until the phone model is ready. if (phone_model->phone_status_model().has_value()) return UiState::kPhoneConnected; - else - return UiState::kPhoneConnecting; + + // If the the |ui_state_| was UiState::kTetherConnectionPending, continue + // returning the UiState::kTetherConnectionPending state. + if (ui_state_ == UiState::kTetherConnectionPending) + return UiState::kTetherConnectionPending; + + return UiState::kPhoneConnecting; case FeatureStatus::kLockOrSuspended: return UiState::kHidden; }
diff --git a/ash/system/phonehub/phone_hub_ui_controller.h b/ash/system/phonehub/phone_hub_ui_controller.h index 3f78fb65..0eb4648b 100644 --- a/ash/system/phonehub/phone_hub_ui_controller.h +++ b/ash/system/phonehub/phone_hub_ui_controller.h
@@ -53,6 +53,7 @@ kPhoneConnecting, kPhoneDisconnected, kPhoneConnected, + kTetherConnectionPending, }; PhoneHubUiController();
diff --git a/ash/system/phonehub/phone_hub_ui_controller_unittest.cc b/ash/system/phonehub/phone_hub_ui_controller_unittest.cc index 570a2d5..ba58dec 100644 --- a/ash/system/phonehub/phone_hub_ui_controller_unittest.cc +++ b/ash/system/phonehub/phone_hub_ui_controller_unittest.cc
@@ -8,6 +8,7 @@ #include "ash/test/ash_test_base.h" #include "base/optional.h" #include "chromeos/components/phonehub/fake_phone_hub_manager.h" +#include "chromeos/components/phonehub/fake_tether_controller.h" #include "chromeos/components/phonehub/phone_model_test_util.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/views/view.h" @@ -60,6 +61,10 @@ return phone_hub_manager_.fake_onboarding_ui_tracker(); } + chromeos::phonehub::FakeTetherController* GetTetherController() { + return phone_hub_manager_.fake_tether_controller(); + } + void SetPhoneStatusModel( const base::Optional<chromeos::phonehub::PhoneStatusModel>& phone_status_model) { @@ -147,6 +152,8 @@ } TEST_F(PhoneHubUiControllerTest, PhoneConnecting) { + GetTetherController()->SetStatus( + chromeos::phonehub::TetherController::Status::kConnectionAvailable); GetFeatureStatusProvider()->SetStatus(FeatureStatus::kEnabledAndConnecting); EXPECT_EQ(PhoneHubUiController::UiState::kPhoneConnecting, controller_->ui_state()); @@ -155,6 +162,35 @@ EXPECT_EQ(PhoneHubViewID::kPhoneConnectingView, content_view->GetID()); } +TEST_F(PhoneHubUiControllerTest, TetherConnectionPending) { + GetTetherController()->SetStatus( + chromeos::phonehub::TetherController::Status::kConnecting); + GetFeatureStatusProvider()->SetStatus(FeatureStatus::kEnabledAndConnecting); + EXPECT_EQ(PhoneHubUiController::UiState::kTetherConnectionPending, + controller_->ui_state()); + + // Tether status becomes connected, but the feature status is still + // |kEnabledAndConnecting|. The UiState should still be + // kTetherConnectionPending. + GetTetherController()->SetStatus( + chromeos::phonehub::TetherController::Status::kConnected); + GetFeatureStatusProvider()->SetStatus(FeatureStatus::kEnabledAndConnecting); + EXPECT_EQ(PhoneHubUiController::UiState::kTetherConnectionPending, + controller_->ui_state()); + + // Tether status is connected, the feature status is |kEnabledAndConnected|, + // but there is no phone model. The UiState should still be + // kTetherConnectionPending. + SetPhoneStatusModel(base::nullopt); + GetFeatureStatusProvider()->SetStatus(FeatureStatus::kEnabledAndConnected); + EXPECT_EQ(PhoneHubUiController::UiState::kTetherConnectionPending, + controller_->ui_state()); + + auto content_view = controller_->CreateContentView(/*delegate=*/nullptr); + EXPECT_EQ(PhoneHubViewID::kTetherConnectionPendingView, + content_view->GetID()); +} + TEST_F(PhoneHubUiControllerTest, PhoneConnected) { SetPhoneStatusModel(chromeos::phonehub::CreateFakePhoneStatusModel()); GetFeatureStatusProvider()->SetStatus(FeatureStatus::kEnabledAndConnected);
diff --git a/ash/system/phonehub/phone_hub_view_ids.h b/ash/system/phonehub/phone_hub_view_ids.h index 6a41a39..ca53470a 100644 --- a/ash/system/phonehub/phone_hub_view_ids.h +++ b/ash/system/phonehub/phone_hub_view_ids.h
@@ -41,6 +41,7 @@ kPhoneConnectedView, kPhoneConnectingView, + kTetherConnectionPendingView, }; } // namespace ash
diff --git a/ash/system/phonehub/tether_connection_pending_view.cc b/ash/system/phonehub/tether_connection_pending_view.cc new file mode 100644 index 0000000..7528116 --- /dev/null +++ b/ash/system/phonehub/tether_connection_pending_view.cc
@@ -0,0 +1,56 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ash/system/phonehub/tether_connection_pending_view.h" + +#include <algorithm> +#include <memory> + +#include "ash/public/cpp/resources/grit/ash_public_unscaled_resources.h" +#include "ash/strings/grit/ash_strings.h" +#include "ash/system/phonehub/phone_hub_interstitial_view.h" +#include "ash/system/phonehub/phone_hub_metrics.h" +#include "ash/system/phonehub/phone_hub_view_ids.h" +#include "base/strings/string16.h" +#include "ui/base/l10n/l10n_util.h" +#include "ui/base/resource/resource_bundle.h" +#include "ui/views/layout/fill_layout.h" +#include "ui/views/metadata/metadata_impl_macros.h" + +namespace ash { + +using phone_hub_metrics::InterstitialScreenEvent; +using phone_hub_metrics::Screen; + +TetherConnectionPendingView::TetherConnectionPendingView() { + SetID(PhoneHubViewID::kTetherConnectionPendingView); + SetLayoutManager(std::make_unique<views::FillLayout>()); + content_view_ = AddChildView( + std::make_unique<PhoneHubInterstitialView>(/*show_progress=*/true)); + + // TODO(crbug.com/1127996): Replace PNG file with vector icon. + gfx::ImageSkia* image = + ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed( + IDR_PHONE_HUB_CONNECTING_IMAGE); + content_view_->SetImage(*image); + + content_view_->SetTitle(l10n_util::GetStringUTF16( + IDS_ASH_PHONE_HUB_TETHER_CONNECTION_PENDING_DIALOG_TITLE)); + content_view_->SetDescription(l10n_util::GetStringUTF16( + IDS_ASH_PHONE_HUB_PHONE_CONNECTING_DIALOG_DESCRIPTION)); + + LogInterstitialScreenEvent(InterstitialScreenEvent::kShown); +} + +TetherConnectionPendingView::~TetherConnectionPendingView() = default; + +phone_hub_metrics::Screen TetherConnectionPendingView::GetScreenForMetrics() + const { + return Screen::kTetherConnectionPending; +} + +BEGIN_METADATA(TetherConnectionPendingView, views::View) +END_METADATA + +} // namespace ash
diff --git a/ash/system/phonehub/tether_connection_pending_view.h b/ash/system/phonehub/tether_connection_pending_view.h new file mode 100644 index 0000000..9f20590b3 --- /dev/null +++ b/ash/system/phonehub/tether_connection_pending_view.h
@@ -0,0 +1,40 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef ASH_SYSTEM_PHONEHUB_TETHER_CONNECTION_PENDING_VIEW_H_ +#define ASH_SYSTEM_PHONEHUB_TETHER_CONNECTION_PENDING_VIEW_H_ + +#include "ash/ash_export.h" +#include "ash/system/phonehub/phone_hub_content_view.h" +#include "ui/views/metadata/metadata_header_macros.h" +#include "ui/views/view.h" + +namespace ash { + +class PhoneHubInterstitialView; + +// A connecting to tether hotspot view shown when resuming an interrupted +// connection to PhoneHub as a result of an in progress tether connection. +class ASH_EXPORT TetherConnectionPendingView : public PhoneHubContentView { + public: + METADATA_HEADER(TetherConnectionPendingView); + + TetherConnectionPendingView(); + TetherConnectionPendingView(const TetherConnectionPendingView&) = delete; + TetherConnectionPendingView& operator=(const TetherConnectionPendingView&) = + delete; + ~TetherConnectionPendingView() override; + + // PhoneHubContentView: + phone_hub_metrics::Screen GetScreenForMetrics() const override; + + private: + // Responsible for displaying the connecting UI contents. + // Owned by view hierarchy. + PhoneHubInterstitialView* content_view_ = nullptr; +}; + +} // namespace ash + +#endif // ASH_SYSTEM_PHONEHUB_TETHER_CONNECTION_PENDING_VIEW_H_
diff --git a/ash/wallpaper/wallpaper_controller_unittest.cc b/ash/wallpaper/wallpaper_controller_unittest.cc index e66174c..77f8310 100644 --- a/ash/wallpaper/wallpaper_controller_unittest.cc +++ b/ash/wallpaper/wallpaper_controller_unittest.cc
@@ -22,7 +22,7 @@ #include "ash/wallpaper/wallpaper_view.h" #include "ash/wallpaper/wallpaper_widget_controller.h" #include "ash/wm/overview/overview_controller.h" -#include "ash/wm/window_cycle_controller.h" +#include "ash/wm/window_cycle/window_cycle_controller.h" #include "ash/wm/window_state.h" #include "base/command_line.h" #include "base/files/file_util.h"
diff --git a/ash/wm/desks/desks_controller.cc b/ash/wm/desks/desks_controller.cc index 23973bd2..c02302f 100644 --- a/ash/wm/desks/desks_controller.cc +++ b/ash/wm/desks/desks_controller.cc
@@ -29,7 +29,7 @@ #include "ash/wm/splitview/split_view_controller.h" #include "ash/wm/splitview/split_view_utils.h" #include "ash/wm/switchable_windows.h" -#include "ash/wm/window_cycle_controller.h" +#include "ash/wm/window_cycle/window_cycle_controller.h" #include "ash/wm/window_util.h" #include "base/auto_reset.h" #include "base/check_op.h"
diff --git a/ash/wm/desks/desks_unittests.cc b/ash/wm/desks/desks_unittests.cc index 2d115e5..f166fc7e 100644 --- a/ash/wm/desks/desks_unittests.cc +++ b/ash/wm/desks/desks_unittests.cc
@@ -321,45 +321,6 @@ DISALLOW_COPY_AND_ASSIGN(DesksTest); }; -class DesksWithoutSplitViewTest : public AshTestBase { - public: - DesksWithoutSplitViewTest() = default; - DesksWithoutSplitViewTest(const DesksWithoutSplitViewTest&) = delete; - DesksWithoutSplitViewTest& operator=(const DesksWithoutSplitViewTest&) = - delete; - ~DesksWithoutSplitViewTest() override = default; - - // AshTestBase: - void SetUp() override { - scoped_feature_list_.InitAndDisableFeature( - features::kDragToSnapInClamshellMode); - AshTestBase::SetUp(); - } - - private: - base::test::ScopedFeatureList scoped_feature_list_; -}; - -TEST_F(DesksWithoutSplitViewTest, - LongPressOverviewItemInClamshellModeWithOnlyOneVirtualDesk) { - std::unique_ptr<aura::Window> window(CreateTestWindow()); - OverviewController* overview_controller = Shell::Get()->overview_controller(); - ASSERT_TRUE(overview_controller->StartOverview()); - OverviewSession* overview_session = overview_controller->overview_session(); - OverviewItem* overview_item = - overview_session->GetOverviewItemForWindow(window.get()); - ui::test::EventGenerator* event_generator = GetEventGenerator(); - LongGestureTap( - gfx::ToRoundedPoint(overview_item->target_bounds().CenterPoint()), - event_generator, /*release_touch=*/false); - EXPECT_TRUE(overview_item->IsDragItem()); - EXPECT_EQ( - OverviewWindowDragController::DragBehavior::kUndefined, - overview_session->window_drag_controller()->current_drag_behavior()); - event_generator->ReleaseTouch(); - EXPECT_FALSE(overview_item->IsDragItem()); -} - TEST_F(DesksTest, DesksCreationAndRemoval) { TestObserver observer; auto* controller = DesksController::Get(); @@ -1628,17 +1589,12 @@ // AshTestBase: void SetUp() override { - scoped_feature_list_.InitAndEnableFeature( - features::kMultiDisplayOverviewAndSplitView); AshTestBase::SetUp(); // Start the test with two displays and two desks. UpdateDisplay("600x600,400x500"); NewDesk(); } - - private: - base::test::ScopedFeatureList scoped_feature_list_; }; TEST_F(DesksWithMultiDisplayOverview, DropOnSameDeskInOtherDisplay) { @@ -2735,31 +2691,7 @@ EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState()); } -class DesksWithSplitViewTest : public AshTestBase { - public: - DesksWithSplitViewTest() = default; - ~DesksWithSplitViewTest() override = default; - - // AshTestBase: - void SetUp() override { - scoped_feature_list_.InitWithFeatures( - /*enabled_features=*/{features::kDragToSnapInClamshellMode}, - /*disabled_features=*/{}); - - AshTestBase::SetUp(); - } - - SplitViewController* split_view_controller() { - return SplitViewController::Get(Shell::GetPrimaryRootWindow()); - } - - private: - base::test::ScopedFeatureList scoped_feature_list_; - - DISALLOW_COPY_AND_ASSIGN(DesksWithSplitViewTest); -}; - -TEST_F(DesksWithSplitViewTest, SwitchToDeskWithSnappedActiveWindow) { +TEST_F(DesksTest, SwitchToDeskWithSnappedActiveWindow) { auto* desks_controller = DesksController::Get(); auto* overview_controller = Shell::Get()->overview_controller(); @@ -2780,17 +2712,19 @@ // Switch to |desk_2| and then back to |desk_1|. Verify that neither split // view nor overview arises. - EXPECT_FALSE(split_view_controller()->InSplitViewMode()); + auto* split_view_controller = + SplitViewController::Get(Shell::GetPrimaryRootWindow()); + EXPECT_FALSE(split_view_controller->InSplitViewMode()); EXPECT_FALSE(overview_controller->InOverviewSession()); ActivateDesk(desk_2); - EXPECT_FALSE(split_view_controller()->InSplitViewMode()); + EXPECT_FALSE(split_view_controller->InSplitViewMode()); EXPECT_FALSE(overview_controller->InOverviewSession()); ActivateDesk(desk_1); - EXPECT_FALSE(split_view_controller()->InSplitViewMode()); + EXPECT_FALSE(split_view_controller->InSplitViewMode()); EXPECT_FALSE(overview_controller->InOverviewSession()); } -TEST_F(DesksWithSplitViewTest, SuccessfulDragToDeskRemovesSplitViewIndicators) { +TEST_F(DesksTest, SuccessfulDragToDeskRemovesSplitViewIndicators) { auto* controller = DesksController::Get(); NewDesk(); ASSERT_EQ(2u, controller->desks().size()); @@ -2840,8 +2774,7 @@ ->current_window_dragging_state()); } -TEST_F(DesksWithSplitViewTest, - DragAllOverviewWindowsToOtherDesksNotEndClamshellSplitView) { +TEST_F(DesksTest, DragAllOverviewWindowsToOtherDesksNotEndClamshellSplitView) { // Two virtual desks. NewDesk(); ASSERT_EQ(2u, DesksController::Get()->desks().size()); @@ -2856,7 +2789,9 @@ DragItemToPoint(overview_session->GetOverviewItemForWindow(win0.get()), gfx::Point(0, 0), generator); ASSERT_TRUE(overview_controller->InOverviewSession()); - EXPECT_TRUE(split_view_controller()->InSplitViewMode()); + auto* split_view_controller = + SplitViewController::Get(Shell::GetPrimaryRootWindow()); + EXPECT_TRUE(split_view_controller->InSplitViewMode()); // Drag |win1| to the other desk. DragItemToPoint(overview_session->GetOverviewItemForWindow(win1.get()), @@ -2871,7 +2806,7 @@ // Overview should now be empty, but split view should still be active. ASSERT_TRUE(overview_controller->InOverviewSession()); EXPECT_TRUE(overview_session->IsEmpty()); - EXPECT_TRUE(split_view_controller()->InSplitViewMode()); + EXPECT_TRUE(split_view_controller->InSplitViewMode()); } namespace {
diff --git a/ash/wm/gestures/wm_gesture_handler.cc b/ash/wm/gestures/wm_gesture_handler.cc index 84d998c..058b042 100644 --- a/ash/wm/gestures/wm_gesture_handler.cc +++ b/ash/wm/gestures/wm_gesture_handler.cc
@@ -14,7 +14,7 @@ #include "ash/wm/desks/desks_controller.h" #include "ash/wm/desks/desks_histogram_enums.h" #include "ash/wm/overview/overview_controller.h" -#include "ash/wm/window_cycle_controller.h" +#include "ash/wm/window_cycle/window_cycle_controller.h" #include "base/metrics/user_metrics.h" #include "base/time/time.h" #include "components/prefs/pref_service.h"
diff --git a/ash/wm/gestures/wm_gesture_handler_unittest.cc b/ash/wm/gestures/wm_gesture_handler_unittest.cc index 3141538e..e6b2dec 100644 --- a/ash/wm/gestures/wm_gesture_handler_unittest.cc +++ b/ash/wm/gestures/wm_gesture_handler_unittest.cc
@@ -17,8 +17,8 @@ #include "ash/wm/desks/root_window_desk_switch_animator_test_api.h" #include "ash/wm/overview/overview_controller.h" #include "ash/wm/overview/overview_test_util.h" -#include "ash/wm/window_cycle_controller.h" -#include "ash/wm/window_cycle_list.h" +#include "ash/wm/window_cycle/window_cycle_controller.h" +#include "ash/wm/window_cycle/window_cycle_list.h" #include "ash/wm/window_util.h" #include "base/test/scoped_feature_list.h" #include "components/prefs/pref_service.h"
diff --git a/ash/wm/overview/DIR_METADATA b/ash/wm/overview/DIR_METADATA index a1bf0513..86718f7 100644 --- a/ash/wm/overview/DIR_METADATA +++ b/ash/wm/overview/DIR_METADATA
@@ -1,3 +1,3 @@ monorail { - component: "UI>Shell>OverviewMode" + component: "UI>Shell>WindowManager>OverviewMode" }
diff --git a/ash/wm/overview/overview_item.cc b/ash/wm/overview/overview_item.cc index 9870e02..34f6bbe 100644 --- a/ash/wm/overview/overview_item.cc +++ b/ash/wm/overview/overview_item.cc
@@ -639,7 +639,6 @@ } void OverviewItem::UpdatePhantomsForDragging(bool is_touch_dragging) { - DCHECK(AreMultiDisplayOverviewAndSplitViewEnabled()); DCHECK_GT(Shell::GetAllRootWindows().size(), 1u); if (!phantoms_for_dragging_) { phantoms_for_dragging_ = @@ -654,7 +653,6 @@ } void OverviewItem::DestroyPhantomsForDragging() { - DCHECK(AreMultiDisplayOverviewAndSplitViewEnabled()); phantoms_for_dragging_.reset(); }
diff --git a/ash/wm/overview/overview_session_unittest.cc b/ash/wm/overview/overview_session_unittest.cc index b8e00df..be06bf31 100644 --- a/ash/wm/overview/overview_session_unittest.cc +++ b/ash/wm/overview/overview_session_unittest.cc
@@ -49,7 +49,6 @@ #include "ash/wm/overview/scoped_overview_transform_window.h" #include "ash/wm/resize_shadow.h" #include "ash/wm/resize_shadow_controller.h" -#include "ash/wm/splitview/multi_display_overview_and_split_view_test.h" #include "ash/wm/splitview/split_view_controller.h" #include "ash/wm/splitview/split_view_divider.h" #include "ash/wm/splitview/split_view_drag_indicators.h" @@ -158,14 +157,14 @@ // TODO(bruthig): Move all non-simple method definitions out of class // declaration. -class OverviewSessionTest : public MultiDisplayOverviewAndSplitViewTest { +class OverviewSessionTest : public AshTestBase { public: OverviewSessionTest() = default; ~OverviewSessionTest() override = default; // AshTestBase: void SetUp() override { - MultiDisplayOverviewAndSplitViewTest::SetUp(); + AshTestBase::SetUp(); aura::Env::GetInstance()->set_throttle_input_on_resize_for_testing(false); shelf_view_test_api_ = std::make_unique<ShelfViewTestAPI>( @@ -181,7 +180,7 @@ PresentationTimeRecorder::SetReportPresentationTimeImmediatelyForTest( false); trace_names_.clear(); - MultiDisplayOverviewAndSplitViewTest::TearDown(); + AshTestBase::TearDown(); } // Enters tablet mode. Needed by tests that test dragging and or splitview, @@ -389,7 +388,7 @@ }; // Tests that an a11y alert is sent on entering overview mode. -TEST_P(OverviewSessionTest, A11yAlertOnOverviewMode) { +TEST_F(OverviewSessionTest, A11yAlertOnOverviewMode) { TestAccessibilityControllerClient client; std::unique_ptr<aura::Window> window(CreateTestWindow()); EXPECT_NE(AccessibilityAlert::WINDOW_OVERVIEW_MODE_ENTERED, @@ -401,7 +400,7 @@ // Tests that there are no crashes when there is not enough screen space // available to show all of the windows. -TEST_P(OverviewSessionTest, SmallDisplay) { +TEST_F(OverviewSessionTest, SmallDisplay) { UpdateDisplay("3x1"); gfx::Rect bounds(0, 0, 1, 1); std::unique_ptr<aura::Window> window1(CreateTestWindow(bounds)); @@ -416,7 +415,7 @@ } // Tests entering overview mode with two windows and selecting one by clicking. -TEST_P(OverviewSessionTest, Basic) { +TEST_F(OverviewSessionTest, Basic) { ui::ScopedAnimationDurationScaleMode anmatin_scale( ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); @@ -462,7 +461,7 @@ } // Tests activating minimized window. -TEST_P(OverviewSessionTest, ActivateMinimized) { +TEST_F(OverviewSessionTest, ActivateMinimized) { std::unique_ptr<aura::Window> window(CreateTestWindow()); WindowState* window_state = WindowState::Get(window.get()); @@ -495,7 +494,7 @@ // Tests that the ordering of windows is stable across different overview // sessions even when the windows have the same bounds. -TEST_P(OverviewSessionTest, WindowsOrder) { +TEST_F(OverviewSessionTest, WindowsOrder) { std::unique_ptr<aura::Window> window1(CreateTestWindowInShellWithId(1)); std::unique_ptr<aura::Window> window2(CreateTestWindowInShellWithId(2)); std::unique_ptr<aura::Window> window3(CreateTestWindowInShellWithId(3)); @@ -524,7 +523,7 @@ } // Tests selecting a window by tapping on it. -TEST_P(OverviewSessionTest, BasicGesture) { +TEST_F(OverviewSessionTest, BasicGesture) { std::unique_ptr<aura::Window> window1(CreateTestWindow()); std::unique_ptr<aura::Window> window2(CreateTestWindow()); wm::ActivateWindow(window1.get()); @@ -540,7 +539,7 @@ // Tests that the user action WindowSelector_ActiveWindowChanged is // recorded when the mouse/touchscreen/keyboard are used to select a window // in overview mode which is different from the previously-active window. -TEST_P(OverviewSessionTest, ActiveWindowChangedUserActionRecorded) { +TEST_F(OverviewSessionTest, ActiveWindowChangedUserActionRecorded) { base::UserActionTester user_action_tester; std::unique_ptr<aura::Window> window1(CreateTestWindow()); std::unique_ptr<aura::Window> window2(CreateTestWindow()); @@ -574,7 +573,7 @@ // recorded when the mouse/touchscreen/keyboard are used to select the // already-active window from overview mode. Also verifies that entering and // exiting overview without selecting a window does not record the action. -TEST_P(OverviewSessionTest, ActiveWindowChangedUserActionNotRecorded) { +TEST_F(OverviewSessionTest, ActiveWindowChangedUserActionNotRecorded) { base::UserActionTester user_action_tester; std::unique_ptr<aura::Window> window1(CreateTestWindow()); std::unique_ptr<aura::Window> window2(CreateTestWindow()); @@ -612,7 +611,7 @@ // Tests that the user action WindowSelector_ActiveWindowChanged is not // recorded when overview mode exits as a result of closing its only window. -TEST_P(OverviewSessionTest, ActiveWindowChangedUserActionWindowClose) { +TEST_F(OverviewSessionTest, ActiveWindowChangedUserActionWindowClose) { base::UserActionTester user_action_tester; std::unique_ptr<views::Widget> widget(CreateTestWidget( nullptr, desks_util::GetActiveDeskContainerId(), gfx::Rect(400, 400))); @@ -632,7 +631,7 @@ // Tests that we do not crash and overview mode remains engaged if the desktop // is tapped while a finger is already down over a window. -TEST_P(OverviewSessionTest, NoCrashWithDesktopTap) { +TEST_F(OverviewSessionTest, NoCrashWithDesktopTap) { std::unique_ptr<aura::Window> window( CreateTestWindow(gfx::Rect(200, 300, 250, 450))); @@ -655,7 +654,7 @@ // Tests that we do not crash and a window is selected when appropriate when // we click on a window during touch. -TEST_P(OverviewSessionTest, ClickOnWindowDuringTouch) { +TEST_F(OverviewSessionTest, ClickOnWindowDuringTouch) { std::unique_ptr<aura::Window> window1(CreateTestWindow()); std::unique_ptr<aura::Window> window2(CreateTestWindow()); wm::ActivateWindow(window2.get()); @@ -689,7 +688,7 @@ } // Tests that a window does not receive located events when in overview mode. -TEST_P(OverviewSessionTest, WindowDoesNotReceiveEvents) { +TEST_F(OverviewSessionTest, WindowDoesNotReceiveEvents) { std::unique_ptr<aura::Window> window(CreateTestWindow(gfx::Rect(400, 400))); const gfx::Point point1 = window->bounds().CenterPoint(); ui::MouseEvent event1(ui::ET_MOUSE_PRESSED, point1, point1, @@ -717,7 +716,7 @@ } // Tests that clicking on the close button effectively closes the window. -TEST_P(OverviewSessionTest, CloseButton) { +TEST_F(OverviewSessionTest, CloseButton) { std::unique_ptr<views::Widget> widget(CreateTestWidget()); std::unique_ptr<views::Widget> minimized_widget(CreateTestWidget()); minimized_widget->Minimize(); @@ -755,7 +754,7 @@ // Tests that the shadow disappears before the close animation starts. // Regression test for https://crbug.com/981509. -TEST_P(OverviewSessionTest, CloseAnimationShadow) { +TEST_F(OverviewSessionTest, CloseAnimationShadow) { // Give us some time to check if the shadow has disappeared. ScopedOverviewTransformWindow::SetImmediateCloseForTests(/*immediate=*/false); ui::ScopedAnimationDurationScaleMode test_duration_mode( @@ -780,7 +779,7 @@ } // Tests minimizing/unminimizing in overview mode. -TEST_P(OverviewSessionTest, MinimizeUnminimize) { +TEST_F(OverviewSessionTest, MinimizeUnminimize) { std::unique_ptr<views::Widget> widget(CreateTestWidget()); aura::Window* window = widget->GetNativeWindow(); @@ -800,7 +799,7 @@ // Tests that clicking on the close button on a secondary display effectively // closes the window. -TEST_P(OverviewSessionTest, CloseButtonOnMultipleDisplay) { +TEST_F(OverviewSessionTest, CloseButtonOnMultipleDisplay) { UpdateDisplay("600x400,600x400"); // We need a widget for the close button to work because windows are closed @@ -826,7 +825,7 @@ } // Tests entering overview mode with two windows and selecting one. -TEST_P(OverviewSessionTest, FullscreenWindow) { +TEST_F(OverviewSessionTest, FullscreenWindow) { ui::ScopedAnimationDurationScaleMode anmatin_scale( ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); @@ -863,7 +862,7 @@ } // Tests entering overview mode with maximized window. -TEST_P(OverviewSessionTest, MaximizedWindow) { +TEST_F(OverviewSessionTest, MaximizedWindow) { ui::ScopedAnimationDurationScaleMode anmatin_scale( ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); @@ -897,7 +896,7 @@ {1, 1, 0, 0, 0}); } -TEST_P(OverviewSessionTest, TabletModeHistograms) { +TEST_F(OverviewSessionTest, TabletModeHistograms) { ui::ScopedAnimationDurationScaleMode anmatin_scale( ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); @@ -930,7 +929,7 @@ // Tests that entering overview when a fullscreen window is active in maximized // mode correctly applies the transformations to the window and correctly // updates the window bounds on exiting overview mode: http://crbug.com/401664. -TEST_P(OverviewSessionTest, FullscreenWindowTabletMode) { +TEST_F(OverviewSessionTest, FullscreenWindowTabletMode) { ui::ScopedAnimationDurationScaleMode anmatin_scale( ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); @@ -1012,7 +1011,7 @@ {0, 0, 3, 0, 0}, {0, 0, 3, 0, 0}); } -TEST_P(OverviewSessionTest, SkipOverviewWindow) { +TEST_F(OverviewSessionTest, SkipOverviewWindow) { std::unique_ptr<aura::Window> window1(CreateTestWindow()); std::unique_ptr<aura::Window> window2(CreateTestWindow()); window2->SetProperty(kHideInOverviewKey, true); @@ -1031,7 +1030,7 @@ // Tests that a minimized window's visibility and layer visibility // stay invisible (A minimized window is cloned during overview). -TEST_P(OverviewSessionTest, MinimizedWindowState) { +TEST_F(OverviewSessionTest, MinimizedWindowState) { std::unique_ptr<aura::Window> window1(CreateTestWindow()); WindowState::Get(window1.get())->Minimize(); EXPECT_FALSE(window1->IsVisible()); @@ -1047,7 +1046,7 @@ } // Tests that a bounds change during overview is corrected for. -TEST_P(OverviewSessionTest, BoundsChangeDuringOverview) { +TEST_F(OverviewSessionTest, BoundsChangeDuringOverview) { std::unique_ptr<aura::Window> window( CreateTestWindowInShellWithDelegate(nullptr, -1, gfx::Rect(400, 400))); // Use overview headers above the window in this test. @@ -1062,7 +1061,7 @@ // Tests that a change to the |kTopViewInset| window property during overview is // corrected for. -TEST_P(OverviewSessionTest, TopViewInsetChangeDuringOverview) { +TEST_F(OverviewSessionTest, TopViewInsetChangeDuringOverview) { std::unique_ptr<aura::Window> window = CreateTestWindow(gfx::Rect(400, 400)); window->SetProperty(aura::client::kTopViewInset, 32); ToggleOverview(); @@ -1074,7 +1073,7 @@ } // Tests that a newly created window aborts overview. -TEST_P(OverviewSessionTest, NewWindowCancelsOverview) { +TEST_F(OverviewSessionTest, NewWindowCancelsOverview) { std::unique_ptr<aura::Window> window1(CreateTestWindow()); ToggleOverview(); EXPECT_TRUE(InOverviewSession()); @@ -1085,7 +1084,7 @@ } // Tests that a window activation exits overview mode. -TEST_P(OverviewSessionTest, ActivationCancelsOverview) { +TEST_F(OverviewSessionTest, ActivationCancelsOverview) { std::unique_ptr<aura::Window> window1(CreateTestWindow()); std::unique_ptr<aura::Window> window2(CreateTestWindow()); window2->Focus(); @@ -1103,7 +1102,7 @@ // Tests that if a window is dragged while overview is open, the activation // of the dragged window does not cancel overview. -TEST_P(OverviewSessionTest, ActivateDraggedWindowNotCancelOverview) { +TEST_F(OverviewSessionTest, ActivateDraggedWindowNotCancelOverview) { UpdateDisplay("800x600"); EnterTabletMode(); std::unique_ptr<aura::Window> window1(CreateTestWindow()); @@ -1129,7 +1128,7 @@ // Tests that activate a non-dragged window during window drag will not cancel // overview mode. -TEST_P(OverviewSessionTest, ActivateAnotherWindowDuringDragNotCancelOverview) { +TEST_F(OverviewSessionTest, ActivateAnotherWindowDuringDragNotCancelOverview) { UpdateDisplay("800x600"); EnterTabletMode(); std::unique_ptr<aura::Window> window1(CreateTestWindow()); @@ -1153,7 +1152,7 @@ // Tests that if an overview item is dragged, the activation of the // corresponding window does not cancel overview. -TEST_P(OverviewSessionTest, ActivateDraggedOverviewWindowNotCancelOverview) { +TEST_F(OverviewSessionTest, ActivateDraggedOverviewWindowNotCancelOverview) { UpdateDisplay("800x600"); EnterTabletMode(); std::unique_ptr<aura::Window> window(CreateTestWindow()); @@ -1170,7 +1169,7 @@ // Tests that if an overview item is dragged, the activation of the window // corresponding to another overview item does not cancel overview. -TEST_P(OverviewSessionTest, +TEST_F(OverviewSessionTest, ActivateAnotherOverviewWindowDuringOverviewDragNotCancelOverview) { UpdateDisplay("800x600"); EnterTabletMode(); @@ -1189,7 +1188,7 @@ // Tests that if an overview item is dragged, the activation of a window // excluded from overview does not cancel overview. -TEST_P(OverviewSessionTest, +TEST_F(OverviewSessionTest, ActivateWindowExcludedFromOverviewDuringOverviewDragNotCancelOverview) { UpdateDisplay("800x600"); EnterTabletMode(); @@ -1210,7 +1209,7 @@ // Tests that exiting overview mode without selecting a window restores focus // to the previously focused window. -TEST_P(OverviewSessionTest, CancelRestoresFocus) { +TEST_F(OverviewSessionTest, CancelRestoresFocus) { std::unique_ptr<aura::Window> window(CreateTestWindow()); wm::ActivateWindow(window.get()); EXPECT_EQ(window.get(), window_util::GetFocusedWindow()); @@ -1226,7 +1225,7 @@ } // Tests that overview mode is exited if the last remaining window is destroyed. -TEST_P(OverviewSessionTest, LastWindowDestroyed) { +TEST_F(OverviewSessionTest, LastWindowDestroyed) { std::unique_ptr<aura::Window> window1(CreateTestWindow()); std::unique_ptr<aura::Window> window2(CreateTestWindow()); ToggleOverview(); @@ -1238,7 +1237,7 @@ // Tests that entering overview mode restores a window to its original // target location. -TEST_P(OverviewSessionTest, QuickReentryRestoresInitialTransform) { +TEST_F(OverviewSessionTest, QuickReentryRestoresInitialTransform) { std::unique_ptr<aura::Window> window(CreateTestWindow(gfx::Rect(400, 400))); gfx::Rect initial_bounds = GetTransformedBounds(window.get()); ToggleOverview(); @@ -1259,7 +1258,7 @@ // Tests that windows with modal child windows are transformed with the modal // child even though not activatable themselves. -TEST_P(OverviewSessionTest, ModalChild) { +TEST_F(OverviewSessionTest, ModalChild) { const gfx::Rect bounds(400, 400); std::unique_ptr<aura::Window> window(CreateTestWindow(bounds)); std::unique_ptr<aura::Window> child(CreateTestWindow(bounds)); @@ -1276,7 +1275,7 @@ // Tests that clicking a modal window's parent activates the modal window in // overview. -TEST_P(OverviewSessionTest, ClickModalWindowParent) { +TEST_F(OverviewSessionTest, ClickModalWindowParent) { std::unique_ptr<aura::Window> window(CreateTestWindow(gfx::Rect(180, 180))); std::unique_ptr<aura::Window> child( CreateTestWindow(gfx::Rect(200, 0, 180, 180))); @@ -1297,7 +1296,7 @@ // Tests that windows remain on the display they are currently on in overview // mode, and that the close buttons are on matching displays. -TEST_P(OverviewSessionTest, MultipleDisplays) { +TEST_F(OverviewSessionTest, MultipleDisplays) { UpdateDisplay("600x400,600x400"); aura::Window::Windows root_windows = Shell::GetAllRootWindows(); gfx::Rect bounds1(0, 0, 400, 400); @@ -1331,7 +1330,7 @@ } // Tests shutting down during overview. -TEST_P(OverviewSessionTest, Shutdown) { +TEST_F(OverviewSessionTest, Shutdown) { // These windows will be deleted when the test exits and the Shell instance // is shut down. std::unique_ptr<aura::Window> window1(CreateTestWindow()); @@ -1344,7 +1343,7 @@ } // Tests adding a display during overview. -TEST_P(OverviewSessionTest, AddDisplay) { +TEST_F(OverviewSessionTest, AddDisplay) { UpdateDisplay("400x400"); ToggleOverview(); EXPECT_TRUE(InOverviewSession()); @@ -1353,7 +1352,7 @@ } // Tests removing a display during overview. -TEST_P(OverviewSessionTest, RemoveDisplay) { +TEST_F(OverviewSessionTest, RemoveDisplay) { UpdateDisplay("400x400,400x400"); std::unique_ptr<aura::Window> window1(CreateTestWindow(gfx::Rect(100, 100))); std::unique_ptr<aura::Window> window2( @@ -1373,7 +1372,7 @@ } // Tests removing a display during overview with NON_ZERO_DURATION animation. -TEST_P(OverviewSessionTest, RemoveDisplayWithAnimation) { +TEST_F(OverviewSessionTest, RemoveDisplayWithAnimation) { UpdateDisplay("400x400,400x400"); std::unique_ptr<aura::Window> window1(CreateTestWindow(gfx::Rect(100, 100))); std::unique_ptr<aura::Window> window2( @@ -1397,7 +1396,7 @@ // Tests that tab key does not cause crash if pressed just after overview // session exits. -TEST_P(OverviewSessionTest, NoCrashOnTabAfterExit) { +TEST_F(OverviewSessionTest, NoCrashOnTabAfterExit) { std::unique_ptr<aura::Window> window = CreateTestWindow(); wm::ActivateWindow(window.get()); @@ -1411,7 +1410,7 @@ // Tests that tab key does not cause crash if pressed just after overview // session exits, and a child window was active before session start. -TEST_P(OverviewSessionTest, +TEST_F(OverviewSessionTest, NoCrashOnTabAfterExitWithChildWindowInitiallyFocused) { std::unique_ptr<aura::Window> window = CreateTestWindow(); std::unique_ptr<aura::Window> child_window = CreateChildWindow(window.get()); @@ -1428,7 +1427,7 @@ // Tests that tab key does not cause crash if pressed just after overview // session exits when no windows existed before starting overview session. -TEST_P(OverviewSessionTest, NoCrashOnTabAfterExitWithNoWindows) { +TEST_F(OverviewSessionTest, NoCrashOnTabAfterExitWithNoWindows) { ToggleOverview(); EXPECT_TRUE(InOverviewSession()); @@ -1439,7 +1438,7 @@ // Tests that dragging a window from overview creates a drop target on the same // display. -TEST_P(OverviewSessionTest, DropTargetOnCorrectDisplayForDraggingFromOverview) { +TEST_F(OverviewSessionTest, DropTargetOnCorrectDisplayForDraggingFromOverview) { UpdateDisplay("600x600,600x600"); EnterTabletMode(); // DisplayConfigurationObserver enables mirror mode when tablet mode is @@ -1495,7 +1494,7 @@ // Tests that the drop target is removed if a window is destroyed while being // dragged from the top. -TEST_P(OverviewSessionTest, +TEST_F(OverviewSessionTest, DropTargetRemovedIfWindowDraggedFromTopIsDestroyed) { EnterTabletMode(); std::unique_ptr<aura::Window> window = CreateTestWindow(); @@ -1532,7 +1531,7 @@ } // namespace // Tests that toggling overview on and off does not cancel drag. -TEST_P(OverviewSessionTest, DragDropInProgress) { +TEST_F(OverviewSessionTest, DragDropInProgress) { std::unique_ptr<aura::Window> window(CreateTestWindowInShellWithDelegate( new TestDragWindowDelegate(), -1, gfx::Rect(100, 100))); @@ -1558,7 +1557,7 @@ // Tests that toggling overview on removes any resize shadows that may have been // present. -TEST_P(OverviewSessionTest, DragWindowShadow) { +TEST_F(OverviewSessionTest, DragWindowShadow) { std::unique_ptr<aura::Window> window(CreateTestWindow(gfx::Rect(100, 100))); wm::ActivateWindow(window.get()); Shell::Get()->resize_shadow_controller()->ShowShadow(window.get(), HTTOP); @@ -1571,7 +1570,7 @@ } // Test that a label is created under the window on entering overview mode. -TEST_P(OverviewSessionTest, CreateLabelUnderWindow) { +TEST_F(OverviewSessionTest, CreateLabelUnderWindow) { std::unique_ptr<aura::Window> window(CreateTestWindow(gfx::Rect(300, 500))); const base::string16 window_title = base::UTF8ToUTF16("My window"); window->SetTitle(window_title); @@ -1596,7 +1595,7 @@ // Tests that overview updates the window positions if the display orientation // changes. -TEST_P(OverviewSessionTest, DisplayOrientationChanged) { +TEST_F(OverviewSessionTest, DisplayOrientationChanged) { aura::Window* root_window = Shell::Get()->GetPrimaryRootWindow(); UpdateDisplay("600x200"); EXPECT_EQ(gfx::Rect(600, 200), root_window->bounds()); @@ -1622,7 +1621,7 @@ } } -TEST_P(OverviewSessionTest, AcceleratorInOverviewSession) { +TEST_F(OverviewSessionTest, AcceleratorInOverviewSession) { ToggleOverview(); auto* accelerator_controller = Shell::Get()->accelerator_controller(); auto* ewh = accelerator_controller->GetExitWarningHandlerForTest(); @@ -1639,7 +1638,7 @@ } // Tests hitting the escape and back keys exits overview mode. -TEST_P(OverviewSessionTest, ExitOverviewWithKey) { +TEST_F(OverviewSessionTest, ExitOverviewWithKey) { std::unique_ptr<aura::Window> window(CreateTestWindow()); ToggleOverview(); @@ -1666,7 +1665,7 @@ } // Regression test for clusterfuzz crash. https://crbug.com/920568 -TEST_P(OverviewSessionTest, TypeThenPressEscapeTwice) { +TEST_F(OverviewSessionTest, TypeThenPressEscapeTwice) { std::unique_ptr<aura::Window> window(CreateTestWindow()); ToggleOverview(); @@ -1681,7 +1680,7 @@ SendKey(ui::VKEY_ESCAPE); } -TEST_P(OverviewSessionTest, CancelOverviewOnMouseClick) { +TEST_F(OverviewSessionTest, CancelOverviewOnMouseClick) { std::unique_ptr<aura::Window> window( CreateTestWindow(gfx::Rect(10, 10, 100, 100))); // Move mouse to point in the background page. Sending an event here will pass @@ -1704,7 +1703,7 @@ } // Tests tapping on the desktop itself to cancel overview mode. -TEST_P(OverviewSessionTest, CancelOverviewOnTap) { +TEST_F(OverviewSessionTest, CancelOverviewOnTap) { std::unique_ptr<aura::Window> window( CreateTestWindow(gfx::Rect(10, 10, 100, 100))); @@ -1726,7 +1725,7 @@ // Start dragging a window and activate overview mode. This test should not // crash or DCHECK inside aura::Window::StackChildRelativeTo(). -TEST_P(OverviewSessionTest, OverviewWhileDragging) { +TEST_F(OverviewSessionTest, OverviewWhileDragging) { std::unique_ptr<aura::Window> window(CreateTestWindow()); std::unique_ptr<WindowResizer> resizer(CreateWindowResizer( window.get(), gfx::PointF(), HTCAPTION, ::wm::WINDOW_MOVE_SOURCE_MOUSE)); @@ -1740,7 +1739,7 @@ // Verify that the overview no windows indicator appears when entering overview // mode with no windows. -TEST_P(OverviewSessionTest, NoWindowsIndicator) { +TEST_F(OverviewSessionTest, NoWindowsIndicator) { // Verify that by entering overview mode without windows, the no items // indicator appears. ToggleOverview(); @@ -1750,7 +1749,7 @@ } // Verify that the overview no windows indicator position is as expected. -TEST_P(OverviewSessionTest, NoWindowsIndicatorPosition) { +TEST_F(OverviewSessionTest, NoWindowsIndicatorPosition) { UpdateDisplay("400x300"); ToggleOverview(); @@ -1779,7 +1778,7 @@ // Tests that toggling overview on removes any resize shadows that may have been // present. -TEST_P(OverviewSessionTest, DragMinimizedWindowHasStableSize) { +TEST_F(OverviewSessionTest, DragMinimizedWindowHasStableSize) { UpdateDisplay(base::StringPrintf("1920x1200*%s", display::kDsfStr_1_777)); EnterTabletMode(); std::unique_ptr<aura::Window> window(CreateTestWindow()); @@ -1814,7 +1813,7 @@ } // Tests that the bounds of the grid do not intersect the shelf or its hotseat. -TEST_P(OverviewSessionTest, OverviewGridBounds) { +TEST_F(OverviewSessionTest, OverviewGridBounds) { EnterTabletMode(); std::unique_ptr<aura::Window> window(CreateTestWindow()); @@ -1829,7 +1828,7 @@ EXPECT_FALSE(GetGridBounds().Intersects(hotseat_bounds)); } -TEST_P(OverviewSessionTest, NoWindowsIndicatorPositionSplitview) { +TEST_F(OverviewSessionTest, NoWindowsIndicatorPositionSplitview) { UpdateDisplay("400x300"); EnterTabletMode(); std::unique_ptr<aura::Window> window(CreateTestWindow()); @@ -1864,7 +1863,7 @@ } // Tests that the no windows indicator shows properly after adding an item. -TEST_P(OverviewSessionTest, NoWindowsIndicatorAddItem) { +TEST_F(OverviewSessionTest, NoWindowsIndicatorAddItem) { EnterTabletMode(); std::unique_ptr<aura::Window> window(CreateTestWindow()); @@ -1880,7 +1879,7 @@ // Verify that when opening overview mode with multiple displays, the no items // indicator on the primary grid if there are no windows. -TEST_P(OverviewSessionTest, NoWindowsIndicatorPositionMultiDisplay) { +TEST_F(OverviewSessionTest, NoWindowsIndicatorPositionMultiDisplay) { UpdateDisplay("400x400,400x400,400x400"); // Enter overview mode. Verify that the no windows indicator is located on the @@ -1895,7 +1894,7 @@ } // Tests that we do not exit overview mode until all the grids are empty. -TEST_P(OverviewSessionTest, ExitOverviewWhenAllGridsEmpty) { +TEST_F(OverviewSessionTest, ExitOverviewWhenAllGridsEmpty) { UpdateDisplay("400x400,400x400,400x400"); // Create two windows with widgets (widgets are needed to close the windows @@ -1941,7 +1940,7 @@ } // Tests window list animation states are correctly updated. -TEST_P(OverviewSessionTest, SetWindowListAnimationStates) { +TEST_F(OverviewSessionTest, SetWindowListAnimationStates) { std::unique_ptr<aura::Window> window1(CreateTestWindow()); std::unique_ptr<aura::Window> window2(CreateTestWindow()); std::unique_ptr<aura::Window> window3(CreateTestWindow()); @@ -1973,7 +1972,7 @@ // Tests window list animation states are correctly updated with selected // window. -TEST_P(OverviewSessionTest, SetWindowListAnimationStatesWithSelectedWindow) { +TEST_F(OverviewSessionTest, SetWindowListAnimationStatesWithSelectedWindow) { std::unique_ptr<aura::Window> window1(CreateTestWindow()); std::unique_ptr<aura::Window> window2(CreateTestWindow()); std::unique_ptr<aura::Window> window3(CreateTestWindow()); @@ -2010,7 +2009,7 @@ } // Tests OverviewWindowAnimationObserver can handle deleted window. -TEST_P(OverviewSessionTest, +TEST_F(OverviewSessionTest, OverviewWindowAnimationObserverCanHandleDeletedWindow) { std::unique_ptr<aura::Window> window1(CreateTestWindow()); std::unique_ptr<aura::Window> window2(CreateTestWindow()); @@ -2054,7 +2053,7 @@ } // Tests can handle OverviewWindowAnimationObserver was deleted. -TEST_P(OverviewSessionTest, HandleOverviewWindowAnimationObserverWasDeleted) { +TEST_F(OverviewSessionTest, HandleOverviewWindowAnimationObserverWasDeleted) { std::unique_ptr<aura::Window> window1(CreateTestWindow()); std::unique_ptr<aura::Window> window2(CreateTestWindow()); std::unique_ptr<aura::Window> window3(CreateTestWindow()); @@ -2089,7 +2088,7 @@ // Tests can handle |gained_active| window is not in the |overview_grid| when // OnWindowActivated. -TEST_P(OverviewSessionTest, HandleActiveWindowNotInOverviewGrid) { +TEST_F(OverviewSessionTest, HandleActiveWindowNotInOverviewGrid) { std::unique_ptr<aura::Window> window1(CreateTestWindow()); std::unique_ptr<aura::Window> window2(CreateTestWindow()); std::unique_ptr<aura::Window> window3(CreateTestWindow()); @@ -2131,7 +2130,7 @@ // Tests that AlwaysOnTopWindow can be handled correctly in new overview // animations. // Fails consistently; see https://crbug.com/812497. -TEST_P(OverviewSessionTest, DISABLED_HandleAlwaysOnTopWindow) { +TEST_F(OverviewSessionTest, DISABLED_HandleAlwaysOnTopWindow) { const gfx::Rect bounds(400, 400); std::unique_ptr<aura::Window> window1(CreateTestWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateTestWindow(bounds)); @@ -2313,7 +2312,7 @@ // Verify that the selector item can animate after the item is dragged and // released. -TEST_P(OverviewSessionTest, WindowItemCanAnimateOnDragRelease) { +TEST_F(OverviewSessionTest, WindowItemCanAnimateOnDragRelease) { base::HistogramTester histogram_tester; UpdateDisplay("400x400"); std::unique_ptr<aura::Window> window1(CreateTestWindow()); @@ -2351,7 +2350,7 @@ // Verify that the overview items titlebar and close button change visibility // when a item is being dragged. -TEST_P(OverviewSessionTest, OverviewItemTitleCloseVisibilityOnDrag) { +TEST_F(OverviewSessionTest, OverviewItemTitleCloseVisibilityOnDrag) { base::HistogramTester histogram_tester; UpdateDisplay("400x400"); std::unique_ptr<aura::Window> window1(CreateTestWindow()); @@ -2397,7 +2396,7 @@ } // Tests that overview widgets are stacked in the correct order. -TEST_P(OverviewSessionTest, OverviewWidgetStackingOrder) { +TEST_F(OverviewSessionTest, OverviewWidgetStackingOrder) { base::HistogramTester histogram_tester; // Create three windows, including one minimized. std::unique_ptr<aura::Window> minimized(CreateTestWindow()); @@ -2475,7 +2474,7 @@ // Test that dragging a window from the top creates a drop target stacked at the // bottom. Test that dropping into overview removes the drop target. -TEST_P(OverviewSessionTest, DropTargetStackedAtBottomForWindowDraggedFromTop) { +TEST_F(OverviewSessionTest, DropTargetStackedAtBottomForWindowDraggedFromTop) { UpdateDisplay("800x600"); EnterTabletMode(); std::unique_ptr<aura::Window> window1(CreateTestWindow()); @@ -2499,7 +2498,7 @@ // Test that dragging an overview item to snap creates a drop target stacked at // the bottom. Test that ending the drag removes the drop target. -TEST_P(OverviewSessionTest, DropTargetStackedAtBottomForOverviewItem) { +TEST_F(OverviewSessionTest, DropTargetStackedAtBottomForOverviewItem) { EnterTabletMode(); std::unique_ptr<aura::Window> window1(CreateTestWindow()); std::unique_ptr<aura::Window> window2(CreateTestWindow()); @@ -2522,7 +2521,7 @@ // Verify that a windows which enter overview mode have a visible backdrop, if // the window is to be letter or pillar fitted. -TEST_P(OverviewSessionTest, Backdrop) { +TEST_F(OverviewSessionTest, Backdrop) { // Add three windows which in overview mode will be considered wide, tall and // normal. Window |wide|, with size (400, 160) will be resized to (300, 160) // when the 400x300 is rotated to 300x400, and should be considered a normal @@ -2565,7 +2564,7 @@ } // Test that the rounded corners are removed during animations. -TEST_P(OverviewSessionTest, RoundedCornersVisibility) { +TEST_F(OverviewSessionTest, RoundedCornersVisibility) { std::unique_ptr<aura::Window> window1(CreateTestWindow()); std::unique_ptr<aura::Window> window2(CreateTestWindow()); @@ -2614,7 +2613,7 @@ } // Test that the shadow disappears while dragging an overview item. -TEST_P(OverviewSessionTest, ShadowVisibilityDragging) { +TEST_F(OverviewSessionTest, ShadowVisibilityDragging) { std::unique_ptr<aura::Window> window1(CreateTestWindow()); std::unique_ptr<aura::Window> window2(CreateTestWindow()); @@ -2667,7 +2666,7 @@ } // Tests that the shadows in overview mode are placed correctly. -TEST_P(OverviewSessionTest, ShadowBounds) { +TEST_F(OverviewSessionTest, ShadowBounds) { // Helper function to check if the bounds of a shadow owned by |shadow_parent| // is contained within the bounds of |widget|. auto contains = [](views::Widget* widget, OverviewItem* shadow_parent) { @@ -2739,7 +2738,7 @@ } // Verify that attempting to drag with a secondary finger works as expected. -TEST_P(OverviewSessionTest, DraggingWithTwoFingers) { +TEST_F(OverviewSessionTest, DraggingWithTwoFingers) { std::unique_ptr<aura::Window> window1(CreateTestWindow()); std::unique_ptr<aura::Window> window2(CreateTestWindow()); @@ -2803,7 +2802,7 @@ } // Verify that shadows on windows disappear for the duration of overview mode. -TEST_P(OverviewSessionTest, ShadowDisappearsInOverview) { +TEST_F(OverviewSessionTest, ShadowDisappearsInOverview) { std::unique_ptr<aura::Window> window(CreateTestWindow()); // Verify that the shadow is initially visible. @@ -2820,7 +2819,7 @@ } // Verify that PIP windows will be excluded from the overview, but not hidden. -TEST_P(OverviewSessionTest, PipWindowShownButExcludedFromOverview) { +TEST_F(OverviewSessionTest, PipWindowShownButExcludedFromOverview) { std::unique_ptr<aura::Window> pip_window( CreateTestWindow(gfx::Rect(200, 200))); WindowState* window_state = WindowState::Get(pip_window.get()); @@ -2836,7 +2835,7 @@ } // Tests the PositionWindows function works as expected. -TEST_P(OverviewSessionTest, PositionWindows) { +TEST_F(OverviewSessionTest, PositionWindows) { std::unique_ptr<aura::Window> window1(CreateTestWindow()); std::unique_ptr<aura::Window> window2(CreateTestWindow()); std::unique_ptr<aura::Window> window3(CreateTestWindow()); @@ -2878,7 +2877,7 @@ // Tests that overview mode is entered with kWindowDragged mode when a window is // dragged from the top of the screen. For the purposes of this test, we use a // browser window. -TEST_P(OverviewSessionTest, DraggingFromTopAnimation) { +TEST_F(OverviewSessionTest, DraggingFromTopAnimation) { EnterTabletMode(); std::unique_ptr<views::Widget> widget(CreateTestWidget( nullptr, desks_util::GetActiveDeskContainerId(), gfx::Rect(200, 200))); @@ -2903,7 +2902,7 @@ // Tests the grid bounds are as expected with different shelf auto hide // behaviors and alignments. -TEST_P(OverviewSessionTest, GridBounds) { +TEST_F(OverviewSessionTest, GridBounds) { UpdateDisplay("600x600"); std::unique_ptr<aura::Window> window(CreateTestWindow(gfx::Rect(200, 200))); @@ -2939,7 +2938,7 @@ // Tests that windows that have a backdrop can still be tapped normally. // Regression test for crbug.com/938645. -TEST_P(OverviewSessionTest, SelectingWindowWithBackdrop) { +TEST_F(OverviewSessionTest, SelectingWindowWithBackdrop) { std::unique_ptr<aura::Window> window(CreateTestWindow(gfx::Rect(500, 200))); ToggleOverview(); @@ -2954,7 +2953,7 @@ EXPECT_FALSE(InOverviewSession()); } -TEST_P(OverviewSessionTest, ShelfAlignmentChangeWhileInOverview) { +TEST_F(OverviewSessionTest, ShelfAlignmentChangeWhileInOverview) { Shelf* shelf = GetPrimaryShelf(); shelf->SetAlignment(ShelfAlignment::kBottom); ToggleOverview(); @@ -2985,7 +2984,7 @@ } // namespace // Test that keys are eaten when entering overview mode. -TEST_P(OverviewSessionTest, EatKeysDuringStartAnimation) { +TEST_F(OverviewSessionTest, EatKeysDuringStartAnimation) { std::unique_ptr<aura::Window> test_window(CreateTestWindow()); TestEventHandler test_event_handler; test_window->SetTargetHandler(&test_event_handler); @@ -3019,7 +3018,7 @@ } // Tests that in tablet mode, tapping on the background will go to home screen. -TEST_P(OverviewSessionTest, TapOnBackgroundGoToHome) { +TEST_F(OverviewSessionTest, TapOnBackgroundGoToHome) { EnterTabletMode(); UpdateDisplay("800x600"); std::unique_ptr<aura::Window> window(CreateTestWindow()); @@ -3047,7 +3046,7 @@ // Tests that in tablet mode, tapping on the background in split view mode will // be no-op. -TEST_P(OverviewSessionTest, TapOnBackgroundInSplitView) { +TEST_F(OverviewSessionTest, TapOnBackgroundInSplitView) { EnterTabletMode(); UpdateDisplay("800x600"); std::unique_ptr<aura::Window> window1(CreateTestWindow()); @@ -3071,7 +3070,7 @@ } // Tests starting the overview session using kFadeInEnter type. -TEST_P(OverviewSessionTest, FadeIn) { +TEST_F(OverviewSessionTest, FadeIn) { EnterTabletMode(); // Create a minimized window. std::unique_ptr<aura::Window> window = CreateTestWindow(); @@ -3110,7 +3109,7 @@ } // Tests exiting the overview session using kFadeOutExit type. -TEST_P(OverviewSessionTest, FadeOutExit) { +TEST_F(OverviewSessionTest, FadeOutExit) { EnterTabletMode(); // Create a test window. std::unique_ptr<views::Widget> test_widget(CreateTestWidget()); @@ -3151,7 +3150,7 @@ // Tests that accessibility overrides are set as expected on overview related // widgets. -TEST_P(OverviewSessionTest, AccessibilityFocusAnnotator) { +TEST_F(OverviewSessionTest, AccessibilityFocusAnnotator) { auto window3 = CreateTestWindow(gfx::Rect(100, 100)); auto window2 = CreateTestWindow(gfx::Rect(100, 100)); auto window1 = CreateTestWindow(gfx::Rect(100, 100)); @@ -3205,7 +3204,7 @@ // Tests that removing a transient child during overview does not result in a // crash when exiting overview. -TEST_P(OverviewSessionTest, RemoveTransientNoCrash) { +TEST_F(OverviewSessionTest, RemoveTransientNoCrash) { auto child = CreateTestWindow(); auto parent = CreateTestWindow(); wm::AddTransientChild(parent.get(), child.get()); @@ -3259,7 +3258,7 @@ }; // Tests that windows are in proper positions in the new overview layout. -TEST_P(TabletModeOverviewSessionTest, CheckNewLayoutWindowPositions) { +TEST_F(TabletModeOverviewSessionTest, CheckNewLayoutWindowPositions) { auto windows = CreateTestWindows(6); ToggleOverview(); ASSERT_TRUE(InOverviewSession()); @@ -3290,7 +3289,7 @@ EXPECT_LT(item3_bounds.y(), item4_bounds.y()); } -TEST_P(TabletModeOverviewSessionTest, CheckOffscreenWindows) { +TEST_F(TabletModeOverviewSessionTest, CheckOffscreenWindows) { auto windows = CreateTestWindows(8); ToggleOverview(); ASSERT_TRUE(InOverviewSession()); @@ -3319,7 +3318,7 @@ // Tests to see if windows are not shifted if all already available windows // fit on screen. -TEST_P(TabletModeOverviewSessionTest, CheckNoOverviewItemShift) { +TEST_F(TabletModeOverviewSessionTest, CheckNoOverviewItemShift) { auto windows = CreateTestWindows(4); ToggleOverview(); ASSERT_TRUE(InOverviewSession()); @@ -3333,7 +3332,7 @@ // Tests to see if windows are shifted if at least one window is // partially/completely positioned offscreen. -TEST_P(TabletModeOverviewSessionTest, CheckOverviewItemShift) { +TEST_F(TabletModeOverviewSessionTest, CheckOverviewItemShift) { auto windows = CreateTestWindows(7); ToggleOverview(); ASSERT_TRUE(InOverviewSession()); @@ -3346,7 +3345,7 @@ } // Tests to see if windows remain in bounds after scrolling extremely far. -TEST_P(TabletModeOverviewSessionTest, CheckOverviewItemScrollingBounds) { +TEST_F(TabletModeOverviewSessionTest, CheckOverviewItemScrollingBounds) { auto windows = CreateTestWindows(8); ToggleOverview(); ASSERT_TRUE(InOverviewSession()); @@ -3379,7 +3378,7 @@ // Tests the windows are stacked correctly when entering or exiting splitview // while the new overivew layout is enabled. -TEST_P(TabletModeOverviewSessionTest, StackingOrderSplitviewWindow) { +TEST_F(TabletModeOverviewSessionTest, StackingOrderSplitviewWindow) { std::unique_ptr<aura::Window> window1 = CreateTestWindow(); std::unique_ptr<aura::Window> window2 = CreateUnsnappableWindow(); std::unique_ptr<aura::Window> window3 = CreateTestWindow(); @@ -3425,7 +3424,7 @@ // Tests the windows are remain stacked underneath the split view window after // dragging or long pressing. -TEST_P(TabletModeOverviewSessionTest, StackingOrderAfterGestureEvent) { +TEST_F(TabletModeOverviewSessionTest, StackingOrderAfterGestureEvent) { std::unique_ptr<aura::Window> window1 = CreateTestWindow(); std::unique_ptr<aura::Window> window2 = CreateTestWindow(); @@ -3458,7 +3457,7 @@ // Test that scrolling occurs if started on top of a window using the window's // center-point as a start. -TEST_P(TabletModeOverviewSessionTest, HorizontalScrollingOnOverviewItem) { +TEST_F(TabletModeOverviewSessionTest, HorizontalScrollingOnOverviewItem) { auto windows = CreateTestWindows(8); ToggleOverview(); ASSERT_TRUE(InOverviewSession()); @@ -3542,7 +3541,7 @@ // Tests that a vertical scroll sequence will close the window it is scrolled // on. -TEST_P(TabletModeOverviewSessionTest, VerticalScrollingOnOverviewItem) { +TEST_F(TabletModeOverviewSessionTest, VerticalScrollingOnOverviewItem) { constexpr int kNumWidgets = 8; std::vector<std::unique_ptr<views::Widget>> widgets(kNumWidgets); for (int i = kNumWidgets - 1; i >= 0; --i) @@ -3561,7 +3560,7 @@ } // Test that scrolling occurs if we hit the associated keyboard shortcut. -TEST_P(TabletModeOverviewSessionTest, CheckScrollingWithKeyboardShortcut) { +TEST_F(TabletModeOverviewSessionTest, CheckScrollingWithKeyboardShortcut) { auto windows = CreateTestWindows(8); ToggleOverview(); ASSERT_TRUE(InOverviewSession()); @@ -3574,7 +3573,7 @@ } // Test that tapping a window in overview closes overview mode. -TEST_P(TabletModeOverviewSessionTest, CheckWindowActivateOnTap) { +TEST_F(TabletModeOverviewSessionTest, CheckWindowActivateOnTap) { base::UserActionTester user_action_tester; auto windows = CreateTestWindows(8); wm::ActivateWindow(windows[1].get()); @@ -3596,7 +3595,7 @@ 0, user_action_tester.GetActionCount(kActiveWindowChangedFromOverview)); } -TEST_P(TabletModeOverviewSessionTest, LayoutValidAfterRotation) { +TEST_F(TabletModeOverviewSessionTest, LayoutValidAfterRotation) { UpdateDisplay("1366x768"); display::test::ScopedSetInternalDisplayId set_internal( Shell::Get()->display_manager(), @@ -3650,7 +3649,7 @@ // Tests that windows snap through long press and drag to left or right side of // the screen. -TEST_P(TabletModeOverviewSessionTest, DragOverviewWindowToSnap) { +TEST_F(TabletModeOverviewSessionTest, DragOverviewWindowToSnap) { const gfx::Rect bounds(400, 400); std::unique_ptr<aura::Window> window1(CreateTestWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateTestWindow(bounds)); @@ -3702,7 +3701,7 @@ // Verify that if the window item has been dragged enough vertically, the window // will be closed. -TEST_P(TabletModeOverviewSessionTest, DragToClose) { +TEST_F(TabletModeOverviewSessionTest, DragToClose) { // This test requires a widget. std::unique_ptr<views::Widget> widget(CreateTestWidget()); @@ -3732,7 +3731,7 @@ // Verify that if the window item has been flung enough vertically, the window // will be closed. -TEST_P(TabletModeOverviewSessionTest, FlingToClose) { +TEST_F(TabletModeOverviewSessionTest, FlingToClose) { // This test requires a widget. std::unique_ptr<views::Widget> widget(CreateTestWidget()); @@ -3771,7 +3770,7 @@ // and one item which is about to be deleted by dragging. If the item is deleted // we still only have one row, so the other items should nudge while the item is // being dragged. -TEST_P(TabletModeOverviewSessionTest, BasicNudging) { +TEST_F(TabletModeOverviewSessionTest, BasicNudging) { // Set up three equal windows, which take up one row on the overview grid. // When one of them is deleted we are still left with all the windows on one // row. @@ -3817,7 +3816,7 @@ // Tests that no nudging occurs when the number of rows in overview mode change // if the item to be deleted results in the overview grid to change number of // rows. -TEST_P(TabletModeOverviewSessionTest, NoNudgingWhenNumRowsChange) { +TEST_F(TabletModeOverviewSessionTest, NoNudgingWhenNumRowsChange) { // Set up four equal windows, which would split into two rows in overview // mode. Removing one window would leave us with three windows, which only // takes a single row in overview. @@ -3853,7 +3852,7 @@ // Tests that no nudging occurs when the item to be deleted results in an item // from the previous row to drop down to the current row, thus causing the items // to the right of the item to be shifted right, which is visually unacceptable. -TEST_P(TabletModeOverviewSessionTest, NoNudgingWhenLastItemOnPreviousRowDrops) { +TEST_F(TabletModeOverviewSessionTest, NoNudgingWhenLastItemOnPreviousRowDrops) { // Set up five equal windows, which would split into two rows in overview // mode. Removing one window would cause the rows to rearrange, with the third // item dropping down from the first row to the second row. Create the windows @@ -3908,7 +3907,7 @@ // Tests that there is no crash when destroying a window during a nudge drag. // Regression test for https://crbug.com/997335. -TEST_P(TabletModeOverviewSessionTest, DestroyWindowDuringNudge) { +TEST_F(TabletModeOverviewSessionTest, DestroyWindowDuringNudge) { std::unique_ptr<aura::Window> window1 = CreateTestWindow(); std::unique_ptr<aura::Window> window2 = CreateTestWindow(); std::unique_ptr<aura::Window> window3 = CreateTestWindow(); @@ -3931,7 +3930,7 @@ overview_session()->Drag(item, item_center + gfx::Vector2dF(0, 260)); } -TEST_P(TabletModeOverviewSessionTest, MultiTouch) { +TEST_F(TabletModeOverviewSessionTest, MultiTouch) { const gfx::Rect bounds(400, 400); std::unique_ptr<aura::Window> window1(CreateTestWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateTestWindow(bounds)); @@ -3969,7 +3968,7 @@ // Tests that when exiting overview in a way that causes windows to minimize, // rounded corners are removed, otherwise they will be visible after // unminimizing. Regression test for https://crbug.com/1146240. -TEST_P(TabletModeOverviewSessionTest, MinimizedRoundedCorners) { +TEST_F(TabletModeOverviewSessionTest, MinimizedRoundedCorners) { const gfx::Rect bounds(400, 400); std::unique_ptr<aura::Window> window(CreateTestWindow(bounds)); @@ -4153,7 +4152,7 @@ // Tests that dragging an overview item to the edge of the screen snaps the // window. If two windows are snapped to left and right side of the screen, exit // the overview mode. -TEST_P(SplitViewOverviewSessionTest, DragOverviewWindowToSnap) { +TEST_F(SplitViewOverviewSessionTest, DragOverviewWindowToSnap) { const gfx::Rect bounds(400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -4197,7 +4196,7 @@ } // Verify the correct behavior when dragging windows in overview mode. -TEST_P(SplitViewOverviewSessionTest, OverviewDragControllerBehavior) { +TEST_F(SplitViewOverviewSessionTest, OverviewDragControllerBehavior) { ui::GestureConfiguration* gesture_config = ui::GestureConfiguration::GetInstance(); gesture_config->set_long_press_time_in_ms(1); @@ -4255,7 +4254,7 @@ // Verify the window grid size changes as expected when dragging items around in // overview mode when split view is enabled. -TEST_P(SplitViewOverviewSessionTest, +TEST_F(SplitViewOverviewSessionTest, OverviewGridSizeWhileDraggingWithSplitView) { // Add three windows and enter overview mode. std::unique_ptr<aura::Window> window1(CreateTestWindow()); @@ -4327,7 +4326,7 @@ } // Tests dragging a unsnappable window. -TEST_P(SplitViewOverviewSessionTest, DraggingUnsnappableAppWithSplitView) { +TEST_F(SplitViewOverviewSessionTest, DraggingUnsnappableAppWithSplitView) { std::unique_ptr<aura::Window> unsnappable_window = CreateUnsnappableWindow(); // The grid bounds should be the size of the root window minus the shelf. @@ -4361,7 +4360,7 @@ // Test that if an unsnappable window is dragged from overview to where another // window is already snapped, then there is no snap preview, and if the drag // ends there, then there is no DCHECK failure (or crash). -TEST_P(SplitViewOverviewSessionTest, +TEST_F(SplitViewOverviewSessionTest, DragUnsnappableWindowFromOverviewToSnappedWindow) { std::unique_ptr<aura::Window> snapped_window = CreateTestWindow(); std::unique_ptr<aura::Window> unsnappable_window = CreateUnsnappableWindow(); @@ -4382,7 +4381,7 @@ overview_session()->CompleteDrag(overview_item, gfx::PointF()); } -TEST_P(SplitViewOverviewSessionTest, Clipping) { +TEST_F(SplitViewOverviewSessionTest, Clipping) { // Helper to check if two rectangles have roughly the same aspect ratio. They // may be off by a bit due to insets but should have roughly the same shape. auto aspect_ratio_near = [](const gfx::Rect& rect1, const gfx::Rect& rect2) { @@ -4538,7 +4537,7 @@ // Tests that when splitview is inactive, there is no need for aspect ratio // changes, so there is no clipping on the overview windows. Regression test for // crbug.com/1020440. -TEST_P(SplitViewOverviewSessionTest, NoClippingWhenSplitviewDisabled) { +TEST_F(SplitViewOverviewSessionTest, NoClippingWhenSplitviewDisabled) { std::unique_ptr<aura::Window> window1 = CreateTestWindow(); std::unique_ptr<aura::Window> window2 = CreateTestWindow(); @@ -4566,7 +4565,7 @@ // Tests that if there is only one window in the MRU window list in the overview // mode, snapping the window to one side of the screen will not end the overview // mode even if there is no more window left in the overview window grid. -TEST_P(SplitViewOverviewSessionTest, EmptyWindowsListNotExitOverview) { +TEST_F(SplitViewOverviewSessionTest, EmptyWindowsListNotExitOverview) { const gfx::Rect bounds(400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); @@ -4643,7 +4642,7 @@ } // Tests using Alt+[ on a maximized window. -TEST_P(SplitViewOverviewSessionTest, AltLeftSquareBracketOnMaximizedWindow) { +TEST_F(SplitViewOverviewSessionTest, AltLeftSquareBracketOnMaximizedWindow) { std::unique_ptr<aura::Window> snapped_window = CreateTestWindow(); std::unique_ptr<aura::Window> overview_window = CreateTestWindow(); wm::ActivateWindow(snapped_window.get()); @@ -4664,7 +4663,7 @@ } // Tests using Alt+] on a maximized window. -TEST_P(SplitViewOverviewSessionTest, AltRightSquareBracketOnMaximizedWindow) { +TEST_F(SplitViewOverviewSessionTest, AltRightSquareBracketOnMaximizedWindow) { std::unique_ptr<aura::Window> snapped_window = CreateTestWindow(); std::unique_ptr<aura::Window> overview_window = CreateTestWindow(); wm::ActivateWindow(snapped_window.get()); @@ -4685,7 +4684,7 @@ } // Tests using Alt+[ and Alt+] on an unsnappable window. -TEST_P(SplitViewOverviewSessionTest, AltSquareBracketOnUnsnappableWindow) { +TEST_F(SplitViewOverviewSessionTest, AltSquareBracketOnUnsnappableWindow) { std::unique_ptr<aura::Window> unsnappable_window = CreateUnsnappableWindow(); std::unique_ptr<aura::Window> other_window = CreateTestWindow(); wm::ActivateWindow(unsnappable_window.get()); @@ -4710,7 +4709,7 @@ // Tests using Alt+[ on a left snapped window, and Alt+] on a right snapped // window. -TEST_P(SplitViewOverviewSessionTest, AltSquareBracketOnSameSideSnappedWindow) { +TEST_F(SplitViewOverviewSessionTest, AltSquareBracketOnSameSideSnappedWindow) { std::unique_ptr<aura::Window> window1 = CreateTestWindow(); std::unique_ptr<aura::Window> window2 = CreateTestWindow(); const auto test_unsnapping_window1 = [this, @@ -4761,7 +4760,7 @@ // Tests using Alt+[ on a right snapped window, and Alt+] on a left snapped // window. -TEST_P(SplitViewOverviewSessionTest, +TEST_F(SplitViewOverviewSessionTest, AltSquareBracketOnOppositeSideSnappedWindow) { std::unique_ptr<aura::Window> window1 = CreateTestWindow(); std::unique_ptr<aura::Window> window2 = CreateTestWindow(); @@ -4824,7 +4823,7 @@ } // Test the overview window drag functionalities when screen rotates. -TEST_P(SplitViewOverviewSessionTest, SplitViewRotationTest) { +TEST_F(SplitViewOverviewSessionTest, SplitViewRotationTest) { UpdateDisplay("807x407"); int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); display::DisplayManager* display_manager = Shell::Get()->display_manager(); @@ -4961,7 +4960,7 @@ // Test that when split view mode and overview mode are both active at the same // time, dragging the split view divider resizes the bounds of snapped window // and the bounds of overview window grids at the same time. -TEST_P(SplitViewOverviewSessionTest, SplitViewOverviewBothActiveTest) { +TEST_F(SplitViewOverviewSessionTest, SplitViewOverviewBothActiveTest) { UpdateDisplay("907x407"); const gfx::Rect bounds(400, 400); @@ -5011,7 +5010,7 @@ // Verify that selecting an unsnappable window while in split view works as // intended. -TEST_P(SplitViewOverviewSessionTest, SelectUnsnappableWindowInSplitView) { +TEST_F(SplitViewOverviewSessionTest, SelectUnsnappableWindowInSplitView) { // Create one snappable and one unsnappable window. std::unique_ptr<aura::Window> window = CreateTestWindow(); std::unique_ptr<aura::Window> unsnappable_window = CreateUnsnappableWindow(); @@ -5070,7 +5069,7 @@ // Verify that when in overview mode, the selector items unsnappable indicator // shows up when expected. -TEST_P(SplitViewOverviewSessionTest, OverviewUnsnappableIndicatorVisibility) { +TEST_F(SplitViewOverviewSessionTest, OverviewUnsnappableIndicatorVisibility) { // Create three windows; two normal and one unsnappable, so that when after // snapping |window1| to enter split view we can test the state of each normal // and unsnappable windows. @@ -5115,7 +5114,7 @@ // Verify that during "normal" dragging from overview (not drag-to-close), the // dragged item's unsnappable indicator is temporarily suppressed. -TEST_P(SplitViewOverviewSessionTest, +TEST_F(SplitViewOverviewSessionTest, OverviewUnsnappableIndicatorVisibilityWhileDragging) { ui::GestureConfiguration* gesture_config = ui::GestureConfiguration::GetInstance(); @@ -5216,7 +5215,7 @@ } // Verify that an item's unsnappable indicator is updated for display rotation. -TEST_P(SplitViewOverviewSessionTest, +TEST_F(SplitViewOverviewSessionTest, OverviewUnsnappableIndicatorVisibilityAfterDisplayRotation) { UpdateDisplay("800x800"); std::unique_ptr<aura::Window> snapped_window = CreateTestWindow(); @@ -5253,7 +5252,7 @@ // Test that when splitview mode and overview mode are both active at the same // time, dragging divider behaviors are correct. -TEST_P(SplitViewOverviewSessionTest, DragDividerToExitTest) { +TEST_F(SplitViewOverviewSessionTest, DragDividerToExitTest) { UpdateDisplay("907x407"); const gfx::Rect bounds(400, 400); @@ -5301,7 +5300,7 @@ EXPECT_EQ(window2.get(), window_util::GetActiveWindow()); } -TEST_P(SplitViewOverviewSessionTest, OverviewItemLongPressed) { +TEST_F(SplitViewOverviewSessionTest, OverviewItemLongPressed) { std::unique_ptr<aura::Window> window1 = CreateTestWindow(); std::unique_ptr<aura::Window> window2 = CreateTestWindow(); @@ -5330,7 +5329,7 @@ EXPECT_EQ(window1.get(), window_util::GetActiveWindow()); } -TEST_P(SplitViewOverviewSessionTest, SnappedWindowBoundsTest) { +TEST_F(SplitViewOverviewSessionTest, SnappedWindowBoundsTest) { const gfx::Rect bounds(400, 400); const int kMinimumBoundSize = 100; const gfx::Size size(kMinimumBoundSize, kMinimumBoundSize); @@ -5397,7 +5396,7 @@ } // Test snapped window bounds with adjustment for the minimum size of a window. -TEST_P(SplitViewOverviewSessionTest, SnappedWindowBoundsWithMinimumSizeTest) { +TEST_F(SplitViewOverviewSessionTest, SnappedWindowBoundsWithMinimumSizeTest) { const gfx::Rect bounds(400, 400); std::unique_ptr<aura::Window> window1(CreateTestWindow(bounds)); const int work_area_length = @@ -5474,7 +5473,7 @@ // Verify that if the split view divider is dragged all the way to the edge, the // window being dragged gets returned to the overview list, if overview mode is // still active. -TEST_P(SplitViewOverviewSessionTest, +TEST_F(SplitViewOverviewSessionTest, DividerDraggedToEdgeReturnsWindowToOverviewList) { const gfx::Rect bounds(400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); @@ -5519,7 +5518,7 @@ // all the way to the opposite edge, then the split view window is reinserted // into the overview grid at the correct position according to MRU order, and // the stacking order is also correct. -TEST_P( +TEST_F( SplitViewOverviewSessionTest, SplitViewWindowReinsertedToOverviewAtCorrectPositionWhenSplitViewIsEnded) { const gfx::Rect bounds(400, 400); @@ -5579,7 +5578,7 @@ // another split view window, then the old split view window is reinserted into // the overview grid at the correct position according to MRU order, and the // stacking order is also correct. -TEST_P( +TEST_F( SplitViewOverviewSessionTest, SplitViewWindowReinsertedToOverviewAtCorrectPositionWhenAnotherWindowTakesItsPlace) { const gfx::Rect bounds(400, 400); @@ -5634,7 +5633,7 @@ // Verify that if the split view divider is dragged close to the edge, the grid // bounds will be fixed to a third of the work area width and start sliding off // the screen instead of continuing to shrink. -TEST_P(SplitViewOverviewSessionTest, +TEST_F(SplitViewOverviewSessionTest, OverviewHasMinimumBoundsWhenDividerDragged) { UpdateDisplay("600x400"); @@ -5691,7 +5690,7 @@ // Test that when splitview mode is active, minimizing one of the snapped window // will insert the minimized window back to overview mode if overview mode is // active at the moment. -TEST_P(SplitViewOverviewSessionTest, InsertMinimizedWindowBackToOverview) { +TEST_F(SplitViewOverviewSessionTest, InsertMinimizedWindowBackToOverview) { const gfx::Rect bounds(400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -5739,7 +5738,7 @@ // Test that when splitview and overview are both active at the same time, if // overview is ended due to snapping a window in splitview, the tranform of each // window in the overview grid is restored. -TEST_P(SplitViewOverviewSessionTest, SnappedWindowAnimationObserverTest) { +TEST_F(SplitViewOverviewSessionTest, SnappedWindowAnimationObserverTest) { const gfx::Rect bounds(400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -5827,7 +5826,7 @@ // Test that when split view and overview are both active at the same time, // double tapping on the divider can swap the window's position with the // overview window grid's postion. -TEST_P(SplitViewOverviewSessionTest, SwapWindowAndOverviewGrid) { +TEST_F(SplitViewOverviewSessionTest, SwapWindowAndOverviewGrid) { const gfx::Rect bounds(400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -5857,7 +5856,7 @@ } // Test that in tablet mode, pressing tab key in overview should not crash. -TEST_P(SplitViewOverviewSessionTest, NoCrashWhenPressTabKey) { +TEST_F(SplitViewOverviewSessionTest, NoCrashWhenPressTabKey) { std::unique_ptr<aura::Window> window(CreateWindow(gfx::Rect(400, 400))); std::unique_ptr<aura::Window> window2(CreateWindow(gfx::Rect(400, 400))); @@ -5878,7 +5877,7 @@ } // Tests closing a snapped window while in overview mode. -TEST_P(SplitViewOverviewSessionTest, ClosingSplitViewWindow) { +TEST_F(SplitViewOverviewSessionTest, ClosingSplitViewWindow) { const gfx::Rect bounds(400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -5901,7 +5900,7 @@ // Test that you cannot drag from overview during the split view divider // animation. -TEST_P(SplitViewOverviewSessionTest, +TEST_F(SplitViewOverviewSessionTest, CannotDragFromOverviewDuringSplitViewDividerAnimation) { std::unique_ptr<aura::Window> snapped_window = CreateTestWindow(); std::unique_ptr<aura::Window> overview_window = CreateTestWindow(); @@ -5929,7 +5928,7 @@ // Tests that a window which is dragged to a splitview zone is destroyed, the // grid bounds return to a non-splitview bounds. -TEST_P(SplitViewOverviewSessionTest, GridBoundsAfterWindowDestroyed) { +TEST_F(SplitViewOverviewSessionTest, GridBoundsAfterWindowDestroyed) { // Create two windows otherwise we exit overview after one window is // destroyed. std::unique_ptr<aura::Window> window1 = CreateTestWindow(); @@ -5953,7 +5952,7 @@ } // Tests that overview stays active if we have a snapped window. -TEST_P(SplitViewOverviewSessionTest, OnScreenLock) { +TEST_F(SplitViewOverviewSessionTest, OnScreenLock) { std::unique_ptr<aura::Window> window1 = CreateTestWindow(); std::unique_ptr<aura::Window> window2 = CreateTestWindow(); @@ -5977,7 +5976,7 @@ // Verify that selecting an minimized snappable window while in split view // triggers auto snapping. -TEST_P(SplitViewOverviewSessionTest, +TEST_F(SplitViewOverviewSessionTest, SelectMinimizedSnappableWindowInSplitView) { // Create two snappable windows. std::unique_ptr<aura::Window> snapped_window = CreateTestWindow(); @@ -6019,7 +6018,7 @@ // Verify no crash (or DCHECK failure) if you exit and re-enter mirror mode // while in tablet split view with empty overview. -TEST_P(SplitViewOverviewSessionTest, +TEST_F(SplitViewOverviewSessionTest, ExitAndReenterMirrorModeWithEmptyOverview) { UpdateDisplay("800x600,800x600"); std::unique_ptr<aura::Window> window = CreateTestWindow(); @@ -6039,8 +6038,6 @@ // AshTestBase: void SetUp() override { - scoped_feature_list_.InitAndEnableFeature( - features::kDragToSnapInClamshellMode); OverviewSessionTest::SetUp(); Shell::Get()->tablet_mode_controller()->SetEnabledForTest(false); DCHECK(ShouldAllowSplitView()); @@ -6067,12 +6064,11 @@ DISALLOW_COPY_AND_ASSIGN(TestWindowHitTestDelegate); }; - base::test::ScopedFeatureList scoped_feature_list_; DISALLOW_COPY_AND_ASSIGN(SplitViewOverviewSessionInClamshellTest); }; // Test some basic functionalities in clamshell splitview mode. -TEST_P(SplitViewOverviewSessionInClamshellTest, BasicFunctionalitiesTest) { +TEST_F(SplitViewOverviewSessionInClamshellTest, BasicFunctionalitiesTest) { UpdateDisplay("600x400"); EXPECT_FALSE(Shell::Get()->tablet_mode_controller()->InTabletMode()); @@ -6220,7 +6216,7 @@ // Test overview exit animation histograms when you drag to snap two windows on // opposite sides. -TEST_P(SplitViewOverviewSessionInClamshellTest, +TEST_F(SplitViewOverviewSessionInClamshellTest, BothSnappedOverviewExitAnimationHistogramTest) { ui::ScopedAnimationDurationScaleMode anmatin_scale( ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); @@ -6245,7 +6241,7 @@ // Test that when overview and splitview are both active, only resize that // happens on eligible window components will change snapped window bounds and // overview bounds at the same time. -TEST_P(SplitViewOverviewSessionInClamshellTest, ResizeWindowTest) { +TEST_F(SplitViewOverviewSessionInClamshellTest, ResizeWindowTest) { UpdateDisplay("600x400"); const gfx::Rect bounds(400, 400); std::unique_ptr<aura::Window> window1( @@ -6383,7 +6379,7 @@ } // Test closing the split view window while resizing it. -TEST_P(SplitViewOverviewSessionInClamshellTest, +TEST_F(SplitViewOverviewSessionInClamshellTest, CloseWindowWhileResizingItTest) { UpdateDisplay("600x400"); const gfx::Rect bounds(400, 400); @@ -6434,7 +6430,7 @@ // Tests that when a split view window carries over to clamshell split view // while the divider is being dragged, the window resize is properly completed. -TEST_P(SplitViewOverviewSessionInClamshellTest, +TEST_F(SplitViewOverviewSessionInClamshellTest, CarryOverToClamshellSplitViewWhileResizing) { std::unique_ptr<aura::Window> snapped_window = CreateTestWindow(); std::unique_ptr<aura::Window> overview_window = CreateTestWindow(); @@ -6476,7 +6472,7 @@ // Test that overview and clamshell split view end if you double click the edge // of the split view window where it meets the overview grid. -TEST_P(SplitViewOverviewSessionInClamshellTest, HorizontalMaximizeTest) { +TEST_F(SplitViewOverviewSessionInClamshellTest, HorizontalMaximizeTest) { const gfx::Rect bounds(400, 400); std::unique_ptr<aura::Window> snapped_window( CreateWindowWithHitTestComponent(HTRIGHT, bounds)); @@ -6494,7 +6490,7 @@ // Test that when laptop splitview mode is active, moving the snapped window // will end splitview and overview at the same time. -TEST_P(SplitViewOverviewSessionInClamshellTest, MoveWindowTest) { +TEST_F(SplitViewOverviewSessionInClamshellTest, MoveWindowTest) { const gfx::Rect bounds(400, 400); std::unique_ptr<aura::Window> window1( CreateWindowWithHitTestComponent(HTCAPTION, bounds)); @@ -6516,7 +6512,7 @@ // Test that in clamshell splitview mode, if the snapped window is minimized, // splitview mode and overview mode are both ended. -TEST_P(SplitViewOverviewSessionInClamshellTest, MinimizedWindowTest) { +TEST_F(SplitViewOverviewSessionInClamshellTest, MinimizedWindowTest) { const gfx::Rect bounds(400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -6535,7 +6531,7 @@ } // Test snapped window bounds with adjustment for the minimum size of a window. -TEST_P(SplitViewOverviewSessionInClamshellTest, +TEST_F(SplitViewOverviewSessionInClamshellTest, SnappedWindowBoundsWithMinimumSizeTest) { const gfx::Rect bounds(400, 400); std::unique_ptr<aura::Window> window1( @@ -6603,7 +6599,7 @@ // Tests that on a display in portrait orientation, clamshell split view still // uses snap positions on the left and right. -TEST_P(SplitViewOverviewSessionInClamshellTest, +TEST_F(SplitViewOverviewSessionInClamshellTest, PortraitClamshellSplitViewSnapPositionsTest) { UpdateDisplay("800x600/l"); const int height = 800 - ShelfConfig::Get()->shelf_size(); @@ -6644,7 +6640,7 @@ // Tests that the ratio between the divider position and the work area width is // the same before and after changing the display orientation in clamshell mode. -TEST_P(SplitViewOverviewSessionInClamshellTest, DisplayOrientationChangeTest) { +TEST_F(SplitViewOverviewSessionInClamshellTest, DisplayOrientationChangeTest) { UpdateDisplay("600x400"); const gfx::Rect bounds(400, 400); std::unique_ptr<aura::Window> split_view_window( @@ -6690,7 +6686,7 @@ } // Verify that an item's unsnappable indicator is updated for display rotation. -TEST_P(SplitViewOverviewSessionInClamshellTest, +TEST_F(SplitViewOverviewSessionInClamshellTest, OverviewUnsnappableIndicatorVisibilityAfterDisplayRotation) { UpdateDisplay("900x600"); std::unique_ptr<aura::Window> snapped_window = CreateTestWindow(); @@ -6727,7 +6723,7 @@ // Tests that dragging a window from overview creates a drop target on the same // display, even if the window bounds are mostly on another display. -TEST_P(SplitViewOverviewSessionInClamshellTest, +TEST_F(SplitViewOverviewSessionInClamshellTest, DragFromOverviewWithBoundsMostlyOnAnotherDisplay) { UpdateDisplay("600x600,600x600"); const aura::Window::Windows root_windows = Shell::Get()->GetAllRootWindows(); @@ -6767,7 +6763,7 @@ } // Tests that Alt+[ and Alt+] do not start overview. -TEST_P(SplitViewOverviewSessionInClamshellTest, +TEST_F(SplitViewOverviewSessionInClamshellTest, AltSquareBracketNotStartOverview) { std::unique_ptr<aura::Window> window1 = CreateTestWindow(); std::unique_ptr<aura::Window> window2 = CreateTestWindow(); @@ -6790,7 +6786,7 @@ } // Tests using Alt+[ on a left split view window. -TEST_P(SplitViewOverviewSessionInClamshellTest, +TEST_F(SplitViewOverviewSessionInClamshellTest, AltLeftSquareBracketOnLeftSplitViewWindow) { std::unique_ptr<aura::Window> snapped_window = CreateTestWindow(); std::unique_ptr<aura::Window> overview_window = CreateTestWindow(); @@ -6810,7 +6806,7 @@ } // Tests using Alt+] on a right split view window. -TEST_P(SplitViewOverviewSessionInClamshellTest, +TEST_F(SplitViewOverviewSessionInClamshellTest, AltRightSquareBracketOnRightSplitViewWindow) { std::unique_ptr<aura::Window> snapped_window = CreateTestWindow(); std::unique_ptr<aura::Window> overview_window = CreateTestWindow(); @@ -6831,7 +6827,7 @@ // Tests using Alt+[ on a right split view window, and Alt+] on a left split // view window. -TEST_P(SplitViewOverviewSessionInClamshellTest, +TEST_F(SplitViewOverviewSessionInClamshellTest, AltSquareBracketOnSplitViewWindow) { std::unique_ptr<aura::Window> snapped_window = CreateTestWindow(); std::unique_ptr<aura::Window> overview_window = CreateTestWindow(); @@ -6873,7 +6869,7 @@ SplitViewOverviewSessionInClamshellTest; // Test |SplitViewController::Get|. -TEST_P(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, +TEST_F(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, GetSplitViewController) { UpdateDisplay("800x600,800x600"); aura::Window::Windows root_windows = Shell::GetAllRootWindows(); @@ -6889,7 +6885,7 @@ } // Test |SplitViewController::GetSnappedWindowBoundsInScreen|. -TEST_P(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, +TEST_F(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, GetSnappedBounds) { UpdateDisplay("800x600,800x600"); aura::Window::Windows root_windows = Shell::GetAllRootWindows(); @@ -6927,7 +6923,7 @@ // Test that if clamshell split view is started by snapping a window that is the // only overview window, then split view ends as soon as it starts, and overview // ends along with it. -TEST_P(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, +TEST_F(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, SplitViewEndsImmediatelyIfOverviewIsEmpty) { UpdateDisplay("800x600,800x600"); aura::Window::Windows root_windows = Shell::GetAllRootWindows(); @@ -6946,7 +6942,7 @@ // stays active (instead of ending as soon as it starts), and overview also // stays active. Then close the overview window and verify that split view and // overview are ended. -TEST_P(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, +TEST_F(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, SplitViewViableWithOverviewWindowOnOtherDisplay) { UpdateDisplay("800x600,800x600"); aura::Window::Windows root_windows = Shell::GetAllRootWindows(); @@ -6966,7 +6962,7 @@ } // Test dragging to snap an overview item on an external display. -TEST_P(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, +TEST_F(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, DraggingOnExternalDisplay) { UpdateDisplay("800x600,800x600"); aura::Window::Windows root_windows = Shell::GetAllRootWindows(); @@ -7025,7 +7021,7 @@ } // Test dragging from one display to another. -TEST_P(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, +TEST_F(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, MultiDisplayDragging) { wm::CursorManager* cursor_manager = Shell::Get()->cursor_manager(); UpdateDisplay("800x600,800x600"); @@ -7155,7 +7151,7 @@ } // Verify the drop target positions for multi-display dragging. -TEST_P(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, +TEST_F(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, DropTargetPositionTest) { wm::CursorManager* cursor_manager = Shell::Get()->cursor_manager(); UpdateDisplay("800x600,800x600"); @@ -7201,7 +7197,7 @@ // Verify that the drop target in each overview grid has the correct bounds when // a maximized window is being dragged. -TEST_P(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, +TEST_F(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, DropTargetBoundsForMaximizedWindowDraggedToOtherDisplay) { UpdateDisplay("1000x400,1000x400/l"); std::unique_ptr<aura::Window> window = CreateTestWindow(); @@ -7235,7 +7231,7 @@ // Verify that the drop target in each overview grid has bounds representing // anticipation that if the dragged window is dropped into that grid, it will // shrink to fit into the corresponding work area. -TEST_P(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, +TEST_F(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, DropTargetBoundsOnDisplayWhereDraggedWindowDoesNotFitIntoWorkArea) { UpdateDisplay("600x600,1200x1200"); // Drags |item| from the right display to the left display and back, and @@ -7294,7 +7290,7 @@ } // Test dragging from one overview grid and dropping into another overview grid. -TEST_P(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, +TEST_F(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, DragAndDropIntoAnotherOverviewGrid) { UpdateDisplay("800x600,800x600"); aura::Window::Windows root_windows = Shell::GetAllRootWindows(); @@ -7329,7 +7325,7 @@ // Test that overview widgets are stacked in the correct order after an overview // window is dragged from one overview grid and dropped into another. Also test // that the destination overview grid is arranged in the correct order. -TEST_P(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, +TEST_F(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, OverviewWidgetStackingOrderAndGridOrderWithMultiDisplayDragging) { UpdateDisplay("800x600,800x600"); aura::Window::Windows root_windows = Shell::GetAllRootWindows(); @@ -7396,7 +7392,7 @@ } // Test dragging from one display to another and then snapping. -TEST_P(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, +TEST_F(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, DragFromOneDisplayToAnotherAndSnap) { UpdateDisplay("800x600,800x600"); aura::Window::Windows root_windows = Shell::GetAllRootWindows(); @@ -7428,7 +7424,7 @@ // Verify that window resizing performance is recorded to the correct histogram // depending on whether the overview grid is empty. -TEST_P(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, +TEST_F(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, WindowResizingPerformanceHistogramsTest) { UpdateDisplay("800x600,800x600"); aura::Window::Windows root_windows = Shell::GetAllRootWindows(); @@ -7472,7 +7468,7 @@ // recorded to the histogram, but this test does provide evidence of timing // accuracy as the time in multi-display split view is measured from the time // when the user action "SplitView_MultiDisplaySplitView" is recorded. -TEST_P(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, +TEST_F(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, MultiDisplaySplitViewMetrics) { base::UserActionTester user_action_tester; base::HistogramTester histogram_tester; @@ -7553,7 +7549,7 @@ // of the window fits into the left or top, with the default divider position. // (If the work area length is odd, then the right or bottom will be one pixel // larger.) -TEST_P(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, +TEST_F(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, SnapWindowWithMinimumSizeTest) { // The divider is 8 thick. For the default divider position, the remaining 792 // of the work area on the first root window is divided into 396 on each side, @@ -7603,7 +7599,7 @@ // Verify that when in overview mode, the selector items unsnappable indicator // shows up when expected. -TEST_P(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, +TEST_F(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, OverviewUnsnappableIndicatorVisibility) { UpdateDisplay("800x600,800x600"); aura::Window::Windows root_windows = Shell::GetAllRootWindows(); @@ -7675,7 +7671,7 @@ // Test that enabling the docked magnifier ends clamshell split view on all // displays. -TEST_P(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, +TEST_F(SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, DockedMagnifierEndsClamshellSplitView) { UpdateDisplay("800x600,800x600"); aura::Window::Windows root_windows = Shell::GetAllRootWindows(); @@ -7699,15 +7695,4 @@ EXPECT_FALSE(SplitViewController::Get(root_windows[1])->InSplitViewMode()); } -INSTANTIATE_TEST_SUITE_P(All, OverviewSessionTest, testing::Bool()); -INSTANTIATE_TEST_SUITE_P(All, TabletModeOverviewSessionTest, testing::Bool()); -INSTANTIATE_TEST_SUITE_P(All, SplitViewOverviewSessionTest, testing::Bool()); -INSTANTIATE_TEST_SUITE_P(All, - SplitViewOverviewSessionInClamshellTest, - testing::Bool()); -INSTANTIATE_TEST_SUITE_P( - All, - SplitViewOverviewSessionInClamshellTestMultiDisplayOnly, - testing::Values(true)); - } // namespace ash
diff --git a/ash/wm/overview/overview_window_drag_controller.cc b/ash/wm/overview/overview_window_drag_controller.cc index 0b213f3..e942991 100644 --- a/ash/wm/overview/overview_window_drag_controller.cc +++ b/ash/wm/overview/overview_window_drag_controller.cc
@@ -194,9 +194,7 @@ display_count_(Shell::GetAllRootWindows().size()), is_touch_dragging_(is_touch_dragging), should_allow_split_view_(ShouldAllowSplitView()), - virtual_desks_bar_enabled_(GetVirtualDesksBarEnabled(item)), - are_multi_display_overview_and_splitview_enabled_( - AreMultiDisplayOverviewAndSplitViewEnabled()) { + virtual_desks_bar_enabled_(GetVirtualDesksBarEnabled(item)) { DCHECK(!Shell::Get()->overview_controller()->IsInStartAnimation()); DCHECK(!SplitViewController::Get(Shell::GetPrimaryRootWindow()) ->IsDividerAnimating()); @@ -282,10 +280,8 @@ did_move_ = true; current_drag_behavior_ = DragBehavior::kNormalDrag; - if (are_multi_display_overview_and_splitview_enabled_) { - Shell::Get()->mouse_cursor_filter()->ShowSharedEdgeIndicator( - item_->root_window()); - } + Shell::Get()->mouse_cursor_filter()->ShowSharedEdgeIndicator( + item_->root_window()); const gfx::SizeF window_original_size(item_->GetWindow()->bounds().size()); item_->ScaleUpSelectedItem( OVERVIEW_ANIMATION_LAYOUT_OVERVIEW_ITEMS_IN_OVERVIEW); @@ -399,10 +395,8 @@ if (current_drag_behavior_ == DragBehavior::kNormalDrag) { DCHECK(item_->overview_grid()->drop_target_widget()); - if (are_multi_display_overview_and_splitview_enabled_) { - Shell::Get()->mouse_cursor_filter()->HideSharedEdgeIndicator(); - item_->DestroyPhantomsForDragging(); - } + Shell::Get()->mouse_cursor_filter()->HideSharedEdgeIndicator(); + item_->DestroyPhantomsForDragging(); overview_session_->RemoveDropTargets(); if (should_allow_split_view_) { SplitViewController::Get(Shell::GetPrimaryRootWindow()) @@ -566,18 +560,15 @@ // portrait orientation in tablet mode. overview_grid->MaybeUpdateDesksWidgetBounds(); } - if (are_multi_display_overview_and_splitview_enabled_) { - OverviewGrid* overview_grid = - overview_session_->GetGridWithRootWindow(GetRootWindowBeingDraggedIn()); - if (!overview_grid->GetDropTarget() && - (!should_allow_split_view_ || - SplitViewDragIndicators::GetSnapPosition( - overview_grid->split_view_drag_indicators() - ->current_window_dragging_state()) == - SplitViewController::NONE)) { - overview_grid->AddDropTargetNotForDraggingFromThisGrid(item_->GetWindow(), - /*animate=*/true); - } + + if (!overview_grid->GetDropTarget() && + (!should_allow_split_view_ || + SplitViewDragIndicators::GetSnapPosition( + overview_grid->split_view_drag_indicators() + ->current_window_dragging_state()) == + SplitViewController::NONE)) { + overview_grid->AddDropTargetNotForDraggingFromThisGrid(item_->GetWindow(), + /*animate=*/true); } overview_session_->UpdateDropTargetsBackgroundVisibilities( item_, location_in_screen); @@ -585,7 +576,7 @@ bounds.set_x(centerpoint.x() - bounds.width() / 2.f); bounds.set_y(centerpoint.y() - bounds.height() / 2.f); item_->SetBounds(bounds, OVERVIEW_ANIMATION_NONE); - if (are_multi_display_overview_and_splitview_enabled_ && display_count_ > 1u) + if (display_count_ > 1u) item_->UpdatePhantomsForDragging(is_touch_dragging_); } @@ -595,10 +586,8 @@ DCHECK_EQ(current_drag_behavior_, DragBehavior::kNormalDrag); auto* item_overview_grid = item_->overview_grid(); DCHECK(item_overview_grid->drop_target_widget()); - if (are_multi_display_overview_and_splitview_enabled_) { - Shell::Get()->mouse_cursor_filter()->HideSharedEdgeIndicator(); - item_->DestroyPhantomsForDragging(); - } + Shell::Get()->mouse_cursor_filter()->HideSharedEdgeIndicator(); + item_->DestroyPhantomsForDragging(); overview_session_->RemoveDropTargets(); const gfx::Point rounded_screen_point = @@ -634,9 +623,7 @@ })}; aura::Window* target_root = GetRootWindowBeingDraggedIn(); - const bool is_dragged_to_other_display = - AreMultiDisplayOverviewAndSplitViewEnabled() && - target_root != item_->root_window(); + const bool is_dragged_to_other_display = target_root != item_->root_window(); if (virtual_desks_bar_enabled_) { item_->SetOpacity(original_opacity_); @@ -770,10 +757,8 @@ } OverviewGrid* OverviewWindowDragController::GetCurrentGrid() const { - return are_multi_display_overview_and_splitview_enabled_ - ? overview_session_->GetGridWithRootWindow( - GetRootWindowBeingDraggedIn()) - : item_->overview_grid(); + return overview_session_->GetGridWithRootWindow( + GetRootWindowBeingDraggedIn()); } void OverviewWindowDragController::RecordNormalDrag(
diff --git a/ash/wm/overview/overview_window_drag_controller.h b/ash/wm/overview/overview_window_drag_controller.h index b1a4db3..dc3f9aa 100644 --- a/ash/wm/overview/overview_window_drag_controller.h +++ b/ash/wm/overview/overview_window_drag_controller.h
@@ -220,8 +220,6 @@ // True if the Virtual Desks bar is created and dragging to desks is enabled. const bool virtual_desks_bar_enabled_; - const bool are_multi_display_overview_and_splitview_enabled_; - // The opacity of |item_| changes if we are in drag to close mode. Store the // original opacity of |item_| and restore it to the item when we leave drag // to close mode.
diff --git a/ash/wm/overview/overview_window_drag_controller_unittest.cc b/ash/wm/overview/overview_window_drag_controller_unittest.cc index 372f1585..4aab5446 100644 --- a/ash/wm/overview/overview_window_drag_controller_unittest.cc +++ b/ash/wm/overview/overview_window_drag_controller_unittest.cc
@@ -98,87 +98,6 @@ } // namespace -// Tests the behavior of window dragging in overview when the Clamshell -// SplitView feature is disabled. -class NoClamshellSplitViewTest : public AshTestBase { - public: - NoClamshellSplitViewTest() { - scoped_feature_list_.InitAndDisableFeature( - features::kDragToSnapInClamshellMode); - } - ~NoClamshellSplitViewTest() override = default; - - private: - base::test::ScopedFeatureList scoped_feature_list_; - - DISALLOW_COPY_AND_ASSIGN(NoClamshellSplitViewTest); -}; - -TEST_F(NoClamshellSplitViewTest, NormalDragIsNotPossible) { - auto window = CreateAppWindow(gfx::Rect(0, 0, 250, 100)); - wm::ActivateWindow(window.get()); - EXPECT_EQ(window.get(), window_util::GetActiveWindow()); - auto* overview_controller = Shell::Get()->overview_controller(); - overview_controller->StartOverview(); - EXPECT_TRUE(overview_controller->InOverviewSession()); - auto* overview_session = overview_controller->overview_session(); - auto* overview_item = - overview_session->GetOverviewItemForWindow(window.get()); - ASSERT_TRUE(overview_item); - - auto* event_generator = GetEventGenerator(); - // Drag the item by an enough amount in X that would normally trigger the - // normal drag mode. - StartDraggingItemBy(overview_item, 50, 0, /*by_touch_gestures=*/true, - event_generator); - OverviewWindowDragController* drag_controller = - overview_session->window_drag_controller(); - EXPECT_EQ(OverviewWindowDragController::DragBehavior::kUndefined, - drag_controller->current_drag_behavior()); - - // Drop the window, and expect that overview mode exits and the window is - // activated. - event_generator->ReleaseTouch(); - EXPECT_FALSE(overview_controller->InOverviewSession()); - EXPECT_EQ(window.get(), window_util::GetActiveWindow()); -} - -TEST_F(NoClamshellSplitViewTest, CanDoDragToClose) { - auto window = CreateAppWindow(gfx::Rect(0, 0, 250, 100)); - wm::ActivateWindow(window.get()); - EXPECT_EQ(window.get(), window_util::GetActiveWindow()); - auto* overview_controller = Shell::Get()->overview_controller(); - overview_controller->StartOverview(); - EXPECT_TRUE(overview_controller->InOverviewSession()); - auto* overview_session = overview_controller->overview_session(); - auto* overview_item = - overview_session->GetOverviewItemForWindow(window.get()); - ASSERT_TRUE(overview_item); - - auto* event_generator = GetEventGenerator(); - // Dragging with a bigger Y-component than X should trigger the drag-to-close - // mode. - StartDraggingItemBy(overview_item, 30, 50, /*by_touch_gestures=*/true, - event_generator); - OverviewWindowDragController* drag_controller = - overview_session->window_drag_controller(); - EXPECT_EQ(OverviewWindowDragController::DragBehavior::kDragToClose, - drag_controller->current_drag_behavior()); - - // Continue dragging vertically and drop. Expect that overview exists since - // it's the only window on the grid. - event_generator->MoveMouseBy(0, 200); - // release() the window as it will be closed and destroyed when we drop it. - aura::Window* window_ptr = window.release(); - WindowCloseWaiter waiter{window_ptr}; - event_generator->ReleaseTouch(); - waiter.Wait(); - EXPECT_FALSE(overview_controller->InOverviewSession()); - EXPECT_FALSE(base::Contains( - Shell::Get()->mru_window_tracker()->BuildMruWindowList(kAllDesks), - window_ptr)); -} - using OverviewWindowDragControllerTest = AshTestBase; TEST_F(OverviewWindowDragControllerTest, NoDragToCloseUsingMouse) {
diff --git a/ash/wm/overview/overview_window_drag_histogram_unittests.cc b/ash/wm/overview/overview_window_drag_histogram_unittests.cc index 9de94da0..a41a650 100644 --- a/ash/wm/overview/overview_window_drag_histogram_unittests.cc +++ b/ash/wm/overview/overview_window_drag_histogram_unittests.cc
@@ -7,6 +7,7 @@ #include "ash/public/cpp/ash_features.h" #include "ash/shell.h" +#include "ash/test/ash_test_base.h" #include "ash/wm/desks/desk_mini_view.h" #include "ash/wm/desks/desks_bar_view.h" #include "ash/wm/desks/desks_controller.h" @@ -17,7 +18,6 @@ #include "ash/wm/overview/overview_session.h" #include "ash/wm/overview/overview_test_util.h" #include "ash/wm/overview/overview_window_drag_controller.h" -#include "ash/wm/splitview/multi_display_overview_and_split_view_test.h" #include "ash/wm/tablet_mode/tablet_mode_controller.h" #include "ash/wm/tablet_mode/tablet_mode_controller_test_api.h" #include "base/callback_forward.h" @@ -40,8 +40,7 @@ namespace ash { -class OverviewWindowDragHistogramTest - : public MultiDisplayOverviewAndSplitViewTest { +class OverviewWindowDragHistogramTest : public AshTestBase { public: OverviewWindowDragHistogramTest() = default; ~OverviewWindowDragHistogramTest() override = default; @@ -51,18 +50,13 @@ const OverviewWindowDragHistogramTest&) = delete; void SetUp() override { - // Always enable |features::kDragToSnapInClamshellMode|. When the test - // parameter value is true, |features::kMultiDisplayOverviewAndSplitView| is - // enabled too (see |MultiDisplayOverviewAndSplitViewTest|). - scoped_feature_list_.InitAndEnableFeature( - features::kDragToSnapInClamshellMode); - MultiDisplayOverviewAndSplitViewTest::SetUp(); + AshTestBase::SetUp(); window_ = CreateAppWindow(); } void TearDown() override { window_.reset(); - MultiDisplayOverviewAndSplitViewTest::TearDown(); + AshTestBase::TearDown(); } protected: @@ -141,25 +135,24 @@ private: base::HistogramTester histogram_tester_; - base::test::ScopedFeatureList scoped_feature_list_; std::unique_ptr<aura::Window> window_; }; -TEST_P(OverviewWindowDragHistogramTest, ToGridSameDisplayClamshellMouse) { +TEST_F(OverviewWindowDragHistogramTest, ToGridSameDisplayClamshellMouse) { ui::test::EventGenerator* generator = GetEventGenerator(); generator->MoveMouseTo(EnterOverviewAndGetItemCenterPoint()); generator->DragMouseBy(5, 0); ExpectDragRecorded(OverviewDragAction::kToGridSameDisplayClamshellMouse); } -TEST_P(OverviewWindowDragHistogramTest, ToGridSameDisplayClamshellTouch) { +TEST_F(OverviewWindowDragHistogramTest, ToGridSameDisplayClamshellTouch) { ui::test::EventGenerator* generator = GetEventGenerator(); generator->set_current_screen_location(EnterOverviewAndGetItemCenterPoint()); generator->PressMoveAndReleaseTouchBy(20, 0); ExpectDragRecorded(OverviewDragAction::kToGridSameDisplayClamshellTouch); } -TEST_P(OverviewWindowDragHistogramTest, ToDeskSameDisplayClamshellMouse) { +TEST_F(OverviewWindowDragHistogramTest, ToDeskSameDisplayClamshellMouse) { DesksController::Get()->NewDesk(DesksCreationRemovalSource::kButton); ui::test::EventGenerator* generator = GetEventGenerator(); generator->MoveMouseTo(EnterOverviewAndGetItemCenterPoint()); @@ -167,7 +160,7 @@ ExpectDragRecorded(OverviewDragAction::kToDeskSameDisplayClamshellMouse); } -TEST_P(OverviewWindowDragHistogramTest, ToDeskSameDisplayClamshellTouch) { +TEST_F(OverviewWindowDragHistogramTest, ToDeskSameDisplayClamshellTouch) { DesksController::Get()->NewDesk(DesksCreationRemovalSource::kButton); ui::test::EventGenerator* generator = GetEventGenerator(); generator->set_current_screen_location(EnterOverviewAndGetItemCenterPoint()); @@ -176,54 +169,54 @@ ExpectDragRecorded(OverviewDragAction::kToDeskSameDisplayClamshellTouch); } -TEST_P(OverviewWindowDragHistogramTest, ToSnapSameDisplayClamshellMouse) { +TEST_F(OverviewWindowDragHistogramTest, ToSnapSameDisplayClamshellMouse) { ui::test::EventGenerator* generator = GetEventGenerator(); generator->MoveMouseTo(EnterOverviewAndGetItemCenterPoint()); generator->DragMouseTo(0, 300); ExpectDragRecorded(OverviewDragAction::kToSnapSameDisplayClamshellMouse); } -TEST_P(OverviewWindowDragHistogramTest, ToSnapSameDisplayClamshellTouch) { +TEST_F(OverviewWindowDragHistogramTest, ToSnapSameDisplayClamshellTouch) { ui::test::EventGenerator* generator = GetEventGenerator(); generator->set_current_screen_location(EnterOverviewAndGetItemCenterPoint()); generator->PressMoveAndReleaseTouchTo(0, 300); ExpectDragRecorded(OverviewDragAction::kToSnapSameDisplayClamshellTouch); } -TEST_P(OverviewWindowDragHistogramTest, SwipeToCloseSuccessfulClamshellTouch) { +TEST_F(OverviewWindowDragHistogramTest, SwipeToCloseSuccessfulClamshellTouch) { EnterOverviewAndSwipeItemDown(180u); ExpectDragRecorded(OverviewDragAction::kSwipeToCloseSuccessfulClamshellTouch); } -TEST_P(OverviewWindowDragHistogramTest, SwipeToCloseCanceledClamshellTouch) { +TEST_F(OverviewWindowDragHistogramTest, SwipeToCloseCanceledClamshellTouch) { EnterOverviewAndSwipeItemDown(20u); ExpectDragRecorded(OverviewDragAction::kSwipeToCloseCanceledClamshellTouch); } -TEST_P(OverviewWindowDragHistogramTest, SwipeToCloseSuccessfulTabletTouch) { +TEST_F(OverviewWindowDragHistogramTest, SwipeToCloseSuccessfulTabletTouch) { EnterTablet(); EnterOverviewAndSwipeItemDown(180u); ExpectDragRecorded(OverviewDragAction::kSwipeToCloseSuccessfulTabletTouch); } -TEST_P(OverviewWindowDragHistogramTest, SwipeToCloseCanceledTabletTouch) { +TEST_F(OverviewWindowDragHistogramTest, SwipeToCloseCanceledTabletTouch) { EnterTablet(); EnterOverviewAndSwipeItemDown(20u); ExpectDragRecorded(OverviewDragAction::kSwipeToCloseCanceledTabletTouch); } -TEST_P(OverviewWindowDragHistogramTest, FlingToCloseClamshellTouch) { +TEST_F(OverviewWindowDragHistogramTest, FlingToCloseClamshellTouch) { EnterOverviewAndFlingItemDown(); ExpectDragRecorded(OverviewDragAction::kFlingToCloseClamshellTouch); } -TEST_P(OverviewWindowDragHistogramTest, FlingToCloseTabletTouch) { +TEST_F(OverviewWindowDragHistogramTest, FlingToCloseTabletTouch) { EnterTablet(); EnterOverviewAndFlingItemDown(); ExpectDragRecorded(OverviewDragAction::kFlingToCloseTabletTouch); } -TEST_P(OverviewWindowDragHistogramTest, ToGridSameDisplayTabletTouch) { +TEST_F(OverviewWindowDragHistogramTest, ToGridSameDisplayTabletTouch) { EnterTabletAndOverviewAndLongPressItem(); ui::test::EventGenerator* generator = GetEventGenerator(); generator->MoveTouchBy(20, 0); @@ -231,7 +224,7 @@ ExpectDragRecorded(OverviewDragAction::kToGridSameDisplayTabletTouch); } -TEST_P(OverviewWindowDragHistogramTest, ToDeskSameDisplayTabletTouch) { +TEST_F(OverviewWindowDragHistogramTest, ToDeskSameDisplayTabletTouch) { DesksController::Get()->NewDesk(DesksCreationRemovalSource::kButton); EnterTabletAndOverviewAndLongPressItem(); ui::test::EventGenerator* generator = GetEventGenerator(); @@ -240,7 +233,7 @@ ExpectDragRecorded(OverviewDragAction::kToDeskSameDisplayTabletTouch); } -TEST_P(OverviewWindowDragHistogramTest, ToSnapSameDisplayTabletTouch) { +TEST_F(OverviewWindowDragHistogramTest, ToSnapSameDisplayTabletTouch) { EnterTabletAndOverviewAndLongPressItem(); ui::test::EventGenerator* generator = GetEventGenerator(); generator->MoveTouch(gfx::Point(0, 300)); @@ -248,7 +241,7 @@ ExpectDragRecorded(OverviewDragAction::kToSnapSameDisplayTabletTouch); } -TEST_P(OverviewWindowDragHistogramTest, ToGridSameDisplayTabletMouse) { +TEST_F(OverviewWindowDragHistogramTest, ToGridSameDisplayTabletMouse) { EnterTablet(); ui::test::EventGenerator* generator = GetEventGenerator(); generator->MoveMouseTo(EnterOverviewAndGetItemCenterPoint()); @@ -256,7 +249,7 @@ ExpectNoDragRecorded(); } -TEST_P(OverviewWindowDragHistogramTest, ToDeskSameDisplayTabletMouse) { +TEST_F(OverviewWindowDragHistogramTest, ToDeskSameDisplayTabletMouse) { DesksController::Get()->NewDesk(DesksCreationRemovalSource::kButton); EnterTablet(); ui::test::EventGenerator* generator = GetEventGenerator(); @@ -265,7 +258,7 @@ ExpectNoDragRecorded(); } -TEST_P(OverviewWindowDragHistogramTest, ToSnapSameDisplayTabletMouse) { +TEST_F(OverviewWindowDragHistogramTest, ToSnapSameDisplayTabletMouse) { EnterTablet(); ui::test::EventGenerator* generator = GetEventGenerator(); generator->MoveMouseTo(EnterOverviewAndGetItemCenterPoint()); @@ -276,7 +269,7 @@ using OverviewWindowDragHistogramTestMultiDisplayOnly = OverviewWindowDragHistogramTest; -TEST_P(OverviewWindowDragHistogramTestMultiDisplayOnly, +TEST_F(OverviewWindowDragHistogramTestMultiDisplayOnly, ToGridOtherDisplayClamshellMouse) { UpdateDisplay("800x600,800x600"); ui::test::EventGenerator* generator = GetEventGenerator(); @@ -288,7 +281,7 @@ ExpectDragRecorded(OverviewDragAction::kToGridOtherDisplayClamshellMouse); } -TEST_P(OverviewWindowDragHistogramTestMultiDisplayOnly, +TEST_F(OverviewWindowDragHistogramTestMultiDisplayOnly, ToDeskOtherDisplayClamshellMouse) { UpdateDisplay("800x600,800x600"); DesksController::Get()->NewDesk(DesksCreationRemovalSource::kButton); @@ -301,7 +294,7 @@ ExpectDragRecorded(OverviewDragAction::kToDeskOtherDisplayClamshellMouse); } -TEST_P(OverviewWindowDragHistogramTestMultiDisplayOnly, +TEST_F(OverviewWindowDragHistogramTestMultiDisplayOnly, ToSnapOtherDisplayClamshellMouse) { UpdateDisplay("800x600,800x600"); ui::test::EventGenerator* generator = GetEventGenerator(); @@ -313,9 +306,4 @@ ExpectDragRecorded(OverviewDragAction::kToSnapOtherDisplayClamshellMouse); } -INSTANTIATE_TEST_SUITE_P(All, OverviewWindowDragHistogramTest, testing::Bool()); -INSTANTIATE_TEST_SUITE_P(All, - OverviewWindowDragHistogramTestMultiDisplayOnly, - testing::Values(true)); - } // namespace ash
diff --git a/ash/wm/pip/DIR_METADATA b/ash/wm/pip/DIR_METADATA new file mode 100644 index 0000000..92214fb5 --- /dev/null +++ b/ash/wm/pip/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "UI>Shell>WindowManager>PictureInPicture" +}
diff --git a/ash/wm/splitview/multi_display_overview_and_split_view_test.cc b/ash/wm/splitview/multi_display_overview_and_split_view_test.cc deleted file mode 100644 index a94ec01..0000000 --- a/ash/wm/splitview/multi_display_overview_and_split_view_test.cc +++ /dev/null
@@ -1,33 +0,0 @@ -// Copyright 2019 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/wm/splitview/multi_display_overview_and_split_view_test.h" - -#include "ash/public/cpp/ash_features.h" - -namespace ash { - -MultiDisplayOverviewAndSplitViewTest::MultiDisplayOverviewAndSplitViewTest() = - default; - -MultiDisplayOverviewAndSplitViewTest::~MultiDisplayOverviewAndSplitViewTest() = - default; - -void MultiDisplayOverviewAndSplitViewTest::SetUp() { - if (GetParam()) { - scoped_feature_list_.InitAndEnableFeature( - features::kMultiDisplayOverviewAndSplitView); - } else { - scoped_feature_list_.InitAndDisableFeature( - features::kMultiDisplayOverviewAndSplitView); - } - AshTestBase::SetUp(); -} - -void MultiDisplayOverviewAndSplitViewTest::TearDown() { - AshTestBase::TearDown(); - scoped_feature_list_.Reset(); -} - -} // namespace ash
diff --git a/ash/wm/splitview/multi_display_overview_and_split_view_test.h b/ash/wm/splitview/multi_display_overview_and_split_view_test.h deleted file mode 100644 index 3c2afcb9..0000000 --- a/ash/wm/splitview/multi_display_overview_and_split_view_test.h +++ /dev/null
@@ -1,36 +0,0 @@ -// Copyright 2019 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_WM_SPLITVIEW_MULTI_DISPLAY_OVERVIEW_AND_SPLIT_VIEW_TEST_H_ -#define ASH_WM_SPLITVIEW_MULTI_DISPLAY_OVERVIEW_AND_SPLIT_VIEW_TEST_H_ - -#include "ash/ash_export.h" -#include "ash/test/ash_test_base.h" -#include "base/macros.h" -#include "base/test/scoped_feature_list.h" - -namespace ash { - -// Test with a parameter that determines whether to enable or disable the -// |ash::features::kMultiDisplayOverviewAndSplitView| feature flag. -class ASH_EXPORT MultiDisplayOverviewAndSplitViewTest - : public AshTestBase, - public testing::WithParamInterface<bool> { - public: - MultiDisplayOverviewAndSplitViewTest(); - ~MultiDisplayOverviewAndSplitViewTest() override; - - // AshTestBase: - void SetUp() override; - void TearDown() override; - - private: - base::test::ScopedFeatureList scoped_feature_list_; - - DISALLOW_COPY_AND_ASSIGN(MultiDisplayOverviewAndSplitViewTest); -}; - -} // namespace ash - -#endif // ASH_WM_SPLITVIEW_MULTI_DISPLAY_OVERVIEW_AND_SPLIT_VIEW_TEST_H_
diff --git a/ash/wm/splitview/split_view_controller.cc b/ash/wm/splitview/split_view_controller.cc index ff9182e..34b1fc4 100644 --- a/ash/wm/splitview/split_view_controller.cc +++ b/ash/wm/splitview/split_view_controller.cc
@@ -556,12 +556,7 @@ DCHECK(window); DCHECK(window->GetRootWindow()); DCHECK(RootWindowController::ForWindow(window)); - DCHECK(RootWindowController::ForWindow(Shell::GetPrimaryRootWindow())); - return RootWindowController::ForWindow( - AreMultiDisplayOverviewAndSplitViewEnabled() - ? window - : Shell::GetPrimaryRootWindow()) - ->split_view_controller(); + return RootWindowController::ForWindow(window)->split_view_controller(); } // static @@ -591,11 +586,9 @@ Shell::Get()->accessibility_controller()->AddObserver(this); display::Screen::GetScreen()->AddObserver(this); Shell::Get()->tablet_mode_controller()->AddObserver(this); - if (IsClamshellSplitViewModeEnabled()) { - split_view_type_ = Shell::Get()->tablet_mode_controller()->InTabletMode() - ? SplitViewType::kTabletType - : SplitViewType::kClamshellType; - } + split_view_type_ = Shell::Get()->tablet_mode_controller()->InTabletMode() + ? SplitViewType::kTabletType + : SplitViewType::kClamshellType; } SplitViewController::~SplitViewController() { @@ -1515,25 +1508,17 @@ } void SplitViewController::OnTabletModeEnding() { - if (IsClamshellSplitViewModeEnabled()) { - split_view_type_ = SplitViewType::kClamshellType; + split_view_type_ = SplitViewType::kClamshellType; - // There is no divider in clamshell split view. - const bool is_divider_animating = IsDividerAnimating(); - if (is_resizing_ || is_divider_animating) { - is_resizing_ = false; - if (is_divider_animating) - StopAndShoveAnimatedDivider(); - EndResizeImpl(); - } - split_view_divider_.reset(); - } else if (InSplitViewMode()) { - // If clamshell splitview mode is not enabled, fall back to the old - // behavior: end splitview and overivew and all windows will return to its - // old window state before entering tablet mode. - EndSplitView(); - Shell::Get()->overview_controller()->EndOverview(); + // There is no divider in clamshell split view. + const bool is_divider_animating = IsDividerAnimating(); + if (is_resizing_ || is_divider_animating) { + is_resizing_ = false; + if (is_divider_animating) + StopAndShoveAnimatedDivider(); + EndResizeImpl(); } + split_view_divider_.reset(); } void SplitViewController::OnTabletModeEnded() {
diff --git a/ash/wm/splitview/split_view_controller_unittest.cc b/ash/wm/splitview/split_view_controller_unittest.cc index 94d9f471..241c89c3 100644 --- a/ash/wm/splitview/split_view_controller_unittest.cc +++ b/ash/wm/splitview/split_view_controller_unittest.cc
@@ -39,7 +39,6 @@ #include "ash/wm/overview/overview_item.h" #include "ash/wm/overview/overview_observer.h" #include "ash/wm/overview/overview_test_util.h" -#include "ash/wm/splitview/multi_display_overview_and_split_view_test.h" #include "ash/wm/splitview/split_view_divider.h" #include "ash/wm/splitview/split_view_drag_indicators.h" #include "ash/wm/splitview/split_view_utils.h" @@ -128,14 +127,14 @@ } // namespace -class SplitViewControllerTest : public MultiDisplayOverviewAndSplitViewTest { +class SplitViewControllerTest : public AshTestBase { public: SplitViewControllerTest() = default; ~SplitViewControllerTest() override = default; // test::AshTestBase: void SetUp() override { - MultiDisplayOverviewAndSplitViewTest::SetUp(); + AshTestBase::SetUp(); // Avoid TabletModeController::OnGetSwitchStates() from disabling tablet // mode. base::RunLoop().RunUntilIdle(); @@ -148,7 +147,7 @@ false); FpsCounter::SetForceReportZeroAnimationForTest(false); trace_names_.clear(); - MultiDisplayOverviewAndSplitViewTest::TearDown(); + AshTestBase::TearDown(); } aura::Window* CreateWindow( @@ -288,7 +287,7 @@ }; // Tests the basic functionalities. -TEST_P(SplitViewControllerTest, Basic) { +TEST_F(SplitViewControllerTest, Basic) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -325,7 +324,7 @@ } // Tests that the default snapped window is the first window that gets snapped. -TEST_P(SplitViewControllerTest, DefaultSnappedWindow) { +TEST_F(SplitViewControllerTest, DefaultSnappedWindow) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -347,7 +346,7 @@ // only one snapped windows, closing the snapped window will end split view mode // and adjust the overview window grid bounds if the overview mode is active at // that moment. -TEST_P(SplitViewControllerTest, WindowCloseTest) { +TEST_F(SplitViewControllerTest, WindowCloseTest) { // 1 - First test one snapped window scenario. const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window0(CreateWindow(bounds)); @@ -428,7 +427,7 @@ // only one snapped windows, minimizing the sanpped window will end split view // mode and adjust the overview window grid bounds if the overview mode is // active at that moment. -TEST_P(SplitViewControllerTest, MinimizeWindowTest) { +TEST_F(SplitViewControllerTest, MinimizeWindowTest) { const gfx::Rect bounds(0, 0, 400, 400); // 1 - First test one snapped window scenario. @@ -475,7 +474,7 @@ // Tests that if one of the snapped window gets maximized / full-screened, the // split view mode ends. -TEST_P(SplitViewControllerTest, WindowStateChangeTest) { +TEST_F(SplitViewControllerTest, WindowStateChangeTest) { const gfx::Rect bounds(0, 0, 400, 400); // 1 - First test one snapped window scenario. std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); @@ -546,7 +545,7 @@ // Tests that if split view mode is active, activate another window will snap // the window to the non-default side of the screen. -TEST_P(SplitViewControllerTest, WindowActivationTest) { +TEST_F(SplitViewControllerTest, WindowActivationTest) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -574,7 +573,7 @@ // i.e., half of the screen is occupied by a snapped window and half of the // screen is occupied by the overview windows grid, the next activatable window // will be picked to snap when exiting the overview mode. -TEST_P(SplitViewControllerTest, ExitOverviewTest) { +TEST_F(SplitViewControllerTest, ExitOverviewTest) { ui::ScopedAnimationDurationScaleMode anmatin_scale( ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); @@ -609,7 +608,7 @@ // Tests that if split view mode is active when entering overview, the overview // windows grid should show in the non-default side of the screen, and the // default snapped window should not be shown in the overview window grid. -TEST_P(SplitViewControllerTest, EnterOverviewModeTest) { +TEST_F(SplitViewControllerTest, EnterOverviewModeTest) { ui::ScopedAnimationDurationScaleMode anmatin_scale( ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); @@ -642,7 +641,7 @@ // Tests that the split divider was created when the split view mode is active // and destroyed when the split view mode is ended. The split divider should be // always above the two snapped windows. -TEST_P(SplitViewControllerTest, SplitDividerBasicTest) { +TEST_F(SplitViewControllerTest, SplitDividerBasicTest) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -666,7 +665,7 @@ // Tests that the split divider has correct state after a window is destroyed // while being dragged from the top. -TEST_P(SplitViewControllerTest, +TEST_F(SplitViewControllerTest, DividerSetAsAlwaysOnTopAfterWindowDestroyedDuringDraggingFromTop) { std::unique_ptr<aura::Window> window1 = CreateTestWindow(); std::unique_ptr<aura::Window> window2 = CreateTestWindow(); @@ -708,7 +707,7 @@ // Tests that the split divider has correct state after a window is destroyed // while being dragged from overview. -TEST_P(SplitViewControllerTest, +TEST_F(SplitViewControllerTest, DividerSetAsAlwaysOnTopAfterWindowDestroyedDuringDraggingFromOverview) { std::unique_ptr<aura::Window> window1 = CreateTestWindow(); std::unique_ptr<aura::Window> window2 = CreateTestWindow(); @@ -752,7 +751,7 @@ // Tests that the split divider has correct state after a window drag from // overview is canceled. -TEST_P(SplitViewControllerTest, +TEST_F(SplitViewControllerTest, DividerSetAsAlwaysOnTopAfterWindowDragFromOverviewReset) { std::unique_ptr<aura::Window> window1 = CreateTestWindow(); std::unique_ptr<aura::Window> window2 = CreateTestWindow(); @@ -795,7 +794,7 @@ } // Verifys that the bounds of the two windows in splitview are as expected. -TEST_P(SplitViewControllerTest, SplitDividerWindowBounds) { +TEST_F(SplitViewControllerTest, SplitDividerWindowBounds) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -869,7 +868,7 @@ // Tests that the bounds of the snapped windows and divider are adjusted when // the screen display configuration changes. -TEST_P(SplitViewControllerTest, DisplayConfigurationChangeTest) { +TEST_F(SplitViewControllerTest, DisplayConfigurationChangeTest) { UpdateDisplay("407x400"); const gfx::Rect bounds(0, 0, 200, 200); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); @@ -914,7 +913,7 @@ // Tests that the bounds of the snapped windows and divider are adjusted when // the internal screen display configuration changes. -TEST_P(SplitViewControllerTest, InternalDisplayConfigurationChangeTest) { +TEST_F(SplitViewControllerTest, InternalDisplayConfigurationChangeTest) { UpdateDisplay("407x400"); int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); display::DisplayManager* display_manager = Shell::Get()->display_manager(); @@ -965,7 +964,7 @@ // Test that if the internal screen display configuration changes during the // divider snap animation, then this animation stops, and the bounds of the // snapped windows and divider are adjusted as normal. -TEST_P(SplitViewControllerTest, +TEST_F(SplitViewControllerTest, InternalDisplayConfigurationChangeDuringDividerSnap) { UpdateDisplay("407x400"); int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); @@ -1037,7 +1036,7 @@ // Test that if the internal screen display configuration changes during the // divider snap animation, and if the adjusted divider bounds place it at the // left edge of the screen, then split view ends. -TEST_P(SplitViewControllerTest, +TEST_F(SplitViewControllerTest, InternalDisplayConfigurationChangeDuringDividerSnapToLeft) { UpdateDisplay("407x400"); int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); @@ -1085,7 +1084,7 @@ // Test that if the internal screen display configuration changes during the // divider snap animation, and if the adjusted divider bounds place it at the // right edge of the screen, then split view ends. -TEST_P(SplitViewControllerTest, +TEST_F(SplitViewControllerTest, InternalDisplayConfigurationChangeDuringDividerSnapToRight) { UpdateDisplay("407x400"); int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); @@ -1132,7 +1131,7 @@ // Verify the left and right windows get swapped when SwapWindows is called or // the divider is double clicked. -TEST_P(SplitViewControllerTest, SwapWindows) { +TEST_F(SplitViewControllerTest, SwapWindows) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -1189,7 +1188,7 @@ // Verify the left and right windows get swapped when the divider is double // tapped. SwapWindows() contains a long code comment that shows it is worth // having separate tests for double clicking and double tapping the divider. -TEST_P(SplitViewControllerTest, DoubleTapDivider) { +TEST_F(SplitViewControllerTest, DoubleTapDivider) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -1219,7 +1218,7 @@ // Verify the left and right windows do not get swapped when the divider is // dragged and double clicked. -TEST_P(SplitViewControllerTest, DragAndDoubleClickDivider) { +TEST_F(SplitViewControllerTest, DragAndDoubleClickDivider) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -1245,7 +1244,7 @@ // Verify the left and right windows do not get swapped when the divider is // dragged and double tapped. -TEST_P(SplitViewControllerTest, DragAndDoubleTapDivider) { +TEST_F(SplitViewControllerTest, DragAndDoubleTapDivider) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -1273,7 +1272,7 @@ // Verify overview does not steal focus from a split view window when trading // places with it. -TEST_P(SplitViewControllerTest, OverviewNotStealFocusOnSwapWindows) { +TEST_F(SplitViewControllerTest, OverviewNotStealFocusOnSwapWindows) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -1285,7 +1284,7 @@ } // Verify that you cannot start dragging the divider during its snap animation. -TEST_P(SplitViewControllerTest, StartDraggingDividerDuringSnapAnimation) { +TEST_F(SplitViewControllerTest, StartDraggingDividerDuringSnapAnimation) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -1309,7 +1308,7 @@ GetEventGenerator()->ReleaseLeftButton(); } -TEST_P(SplitViewControllerTest, LongPressEntersSplitView) { +TEST_F(SplitViewControllerTest, LongPressEntersSplitView) { // Tests that with no active windows, split view does not get activated. LongPressOnOverivewButtonTray(); EXPECT_FALSE(split_view_controller()->InSplitViewMode()); @@ -1326,7 +1325,7 @@ // Verify that when in split view mode with either one snapped or two snapped // windows, split view mode gets exited when the overview button gets a long // press event. -TEST_P(SplitViewControllerTest, LongPressExitsSplitView) { +TEST_F(SplitViewControllerTest, LongPressExitsSplitView) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -1391,7 +1390,7 @@ // Verify that if a window with a transient child which is not snappable is // activated, and the the overview tray is long pressed, we will enter splitview // with the transient parent snapped. -TEST_P(SplitViewControllerTest, LongPressEntersSplitViewWithTransientChild) { +TEST_F(SplitViewControllerTest, LongPressEntersSplitViewWithTransientChild) { // Add two windows with one being a transient child of the first. const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> parent(CreateWindow(bounds)); @@ -1407,7 +1406,7 @@ EXPECT_EQ(split_view_controller()->GetDefaultSnappedWindow(), parent.get()); } -TEST_P(SplitViewControllerTest, LongPressExitsSplitViewWithTransientChild) { +TEST_F(SplitViewControllerTest, LongPressExitsSplitViewWithTransientChild) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> left_window(CreateWindow(bounds)); std::unique_ptr<aura::Window> right_window(CreateWindow(bounds)); @@ -1438,7 +1437,7 @@ // Verify that split view mode get activated when long pressing on the overview // button while in overview mode iff we have at least one window. -TEST_P(SplitViewControllerTest, LongPressInOverviewMode) { +TEST_F(SplitViewControllerTest, LongPressInOverviewMode) { ui::ScopedAnimationDurationScaleMode anmatin_scale( ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); @@ -1472,7 +1471,7 @@ CheckOverviewEnterExitHistogram("NoTransition", {1, 0}, {0, 0}); } -TEST_P(SplitViewControllerTest, LongPressWithUnsnappableWindow) { +TEST_F(SplitViewControllerTest, LongPressWithUnsnappableWindow) { // Add an unsnappable window and a regular window. const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> unsnappable_window( @@ -1503,7 +1502,7 @@ } // Tests that long press works even if the window is minimized. -TEST_P(SplitViewControllerTest, LongPressWithMinimizedWindow) { +TEST_F(SplitViewControllerTest, LongPressWithMinimizedWindow) { std::unique_ptr<aura::Window> window(CreateWindow(gfx::Rect(400, 400))); WindowState::Get(window.get())->Minimize(); @@ -1512,7 +1511,7 @@ } // Test the rotation functionalities in split view mode. -TEST_P(SplitViewControllerTest, RotationTest) { +TEST_F(SplitViewControllerTest, RotationTest) { UpdateDisplay("807x407"); int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); display::DisplayManager* display_manager = Shell::Get()->display_manager(); @@ -1619,7 +1618,7 @@ // Test that if the split view mode is active when exiting tablet mode, we // should also end split view mode. -TEST_P(SplitViewControllerTest, ExitTabletModeEndSplitView) { +TEST_F(SplitViewControllerTest, ExitTabletModeEndSplitView) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); @@ -1634,7 +1633,7 @@ // of the window fits into the left or top, with the default divider position. // (If the work area length is odd, then the right or bottom will be one pixel // larger.) -TEST_P(SplitViewControllerTest, SnapWindowWithMinimumSizeTest) { +TEST_F(SplitViewControllerTest, SnapWindowWithMinimumSizeTest) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); EXPECT_TRUE(split_view_controller()->CanSnapWindow(window1.get())); @@ -1656,7 +1655,7 @@ // Tests that the snapped window can not be moved outside of work area when its // minimum size is larger than its current desired resizing bounds. -TEST_P(SplitViewControllerTest, ResizingSnappedWindowWithMinimumSizeTest) { +TEST_F(SplitViewControllerTest, ResizingSnappedWindowWithMinimumSizeTest) { int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); display::DisplayManager* display_manager = Shell::Get()->display_manager(); display::test::ScopedSetInternalDisplayId set_internal(display_manager, @@ -1811,7 +1810,7 @@ // Tests that the divider should not be moved to a position that is smaller than // the snapped window's minimum size after resizing. -TEST_P(SplitViewControllerTest, +TEST_F(SplitViewControllerTest, DividerPositionOnResizingSnappedWindowWithMinimumSizeTest) { const gfx::Rect bounds(0, 0, 200, 200); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); @@ -1903,7 +1902,7 @@ // Tests that the divider and snapped windows bounds should be updated if // snapping a new window with minimum size, which is larger than the bounds // of its snap position. -TEST_P(SplitViewControllerTest, +TEST_F(SplitViewControllerTest, DividerPositionWithWindowMinimumSizeOnSnapTest) { const gfx::Rect bounds(0, 0, 200, 300); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); @@ -1941,7 +1940,7 @@ // Test that if display configuration changes in lock screen, the split view // mode doesn't end. -TEST_P(SplitViewControllerTest, DoNotEndSplitViewInLockScreen) { +TEST_F(SplitViewControllerTest, DoNotEndSplitViewInLockScreen) { display::test::DisplayManagerTestApi(display_manager()) .SetFirstDisplayAsInternalDisplay(); UpdateDisplay("800x400"); @@ -1972,7 +1971,7 @@ // Test that when split view and overview are both active when a new window is // added to the window hierarchy, overview is not ended. -TEST_P(SplitViewControllerTest, NewWindowTest) { +TEST_F(SplitViewControllerTest, NewWindowTest) { const gfx::Rect bounds(0, 0, 200, 300); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); @@ -1989,7 +1988,7 @@ // Tests that when split view ends because of a transition from tablet mode to // laptop mode during a resize operation, drags are properly completed. -TEST_P(SplitViewControllerTest, ExitTabletModeDuringResizeCompletesDrags) { +TEST_F(SplitViewControllerTest, ExitTabletModeDuringResizeCompletesDrags) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -2035,7 +2034,7 @@ // Tests that when a single window is present in split view mode is minimized // during a resize operation, then drags are properly completed. -TEST_P(SplitViewControllerTest, +TEST_F(SplitViewControllerTest, MinimizeSingleWindowDuringResizeCompletesDrags) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); @@ -2076,7 +2075,7 @@ // Tests that when two windows are present in split view mode and one of them // is minimized during a resize, then drags are properly completed. -TEST_P(SplitViewControllerTest, +TEST_F(SplitViewControllerTest, MinimizeOneOfTwoWindowsDuringResizeCompletesDrags) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); @@ -2124,7 +2123,7 @@ // Test that when a snapped window's resizablity property change from resizable // to unresizable, the split view mode is ended. -TEST_P(SplitViewControllerTest, ResizabilityChangeTest) { +TEST_F(SplitViewControllerTest, ResizabilityChangeTest) { const gfx::Rect bounds(0, 0, 200, 300); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); split_view_controller()->SnapWindow(window1.get(), SplitViewController::LEFT); @@ -2137,7 +2136,7 @@ // Tests that shadows on windows disappear when the window is snapped, and // reappear when unsnapped. -TEST_P(SplitViewControllerTest, ShadowDisappearsWhenSnapped) { +TEST_F(SplitViewControllerTest, ShadowDisappearsWhenSnapped) { const gfx::Rect bounds(200, 200); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -2174,7 +2173,7 @@ // windows in overview mode to snap to both side of the screen), or toggle // overview to end overview causes a window to snap, we should not have the // exiting animation. -TEST_P(SplitViewControllerTest, OverviewExitAnimationTest) { +TEST_F(SplitViewControllerTest, OverviewExitAnimationTest) { ui::ScopedAnimationDurationScaleMode anmatin_scale( ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); @@ -2242,7 +2241,7 @@ // Test the window state is normally maximized on splitview end, except when we // end it from home launcher. -TEST_P(SplitViewControllerTest, WindowStateOnExit) { +TEST_F(SplitViewControllerTest, WindowStateOnExit) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -2267,7 +2266,7 @@ // Test that if overview and splitview are both active at the same time, // activiate an unsnappable window should end both overview and splitview mode. -TEST_P(SplitViewControllerTest, ActivateNonSnappableWindow) { +TEST_F(SplitViewControllerTest, ActivateNonSnappableWindow) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -2285,7 +2284,7 @@ // Tests that if a snapped window has a bubble transient child, the bubble's // bounds should always align with the snapped window's bounds. -TEST_P(SplitViewControllerTest, AdjustTransientChildBounds) { +TEST_F(SplitViewControllerTest, AdjustTransientChildBounds) { std::unique_ptr<views::Widget> widget(CreateTestWidget()); aura::Window* window = widget->GetNativeWindow(); window->SetProperty(aura::client::kResizeBehaviorKey, @@ -2314,7 +2313,7 @@ // Tests the divider closest position ratio if work area is not starts from the // top of the display. -TEST_P(SplitViewControllerTest, DividerClosestRatioOnWorkArea) { +TEST_F(SplitViewControllerTest, DividerClosestRatioOnWorkArea) { UpdateDisplay("1200x800"); // Docked magnifier will put a view port window on the top of the display. Shell::Get()->docked_magnifier_controller()->SetEnabled(true); @@ -2380,7 +2379,7 @@ // |SplitViewController::is_previous_layout_right_side_up_| is only ever updated // in |SplitViewController::OnDisplayMetricsChanged|, then a clamshell/tablet // transition can leave it with a stale value which can cause broken behavior. -TEST_P(SplitViewControllerTest, +TEST_F(SplitViewControllerTest, DividerClosestRatioUpdatedForClamshellTabletTransition) { int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); display::DisplayManager* display_manager = Shell::Get()->display_manager(); @@ -2430,7 +2429,7 @@ // Test that if we snap an always on top window in splitscreen, there should be // no crash and the window should stay always on top. -TEST_P(SplitViewControllerTest, AlwaysOnTopWindow) { +TEST_F(SplitViewControllerTest, AlwaysOnTopWindow) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> always_on_top_window(CreateWindow(bounds)); always_on_top_window->SetProperty(aura::client::kZOrderingKey, @@ -2460,7 +2459,7 @@ } // Test that pinning a window ends split view mode. -TEST_P(SplitViewControllerTest, PinningWindowEndsSplitView) { +TEST_F(SplitViewControllerTest, PinningWindowEndsSplitView) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); @@ -2473,7 +2472,7 @@ // Test that split view mode is disallowed while we're in pinned mode (there is // a pinned window). -TEST_P(SplitViewControllerTest, PinnedWindowDisallowsSplitView) { +TEST_F(SplitViewControllerTest, PinnedWindowDisallowsSplitView) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); @@ -2486,7 +2485,7 @@ // Test that if split view ends while the divider is dragged to where a snapped // window is sliding off the screen because it has reached minimum size, then // the offset is cleared. -TEST_P(SplitViewControllerTest, EndSplitViewWhileResizingBeyondMinimum) { +TEST_F(SplitViewControllerTest, EndSplitViewWhileResizingBeyondMinimum) { int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); display::DisplayManager* display_manager = Shell::Get()->display_manager(); display::test::ScopedSetInternalDisplayId set_internal(display_manager, @@ -2535,7 +2534,7 @@ // Test if presentation time is recorded for multi window resizing // and resizing with overview. -TEST_P(SplitViewControllerTest, ResizeTwoWindows) { +TEST_F(SplitViewControllerTest, ResizeTwoWindows) { int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); display::DisplayManager* display_manager = Shell::Get()->display_manager(); display::test::ScopedSetInternalDisplayId set_internal(display_manager, @@ -2600,7 +2599,7 @@ // Test that if split view ends during the divider snap animation while a // snapped window is sliding off the screen because it has reached minimum size, // then the animation is ended and the window offset is cleared. -TEST_P(SplitViewControllerTest, EndSplitViewDuringDividerSnapAnimation) { +TEST_F(SplitViewControllerTest, EndSplitViewDuringDividerSnapAnimation) { int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); display::DisplayManager* display_manager = Shell::Get()->display_manager(); display::test::ScopedSetInternalDisplayId set_internal(display_manager, @@ -2659,7 +2658,7 @@ DISALLOW_COPY_AND_ASSIGN(TestOverviewItemsOnOverviewModeEndObserver); }; -TEST_P(SplitViewControllerTest, ItemsRemovedFromOverviewOnSnap) { +TEST_F(SplitViewControllerTest, ItemsRemovedFromOverviewOnSnap) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -2681,7 +2680,7 @@ } // Test that resizing ends properly if split view ends during divider dragging. -TEST_P(SplitViewControllerTest, EndSplitViewWhileDragging) { +TEST_F(SplitViewControllerTest, EndSplitViewWhileDragging) { // Enter split view mode. std::unique_ptr<aura::Window> window = CreateTestWindow(); ToggleOverview(); @@ -2719,7 +2718,7 @@ // Tests that auto snapping is properly triggered if a window is going to // unminimized (visible but minimized) in tablet split view mode. -TEST_P(SplitViewControllerTest, AutoSnapFromMinimizedState) { +TEST_F(SplitViewControllerTest, AutoSnapFromMinimizedState) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateNonSnappableWindow(bounds)); @@ -2782,7 +2781,7 @@ // Test that if the transient parent window is no longer snapped in split view, // split view divider should no longer observe the transient child window. -TEST_P(SplitViewControllerTest, DoNotObserveTransientIfNotInSplitview) { +TEST_F(SplitViewControllerTest, DoNotObserveTransientIfNotInSplitview) { // Create two normal window. const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); @@ -2812,7 +2811,7 @@ // Test that if a snapped window is destroyed during resizing, we should end // resizing. -TEST_P(SplitViewControllerTest, WindowDestroyedDuringResize) { +TEST_F(SplitViewControllerTest, WindowDestroyedDuringResize) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1(CreateWindow(bounds)); std::unique_ptr<aura::Window> window2(CreateWindow(bounds)); @@ -2980,7 +2979,7 @@ // Test that in tablet mode, we only allow dragging on browser or chrome app // window's caption area. -TEST_P(SplitViewTabDraggingTest, OnlyAllowDraggingOnBrowserOrChromeAppWindow) { +TEST_F(SplitViewTabDraggingTest, OnlyAllowDraggingOnBrowserOrChromeAppWindow) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1( CreateWindowWithType(bounds, AppType::BROWSER)); @@ -3010,7 +3009,7 @@ // Test that in tablet mode, we only allow dragging that happens on window // caption or top area. -TEST_P(SplitViewTabDraggingTest, OnlyAllowDraggingOnCaptionOrTopArea) { +TEST_F(SplitViewTabDraggingTest, OnlyAllowDraggingOnCaptionOrTopArea) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window( CreateWindowWithType(bounds, AppType::BROWSER)); @@ -3047,7 +3046,7 @@ // Test that in tablet mode, if the dragging is from mouse event, the mouse // cursor should be properly locked. -TEST_P(SplitViewTabDraggingTest, LockCursor) { +TEST_F(SplitViewTabDraggingTest, LockCursor) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window( CreateWindowWithType(bounds, AppType::BROWSER)); @@ -3066,7 +3065,7 @@ // Test that in tablet mode, if a window is in tab-dragging process, its // backdrop is disabled during dragging process. -TEST_P(SplitViewTabDraggingTest, NoBackDropDuringDragging) { +TEST_F(SplitViewTabDraggingTest, NoBackDropDuringDragging) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window( CreateWindowWithType(bounds, AppType::BROWSER)); @@ -3094,7 +3093,7 @@ // Test that in tablet mode, the window that is in tab-dragging process should // not be shown in overview mode. -TEST_P(SplitViewTabDraggingTest, DoNotShowDraggedWindowInOverview) { +TEST_F(SplitViewTabDraggingTest, DoNotShowDraggedWindowInOverview) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1( CreateWindowWithType(bounds, AppType::BROWSER)); @@ -3125,7 +3124,7 @@ // Test that if a window is in tab-dragging process, the split divider is placed // below the current dragged window. -TEST_P(SplitViewTabDraggingTest, DividerIsBelowDraggedWindow) { +TEST_F(SplitViewTabDraggingTest, DividerIsBelowDraggedWindow) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1( CreateWindowWithType(bounds, AppType::BROWSER)); @@ -3153,7 +3152,7 @@ // Test the functionalities that are related to dragging a maximized window's // tabs. See the expected behaviors described in go/tab-dragging-in-tablet-mode. -TEST_P(SplitViewTabDraggingTest, DragMaximizedWindow) { +TEST_F(SplitViewTabDraggingTest, DragMaximizedWindow) { UpdateDisplay("600x600"); const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1( @@ -3318,7 +3317,7 @@ // splitscreen. There are always two snapped window when the drag starts (i.e., // the overview mode is not active). See the expected behaviors described in // go/tab-dragging-in-tablet-mode. -TEST_P(SplitViewTabDraggingTest, DragSnappedWindow) { +TEST_F(SplitViewTabDraggingTest, DragSnappedWindow) { ui::ScopedAnimationDurationScaleMode anmatin_scale( ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); @@ -3502,7 +3501,7 @@ // Test the functionalities that are related to dragging a snapped window while // overview grid is open on the other side of the screen. See the expected // behaviors described in go/tab-dragging-in-tablet-mode. -TEST_P(SplitViewTabDraggingTest, DragSnappedWindowWhileOverviewOpen) { +TEST_F(SplitViewTabDraggingTest, DragSnappedWindowWhileOverviewOpen) { ui::ScopedAnimationDurationScaleMode anmatin_scale( ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); @@ -3654,7 +3653,7 @@ // Test that if a window is in tab-dragging process when overview is open, the // new window item widget shows up when the drag starts, and is destroyed after // the drag ends. -TEST_P(SplitViewTabDraggingTest, ShowNewWindowItemWhenDragStarts) { +TEST_F(SplitViewTabDraggingTest, ShowNewWindowItemWhenDragStarts) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1( CreateWindowWithType(bounds, AppType::BROWSER)); @@ -3717,7 +3716,7 @@ // Tests that if overview is ended because of releasing the dragged window, we // should not do animation when exiting overview. -TEST_P(SplitViewTabDraggingTest, OverviewExitAnimationTest) { +TEST_F(SplitViewTabDraggingTest, OverviewExitAnimationTest) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1( CreateWindowWithType(bounds, AppType::BROWSER)); @@ -3767,7 +3766,7 @@ } // Checks the drag indicators window dragging state for dragging from the top. -TEST_P(SplitViewTabDraggingTest, DragIndicatorsInPortraitOrientationTest) { +TEST_F(SplitViewTabDraggingTest, DragIndicatorsInPortraitOrientationTest) { UpdateDisplay("800x600"); int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); display::DisplayManager* display_manager = Shell::Get()->display_manager(); @@ -3813,7 +3812,7 @@ // Tests that if dragging a window into the preview split area, overview bounds // should be adjusted accordingly. -TEST_P(SplitViewTabDraggingTest, AdjustOverviewBoundsDuringDragging) { +TEST_F(SplitViewTabDraggingTest, AdjustOverviewBoundsDuringDragging) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1( CreateWindowWithType(bounds, AppType::BROWSER)); @@ -3961,7 +3960,7 @@ // Tests that a dragged window's bounds should be updated before dropping onto // the drop target to add into overview. -TEST_P(SplitViewTabDraggingTest, WindowBoundsUpdatedBeforeAddingToOverview) { +TEST_F(SplitViewTabDraggingTest, WindowBoundsUpdatedBeforeAddingToOverview) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1( CreateWindowWithType(bounds, AppType::BROWSER)); @@ -4029,7 +4028,7 @@ // Tests that window should be dropped into overview if has been dragged further // than half of the distance from top of display to the top of drop target. -TEST_P(SplitViewTabDraggingTest, DropWindowIntoOverviewOnDragPositionTest) { +TEST_F(SplitViewTabDraggingTest, DropWindowIntoOverviewOnDragPositionTest) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> browser_window1( CreateWindowWithType(bounds, AppType::BROWSER)); @@ -4126,7 +4125,7 @@ // Tests that a dragged window should have the active window shadow during // dragging. -TEST_P(SplitViewTabDraggingTest, DraggedWindowShouldHaveActiveWindowShadow) { +TEST_F(SplitViewTabDraggingTest, DraggedWindowShouldHaveActiveWindowShadow) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1( CreateWindowWithType(bounds, AppType::BROWSER)); @@ -4170,7 +4169,7 @@ // Test that if the source window needs to be scaled up/down because of dragging // a tab window out of it, other windows' visibilities and the home launcher's // visibility should change accordingly. -TEST_P(SplitViewTabDraggingTest, SourceWindowBackgroundTest) { +TEST_F(SplitViewTabDraggingTest, SourceWindowBackgroundTest) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1( CreateWindowWithType(bounds, AppType::BROWSER)); @@ -4220,7 +4219,7 @@ // Tests that the dragged window should be the active and top window if overview // ended because of window drag. -TEST_P(SplitViewTabDraggingTest, OverviewEndedOnWindowDrag) { +TEST_F(SplitViewTabDraggingTest, OverviewEndedOnWindowDrag) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1( CreateWindowWithType(bounds, AppType::BROWSER)); @@ -4270,7 +4269,7 @@ // When tab dragging a window, the dragged window might need to merge back into // the source window when the drag ends. Tests the related functionalities. -TEST_P(SplitViewTabDraggingTest, MergeBackToSourceWindow) { +TEST_F(SplitViewTabDraggingTest, MergeBackToSourceWindow) { UpdateDisplay("600x600"); const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> dragged_window( @@ -4359,7 +4358,7 @@ // Tests that if a fling event happens on a tab, the tab might or might not // merge back into the source window depending on the fling event velocity. -TEST_P(SplitViewTabDraggingTest, FlingTest) { +TEST_F(SplitViewTabDraggingTest, FlingTest) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> dragged_window( CreateWindowWithType(bounds, AppType::BROWSER)); @@ -4382,7 +4381,7 @@ // Tests that in various cases, after the tab drag ends, the dragged window and // the source window should have correct bounds. -TEST_P(SplitViewTabDraggingTest, BoundsTest) { +TEST_F(SplitViewTabDraggingTest, BoundsTest) { UpdateDisplay("600x600"); const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1( @@ -4493,7 +4492,7 @@ // Tests that press overview key in keyboard during drag should not put the // dragged window into overview. -TEST_P(SplitViewTabDraggingTest, PressOverviewKeyDuringDrag) { +TEST_F(SplitViewTabDraggingTest, PressOverviewKeyDuringDrag) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> dragged_window( CreateWindowWithType(bounds, AppType::BROWSER)); @@ -4516,7 +4515,7 @@ // Tests that if the dragged window is activated after the drag ends, but before // the dragged window gets snapped, the divider bar is placed correctly above // the snapped windows. -TEST_P(SplitViewTabDraggingTest, DragActiveWindow) { +TEST_F(SplitViewTabDraggingTest, DragActiveWindow) { UpdateDisplay("600x600"); const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> window1( @@ -4561,7 +4560,7 @@ // Tests that the divider bar should be placed on top after the drag ends, no // matter the dragged window is destroyed during the drag or not. -TEST_P(SplitViewTabDraggingTest, DividerBarOnTopAfterDragEnds) { +TEST_F(SplitViewTabDraggingTest, DividerBarOnTopAfterDragEnds) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> dragged_window( CreateWindowWithType(bounds, AppType::BROWSER)); @@ -4597,7 +4596,7 @@ split_view_divider()->divider_widget()->GetZOrderLevel()); } -TEST_P(SplitViewTabDraggingTest, IgnoreActivatedTabDraggingWindow) { +TEST_F(SplitViewTabDraggingTest, IgnoreActivatedTabDraggingWindow) { const gfx::Rect bounds(0, 0, 400, 400); std::unique_ptr<aura::Window> dragged_window( CreateWindowWithType(bounds, AppType::BROWSER)); @@ -4622,25 +4621,7 @@ EXPECT_FALSE(Shell::Get()->overview_controller()->InOverviewSession()); } -class SplitViewTabDraggingTestWithClamshellSupport - : public SplitViewTabDraggingTest { - public: - SplitViewTabDraggingTestWithClamshellSupport() = default; - ~SplitViewTabDraggingTestWithClamshellSupport() override = default; - - void SetUp() override { - scoped_feature_list_.InitAndEnableFeature( - features::kDragToSnapInClamshellMode); - SplitViewTabDraggingTest::SetUp(); - } - - private: - base::test::ScopedFeatureList scoped_feature_list_; - - DISALLOW_COPY_AND_ASSIGN(SplitViewTabDraggingTestWithClamshellSupport); -}; - -TEST_P(SplitViewTabDraggingTestWithClamshellSupport, +TEST_F(SplitViewTabDraggingTest, DragTabFromSnappedWindowToOverviewAndThenExitTablet) { // Snap a browser window in split view. std::unique_ptr<aura::Window> snapped_window( @@ -4777,7 +4758,7 @@ // Tests that drag the window that cannot be snapped from top of the display // will not snap the window into splitscreen. -TEST_P(SplitViewAppDraggingTest, DragNonActiveMaximizedWindow) { +TEST_F(SplitViewAppDraggingTest, DragNonActiveMaximizedWindow) { UpdateDisplay("800x600"); InitializeWindow(false); EXPECT_TRUE(WindowState::Get(window())->IsMaximized()); @@ -4803,7 +4784,7 @@ // Tests the functionalities that are related to dragging a maximized window // into splitscreen. -TEST_P(SplitViewAppDraggingTest, DragActiveMaximizedWindow) { +TEST_F(SplitViewAppDraggingTest, DragActiveMaximizedWindow) { UpdateDisplay("800x600"); InitializeWindow(); EXPECT_TRUE(WindowState::Get(window())->IsMaximized()); @@ -4855,7 +4836,7 @@ } // Tests the shelf visibility when a fullscreened window is being dragged. -TEST_P(SplitViewAppDraggingTest, ShelfVisibilityIfDraggingFullscreenedWindow) { +TEST_F(SplitViewAppDraggingTest, ShelfVisibilityIfDraggingFullscreenedWindow) { UpdateDisplay("800x600"); InitializeWindow(); ShelfLayoutManager* shelf_layout_manager = @@ -4893,7 +4874,7 @@ } // Tests the auto-hide shelf state during window dragging. -TEST_P(SplitViewAppDraggingTest, AutoHideShelf) { +TEST_F(SplitViewAppDraggingTest, AutoHideShelf) { UpdateDisplay("800x600"); Shelf* shelf = GetPrimaryShelf(); shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kNever); @@ -4932,7 +4913,7 @@ } // Tests the functionalities that fling the window when preview area is shown. -TEST_P(SplitViewAppDraggingTest, FlingWhenPreviewAreaIsShown) { +TEST_F(SplitViewAppDraggingTest, FlingWhenPreviewAreaIsShown) { InitializeWindow(); EXPECT_TRUE(WindowState::Get(window())->IsMaximized()); gfx::Rect display_bounds = @@ -4993,7 +4974,7 @@ } // Tests the functionalities that fling a window when splitview is active. -TEST_P(SplitViewAppDraggingTest, FlingWhenSplitViewIsActive) { +TEST_F(SplitViewAppDraggingTest, FlingWhenSplitViewIsActive) { InitializeWindow(); std::unique_ptr<aura::Window> window2 = CreateTestWindowWithWidget(true); @@ -5112,7 +5093,7 @@ } // Tests the backdrop bounds during window drag. -TEST_P(SplitViewAppDraggingTest, BackdropBoundsDuringDrag) { +TEST_F(SplitViewAppDraggingTest, BackdropBoundsDuringDrag) { InitializeWindow(); std::unique_ptr<aura::Window> window2 = CreateTestWindowWithWidget(true); split_view_controller()->SnapWindow(window(), SplitViewController::LEFT); @@ -5158,11 +5139,4 @@ EXPECT_EQ(backdrop_window->bounds(), active_desk_container->bounds()); } -INSTANTIATE_TEST_SUITE_P(All, SplitViewControllerTest, testing::Bool()); -INSTANTIATE_TEST_SUITE_P(All, SplitViewTabDraggingTest, testing::Bool()); -INSTANTIATE_TEST_SUITE_P(All, - SplitViewTabDraggingTestWithClamshellSupport, - testing::Bool()); -INSTANTIATE_TEST_SUITE_P(All, SplitViewAppDraggingTest, testing::Bool()); - } // namespace ash
diff --git a/ash/wm/splitview/split_view_utils.cc b/ash/wm/splitview/split_view_utils.cc index e109a2a..3e9ac61a 100644 --- a/ash/wm/splitview/split_view_utils.cc +++ b/ash/wm/splitview/split_view_utils.cc
@@ -392,21 +392,7 @@ } } -bool IsClamshellSplitViewModeEnabled() { - return base::FeatureList::IsEnabled(features::kDragToSnapInClamshellMode); -} - -bool AreMultiDisplayOverviewAndSplitViewEnabled() { - return base::FeatureList::IsEnabled( - features::kMultiDisplayOverviewAndSplitView); -} - bool ShouldAllowSplitView() { - if (!Shell::Get()->tablet_mode_controller()->InTabletMode() && - !IsClamshellSplitViewModeEnabled()) { - return false; - } - // Don't allow split view if we're in pinned mode. if (Shell::Get()->screen_pinning_controller()->IsPinned()) return false;
diff --git a/ash/wm/tablet_mode/tablet_mode_controller.cc b/ash/wm/tablet_mode/tablet_mode_controller.cc index 6695c41..088ddae 100644 --- a/ash/wm/tablet_mode/tablet_mode_controller.cc +++ b/ash/wm/tablet_mode/tablet_mode_controller.cc
@@ -862,7 +862,6 @@ // active before transition, do not take screenshot if overview is active // in this case. const bool overview_remain_active = - IsClamshellSplitViewModeEnabled() && Shell::Get()->overview_controller()->InOverviewSession(); if (use_screenshot_for_test && top_window_on_primary_display && !top_window_animating && !overview_remain_active) {
diff --git a/ash/wm/tablet_mode/tablet_mode_controller_unittest.cc b/ash/wm/tablet_mode/tablet_mode_controller_unittest.cc index 038ce63..1198d81 100644 --- a/ash/wm/tablet_mode/tablet_mode_controller_unittest.cc +++ b/ash/wm/tablet_mode/tablet_mode_controller_unittest.cc
@@ -31,7 +31,6 @@ #include "ash/test/ash_test_base.h" #include "ash/wm/overview/overview_controller.h" #include "ash/wm/overview/overview_wallpaper_controller.h" -#include "ash/wm/splitview/multi_display_overview_and_split_view_test.h" #include "ash/wm/splitview/split_view_controller.h" #include "ash/wm/splitview/split_view_utils.h" #include "ash/wm/tablet_mode/tablet_mode_controller_test_api.h" @@ -105,7 +104,7 @@ extern const float kAccelerometerVerticalHingeUnstableAnglesTestData[]; extern const size_t kAccelerometerVerticalHingeUnstableAnglesTestDataLength; -class TabletModeControllerTest : public MultiDisplayOverviewAndSplitViewTest { +class TabletModeControllerTest : public AshTestBase { public: TabletModeControllerTest() = default; ~TabletModeControllerTest() override = default; @@ -113,7 +112,7 @@ void SetUp() override { base::CommandLine::ForCurrentProcess()->AppendSwitch( switches::kAshEnableTabletMode); - MultiDisplayOverviewAndSplitViewTest::SetUp(); + AshTestBase::SetUp(); AccelerometerReader::GetInstance()->RemoveObserver( tablet_mode_controller()); @@ -134,7 +133,7 @@ void TearDown() override { AccelerometerReader::GetInstance()->AddObserver(tablet_mode_controller()); - MultiDisplayOverviewAndSplitViewTest::TearDown(); + AshTestBase::TearDown(); } SplitViewController* split_view_controller() { @@ -246,7 +245,7 @@ }; // Verify TabletMode enabled/disabled user action metrics are recorded. -TEST_P(TabletModeControllerTest, VerifyTabletModeEnabledDisabledCounts) { +TEST_F(TabletModeControllerTest, VerifyTabletModeEnabledDisabledCounts) { ASSERT_EQ(1, user_action_tester()->GetActionCount(kTabletModeInitiallyDisabled)); ASSERT_EQ(0, user_action_tester()->GetActionCount(kTabletModeEnabled)); @@ -270,7 +269,7 @@ } // Verify that closing the lid will exit tablet mode. -TEST_P(TabletModeControllerTest, CloseLidWhileInTabletMode) { +TEST_F(TabletModeControllerTest, CloseLidWhileInTabletMode) { OpenLidToAngle(315.0f); ASSERT_TRUE(IsTabletModeStarted()); @@ -279,7 +278,7 @@ } // Verify that tablet mode will not be entered when the lid is closed. -TEST_P(TabletModeControllerTest, HingeAnglesWithLidClosed) { +TEST_F(TabletModeControllerTest, HingeAnglesWithLidClosed) { AttachTickClockForTest(); CloseLid(); @@ -295,7 +294,7 @@ } // Verify the unstable lid angle is suppressed during opening the lid. -TEST_P(TabletModeControllerTest, OpenLidUnstableLidAngle) { +TEST_F(TabletModeControllerTest, OpenLidUnstableLidAngle) { AttachTickClockForTest(); OpenLid(); @@ -312,7 +311,7 @@ // Verify that suppressing unstable lid angle while opening the lid does not // override tablet mode switch on value - if tablet mode switch is on, device // should remain in tablet mode. -TEST_P(TabletModeControllerTest, TabletModeSwitchOnWithOpenUnstableLidAngle) { +TEST_F(TabletModeControllerTest, TabletModeSwitchOnWithOpenUnstableLidAngle) { AttachTickClockForTest(); SetTabletMode(true /*on*/); @@ -331,7 +330,7 @@ } // Verify the unstable lid angle is suppressed during closing the lid. -TEST_P(TabletModeControllerTest, CloseLidUnstableLidAngle) { +TEST_F(TabletModeControllerTest, CloseLidUnstableLidAngle) { AttachTickClockForTest(); OpenLid(); @@ -354,7 +353,7 @@ // Verify that suppressing unstable lid angle when the lid is closed does not // override tablet mode switch on value - if tablet mode switch is on, device // should remain in tablet mode. -TEST_P(TabletModeControllerTest, TabletModeSwitchOnWithCloseUnstableLidAngle) { +TEST_F(TabletModeControllerTest, TabletModeSwitchOnWithCloseUnstableLidAngle) { AttachTickClockForTest(); OpenLid(); @@ -369,7 +368,7 @@ EXPECT_FALSE(IsTabletModeStarted()); } -TEST_P(TabletModeControllerTest, TabletModeTransition) { +TEST_F(TabletModeControllerTest, TabletModeTransition) { OpenLidToAngle(90.0f); EXPECT_FALSE(IsTabletModeStarted()); @@ -397,7 +396,7 @@ // When there is no keyboard accelerometer available tablet mode should solely // rely on the tablet mode switch. -TEST_P(TabletModeControllerTest, TabletModeTransitionNoKeyboardAccelerometer) { +TEST_F(TabletModeControllerTest, TabletModeTransitionNoKeyboardAccelerometer) { ASSERT_FALSE(IsTabletModeStarted()); TriggerLidUpdate(gfx::Vector3dF(0.0f, 0.0f, kMeanGravityFloat)); ASSERT_FALSE(IsTabletModeStarted()); @@ -416,7 +415,7 @@ } // Verify the tablet mode enter/exit thresholds for stable angles. -TEST_P(TabletModeControllerTest, StableHingeAnglesWithLidOpened) { +TEST_F(TabletModeControllerTest, StableHingeAnglesWithLidOpened) { ASSERT_FALSE(IsTabletModeStarted()); OpenLidToAngle(180.0f); @@ -440,7 +439,7 @@ // Verify entering tablet mode for unstable lid angles when a certain range of // time has passed. -TEST_P(TabletModeControllerTest, EnterTabletModeWithUnstableLidAngle) { +TEST_F(TabletModeControllerTest, EnterTabletModeWithUnstableLidAngle) { AttachTickClockForTest(); OpenLid(); @@ -469,7 +468,7 @@ // Verify not exiting tablet mode for unstable lid angles even after a certain // range of time has passed. -TEST_P(TabletModeControllerTest, NotExitTabletModeWithUnstableLidAngle) { +TEST_F(TabletModeControllerTest, NotExitTabletModeWithUnstableLidAngle) { AttachTickClockForTest(); OpenLid(); @@ -496,7 +495,7 @@ } // Test that when the device lid is closed, its lid angle is reset properly. -TEST_P(TabletModeControllerTest, ResetLidAngleWhenLidClosed) { +TEST_F(TabletModeControllerTest, ResetLidAngleWhenLidClosed) { AttachTickClockForTest(); OpenLid(); OpenLidToAngle(90.0f); @@ -508,7 +507,7 @@ // Tests that when the hinge is nearly vertically aligned, the current state // persists as the computed angle is highly inaccurate in this orientation. -TEST_P(TabletModeControllerTest, HingeAligned) { +TEST_F(TabletModeControllerTest, HingeAligned) { // Laptop in normal orientation lid open 90 degrees. TriggerBaseAndLidUpdate(gfx::Vector3dF(0.0f, 0.0f, -kMeanGravityFloat), gfx::Vector3dF(0.0f, -kMeanGravityFloat, 0.0f)); @@ -536,7 +535,7 @@ EXPECT_TRUE(IsTabletModeStarted()); } -TEST_P(TabletModeControllerTest, LaptopTest) { +TEST_F(TabletModeControllerTest, LaptopTest) { // Feeds in sample accelerometer data and verifies that there are no // transitions into tabletmode / tablet mode while shaking the device around // with the hinge at less than 180 degrees. Note the conversion from device @@ -558,7 +557,7 @@ } } -TEST_P(TabletModeControllerTest, TabletModeTest) { +TEST_F(TabletModeControllerTest, TabletModeTest) { // Trigger tablet mode by opening to 270 to begin the test in tablet mode. TriggerBaseAndLidUpdate(gfx::Vector3dF(0.0f, 0.0f, kMeanGravityFloat), gfx::Vector3dF(0.0f, -kMeanGravityFloat, 0.0f)); @@ -585,7 +584,7 @@ } } -TEST_P(TabletModeControllerTest, VerticalHingeTest) { +TEST_F(TabletModeControllerTest, VerticalHingeTest) { // Feeds in sample accelerometer data and verifies that there are no // transitions out of tabletmode / tablet mode while shaking the device // around, while the hinge is nearly vertical. The data was captured from @@ -606,7 +605,7 @@ } // Test if this case does not crash. See http://crbug.com/462806 -TEST_P(TabletModeControllerTest, DisplayDisconnectionDuringOverview) { +TEST_F(TabletModeControllerTest, DisplayDisconnectionDuringOverview) { // Do not animate wallpaper on entering overview. OverviewWallpaperController::SetDoNotChangeWallpaperForTests(); @@ -629,7 +628,7 @@ // Test that the disabling of the internal display exits tablet mode, and that // while disabled we do not re-enter tablet mode. -TEST_P(TabletModeControllerTest, NoTabletModeWithDisabledInternalDisplay) { +TEST_F(TabletModeControllerTest, NoTabletModeWithDisabledInternalDisplay) { UpdateDisplay("200x200, 200x200"); const int64_t internal_display_id = display::test::DisplayManagerTestApi(display_manager()) @@ -666,7 +665,7 @@ // Tests that is a tablet mode signal is received while docked, that maximize // mode is enabled upon exiting docked mode. -TEST_P(TabletModeControllerTest, TabletModeAfterExitingDockedMode) { +TEST_F(TabletModeControllerTest, TabletModeAfterExitingDockedMode) { UpdateDisplay("200x200, 200x200"); const int64_t internal_display_id = display::test::DisplayManagerTestApi(display_manager()) @@ -700,7 +699,7 @@ // Verify that the device won't exit tabletmode / tablet mode for unstable // angles when hinge is nearly vertical -TEST_P(TabletModeControllerTest, VerticalHingeUnstableAnglesTest) { +TEST_F(TabletModeControllerTest, VerticalHingeUnstableAnglesTest) { // Trigger tablet mode by opening to 270 to begin the test in tablet mode. TriggerBaseAndLidUpdate(gfx::Vector3dF(0.0f, 0.0f, kMeanGravityFloat), gfx::Vector3dF(0.0f, -kMeanGravityFloat, 0.0f)); @@ -730,7 +729,7 @@ // Verify that the Alert Message will be triggered when switching between tablet // mode and laptop mode. -TEST_P(TabletModeControllerTest, AlertInAndOutTabletMode) { +TEST_F(TabletModeControllerTest, AlertInAndOutTabletMode) { TestAccessibilityControllerClient client; SetTabletMode(true); @@ -758,14 +757,14 @@ } }; -TEST_P(TabletModeControllerInitedFromPowerManagerClientTest, +TEST_F(TabletModeControllerInitedFromPowerManagerClientTest, InitializedWhileTabletModeSwitchOn) { // PowerManagerClient callback is a posted task. base::RunLoop().RunUntilIdle(); EXPECT_TRUE(tablet_mode_controller()->InTabletMode()); } -TEST_P(TabletModeControllerTest, RestoreAfterExit) { +TEST_F(TabletModeControllerTest, RestoreAfterExit) { UpdateDisplay("1000x600"); std::unique_ptr<aura::Window> w1( CreateTestWindowInShellWithBounds(gfx::Rect(10, 10, 900, 300))); @@ -786,7 +785,7 @@ EXPECT_EQ(gfx::Rect(10, 10, 900, 300), w1->bounds()); } -TEST_P(TabletModeControllerTest, RecordLidAngle) { +TEST_F(TabletModeControllerTest, RecordLidAngle) { // The timer shouldn't be running before we've received accelerometer data. EXPECT_FALSE( tablet_mode_controller()->TriggerRecordLidAngleTimerForTesting()); @@ -823,7 +822,7 @@ // Tests that when an external mouse is connected, flipping the // lid of the chromebook will not enter tablet mode. -TEST_P(TabletModeControllerTest, CannotEnterTabletModeWithExternalMouse) { +TEST_F(TabletModeControllerTest, CannotEnterTabletModeWithExternalMouse) { OpenLidToAngle(300.0f); EXPECT_TRUE(IsTabletModeStarted()); @@ -840,7 +839,7 @@ // Tests that when we plug in a external mouse the device will // leave tablet mode. -TEST_P(TabletModeControllerTest, LeaveTabletModeWhenExternalMouseConnected) { +TEST_F(TabletModeControllerTest, LeaveTabletModeWhenExternalMouseConnected) { // Start in tablet mode. OpenLidToAngle(300.0f); EXPECT_TRUE(IsTabletModeStarted()); @@ -860,7 +859,7 @@ // Test that plug in or out a mouse in laptop mode will not change current // laptop mode. -TEST_P(TabletModeControllerTest, ExternalMouseInLaptopMode) { +TEST_F(TabletModeControllerTest, ExternalMouseInLaptopMode) { // Start in laptop mode. OpenLidToAngle(30.0f); EXPECT_FALSE(IsTabletModeStarted()); @@ -880,7 +879,7 @@ // Test that docked mode prevents entering tablet mode on detaching an external // mouse while in tablet position. -TEST_P(TabletModeControllerTest, ExternalMouseInDockedMode) { +TEST_F(TabletModeControllerTest, ExternalMouseInDockedMode) { UpdateDisplay("800x600, 800x600"); const int64_t internal_display_id = display::test::DisplayManagerTestApi(display_manager()) @@ -912,7 +911,7 @@ // Test that the ui mode and input event blocker should be both correctly // updated when there is a change in external mouse and lid angle. -TEST_P(TabletModeControllerTest, ExternalMouseWithLidAngleTest) { +TEST_F(TabletModeControllerTest, ExternalMouseWithLidAngleTest) { // Start in laptop mode. OpenLidToAngle(30.0f); EXPECT_FALSE(IsTabletModeStarted()); @@ -957,7 +956,7 @@ // Test that the ui mode and input event blocker should be both correctly // updated when there is a change in external mouse and tablet mode switch // value. -TEST_P(TabletModeControllerTest, ExternalMouseWithTabletModeSwithTest) { +TEST_F(TabletModeControllerTest, ExternalMouseWithTabletModeSwithTest) { // Start in laptop mode. SetTabletMode(false); EXPECT_FALSE(IsTabletModeStarted()); @@ -1001,7 +1000,7 @@ // Tests that when an external touchpad is connected, the device should exit // tablet mode and enter clamshell mode. -TEST_P(TabletModeControllerTest, ExternalTouchPadTest) { +TEST_F(TabletModeControllerTest, ExternalTouchPadTest) { // Nix touchpads attached to the machine that is running unit tests. DetachAllTouchpads(); @@ -1028,7 +1027,7 @@ } // Test that internal keyboard and mouse are not disabled in docked mode. -TEST_P(TabletModeControllerTest, InternalKeyboardMouseInDockedModeTest) { +TEST_F(TabletModeControllerTest, InternalKeyboardMouseInDockedModeTest) { UpdateDisplay("800x600, 800x600"); const int64_t internal_display_id = display::test::DisplayManagerTestApi(display_manager()) @@ -1071,7 +1070,7 @@ // Test that the mouse cursor is hidden when entering tablet mode, and shown // when exiting tablet mode. -TEST_P(TabletModeControllerTest, ShowAndHideMouseCursorTest) { +TEST_F(TabletModeControllerTest, ShowAndHideMouseCursorTest) { wm::CursorManager* cursor_manager = Shell::Get()->cursor_manager(); EXPECT_TRUE(cursor_manager->IsCursorVisible()); @@ -1103,7 +1102,7 @@ // initially, and opening the lid to less than 180 degress or setting tablet // mode to off will not turn off tablet mode. The internal keyboard and trackpad // should still work as it makes testing easier. -TEST_P(TabletModeControllerForceTabletModeTest, ForceTabletModeTest) { +TEST_F(TabletModeControllerForceTabletModeTest, ForceTabletModeTest) { EXPECT_TRUE(IsTabletModeStarted()); EXPECT_FALSE(AreEventsBlocked()); @@ -1121,7 +1120,7 @@ EXPECT_FALSE(AreEventsBlocked()); } -TEST_P(TabletModeControllerForceTabletModeTest, DockInForcedTabletMode) { +TEST_F(TabletModeControllerForceTabletModeTest, DockInForcedTabletMode) { UpdateDisplay("800x600, 800x600"); const int64_t internal_display_id = display::test::DisplayManagerTestApi(display_manager()) @@ -1158,7 +1157,7 @@ // Tests that when the force touch view mode flag is set to clamshell, clamshell // mode is on initially, and cannot be changed by lid angle or manually entering // tablet mode. -TEST_P(TabletModeControllerForceClamshellModeTest, ForceClamshellModeTest) { +TEST_F(TabletModeControllerForceClamshellModeTest, ForceClamshellModeTest) { EXPECT_FALSE(IsTabletModeStarted()); EXPECT_FALSE(AreEventsBlocked()); @@ -1173,7 +1172,7 @@ // Test that if the active window is not snapped before tablet mode, then split // view is not activated. -TEST_P(TabletModeControllerTest, StartTabletActiveNoSnap) { +TEST_F(TabletModeControllerTest, StartTabletActiveNoSnap) { std::unique_ptr<aura::Window> window = CreateTestWindow(); tablet_mode_controller()->SetEnabledForTest(true); EXPECT_EQ(SplitViewController::State::kNoSnap, @@ -1183,7 +1182,7 @@ // Test that if the active window is snapped on the left before tablet mode, // then split view is activated with the active window on the left. -TEST_P(TabletModeControllerTest, StartTabletActiveLeftSnap) { +TEST_F(TabletModeControllerTest, StartTabletActiveLeftSnap) { std::unique_ptr<aura::Window> window = CreateDesktopWindowSnappedLeft(); tablet_mode_controller()->SetEnabledForTest(true); EXPECT_EQ(SplitViewController::State::kLeftSnapped, @@ -1195,7 +1194,7 @@ // Test that if the active window is snapped on the right before tablet mode, // then split view is activated with the active window on the right. -TEST_P(TabletModeControllerTest, StartTabletActiveRightSnap) { +TEST_F(TabletModeControllerTest, StartTabletActiveRightSnap) { std::unique_ptr<aura::Window> window = CreateDesktopWindowSnappedRight(); tablet_mode_controller()->SetEnabledForTest(true); EXPECT_EQ(SplitViewController::State::kRightSnapped, @@ -1208,7 +1207,7 @@ // Test that if before tablet mode, the active window is snapped on the left and // the previous window is snapped on the right, then split view is activated // with the active window on the left and the previous window on the right. -TEST_P(TabletModeControllerTest, StartTabletActiveLeftSnapPreviousRightSnap) { +TEST_F(TabletModeControllerTest, StartTabletActiveLeftSnapPreviousRightSnap) { std::unique_ptr<aura::Window> left_window = CreateDesktopWindowSnappedLeft(); std::unique_ptr<aura::Window> right_window = CreateDesktopWindowSnappedRight(); @@ -1225,7 +1224,7 @@ // Test that if before tablet mode, the active window is snapped on the right // and the previous window is snapped on the left, then split view is activated // with the active window on the right and the previous window on the left. -TEST_P(TabletModeControllerTest, StartTabletActiveRightSnapPreviousLeftSnap) { +TEST_F(TabletModeControllerTest, StartTabletActiveRightSnapPreviousLeftSnap) { std::unique_ptr<aura::Window> left_window = CreateDesktopWindowSnappedLeft(); std::unique_ptr<aura::Window> right_window = CreateDesktopWindowSnappedRight(); @@ -1242,7 +1241,7 @@ // Test that if before tablet mode, the active window is a transient child of a // window snapped on the left, then split view is activated with the parent // snapped on the left. -TEST_P(TabletModeControllerTest, StartTabletActiveTransientChildOfLeftSnap) { +TEST_F(TabletModeControllerTest, StartTabletActiveTransientChildOfLeftSnap) { std::unique_ptr<aura::Window> parent = CreateDesktopWindowSnappedLeft(); std::unique_ptr<aura::Window> child = CreateTestWindow(gfx::Rect(), aura::client::WINDOW_TYPE_POPUP); @@ -1259,7 +1258,7 @@ // Test that if before tablet mode, the active window is the app list and the // previous window is snapped on the left, then split view is activated with the // previous window on the left. -TEST_P(TabletModeControllerTest, StartTabletActiveAppListPreviousLeftSnap) { +TEST_F(TabletModeControllerTest, StartTabletActiveAppListPreviousLeftSnap) { std::unique_ptr<aura::Window> window = CreateDesktopWindowSnappedLeft(); Shell::Get()->app_list_controller()->ShowAppList(); ASSERT_TRUE(wm::IsActiveWindow( @@ -1275,7 +1274,7 @@ // Test that if before tablet mode, the active window is being dragged and the // previous window is snapped on the left, then split view is activated with the // previous window on the left. -TEST_P(TabletModeControllerTest, StartTabletActiveDraggedPreviousLeftSnap) { +TEST_F(TabletModeControllerTest, StartTabletActiveDraggedPreviousLeftSnap) { std::unique_ptr<aura::Window> dragged_window = CreateTestWindow(); std::unique_ptr<aura::Window> snapped_window = CreateDesktopWindowSnappedLeft(); @@ -1294,7 +1293,7 @@ // Test that if before tablet mode, the active window is hidden from overview // and the previous window is snapped on the left, then split view is activated // with the previous window on the left. -TEST_P(TabletModeControllerTest, +TEST_F(TabletModeControllerTest, StartTabletActiveHiddenFromOverviewPreviousLeftSnap) { std::unique_ptr<aura::Window> window_hidden_from_overview = CreateTestWindow(); @@ -1313,7 +1312,7 @@ // Test that if before tablet mode, the active window is being dragged and the // previous window is a transient child of a window snapped on the left, then // split view is activated with the parent on the left. -TEST_P(TabletModeControllerTest, +TEST_F(TabletModeControllerTest, StartTabletActiveDraggedPreviousTransientChildOfLeftSnap) { std::unique_ptr<aura::Window> dragged_window = CreateTestWindow(); std::unique_ptr<aura::Window> parent = CreateDesktopWindowSnappedLeft(); @@ -1336,7 +1335,7 @@ // Test that if before tablet mode, the active window is snapped on the left but // does not meet the requirements to be snapped in split view, and the previous // window is snapped on the right, then split view is not activated. -TEST_P(TabletModeControllerTest, +TEST_F(TabletModeControllerTest, StartTabletActiveDesktopOnlyLeftSnapPreviousRightSnap) { aura::test::TestWindowDelegate left_window_delegate; std::unique_ptr<aura::Window> left_window(CreateTestWindowInShellWithDelegate( @@ -1363,7 +1362,7 @@ // Test that if before tablet mode, the active window is snapped on the right // but does not meet the requirements to be snapped in split view, and the // previous window is snapped on the left, then split view is not activated. -TEST_P(TabletModeControllerTest, +TEST_F(TabletModeControllerTest, StartTabletActiveDesktopOnlyRightSnapPreviousLeftSnap) { std::unique_ptr<aura::Window> left_window = CreateDesktopWindowSnappedLeft(); aura::test::TestWindowDelegate right_window_delegate; @@ -1392,7 +1391,7 @@ // the previous window is snapped on the right but does not meet the // requirements to be snapped in split view, then split view is activated with // the active window on the left. -TEST_P(TabletModeControllerTest, +TEST_F(TabletModeControllerTest, StartTabletActiveLeftSnapPreviousDesktopOnlyRightSnap) { std::unique_ptr<aura::Window> left_window = CreateDesktopWindowSnappedLeft(); aura::test::TestWindowDelegate right_window_delegate; @@ -1423,7 +1422,7 @@ // and the previous window is snapped on the left but does not meet the // requirements to be snapped in split view, then split view is activated with // the active window on the right. -TEST_P(TabletModeControllerTest, +TEST_F(TabletModeControllerTest, StartTabletActiveRightSnapPreviousDesktopOnlyLeftSnap) { aura::test::TestWindowDelegate left_window_delegate; std::unique_ptr<aura::Window> left_window(CreateTestWindowInShellWithDelegate( @@ -1451,7 +1450,7 @@ // Test that when entering tablet mode with a left snapped window, the applist // is not visible because overview is shown. -TEST_P(TabletModeControllerTest, +TEST_F(TabletModeControllerTest, AppListNotSeenAfterEnteringTabletModeWithLeftSnappedWindow) { AppListControllerImpl* app_list_controller = Shell::Get()->app_list_controller(); @@ -1465,7 +1464,7 @@ // Test that if both the active window and the previous window are snapped on // the left before tablet mode, then split view is activated with the active // window on the left. -TEST_P(TabletModeControllerTest, StartTabletActiveLeftSnapPreviousLeftSnap) { +TEST_F(TabletModeControllerTest, StartTabletActiveLeftSnapPreviousLeftSnap) { std::unique_ptr<aura::Window> window1 = CreateDesktopWindowSnappedLeft(); std::unique_ptr<aura::Window> window2 = CreateDesktopWindowSnappedLeft(); wm::ActivateWindow(window1.get()); @@ -1479,7 +1478,7 @@ // Like TabletModeControllerTest.StartTabletActiveLeftSnap, but with an extra // display which has no relevant windows on it. -TEST_P(TabletModeControllerTest, +TEST_F(TabletModeControllerTest, StartTabletActiveLeftSnapPlusExtraneousDisplay) { UpdateDisplay("800x600,800x600"); std::unique_ptr<aura::Window> window = CreateDesktopWindowSnappedLeft(); @@ -1495,7 +1494,7 @@ EXPECT_EQ(window.get(), window_util::GetActiveWindow()); } -TEST_P(TabletModeControllerTest, StartTabletActiveLeftSnapOnSecondaryDisplay) { +TEST_F(TabletModeControllerTest, StartTabletActiveLeftSnapOnSecondaryDisplay) { UpdateDisplay("800x600,800x600"); std::unique_ptr<aura::Window> window = CreateDesktopWindowSnappedLeft(gfx::Rect(800, 0, 400, 400)); @@ -1505,7 +1504,7 @@ base::RunLoop().RunUntilIdle(); } -TEST_P( +TEST_F( TabletModeControllerTest, StartTabletActiveLeftSnapOnPrimaryDisplayPreviousRightSnapOnSecondaryDisplay) { UpdateDisplay("800x600,800x600"); @@ -1521,7 +1520,7 @@ base::RunLoop().RunUntilIdle(); } -TEST_P(TabletModeControllerTest, +TEST_F(TabletModeControllerTest, StartTabletActiveLeftSnapOnPrimaryDisplayPreviousOnSecondaryDisplay) { UpdateDisplay("800x600,800x600"); std::unique_ptr<aura::Window> window1 = @@ -1542,7 +1541,7 @@ // Test that tablet mode controller does not respond to the input device changes // during its suspend. -TEST_P(TabletModeControllerTest, DoNotObserverInputDeviceChangeDuringSuspend) { +TEST_F(TabletModeControllerTest, DoNotObserverInputDeviceChangeDuringSuspend) { // Start in tablet mode. OpenLidToAngle(300.0f); EXPECT_TRUE(IsTabletModeStarted()); @@ -1566,7 +1565,7 @@ // Tests that we get no animation smoothness histograms when entering or // exiting tablet mode with no windows. -TEST_P(TabletModeControllerTest, TabletModeTransitionHistogramsNotLogged) { +TEST_F(TabletModeControllerTest, TabletModeTransitionHistogramsNotLogged) { ui::ScopedAnimationDurationScaleMode test_duration_mode( ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); base::HistogramTester histogram_tester; @@ -1581,7 +1580,7 @@ histogram_tester.ExpectTotalCount(kExitHistogram, 0); } -TEST_P(TabletModeControllerTest, TabletModeTransitionHistogramsLogged) { +TEST_F(TabletModeControllerTest, TabletModeTransitionHistogramsLogged) { ui::ScopedAnimationDurationScaleMode test_duration_mode( ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); base::HistogramTester histogram_tester; @@ -1613,7 +1612,7 @@ histogram_tester.ExpectTotalCount(kExitHistogram, 1); } -TEST_P(TabletModeControllerTest, TabletModeTransitionHistogramsSnappedWindows) { +TEST_F(TabletModeControllerTest, TabletModeTransitionHistogramsSnappedWindows) { ui::ScopedAnimationDurationScaleMode test_duration_mode( ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); base::HistogramTester histogram_tester; @@ -1659,7 +1658,7 @@ // Tests that if there is no internal and external input device, the device // should stay in tablet mode. -TEST_P(TabletModeControllerOnDeviceTest, DoNotEnterClamshellWithNoInputDevice) { +TEST_F(TabletModeControllerOnDeviceTest, DoNotEnterClamshellWithNoInputDevice) { AttachExternalTouchpad(); EXPECT_FALSE(IsTabletModeStarted()); DetachAllTouchpads(); @@ -1716,7 +1715,7 @@ }; // Tests that when there are no animations, no screenshot is taken. -TEST_P(TabletModeControllerScreenshotTest, NoAnimationNoScreenshot) { +TEST_F(TabletModeControllerScreenshotTest, NoAnimationNoScreenshot) { // Tests that no windows means no screenshot. SetTabletMode(true); EXPECT_FALSE(IsScreenshotShown()); @@ -1741,7 +1740,7 @@ // Regression test for screenshot staying visible when entering tablet mode when // already in overview mode. See https://crbug.com/1002735. -TEST_P(TabletModeControllerScreenshotTest, FromOverviewNoScreenshot) { +TEST_F(TabletModeControllerScreenshotTest, FromOverviewNoScreenshot) { // Create two maximized windows. auto window = CreateTestWindow(gfx::Rect(200, 200)); auto window2 = CreateTestWindow(gfx::Rect(200, 200)); @@ -1776,7 +1775,7 @@ // Regression test for screenshot staying visible when entering tablet mode when // a window creation animation is still underway. See https://crbug.com/1035356. -TEST_P(TabletModeControllerScreenshotTest, EnterTabletModeWhileAnimating) { +TEST_F(TabletModeControllerScreenshotTest, EnterTabletModeWhileAnimating) { auto window = CreateTestWindow(gfx::Rect(200, 200)); ASSERT_TRUE(window->layer()->GetAnimator()->is_animating()); @@ -1823,7 +1822,7 @@ // Tests that the screenshot is visible when a window animation happens when // entering tablet mode. -TEST_P(TabletModeControllerScreenshotTest, ScreenshotVisibility) { +TEST_F(TabletModeControllerScreenshotTest, ScreenshotVisibility) { auto window = CreateTestWindow(gfx::Rect(200, 200)); auto window2 = CreateTestWindow(gfx::Rect(300, 200)); @@ -1856,7 +1855,7 @@ // Tests that if we exit tablet mode before the screenshot is taken, there is no // crash. (See https://crbug.com/1012879). -TEST_P(TabletModeControllerScreenshotTest, NoCrashWhenExitingWithoutWaiting) { +TEST_F(TabletModeControllerScreenshotTest, NoCrashWhenExitingWithoutWaiting) { // One non-maximized window is needed for screenshot to be taken. auto window = CreateTestWindow(gfx::Rect(200, 200)); window->layer()->GetAnimator()->StopAnimating(); @@ -1878,7 +1877,7 @@ // child as the top window that is not resizeable but positionable. Note that // creating such windows is not desirable, but is possible so we need this // regression test. See https://crbug.com/1096128. -TEST_P(TabletModeControllerScreenshotTest, TransientChildTypeWindow) { +TEST_F(TabletModeControllerScreenshotTest, TransientChildTypeWindow) { // Create a window with a transient child that is of WINDOW_TYPE_POPUP. auto window = CreateTestWindow(gfx::Rect(200, 200)); auto child = CreateTestWindow(gfx::Rect(200, 200)); @@ -1895,21 +1894,4 @@ EXPECT_TRUE(IsShelfOpaque()); } -INSTANTIATE_TEST_SUITE_P(All, TabletModeControllerTest, testing::Bool()); -INSTANTIATE_TEST_SUITE_P(All, - TabletModeControllerInitedFromPowerManagerClientTest, - testing::Bool()); -INSTANTIATE_TEST_SUITE_P(All, - TabletModeControllerForceTabletModeTest, - testing::Bool()); -INSTANTIATE_TEST_SUITE_P(All, - TabletModeControllerForceClamshellModeTest, - testing::Bool()); -INSTANTIATE_TEST_SUITE_P(All, - TabletModeControllerScreenshotTest, - testing::Bool()); -INSTANTIATE_TEST_SUITE_P(All, - TabletModeControllerOnDeviceTest, - testing::Bool()); - } // namespace ash
diff --git a/ash/wm/tablet_mode/tablet_mode_window_manager.cc b/ash/wm/tablet_mode/tablet_mode_window_manager.cc index a2e8f46..5488826b 100644 --- a/ash/wm/tablet_mode/tablet_mode_window_manager.cc +++ b/ash/wm/tablet_mode/tablet_mode_window_manager.cc
@@ -176,45 +176,38 @@ base::flat_map<aura::Window*, WindowStateType> carryover_windows_in_splitview; const bool was_in_overview = Shell::Get()->overview_controller()->InOverviewSession(); - // If clamshell split view mode is not enabled, still keep the old behavior: - // End overview if overview is active and restore all windows' window states - // to their previous window states. - if (!IsClamshellSplitViewModeEnabled()) { - Shell::Get()->overview_controller()->EndOverview(); - } else { - // If clamshell split view mode is enabled, there are 4 cases when exiting - // tablet mode: - // 1) overview is active but split view is inactive: keep overview active in - // clamshell mode. - // 2) overview and splitview are both active: keep overview and splitview - // both - // active in clamshell mode, unless if it's single split state, splitview - // and overview will both be ended. - // 3) overview is inactive but split view is active (two snapped windows): - // split view is no longer active. But the two snapped windows will still - // keep snapped in clamshell mode. - // 4) overview and splitview are both inactive: keep the current behavior, - // i.e., restore all windows to its window state before entering tablet - // mode. - // TODO(xdai): Instead of caching snapped windows and their state here, we - // should try to see if it can be done in the WindowState::State impl. - carryover_windows_in_splitview = - GetCarryOverWindowsInSplitView(/*clamshell_to_tablet=*/false); + // There are 4 cases when exiting tablet mode: + // 1) overview is active but split view is inactive: keep overview active in + // clamshell mode. + // 2) overview and splitview are both active: keep overview and splitview + // both + // active in clamshell mode, unless if it's single split state, splitview + // and overview will both be ended. + // 3) overview is inactive but split view is active (two snapped windows): + // split view is no longer active. But the two snapped windows will still + // keep snapped in clamshell mode. + // 4) overview and splitview are both inactive: keep the current behavior, + // i.e., restore all windows to its window state before entering tablet + // mode. - // For case 2 and 3: End splitview mode for two snapped windows case or - // single split case to match the clamshell split view behavior. (there is - // no both snapped state or single split state in clamshell split view). The - // windows will still be kept snapped though. - if (split_view_controller->InSplitViewMode()) { - OverviewController* overview_controller = - Shell::Get()->overview_controller(); - if (!overview_controller->InOverviewSession() || - overview_controller->overview_session()->IsEmpty()) { - split_view_controller->EndSplitView( - SplitViewController::EndReason::kExitTabletMode); - overview_controller->EndOverview(); - } + // TODO(xdai): Instead of caching snapped windows and their state here, we + // should try to see if it can be done in the WindowState::State impl. + carryover_windows_in_splitview = + GetCarryOverWindowsInSplitView(/*clamshell_to_tablet=*/false); + + // For case 2 and 3: End splitview mode for two snapped windows case or + // single split case to match the clamshell split view behavior. (there is + // no both snapped state or single split state in clamshell split view). The + // windows will still be kept snapped though. + if (split_view_controller->InSplitViewMode()) { + OverviewController* overview_controller = + Shell::Get()->overview_controller(); + if (!overview_controller->InOverviewSession() || + overview_controller->overview_session()->IsEmpty()) { + split_view_controller->EndSplitView( + SplitViewController::EndReason::kExitTabletMode); + overview_controller->EndOverview(); } } @@ -575,14 +568,7 @@ } void TabletModeWindowManager::ArrangeWindowsForTabletMode() { - // If clamshell split view mode is not enabled, still keep the old behavior: - // end overview if it's active. And carry over snapped windows to - // splitscreen if possible. - if (!IsClamshellSplitViewModeEnabled()) - Shell::Get()->overview_controller()->EndOverview(); - - // If clamshell splitview mode is enabled, there are 3 cases when entering - // tablet mode: + // There are 3 cases when entering tablet mode: // 1) overview is active but split view is inactive: keep overview active in // tablet mode. // 2) overview and splitview are both active (splitview can only be active @@ -645,13 +631,11 @@ ForgetWindow(window, /*destroyed=*/false, was_in_overview); } - if (IsClamshellSplitViewModeEnabled()) { - // Arriving here the window state has changed to its clamshell window state. - // Since we need to keep the windows that were in splitview still be snapped - // in clamshell mode, change its window state to the corresponding snapped - // window state. - DoSplitViewTransition(windows_in_splitview, divider_position); - } + // Arriving here the window state has changed to its clamshell window state. + // Since we need to keep the windows that were in splitview still be snapped + // in clamshell mode, change its window state to the corresponding snapped + // window state. + DoSplitViewTransition(windows_in_splitview, divider_position); } void TabletModeWindowManager::TrackWindow(aura::Window* window,
diff --git a/ash/wm/tablet_mode/tablet_mode_window_manager_unittest.cc b/ash/wm/tablet_mode/tablet_mode_window_manager_unittest.cc index 6e45537..a58e766 100644 --- a/ash/wm/tablet_mode/tablet_mode_window_manager_unittest.cc +++ b/ash/wm/tablet_mode/tablet_mode_window_manager_unittest.cc
@@ -25,7 +25,6 @@ #include "ash/test/ash_test_base.h" #include "ash/wm/mru_window_tracker.h" #include "ash/wm/overview/overview_controller.h" -#include "ash/wm/splitview/multi_display_overview_and_split_view_test.h" #include "ash/wm/splitview/split_view_constants.h" #include "ash/wm/splitview/split_view_controller.h" #include "ash/wm/splitview/split_view_utils.h" @@ -73,8 +72,7 @@ SetShelfAutoHideBehaviorPref(prefs, display_id, behavior); } -class TabletModeWindowManagerTest - : public MultiDisplayOverviewAndSplitViewTest { +class TabletModeWindowManagerTest : public AshTestBase { public: TabletModeWindowManagerTest() = default; ~TabletModeWindowManagerTest() override = default; @@ -191,7 +189,7 @@ // Test that creating the object and destroying it without any windows should // not cause any problems. -TEST_P(TabletModeWindowManagerTest, SimpleStart) { +TEST_F(TabletModeWindowManagerTest, SimpleStart) { TabletModeWindowManager* manager = CreateTabletModeWindowManager(); ASSERT_TRUE(manager); EXPECT_EQ(0, manager->GetNumberOfManagedWindows()); @@ -200,7 +198,7 @@ // Test that existing windows will handled properly when going into tablet // mode. -TEST_P(TabletModeWindowManagerTest, PreCreateWindows) { +TEST_F(TabletModeWindowManagerTest, PreCreateWindows) { // Bounds for windows we know can be controlled. gfx::Rect rect1(10, 10, 200, 50); gfx::Rect rect2(10, 60, 200, 50); @@ -260,7 +258,7 @@ } // The same test as the above but while a system modal dialog is shown. -TEST_P(TabletModeWindowManagerTest, GoingToMaximizedWithModalDialogPresent) { +TEST_F(TabletModeWindowManagerTest, GoingToMaximizedWithModalDialogPresent) { // Bounds for windows we know can be controlled. gfx::Rect rect1(10, 10, 200, 50); gfx::Rect rect2(10, 60, 200, 50); @@ -325,7 +323,7 @@ // Test that non-maximizable windows get properly handled when going into // tablet mode. -TEST_P(TabletModeWindowManagerTest, +TEST_F(TabletModeWindowManagerTest, PreCreateNonMaximizableButResizableWindows) { // The window bounds. gfx::Rect rect(10, 10, 200, 50); @@ -381,7 +379,7 @@ } // Test that creating windows while a maximizer exists picks them properly up. -TEST_P(TabletModeWindowManagerTest, CreateWindows) { +TEST_F(TabletModeWindowManagerTest, CreateWindows) { TabletModeWindowManager* manager = CreateTabletModeWindowManager(); ASSERT_TRUE(manager); EXPECT_EQ(0, manager->GetNumberOfManagedWindows()); @@ -444,7 +442,7 @@ // Test that a window which got created while the tablet mode window manager // is active gets restored to a usable (non tiny) size upon switching back. -TEST_P(TabletModeWindowManagerTest, +TEST_F(TabletModeWindowManagerTest, CreateWindowInTabletModeRestoresToUsefulSize) { TabletModeWindowManager* manager = CreateTabletModeWindowManager(); ASSERT_TRUE(manager); @@ -477,7 +475,7 @@ // Test that non-maximizable windows get properly handled when created in // tablet mode. -TEST_P(TabletModeWindowManagerTest, CreateNonMaximizableButResizableWindows) { +TEST_F(TabletModeWindowManagerTest, CreateNonMaximizableButResizableWindows) { // Create the manager and make sure that all qualifying windows were detected // and changed. TabletModeWindowManager* manager = CreateTabletModeWindowManager(); @@ -546,7 +544,7 @@ // Test that the restore state will be kept at its original value for // session restoration purposes. -TEST_P(TabletModeWindowManagerTest, TestRestoreIntegrety) { +TEST_F(TabletModeWindowManagerTest, TestRestoreIntegrety) { gfx::Rect bounds(10, 10, 200, 50); std::unique_ptr<aura::Window> normal_window(CreateWindowWithWidget(bounds)); @@ -587,7 +585,7 @@ // Test that windows which got created before the maximizer was created can be // destroyed while the maximizer is still running. -TEST_P(TabletModeWindowManagerTest, PreCreateWindowsDeleteWhileActive) { +TEST_F(TabletModeWindowManagerTest, PreCreateWindowsDeleteWhileActive) { TabletModeWindowManager* manager = NULL; { // Bounds for windows we know can be controlled. @@ -614,7 +612,7 @@ // Test that windows which got created while the maximizer was running can get // destroyed before the maximizer gets destroyed. -TEST_P(TabletModeWindowManagerTest, CreateWindowsAndDeleteWhileActive) { +TEST_F(TabletModeWindowManagerTest, CreateWindowsAndDeleteWhileActive) { TabletModeWindowManager* manager = CreateTabletModeWindowManager(); ASSERT_TRUE(manager); EXPECT_EQ(0, manager->GetNumberOfManagedWindows()); @@ -640,7 +638,7 @@ } // Test that windows which were maximized stay maximized. -TEST_P(TabletModeWindowManagerTest, MaximizedShouldRemainMaximized) { +TEST_F(TabletModeWindowManagerTest, MaximizedShouldRemainMaximized) { // Bounds for windows we know can be controlled. gfx::Rect rect(10, 10, 200, 50); std::unique_ptr<aura::Window> window( @@ -663,7 +661,7 @@ // Test that minimized windows do neither get maximized nor restored upon // entering tablet mode and get restored to their previous state after // leaving. -TEST_P(TabletModeWindowManagerTest, MinimizedWindowBehavior) { +TEST_F(TabletModeWindowManagerTest, MinimizedWindowBehavior) { // Bounds for windows we know can be controlled. gfx::Rect rect(10, 10, 200, 50); std::unique_ptr<aura::Window> initially_minimized_window( @@ -705,7 +703,7 @@ // Check that resizing the desktop does reposition unmaximizable, unresizable & // managed windows. -TEST_P(TabletModeWindowManagerTest, DesktopSizeChangeMovesUnmaximizable) { +TEST_F(TabletModeWindowManagerTest, DesktopSizeChangeMovesUnmaximizable) { UpdateDisplay("400x400"); // This window will move because it does not fit the new bounds. gfx::Rect rect(20, 300, 100, 100); @@ -742,7 +740,7 @@ // Check that windows return to original location if desktop size changes to // something else and back while in tablet mode. -TEST_P(TabletModeWindowManagerTest, SizeChangeReturnWindowToOriginalPos) { +TEST_F(TabletModeWindowManagerTest, SizeChangeReturnWindowToOriginalPos) { gfx::Rect rect(20, 140, 100, 100); std::unique_ptr<aura::Window> window(CreateFixedSizeNonMaximizableWindow( aura::client::WINDOW_TYPE_NORMAL, rect)); @@ -771,7 +769,7 @@ // Check that enabling of the tablet mode does not have an impact on the MRU // order of windows. -TEST_P(TabletModeWindowManagerTest, ModeChangeKeepsMRUOrder) { +TEST_F(TabletModeWindowManagerTest, ModeChangeKeepsMRUOrder) { gfx::Rect rect(20, 140, 100, 100); std::unique_ptr<aura::Window> w1(CreateFixedSizeNonMaximizableWindow( aura::client::WINDOW_TYPE_NORMAL, rect)); @@ -826,7 +824,7 @@ } // Check that a restore state change does always restore to maximized. -TEST_P(TabletModeWindowManagerTest, IgnoreRestoreStateChages) { +TEST_F(TabletModeWindowManagerTest, IgnoreRestoreStateChages) { gfx::Rect rect(20, 140, 100, 100); std::unique_ptr<aura::Window> w1( CreateWindow(aura::client::WINDOW_TYPE_NORMAL, rect)); @@ -843,7 +841,7 @@ } // Check that minimize and restore do the right thing. -TEST_P(TabletModeWindowManagerTest, TestMinimize) { +TEST_F(TabletModeWindowManagerTest, TestMinimize) { gfx::Rect rect(10, 10, 100, 100); std::unique_ptr<aura::Window> window( CreateWindow(aura::client::WINDOW_TYPE_NORMAL, rect)); @@ -872,7 +870,7 @@ // Tests that minimized window can restore to pre-minimized show state after // entering and leaving tablet mode (https://crbug.com/783310). -TEST_P(TabletModeWindowManagerTest, MinimizedEnterAndLeaveTabletMode) { +TEST_F(TabletModeWindowManagerTest, MinimizedEnterAndLeaveTabletMode) { gfx::Rect rect(10, 10, 100, 100); std::unique_ptr<aura::Window> window( CreateWindow(aura::client::WINDOW_TYPE_NORMAL, rect)); @@ -892,7 +890,7 @@ // Tests that pre-minimized window show state is persistent after entering and // leaving tablet mode, that is not cleared in tablet mode. -TEST_P(TabletModeWindowManagerTest, PersistPreMinimizedShowState) { +TEST_F(TabletModeWindowManagerTest, PersistPreMinimizedShowState) { gfx::Rect rect(10, 10, 100, 100); std::unique_ptr<aura::Window> window( CreateWindow(aura::client::WINDOW_TYPE_NORMAL, rect)); @@ -919,7 +917,7 @@ // Tests unminimizing in tablet mode and then existing tablet mode should have // pre-minimized window show state. -TEST_P(TabletModeWindowManagerTest, UnminimizeInTabletMode) { +TEST_F(TabletModeWindowManagerTest, UnminimizeInTabletMode) { // Tests restoring to maximized show state. gfx::Rect rect(10, 10, 100, 100); std::unique_ptr<aura::Window> window( @@ -945,7 +943,7 @@ // Check that a full screen window remains full screen upon entering maximize // mode. Furthermore, checks that this window is not full screen upon exiting // tablet mode if it was un-full-screened while in tablet mode. -TEST_P(TabletModeWindowManagerTest, KeepFullScreenModeOn) { +TEST_F(TabletModeWindowManagerTest, KeepFullScreenModeOn) { gfx::Rect rect(20, 140, 100, 100); std::unique_ptr<aura::Window> w1( CreateWindow(aura::client::WINDOW_TYPE_NORMAL, rect)); @@ -987,7 +985,7 @@ } // Similar to the fullscreen mode, the pinned mode should be kept as well. -TEST_P(TabletModeWindowManagerTest, KeepPinnedModeOn_Case1) { +TEST_F(TabletModeWindowManagerTest, KeepPinnedModeOn_Case1) { // Scenario: in the default state, pin a window, enter to the tablet mode, // then unpin. gfx::Rect rect(20, 140, 100, 100); @@ -1016,7 +1014,7 @@ EXPECT_FALSE(window_state->IsPinned()); } -TEST_P(TabletModeWindowManagerTest, KeepPinnedModeOn_Case2) { +TEST_F(TabletModeWindowManagerTest, KeepPinnedModeOn_Case2) { // Scenario: in the tablet mode, pin a window, exit tablet mode, then unpin. gfx::Rect rect(20, 140, 100, 100); std::unique_ptr<aura::Window> w1( @@ -1053,7 +1051,7 @@ EXPECT_FALSE(window_state->IsPinned()); } -TEST_P(TabletModeWindowManagerTest, KeepPinnedModeOn_Case3) { +TEST_F(TabletModeWindowManagerTest, KeepPinnedModeOn_Case3) { // Scenario: in the default state, pin a window, enter to the tablet mode, // exit from the tablet mode, then unpin. gfx::Rect rect(20, 140, 100, 100); @@ -1090,7 +1088,7 @@ DestroyTabletModeWindowManager(); } -TEST_P(TabletModeWindowManagerTest, KeepPinnedModeOn_Case4) { +TEST_F(TabletModeWindowManagerTest, KeepPinnedModeOn_Case4) { // Scenario: in tablet mode, pin a window, exit tablet mode, enter tablet mode // again, then unpin. gfx::Rect rect(20, 140, 100, 100); @@ -1130,7 +1128,7 @@ // Verifies that if a window is un-full-screened while in tablet mode, // other changes to that window's state (such as minimizing it) are // preserved upon exiting tablet mode. -TEST_P(TabletModeWindowManagerTest, MinimizePreservedAfterLeavingFullscreen) { +TEST_F(TabletModeWindowManagerTest, MinimizePreservedAfterLeavingFullscreen) { gfx::Rect rect(20, 140, 100, 100); std::unique_ptr<aura::Window> w1( CreateWindow(aura::client::WINDOW_TYPE_NORMAL, rect)); @@ -1157,7 +1155,7 @@ // Tests that the auto-hide behavior is not affected when entering/exiting // tablet mode. -TEST_P(TabletModeWindowManagerTest, DoNotDisableAutoHideBehaviorOnTabletMode) { +TEST_F(TabletModeWindowManagerTest, DoNotDisableAutoHideBehaviorOnTabletMode) { Shelf* shelf = GetPrimaryShelf(); SetShelfAutoHideBehaviorPref(GetPrimaryDisplay().id(), ShelfAutoHideBehavior::kAlways); @@ -1170,7 +1168,7 @@ // Check that full screen mode can be turned on in tablet mode and remains // upon coming back. -TEST_P(TabletModeWindowManagerTest, AllowFullScreenMode) { +TEST_F(TabletModeWindowManagerTest, AllowFullScreenMode) { gfx::Rect rect(20, 140, 100, 100); std::unique_ptr<aura::Window> w1( CreateWindow(aura::client::WINDOW_TYPE_NORMAL, rect)); @@ -1209,7 +1207,7 @@ // Check that the full screen mode will stay active when the tablet mode is // ended. -TEST_P(TabletModeWindowManagerTest, +TEST_F(TabletModeWindowManagerTest, FullScreenModeRemainsWhenCreatedInTabletMode) { CreateTabletModeWindowManager(); @@ -1228,7 +1226,7 @@ // Check that the full screen mode will stay active throughout a maximzied mode // session. -TEST_P(TabletModeWindowManagerTest, +TEST_F(TabletModeWindowManagerTest, FullScreenModeRemainsThroughTabletModeSwitch) { gfx::Rect rect(20, 140, 100, 100); std::unique_ptr<aura::Window> w1( @@ -1245,7 +1243,7 @@ } // Check that an empty window does not get restored to a tiny size. -TEST_P(TabletModeWindowManagerTest, +TEST_F(TabletModeWindowManagerTest, CreateAndMaximizeInTabletModeShouldRetoreToGoodSizeGoingToDefault) { CreateTabletModeWindowManager(); gfx::Rect rect; @@ -1276,7 +1274,7 @@ } // Check that non maximizable windows cannot be dragged by the user. -TEST_P(TabletModeWindowManagerTest, TryToDesktopSizeDragUnmaximizable) { +TEST_F(TabletModeWindowManagerTest, TryToDesktopSizeDragUnmaximizable) { gfx::Rect rect(10, 10, 100, 100); std::unique_ptr<aura::Window> window(CreateFixedSizeNonMaximizableWindow( aura::client::WINDOW_TYPE_NORMAL, rect)); @@ -1324,7 +1322,7 @@ // Tests that windows with the always-on-top property are not managed by // the TabletModeWindowManager while tablet mode is engaged (i.e., // they remain free-floating). -TEST_P(TabletModeWindowManagerTest, AlwaysOnTopWindows) { +TEST_F(TabletModeWindowManagerTest, AlwaysOnTopWindows) { gfx::Rect rect1(10, 10, 200, 50); gfx::Rect rect2(20, 140, 100, 100); @@ -1389,7 +1387,7 @@ // Tests that windows that can control maximized bounds are not maximized // and not tracked. -TEST_P(TabletModeWindowManagerTest, DontMaximizeClientManagedWindows) { +TEST_F(TabletModeWindowManagerTest, DontMaximizeClientManagedWindows) { gfx::Rect rect(10, 10, 200, 50); std::unique_ptr<aura::Window> window( CreateWindow(aura::client::WINDOW_TYPE_NORMAL, rect)); @@ -1403,7 +1401,7 @@ // Verify that if tablet mode is started in the lock screen, windows will still // be maximized after leaving the lock screen. -TEST_P(TabletModeWindowManagerTest, CreateManagerInLockScreen) { +TEST_F(TabletModeWindowManagerTest, CreateManagerInLockScreen) { gfx::Rect rect(10, 10, 200, 50); std::unique_ptr<aura::Window> window( CreateWindow(aura::client::WINDOW_TYPE_NORMAL, rect)); @@ -1476,7 +1474,7 @@ } // namespace -TEST_P(TabletModeWindowManagerTest, StateTypeChange) { +TEST_F(TabletModeWindowManagerTest, StateTypeChange) { TestObserver observer; gfx::Rect rect(10, 10, 200, 50); std::unique_ptr<aura::Window> window( @@ -1529,7 +1527,7 @@ // Test that the restore state will be kept at its original value for // session restoration purposes. -TEST_P(TabletModeWindowManagerTest, SetPropertyOnUnmanagedWindow) { +TEST_F(TabletModeWindowManagerTest, SetPropertyOnUnmanagedWindow) { Shell::Get()->tablet_mode_controller()->SetEnabledForTest(true); InitParams params(aura::client::WINDOW_TYPE_NORMAL); params.bounds = gfx::Rect(10, 10, 100, 100); @@ -1542,7 +1540,7 @@ } // Test that the minimized window bounds doesn't change until it's unminimized. -TEST_P(TabletModeWindowManagerTest, DontChangeBoundsForMinimizedWindow) { +TEST_F(TabletModeWindowManagerTest, DontChangeBoundsForMinimizedWindow) { gfx::Rect rect(10, 10, 200, 50); std::unique_ptr<aura::Window> window( CreateWindow(aura::client::WINDOW_TYPE_NORMAL, rect)); @@ -1568,7 +1566,7 @@ // Test that if a window is currently in tab-dragging process, its window bounds // should not updated. -TEST_P(TabletModeWindowManagerTest, DontChangeBoundsForTabDraggingWindow) { +TEST_F(TabletModeWindowManagerTest, DontChangeBoundsForTabDraggingWindow) { gfx::Rect rect(0, 0, 200, 200); std::unique_ptr<aura::Window> window( CreateWindow(aura::client::WINDOW_TYPE_NORMAL, rect)); @@ -1582,7 +1580,7 @@ } // Make sure that transient children should not be maximized. -TEST_P(TabletModeWindowManagerTest, DontMaximizeTransientChild) { +TEST_F(TabletModeWindowManagerTest, DontMaximizeTransientChild) { gfx::Rect rect(0, 0, 200, 200); std::unique_ptr<aura::Window> parent( CreateWindow(aura::client::WINDOW_TYPE_NORMAL, rect)); @@ -1598,7 +1596,7 @@ EXPECT_EQ(rect.size(), child->bounds().size()); } -TEST_P(TabletModeWindowManagerTest, AllowNormalWindowBoundsChangeByVK) { +TEST_F(TabletModeWindowManagerTest, AllowNormalWindowBoundsChangeByVK) { UpdateDisplay("1200x800"); gfx::Rect rect(0, 0, 1200, 600); std::unique_ptr<aura::Window> window(CreateFixedSizeNonMaximizableWindow( @@ -1619,143 +1617,8 @@ EXPECT_EQ(window->bounds(), window_bounds); } -class TabletModeWindowManagerWithoutClamshellSplitViewTest - : public TabletModeWindowManagerTest { - public: - TabletModeWindowManagerWithoutClamshellSplitViewTest() = default; - TabletModeWindowManagerWithoutClamshellSplitViewTest( - const TabletModeWindowManagerWithoutClamshellSplitViewTest&) = delete; - TabletModeWindowManagerWithoutClamshellSplitViewTest& operator=( - const TabletModeWindowManagerWithoutClamshellSplitViewTest&) = delete; - ~TabletModeWindowManagerWithoutClamshellSplitViewTest() override = default; - - // AshTestBase: - void SetUp() override { - scoped_feature_list_.InitAndDisableFeature( - features::kDragToSnapInClamshellMode); - TabletModeWindowManagerTest::SetUp(); - } - - private: - base::test::ScopedFeatureList scoped_feature_list_; -}; - -// Test clamshell mode <-> tablet mode transition if clamshell splitscreen is -// not enabled. -TEST_P(TabletModeWindowManagerWithoutClamshellSplitViewTest, - ClamshellTabletTransitionTest) { - gfx::Rect rect(10, 10, 200, 50); - std::unique_ptr<aura::Window> window( - CreateWindow(aura::client::WINDOW_TYPE_NORMAL, rect)); - - // 1. Clamshell -> tablet. If overview is active, it should be ended after - // transition since clamshell splitview is not enabled. - OverviewController* overview_controller = Shell::Get()->overview_controller(); - EXPECT_TRUE(overview_controller->StartOverview()); - EXPECT_TRUE(overview_controller->InOverviewSession()); - TabletModeWindowManager* manager = CreateTabletModeWindowManager(); - EXPECT_TRUE(manager); - EXPECT_FALSE(overview_controller->InOverviewSession()); - - // 2. Tablet -> Clamshell. If overview is inactive, it should still be kept - // inactive after transition. - DestroyTabletModeWindowManager(); - EXPECT_FALSE(overview_controller->InOverviewSession()); - - // 3. Clamshell -> tablet. If overview is inactive, it should still be kept - // inactive after transition. All windows will be maximized. - CreateTabletModeWindowManager(); - EXPECT_FALSE(overview_controller->InOverviewSession()); - EXPECT_TRUE(WindowState::Get(window.get())->IsMaximized()); - - // 4. Tablet -> Clamshell. The window should be restored to its old state. - DestroyTabletModeWindowManager(); - EXPECT_FALSE(overview_controller->InOverviewSession()); - EXPECT_FALSE(WindowState::Get(window.get())->IsMaximized()); - - // 5. Clamshell -> Tablet. If the window is snapped, it will be carried over - // to splitview in tablet mode. - const WMEvent event(WM_EVENT_SNAP_LEFT); - WindowState::Get(window.get())->OnWMEvent(&event); - EXPECT_TRUE(WindowState::Get(window.get())->IsSnapped()); - // After transition, we should be in single split screen. - CreateTabletModeWindowManager(); - EXPECT_TRUE(overview_controller->InOverviewSession()); - EXPECT_TRUE(split_view_controller()->InSplitViewMode()); - EXPECT_TRUE(WindowState::Get(window.get())->IsSnapped()); - - // 6. Tablet -> Clamshell. Since clamshell splitscreen is not enabled, oveview - // and splitview will be both ended, and the window is restored to its old - // state. - DestroyTabletModeWindowManager(); - EXPECT_FALSE(overview_controller->InOverviewSession()); - EXPECT_FALSE(split_view_controller()->InSplitViewMode()); - EXPECT_TRUE(WindowState::Get(window.get())->IsSnapped()); - - // Create another normal state window to test additional scenarios. - std::unique_ptr<aura::Window> window2( - CreateWindow(aura::client::WINDOW_TYPE_NORMAL, rect)); - wm::ActivateWindow(window2.get()); - - // 7. Clamshell -> Tablet. Since the top active window is not a snapped - // window, all windows will be maximized after the transition. - CreateTabletModeWindowManager(); - EXPECT_TRUE(WindowState::Get(window.get())->IsMaximized()); - EXPECT_TRUE(WindowState::Get(window2.get())->IsMaximized()); - - // 8. Tablet -> Clamshell. If the two windows are in splitscreen in tablet - // mode, after transition they will restore to their old window states. - split_view_controller()->SnapWindow(window.get(), SplitViewController::LEFT); - split_view_controller()->SnapWindow(window2.get(), - SplitViewController::RIGHT); - EXPECT_TRUE(split_view_controller()->InSplitViewMode()); - DestroyTabletModeWindowManager(); - EXPECT_FALSE(split_view_controller()->InSplitViewMode()); - EXPECT_TRUE(WindowState::Get(window.get())->IsSnapped()); - EXPECT_FALSE(WindowState::Get(window2.get())->IsSnapped()); - - // 9. Clamshell -> Tablet. If the top two windows are snapped to both sides of - // the screen, they will carry over to tablet split view mode. - const WMEvent event2(WM_EVENT_SNAP_RIGHT); - WindowState::Get(window2.get())->OnWMEvent(&event2); - CreateTabletModeWindowManager(); - EXPECT_TRUE(split_view_controller()->InSplitViewMode()); - - // 10. Tablet -> Clamshell. If overview and splitview are both active, they - // will be both ended after the transition. - overview_controller->StartOverview(); - EXPECT_TRUE(overview_controller->InOverviewSession()); - EXPECT_TRUE(split_view_controller()->InSplitViewMode()); - DestroyTabletModeWindowManager(); - EXPECT_FALSE(overview_controller->InOverviewSession()); - EXPECT_FALSE(split_view_controller()->InSplitViewMode()); -} - -// The class to test TabletModeWindowManagerTest related functionalities when -// clamshell split screen feature is enabled. -class TabletModeWindowManagerWithClamshellSplitViewTest - : public TabletModeWindowManagerTest { - public: - TabletModeWindowManagerWithClamshellSplitViewTest() = default; - ~TabletModeWindowManagerWithClamshellSplitViewTest() override = default; - - // AshTestBase: - void SetUp() override { - scoped_feature_list_.InitAndEnableFeature( - features::kDragToSnapInClamshellMode); - TabletModeWindowManagerTest::SetUp(); - DCHECK(ShouldAllowSplitView()); - } - - private: - base::test::ScopedFeatureList scoped_feature_list_; - DISALLOW_COPY_AND_ASSIGN(TabletModeWindowManagerWithClamshellSplitViewTest); -}; - -// Test clamshell mode <-> tablet mode transition if clamshell splitscreen is -// enabled. -TEST_P(TabletModeWindowManagerWithClamshellSplitViewTest, - ClamshellTabletTransitionTest) { +// Test clamshell mode <-> tablet mode transition. +TEST_F(TabletModeWindowManagerTest, ClamshellTabletTransitionTest) { gfx::Rect rect(10, 10, 200, 50); std::unique_ptr<aura::Window> window( CreateWindow(aura::client::WINDOW_TYPE_NORMAL, rect)); @@ -1852,7 +1715,7 @@ } // Test the divider position value during tablet <-> clamshell transition. -TEST_P(TabletModeWindowManagerWithClamshellSplitViewTest, +TEST_F(TabletModeWindowManagerTest, ClamshellTabletTransitionDividerPositionTest) { UpdateDisplay("1200x800"); gfx::Rect rect(10, 10, 200, 50); @@ -1909,8 +1772,7 @@ // Test that when switching from clamshell mode to tablet mode, if overview mode // is active, home launcher is hidden. And after overview mode is dismissed, // home launcher will be shown again. -TEST_P(TabletModeWindowManagerWithClamshellSplitViewTest, - HomeLauncherVisibilityTest) { +TEST_F(TabletModeWindowManagerTest, HomeLauncherVisibilityTest) { gfx::Rect rect(10, 10, 200, 50); std::unique_ptr<aura::Window> window( CreateWindow(aura::client::WINDOW_TYPE_NORMAL, rect)); @@ -1947,12 +1809,4 @@ EXPECT_TRUE(home_screen_window->TargetVisibility()); } -INSTANTIATE_TEST_SUITE_P(All, TabletModeWindowManagerTest, testing::Bool()); -INSTANTIATE_TEST_SUITE_P(All, - TabletModeWindowManagerWithoutClamshellSplitViewTest, - testing::Bool()); -INSTANTIATE_TEST_SUITE_P(All, - TabletModeWindowManagerWithClamshellSplitViewTest, - testing::Bool()); - } // namespace ash
diff --git a/ash/wm/window_cycle_controller.cc b/ash/wm/window_cycle/window_cycle_controller.cc similarity index 91% rename from ash/wm/window_cycle_controller.cc rename to ash/wm/window_cycle/window_cycle_controller.cc index 0a6423f..6d21159 100644 --- a/ash/wm/window_cycle_controller.cc +++ b/ash/wm/window_cycle/window_cycle_controller.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "ash/wm/window_cycle_controller.h" +#include "ash/wm/window_cycle/window_cycle_controller.h" #include "ash/events/event_rewriter_controller_impl.h" #include "ash/metrics/task_switch_metrics_recorder.h" @@ -18,8 +18,8 @@ #include "ash/wm/desks/desks_util.h" #include "ash/wm/mru_window_tracker.h" #include "ash/wm/screen_pinning_controller.h" -#include "ash/wm/window_cycle_event_filter.h" -#include "ash/wm/window_cycle_list.h" +#include "ash/wm/window_cycle/window_cycle_event_filter.h" +#include "ash/wm/window_cycle/window_cycle_list.h" #include "ash/wm/window_state.h" #include "ash/wm/window_util.h" #include "base/metrics/histogram_macros.h" @@ -89,8 +89,6 @@ if (!IsCycling()) StartCycling(); - // TODO(crbug.com/1157100): Handle window highlighting after switching - // alt-tab mode. Step(direction); } @@ -175,10 +173,23 @@ } void WindowCycleController::SetAltTabMode(DesksMruType alt_tab_mode) { + DCHECK(features::IsBentoEnabled()); if (alt_tab_mode_ == alt_tab_mode) return; alt_tab_mode_ = alt_tab_mode; MaybeResetCycleList(); + + is_switching_mode_ = true; + // When user first press alt + tab, `HandleCycleForwardMRU` triggers + // `HandleCycleWindow(WindowCycleController::FORWARD)` since it considers + // the initial tab as forward cycling. Therefore, switching the mode + // should imitate the same forward cycling behavior after the cycle is reset. + HandleCycleWindow(WindowCycleController::FORWARD); + is_switching_mode_ = false; +} + +bool WindowCycleController::IsSwitchingMode() { + return features::IsBentoEnabled() && is_switching_mode_; } bool WindowCycleController::IsAltTabPerActiveDesk() {
diff --git a/ash/wm/window_cycle_controller.h b/ash/wm/window_cycle/window_cycle_controller.h similarity index 89% rename from ash/wm/window_cycle_controller.h rename to ash/wm/window_cycle/window_cycle_controller.h index d24fd15a..06893da5 100644 --- a/ash/wm/window_cycle_controller.h +++ b/ash/wm/window_cycle/window_cycle_controller.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef ASH_WM_WINDOW_CYCLE_CONTROLLER_H_ -#define ASH_WM_WINDOW_CYCLE_CONTROLLER_H_ +#ifndef ASH_WM_WINDOW_CYCLE_WINDOW_CYCLE_CONTROLLER_H_ +#define ASH_WM_WINDOW_CYCLE_WINDOW_CYCLE_CONTROLLER_H_ #include <memory> @@ -95,6 +95,12 @@ // to all desk unless LimitAltTabToActiveDesk flag is explicitly enabled. bool IsAltTabPerActiveDesk(); + // Returns true while switching the alt-tab mode and Bento flag is enabled. + // This helps `Scroll()` and `Step()` distinguish between pressing tabs and + // switching mode, so they refresh |current_index_| and the highlighted + // window correctly. + bool IsSwitchingMode(); + private: // Gets a list of windows from the currently open windows, removing windows // with transient roots already in the list. The returned list of windows @@ -130,9 +136,12 @@ // TODO(crbug.com/1157105): Store per-desk mode in primary user pref. DesksMruType alt_tab_mode_ = DesksMruType::kAllDesks; + // Tracks whether alt-tab mode is currently switching or not. + bool is_switching_mode_ = false; + DISALLOW_COPY_AND_ASSIGN(WindowCycleController); }; } // namespace ash -#endif // ASH_WM_WINDOW_CYCLE_CONTROLLER_H_ +#endif // ASH_WM_WINDOW_CYCLE_WINDOW_CYCLE_CONTROLLER_H_
diff --git a/ash/wm/window_cycle_controller_unittest.cc b/ash/wm/window_cycle/window_cycle_controller_unittest.cc similarity index 90% rename from ash/wm/window_cycle_controller_unittest.cc rename to ash/wm/window_cycle/window_cycle_controller_unittest.cc index 4c5a55d7..0371c1d 100644 --- a/ash/wm/window_cycle_controller_unittest.cc +++ b/ash/wm/window_cycle/window_cycle_controller_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "ash/wm/window_cycle_controller.h" +#include "ash/wm/window_cycle/window_cycle_controller.h" #include <algorithm> #include <memory> @@ -27,7 +27,7 @@ #include "ash/wm/desks/desks_controller.h" #include "ash/wm/desks/desks_test_util.h" #include "ash/wm/tablet_mode/tablet_mode_controller_test_api.h" -#include "ash/wm/window_cycle_list.h" +#include "ash/wm/window_cycle/window_cycle_list.h" #include "ash/wm/window_state.h" #include "ash/wm/window_util.h" #include "ash/wm/wm_event.h" @@ -86,9 +86,9 @@ } // namespace +using aura::Window; using aura::test::CreateTestWindowWithId; using aura::test::TestWindowDelegate; -using aura::Window; class WindowCycleControllerTest : public AshTestBase { public: @@ -797,8 +797,10 @@ display::test::CreateDisplayIdListN(primary_id, 2); auto placements = { - display::DisplayPlacement::BOTTOM, display::DisplayPlacement::TOP, - display::DisplayPlacement::LEFT, display::DisplayPlacement::RIGHT, + display::DisplayPlacement::BOTTOM, + display::DisplayPlacement::TOP, + display::DisplayPlacement::LEFT, + display::DisplayPlacement::RIGHT, }; gfx::Rect expected_bounds; @@ -989,8 +991,8 @@ class InteractiveWindowCycleControllerTest : public WindowCycleControllerTest { public: InteractiveWindowCycleControllerTest() = default; - InteractiveWindowCycleControllerTest(const InteractiveWindowCycleControllerTest&) = - delete; + InteractiveWindowCycleControllerTest( + const InteractiveWindowCycleControllerTest&) = delete; InteractiveWindowCycleControllerTest& operator=( const InteractiveWindowCycleControllerTest&) = delete; ~InteractiveWindowCycleControllerTest() override = default; @@ -1538,4 +1540,132 @@ waiter.Wait(); } +// Tests that switching between modes correctly reset the alt-tab-highlighted +// window to the second most recently used window, i.e. the next window to tab +// into from the currently used window. Since the window cycle list is ordered +// by MRU, such window is therefore the second window in the MRU list. +TEST_F(ModeSelectionWindowCycleControllerTest, + SwitchingModeUpdatesWindowHighlight) { + WindowCycleController* cycle_controller = + Shell::Get()->window_cycle_controller(); + + // Create two windows for desk1 and three windows for desk2 in the reversed + // order of the most recently active window. + auto win4 = CreateAppWindow(gfx::Rect(0, 0, 250, 100)); + auto win3 = CreateAppWindow(gfx::Rect(50, 50, 200, 200)); + auto* desks_controller = DesksController::Get(); + desks_controller->NewDesk(DesksCreationRemovalSource::kButton); + ASSERT_EQ(2u, desks_controller->desks().size()); + const Desk* desk_2 = desks_controller->desks()[1].get(); + ActivateDesk(desk_2); + EXPECT_EQ(desk_2, desks_controller->active_desk()); + auto win2 = CreateAppWindow(gfx::Rect(0, 0, 300, 200)); + auto win1 = CreateAppWindow(gfx::Rect(10, 30, 400, 200)); + auto win0 = CreateAppWindow(gfx::Rect(10, 30, 400, 200)); + + // Enter the all-desk mode by default with the window order [0, 1, 2, 3 ,4]. + cycle_controller->StartCycling(); + cycle_controller->HandleCycleWindow(WindowCycleController::FORWARD); + + EXPECT_FALSE(cycle_controller->IsAltTabPerActiveDesk()); + auto cycle_windows = GetWindows(cycle_controller); + // The window list is MRU ordered. + EXPECT_EQ(win0.get(), cycle_windows[0]); + EXPECT_EQ(win1.get(), cycle_windows[1]); + EXPECT_EQ(win2.get(), cycle_windows[2]); + EXPECT_EQ(win3.get(), cycle_windows[3]); + EXPECT_EQ(win4.get(), cycle_windows[4]); + // Alt-Tab should highlight the second most recently used window, which is + // the second window in the MRU list, win1. + EXPECT_EQ(win1.get(), GetTargetWindow()); + + // Step to win2 and win3, so we are now select a window in a non-active desk. + cycle_controller->HandleCycleWindow(WindowCycleController::FORWARD); + EXPECT_EQ(win2.get(), GetTargetWindow()); + cycle_controller->HandleCycleWindow(WindowCycleController::FORWARD); + EXPECT_EQ(win3.get(), GetTargetWindow()); + + // Switching from the all-desks mode, which highlights a non-current-desk + // window to the current-desk mode [0, 1, 2] should resolve the highlight + // correctly to win1, the second window in the cycle list. + SwitchPerDeskAltTabMode(true); + EXPECT_EQ(win1.get(), GetTargetWindow()); + EXPECT_EQ(win1.get(), cycle_windows[1]); + // Step to win2. + cycle_controller->HandleCycleWindow(WindowCycleController::FORWARD); + EXPECT_EQ(win2.get(), GetTargetWindow()); + + // Switching back to the all-desk mode should reset highlight to win1 again. + SwitchPerDeskAltTabMode(false); + EXPECT_EQ(win1.get(), GetTargetWindow()); + cycle_controller->CompleteCycling(); +} + +// Similar to `SwitchingModeUpdatesWindowHighlight`, tests that switching the +// alt-tab mode updates the highlighted window to the first window (most +// recently used) in the special case where all windows are minimized. +// When they are minimized, cycling forward should help unminimize the most +// recently used window rather than trying to open the second most recently +// used window. +TEST_F(ModeSelectionWindowCycleControllerTest, + SwitchingModeUpdatesMinimizedWindowHighlight) { + WindowCycleController* cycle_controller = + Shell::Get()->window_cycle_controller(); + + // Create two windows for desk1 and three windows for desk2 in the reversed + // order of the most recently active window. + auto win4 = CreateAppWindow(gfx::Rect(0, 0, 250, 100)); + auto win3 = CreateAppWindow(gfx::Rect(50, 50, 200, 200)); + auto* desks_controller = DesksController::Get(); + desks_controller->NewDesk(DesksCreationRemovalSource::kButton); + ASSERT_EQ(2u, desks_controller->desks().size()); + const Desk* desk_2 = desks_controller->desks()[1].get(); + ActivateDesk(desk_2); + EXPECT_EQ(desk_2, desks_controller->active_desk()); + auto win2 = CreateAppWindow(gfx::Rect(0, 0, 300, 200)); + auto win1 = CreateAppWindow(gfx::Rect(10, 30, 400, 200)); + auto win0 = CreateAppWindow(gfx::Rect(10, 30, 400, 200)); + + // Minimize all windows to test this special case. + WindowState::Get(win4.get())->Minimize(); + WindowState::Get(win3.get())->Minimize(); + WindowState::Get(win2.get())->Minimize(); + WindowState::Get(win1.get())->Minimize(); + WindowState::Get(win0.get())->Minimize(); + EXPECT_FALSE(WindowState::Get(win0.get())->IsActive()); + EXPECT_FALSE(WindowState::Get(win1.get())->IsActive()); + EXPECT_FALSE(WindowState::Get(win2.get())->IsActive()); + EXPECT_FALSE(WindowState::Get(win3.get())->IsActive()); + EXPECT_FALSE(WindowState::Get(win4.get())->IsActive()); + + // Enter the all-desk mode by default with the window order [0, 1, 2, 3 ,4]. + cycle_controller->HandleCycleWindow(WindowCycleController::FORWARD); + EXPECT_FALSE(cycle_controller->IsAltTabPerActiveDesk()); + auto cycle_windows = GetWindows(cycle_controller); + EXPECT_EQ(5u, GetWindowCycleItemViews().size()); + // The window list is MRU ordered. + EXPECT_EQ(win0.get(), cycle_windows[0]); + EXPECT_EQ(win1.get(), cycle_windows[1]); + EXPECT_EQ(win2.get(), cycle_windows[2]); + EXPECT_EQ(win3.get(), cycle_windows[3]); + EXPECT_EQ(win4.get(), cycle_windows[4]); + // Step forward a few times and switch to all-desks mode. This should + // highlight win0, the first window in the current-desk cycle list. + cycle_controller->HandleCycleWindow(WindowCycleController::FORWARD); + cycle_controller->HandleCycleWindow(WindowCycleController::FORWARD); + SwitchPerDeskAltTabMode(true); + EXPECT_EQ(3u, GetWindowCycleItemViews().size()); + EXPECT_EQ(win0.get(), GetTargetWindow()); + EXPECT_EQ(win0.get(), cycle_windows[0]); + + // Stepping to win1 and switching back to the all-desk mode should reset + // a highlight to win0 again. + cycle_controller->HandleCycleWindow(WindowCycleController::FORWARD); + EXPECT_EQ(win1.get(), GetTargetWindow()); + SwitchPerDeskAltTabMode(false); + EXPECT_EQ(5u, GetWindowCycleItemViews().size()); + EXPECT_EQ(win0.get(), GetTargetWindow()); + cycle_controller->CompleteCycling(); +} + } // namespace ash
diff --git a/ash/wm/window_cycle_event_filter.cc b/ash/wm/window_cycle/window_cycle_event_filter.cc similarity index 97% rename from ash/wm/window_cycle_event_filter.cc rename to ash/wm/window_cycle/window_cycle_event_filter.cc index ba5b341..84ef3df 100644 --- a/ash/wm/window_cycle_event_filter.cc +++ b/ash/wm/window_cycle/window_cycle_event_filter.cc
@@ -2,14 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "ash/wm/window_cycle_event_filter.h" +#include "ash/wm/window_cycle/window_cycle_event_filter.h" #include "ash/accelerators/debug_commands.h" #include "ash/display/screen_ash.h" #include "ash/public/cpp/ash_features.h" #include "ash/shell.h" -#include "ash/wm/window_cycle_controller.h" -#include "ash/wm/window_cycle_list.h" +#include "ash/wm/window_cycle/window_cycle_controller.h" +#include "ash/wm/window_cycle/window_cycle_list.h" #include "base/bind.h" #include "ui/events/event.h" #include "ui/wm/core/coordinate_conversion.h"
diff --git a/ash/wm/window_cycle_event_filter.h b/ash/wm/window_cycle/window_cycle_event_filter.h similarity index 92% rename from ash/wm/window_cycle_event_filter.h rename to ash/wm/window_cycle/window_cycle_event_filter.h index 19c05a24..6ba936606 100644 --- a/ash/wm/window_cycle_event_filter.h +++ b/ash/wm/window_cycle/window_cycle_event_filter.h
@@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef ASH_WM_WINDOW_CYCLE_EVENT_FILTER_H_ -#define ASH_WM_WINDOW_CYCLE_EVENT_FILTER_H_ +#ifndef ASH_WM_WINDOW_CYCLE_WINDOW_CYCLE_EVENT_FILTER_H_ +#define ASH_WM_WINDOW_CYCLE_WINDOW_CYCLE_EVENT_FILTER_H_ #include "ash/ash_export.h" -#include "ash/wm/window_cycle_controller.h" +#include "ash/wm/window_cycle/window_cycle_controller.h" #include "base/macros.h" #include "base/timer/timer.h" #include "ui/events/event_handler.h" @@ -88,4 +88,4 @@ } // namespace ash -#endif // ASH_WM_WINDOW_CYCLE_EVENT_FILTER_H_ +#endif // ASH_WM_WINDOW_CYCLE_WINDOW_CYCLE_EVENT_FILTER_H_
diff --git a/ash/wm/window_cycle_list.cc b/ash/wm/window_cycle/window_cycle_list.cc similarity index 96% rename from ash/wm/window_cycle_list.cc rename to ash/wm/window_cycle/window_cycle_list.cc index 95c443b5..e1210407 100644 --- a/ash/wm/window_cycle_list.cc +++ b/ash/wm/window_cycle/window_cycle_list.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "ash/wm/window_cycle_list.h" +#include "ash/wm/window_cycle/window_cycle_list.h" #include <map> #include <string> @@ -20,8 +20,8 @@ #include "ash/strings/grit/ash_strings.h" #include "ash/style/ash_color_provider.h" #include "ash/style/default_colors.h" -#include "ash/wm/window_cycle_tab_slider.h" -#include "ash/wm/window_cycle_tab_slider_button.h" +#include "ash/wm/window_cycle/window_cycle_tab_slider.h" +#include "ash/wm/window_cycle/window_cycle_tab_slider_button.h" #include "ash/wm/window_mini_view.h" #include "ash/wm/window_preview_view.h" #include "ash/wm/window_state.h" @@ -668,7 +668,6 @@ } void WindowCycleList::ReplaceWindows(const WindowList& windows) { - RemoveAllWindows(); windows_ = windows; @@ -691,7 +690,16 @@ } const int offset = direction == WindowCycleController::FORWARD ? 1 : -1; - SetFocusedWindow(windows_[GetOffsettedWindowIndex(offset)]); + if (offset == 1 && !wm::IsActiveWindow(windows_[0]) && + Shell::Get()->window_cycle_controller()->IsSwitchingMode()) { + // Similar to `WindowCycleList::Scroll()`, when switching to alt-tab mode, + // if all windows are minimized, the starting window should be the first + // one rather than the second. Note that during entering alt-tab mode, + // `SetFocusedWindow()` does nothing, so we don't need to prevent it here. + SetFocusedWindow(windows_[0]); + } else { + SetFocusedWindow(windows_[GetOffsettedWindowIndex(offset)]); + } Scroll(offset); } @@ -826,7 +834,7 @@ widget_rect.ClampToCenteredSize(cycle_view_->GetPreferredSize()); params.bounds = widget_rect; - screen_observer_.Add(display::Screen::GetScreen()); + screen_observer_.Observe(display::Screen::GetScreen()); widget->Init(std::move(params)); widget->Show(); cycle_view_->FadeInLayer(); @@ -876,16 +884,17 @@ DCHECK(static_cast<size_t>(current_index_) < windows_.size()); - if (!cycle_view_ && current_index_ == 0) { - // Special case the situation where we're cycling forward but the MRU - // window is not active. This occurs when all windows are minimized. The - // starting window should be the first one rather than the second. - if (offset == 1 && !wm::IsActiveWindow(windows_[0])) - current_index_ = -1; + // If alt-tab is entered or switched to the other mode, check the following + // special case: user is cycling forward but the MRU window is not active. + // This occurs when all windows are minimized. The starting window should be + // the first one rather than the second. + if ((!cycle_view_ || + Shell::Get()->window_cycle_controller()->IsSwitchingMode()) && + current_index_ == 0 && offset == 1 && !wm::IsActiveWindow(windows_[0])) { + current_index_ = -1; } current_index_ = GetOffsettedWindowIndex(offset); - if (ShouldShowUi()) { if (current_index_ > 1) InitWindowCycleView();
diff --git a/ash/wm/window_cycle_list.h b/ash/wm/window_cycle/window_cycle_list.h similarity index 93% rename from ash/wm/window_cycle_list.h rename to ash/wm/window_cycle/window_cycle_list.h index d97e0a2..e634a727 100644 --- a/ash/wm/window_cycle_list.h +++ b/ash/wm/window_cycle/window_cycle_list.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_WM_WINDOW_CYCLE_LIST_H_ -#define ASH_WM_WINDOW_CYCLE_LIST_H_ +#ifndef ASH_WM_WINDOW_CYCLE_WINDOW_CYCLE_LIST_H_ +#define ASH_WM_WINDOW_CYCLE_WINDOW_CYCLE_LIST_H_ #include <memory> #include <vector> #include "ash/ash_export.h" -#include "ash/wm/window_cycle_controller.h" -#include "base/scoped_observer.h" +#include "ash/wm/window_cycle/window_cycle_controller.h" +#include "base/scoped_observation.h" #include "base/timer/timer.h" #include "ui/aura/window_observer.h" #include "ui/display/display_observer.h" @@ -21,7 +21,7 @@ namespace aura { class ScopedWindowTargeter; class Window; -} +} // namespace aura namespace views { class Widget; @@ -78,7 +78,7 @@ const WindowList& windows() const { return windows_; } const views::Widget* widget() const { return cycle_ui_widget_; } - // aura::WindowObserver overrides: + // aura::WindowObserver: // There is a chance a window is destroyed, for example by JS code. We need to // take care of that even if it is not intended for the user to close a window // while window cycling. @@ -154,8 +154,8 @@ views::Widget* cycle_ui_widget_ = nullptr; // The window list will dismiss if the display metrics change. - ScopedObserver<display::Screen, display::DisplayObserver> screen_observer_{ - this}; + base::ScopedObservation<display::Screen, display::DisplayObserver> + screen_observer_{this}; // A timer to delay showing the UI. Quick Alt+Tab should not flash a UI. base::OneShotTimer show_ui_timer_; @@ -167,4 +167,4 @@ } // namespace ash -#endif // ASH_WM_WINDOW_CYCLE_LIST_H_ +#endif // ASH_WM_WINDOW_CYCLE_WINDOW_CYCLE_LIST_H_
diff --git a/ash/wm/window_cycle_tab_slider.cc b/ash/wm/window_cycle/window_cycle_tab_slider.cc similarity index 95% rename from ash/wm/window_cycle_tab_slider.cc rename to ash/wm/window_cycle/window_cycle_tab_slider.cc index d6726c9..51c3679 100644 --- a/ash/wm/window_cycle_tab_slider.cc +++ b/ash/wm/window_cycle/window_cycle_tab_slider.cc
@@ -2,14 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "ash/wm/window_cycle_tab_slider.h" +#include "ash/wm/window_cycle/window_cycle_tab_slider.h" #include "ash/shell.h" #include "ash/strings/grit/ash_strings.h" #include "ash/style/ash_color_provider.h" #include "ash/style/default_colors.h" #include "ash/wm/mru_window_tracker.h" -#include "ash/wm/window_cycle_controller.h" +#include "ash/wm/window_cycle/window_cycle_controller.h" #include "base/strings/utf_string_conversions.h" #include "ui/base/l10n/l10n_util.h" #include "ui/gfx/canvas.h"
diff --git a/ash/wm/window_cycle_tab_slider.h b/ash/wm/window_cycle/window_cycle_tab_slider.h similarity index 80% rename from ash/wm/window_cycle_tab_slider.h rename to ash/wm/window_cycle/window_cycle_tab_slider.h index 17d25e3..f7d672c4 100644 --- a/ash/wm/window_cycle_tab_slider.h +++ b/ash/wm/window_cycle/window_cycle_tab_slider.h
@@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef ASH_WM_WINDOW_CYCLE_TAB_SLIDER_H_ -#define ASH_WM_WINDOW_CYCLE_TAB_SLIDER_H_ +#ifndef ASH_WM_WINDOW_CYCLE_WINDOW_CYCLE_TAB_SLIDER_H_ +#define ASH_WM_WINDOW_CYCLE_WINDOW_CYCLE_TAB_SLIDER_H_ #include "ash/ash_export.h" -#include "ash/wm/window_cycle_tab_slider_button.h" +#include "ash/wm/window_cycle/window_cycle_tab_slider_button.h" #include "ui/views/metadata/metadata_header_macros.h" namespace ash { @@ -35,4 +35,4 @@ } // namespace ash -#endif // ASH_WM_WINDOW_CYCLE_TAB_SLIDER_H_ +#endif // ASH_WM_WINDOW_CYCLE_WINDOW_CYCLE_TAB_SLIDER_H_
diff --git a/ash/wm/window_cycle_tab_slider_button.cc b/ash/wm/window_cycle/window_cycle_tab_slider_button.cc similarity index 97% rename from ash/wm/window_cycle_tab_slider_button.cc rename to ash/wm/window_cycle/window_cycle_tab_slider_button.cc index 887f7c9..4c795d45 100644 --- a/ash/wm/window_cycle_tab_slider_button.cc +++ b/ash/wm/window_cycle/window_cycle_tab_slider_button.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "ash/wm/window_cycle_tab_slider_button.h" +#include "ash/wm/window_cycle/window_cycle_tab_slider_button.h" #include "ash/style/ash_color_provider.h" #include "base/strings/utf_string_conversions.h"
diff --git a/ash/wm/window_cycle_tab_slider_button.h b/ash/wm/window_cycle/window_cycle_tab_slider_button.h similarity index 85% rename from ash/wm/window_cycle_tab_slider_button.h rename to ash/wm/window_cycle/window_cycle_tab_slider_button.h index b94f607..45df084e 100644 --- a/ash/wm/window_cycle_tab_slider_button.h +++ b/ash/wm/window_cycle/window_cycle_tab_slider_button.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef ASH_WM_WINDOW_CYCLE_TAB_SLIDER_BUTTON_H_ -#define ASH_WM_WINDOW_CYCLE_TAB_SLIDER_BUTTON_H_ +#ifndef ASH_WM_WINDOW_CYCLE_WINDOW_CYCLE_TAB_SLIDER_BUTTON_H_ +#define ASH_WM_WINDOW_CYCLE_WINDOW_CYCLE_TAB_SLIDER_BUTTON_H_ #include "ash/ash_export.h" #include "ui/views/controls/button/label_button.h" @@ -36,4 +36,4 @@ } // namespace ash -#endif // ASH_WM_WINDOW_CYCLE_TAB_SLIDER_BUTTON_H_ +#endif // ASH_WM_WINDOW_CYCLE_WINDOW_CYCLE_TAB_SLIDER_BUTTON_H_
diff --git a/base/allocator/partition_allocator/partition_root.cc b/base/allocator/partition_allocator/partition_root.cc index e7abd126..8ff1d0a 100644 --- a/base/allocator/partition_allocator/partition_root.cc +++ b/base/allocator/partition_allocator/partition_root.cc
@@ -20,6 +20,10 @@ typename PartitionRoot<thread_safe>::PCScanMode PartitionOptionsToPCScanMode( PartitionOptions::PCScan opt) { using Root = PartitionRoot<thread_safe>; + // PCScan is currently only supported on 64-bit systems. + // Mark partitions non-scannable on 32-bit systems unconditionally, so that + // address space for quarantine bitmaps doesn't get reserved. +#if defined(PA_HAS_64_BITS_POINTERS) switch (opt) { case PartitionOptions::PCScan::kAlwaysDisabled: return Root::PCScanMode::kNonScannable; @@ -28,6 +32,9 @@ case PartitionOptions::PCScan::kForcedEnabledForTesting: return Root::PCScanMode::kEnabled; } +#else + return Root::PCScanMode::kNonScannable; +#endif } } // namespace
diff --git a/base/allocator/partition_allocator/pcscan_unittest.cc b/base/allocator/partition_allocator/pcscan_unittest.cc index 7cf9e0f9..16de3e0 100644 --- a/base/allocator/partition_allocator/pcscan_unittest.cc +++ b/base/allocator/partition_allocator/pcscan_unittest.cc
@@ -4,6 +4,7 @@ #include "base/allocator/partition_allocator/partition_root.h" #if !defined(MEMORY_TOOL_REPLACES_ALLOCATOR) +#if defined(PA_HAS_64_BITS_POINTERS) #include "base/allocator/partition_allocator/pcscan.h" @@ -329,4 +330,5 @@ } // namespace internal } // namespace base +#endif // defined(PA_HAS_64_BITS_POINTERS) #endif // defined(MEMORY_TOOL_REPLACES_ALLOCATOR)
diff --git a/base/containers/flat_tree.h b/base/containers/flat_tree.h index 65dbf9d..d13e388 100644 --- a/base/containers/flat_tree.h +++ b/base/containers/flat_tree.h
@@ -39,14 +39,12 @@ return ranges::adjacent_find(range, base::not_fn(comp)) == ranges::end(range); } -// This is a convenience method returning true if Iterator is at least a -// ForwardIterator and thus supports multiple passes over a range. +// This is a convenience trait inheriting from std::true_type if Iterator is at +// least a ForwardIterator and thus supports multiple passes over a range. template <class Iterator> -constexpr bool is_multipass() { - return std::is_base_of< +using is_multipass = std::is_base_of< std::forward_iterator_tag, - typename std::iterator_traits<Iterator>::iterator_category>::value; -} + typename std::iterator_traits<Iterator>::iterator_category>; // Uses SFINAE to detect whether type has is_transparent member. template <typename T, typename = void>
diff --git a/base/process/launch.h b/base/process/launch.h index 04228c7..6a15c89 100644 --- a/base/process/launch.h +++ b/base/process/launch.h
@@ -294,11 +294,11 @@ bool new_process_group = false; #endif // defined(OS_POSIX) -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS) // If non-negative, the specified file descriptor will be set as the launched // process' controlling terminal. int ctrl_terminal_fd = -1; -#endif // BUILDFLAG(IS_CHROMEOS_ASH) +#endif // BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS) }; // Launch a process via the command line |cmdline|.
diff --git a/base/process/launch_posix.cc b/base/process/launch_posix.cc index e4ca8e4..cb64c97 100644 --- a/base/process/launch_posix.cc +++ b/base/process/launch_posix.cc
@@ -53,7 +53,7 @@ #include <sys/prctl.h> #endif -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS) #include <sys/ioctl.h> #endif @@ -418,7 +418,7 @@ memset(reinterpret_cast<void*>(malloc), 0xff, 8); #endif // 0 -#if BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS) if (options.ctrl_terminal_fd >= 0) { // Set process' controlling terminal. if (HANDLE_EINTR(setsid()) != -1) { @@ -430,7 +430,7 @@ RAW_LOG(WARNING, "setsid failed, ctrl terminal not set"); } } -#endif // BUILDFLAG(IS_CHROMEOS_ASH) +#endif // BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS) // Cannot use STL iterators here, since debug iterators use locks. // NOLINTNEXTLINE(modernize-loop-convert)
diff --git a/base/sequence_checker.h b/base/sequence_checker.h index b7553d03..7a2d0f5 100644 --- a/base/sequence_checker.h +++ b/base/sequence_checker.h
@@ -26,8 +26,8 @@ // class MyClass { // public: // MyClass() { -// // It's sometimes useful to detach on construction for objects that are -// // constructed in one place and forever after used from another +// // Detaching on construction is necessary for objects that are +// // constructed on one sequence and forever after used from another // // sequence. // DETACH_FROM_SEQUENCE(my_sequence_checker_); // }
diff --git a/build/chromeos/PRESUBMIT.py b/build/chromeos/PRESUBMIT.py index 782fceb..5d8398f 100644 --- a/build/chromeos/PRESUBMIT.py +++ b/build/chromeos/PRESUBMIT.py
@@ -9,8 +9,13 @@ def CommonChecks(input_api, output_api): - return input_api.canned_checks.RunPylint( + results = [] + results += input_api.canned_checks.RunPylint( input_api, output_api, pylintrc='pylintrc') + tests = input_api.canned_checks.GetUnitTestsInDirectory( + input_api, output_api, '.', [r'^.+_test\.py$']) + results += input_api.RunTests(tests) + return results def CheckChangeOnUpload(input_api, output_api):
diff --git a/build/chromeos/test_runner_test.py b/build/chromeos/test_runner_test.py new file mode 100755 index 0000000..a49f0202 --- /dev/null +++ b/build/chromeos/test_runner_test.py
@@ -0,0 +1,167 @@ +#!/usr/bin/env vpython +# Copyright 2020 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import json +import os +import shutil +import sys +import tempfile +import unittest + +# The following non-std imports are fetched via vpython. See the list at +# //.vpython +import mock # pylint: disable=import-error +from parameterized import parameterized # pylint: disable=import-error + +import test_runner + +_TAST_TEST_RESULTS_JSON = { + "name": "ui.ChromeLogin", + "errors": None, + "start": "2020-01-01T15:41:30.799228462-08:00", + "end": "2020-01-01T15:41:53.318914698-08:00", + "skipReason": "" +} + + +class TestRunnerTest(unittest.TestCase): + + def setUp(self): + self._tmp_dir = tempfile.mkdtemp() + self.mock_rdb = mock.patch.object( + test_runner.result_sink, 'TryInitClient', return_value=None) + self.mock_rdb.start() + + def tearDown(self): + shutil.rmtree(self._tmp_dir, ignore_errors=True) + self.mock_rdb.stop() + + @parameterized.expand([ + [True], + [False], + ]) + def test_gtest(self, use_vm): + """Tests running a gtest.""" + fd_mock = mock.mock_open() + + args = [ + 'script_name', + 'vm-test', + '--test-exe=out_eve/Release/base_unittests', + '--board=eve', + '--path-to-outdir=out_eve/Release', + '--use-vm' if use_vm else '--device=localhost:2222', + ] + with mock.patch.object(sys, 'argv', args),\ + mock.patch.object(test_runner.subprocess, 'Popen') as mock_popen,\ + mock.patch.object(os, 'fdopen', fd_mock),\ + mock.patch.object(os, 'remove') as mock_remove,\ + mock.patch.object(tempfile, 'mkstemp', + return_value=(3, 'out_eve/Release/device_script.sh')),\ + mock.patch.object(os, 'fchmod'): + mock_popen.return_value.returncode = 0 + + test_runner.main() + self.assertEqual(1, mock_popen.call_count) + expected_cmd = [ + test_runner.CROS_RUN_TEST_PATH, '--board', 'eve', '--cache-dir', + test_runner.DEFAULT_CROS_CACHE, '--as-chronos', '--remote-cmd', + '--cwd', 'out_eve/Release', '--files', + 'out_eve/Release/device_script.sh' + ] + expected_cmd.extend(['--start', '--copy-on-write'] + if use_vm else ['--device', 'localhost:2222']) + expected_cmd.extend(['--', './device_script.sh']) + self.assertItemsEqual(expected_cmd, mock_popen.call_args[0][0]) + + fd_mock().write.assert_called_once_with( + '#!/bin/sh\nexport HOME=/usr/local/tmp\n' + 'export TMPDIR=/usr/local/tmp\n' + 'LD_LIBRARY_PATH=./ ./out_eve/Release/base_unittests ' + '--test-launcher-shard-index=0 --test-launcher-total-shards=1\n') + mock_remove.assert_called_once_with('out_eve/Release/device_script.sh') + + @parameterized.expand([ + [True], + [False], + ]) + def test_tast(self, use_vm): + """Tests running a tast tests.""" + with open(os.path.join(self._tmp_dir, 'streamed_results.jsonl'), 'w') as f: + json.dump(_TAST_TEST_RESULTS_JSON, f) + + args = [ + 'script_name', + 'tast', + '--suite-name=chrome_all_tast_tests', + '--board=eve', + '--flash', + '--path-to-outdir=out_eve/Release', + '--logs-dir=%s' % self._tmp_dir, + '-t=ui.ChromeLogin', + '--use-vm' if use_vm else '--device=localhost:2222', + ] + with mock.patch.object(sys, 'argv', args),\ + mock.patch.object(test_runner.subprocess, 'Popen') as mock_popen: + mock_popen.return_value.returncode = 0 + + test_runner.main() + expected_cmd = [ + test_runner.CROS_RUN_TEST_PATH, '--board', 'eve', '--cache-dir', + test_runner.DEFAULT_CROS_CACHE, '--results-dest-dir', + '%s/system_logs' % self._tmp_dir, '--mount', '--deploy', '--nostrip', + '--flash', '--build-dir', 'out_eve/Release', '--results-dir', + self._tmp_dir, '--tast', 'ui.ChromeLogin' + ] + expected_cmd.extend(['--start', '--copy-on-write'] + if use_vm else ['--device', 'localhost:2222']) + for p in test_runner.SYSTEM_LOG_LOCATIONS: + expected_cmd.extend(['--results-src', p]) + + self.assertItemsEqual(expected_cmd, mock_popen.call_args[0][0]) + + @parameterized.expand([ + [True], + [False], + ]) + def test_tast_attr_expr(self, use_vm): + """Tests running a tast tests specified by an attribute expression.""" + with open(os.path.join(self._tmp_dir, 'streamed_results.jsonl'), 'w') as f: + json.dump(_TAST_TEST_RESULTS_JSON, f) + + args = [ + 'script_name', + 'tast', + '--suite-name=chrome_all_tast_tests', + '--board=eve', + '--flash', + '--path-to-outdir=out_eve/Release', + '--logs-dir=%s' % self._tmp_dir, + '--attr-expr=( "group:mainline" && "dep:chrome" && !informational)', + '--use-vm' if use_vm else '--device=localhost:2222', + ] + with mock.patch.object(sys, 'argv', args),\ + mock.patch.object(test_runner.subprocess, 'Popen') as mock_popen: + mock_popen.return_value.returncode = 0 + + test_runner.main() + expected_cmd = [ + test_runner.CROS_RUN_TEST_PATH, '--board', 'eve', '--cache-dir', + test_runner.DEFAULT_CROS_CACHE, '--results-dest-dir', + '%s/system_logs' % self._tmp_dir, '--mount', '--deploy', '--nostrip', + '--flash', '--build-dir', 'out_eve/Release', '--results-dir', + self._tmp_dir, + '--tast=( "group:mainline" && "dep:chrome" && !informational)' + ] + expected_cmd.extend(['--start', '--copy-on-write'] + if use_vm else ['--device', 'localhost:2222']) + for p in test_runner.SYSTEM_LOG_LOCATIONS: + expected_cmd.extend(['--results-src', p]) + + self.assertItemsEqual(expected_cmd, mock_popen.call_args[0][0]) + + +if __name__ == '__main__': + unittest.main()
diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc index 7f346406..dd50507 100644 --- a/cc/layers/picture_layer_impl.cc +++ b/cc/layers/picture_layer_impl.cc
@@ -1485,21 +1485,27 @@ void PictureLayerImpl::AdjustRasterScaleForTransformAnimation( float preserved_raster_contents_scale) { DCHECK(draw_properties().screen_space_transform_is_animating); + + // We will cap the adjusted scale with the viewport area, which is impossible + // if the viewport is empty. + gfx::Size viewport = layer_tree_impl()->GetDeviceViewport().size(); + if (viewport.IsEmpty()) + return; + CombinedAnimationScale animation_scales = layer_tree_impl()->property_trees()->GetAnimationScales( transform_tree_index(), layer_tree_impl()); float maximum_scale = animation_scales.maximum_animation_scale; float starting_scale = animation_scales.starting_animation_scale; // Adjust raster scale only if the animation scale is known. - if (maximum_scale == kNotScaled && starting_scale == kNotScaled) - return; - - gfx::Size viewport = layer_tree_impl()->GetDeviceViewport().size(); - if (viewport.IsEmpty()) - return; - - // We rasterize at the maximum scale that will occur during the animation. - raster_contents_scale_ = std::max(maximum_scale, starting_scale); + if (maximum_scale == kNotScaled && starting_scale == kNotScaled) { + // Use at least the native scale if the animation scale is unknown. + raster_contents_scale_ = std::max(raster_contents_scale_, + ideal_page_scale_ * ideal_device_scale_); + } else { + // We rasterize at the maximum scale that will occur during the animation. + raster_contents_scale_ = std::max(maximum_scale, starting_scale); + } DCHECK_NE(raster_contents_scale_, kNotScaled); // However we want to avoid excessive memory use. Choose a scale at which this
diff --git a/cc/layers/picture_layer_impl_unittest.cc b/cc/layers/picture_layer_impl_unittest.cc index 7004bdb..211dcbb 100644 --- a/cc/layers/picture_layer_impl_unittest.cc +++ b/cc/layers/picture_layer_impl_unittest.cc
@@ -2966,6 +2966,19 @@ maximum_animation_scale, starting_animation_scale, animating_transform); EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), 11.f); + + // When animating with an unknown animation scale factors, a new high-res + // tiling should be created at the native scale if the current contents + // scale is smaller. + animating_transform = true; + contents_scale = 0.5f; + maximum_animation_scale = kNotScaled; + + SetContentsScaleOnBothLayers(contents_scale, device_scale, page_scale, + maximum_animation_scale, + starting_animation_scale, animating_transform); + EXPECT_BOTH_EQ(HighResTiling()->contents_scale_key(), + page_scale * device_scale); } TEST_F(LegacySWPictureLayerImplTest,
diff --git a/cc/mojom/render_frame_metadata.mojom b/cc/mojom/render_frame_metadata.mojom index 2db01c54..3a087f7 100644 --- a/cc/mojom/render_frame_metadata.mojom +++ b/cc/mojom/render_frame_metadata.mojom
@@ -10,6 +10,18 @@ import "services/viz/public/mojom/compositing/vertical_scroll_direction.mojom"; import "ui/gfx/geometry/mojom/geometry.mojom"; +// Contains information to assist in making a decision about forwarding +// pointerevents to viz for use in a delegated ink trail. +struct DelegatedInkBrowserMetadata { + // Flag used to indicate the state of the hovering on the pointerevent that + // the delegated ink metadata was created from. If this state does not match + // the point under consideration to send to viz, it won't be sent. As soon + // as it matches again the point will be sent, regardless of if the renderer + // has processed the point that didn't match yet or not. It is true when + // hovering, false otherwise. + bool delegated_ink_is_hovering; +}; + // See components/viz/service/quads/render_frame_metadata.h struct RenderFrameMetadata { // The background color of a CompositorFrame. It can be used for filling the @@ -36,10 +48,12 @@ // are the same). bool is_mobile_optimized; - // Flag used to notify the browser process to start or stop forwarding points - // to viz for use in a delegated ink trail. True the entire time points should - // be forwarded, and forwarding stops as soon as it is false again. - bool has_delegated_ink_metadata; + // Existence of this flag informs the browser process to start forwarding + // points to viz for use in a delegated ink trail. It contains more + // information to be used in making the forwarding decision. It exists the + // entire time points could be forwarded, and forwarding must stop as soon as + // it is null. + DelegatedInkBrowserMetadata? delegated_ink_metadata; // The device scale factor used to generate CompositorFrame. float device_scale_factor;
diff --git a/cc/mojom/render_frame_metadata_mojom_traits.cc b/cc/mojom/render_frame_metadata_mojom_traits.cc index dd89563e..b9eecfb 100644 --- a/cc/mojom/render_frame_metadata_mojom_traits.cc +++ b/cc/mojom/render_frame_metadata_mojom_traits.cc
@@ -14,6 +14,15 @@ namespace mojo { // static +bool StructTraits<cc::mojom::DelegatedInkBrowserMetadataDataView, + cc::DelegatedInkBrowserMetadata>:: + Read(cc::mojom::DelegatedInkBrowserMetadataDataView data, + cc::DelegatedInkBrowserMetadata* out) { + out->delegated_ink_is_hovering = data.delegated_ink_is_hovering(); + return true; +} + +// static bool StructTraits< cc::mojom::RenderFrameMetadataDataView, cc::RenderFrameMetadata>::Read(cc::mojom::RenderFrameMetadataDataView data, @@ -21,7 +30,6 @@ out->root_background_color = data.root_background_color(); out->is_scroll_offset_at_top = data.is_scroll_offset_at_top(); out->is_mobile_optimized = data.is_mobile_optimized(); - out->has_delegated_ink_metadata = data.has_delegated_ink_metadata(); out->device_scale_factor = data.device_scale_factor(); out->page_scale_factor = data.page_scale_factor(); out->external_page_scale_factor = data.external_page_scale_factor(); @@ -40,6 +48,7 @@ #endif return data.ReadRootScrollOffset(&out->root_scroll_offset) && data.ReadSelection(&out->selection) && + data.ReadDelegatedInkMetadata(&out->delegated_ink_metadata) && #if defined(OS_ANDROID) data.ReadScrollableViewportSize(&out->scrollable_viewport_size) && data.ReadRootLayerSize(&out->root_layer_size) &&
diff --git a/cc/mojom/render_frame_metadata_mojom_traits.h b/cc/mojom/render_frame_metadata_mojom_traits.h index ed13705..66a3e7e5 100644 --- a/cc/mojom/render_frame_metadata_mojom_traits.h +++ b/cc/mojom/render_frame_metadata_mojom_traits.h
@@ -17,6 +17,19 @@ template <> struct COMPONENT_EXPORT(CC_SHARED_MOJOM_TRAITS) + StructTraits<cc::mojom::DelegatedInkBrowserMetadataDataView, + cc::DelegatedInkBrowserMetadata> { + static bool delegated_ink_is_hovering( + const cc::DelegatedInkBrowserMetadata& metadata) { + return metadata.delegated_ink_is_hovering; + } + + static bool Read(cc::mojom::DelegatedInkBrowserMetadataDataView data, + cc::DelegatedInkBrowserMetadata* out); +}; + +template <> +struct COMPONENT_EXPORT(CC_SHARED_MOJOM_TRAITS) StructTraits<cc::mojom::RenderFrameMetadataDataView, cc::RenderFrameMetadata> { static SkColor root_background_color( @@ -42,9 +55,9 @@ return metadata.is_mobile_optimized; } - static bool has_delegated_ink_metadata( + static base::Optional<cc::DelegatedInkBrowserMetadata> delegated_ink_metadata( const cc::RenderFrameMetadata& metadata) { - return metadata.has_delegated_ink_metadata; + return metadata.delegated_ink_metadata; } static float device_scale_factor(const cc::RenderFrameMetadata& metadata) {
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc index a28df53..55c7a74 100644 --- a/cc/trees/layer_tree_host_impl.cc +++ b/cc/trees/layer_tree_host_impl.cc
@@ -2496,8 +2496,11 @@ if (render_frame_metadata_observer_) { last_draw_render_frame_metadata_ = MakeRenderFrameMetadata(frame); - last_draw_render_frame_metadata_->has_delegated_ink_metadata = - metadata.delegated_ink_metadata.get(); + if (viz::DelegatedInkMetadata* ink_metadata = + metadata.delegated_ink_metadata.get()) { + last_draw_render_frame_metadata_->delegated_ink_metadata = + DelegatedInkBrowserMetadata(ink_metadata->is_hovering()); + } // We cache the value of any new vertical scroll direction so that we can // accurately determine when the next change in vertical scroll direction
diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc index 5a5c753ef..4e11711 100644 --- a/cc/trees/layer_tree_host_unittest.cc +++ b/cc/trees/layer_tree_host_unittest.cc
@@ -8902,9 +8902,10 @@ gfx::PointF point = gfx::PointF(135, 45); gfx::RectF area = gfx::RectF(173, 438); base::TimeTicks timestamp = base::TimeTicks::Now(); + bool is_hovering = true; - expected_metadata_ = - viz::DelegatedInkMetadata(point, diameter, color, timestamp, area); + expected_metadata_ = viz::DelegatedInkMetadata( + point, diameter, color, timestamp, area, is_hovering); layer_tree_host()->SetDelegatedInkMetadata( std::make_unique<viz::DelegatedInkMetadata>( expected_metadata_.value())); @@ -8926,24 +8927,29 @@ } } - void ExpectMetadata(bool had_delegated_ink_metadata, + void ExpectMetadata(base::Optional<DelegatedInkBrowserMetadata> + browser_delegated_ink_metadata, viz::DelegatedInkMetadata* actual_metadata) { if (expected_metadata_.has_value()) { - EXPECT_TRUE(had_delegated_ink_metadata); + EXPECT_TRUE(browser_delegated_ink_metadata.has_value()); EXPECT_TRUE(actual_metadata); + EXPECT_TRUE( + browser_delegated_ink_metadata.value().delegated_ink_is_hovering); EXPECT_EQ(expected_metadata_->point(), actual_metadata->point()); EXPECT_EQ(expected_metadata_->color(), actual_metadata->color()); EXPECT_EQ(expected_metadata_->diameter(), actual_metadata->diameter()); EXPECT_EQ(expected_metadata_->presentation_area(), actual_metadata->presentation_area()); EXPECT_EQ(expected_metadata_->timestamp(), actual_metadata->timestamp()); + EXPECT_EQ(expected_metadata_->is_hovering(), + actual_metadata->is_hovering()); // Record the frame time from the metadata so we can confirm that it // matches the LayerTreeHostImpl's frame time in DrawLayersOnThread. EXPECT_GT(actual_metadata->frame_time(), base::TimeTicks::Min()); metadata_frame_time_ = actual_metadata->frame_time(); } else { - EXPECT_FALSE(had_delegated_ink_metadata); + EXPECT_FALSE(browser_delegated_ink_metadata.has_value()); EXPECT_FALSE(actual_metadata); EndTest(); } @@ -8955,7 +8961,7 @@ const RenderFrameMetadata& render_frame_metadata, viz::CompositorFrameMetadata* compositor_frame_metadata, bool force_send) override { - ExpectMetadata(render_frame_metadata.has_delegated_ink_metadata, + ExpectMetadata(render_frame_metadata.delegated_ink_metadata, compositor_frame_metadata->delegated_ink_metadata.get()); }
diff --git a/cc/trees/render_frame_metadata.cc b/cc/trees/render_frame_metadata.cc index 268b1bf8..0efa349 100644 --- a/cc/trees/render_frame_metadata.cc +++ b/cc/trees/render_frame_metadata.cc
@@ -29,6 +29,7 @@ is_scroll_offset_at_top == other.is_scroll_offset_at_top && selection == other.selection && is_mobile_optimized == other.is_mobile_optimized && + delegated_ink_metadata == other.delegated_ink_metadata && device_scale_factor == other.device_scale_factor && viewport_size_in_pixels == other.viewport_size_in_pixels && page_scale_factor == other.page_scale_factor &&
diff --git a/cc/trees/render_frame_metadata.h b/cc/trees/render_frame_metadata.h index b1d8efd..589a022f 100644 --- a/cc/trees/render_frame_metadata.h +++ b/cc/trees/render_frame_metadata.h
@@ -20,6 +20,31 @@ namespace cc { +// Contains information to assist in making a decision about forwarding +// pointerevents to viz for use in a delegated ink trail. +struct DelegatedInkBrowserMetadata { + public: + DelegatedInkBrowserMetadata() = default; + explicit DelegatedInkBrowserMetadata(bool hovering) + : delegated_ink_is_hovering(hovering) {} + + bool operator==(const DelegatedInkBrowserMetadata& other) const { + return delegated_ink_is_hovering == other.delegated_ink_is_hovering; + } + + bool operator!=(const DelegatedInkBrowserMetadata& other) const { + return !operator==(other); + } + + // Flag used to indicate the state of the hovering on the pointerevent that + // the delegated ink metadata was created from. If this state does not match + // the point under consideration to send to viz, it won't be sent. As soon + // as it matches again the point will be sent, regardless of if the renderer + // has processed the point that didn't match yet or not. It is true when + // hovering, false otherwise. + bool delegated_ink_is_hovering; +}; + class CC_EXPORT RenderFrameMetadata { public: RenderFrameMetadata(); @@ -55,10 +80,12 @@ // are the same). bool is_mobile_optimized = false; - // Flag used to notify the browser process to start or stop forwarding points - // to viz for use in a delegated ink trail. True the entire time points should - // be forwarded, and forwarding stops as soon as it is false again. - bool has_delegated_ink_metadata = false; + // Existence of this flag informs the browser process to start forwarding + // points to viz for use in a delegated ink trail. It contains more + // information to be used in making the forwarding decision. It exists the + // entire time points could be forwarded, and forwarding must stop as soon as + // it is null. + base::Optional<DelegatedInkBrowserMetadata> delegated_ink_metadata; // The device scale factor used to generate a CompositorFrame. float device_scale_factor = 1.f;
diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/ExploreSurfaceNavigationDelegate.java b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/ExploreSurfaceNavigationDelegate.java index 760b960..d6e4ffe 100644 --- a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/ExploreSurfaceNavigationDelegate.java +++ b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/ExploreSurfaceNavigationDelegate.java
@@ -32,8 +32,9 @@ @Override @Nullable public Tab openUrl(int windowOpenDisposition, LoadUrlParams loadUrlParams) { + // TODO(crbug.com/1159879): Set PageTransition.AUTO_BOOKMARK here. boolean result = ReturnToChromeExperimentsUtil.willHandleLoadUrlFromStartSurface( - loadUrlParams.getUrl(), PageTransition.AUTO_BOOKMARK, + loadUrlParams.getUrl(), PageTransition.AUTO_TOPLEVEL, windowOpenDisposition == WindowOpenDisposition.OFF_THE_RECORD, mParentTabSupplier.get()); assert result; @@ -42,7 +43,8 @@ @Override public void navigateToHelpPage() { + // TODO(crbug.com/1159879): Set PageTransition.AUTO_BOOKMARK here. openUrl(WindowOpenDisposition.CURRENT_TAB, - new LoadUrlParams(NEW_TAB_URL_HELP, PageTransition.AUTO_BOOKMARK)); + new LoadUrlParams(NEW_TAB_URL_HELP, PageTransition.AUTO_TOPLEVEL)); } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/base/DexFixer.java b/chrome/android/java/src/org/chromium/chrome/browser/base/DexFixer.java index 046cf52..94cc229 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/base/DexFixer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/base/DexFixer.java
@@ -33,29 +33,29 @@ import java.io.File; import java.io.IOException; +/** + * Performs work-arounds for Android bugs which result in invalid or unreadable dex. + */ @RequiresApi(Build.VERSION_CODES.O) -class DexFixer { +public class DexFixer { private static final String TAG = "DexFixer"; private static boolean sHasIsolatedSplits; + @WorkerThread + public static void fixDexInBackground() { + if (shouldSkipDexFix()) { + return; + } + + fixDexIfNecessary(Runtime.getRuntime()); + } + static void setHasIsolatedSplits(boolean value) { sHasIsolatedSplits = value; } static void scheduleDexFix() { - ApplicationInfo appInfo = ContextUtils.getApplicationContext().getApplicationInfo(); - // All bugs are fixed after Q. - if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q) { - return; - } - // Fixes are never required for system image installs, since we can trust those to be valid - // and world-readable. - if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { - return; - } - // Skip the workaround on local builds to avoid affecting perf bots. - // https://bugs.chromium.org/p/chromium/issues/detail?id=1160070 - if (ChromeVersionInfo.isLocalBuild() && ChromeVersionInfo.isOfficialBuild()) { + if (shouldSkipDexFix()) { return; } @@ -93,6 +93,25 @@ RecordHistogram.recordEnumeratedHistogram("Android.DexFixer", reason, DexFixerReason.COUNT); } + private static boolean shouldSkipDexFix() { + ApplicationInfo appInfo = ContextUtils.getApplicationContext().getApplicationInfo(); + // All bugs are fixed after Q. + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q) { + return true; + } + // Fixes are never required for system image installs, since we can trust those to be valid + // and world-readable. + if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { + return true; + } + // Skip the workaround on local builds to avoid affecting perf bots. + // https://bugs.chromium.org/p/chromium/issues/detail?id=1160070 + if (ChromeVersionInfo.isLocalBuild() && ChromeVersionInfo.isOfficialBuild()) { + return true; + } + return false; + } + private static String odexPathFromApkPath(String apkPath) { // Based on https://cs.android.com/search?q=OatFileAssistant::DexLocationToOdexNames boolean is64Bit = ApiHelperForM.isProcess64Bit();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/BrowserServicesIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/BrowserServicesIntentDataProvider.java index 16de0c8..9d5f520 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/BrowserServicesIntentDataProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/BrowserServicesIntentDataProvider.java
@@ -539,4 +539,13 @@ public boolean shouldHideIncognitoIconOnToolbarInCct() { return false; } + + /** + * @return Whether the cct-client-data header should be added. Note that a return value of true + * does not necessarily mean the header will be added. There are aditional checks in + * {@link setClientDataHeaderForNewTab()}. This is applicable only to cct. + */ + public boolean shouldAddCctClientDataHeader() { + return false; + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java index aff0635d..6927b64 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
@@ -100,6 +100,13 @@ ANIMATION_BUNDLE_PREFIX + "animExitRes"; /** + * See {@link BrowserServicesIntentDataProvider#shouldAddCctClientDataHeader} for details on + * this. + */ + public static final String EXTRA_ADD_CCT_CLIENT_DATA_HEADER = + "org.chromium.chrome.browser.customtabs.ADD_CCT_CLIENT_DATA_HEADER"; + + /** * Extra that indicates whether or not the Custom Tab is being launched by an Intent fired by * Chrome itself. */ @@ -908,4 +915,9 @@ return !IntentUtils.safeGetBooleanExtra( mIntent, EXTRA_HIDE_OPEN_IN_CHROME_MENU_ITEM, false); } + + @Override + public boolean shouldAddCctClientDataHeader() { + return IntentUtils.safeGetBooleanExtra(mIntent, EXTRA_ADD_CCT_CLIENT_DATA_HEADER, false); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/content/CustomTabActivityTabController.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/content/CustomTabActivityTabController.java index 16f6fef..82af638 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/content/CustomTabActivityTabController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/content/CustomTabActivityTabController.java
@@ -405,7 +405,7 @@ mConnection.getClientPackageNameForSession(mSession))); // clang-format on - if (!tab.isIncognito()) { + if (!tab.isIncognito() && mIntentDataProvider.shouldAddCctClientDataHeader()) { mConnection.setClientDataHeaderForNewTab(mSession, webContents); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarColorController.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarColorController.java index 40e4a82..d33ef60 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarColorController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarColorController.java
@@ -168,7 +168,7 @@ mIntentDataProvider, mUseTabThemeColor, tab, () -> Previews.isPreview(tab)); switch (toolbarColorType) { case ToolbarColorType.THEME_COLOR: - return mTopUiThemeColorProvider.getThemeColor(); + return mTopUiThemeColorProvider.calculateColor(tab, tab.getThemeColor()); case ToolbarColorType.DEFAULT_COLOR: return getDefaultColor(); case ToolbarColorType.INTENT_TOOLBAR_COLOR:
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/messages/ChromeMessageQueueMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/messages/ChromeMessageQueueMediator.java index 4d42f4e6..92edfa1 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/messages/ChromeMessageQueueMediator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/messages/ChromeMessageQueueMediator.java
@@ -81,6 +81,14 @@ mQueueController.dismissAllMessages(); } } + @Override + public void willCloseTab(Tab tab, boolean animate) { + assert mTabModelSelector != null; + if (tab != mTabModelSelector.getCurrentTab()) return; + if (mQueueController != null) { + mQueueController.dismissAllMessages(); + } + } }; /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java index 012fe1e4..6a218a2 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java
@@ -470,6 +470,7 @@ * @param inProgress Whether a URL focus change is taking place. */ protected void setUrlFocusChangeInProgress(boolean inProgress) { + if (mUrlCoordinator == null) return; mUrlFocusChangeInProgress = inProgress; if (!inProgress) { updateButtonVisibility(); @@ -776,13 +777,14 @@ /** * Handles any actions to be performed after all other actions triggered by the URL focus - * change. This will be called after any animations are performed to transition from one + * change. This will be called after any animations are performed to transition from one * focus state to the other. * @param hasFocus Whether the URL field has gained focus. * @param shouldShowKeyboard Whether the keyboard should be shown. This value should be the same * as hasFocus by default. */ protected void finishUrlFocusChange(boolean hasFocus, boolean shouldShowKeyboard) { + if (mUrlCoordinator == null) return; mUrlCoordinator.setKeyboardVisibility(hasFocus && shouldShowKeyboard, true); setUrlFocusChangeInProgress(false); updateShouldAnimateIconChanges();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java index 0672e05..32d7322 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
@@ -141,7 +141,8 @@ // Sanitize the url. loadUrlParams.setUrl(url.getValidSpecOrEmpty()); - loadUrlParams.setTransitionType(getTransitionType(type, intent)); + loadUrlParams.setTransitionType( + getTransitionType(type, intent, loadUrlParams.getTransitionType())); // Check if the tab is being created asynchronously. int assignedTabId = intent == null ? Tab.INVALID_TAB_ID : IntentUtils.safeGetIntExtra( @@ -430,20 +431,24 @@ } /** - * @param type Type of the tab launch. + * @param tabLaunchType Type of the tab launch. * @param intent The intent causing the tab launch. + * @param originalTransitionType The original transition type. * @return The page transition type constant. */ - private int getTransitionType(@TabLaunchType int type, Intent intent) { + private int getTransitionType(@TabLaunchType int tabLaunchType, Intent intent, + @PageTransition int originalTransitionType) { int transition = PageTransition.LINK; - switch (type) { + switch (tabLaunchType) { + case TabLaunchType.FROM_START_SURFACE: + transition = originalTransitionType; + break; case TabLaunchType.FROM_EXTERNAL_APP: case TabLaunchType.FROM_BROWSER_ACTIONS: transition = PageTransition.LINK | PageTransition.FROM_API; break; case TabLaunchType.FROM_CHROME_UI: case TabLaunchType.FROM_STARTUP: - case TabLaunchType.FROM_START_SURFACE: case TabLaunchType.FROM_LAUNCHER_SHORTCUT: case TabLaunchType.FROM_LAUNCH_NEW_INCOGNITO_TAB: transition = PageTransition.AUTO_TOPLEVEL;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/upgrade/PackageReplacedBroadcastReceiver.java b/chrome/android/java/src/org/chromium/chrome/browser/upgrade/PackageReplacedBroadcastReceiver.java index 9e429405..22edf27 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/upgrade/PackageReplacedBroadcastReceiver.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/upgrade/PackageReplacedBroadcastReceiver.java
@@ -7,10 +7,12 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.os.Build; import org.chromium.base.task.PostTask; import org.chromium.base.task.TaskTraits; import org.chromium.chrome.browser.autofill_assistant.AutofillAssistantModuleEntryProvider; +import org.chromium.chrome.browser.base.DexFixer; import org.chromium.chrome.browser.notifications.channels.ChannelsUpdater; import org.chromium.chrome.browser.vr.VrModuleProvider; @@ -32,16 +34,18 @@ @Override public void onReceive(final Context context, Intent intent) { if (!Intent.ACTION_MY_PACKAGE_REPLACED.equals(intent.getAction())) return; - updateChannelsIfNecessary(); VrModuleProvider.maybeRequestModuleIfDaydreamReady(); AutofillAssistantModuleEntryProvider.maybeInstallDeferred(); - } - private void updateChannelsIfNecessary() { - if (!ChannelsUpdater.getInstance().shouldUpdateChannels()) return; final PendingResult result = goAsync(); PostTask.postTask(TaskTraits.BEST_EFFORT_MAY_BLOCK, () -> { - ChannelsUpdater.getInstance().updateChannels(); + if (ChannelsUpdater.getInstance().shouldUpdateChannels()) { + ChannelsUpdater.getInstance().updateChannels(); + } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + DexFixer.fixDexInBackground(); + } result.finish(); }); }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/accessibility_tab_switcher/OverviewListLayoutTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/accessibility_tab_switcher/OverviewListLayoutTest.java index e1f9e4a..789766f7f 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/accessibility_tab_switcher/OverviewListLayoutTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/accessibility_tab_switcher/OverviewListLayoutTest.java
@@ -26,7 +26,6 @@ import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.Criteria; import org.chromium.base.test.util.CriteriaHelper; -import org.chromium.base.test.util.DisabledTest; import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.Restriction; import org.chromium.chrome.R; @@ -195,7 +194,6 @@ } @Test - @DisabledTest(message = "TODO(crbug.com/1127280): Fix flakiness.") @Restriction(UiRestriction.RESTRICTION_TYPE_PHONE) @MediumTest @Feature({"Accessibility"})
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarTest.java index e0a0fd4..7db03ae8 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarTest.java
@@ -247,4 +247,17 @@ mLocationBarMediator.getStatusCoordinatorForTesting() .getSecurityIconResourceIdForTesting()); } + + @Test + @MediumTest + public void testPostDestroyFocusLogic() { + startActivityNormally(); + TestThreadUtils.runOnUiThreadBlocking(() -> { + LocationBarLayout locationBarLayout = + mActivity.findViewById(org.chromium.chrome.R.id.location_bar); + locationBarLayout.destroy(); + locationBarLayout.finishUrlFocusChange(true, true); + locationBarLayout.setUrlFocusChangeInProgress(false); + }); + } }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabDataTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabDataTest.java index 072ba3d..0b6cb9ce 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabDataTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabDataTest.java
@@ -252,4 +252,20 @@ CriticalPersistedTabData.getContentStateByteArray( deserialized.getWebContentsState().buffer())); } + + @UiThreadTest + @SmallTest + @Test + public void testOpenerAppIdNull() { + Tab tab = mockTab(TAB_ID, false); + CriticalPersistedTabData criticalPersistedTabData = new CriticalPersistedTabData(tab, "", + "", PARENT_ID, ROOT_ID, TIMESTAMP, WEB_CONTENTS_STATE, CONTENT_STATE_VERSION, null, + THEME_COLOR, LAUNCH_TYPE_AT_CREATION); + byte[] serialized = criticalPersistedTabData.serialize(); + PersistedTabDataConfiguration config = PersistedTabDataConfiguration.get( + ShoppingPersistedTabData.class, tab.isIncognito()); + CriticalPersistedTabData deserialized = + new CriticalPersistedTabData(tab, serialized, config.getStorage(), config.getId()); + Assert.assertEquals(null, deserialized.getOpenerAppId()); + } }
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/content/CustomTabActivityTabControllerUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/content/CustomTabActivityTabControllerUnitTest.java index 76c5950..38fd1f4 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/content/CustomTabActivityTabControllerUnitTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/content/CustomTabActivityTabControllerUnitTest.java
@@ -187,9 +187,8 @@ assertNull(env.tabProvider.getTab()); } - // Some websites replace the tab with a new one. @Test - public void doesNotSetHeaderWhenIncognito() { + public void doesNotSetCctClientDataHeaderWhenIncognito() { doAnswer((mock) -> { fail("setClientDataHeaderForNewTab() should not be called for incognito tabs"); return null; @@ -197,9 +196,38 @@ .when(env.connection) .setClientDataHeaderForNewTab(any(), any()); env.isIncognito = true; + when(env.intentDataProvider.shouldAddCctClientDataHeader()).thenReturn(true); mTabController.onPreInflationStartup(); mTabController.finishNativeInitialization(); Tab tab = env.prepareTab(); assertTrue(tab.isIncognito()); } + + @Test + public void doesNotSetCctClientDataHeaderWithoutExtra() { + doAnswer((mock) -> { + fail("setClientDataHeaderForNewTab() should not be called without extra"); + return null; + }) + .when(env.connection) + .setClientDataHeaderForNewTab(any(), any()); + mTabController.onPreInflationStartup(); + mTabController.finishNativeInitialization(); + } + + @Test + public void setsCctClientDataHeaderWithExtra() { + final boolean[] wasSetClientDataHeaderForNewTabCalled = new boolean[1]; + doAnswer((mock) -> { + wasSetClientDataHeaderForNewTabCalled[0] = true; + return null; + }) + .when(env.connection) + .setClientDataHeaderForNewTab(any(), any()); + when(env.intentDataProvider.shouldAddCctClientDataHeader()).thenReturn(true); + mTabController.onPreInflationStartup(); + mTabController.finishNativeInitialization(); + Tab tab = env.prepareTab(); + assertTrue(wasSetClientDataHeaderForNewTabCalled[0]); + } }
diff --git a/chrome/android/profiles/newest.txt b/chrome/android/profiles/newest.txt index 0a573a32..53fb1292 100644 --- a/chrome/android/profiles/newest.txt +++ b/chrome/android/profiles/newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-89.0.4357.3_rc-r1-merged.afdo.bz2 +chromeos-chrome-amd64-89.0.4379.0_rc-r1-merged.afdo.bz2
diff --git a/chrome/app/chromeos_strings.grdp b/chrome/app/chromeos_strings.grdp index 94451d2..476e5ca7e 100644 --- a/chrome/app/chromeos_strings.grdp +++ b/chrome/app/chromeos_strings.grdp
@@ -1689,18 +1689,6 @@ <!-- Open Network (ONC)--> <!-- TODO(crbug.com/1142857) Move these strings to //chromeos/components/network_ui --> - <message name="IDS_ONC_IPV4_ADDRESS" desc="ONC Property label for ipv4-IPAddress"> - IP address - </message> - <message name="IDS_ONC_IPV4_GATEWAY" desc="ONC Property label for ipv4-Gateway"> - Gateway - </message> - <message name="IDS_ONC_IPV4_NETMASK" desc="ONC Property label for ipv4-netmask"> - Subnet mask - </message> - <message name="IDS_ONC_IPV6_ADDRESS" desc="ONC Property label for ipv6-Address"> - IPv6 address - </message> <message name="IDS_ONC_CELLULAR_ACTIVATION_STATE" desc="ONC Property label for Cellular.ActivationState"> Activation status </message> @@ -1776,12 +1764,6 @@ <message name="IDS_ONC_CELLULAR_SERVING_OPERATOR_NAME" desc="ONC Property label for Cellular.ServingOperator.Name"> Operator </message> - <message name="IDS_ONC_CONNECTED" desc="Settings > Internet, text in network summary when a network is connected."> - Connected - </message> - <message name="IDS_ONC_CONNECTING" desc="Settings > Internet, text in network summary when a network is connecting."> - Connecting - </message> <message name="IDS_ONC_EAP_ANONYMOUS_IDENTITY" desc="ONC Property label for EAP.AnonymousIdentity"> Anonymous Identity </message> @@ -1839,21 +1821,6 @@ <message name="IDS_ONC_NOT_CONNECTED" desc="Settings > Internet, text in network summary when a network is not connecting or connected."> Not Connected </message> - <message name="IDS_ONC_PORTAL_STATE" desc="Settings > Internet, label in network details page for the captive portal state."> - Portal State - </message> - <message name="IDS_ONC_PORTAL_STATE_NO_INTERNET" desc="Settings > Internet, text in network details page when no internet connection is avialable."> - No internet - </message> - <message name="IDS_ONC_PORTAL_STATE_PORTAL" desc="Settings > Internet, text in network details page when a portal state was detected."> - Captive portal detected - </message> - <message name="IDS_ONC_PORTAL_STATE_PORTAL_SUSPECTED" desc="Settings > Internet, text in network details page when a portal state is suspected."> - Captive portal suspected - </message> - <message name="IDS_ONC_PORTAL_STATE_PROXY_AUTH" desc="Settings > Internet, text in network details page when a portal state was detected."> - Proxy authentication required - </message> <message name="IDS_ONC_TETHER_BATTERY_PERCENTAGE" desc="Settings > Internet > Title of section which displays the battery percentage of another device which provides a tether hotspot for the current device to connect to."> Battery </message> @@ -1884,75 +1851,6 @@ <message name="IDS_ONC_TETHER_CARRIER_UNKNOWN" desc="Settings > Internet > Text displayed in the settings UI in place of a cellular provider when the actual name of the provider is unknown. In this context, the cellular provider refers to the carrier which provides mobile data service to another device which can start a tether hotspot to provide a data connection to the current device."> Unknown carrier </message> - <message name="IDS_ONC_VPN_HOST" desc="ONC Property label for VPN.Host"> - Server hostname - </message> - <message name="IDS_ONC_VPN_IPSEC_GROUP" desc="ONC Property label for VPN.IPSec.Group"> - Group name - </message> - <message name="IDS_ONC_VPN_IPSEC_PSK" desc="ONC Property label for VPN.IPSec.PSK"> - Pre-shared key - </message> - <message name="IDS_ONC_VPN_OPENVPN_EXTRA_HOSTS" desc="ONC Property label for VPN.OpenVPN.ExtraHosts"> - Extra hosts - </message> - <message name="IDS_ONC_VPN_OPENVPN_OTP" desc="ONC Property label for VPN.OpenVPN.OTP"> - OTP - </message> - <message name="IDS_ONC_VPN_PASSWORD" desc="ONC Property label for VPN.OpenVPN.Password or VPN.L2TP.Password"> - Password - </message> - <message name="IDS_ONC_VPN_USERNAME" desc="ONC Property label for VPN.OpenVPN.Username or VPN.L2TP.Username"> - Username - </message> - <message name="IDS_ONC_VPN_THIRD_PARTY_VPN_PROVIDER_NAME" desc="ONC Property label for VPN.ThirdPartyVPN.ProviderName"> - Provider name - </message> - <message name="IDS_ONC_VPN_TYPE" desc="ONC Property label for VPN.Type"> - Provider type - </message> - <message name="IDS_ONC_VPN_TYPE_L2TP_IPSEC" desc="ONC Property label for VPN.Type.L2TP-IPSec"> - L2TP/IPsec - </message> - <message name="IDS_ONC_VPN_TYPE_L2TP_IPSEC_PSK" desc="ONC Property label for configuring VPN.Type.L2TP-IPSec with AuthenticationType = PSK"> - L2TP/IPsec + pre-shared key - </message> - <message name="IDS_ONC_VPN_TYPE_L2TP_IPSEC_CERT" desc="ONC Property label for configuring VPN.Type.L2TP-IPSec with AuthenticationType = Cert"> - L2TP/IPsec + user certificate - </message> - <message name="IDS_ONC_VPN_TYPE_OPENVPN" desc="ONC Property label for VPN.Type.OpenVPN"> - Open VPN - </message> - <message name="IDS_ONC_VPN_TYPE_ARCVPN" desc="ONC Property label for VPN.Type.ARCVPN"> - Android VPN - </message> - <message name="IDS_ONC_WIFI_FREQUENCY" desc="ONC Property label for WiFi.Frequency"> - Frequency - </message> - <message name="IDS_ONC_WIFI_PASSWORD" desc="ONC Property label for WiFi.Password"> - Password - </message> - <message name="IDS_ONC_WIFI_SECURITY" desc="ONC Property label for WiFi.Security"> - Security - </message> - <message name="IDS_ONC_WIFI_SECURITY_NONE" desc="In settings > Internet, a string specifying security type = none."> - None - </message> - <message name="IDS_ONC_WIFI_SECURITY_WEP" desc="In settings > Internet, a string specifying security type = WEP."> - WEP - </message> - <message name="IDS_ONC_WIFI_SECURITY_PSK" desc="In settings > Internet, a string specifying security type = PSK (either WPA-PSK or RSN-PSK)."> - PSK (WPA or RSN) - </message> - <message name="IDS_ONC_WIFI_SECURITY_EAP" desc="In settings > Internet, a string specifying security type = EAP (802.1X)."> - EAP - </message> - <message name="IDS_ONC_WIFI_SSID" desc="ONC Property label for WiFi.SSID"> - SSID - </message> - <message name="IDS_ONC_WIFI_BSSID" desc="Settings > Network > Wifi Network Detail Page > label for BSSID property. BSSID is a a unique 48 bit identifier for a wireless access point."> - BSSID - </message> <!-- Settings Internet Page--> <message name="IDS_SETTINGS_INTERNET_CONFIG" desc="Title for the network configuration dialog.">
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index 882c4c7..d84b2af 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -1053,8 +1053,6 @@ "page_load_metrics/observers/portal_page_load_metrics_observer.h", "page_load_metrics/observers/prefetch_proxy_page_load_metrics_observer.cc", "page_load_metrics/observers/prefetch_proxy_page_load_metrics_observer.h", - "page_load_metrics/observers/previews_page_load_metrics_observer.cc", - "page_load_metrics/observers/previews_page_load_metrics_observer.h", "page_load_metrics/observers/previews_ukm_observer.cc", "page_load_metrics/observers/previews_ukm_observer.h", "page_load_metrics/observers/protocol_page_load_metrics_observer.cc",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index 47a44b8b..dda3734 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -3305,11 +3305,6 @@ {"enable-login-detection", flag_descriptions::kEnableLoginDetectionName, flag_descriptions::kEnableLoginDetectionDescription, kOsAll, FEATURE_VALUE_TYPE(login_detection::kLoginDetection)}, -#if defined(OS_ANDROID) - {"enable-offline-previews", flag_descriptions::kEnableOfflinePreviewsName, - flag_descriptions::kEnableOfflinePreviewsDescription, kOsAndroid, - FEATURE_VALUE_TYPE(previews::features::kOfflinePreviews)}, -#endif // OS_ANDROID #if defined(OS_CHROMEOS) || defined(OS_LINUX) {"enable-save-data", flag_descriptions::kEnableSaveDataName, flag_descriptions::kEnableSaveDataDescription, kOsCrOS | kOsLinux, @@ -3329,13 +3324,6 @@ flag_descriptions::kEnablePreconnectToSearchName, flag_descriptions::kEnablePreconnectToSearchDescription, kOsAll, FEATURE_VALUE_TYPE(features::kPreconnectToSearch)}, - {"enable-noscript-previews", flag_descriptions::kEnableNoScriptPreviewsName, - flag_descriptions::kEnableNoScriptPreviewsDescription, kOsAll, - FEATURE_VALUE_TYPE(previews::features::kNoScriptPreviews)}, - {"enable-resource-loading-hints", - flag_descriptions::kEnableResourceLoadingHintsName, - flag_descriptions::kEnableResourceLoadingHintsDescription, kOsAll, - FEATURE_VALUE_TYPE(previews::features::kResourceLoadingHints)}, {"enable-previews-coin-flip", flag_descriptions::kEnablePreviewsCoinFlipName, flag_descriptions::kEnablePreviewsCoinFlipDescription, kOsAll, @@ -5256,11 +5244,6 @@ flag_descriptions::kEnableImplicitRootScrollerDescription, kOsAll, FEATURE_VALUE_TYPE(blink::features::kImplicitRootScroller)}, - {"enable-text-fragment-anchor", - flag_descriptions::kEnableTextFragmentAnchorName, - flag_descriptions::kEnableTextFragmentAnchorDescription, kOsAll, - FEATURE_VALUE_TYPE(blink::features::kTextFragmentAnchor)}, - #if BUILDFLAG(IS_CHROMEOS_ASH) {"enable-assistant-stereo-input", flag_descriptions::kEnableGoogleAssistantStereoInputName, @@ -6306,14 +6289,6 @@ #endif // !defined(OS_ANDROID) #if BUILDFLAG(IS_CHROMEOS_ASH) - {"drag-to-snap-in-clamshell-mode", - flag_descriptions::kDragToSnapInClamshellModeName, - flag_descriptions::kDragToSnapInClamshellModeDescription, kOsCrOS, - FEATURE_VALUE_TYPE(ash::features::kDragToSnapInClamshellMode)}, - {"multi-display-overview-and-split-view", - flag_descriptions::kMultiDisplayOverviewAndSplitViewName, - flag_descriptions::kMultiDisplayOverviewAndSplitViewDescription, kOsCrOS, - FEATURE_VALUE_TYPE(ash::features::kMultiDisplayOverviewAndSplitView)}, {"enhanced_clipboard", flag_descriptions::kEnhancedClipboardName, flag_descriptions::kEnhancedClipboardDescription, kOsCrOS, FEATURE_VALUE_TYPE(chromeos::features::kClipboardHistory)},
diff --git a/chrome/browser/android/tab_web_contents_delegate_android_unittest.cc b/chrome/browser/android/tab_web_contents_delegate_android_unittest.cc index 43984a98..b08b8f7 100644 --- a/chrome/browser/android/tab_web_contents_delegate_android_unittest.cc +++ b/chrome/browser/android/tab_web_contents_delegate_android_unittest.cc
@@ -37,30 +37,30 @@ AdjustPreviewsStateForNavigationAllowsPreviews) { TestTabWebContentsDelegateAndroid browser_display_delegate( blink::mojom::DisplayMode::kBrowser); - blink::PreviewsState noscript_previews_state = - blink::PreviewsTypes::NOSCRIPT_ON; - browser_display_delegate.AdjustPreviewsStateForNavigation( - nullptr, &noscript_previews_state); - EXPECT_EQ(blink::PreviewsTypes::NOSCRIPT_ON, noscript_previews_state); + blink::PreviewsState previews_state = + blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON; + browser_display_delegate.AdjustPreviewsStateForNavigation(nullptr, + &previews_state); + EXPECT_EQ(blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON, previews_state); } TEST(TabWebContentsDelegateAndroidTest, AdjustPreviewsStateForNavigationBlocksPreviews) { TestTabWebContentsDelegateAndroid standalone_display_delegate( blink::mojom::DisplayMode::kStandalone); - blink::PreviewsState noscript_previews_state = - blink::PreviewsTypes::NOSCRIPT_ON; + blink::PreviewsState previews_state_standalone = + blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON; standalone_display_delegate.AdjustPreviewsStateForNavigation( - nullptr, &noscript_previews_state); - EXPECT_EQ(blink::PreviewsTypes::PREVIEWS_OFF, noscript_previews_state); + nullptr, &previews_state_standalone); + EXPECT_EQ(blink::PreviewsTypes::PREVIEWS_OFF, previews_state_standalone); TestTabWebContentsDelegateAndroid minimal_ui_display_delegate( blink::mojom::DisplayMode::kMinimalUi); - blink::PreviewsState litepage_previews_state = - blink::PreviewsTypes::SERVER_LITE_PAGE_ON; + blink::PreviewsState previews_state_minimal = + blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON; minimal_ui_display_delegate.AdjustPreviewsStateForNavigation( - nullptr, &litepage_previews_state); - EXPECT_EQ(blink::PreviewsTypes::PREVIEWS_OFF, litepage_previews_state); + nullptr, &previews_state_minimal); + EXPECT_EQ(blink::PreviewsTypes::PREVIEWS_OFF, previews_state_minimal); } } // namespace android
diff --git a/chrome/browser/apps/app_service/web_apps_base.cc b/chrome/browser/apps/app_service/web_apps_base.cc index 55f75bb1..37626da 100644 --- a/chrome/browser/apps/app_service/web_apps_base.cc +++ b/chrome/browser/apps/app_service/web_apps_base.cc
@@ -120,7 +120,7 @@ return GetRegistrar() ? GetRegistrar()->GetAppById(app_id) : nullptr; } -void WebAppsBase::OnWebAppUninstalled(const web_app::AppId& app_id) { +void WebAppsBase::OnWebAppWillBeUninstalled(const web_app::AppId& app_id) { const web_app::WebApp* web_app = GetWebApp(app_id); if (!web_app || !Accepts(app_id)) { return;
diff --git a/chrome/browser/apps/app_service/web_apps_base.h b/chrome/browser/apps/app_service/web_apps_base.h index 0165077..1e74586 100644 --- a/chrome/browser/apps/app_service/web_apps_base.h +++ b/chrome/browser/apps/app_service/web_apps_base.h
@@ -59,7 +59,7 @@ const web_app::WebApp* GetWebApp(const web_app::AppId& app_id) const; // web_app::AppRegistrarObserver: - void OnWebAppUninstalled(const web_app::AppId& app_id) override; + void OnWebAppWillBeUninstalled(const web_app::AppId& app_id) override; void OnWebAppLastLaunchTimeChanged( const std::string& app_id, const base::Time& last_launch_time) override;
diff --git a/chrome/browser/apps/app_service/web_apps_chromeos.cc b/chrome/browser/apps/app_service/web_apps_chromeos.cc index fe01b917..8edb995 100644 --- a/chrome/browser/apps/app_service/web_apps_chromeos.cc +++ b/chrome/browser/apps/app_service/web_apps_chromeos.cc
@@ -289,7 +289,7 @@ NOTIMPLEMENTED(); } -void WebAppsChromeOs::OnWebAppUninstalled(const web_app::AppId& app_id) { +void WebAppsChromeOs::OnWebAppWillBeUninstalled(const web_app::AppId& app_id) { const web_app::WebApp* web_app = GetWebApp(app_id); if (!web_app || !Accepts(app_id)) { return; @@ -298,7 +298,7 @@ app_notifications_.RemoveNotificationsForApp(app_id); paused_apps_.MaybeRemoveApp(app_id); - WebAppsBase::OnWebAppUninstalled(app_id); + WebAppsBase::OnWebAppWillBeUninstalled(app_id); } // If is_disabled is set, the app backed by |app_id| is published with readiness
diff --git a/chrome/browser/apps/app_service/web_apps_chromeos.h b/chrome/browser/apps/app_service/web_apps_chromeos.h index b9dda78..c6d13fcd 100644 --- a/chrome/browser/apps/app_service/web_apps_chromeos.h +++ b/chrome/browser/apps/app_service/web_apps_chromeos.h
@@ -90,7 +90,7 @@ int64_t display_id) override; // web_app::AppRegistrarObserver: - void OnWebAppUninstalled(const web_app::AppId& app_id) override; + void OnWebAppWillBeUninstalled(const web_app::AppId& app_id) override; void OnWebAppDisabledStateChanged(const web_app::AppId& app_id, bool is_disabled) override; // TODO(loyso): Implement app->last_launch_time field for the new system.
diff --git a/chrome/browser/apps/platform_apps/api/sync_file_system/sync_file_system_apitest.cc b/chrome/browser/apps/platform_apps/api/sync_file_system/sync_file_system_apitest.cc index a3942151..5ba20e2 100644 --- a/chrome/browser/apps/platform_apps/api/sync_file_system/sync_file_system_apitest.cc +++ b/chrome/browser/apps/platform_apps/api/sync_file_system/sync_file_system_apitest.cc
@@ -22,11 +22,13 @@ #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" -using ::testing::_; using storage::FileSystemURL; using sync_file_system::MockRemoteFileSyncService; using sync_file_system::RemoteFileSyncService; using sync_file_system::SyncFileSystemServiceFactory; +using ::testing::_; +using ::testing::Invoke; +using ::testing::WithArg; namespace { @@ -75,22 +77,44 @@ mock_remote_service->NotifyRemoteChangeQueueUpdated(1); } -ACTION_P6(ReturnWithFakeFileAddedStatus, - origin, - mock_remote_service, - file_type, - sync_file_status, - sync_action_taken, - sync_direction) { - FileSystemURL mock_url = sync_file_system::CreateSyncableFileSystemURL( - *origin, base::FilePath(FILE_PATH_LITERAL("foo.txt"))); - mock_remote_service->NotifyRemoteChangeQueueUpdated(0); - base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, - base::BindOnce(arg0, sync_file_system::SYNC_STATUS_OK, mock_url)); - mock_remote_service->NotifyFileStatusChanged( - mock_url, file_type, sync_file_status, sync_action_taken, sync_direction); -} +// This functor is needed instead of using an ACTION_P6 because gmock +// unfortunately does not have good forwarding support for move-only types +// (|callback| in this case). +struct ReturnWithFakeFileAddedStatusFunctor { + ReturnWithFakeFileAddedStatusFunctor( + GURL* origin, + MockRemoteFileSyncService* mock_remote_service, + sync_file_system::SyncFileType file_type, + sync_file_system::SyncFileStatus sync_file_status, + sync_file_system::SyncAction sync_action_taken, + sync_file_system::SyncDirection sync_direction) + : origin_(origin), + mock_remote_service_(mock_remote_service), + file_type_(file_type), + sync_file_status_(sync_file_status), + sync_action_taken_(sync_action_taken), + sync_direction_(sync_direction) {} + + void operator()(sync_file_system::SyncFileCallback callback) { + FileSystemURL mock_url = sync_file_system::CreateSyncableFileSystemURL( + *origin_, base::FilePath(FILE_PATH_LITERAL("foo.txt"))); + mock_remote_service_->NotifyRemoteChangeQueueUpdated(0); + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, base::BindOnce(std::move(callback), + sync_file_system::SYNC_STATUS_OK, mock_url)); + mock_remote_service_->NotifyFileStatusChanged( + mock_url, file_type_, sync_file_status_, sync_action_taken_, + sync_direction_); + } + + private: + GURL* origin_; + MockRemoteFileSyncService* mock_remote_service_; + sync_file_system::SyncFileType file_type_; + sync_file_system::SyncFileStatus sync_file_status_; + sync_file_system::SyncAction sync_action_taken_; + sync_file_system::SyncDirection sync_direction_; +}; } // namespace @@ -123,11 +147,11 @@ EXPECT_CALL(*mock_remote_service(), RegisterOrigin(_, _)) .WillOnce(UpdateRemoteChangeQueue(&origin, mock_remote_service())); EXPECT_CALL(*mock_remote_service(), ProcessRemoteChange(_)) - .WillOnce(ReturnWithFakeFileAddedStatus( + .WillOnce(WithArg<0>(Invoke(ReturnWithFakeFileAddedStatusFunctor( &origin, mock_remote_service(), sync_file_system::SYNC_FILE_TYPE_FILE, sync_file_system::SYNC_FILE_STATUS_SYNCED, sync_file_system::SYNC_ACTION_ADDED, - sync_file_system::SYNC_DIRECTION_REMOTE_TO_LOCAL)); + sync_file_system::SYNC_DIRECTION_REMOTE_TO_LOCAL)))); ASSERT_TRUE(RunPlatformAppTest("sync_file_system/on_file_status_changed")) << message_; } @@ -142,11 +166,11 @@ EXPECT_CALL(*mock_remote_service(), RegisterOrigin(_, _)) .WillOnce(UpdateRemoteChangeQueue(&origin, mock_remote_service())); EXPECT_CALL(*mock_remote_service(), ProcessRemoteChange(_)) - .WillOnce(ReturnWithFakeFileAddedStatus( + .WillOnce(WithArg<0>(Invoke(ReturnWithFakeFileAddedStatusFunctor( &origin, mock_remote_service(), sync_file_system::SYNC_FILE_TYPE_FILE, sync_file_system::SYNC_FILE_STATUS_SYNCED, sync_file_system::SYNC_ACTION_DELETED, - sync_file_system::SYNC_DIRECTION_REMOTE_TO_LOCAL)); + sync_file_system::SYNC_DIRECTION_REMOTE_TO_LOCAL)))); ASSERT_TRUE( RunPlatformAppTest("sync_file_system/on_file_status_changed_deleted")) << message_;
diff --git a/chrome/browser/apps/platform_apps/shortcut_manager.cc b/chrome/browser/apps/platform_apps/shortcut_manager.cc index 99e3751..81648a1 100644 --- a/chrome/browser/apps/platform_apps/shortcut_manager.cc +++ b/chrome/browser/apps/platform_apps/shortcut_manager.cc
@@ -144,7 +144,7 @@ const Extension* extension, extensions::UninstallReason reason) { // Bookmark apps are handled in - // web_app::AppShortcutManager::OnWebAppUninstalled() + // web_app::AppShortcutManager::OnWebAppWillBeUninstalled() if (!extension->from_bookmark() && !g_suppress_shortcuts_for_testing) web_app::DeleteAllShortcuts(profile_, extension); }
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index 7ee09fe..a9b6429 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc
@@ -5441,11 +5441,6 @@ DCHECK(previews_data); - if (base::CommandLine::ForCurrentProcess()->HasSwitch( - previews::switches::kForceEnablePreviews)) { - return blink::ALL_SUPPORTED_PREVIEWS; - } - // Evaluate client-side previews. previews_state |= previews::DetermineAllowedClientPreviewsState( previews_data, previews_triggering_logic_already_ran,
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn index e9fb975f..440c508 100644 --- a/chrome/browser/chromeos/BUILD.gn +++ b/chrome/browser/chromeos/BUILD.gn
@@ -592,6 +592,8 @@ "arc/app_shortcuts/arc_app_shortcuts_menu_builder.h", "arc/app_shortcuts/arc_app_shortcuts_request.cc", "arc/app_shortcuts/arc_app_shortcuts_request.h", + "arc/arc_demo_mode_delegate_impl.cc", + "arc/arc_demo_mode_delegate_impl.h", "arc/arc_migration_constants.h", "arc/arc_migration_guide_notification.cc", "arc/arc_migration_guide_notification.h", @@ -3361,6 +3363,7 @@ "arc/adbd/arc_adbd_monitor_bridge_unittest.cc", "arc/app_shortcuts/arc_app_shortcuts_menu_builder_unittest.cc", "arc/app_shortcuts/arc_app_shortcuts_request_unittest.cc", + "arc/arc_demo_mode_delegate_impl_unittest.cc", "arc/arc_migration_guide_notification_unittest.cc", "arc/arc_support_host_unittest.cc", "arc/arc_ui_availability_reporter_unittest.cc",
diff --git a/chrome/browser/chromeos/accessibility/accessibility_manager.cc b/chrome/browser/chromeos/accessibility/accessibility_manager.cc index c9b9141..1fd290e9 100644 --- a/chrome/browser/chromeos/accessibility/accessibility_manager.cc +++ b/chrome/browser/chromeos/accessibility/accessibility_manager.cc
@@ -16,6 +16,7 @@ #include "ash/public/cpp/accessibility_controller_enums.h" #include "ash/public/cpp/accessibility_focus_ring_controller.h" #include "ash/public/cpp/accessibility_focus_ring_info.h" +#include "ash/public/cpp/ash_constants.h" #include "ash/public/cpp/ash_pref_names.h" #include "ash/root_window_controller.h" #include "ash/shell.h" @@ -28,6 +29,7 @@ #include "base/memory/singleton.h" #include "base/metrics/histogram_functions.h" #include "base/path_service.h" +#include "base/strings/string_number_conversions.h" #include "base/strings/string_piece.h" #include "base/strings/string_split.h" #include "base/strings/string_util.h" @@ -1689,25 +1691,17 @@ } void AccessibilityManager::SetSwitchAccessKeysForTest( - const std::set<int>& select_keys, - const std::set<int>& next_keys, - const std::set<int>& previous_keys) { - ListPrefUpdate select_update( - profile_->GetPrefs(), - ash::prefs::kAccessibilitySwitchAccessSelectKeyCodes); - for (int key : select_keys) - select_update->AppendInteger(key); - - ListPrefUpdate next_update( - profile_->GetPrefs(), ash::prefs::kAccessibilitySwitchAccessNextKeyCodes); - for (int key : next_keys) - next_update->AppendInteger(key); - - ListPrefUpdate previous_update( - profile_->GetPrefs(), - ash::prefs::kAccessibilitySwitchAccessPreviousKeyCodes); - for (int key : previous_keys) - previous_update->AppendInteger(key); + const std::set<int>& action_keys, + const std::string& pref_name) { + DictionaryPrefUpdate pref_update(profile_->GetPrefs(), pref_name); + base::ListValue devices; + devices.Append(ash::kSwitchAccessInternalDevice); + devices.Append(ash::kSwitchAccessUsbDevice); + devices.Append(ash::kSwitchAccessBluetoothDevice); + for (int key : action_keys) { + const std::string& key_str = base::NumberToString(key); + pref_update->SetPath(key_str, devices.Clone()); + } profile_->GetPrefs()->CommitPendingWrite(); }
diff --git a/chrome/browser/chromeos/accessibility/accessibility_manager.h b/chrome/browser/chromeos/accessibility/accessibility_manager.h index 8bc8f59e0..21b41fc5 100644 --- a/chrome/browser/chromeos/accessibility/accessibility_manager.h +++ b/chrome/browser/chromeos/accessibility/accessibility_manager.h
@@ -349,9 +349,8 @@ base::RepeatingCallback<void()> observer); void SetCaretBoundsObserverForTest( base::RepeatingCallback<void(const gfx::Rect&)> observer); - void SetSwitchAccessKeysForTest(const std::set<int>& select_keys, - const std::set<int>& next_keys, - const std::set<int>& previous_keys); + void SetSwitchAccessKeysForTest(const std::set<int>& action_keys, + const std::string& pref_name); const std::set<std::string>& GetAccessibilityCommonEnabledFeaturesForTest() { return accessibility_common_enabled_features_;
diff --git a/chrome/browser/chromeos/accessibility/switch_access_browsertest.cc b/chrome/browser/chromeos/accessibility/switch_access_browsertest.cc index f435fa3..f481a44 100644 --- a/chrome/browser/chromeos/accessibility/switch_access_browsertest.cc +++ b/chrome/browser/chromeos/accessibility/switch_access_browsertest.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "ash/public/cpp/accessibility_controller.h" +#include "ash/public/cpp/ash_pref_names.h" #include "base/files/file_path.h" #include "base/files/file_util.h" #include "base/path_service.h" @@ -38,8 +39,15 @@ const std::set<int>& previous_key_codes) { AccessibilityManager* manager = AccessibilityManager::Get(); manager->SetSwitchAccessEnabled(true); - manager->SetSwitchAccessKeysForTest(select_key_codes, next_key_codes, - previous_key_codes); + manager->SetSwitchAccessKeysForTest( + select_key_codes, + ash::prefs::kAccessibilitySwitchAccessSelectDeviceKeyCodes); + manager->SetSwitchAccessKeysForTest( + next_key_codes, + ash::prefs::kAccessibilitySwitchAccessNextDeviceKeyCodes); + manager->SetSwitchAccessKeysForTest( + previous_key_codes, + ash::prefs::kAccessibilitySwitchAccessPreviousDeviceKeyCodes); EXPECT_TRUE(manager->IsSwitchAccessEnabled());
diff --git a/chrome/browser/chromeos/apps/apk_web_app_installer_browsertest.cc b/chrome/browser/chromeos/apps/apk_web_app_installer_browsertest.cc index c398557..10a64ebb 100644 --- a/chrome/browser/chromeos/apps/apk_web_app_installer_browsertest.cc +++ b/chrome/browser/chromeos/apps/apk_web_app_installer_browsertest.cc
@@ -152,7 +152,7 @@ provider_->registrar().GetAppShortName(web_app_id); } - void OnWebAppUninstalled(const web_app::AppId& web_app_id) override { + void OnWebAppWillBeUninstalled(const web_app::AppId& web_app_id) override { uninstalled_web_app_id_ = web_app_id; }
diff --git a/chrome/browser/chromeos/apps/apk_web_app_service.cc b/chrome/browser/chromeos/apps/apk_web_app_service.cc index c8069ec5..b05a6cc2 100644 --- a/chrome/browser/chromeos/apps/apk_web_app_service.cc +++ b/chrome/browser/chromeos/apps/apk_web_app_service.cc
@@ -316,10 +316,10 @@ // associated with an installed web app. If it is, there are 2 potential // cases: // 1) The user has uninstalled the web app already (e.g. via the - // launcher), which has called OnWebAppUninstalled() below and triggered + // launcher), which has called OnWebAppWillBeUninstalled() below and triggered // the uninstallation of the Android package. // - // In this case, OnWebAppUninstalled() will have removed the associated + // In this case, OnWebAppWillBeUninstalled() will have removed the associated // web_app_id from the pref dict before triggering uninstallation, so this // method will do nothing. // @@ -330,7 +330,7 @@ // called, so the associated web_app_id is in the pref dict, and this method // will trigger the uninstallation of the web app. Similarly, this method // removes the associated web_app_id before triggering uninstallation, so - // OnWebAppUninstalled() will do nothing. + // OnWebAppWillBeUninstalled() will do nothing. if (!base::FeatureList::IsEnabled(features::kApkWebAppInstalls)) return; @@ -400,7 +400,8 @@ } } -void ApkWebAppService::OnWebAppUninstalled(const web_app::AppId& web_app_id) { +void ApkWebAppService::OnWebAppWillBeUninstalled( + const web_app::AppId& web_app_id) { if (!base::FeatureList::IsEnabled(features::kApkWebAppInstalls)) return;
diff --git a/chrome/browser/chromeos/apps/apk_web_app_service.h b/chrome/browser/chromeos/apps/apk_web_app_service.h index a93b90f..298a778 100644 --- a/chrome/browser/chromeos/apps/apk_web_app_service.h +++ b/chrome/browser/chromeos/apps/apk_web_app_service.h
@@ -92,7 +92,7 @@ void OnPackageListInitialRefreshed() override; // web_app::AppRegistrarObserver overrides. - void OnWebAppUninstalled(const web_app::AppId& web_app_id) override; + void OnWebAppWillBeUninstalled(const web_app::AppId& web_app_id) override; void OnDidGetWebAppIcon(const std::string& package_name, arc::mojom::WebAppInfoPtr web_app_info,
diff --git a/chrome/browser/chromeos/arc/arc_demo_mode_delegate_impl.cc b/chrome/browser/chromeos/arc/arc_demo_mode_delegate_impl.cc new file mode 100644 index 0000000..d93352d --- /dev/null +++ b/chrome/browser/chromeos/arc/arc_demo_mode_delegate_impl.cc
@@ -0,0 +1,30 @@ +// 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/arc/arc_demo_mode_delegate_impl.h" + +#include <utility> + +#include "chrome/browser/chromeos/login/demo_mode/demo_resources.h" +#include "chrome/browser/chromeos/login/demo_mode/demo_session.h" + +namespace arc { + +void ArcDemoModeDelegateImpl::EnsureOfflineResourcesLoaded( + base::OnceClosure callback) { + if (!chromeos::DemoSession::IsDeviceInDemoMode()) { + std::move(callback).Run(); + return; + } + chromeos::DemoSession::Get()->EnsureOfflineResourcesLoaded( + std::move(callback)); +} + +base::FilePath ArcDemoModeDelegateImpl::GetDemoAppsPath() { + if (!chromeos::DemoSession::IsDeviceInDemoMode()) + return base::FilePath(); + return chromeos::DemoSession::Get()->resources()->GetDemoAppsPath(); +} + +} // namespace arc
diff --git a/chrome/browser/chromeos/arc/arc_demo_mode_delegate_impl.h b/chrome/browser/chromeos/arc/arc_demo_mode_delegate_impl.h new file mode 100644 index 0000000..3237e340 --- /dev/null +++ b/chrome/browser/chromeos/arc/arc_demo_mode_delegate_impl.h
@@ -0,0 +1,28 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_CHROMEOS_ARC_ARC_DEMO_MODE_DELEGATE_IMPL_H_ +#define CHROME_BROWSER_CHROMEOS_ARC_ARC_DEMO_MODE_DELEGATE_IMPL_H_ + +#include "base/callback_forward.h" +#include "base/files/file_path.h" +#include "components/arc/session/arc_client_adapter.h" + +namespace arc { + +class ArcDemoModeDelegateImpl : public ArcClientAdapter::DemoModeDelegate { + public: + ArcDemoModeDelegateImpl() = default; + ~ArcDemoModeDelegateImpl() override = default; + ArcDemoModeDelegateImpl(const ArcDemoModeDelegateImpl&) = delete; + ArcDemoModeDelegateImpl& operator=(const ArcDemoModeDelegateImpl&) = delete; + + // ArcClientAdapter::DemoModeDelegate overrides: + void EnsureOfflineResourcesLoaded(base::OnceClosure callback) override; + base::FilePath GetDemoAppsPath() override; +}; + +} // namespace arc + +#endif // CHROME_BROWSER_CHROMEOS_ARC_ARC_DEMO_MODE_DELEGATE_IMPL_H_
diff --git a/chrome/browser/chromeos/arc/arc_demo_mode_delegate_impl_unittest.cc b/chrome/browser/chromeos/arc/arc_demo_mode_delegate_impl_unittest.cc new file mode 100644 index 0000000..f1253c9 --- /dev/null +++ b/chrome/browser/chromeos/arc/arc_demo_mode_delegate_impl_unittest.cc
@@ -0,0 +1,91 @@ +// 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/arc/arc_demo_mode_delegate_impl.h" + +#include <memory> + +#include "base/optional.h" +#include "chrome/browser/chromeos/login/demo_mode/demo_mode_test_helper.h" +#include "chrome/browser/chromeos/login/demo_mode/demo_session.h" +#include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h" +#include "components/user_manager/scoped_user_manager.h" +#include "content/public/test/browser_task_environment.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace arc { +namespace { + +class ArcDemoModeDelegateImplTest : public testing::Test { + public: + ArcDemoModeDelegateImplTest() + : user_manager_enabler_( + std::make_unique<chromeos::FakeChromeUserManager>()) {} + ~ArcDemoModeDelegateImplTest() override = default; + ArcDemoModeDelegateImplTest(const ArcDemoModeDelegateImplTest&) = delete; + ArcDemoModeDelegateImplTest& operator=(const ArcDemoModeDelegateImplTest&) = + delete; + + protected: + chromeos::DemoModeTestHelper* demo_helper() { return &demo_helper_; } + + ArcDemoModeDelegateImpl* delegate() { return &delegate_; } + + private: + content::BrowserTaskEnvironment browser_task_environment_; + user_manager::ScopedUserManager user_manager_enabler_; + chromeos::DemoModeTestHelper demo_helper_; + ArcDemoModeDelegateImpl delegate_; +}; + +// Test that EnsureOfflineResourcesLoaded returns immediately if demo mode is +// not enabled. +TEST_F(ArcDemoModeDelegateImplTest, EnsureOfflineResourcesLoaded_NotEnabled) { + chromeos::DemoSession::SetDemoConfigForTesting( + chromeos::DemoSession::DemoModeConfig::kNone); + + bool was_called = false; + base::OnceClosure callback = + base::BindOnce([](bool* was_called) { *was_called = true; }, &was_called); + delegate()->EnsureOfflineResourcesLoaded(std::move(callback)); + EXPECT_TRUE(was_called); +} + +// Test that EnsureOfflineResourcesLoaded returns after resources are loaded if +// demo mode is enabled. +TEST_F(ArcDemoModeDelegateImplTest, EnsureOfflineResourcesLoaded_Enabled) { + demo_helper()->InitializeSessionWithPendingComponent(); + + bool was_called = false; + base::OnceClosure callback = + base::BindOnce([](bool* was_called) { *was_called = true; }, &was_called); + delegate()->EnsureOfflineResourcesLoaded(std::move(callback)); + EXPECT_FALSE(was_called); + + demo_helper()->FinishLoadingComponent(); + EXPECT_TRUE(was_called); +} + +// Test that GetDemoAppsPath returns empty path if demo mode is not enabled. +TEST_F(ArcDemoModeDelegateImplTest, GetDemoAppsPath_NotEnabled) { + chromeos::DemoSession::SetDemoConfigForTesting( + chromeos::DemoSession::DemoModeConfig::kNone); + + base::FilePath demo_session_apps_path = delegate()->GetDemoAppsPath(); + EXPECT_TRUE(demo_session_apps_path.empty()); +} + +// Test that GetDemoAppsPath returns the correct path if demo mode is enabled. +TEST_F(ArcDemoModeDelegateImplTest, GetDemoAppsPath_Enabled) { + demo_helper()->InitializeSession(); + + base::FilePath demo_session_apps_path = delegate()->GetDemoAppsPath(); + EXPECT_FALSE(demo_session_apps_path.empty()); + EXPECT_EQ( + demo_helper()->GetDemoResourcesPath().Append("android_demo_apps.squash"), + demo_session_apps_path); +} + +} // namespace +} // namespace arc
diff --git a/chrome/browser/chromeos/arc/session/arc_session_manager.cc b/chrome/browser/chromeos/arc/session/arc_session_manager.cc index bb9700b..a2c00fa 100644 --- a/chrome/browser/chromeos/arc/session/arc_session_manager.cc +++ b/chrome/browser/chromeos/arc/session/arc_session_manager.cc
@@ -23,6 +23,7 @@ #include "base/threading/thread_task_runner_handle.h" #include "base/time/time.h" #include "chrome/browser/browser_process.h" +#include "chrome/browser/chromeos/arc/arc_demo_mode_delegate_impl.h" #include "chrome/browser/chromeos/arc/arc_migration_guide_notification.h" #include "chrome/browser/chromeos/arc/arc_optin_uma.h" #include "chrome/browser/chromeos/arc/arc_support_host.h" @@ -512,6 +513,8 @@ DCHECK(!g_arc_session_manager); g_arc_session_manager = this; arc_session_runner_->AddObserver(this); + arc_session_runner_->SetDemoModeDelegate( + std::make_unique<ArcDemoModeDelegateImpl>()); if (chromeos::SessionManagerClient::Get()) chromeos::SessionManagerClient::Get()->AddObserver(this); ResetStabilityMetrics();
diff --git a/chrome/browser/chromeos/camera_mic/vm_camera_mic_manager.cc b/chrome/browser/chromeos/camera_mic/vm_camera_mic_manager.cc index ad2557cf..6775ade 100644 --- a/chrome/browser/chromeos/camera_mic/vm_camera_mic_manager.cc +++ b/chrome/browser/chromeos/camera_mic/vm_camera_mic_manager.cc
@@ -196,10 +196,7 @@ bool is_active) { // Crostini does not support camera yet. - // TODO(b/167491603): `UNKNOWN` is for Parallels using v0 camera API. We - // should be able to remove it soon. - if (type == cros::mojom::CameraClientType::UNKNOWN || - type == cros::mojom::CameraClientType::PLUGINVM) { + if (type == cros::mojom::CameraClientType::PLUGINVM) { content::GetUIThreadTaskRunner({})->PostTask( FROM_HERE, base::BindOnce(&VmCameraMicManager::UpdateVmInfoAndNotifications,
diff --git a/chrome/browser/chromeos/crosapi/browser_util.cc b/chrome/browser/chromeos/crosapi/browser_util.cc index 47b3046..2815d6c 100644 --- a/chrome/browser/chromeos/crosapi/browser_util.cc +++ b/chrome/browser/chromeos/crosapi/browser_util.cc
@@ -23,6 +23,7 @@ #include "chrome/browser/chromeos/profiles/profile_helper.h" #include "chrome/browser/policy/profile_policy_connector.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/profiles/profile_manager.h" #include "chrome/common/channel_info.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/pref_names.h" @@ -99,6 +100,8 @@ // the long term fix is made in ash-chrome, atomically. params->exo_ime_support = crosapi::mojom::ExoImeSupport::kConsumedByImeWorkaround; + params->cros_user_id_hash = chromeos::ProfileHelper::GetUserIdHashFromProfile( + ProfileManager::GetPrimaryUserProfile()); return params; }
diff --git a/chrome/browser/chromeos/file_manager/file_manager_jstest.cc b/chrome/browser/chromeos/file_manager/file_manager_jstest.cc index 9aa4513f..66868268 100644 --- a/chrome/browser/chromeos/file_manager/file_manager_jstest.cc +++ b/chrome/browser/chromeos/file_manager/file_manager_jstest.cc
@@ -87,11 +87,11 @@ } IN_PROC_BROWSER_TEST_F(FileManagerJsTest, FileOperationHandlerTest) { - RunTestURL("background/js/file_operation_handler_unittest_gen.html"); + RunTestURL("background/js/file_operation_handler_unittest.m_gen.html"); } IN_PROC_BROWSER_TEST_F(FileManagerJsTest, FileOperationManagerTest) { - RunTestURL("background/js/file_operation_manager_unittest_gen.html"); + RunTestURL("background/js/file_operation_manager_unittest.m_gen.html"); } IN_PROC_BROWSER_TEST_F(FileManagerJsTest, FilesAppEntryTypes) { @@ -246,7 +246,7 @@ } IN_PROC_BROWSER_TEST_F(FileManagerJsTest, Trash) { - RunTestURL("background/js/trash_unittest_gen.html"); + RunTestURL("background/js/trash_unittest.m_gen.html"); } IN_PROC_BROWSER_TEST_F(FileManagerJsTest, UtilTest) {
diff --git a/chrome/browser/chromeos/login/session/user_session_manager.cc b/chrome/browser/chromeos/login/session/user_session_manager.cc index f2299825..83d711d1 100644 --- a/chrome/browser/chromeos/login/session/user_session_manager.cc +++ b/chrome/browser/chromeos/login/session/user_session_manager.cc
@@ -525,6 +525,11 @@ const base::CommandLine user_flags(base::CommandLine::NO_PROGRAM); if (!about_flags::AreSwitchesIdenticalToCurrentCommandLine( user_flags, *base::CommandLine::ForCurrentProcess(), NULL)) { + SessionManagerClient::Get()->SetFeatureFlagsForUser( + cryptohome::CreateAccountIdentifierFromAccountId( + user_manager::GuestAccountId()), + {}); + SessionManagerClient::Get()->SetFlagsForUser( cryptohome::CreateAccountIdentifierFromAccountId( user_manager::GuestAccountId()), @@ -2241,6 +2246,13 @@ pair.second.end()); } + // Clear session_manager's feature flag state so it doesn't pass flags on + // restart. This is necessary until in-session feature flags have been + // converted to use the new way. + // TODO(crbug.com/1073940): Remove after conversion is complete. + SessionManagerClient::Get()->SetFeatureFlagsForUser( + cryptohome::CreateAccountIdentifierFromAccountId(account_id), {}); + SessionManagerClient::Get()->SetFlagsForUser( cryptohome::CreateAccountIdentifierFromAccountId(account_id), all_switches);
diff --git a/chrome/browser/chromeos/settings/owner_flags_storage.cc b/chrome/browser/chromeos/settings/owner_flags_storage.cc index 63a94f09..5a29633 100644 --- a/chrome/browser/chromeos/settings/owner_flags_storage.cc +++ b/chrome/browser/chromeos/settings/owner_flags_storage.cc
@@ -5,13 +5,17 @@ #include "chrome/browser/chromeos/settings/owner_flags_storage.h" #include "base/command_line.h" +#include "base/json/json_reader.h" +#include "base/logging.h" #include "base/values.h" #include "chrome/browser/about_flags.h" #include "chrome/common/pref_names.h" #include "chromeos/settings/cros_settings_names.h" +#include "components/flags_ui/flags_storage.h" #include "components/flags_ui/flags_ui_pref_names.h" #include "components/ownership/owner_settings_service.h" #include "components/prefs/pref_service.h" +#include "third_party/cros_system_api/switches/chrome_switches.h" namespace chromeos { namespace about_flags { @@ -43,5 +47,55 @@ return true; } +ReadOnlyFlagsStorage::ReadOnlyFlagsStorage(const std::set<std::string>& flags) + : flags_(flags) {} + +ReadOnlyFlagsStorage::~ReadOnlyFlagsStorage() = default; + +std::set<std::string> ReadOnlyFlagsStorage::GetFlags() const { + return flags_; +} + +bool ReadOnlyFlagsStorage::SetFlags(const std::set<std::string>& flags) { + return false; +} + +void ReadOnlyFlagsStorage::CommitPendingWrites() {} + +std::string ReadOnlyFlagsStorage::GetOriginListFlag( + const std::string& internal_entry_name) const { + return std::string(); +} + +void ReadOnlyFlagsStorage::SetOriginListFlag( + const std::string& internal_entry_name, + const std::string& origin_list_value) {} + +std::set<std::string> ParseFlagsFromCommandLine() { + std::string encoded = + base::CommandLine::ForCurrentProcess()->GetSwitchValueNative( + chromeos::switches::kFeatureFlags); + if (encoded.empty()) { + return {}; + } + + auto flags_list = base::JSONReader::Read(encoded); + if (!flags_list) { + LOG(WARNING) << "Failed to parse feature flags configuration"; + return {}; + } + + std::set<std::string> flags; + for (const auto& flag : flags_list.value().GetList()) { + if (!flag.is_string()) { + LOG(WARNING) << "Invalid entry in encoded feature flags"; + continue; + } + flags.insert(flag.GetString()); + } + + return flags; +} + } // namespace about_flags } // namespace chromeos
diff --git a/chrome/browser/chromeos/settings/owner_flags_storage.h b/chrome/browser/chromeos/settings/owner_flags_storage.h index 10f9e740..1279faa 100644 --- a/chrome/browser/chromeos/settings/owner_flags_storage.h +++ b/chrome/browser/chromeos/settings/owner_flags_storage.h
@@ -18,7 +18,8 @@ // Implements the FlagsStorage interface for the owner flags. It inherits from // PrefServiceFlagsStorage but extends it with storing the flags in the signed -// settings as well which effectively applies them to the login session as well. +// device settings as well which effectively applies them to the Chrome OS login +// screen as well. class OwnerFlagsStorage : public ::flags_ui::PrefServiceFlagsStorage { public: OwnerFlagsStorage(PrefService* prefs, @@ -31,6 +32,33 @@ ownership::OwnerSettingsService* owner_settings_service_; }; +// FlagsStorage implementation for Chrome OS startup. It is backed by a set of +// flags that are provided at initialization time. Functions other than +// GetFlags() are implemented as no-ops. +class ReadOnlyFlagsStorage : public ::flags_ui::FlagsStorage { + public: + // Initializes the object with a given set of flags. + explicit ReadOnlyFlagsStorage(const std::set<std::string>& flags); + ~ReadOnlyFlagsStorage() override; + + // ::flags_ui::FlagsStorage: + std::set<std::string> GetFlags() const override; + bool SetFlags(const std::set<std::string>& flags) override; + void CommitPendingWrites() override; + std::string GetOriginListFlag( + const std::string& internal_entry_name) const override; + void SetOriginListFlag(const std::string& internal_entry_name, + const std::string& origin_list_value) override; + + private: + std::set<std::string> flags_; +}; + +// Parses flags specified in the --feature-flags command line switch. This is +// used by Chrome OS to pass flags configuration from session_manager to Chrome +// on startup. +std::set<std::string> ParseFlagsFromCommandLine(); + } // namespace about_flags } // namespace chromeos
diff --git a/chrome/browser/extensions/BUILD.gn b/chrome/browser/extensions/BUILD.gn index 271e545..dcb9e31 100644 --- a/chrome/browser/extensions/BUILD.gn +++ b/chrome/browser/extensions/BUILD.gn
@@ -103,8 +103,6 @@ "api/cryptotoken_private/cryptotoken_private_api.h", "api/dashboard_private/dashboard_private_api.cc", "api/dashboard_private/dashboard_private_api.h", - "api/data_reduction_proxy/data_reduction_proxy_api.cc", - "api/data_reduction_proxy/data_reduction_proxy_api.h", "api/debugger/debugger_api.cc", "api/debugger/debugger_api.h", "api/debugger/debugger_api_constants.cc", @@ -802,7 +800,6 @@ "//components/content_settings/core/browser", "//components/cookie_config:cookie_config", "//components/crx_file", - "//components/data_reduction_proxy/core/browser", "//components/dom_distiller/core", "//components/download/content/public", "//components/download/public/common:public", @@ -1054,6 +1051,7 @@ "//chromeos/login/auth", "//chromeos/login/login_state", "//chromeos/network", + "//chromeos/process_proxy", "//chromeos/services/assistant/public/cpp", "//chromeos/services/ime/public/mojom", "//chromeos/services/machine_learning/public/cpp",
diff --git a/chrome/browser/extensions/api/data_reduction_proxy/data_reduction_proxy_api.cc b/chrome/browser/extensions/api/data_reduction_proxy/data_reduction_proxy_api.cc deleted file mode 100644 index 5b3df28..0000000 --- a/chrome/browser/extensions/api/data_reduction_proxy/data_reduction_proxy_api.cc +++ /dev/null
@@ -1,76 +0,0 @@ -// Copyright 2015 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/extensions/api/data_reduction_proxy/data_reduction_proxy_api.h" - -#include <utility> -#include <vector> - -#include "base/bind.h" -#include "chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings.h" -#include "chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings_factory.h" -#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats.h" -#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_service.h" -#include "components/data_reduction_proxy/proto/data_store.pb.h" -#include "content/public/browser/browser_thread.h" - -namespace extensions { - -ExtensionFunction::ResponseAction -DataReductionProxyClearDataSavingsFunction::Run() { - DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - data_reduction_proxy::DataReductionProxySettings* settings = - DataReductionProxyChromeSettingsFactory::GetForBrowserContext( - browser_context()); - settings->data_reduction_proxy_service() - ->compression_stats() - ->ClearDataSavingStatistics( - data_reduction_proxy::DataReductionProxySavingsClearedReason:: - USER_ACTION_EXTENSION); - return RespondNow(NoArguments()); -} - -ExtensionFunction::ResponseAction -DataReductionProxyGetDataUsageFunction::Run() { - DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - data_reduction_proxy::DataReductionProxySettings* settings = - DataReductionProxyChromeSettingsFactory::GetForBrowserContext( - browser_context()); - settings->data_reduction_proxy_service() - ->compression_stats() - ->GetHistoricalDataUsage(base::BindOnce( - &DataReductionProxyGetDataUsageFunction::ReplyWithDataUsage, this)); - return RespondLater(); -} - -void DataReductionProxyGetDataUsageFunction::ReplyWithDataUsage( - std::unique_ptr<std::vector<data_reduction_proxy::DataUsageBucket>> - data_usage) { - DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - - std::unique_ptr<base::ListValue> data_usage_buckets(new base::ListValue()); - for (const auto& data_usage_bucket : *data_usage) { - std::unique_ptr<base::ListValue> connection_usage_list( - new base::ListValue()); - for (const auto& connection_usage : data_usage_bucket.connection_usage()) { - std::unique_ptr<base::ListValue> site_usage_list(new base::ListValue()); - for (const auto& site_usage : connection_usage.site_usage()) { - std::unique_ptr<base::DictionaryValue> usage( - new base::DictionaryValue()); - usage->SetString("hostname", site_usage.hostname()); - usage->SetDouble("data_used", site_usage.data_used()); - usage->SetDouble("original_size", site_usage.original_size()); - site_usage_list->Append(std::move(usage)); - } - connection_usage_list->Append(std::move(site_usage_list)); - } - data_usage_buckets->Append(std::move(connection_usage_list)); - } - - std::unique_ptr<base::DictionaryValue> result(new base::DictionaryValue()); - result->Set("data_usage_buckets", std::move(data_usage_buckets)); - Respond(OneArgument(base::Value::FromUniquePtrValue(std::move(result)))); -} - -} // namespace extensions
diff --git a/chrome/browser/extensions/api/data_reduction_proxy/data_reduction_proxy_api.h b/chrome/browser/extensions/api/data_reduction_proxy/data_reduction_proxy_api.h deleted file mode 100644 index 0730691..0000000 --- a/chrome/browser/extensions/api/data_reduction_proxy/data_reduction_proxy_api.h +++ /dev/null
@@ -1,44 +0,0 @@ -// Copyright 2015 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_EXTENSIONS_API_DATA_REDUCTION_PROXY_DATA_REDUCTION_PROXY_API_H_ -#define CHROME_BROWSER_EXTENSIONS_API_DATA_REDUCTION_PROXY_DATA_REDUCTION_PROXY_API_H_ - -#include <memory> - -#include "extensions/browser/extension_function.h" - -namespace data_reduction_proxy { -class DataUsageBucket; -} - -namespace extensions { - -class DataReductionProxyClearDataSavingsFunction : public ExtensionFunction { - private: - ~DataReductionProxyClearDataSavingsFunction() override {} - - DECLARE_EXTENSION_FUNCTION("dataReductionProxy.clearDataSavings", - DATAREDUCTIONPROXY_CLEARDATASAVINGS) - - ResponseAction Run() override; -}; - -class DataReductionProxyGetDataUsageFunction : public ExtensionFunction { - private: - ~DataReductionProxyGetDataUsageFunction() override {} - - DECLARE_EXTENSION_FUNCTION("dataReductionProxy.getDataUsage", - DATAREDUCTIONPROXY_GETDATAUSAGE) - - ResponseAction Run() override; - - void ReplyWithDataUsage( - std::unique_ptr<std::vector<data_reduction_proxy::DataUsageBucket>> - data_usage); -}; - -} // namespace extensions - -#endif // CHROME_BROWSER_EXTENSIONS_API_DATA_REDUCTION_PROXY_DATA_REDUCTION_PROXY_API_H_
diff --git a/chrome/browser/extensions/api/feedback_private/feedback_browsertest.cc b/chrome/browser/extensions/api/feedback_private/feedback_browsertest.cc index 7426953..bfb4f70 100644 --- a/chrome/browser/extensions/api/feedback_private/feedback_browsertest.cc +++ b/chrome/browser/extensions/api/feedback_private/feedback_browsertest.cc
@@ -65,12 +65,12 @@ const std::string& extra_diagnostics, bool from_assistant = false, bool include_bluetooth_logs = false) { - base::Closure callback = base::Bind(&StopMessageLoopCallback); + base::OnceClosure callback = base::BindOnce(&StopMessageLoopCallback); extensions::FeedbackPrivateGetStringsFunction::set_test_callback(&callback); InvokeFeedbackUI(flow, extra_diagnostics, from_assistant, include_bluetooth_logs); content::RunMessageLoop(); - extensions::FeedbackPrivateGetStringsFunction::set_test_callback(NULL); + extensions::FeedbackPrivateGetStringsFunction::set_test_callback(nullptr); } void VerifyFeedbackAppLaunch() {
diff --git a/chrome/browser/extensions/api/preference/preference_api.cc b/chrome/browser/extensions/api/preference/preference_api.cc index 1f76e04..94a2eb7 100644 --- a/chrome/browser/extensions/api/preference/preference_api.cc +++ b/chrome/browser/extensions/api/preference/preference_api.cc
@@ -29,7 +29,6 @@ #include "components/autofill/core/common/autofill_prefs.h" #include "components/content_settings/core/browser/cookie_settings.h" #include "components/content_settings/core/common/pref_names.h" -#include "components/data_reduction_proxy/core/common/data_reduction_proxy_pref_names.h" #include "components/embedder_support/pref_names.h" #include "components/password_manager/core/common/password_manager_pref_names.h" #include "components/prefs/pref_service.h" @@ -82,17 +81,6 @@ "properly."; const PrefMappingEntry kPrefMapping[] = { - {"spdy_proxy.enabled", data_reduction_proxy::prefs::kDataSaverEnabled, - APIPermission::kDataReductionProxy, APIPermission::kDataReductionProxy}, - {"data_reduction.daily_original_length", - data_reduction_proxy::prefs::kDailyHttpOriginalContentLength, - APIPermission::kDataReductionProxy, APIPermission::kDataReductionProxy}, - {"data_reduction.daily_received_length", - data_reduction_proxy::prefs::kDailyHttpReceivedContentLength, - APIPermission::kDataReductionProxy, APIPermission::kDataReductionProxy}, - {"data_usage_reporting.enabled", - data_reduction_proxy::prefs::kDataUsageReportingEnabled, - APIPermission::kDataReductionProxy, APIPermission::kDataReductionProxy}, {"alternateErrorPagesEnabled", embedder_support::kAlternateErrorPagesEnabled, APIPermission::kPrivacy, APIPermission::kPrivacy},
diff --git a/chrome/browser/extensions/api/preference/preference_apitest.cc b/chrome/browser/extensions/api/preference/preference_apitest.cc index b0f1651..01b9e98 100644 --- a/chrome/browser/extensions/api/preference/preference_apitest.cc +++ b/chrome/browser/extensions/api/preference/preference_apitest.cc
@@ -425,11 +425,6 @@ EXPECT_FALSE(loaded_incognito_test_listener.was_satisfied()); } -IN_PROC_BROWSER_TEST_F(ExtensionPreferenceApiTest, DataReductionProxy) { - EXPECT_TRUE(RunExtensionTest("preference/data_reduction_proxy")) << - message_; -} - // Tests the behavior of the Safe Browsing API as described in // crbug.com/1064722. IN_PROC_BROWSER_TEST_F(ExtensionPreferenceApiTest, SafeBrowsing_SetTrue) {
diff --git a/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc b/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc index 837b4c7..6f32a95 100644 --- a/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc +++ b/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc
@@ -230,9 +230,8 @@ } } -bool ChromeRuntimeAPIDelegate::CheckForUpdates( - const std::string& extension_id, - const UpdateCheckCallback& callback) { +bool ChromeRuntimeAPIDelegate::CheckForUpdates(const std::string& extension_id, + UpdateCheckCallback callback) { ExtensionSystem* system = ExtensionSystem::Get(browser_context_); extensions::ExtensionService* service = system->extension_service(); ExtensionUpdater* updater = service->updater(); @@ -246,10 +245,11 @@ // return a status of throttled. if (info.backoff->ShouldRejectRequest() || info.callbacks.size() >= 10) { base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::BindOnce(callback, UpdateCheckResult( - true, kUpdateThrottled, ""))); + FROM_HERE, + base::BindOnce(std::move(callback), + UpdateCheckResult(true, kUpdateThrottled, ""))); } else { - info.callbacks.push_back(callback); + info.callbacks.push_back(std::move(callback)); extensions::ExtensionUpdater::CheckParams params; params.ids = {extension_id}; @@ -410,7 +410,7 @@ return; std::vector<UpdateCheckCallback> callbacks; it->second.callbacks.swap(callbacks); - for (const auto& callback : callbacks) { - callback.Run(result); + for (auto& callback : callbacks) { + std::move(callback).Run(result); } }
diff --git a/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.h b/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.h index 7abc720..6b30d28 100644 --- a/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.h +++ b/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.h
@@ -52,7 +52,7 @@ void RemoveUpdateObserver(extensions::UpdateObserver* observer) override; void ReloadExtension(const std::string& extension_id) override; bool CheckForUpdates(const std::string& extension_id, - const UpdateCheckCallback& callback) override; + UpdateCheckCallback callback) override; void OpenURL(const GURL& uninstall_url) override; bool GetPlatformInfo(extensions::api::runtime::PlatformInfo* info) override; bool RestartDevice(std::string* error_message) override;
diff --git a/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate_unittest.cc b/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate_unittest.cc index 43d8a4d..7c079b14 100644 --- a/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate_unittest.cc +++ b/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate_unittest.cc
@@ -229,8 +229,8 @@ const std::string& expected_version) { UpdateCheckResultCatcher catcher; EXPECT_TRUE(runtime_delegate_->CheckForUpdates( - id, base::Bind(&UpdateCheckResultCatcher::OnResult, - base::Unretained(&catcher)))); + id, base::BindOnce(&UpdateCheckResultCatcher::OnResult, + base::Unretained(&catcher)))); std::unique_ptr<RuntimeAPIDelegate::UpdateCheckResult> result = catcher.WaitForResult(); ASSERT_NE(nullptr, result.get());
diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc index 736a2ef..23c5bbf 100644 --- a/chrome/browser/extensions/api/settings_private/prefs_util.cc +++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc
@@ -483,12 +483,12 @@ settings_api::PrefType::PREF_TYPE_BOOLEAN; (*s_allowlist)[ash::prefs::kAccessibilitySwitchAccessEnabled] = settings_api::PrefType::PREF_TYPE_BOOLEAN; - (*s_allowlist)[ash::prefs::kAccessibilitySwitchAccessSelectKeyCodes] = - settings_api::PrefType::PREF_TYPE_LIST; - (*s_allowlist)[ash::prefs::kAccessibilitySwitchAccessNextKeyCodes] = - settings_api::PrefType::PREF_TYPE_LIST; - (*s_allowlist)[ash::prefs::kAccessibilitySwitchAccessPreviousKeyCodes] = - settings_api::PrefType::PREF_TYPE_LIST; + (*s_allowlist)[ash::prefs::kAccessibilitySwitchAccessSelectDeviceKeyCodes] = + settings_api::PrefType::PREF_TYPE_DICTIONARY; + (*s_allowlist)[ash::prefs::kAccessibilitySwitchAccessNextDeviceKeyCodes] = + settings_api::PrefType::PREF_TYPE_DICTIONARY; + (*s_allowlist)[ash::prefs::kAccessibilitySwitchAccessPreviousDeviceKeyCodes] = + settings_api::PrefType::PREF_TYPE_DICTIONARY; (*s_allowlist)[ash::prefs::kAccessibilitySwitchAccessAutoScanEnabled] = settings_api::PrefType::PREF_TYPE_BOOLEAN; (*s_allowlist)[ash::prefs::kAccessibilitySwitchAccessAutoScanSpeedMs] =
diff --git a/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.cc b/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.cc index c553c59..b71cec8 100644 --- a/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.cc +++ b/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.cc
@@ -8,6 +8,7 @@ #include <string> #include <utility> +#include "ash/public/cpp/clipboard_history_controller.h" #include "ash/public/cpp/keyboard/keyboard_switches.h" #include "ash/public/cpp/keyboard/keyboard_types.h" #include "base/bind.h" @@ -332,6 +333,40 @@ return keyboard_client->SetWindowBoundsInScreen(bounds_in_screen); } +void ChromeVirtualKeyboardDelegate::GetClipboardHistory( + const std::set<std::string>& item_ids_filter, + OnGetClipboardHistoryCallback get_history_callback) { + ash::ClipboardHistoryController* clipboard_history_controller = + ash::ClipboardHistoryController::Get(); + if (!clipboard_history_controller) + return; + + std::move(get_history_callback) + .Run(clipboard_history_controller->GetHistoryValues(item_ids_filter)); +} + +bool ChromeVirtualKeyboardDelegate::PasteClipboardItem( + const std::string& clipboard_item_id) { + ash::ClipboardHistoryController* clipboard_history_controller = + ash::ClipboardHistoryController::Get(); + if (!clipboard_history_controller) + return false; + + return clipboard_history_controller->PasteClipboardItemById( + clipboard_item_id); +} + +bool ChromeVirtualKeyboardDelegate::DeleteClipboardItem( + const std::string& clipboard_item_id) { + ash::ClipboardHistoryController* clipboard_history_controller = + ash::ClipboardHistoryController::Get(); + if (!clipboard_history_controller) + return false; + + return clipboard_history_controller->DeleteClipboardItemById( + clipboard_item_id); +} + bool ChromeVirtualKeyboardDelegate::SetDraggableArea( const api::virtual_keyboard_private::Bounds& rect) { auto* keyboard_client = ChromeKeyboardControllerClient::Get();
diff --git a/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.h b/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.h index 7f5b32e7..84e32d0 100644 --- a/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.h +++ b/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.h
@@ -55,7 +55,11 @@ bool SetHitTestBounds(const std::vector<gfx::Rect>& bounds) override; bool SetAreaToRemainOnScreen(const gfx::Rect& bounds) override; bool SetWindowBoundsInScreen(const gfx::Rect& bounds_in_screen) override; - + void GetClipboardHistory( + const std::set<std::string>& item_ids_filter, + OnGetClipboardHistoryCallback get_history_callback) override; + bool PasteClipboardItem(const std::string& clipboard_item_id) override; + bool DeleteClipboardItem(const std::string& clipboard_item_id) override; api::virtual_keyboard::FeatureRestrictions RestrictFeatures( const api::virtual_keyboard::RestrictFeatures::Params& params) override;
diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_apitest.cc b/chrome/browser/extensions/api/webstore_private/webstore_private_apitest.cc index e319ef8a..e0dd02ace 100644 --- a/chrome/browser/extensions/api/webstore_private/webstore_private_apitest.cc +++ b/chrome/browser/extensions/api/webstore_private/webstore_private_apitest.cc
@@ -48,10 +48,8 @@ // flag to #if defined(OS_CHROMEOS) #include "base/test/metrics/histogram_tester.h" #include "base/test/metrics/user_action_tester.h" -#include "base/test/scoped_feature_list.h" #include "chrome/browser/supervised_user/logged_in_user_mixin.h" #include "chrome/browser/supervised_user/supervised_user_constants.h" -#include "chrome/browser/supervised_user/supervised_user_features.h" #include "chrome/browser/supervised_user/supervised_user_service.h" #include "chrome/browser/supervised_user/supervised_user_service_factory.h" #include "chrome/browser/supervised_user/supervised_user_test_util.h" @@ -366,11 +364,23 @@ static constexpr char kTestChildEmail[] = "test_child_user@google.com"; static constexpr char kTestChildGaiaId[] = "8u8tuw09sufncmnaos"; +static constexpr char kTestAppId[] = "iladmdjkfniedhfhcfoefgojhgaiaccc"; +static constexpr char kTestAppVersion[] = "0.1"; + +// Test fixture for various cases of installation for child accounts. class ExtensionWebstorePrivateApiTestChild - : public ExtensionWebstorePrivateApiTest { + : public ExtensionWebstorePrivateApiTest, + public TestParentPermissionDialogViewObserver { public: + // The next dialog action to take. + enum class NextDialogAction { + kCancel, + kAccept, + }; + ExtensionWebstorePrivateApiTestChild() - : embedded_test_server_(std::make_unique<net::EmbeddedTestServer>()), + : TestParentPermissionDialogViewObserver(this), + embedded_test_server_(std::make_unique<net::EmbeddedTestServer>()), logged_in_user_mixin_( &mixin_host_, chromeos::LoggedInUserMixin::LogInType::kChild, @@ -428,67 +438,6 @@ ->SetNextReAuthStatus(next_status); } - protected: - std::unique_ptr<signin::IdentityTestEnvironment> identity_test_env_; - - private: - // Create another embedded test server to avoid starting the same one twice. - std::unique_ptr<net::EmbeddedTestServer> embedded_test_server_; - chromeos::LoggedInUserMixin logged_in_user_mixin_; -}; - -class ExtensionWebstorePrivateApiTestChildInstallDisabled - : public ExtensionWebstorePrivateApiTestChild { - public: - ExtensionWebstorePrivateApiTestChildInstallDisabled() { - feature_list_.InitWithFeatures( - {}, {supervised_users::kSupervisedUserInitiatedExtensionInstall}); - } - - private: - base::test::ScopedFeatureList feature_list_; -}; - -// Tests that extension installation is blocked for child accounts when -// the feature flag is disabled. -IN_PROC_BROWSER_TEST_F(ExtensionWebstorePrivateApiTestChildInstallDisabled, - InstallBlocked) { - base::HistogramTester histogram_tester; - base::UserActionTester user_action_tester; - ASSERT_TRUE(RunInstallTest("install_blocked_child.html", "app.crx")); - histogram_tester.ExpectUniqueSample( - SupervisedUserExtensionsMetricsRecorder::kEnablementHistogramName, - SupervisedUserExtensionsMetricsRecorder::EnablementState::kFailedToEnable, - 1); - histogram_tester.ExpectTotalCount( - SupervisedUserExtensionsMetricsRecorder::kEnablementHistogramName, 1); - EXPECT_EQ( - 1, - user_action_tester.GetActionCount( - SupervisedUserExtensionsMetricsRecorder::kFailedToEnableActionName)); -} - -static constexpr char kTestAppId[] = "iladmdjkfniedhfhcfoefgojhgaiaccc"; -static constexpr char kTestAppVersion[] = "0.1"; - -// Test fixture for various cases of installation for child accounts -// when the feature flag is enabled. -class ExtensionWebstorePrivateApiTestChildInstallEnabled - : public ExtensionWebstorePrivateApiTestChild, - public TestParentPermissionDialogViewObserver { - public: - // The next dialog action to take. - enum class NextDialogAction { - kCancel, - kAccept, - }; - - ExtensionWebstorePrivateApiTestChildInstallEnabled() - : TestParentPermissionDialogViewObserver(this) { - feature_list_.InitWithFeatures( - {supervised_users::kSupervisedUserInitiatedExtensionInstall}, {}); - } - // TestParentPermissionDialogViewObserver override: void OnTestParentPermissionDialogViewCreated( ParentPermissionDialogView* view) override { @@ -511,13 +460,18 @@ next_dialog_action_ = action; } + protected: + std::unique_ptr<signin::IdentityTestEnvironment> identity_test_env_; + private: - base::test::ScopedFeatureList feature_list_; + // Create another embedded test server to avoid starting the same one twice. + std::unique_ptr<net::EmbeddedTestServer> embedded_test_server_; + chromeos::LoggedInUserMixin logged_in_user_mixin_; base::Optional<NextDialogAction> next_dialog_action_; }; // Tests install for a child when parent permission is granted. -IN_PROC_BROWSER_TEST_F(ExtensionWebstorePrivateApiTestChildInstallEnabled, +IN_PROC_BROWSER_TEST_F(ExtensionWebstorePrivateApiTestChild, ParentPermissionGranted) { WebstoreInstallListener listener; WebstorePrivateApi::SetWebstoreInstallerDelegateForTesting(&listener); @@ -543,7 +497,7 @@ // Tests no install occurs for a child when the parent permission // dialog is canceled. -IN_PROC_BROWSER_TEST_F(ExtensionWebstorePrivateApiTestChildInstallEnabled, +IN_PROC_BROWSER_TEST_F(ExtensionWebstorePrivateApiTestChild, ParentPermissionCanceled) { WebstoreInstallListener listener; set_next_dialog_action(NextDialogAction::kCancel); @@ -565,7 +519,7 @@ } // Tests that no parent permission is required for a child to install a theme. -IN_PROC_BROWSER_TEST_F(ExtensionWebstorePrivateApiTestChildInstallEnabled, +IN_PROC_BROWSER_TEST_F(ExtensionWebstorePrivateApiTestChild, NoParentPermissionRequiredForTheme) { WebstoreInstallListener listener; WebstorePrivateApi::SetWebstoreInstallerDelegateForTesting(&listener); @@ -578,7 +532,7 @@ // Tests that even if the kSupervisedUserInitiatedExtensionInstall feature flag // is enabled, supervised user extension installs are blocked if the // "Permissions for sites, apps and extensions" toggle is off. -IN_PROC_BROWSER_TEST_F(ExtensionWebstorePrivateApiTestChildInstallEnabled, +IN_PROC_BROWSER_TEST_F(ExtensionWebstorePrivateApiTestChild, InstallBlockedWhenPermissionsToggleOff) { base::HistogramTester histogram_tester; base::UserActionTester user_action_tester;
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index 7c96dc5..d746e6bd 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -1071,11 +1071,6 @@ "expiry_milestone": 89 }, { - "name": "drag-to-snap-in-clamshell-mode", - "owners": [ "amusbach@chromium.org", "xdai@chromium.org" ], - "expiry_milestone": 86 - }, - { "name": "drive-fs-bidirectional-native-messaging", "owners": [ "austinct@chromium.org", "dats@chromium.org" ], "expiry_milestone": 90 @@ -2331,11 +2326,6 @@ "expiry_milestone": 96 }, { - "name": "enable-text-fragment-anchor", - "owners": [ "bokan", "input-dev" ], - "expiry_milestone": 83 - }, - { "name": "enable-tls13-early-data", "owners": [ "svaldez" ], "expiry_milestone": 90 @@ -3398,11 +3388,6 @@ "expiry_milestone": 90 }, { - "name": "multi-display-overview-and-split-view", - "owners": [ "amusbach@chromium.org", "xdai@chromium.org" ], - "expiry_milestone": 86 - }, - { "name": "mute-notifications-during-screen-share", "owners": [ "knollr@chromium.org", "peter@chromium.org" ], "expiry_milestone": 90
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 4cf3e99..ebd3da3e 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -620,11 +620,6 @@ const char kEnablePreconnectToSearchDescription[] = "Enables the feature that preconnects to the user's default search engine."; -const char kEnableNoScriptPreviewsName[] = "NoScript previews"; - -const char kEnableNoScriptPreviewsDescription[] = - "Enable disabling JavaScript on some pages on slow networks."; - const char kEnableRemovingAllThirdPartyCookiesName[] = "Enable removing SameSite=None cookies"; const char kEnableRemovingAllThirdPartyCookiesDescription[] = @@ -992,21 +987,12 @@ const char kEnableResamplingScrollEventsDescription[] = "Predicts the scroll amount at vsync time based on previous input"; -const char kEnableResourceLoadingHintsName[] = "Enable resource loading hints"; -const char kEnableResourceLoadingHintsDescription[] = - "Enable using server-provided resource loading hints to provide a preview " - "over slow network connections."; - const char kEnableTabSearchFlagId[] = "enable-tab-search"; const char kEnableTabSearchName[] = "Enable Tab Search"; const char kEnableTabSearchDescription[] = "Enable the Tab Search feature in Top Chrome UI, which will show a popup " "bubble that allows users to search over their currently open tabs."; -const char kEnableTextFragmentAnchorName[] = "Enable Text Fragment Anchor."; -const char kEnableTextFragmentAnchorDescription[] = - "Enables scrolling to text specified in URL's fragment."; - const char kEnableUseZoomForDsfName[] = "Use Blink's zoom for device scale factor."; const char kEnableUseZoomForDsfDescription[] = @@ -2821,10 +2807,6 @@ const char kEnableCommandLineOnNoRootedDescription[] = "Enable reading command line file on non-rooted devices (DANGEROUS)."; -const char kEnableOfflinePreviewsName[] = "Offline Page Previews"; -const char kEnableOfflinePreviewsDescription[] = - "Enable showing offline page previews on slow networks."; - const char kEnableUseAaudioDriverName[] = "Use AAudio Driver"; const char kEnableUseAaudioDriverDescription[] = "Enable the use of AAudio, if supported by the current Android version."; @@ -4041,13 +4023,6 @@ const char kEnableBackgroundBlurDescription[] = "Enables background blur for the Launcher, Shelf, Unified System Tray etc."; -const char kDragToSnapInClamshellModeName[] = "Enable clamshell split view."; -const char kDragToSnapInClamshellModeDescription[] = - "You can drag a window from clamshell overview and snap it. If you will be " - "using multiple displays, you should use this flag only in conjunction " - "with multi-display-overview-and-split-view (otherwise you are likely to " - "get a crash)."; - const char kEnhancedClipboardName[] = "Productivity Experiment: Enable Enhanced Clipboard"; const char kEnhancedClipboardDescription[] = @@ -4068,12 +4043,6 @@ const char kEnhancedClipboardSimpleRenderDescription[] = "This will result in less HTML rendering in the Enhanced Clipboard menu."; -const char kMultiDisplayOverviewAndSplitViewName[] = - "Enable multi-display overview and split view."; -const char kMultiDisplayOverviewAndSplitViewDescription[] = - "You can drag a window from one overview grid and drop into another " - "overview grid."; - const char kEnableCrOSActionRecorderName[] = "Enable CrOS action recorder"; const char kEnableCrOSActionRecorderDescription[] = "When enabled, each app launching, file opening, setting change, and url "
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index e40f50e..d77d296 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -381,9 +381,6 @@ extern const char kEnablePreconnectToSearchName[]; extern const char kEnablePreconnectToSearchDescription[]; -extern const char kEnableNoScriptPreviewsName[]; -extern const char kEnableNoScriptPreviewsDescription[]; - extern const char kEnableRemovingAllThirdPartyCookiesName[]; extern const char kEnableRemovingAllThirdPartyCookiesDescription[]; @@ -583,9 +580,6 @@ extern const char kEnableResamplingScrollEventsName[]; extern const char kEnableResamplingScrollEventsDescription[]; -extern const char kEnableResourceLoadingHintsName[]; -extern const char kEnableResourceLoadingHintsDescription[]; - extern const char kEnableSubresourceRedirectName[]; extern const char kEnableSubresourceRedirectDescription[]; @@ -593,9 +587,6 @@ extern const char kEnableTabSearchName[]; extern const char kEnableTabSearchDescription[]; -extern const char kEnableTextFragmentAnchorName[]; -extern const char kEnableTextFragmentAnchorDescription[]; - extern const char kEnableUseZoomForDsfName[]; extern const char kEnableUseZoomForDsfDescription[]; extern const char kEnableUseZoomForDsfChoiceDefault[]; @@ -1643,9 +1634,6 @@ extern const char kEnableCommandLineOnNonRootedName[]; extern const char kEnableCommandLineOnNoRootedDescription[]; -extern const char kEnableOfflinePreviewsName[]; -extern const char kEnableOfflinePreviewsDescription[]; - extern const char kEnableUseAaudioDriverName[]; extern const char kEnableUseAaudioDriverDescription[]; @@ -2361,9 +2349,6 @@ extern const char kEnhancedClipboardSimpleRenderName[]; extern const char kEnhancedClipboardSimpleRenderDescription[]; -extern const char kMultiDisplayOverviewAndSplitViewName[]; -extern const char kMultiDisplayOverviewAndSplitViewDescription[]; - extern const char kEnableCrOSActionRecorderName[]; extern const char kEnableCrOSActionRecorderDescription[];
diff --git a/chrome/browser/focus_ring_browsertest.cc b/chrome/browser/focus_ring_browsertest.cc index c206dddb..09c2e5c0 100644 --- a/chrome/browser/focus_ring_browsertest.cc +++ b/chrome/browser/focus_ring_browsertest.cc
@@ -8,6 +8,7 @@ #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "cc/test/pixel_comparator.h" +#include "chrome/browser/focus_ring_browsertest_mac.h" #include "chrome/browser/ui/browser.h" #include "chrome/common/chrome_paths.h" #include "chrome/test/base/in_process_browser_test.h" @@ -17,6 +18,7 @@ #include "content/public/test/browser_test.h" #include "content/public/test/browser_test_utils.h" #include "ui/base/ui_base_features.h" +#include "ui/base/ui_base_switches.h" // TODO(crbug.com/958242): Move the baselines to skia gold for easier // rebaselining when all platforms are supported @@ -53,7 +55,9 @@ class FocusRingBrowserTest : public InProcessBrowserTest { public: FocusRingBrowserTest() { - feature_list_.InitWithFeatures({features::kFormControlsRefresh}, {}); + feature_list_.InitWithFeatures( + {features::kFormControlsRefresh, features::kCSSColorSchemeUARendering}, + {}); } void SetUp() override { @@ -67,6 +71,9 @@ // The --disable-lcd-text flag helps text render more similarly on // different bots and platform. command_line->AppendSwitch(switches::kDisableLCDText); + + // This is required to allow dark mode to be used on some platforms. + command_line->AppendSwitch(switches::kForceDarkMode); } void RunTest(const std::string& screenshot_filename, @@ -77,6 +84,7 @@ base::ScopedAllowBlockingForTesting allow_blocking; ASSERT_TRUE(features::IsFormControlsRefreshEnabled()); + ASSERT_TRUE(features::IsCSSColorSchemeUARenderingEnabled()); base::FilePath dir_test_data; ASSERT_TRUE(base::PathService::Get(chrome::DIR_TEST_DATA, &dir_test_data)); @@ -103,8 +111,7 @@ content::WebContents* web_contents = browser()->tab_strip_model()->GetActiveWebContents(); ASSERT_TRUE(content::NavigateToURL( - web_contents, - GURL("data:text/html,<!DOCTYPE html><body>" + body_html + "</body>"))); + web_contents, GURL("data:text/html,<!DOCTYPE html>" + body_html))); ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); EXPECT_TRUE(CompareWebContentsOutputToReference( @@ -174,3 +181,21 @@ /* screenshot_width */ 90, /* screenshot_height */ 130, comparator); } + +IN_PROC_BROWSER_TEST_F(FocusRingBrowserTest, DarkModeButton) { +#if defined(OS_MAC) + if (!MacOSVersionSupportsDarkMode()) + return; + cc::FuzzyPixelComparator comparator = mac_strict_comparator; +#else + cc::ExactPixelComparator comparator(/*discard_alpha=*/true); +#endif + RunTest("focus_ring_browsertest_dark_mode_button", + "<meta name=\"color-scheme\" content=\"dark\">" + "<button autofocus style=\"width:40px;height:20px;\"></button>" + "<br>" + "<br>" + "<button style=\"width:40px;height:20px;\"></button>", + /* screenshot_width */ 80, + /* screenshot_height */ 80, comparator); +}
diff --git a/chrome/browser/focus_ring_browsertest_mac.h b/chrome/browser/focus_ring_browsertest_mac.h new file mode 100644 index 0000000..64cef70c --- /dev/null +++ b/chrome/browser/focus_ring_browsertest_mac.h
@@ -0,0 +1,10 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_FOCUS_RING_BROWSERTEST_MAC_H_ +#define CHROME_BROWSER_FOCUS_RING_BROWSERTEST_MAC_H_ + +bool MacOSVersionSupportsDarkMode(); + +#endif // CHROME_BROWSER_FOCUS_RING_BROWSERTEST_MAC_H_
diff --git a/chrome/browser/focus_ring_browsertest_mac.mm b/chrome/browser/focus_ring_browsertest_mac.mm new file mode 100644 index 0000000..1dc0f43 --- /dev/null +++ b/chrome/browser/focus_ring_browsertest_mac.mm
@@ -0,0 +1,11 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/focus_ring_browsertest_mac.h" + +bool MacOSVersionSupportsDarkMode() { + if (@available(macOS 10.14, *)) + return true; + return false; +}
diff --git a/chrome/browser/metrics/chrome_feature_list_creator.cc b/chrome/browser/metrics/chrome_feature_list_creator.cc index 73fcd64..a9ee1e1 100644 --- a/chrome/browser/metrics/chrome_feature_list_creator.cc +++ b/chrome/browser/metrics/chrome_feature_list_creator.cc
@@ -47,6 +47,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" +#include "chrome/browser/chromeos/settings/owner_flags_storage.h" #include "chromeos/dbus/dbus_thread_manager.h" #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -139,19 +140,28 @@ } void ChromeFeatureListCreator::ConvertFlagsToSwitches() { -#if !BUILDFLAG(IS_CHROMEOS_ASH) // Convert active flags into switches. This needs to be done before // ui::ResourceBundle::InitSharedInstanceWithLocale as some loaded resources - // are affected by experiment flags (--touch-optimized-ui in particular). On - // ChromeOS system level flags are applied from the device settings from the - // session manager. + // are affected by experiment flags (--touch-optimized-ui in particular). DCHECK(!ui::ResourceBundle::HasSharedInstance()); TRACE_EVENT0("startup", "ChromeFeatureListCreator::ConvertFlagsToSwitches"); + +#if BUILDFLAG(IS_CHROMEOS_ASH) + // On Chrome OS, flags are passed on the command line when Chrome gets + // launched by session_manager. There are separate sets of flags for the login + // screen environment and user sessions. session_manager populates the former + // from signed device settings, while flags for user session are stored in + // preferences and applied via a chrome restart upon user login, see + // UserSessionManager::RestartToApplyPerSessionFlagsIfNeed for the latter. + chromeos::about_flags::ReadOnlyFlagsStorage flags_storage( + chromeos::about_flags::ParseFlagsFromCommandLine()); +#else flags_ui::PrefServiceFlagsStorage flags_storage(local_state_.get()); +#endif // BUILDFLAG(IS_CHROMEOS_ASH) + about_flags::ConvertFlagsToSwitches(&flags_storage, base::CommandLine::ForCurrentProcess(), flags_ui::kAddSentinels); -#endif // !BUILDFLAG(IS_CHROMEOS_ASH) } void ChromeFeatureListCreator::SetupFieldTrials() {
diff --git a/chrome/browser/navigation_predictor/navigation_predictor_keyed_service.cc b/chrome/browser/navigation_predictor/navigation_predictor_keyed_service.cc index d4a1763c..5ca466f8 100644 --- a/chrome/browser/navigation_predictor/navigation_predictor_keyed_service.cc +++ b/chrome/browser/navigation_predictor/navigation_predictor_keyed_service.cc
@@ -9,6 +9,7 @@ #include "base/json/json_writer.h" #include "base/metrics/histogram_macros.h" #include "base/metrics/histogram_macros_local.h" +#include "base/time/default_tick_clock.h" #include "base/values.h" #include "build/build_config.h" #include "chrome/browser/navigation_predictor/navigation_predictor_renderer_warmup_client.h" @@ -161,7 +162,8 @@ : search_engine_preconnector_(browser_context), renderer_warmup_client_( std::make_unique<NavigationPredictorRendererWarmupClient>( - Profile::FromBrowserContext(browser_context))) { + Profile::FromBrowserContext(browser_context))), + tick_clock_(base::DefaultTickClock::GetInstance()) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK(!browser_context->IsOffTheRecord()); @@ -234,6 +236,42 @@ observer_list_.RemoveObserver(observer); } +void NavigationPredictorKeyedService::OnWebContentsVisibilityChanged( + content::WebContents* web_contents, + bool is_in_foreground) { + visible_web_contents_.erase(web_contents); + last_web_contents_state_change_time_ = tick_clock_->NowTicks(); + if (is_in_foreground) { + visible_web_contents_.insert(web_contents); + } +} + +void NavigationPredictorKeyedService::OnWebContentsDestroyed( + content::WebContents* web_contents) { + visible_web_contents_.erase(web_contents); + last_web_contents_state_change_time_ = tick_clock_->NowTicks(); +} + +bool NavigationPredictorKeyedService::IsBrowserAppLikelyInForeground() const { + // If no web contents is in foreground, then allow a very short cool down + // period before considering app in background. This cooldown period is needed + // since when switching between the tabs, none of the web contents is in + // foreground for a very short period. + if (visible_web_contents_.empty() && + tick_clock_->NowTicks() - last_web_contents_state_change_time_ > + base::TimeDelta::FromSeconds(1)) { + return false; + } + + return tick_clock_->NowTicks() - last_web_contents_state_change_time_ <= + base::TimeDelta::FromSeconds(120); +} + +void NavigationPredictorKeyedService::SetTickClockForTesting( + const base::TickClock* tick_clock) { + tick_clock_ = tick_clock; +} + SearchEnginePreconnector* NavigationPredictorKeyedService::search_engine_preconnector() { DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
diff --git a/chrome/browser/navigation_predictor/navigation_predictor_keyed_service.h b/chrome/browser/navigation_predictor/navigation_predictor_keyed_service.h index b4e15b4..03d4417 100644 --- a/chrome/browser/navigation_predictor/navigation_predictor_keyed_service.h +++ b/chrome/browser/navigation_predictor/navigation_predictor_keyed_service.h
@@ -136,6 +136,25 @@ // Removes |observer| as the observer for next predicted navigation. void RemoveObserver(Observer* observer); + // Notifies |this| that the visibility of web contents tracked by |client| has + // changed or if user starts a new navigation corresponding to |web_contents|. + // Might be called more than once with the same |is_in_foreground| and + // |web_contents| in case user starts a new navigation with same + // |web_contents|. + void OnWebContentsVisibilityChanged(content::WebContents* web_contents, + bool is_in_foreground); + + // Notifies |this| that the web contents tracked by |client| has destroyed. + void OnWebContentsDestroyed(content::WebContents* web_contents); + + // Overrides the tick clock used by |this| for testing. + void SetTickClockForTesting(const base::TickClock* tick_clock); + + // Returns true if the browser app is likely to be in foreground and being + // interacted by the user. This is heuristically computed by observing loading + // and visibility of web contents. + bool IsBrowserAppLikelyInForeground() const; + private: // List of observers are currently registered to receive notifications for the // next predicted navigations. @@ -151,6 +170,12 @@ std::unique_ptr<NavigationPredictorRendererWarmupClient> renderer_warmup_client_; + std::unordered_set<content::WebContents*> visible_web_contents_; + + base::TimeTicks last_web_contents_state_change_time_; + + const base::TickClock* tick_clock_; + DISALLOW_COPY_AND_ASSIGN(NavigationPredictorKeyedService); };
diff --git a/chrome/browser/navigation_predictor/navigation_predictor_preconnect_client.cc b/chrome/browser/navigation_predictor/navigation_predictor_preconnect_client.cc index b542ccc..650d957 100644 --- a/chrome/browser/navigation_predictor/navigation_predictor_preconnect_client.cc +++ b/chrome/browser/navigation_predictor/navigation_predictor_preconnect_client.cc
@@ -13,6 +13,8 @@ #include "base/time/time.h" #include "build/build_config.h" #include "chrome/browser/navigation_predictor/navigation_predictor_features.h" +#include "chrome/browser/navigation_predictor/navigation_predictor_keyed_service.h" +#include "chrome/browser/navigation_predictor/navigation_predictor_keyed_service_factory.h" #include "chrome/browser/navigation_predictor/search_engine_preconnector.h" #include "chrome/browser/predictors/loading_predictor.h" #include "chrome/browser/predictors/loading_predictor_factory.h" @@ -37,14 +39,37 @@ NavigationPredictorPreconnectClient::NavigationPredictorPreconnectClient( content::WebContents* web_contents) : content::WebContentsObserver(web_contents), + web_contents_(web_contents), browser_context_(web_contents->GetBrowserContext()), current_visibility_(web_contents->GetVisibility()) {} -NavigationPredictorPreconnectClient::~NavigationPredictorPreconnectClient() = - default; +NavigationPredictorPreconnectClient::~NavigationPredictorPreconnectClient() { + NavigationPredictorKeyedService* navigation_predictor_service = + GetNavigationPredictorKeyedService(); + if (navigation_predictor_service) { + navigation_predictor_service->OnWebContentsDestroyed(web_contents_); + } +} + +NavigationPredictorKeyedService* +NavigationPredictorPreconnectClient::GetNavigationPredictorKeyedService() + const { + return NavigationPredictorKeyedServiceFactory::GetForProfile( + Profile::FromBrowserContext(browser_context_)); +} void NavigationPredictorPreconnectClient::DidFinishNavigation( content::NavigationHandle* navigation_handle) { + // Notify navigation predictor service of any same-document navigations that + // may be captured here. Same-document navigations imply that user is + // interacting with the browser app. + NavigationPredictorKeyedService* navigation_predictor_service = + GetNavigationPredictorKeyedService(); + if (navigation_predictor_service) { + navigation_predictor_service->OnWebContentsVisibilityChanged( + web_contents_, current_visibility_ == content::Visibility::VISIBLE); + } + if (!navigation_handle->IsInMainFrame() || !navigation_handle->HasCommitted()) { return; @@ -94,6 +119,13 @@ content::Visibility visibility) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + NavigationPredictorKeyedService* navigation_predictor_service = + GetNavigationPredictorKeyedService(); + if (navigation_predictor_service) { + navigation_predictor_service->OnWebContentsVisibilityChanged( + web_contents_, visibility == content::Visibility::VISIBLE); + } + // Check for same state. if (current_visibility_ == visibility) return;
diff --git a/chrome/browser/navigation_predictor/navigation_predictor_preconnect_client.h b/chrome/browser/navigation_predictor/navigation_predictor_preconnect_client.h index 3774e3d5..27debed 100644 --- a/chrome/browser/navigation_predictor/navigation_predictor_preconnect_client.h +++ b/chrome/browser/navigation_predictor/navigation_predictor_preconnect_client.h
@@ -19,6 +19,8 @@ class RenderFrameHost; } // namespace content +class NavigationPredictorKeyedService; + class NavigationPredictorPreconnectClient : public content::WebContentsObserver, public content::WebContentsUserData<NavigationPredictorPreconnectClient> { @@ -37,6 +39,8 @@ explicit NavigationPredictorPreconnectClient( content::WebContents* web_contents); + NavigationPredictorKeyedService* GetNavigationPredictorKeyedService() const; + // content::WebContentsObserver: void OnVisibilityChanged(content::Visibility visibility) override; void DidFinishLoad(content::RenderFrameHost* render_frame_host, @@ -57,6 +61,8 @@ base::Optional<bool> IsPubliclyRoutable( content::NavigationHandle* navigation_handle) const; + content::WebContents* web_contents_; + // Used to get keyed services. content::BrowserContext* const browser_context_;
diff --git a/chrome/browser/navigation_predictor/search_engine_preconnector.cc b/chrome/browser/navigation_predictor/search_engine_preconnector.cc index 04c0c9d0..198fa666e 100644 --- a/chrome/browser/navigation_predictor/search_engine_preconnector.cc +++ b/chrome/browser/navigation_predictor/search_engine_preconnector.cc
@@ -6,9 +6,12 @@ #include "base/bind.h" #include "base/metrics/field_trial_params.h" +#include "base/metrics/histogram_functions.h" #include "base/time/time.h" #include "build/build_config.h" #include "chrome/browser/navigation_predictor/navigation_predictor_features.h" +#include "chrome/browser/navigation_predictor/navigation_predictor_keyed_service.h" +#include "chrome/browser/navigation_predictor/navigation_predictor_keyed_service_factory.h" #include "chrome/browser/predictors/loading_predictor.h" #include "chrome/browser/predictors/loading_predictor_factory.h" #include "chrome/browser/profiles/profile.h" @@ -96,13 +99,25 @@ if (!loading_predictor) return; - loading_predictor->PreconnectURLIfAllowed( - preconnect_url, /*allow_credentials=*/true, - net::NetworkIsolationKey(url::Origin::Create(preconnect_url), - url::Origin::Create(preconnect_url))); + const bool is_browser_app_likely_in_foreground = + IsBrowserAppLikelyInForeground(); + base::UmaHistogramBoolean( + "NavigationPredictor.SearchEnginePreconnector." + "IsBrowserAppLikelyInForeground", + is_browser_app_likely_in_foreground); - loading_predictor->PreconnectURLIfAllowed( - preconnect_url, /*allow_credentials=*/false, net::NetworkIsolationKey()); + if (!base::GetFieldTrialParamByFeatureAsBool(features::kPreconnectToSearch, + "skip_in_background", false) || + is_browser_app_likely_in_foreground) { + loading_predictor->PreconnectURLIfAllowed( + preconnect_url, /*allow_credentials=*/true, + net::NetworkIsolationKey(url::Origin::Create(preconnect_url), + url::Origin::Create(preconnect_url))); + + loading_predictor->PreconnectURLIfAllowed(preconnect_url, + /*allow_credentials=*/false, + net::NetworkIsolationKey()); + } // The delay beyond the idle socket timeout that net uses when // re-preconnecting. If negative, no retries occur. @@ -130,3 +145,11 @@ return GURL(); return search_provider->GenerateSearchURL({}).GetOrigin(); } + +bool SearchEnginePreconnector::IsBrowserAppLikelyInForeground() const { + NavigationPredictorKeyedService* keyed_service = + NavigationPredictorKeyedServiceFactory::GetForProfile( + Profile::FromBrowserContext(browser_context_)); + + return keyed_service && keyed_service->IsBrowserAppLikelyInForeground(); +}
diff --git a/chrome/browser/navigation_predictor/search_engine_preconnector.h b/chrome/browser/navigation_predictor/search_engine_preconnector.h index 99a378c..9bcff7f 100644 --- a/chrome/browser/navigation_predictor/search_engine_preconnector.h +++ b/chrome/browser/navigation_predictor/search_engine_preconnector.h
@@ -20,6 +20,7 @@ } // namespace features // Class to preconnect to the user's default search engine at regular intervals. +// Preconnects are made by |this| if the browser app is likely in foreground. class SearchEnginePreconnector { public: explicit SearchEnginePreconnector(content::BrowserContext* browser_context); @@ -44,6 +45,10 @@ // Queries template service for the current DSE URL. GURL GetDefaultSearchEngineOriginURL() const; + // Returns true if the browser app is likely to be in foreground and being + // interacted by the user. + bool IsBrowserAppLikelyInForeground() const; + // Used to get keyed services. content::BrowserContext* const browser_context_;
diff --git a/chrome/browser/navigation_predictor/search_engine_preconnector_browsertest.cc b/chrome/browser/navigation_predictor/search_engine_preconnector_browsertest.cc index fbebfcd..7cfa015 100644 --- a/chrome/browser/navigation_predictor/search_engine_preconnector_browsertest.cc +++ b/chrome/browser/navigation_predictor/search_engine_preconnector_browsertest.cc
@@ -4,7 +4,9 @@ #include "base/macros.h" #include "base/run_loop.h" +#include "base/test/metrics/histogram_tester.h" #include "base/test/scoped_feature_list.h" +#include "base/test/simple_test_tick_clock.h" #include "chrome/browser/navigation_predictor/navigation_predictor_keyed_service.h" #include "chrome/browser/navigation_predictor/navigation_predictor_keyed_service_factory.h" #include "chrome/browser/predictors/loading_predictor.h" @@ -236,6 +238,124 @@ EXPECT_EQ(0, preresolve_counts_[GetTestURL("/").GetOrigin()]); } +class SearchEnginePreconnectorForegroundBrowserTest + : public SearchEnginePreconnectorBrowserTest, + public testing::WithParamInterface<std::tuple<bool, bool>> { + public: + SearchEnginePreconnectorForegroundBrowserTest() { + { + if (skip_in_background()) { + feature_list_.InitWithFeaturesAndParameters( + { + {features::kPreconnectToSearch, + {{"startup_delay_ms", "1000000"}, + {"skip_in_background", "true"}}}, + {features::kPreconnectToSearchNonGoogle, {{}}}, + }, + {}); + } else { + feature_list_.InitWithFeaturesAndParameters( + { + {features::kPreconnectToSearch, + {{"startup_delay_ms", "1000000"}, + {"skip_in_background", "false"}}}, + {features::kPreconnectToSearchNonGoogle, {{}}}, + }, + {}); + } + } + } + + bool skip_in_background() const { return std::get<0>(GetParam()); } + + bool load_page() const { return std::get<1>(GetParam()); } + + ~SearchEnginePreconnectorForegroundBrowserTest() override = default; + + base::SimpleTestTickClock tick_clock_; + + private: + DISALLOW_COPY_AND_ASSIGN(SearchEnginePreconnectorForegroundBrowserTest); +}; + +INSTANTIATE_TEST_SUITE_P(All, + SearchEnginePreconnectorForegroundBrowserTest, + ::testing::Combine(::testing::Bool(), + ::testing::Bool())); + +// Test that search engine preconnects are done only if the browser app is +// likely in foreground. +IN_PROC_BROWSER_TEST_P(SearchEnginePreconnectorForegroundBrowserTest, + PreconnectOnlyInForeground) { + base::HistogramTester histogram_tester; + static const char kShortName[] = "test"; + static const char kSearchURL[] = + "/anchors_different_area.html?q={searchTerms}"; + static const char kSearchURLWithQuery[] = + "/anchors_different_area.html?q=porgs"; + + TemplateURLService* model = + TemplateURLServiceFactory::GetForProfile(browser()->profile()); + ASSERT_TRUE(model); + search_test_utils::WaitForTemplateURLServiceToLoad(model); + ASSERT_TRUE(model->loaded()); + + TemplateURLData data; + data.SetShortName(base::ASCIIToUTF16(kShortName)); + data.SetKeyword(data.short_name()); + data.SetURL(GetTestURL(kSearchURL).spec()); + + // Set the DSE to the test URL. + TemplateURL* template_url = model->Add(std::make_unique<TemplateURL>(data)); + ASSERT_TRUE(template_url); + model->SetUserSelectedDefaultSearchProvider(template_url); + + // Ensure that we wait long enough to trigger preconnects. + WaitForDelay(base::TimeDelta::FromMilliseconds(200)); + + TemplateURLData data_fake_search; + data_fake_search.SetShortName(base::ASCIIToUTF16(kShortName)); + data_fake_search.SetKeyword(data.short_name()); + data_fake_search.SetURL(FakeSearch().spec()); + + template_url = model->Add(std::make_unique<TemplateURL>(data_fake_search)); + ASSERT_TRUE(template_url); + model->SetUserSelectedDefaultSearchProvider(template_url); + + tick_clock_.SetNowTicks(base::TimeTicks::Now()); + tick_clock_.Advance(base::TimeDelta::FromSeconds(10000)); + + NavigationPredictorKeyedServiceFactory::GetForProfile( + Profile::FromBrowserContext(browser()->profile())) + ->SetTickClockForTesting(&tick_clock_); + + if (load_page()) { + ui_test_utils::NavigateToURL(browser(), GetTestURL(kSearchURLWithQuery)); + } + + // Put the fake search URL to be preconnected in foreground. + NavigationPredictorKeyedServiceFactory::GetForProfile( + Profile::FromBrowserContext(browser()->profile())) + ->search_engine_preconnector() + ->StartPreconnecting(/*with_startup_delay=*/false); + + if (!skip_in_background() || load_page()) { + WaitForPreresolveCountForURL(FakeSearch(), 2); + } + + // If preconnects are skipped in background and no web contents is in + // foreground, then no preconnect should happen. + EXPECT_EQ(skip_in_background() && !load_page() ? 0 : 2, + preresolve_counts_[FakeSearch()]); + histogram_tester.ExpectUniqueSample( + "NavigationPredictor.SearchEnginePreconnector." + "IsBrowserAppLikelyInForeground", + load_page() ? true : false, 1); + + EXPECT_EQ(load_page() ? 1 : 0, + preresolve_counts_[GetTestURL("/").GetOrigin()]); +} + class SearchEnginePreconnectorKeepSocketBrowserTest : public SearchEnginePreconnectorBrowserTest { public:
diff --git a/chrome/browser/offline_pages/background_loader_offliner_unittest.cc b/chrome/browser/offline_pages/background_loader_offliner_unittest.cc index 2145694..41bea3d 100644 --- a/chrome/browser/offline_pages/background_loader_offliner_unittest.cc +++ b/chrome/browser/offline_pages/background_loader_offliner_unittest.cc
@@ -861,7 +861,7 @@ PreviewsUITabHelper::CreateForWebContents(offliner()->web_contents()); PreviewsUITabHelper::FromWebContents(offliner()->web_contents()) ->CreatePreviewsUserDataForNavigationHandle(&handle, 1u) - ->set_committed_previews_state(blink::PreviewsTypes::NOSCRIPT_ON); + ->set_committed_previews_state(blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON); scoped_refptr<net::HttpResponseHeaders> header( new net::HttpResponseHeaders("HTTP/1.1 200 OK")); handle.set_response_headers(header.get());
diff --git a/chrome/browser/offline_pages/offline_page_request_handler.h b/chrome/browser/offline_pages/offline_page_request_handler.h index a48c295..6778d799 100644 --- a/chrome/browser/offline_pages/offline_page_request_handler.h +++ b/chrome/browser/offline_pages/offline_page_request_handler.h
@@ -172,9 +172,6 @@ // response data is received. virtual void SetOfflinePageNavigationUIData(bool is_offline_page) = 0; - // Returns true if the preview is allowed. - virtual bool ShouldAllowPreview() const = 0; - // Returns the page transition type for this navigation. virtual int GetPageTransition() const = 0;
diff --git a/chrome/browser/offline_pages/offline_page_url_loader.cc b/chrome/browser/offline_pages/offline_page_url_loader.cc index 0e1f030..4d4b2f83f 100644 --- a/chrome/browser/offline_pages/offline_page_url_loader.cc +++ b/chrome/browser/offline_pages/offline_page_url_loader.cc
@@ -92,9 +92,7 @@ : navigation_ui_data_(navigation_ui_data), frame_tree_node_id_(frame_tree_node_id), transition_type_(tentative_resource_request.transition_type), - loader_callback_(std::move(callback)), - is_offline_preview_allowed_(tentative_resource_request.previews_state & - blink::PreviewsTypes::OFFLINE_PAGE_ON) { + loader_callback_(std::move(callback)) { // TODO(crbug.com/876527): Figure out how offline page interception should // interact with URLLoaderThrottles. It might be incorrect to use // |tentative_resource_request.headers| here, since throttles can rewrite @@ -207,10 +205,6 @@ navigation_data->SetOfflinePageNavigationUIData(std::move(offline_page_data)); } -bool OfflinePageURLLoader::ShouldAllowPreview() const { - return is_offline_preview_allowed_; -} - int OfflinePageURLLoader::GetPageTransition() const { return transition_type_; }
diff --git a/chrome/browser/offline_pages/offline_page_url_loader.h b/chrome/browser/offline_pages/offline_page_url_loader.h index 1116136..8862746 100644 --- a/chrome/browser/offline_pages/offline_page_url_loader.h +++ b/chrome/browser/offline_pages/offline_page_url_loader.h
@@ -75,7 +75,6 @@ void NotifyHeadersComplete(int64_t file_size) override; void NotifyReadRawDataComplete(int bytes_read) override; void SetOfflinePageNavigationUIData(bool is_offline_page) override; - bool ShouldAllowPreview() const override; int GetPageTransition() const override; OfflinePageRequestHandler::Delegate::WebContentsGetter GetWebContentsGetter() const override; @@ -117,7 +116,6 @@ std::unique_ptr<mojo::SimpleWatcher> handle_watcher_; OfflinePageRequestHandler::Delegate::TabIdGetter tab_id_getter_; - bool is_offline_preview_allowed_; base::WeakPtrFactory<OfflinePageURLLoader> weak_ptr_factory_{this};
diff --git a/chrome/browser/optimization_guide/prediction/prediction_manager.cc b/chrome/browser/optimization_guide/prediction/prediction_manager.cc index 2024b45..0f71ac1 100644 --- a/chrome/browser/optimization_guide/prediction/prediction_manager.cc +++ b/chrome/browser/optimization_guide/prediction/prediction_manager.cc
@@ -9,6 +9,7 @@ #include "base/containers/flat_map.h" #include "base/containers/flat_set.h" +#include "base/containers/flat_tree.h" #include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" #include "base/metrics/histogram_macros_local.h" @@ -438,9 +439,8 @@ const base::flat_map<proto::ClientModelFeature, float>& override_client_model_feature_values) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - base::flat_map<std::string, float> feature_map; if (model_features.size() == 0) - return feature_map; + return {}; const base::flat_map<std::string, float>* host_model_features = nullptr; @@ -457,21 +457,19 @@ // host model feature we have in the map. If it is not in either, a default is // created for it. This ensures that the prediction model will have values for // every feature that it requires to be evaluated. + std::vector<std::pair<std::string, float>> feature_map; + feature_map.reserve(model_features.size()); for (const auto& model_feature : model_features) { base::Optional<float> value = GetValueForClientFeature( model_feature, navigation_handle, override_client_model_feature_values); - if (value) { - feature_map[model_feature] = *value; - continue; + if (!value && host_model_features) { + const auto it = host_model_features->find(model_feature); + if (it != host_model_features->end()) + value = it->second; } - if (!host_model_features || !host_model_features->contains(model_feature)) { - feature_map[model_feature] = -1.0; - continue; - } - feature_map[model_feature] = - host_model_features->find(model_feature)->second; + feature_map.emplace_back(model_feature, value.value_or(-1.0f)); } - return feature_map; + return {base::sorted_unique, std::move(feature_map)}; } OptimizationTargetDecision PredictionManager::ShouldTargetNavigation( @@ -735,8 +733,7 @@ std::unique_ptr<PredictionModel> PredictionManager::CreatePredictionModel( const proto::PredictionModel& model) const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - return PredictionModel::Create( - std::make_unique<proto::PredictionModel>(model)); + return PredictionModel::Create(model); } void PredictionManager::UpdatePredictionModels( @@ -916,26 +913,26 @@ return; bool success = ProcessAndStoreLoadedModel(*model); - OnProcessLoadedModel(std::move(model), success); + OnProcessLoadedModel(*model, success); } void PredictionManager::OnProcessLoadedModel( - std::unique_ptr<proto::PredictionModel> model, + const proto::PredictionModel& model, bool success) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (success) { base::UmaHistogramSparse( "OptimizationGuide.PredictionModelLoadedVersion." + optimization_guide::GetStringNameForOptimizationTarget( - model->model_info().optimization_target()), - model->model_info().version()); + model.model_info().optimization_target()), + model.model_info().version()); return; } // Remove model from store if it exists. OptimizationGuideStore::EntryKey model_entry_key; if (model_and_features_store_->FindPredictionModelEntryKey( - model->model_info().optimization_target(), &model_entry_key)) { + model.model_info().optimization_target(), &model_entry_key)) { model_and_features_store_->RemovePredictionModelFromEntryKey( model_entry_key); }
diff --git a/chrome/browser/optimization_guide/prediction/prediction_manager.h b/chrome/browser/optimization_guide/prediction/prediction_manager.h index 9dd95276..8e12147 100644 --- a/chrome/browser/optimization_guide/prediction/prediction_manager.h +++ b/chrome/browser/optimization_guide/prediction/prediction_manager.h
@@ -318,8 +318,7 @@ std::unique_ptr<PredictionModel> prediction_model); // Post-processing callback invoked after processing |model|. - void OnProcessLoadedModel(std::unique_ptr<proto::PredictionModel> model, - bool success); + void OnProcessLoadedModel(const proto::PredictionModel& model, bool success); // Process |host_model_features| from the into host model features // usable by the PredictionManager. The processed host model features are
diff --git a/chrome/browser/optimization_guide/prediction/prediction_manager_unittest.cc b/chrome/browser/optimization_guide/prediction/prediction_manager_unittest.cc index bad0e5c..54253d9e 100644 --- a/chrome/browser/optimization_guide/prediction/prediction_manager_unittest.cc +++ b/chrome/browser/optimization_guide/prediction/prediction_manager_unittest.cc
@@ -57,27 +57,25 @@ namespace optimization_guide { -std::unique_ptr<proto::PredictionModel> CreatePredictionModel( +proto::PredictionModel CreatePredictionModel( bool output_model_as_download_url = false) { - std::unique_ptr<optimization_guide::proto::PredictionModel> prediction_model = - std::make_unique<optimization_guide::proto::PredictionModel>(); + proto::PredictionModel prediction_model; - optimization_guide::proto::ModelInfo* model_info = - prediction_model->mutable_model_info(); + proto::ModelInfo* model_info = prediction_model.mutable_model_info(); model_info->set_version(1); model_info->add_supported_model_features( proto::CLIENT_MODEL_FEATURE_EFFECTIVE_CONNECTION_TYPE); - prediction_model->mutable_model_info()->add_supported_host_model_features( - "host_feat1"); + model_info->add_supported_host_model_features("host_feat1"); model_info->set_optimization_target( proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD); model_info->add_supported_model_types( proto::ModelType::MODEL_TYPE_DECISION_TREE); - if (output_model_as_download_url) - prediction_model->mutable_model()->set_download_url( + if (output_model_as_download_url) { + prediction_model.mutable_model()->set_download_url( "https://example.com/model"); - else - prediction_model->mutable_model()->mutable_threshold()->set_value(5.0); + } else { + prediction_model.mutable_model()->mutable_threshold()->set_value(5.0); + } return prediction_model; } @@ -98,28 +96,27 @@ model_feature->set_double_value(2.0); } - std::unique_ptr<proto::PredictionModel> prediction_model = + proto::PredictionModel prediction_model = CreatePredictionModel(output_model_as_download_url); for (const auto& client_model_feature : client_model_features) { - prediction_model->mutable_model_info()->add_supported_model_features( + prediction_model.mutable_model_info()->add_supported_model_features( client_model_feature); } - prediction_model->mutable_model_info()->add_supported_host_model_features( + prediction_model.mutable_model_info()->add_supported_host_model_features( "host_feat1"); - prediction_model->mutable_model_info()->set_version(2); - *get_models_response->add_models() = *prediction_model.get(); + prediction_model.mutable_model_info()->set_version(2); + *get_models_response->add_models() = std::move(prediction_model); return get_models_response; } class TestPredictionModel : public PredictionModel { public: - explicit TestPredictionModel( - std::unique_ptr<proto::PredictionModel> prediction_model) - : PredictionModel(std::move(prediction_model)) {} + explicit TestPredictionModel(const proto::PredictionModel& prediction_model) + : PredictionModel(prediction_model) {} ~TestPredictionModel() override = default; - optimization_guide::OptimizationTargetDecision Predict( + OptimizationTargetDecision Predict( const base::flat_map<std::string, float>& model_features, double* prediction_score) override { *prediction_score = 0.0; @@ -335,7 +332,8 @@ PredictionModelLoadedCallback callback) override { model_loaded_ = true; if (load_models_) { - std::move(callback).Run(CreatePredictionModel()); + std::move(callback).Run( + std::make_unique<proto::PredictionModel>(CreatePredictionModel())); } else { std::move(callback).Run(nullptr); } @@ -422,10 +420,7 @@ const proto::PredictionModel& model) const override { if (!create_valid_prediction_model_) return nullptr; - std::unique_ptr<PredictionModel> prediction_model = - std::make_unique<TestPredictionModel>( - std::make_unique<proto::PredictionModel>(model)); - return prediction_model; + return std::make_unique<TestPredictionModel>(model); } void set_create_valid_prediction_model(bool create_valid_prediction_model) { @@ -450,8 +445,7 @@ bool create_valid_prediction_model_ = true; }; -class PredictionManagerTest - : public optimization_guide::ProtoDatabaseProviderTestBase { +class PredictionManagerTest : public ProtoDatabaseProviderTestBase { public: using StoreEntry = proto::StoreEntry; using StoreEntryMap = std::map<OptimizationGuideStore::EntryKey, StoreEntry>; @@ -462,14 +456,14 @@ PredictionManagerTest& operator=(const PredictionManagerTest&) = delete; void SetUp() override { - optimization_guide::ProtoDatabaseProviderTestBase::SetUp(); + ProtoDatabaseProviderTestBase::SetUp(); web_contents_factory_ = std::make_unique<content::TestWebContentsFactory>(); top_host_provider_ = std::make_unique<FakeTopHostProvider>( std::vector<std::string>({"example1.com", "example2.com"})); pref_service_ = std::make_unique<TestingPrefServiceSimple>(); - optimization_guide::prefs::RegisterProfilePrefs(pref_service_->registry()); + prefs::RegisterProfilePrefs(pref_service_->registry()); url_loader_factory_ = base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>( @@ -535,9 +529,7 @@ return navigation_handle; } - void TearDown() override { - optimization_guide::ProtoDatabaseProviderTestBase::TearDown(); - } + void TearDown() override { ProtoDatabaseProviderTestBase::TearDown(); } FakeTopHostProvider* top_host_provider() const { return top_host_provider_.get(); @@ -632,7 +624,7 @@ kFetchSuccessWithModelsAndHostsModelFeatures)); prediction_manager()->RegisterOptimizationTargets( - {optimization_guide::proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD}); + {proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD}); SetStoreInitialized(); EXPECT_FALSE(prediction_model_fetcher()->models_fetched()); @@ -655,7 +647,7 @@ kFetchSuccessWithModelsAndHostsModelFeatures)); prediction_manager()->RegisterOptimizationTargets( - {optimization_guide::proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD}); + {proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD}); SetStoreInitialized(); EXPECT_TRUE(prediction_model_fetcher()->models_fetched()); @@ -671,21 +663,21 @@ navigation_handle.get()); EXPECT_FALSE(nav_data ->GetModelVersionForOptimizationTarget( - optimization_guide::proto::OPTIMIZATION_TARGET_UNKNOWN) + proto::OPTIMIZATION_TARGET_UNKNOWN) .has_value()); EXPECT_FALSE(nav_data ->GetModelPredictionScoreForOptimizationTarget( - optimization_guide::proto::OPTIMIZATION_TARGET_UNKNOWN) + proto::OPTIMIZATION_TARGET_UNKNOWN) .has_value()); histogram_tester.ExpectTotalCount( "OptimizationGuide.PredictionModelEvaluationLatency." + - optimization_guide::GetStringNameForOptimizationTarget( - optimization_guide::proto::OPTIMIZATION_TARGET_UNKNOWN), + GetStringNameForOptimizationTarget( + proto::OPTIMIZATION_TARGET_UNKNOWN), 0); histogram_tester.ExpectTotalCount( "OptimizationGuide.PredictionModelEvaluationLatency." + - optimization_guide::GetStringNameForOptimizationTarget( - optimization_guide::proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD), + GetStringNameForOptimizationTarget( + proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD), 0); } @@ -728,8 +720,8 @@ .has_value()); histogram_tester.ExpectTotalCount( "OptimizationGuide.PredictionModelEvaluationLatency." + - optimization_guide::GetStringNameForOptimizationTarget( - optimization_guide::proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD), + GetStringNameForOptimizationTarget( + proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD), 0); EXPECT_TRUE(prediction_manager()->registered_optimization_targets().contains( @@ -848,21 +840,19 @@ OptimizationGuideNavigationData* nav_data = OptimizationGuideNavigationData::GetFromNavigationHandle( navigation_handle.get()); - EXPECT_FALSE( - nav_data - ->GetModelVersionForOptimizationTarget( - optimization_guide::proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD) - .has_value()); - EXPECT_FALSE( - nav_data - ->GetModelPredictionScoreForOptimizationTarget( - optimization_guide::proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD) - .has_value()); + EXPECT_FALSE(nav_data + ->GetModelVersionForOptimizationTarget( + proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD) + .has_value()); + EXPECT_FALSE(nav_data + ->GetModelPredictionScoreForOptimizationTarget( + proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD) + .has_value()); histogram_tester.ExpectTotalCount( "OptimizationGuide.PredictionModelEvaluationLatency." + - optimization_guide::GetStringNameForOptimizationTarget( - optimization_guide::proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD), + GetStringNameForOptimizationTarget( + proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD), 0); } @@ -897,28 +887,28 @@ EXPECT_TRUE(test_prediction_model); EXPECT_TRUE(test_prediction_model->WasModelEvaluated()); - histogram_tester.ExpectTotalCount( - "OptimizationGuide.PredictionModelEvaluationLatency." + - optimization_guide::GetStringNameForOptimizationTarget( - optimization_guide::proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD), - 1); + histogram_tester.ExpectTotalCount( + "OptimizationGuide.PredictionModelEvaluationLatency." + + GetStringNameForOptimizationTarget( + proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD), + 1); - histogram_tester.ExpectUniqueSample( - "OptimizationGuide.IsPredictionModelValid." + - optimization_guide::GetStringNameForOptimizationTarget( - optimization_guide::proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD), - true, 1); + histogram_tester.ExpectUniqueSample( + "OptimizationGuide.IsPredictionModelValid." + + GetStringNameForOptimizationTarget( + proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD), + true, 1); - histogram_tester.ExpectUniqueSample( - "OptimizationGuide.IsPredictionModelValid", true, 1); + histogram_tester.ExpectUniqueSample( + "OptimizationGuide.IsPredictionModelValid", true, 1); - histogram_tester.ExpectTotalCount( - "OptimizationGuide.PredictionModelValidationLatency." + - optimization_guide::GetStringNameForOptimizationTarget( - optimization_guide::proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD), - 1); - histogram_tester.ExpectTotalCount( - "OptimizationGuide.PredictionModelValidationLatency", 1); + histogram_tester.ExpectTotalCount( + "OptimizationGuide.PredictionModelValidationLatency." + + GetStringNameForOptimizationTarget( + proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD), + 1); + histogram_tester.ExpectTotalCount( + "OptimizationGuide.PredictionModelValidationLatency", 1); } TEST_F(PredictionManagerTest, UpdatePredictionModelsWithInvalidModel) { @@ -1351,8 +1341,8 @@ histogram_tester.ExpectBucketCount( "OptimizationGuide.ShouldTargetNavigation.PredictionModelStatus." + - optimization_guide::GetStringNameForOptimizationTarget( - optimization_guide::proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD), + GetStringNameForOptimizationTarget( + proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD), PredictionManagerModelStatus::kModelAvailable, 1); } @@ -1387,8 +1377,8 @@ histogram_tester.ExpectBucketCount( "OptimizationGuide.ShouldTargetNavigation.PredictionModelStatus." + - optimization_guide::GetStringNameForOptimizationTarget( - optimization_guide::proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD), + GetStringNameForOptimizationTarget( + proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD), PredictionManagerModelStatus::kStoreAvailableNoModelForTarget, 1); } @@ -1424,8 +1414,8 @@ histogram_tester.ExpectBucketCount( "OptimizationGuide.ShouldTargetNavigation.PredictionModelStatus." + - optimization_guide::GetStringNameForOptimizationTarget( - optimization_guide::proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD), + GetStringNameForOptimizationTarget( + proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD), PredictionManagerModelStatus::kStoreAvailableModelNotLoaded, 1); histogram_tester.ExpectTotalCount( @@ -1463,8 +1453,8 @@ histogram_tester.ExpectBucketCount( "OptimizationGuide.ShouldTargetNavigation.PredictionModelStatus." + - optimization_guide::GetStringNameForOptimizationTarget( - optimization_guide::proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD), + GetStringNameForOptimizationTarget( + proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD), PredictionManagerModelStatus::kStoreUnavailableModelUnknown, 1); } @@ -2025,10 +2015,8 @@ navigation_handle->set_page_transition( ui::PageTransition::PAGE_TRANSITION_RELOAD); - pref_service()->SetDouble(optimization_guide::prefs::kSessionStatisticFCPMean, - 200.0); - pref_service()->SetDouble( - optimization_guide::prefs::kSessionStatisticFCPStdDev, 50.0); + pref_service()->SetDouble(prefs::kSessionStatisticFCPMean, 200.0); + pref_service()->SetDouble(prefs::kSessionStatisticFCPStdDev, 50.0); CreatePredictionManager(); prediction_manager()->SetPredictionModelFetcherForTesting( @@ -2096,10 +2084,8 @@ navigation_handle->set_page_transition( ui::PageTransition::PAGE_TRANSITION_RELOAD); - pref_service()->SetDouble(optimization_guide::prefs::kSessionStatisticFCPMean, - 200.0); - pref_service()->SetDouble( - optimization_guide::prefs::kSessionStatisticFCPStdDev, 50.0); + pref_service()->SetDouble(prefs::kSessionStatisticFCPMean, 200.0); + pref_service()->SetDouble(prefs::kSessionStatisticFCPStdDev, 50.0); CreatePredictionManager(); prediction_manager()->SetPredictionModelFetcherForTesting( @@ -2172,7 +2158,7 @@ BuildTestPredictionModelFetcher( PredictionModelFetcherEndState::kFetchFailed)); prediction_manager()->RegisterOptimizationTargets( - {optimization_guide::proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD}); + {proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD}); EXPECT_FALSE(models_and_features_store()->WasHostModelFeaturesLoaded()); EXPECT_FALSE(models_and_features_store()->WasModelLoaded()); EXPECT_FALSE(prediction_manager()->GetHostModelFeaturesForHost("foo.com")); @@ -2204,7 +2190,7 @@ EXPECT_FALSE(models_and_features_store()->WasModelLoaded()); EXPECT_FALSE(prediction_manager()->GetHostModelFeaturesForHost("foo.com")); prediction_manager()->RegisterOptimizationTargets( - {optimization_guide::proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD}); + {proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD}); RunUntilIdle(); EXPECT_TRUE(models_and_features_store()->WasHostModelFeaturesLoaded());
diff --git a/chrome/browser/page_load_metrics/observers/previews_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/previews_page_load_metrics_observer.cc deleted file mode 100644 index 5ffe64a..0000000 --- a/chrome/browser/page_load_metrics/observers/previews_page_load_metrics_observer.cc +++ /dev/null
@@ -1,251 +0,0 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/page_load_metrics/observers/previews_page_load_metrics_observer.h" - -#include "base/check.h" -#include "base/metrics/histogram_functions.h" -#include "base/notreached.h" -#include "base/optional.h" -#include "base/time/time.h" -#include "chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings.h" -#include "chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings_factory.h" -#include "chrome/browser/previews/previews_content_util.h" -#include "chrome/browser/previews/previews_ui_tab_helper.h" -#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_data.h" -#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_service.h" -#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_settings.h" -#include "components/page_load_metrics/browser/page_load_metrics_observer.h" -#include "components/page_load_metrics/browser/page_load_metrics_util.h" -#include "components/page_load_metrics/common/page_load_timing.h" -#include "components/previews/content/previews_user_data.h" -#include "components/previews/core/previews_experiments.h" -#include "content/public/browser/navigation_handle.h" -#include "content/public/browser/web_contents.h" - -namespace { - -std::string GetHistogramNamePrefix(previews::PreviewsType previews_type) { - switch (previews_type) { - case previews::PreviewsType::NOSCRIPT: - return "PageLoad.Clients.NoScriptPreview."; - case previews::PreviewsType::RESOURCE_LOADING_HINTS: - return "PageLoad.Clients.ResourceLoadingHintsPreview."; - default: - NOTREACHED(); - return std::string(); - } -} - -void RecordPageLoadHistogram(previews::PreviewsType previews_type, - const std::string& histogram, - base::TimeDelta sample) { - // Match PAGE_LOAD_HISTOGRAM params: - UmaHistogramCustomTimes(GetHistogramNamePrefix(previews_type) + histogram, - sample, base::TimeDelta::FromMilliseconds(10), - base::TimeDelta::FromMinutes(10), 100); -} - -void RecordPageSizeHistograms(previews::PreviewsType previews_type, - int64_t num_network_resources, - int64_t network_bytes) { - // Match PAGE_BYTES_HISTOGRAM params: - base::UmaHistogramCustomCounts( - GetHistogramNamePrefix(previews_type) + - "Experimental.Bytes.NetworkIncludingHeaders", - static_cast<int>((network_bytes) / 1024), 1, 500 * 1024, 50); -} - -int GetDefaultInflationPercent(previews::PreviewsType previews_type) { - switch (previews_type) { - case previews::PreviewsType::NOSCRIPT: - return previews::params::NoScriptPreviewsInflationPercent(); - case previews::PreviewsType::RESOURCE_LOADING_HINTS: - return previews::params::ResourceLoadingHintsPreviewsInflationPercent(); - default: - NOTREACHED(); - return 0; - } -} - -int GetDefaultInflationBytes(previews::PreviewsType previews_type) { - switch (previews_type) { - case previews::PreviewsType::NOSCRIPT: - return previews::params::NoScriptPreviewsInflationBytes(); - case previews::PreviewsType::RESOURCE_LOADING_HINTS: - return previews::params::ResourceLoadingHintsPreviewsInflationBytes(); - default: - NOTREACHED(); - return 0; - } -} - -} // namespace - -namespace previews { - -PreviewsPageLoadMetricsObserver::PreviewsPageLoadMetricsObserver() {} - -PreviewsPageLoadMetricsObserver::~PreviewsPageLoadMetricsObserver() {} - -page_load_metrics::PageLoadMetricsObserver::ObservePolicy -PreviewsPageLoadMetricsObserver::OnStart( - content::NavigationHandle* navigation_handle, - const GURL& currently_committed_url, - bool started_in_foreground) { - if (!started_in_foreground) - return STOP_OBSERVING; - - if (previews::params::IsNoScriptPreviewsEnabled() || - previews::params::IsResourceLoadingHintsEnabled()) { - return CONTINUE_OBSERVING; - } - - return STOP_OBSERVING; -} - -page_load_metrics::PageLoadMetricsObserver::ObservePolicy -PreviewsPageLoadMetricsObserver::OnCommit( - content::NavigationHandle* navigation_handle, - ukm::SourceId source_id) { - PreviewsUITabHelper* ui_tab_helper = - PreviewsUITabHelper::FromWebContents(navigation_handle->GetWebContents()); - if (!ui_tab_helper) - return STOP_OBSERVING; - - previews::PreviewsUserData* previews_user_data = - ui_tab_helper->GetPreviewsUserData(navigation_handle); - if (!previews_user_data) - return STOP_OBSERVING; - - previews_type_ = previews::GetMainFramePreviewsType( - previews_user_data->PreHoldbackCommittedPreviewsState()); - if (previews_type_ != previews::PreviewsType::NOSCRIPT && - previews_type_ != previews::PreviewsType::RESOURCE_LOADING_HINTS) { - return STOP_OBSERVING; - } - - data_savings_inflation_percent_ = - previews_user_data->data_savings_inflation_percent(); - - browser_context_ = navigation_handle->GetWebContents()->GetBrowserContext(); - - return CONTINUE_OBSERVING; -} - -page_load_metrics::PageLoadMetricsObserver::ObservePolicy -PreviewsPageLoadMetricsObserver::FlushMetricsOnAppEnterBackground( - const page_load_metrics::mojom::PageLoadTiming& timing) { - // FlushMetricsOnAppEnterBackground is invoked on Android in cases where the - // app is about to be backgrounded, as part of the Activity.onPause() - // flow. After this method is invoked, Chrome may be killed without further - // notification. - if (GetDelegate().DidCommit()) { - RecordPageSizeUMA(); - RecordTimingMetrics(timing); - } - return STOP_OBSERVING; -} - -void PreviewsPageLoadMetricsObserver::OnLoadEventStart( - const page_load_metrics::mojom::PageLoadTiming& timing) { - // TODO(dougarnett): Determine if a different event makes more sense. - // https://crbug.com/864720 - int64_t inflation_bytes = 0; - if (data_savings_inflation_percent_ == 0) { - data_savings_inflation_percent_ = - GetDefaultInflationPercent(previews_type_); - inflation_bytes = GetDefaultInflationBytes(previews_type_); - } - - int64_t total_saved_bytes = - (total_network_bytes_ * data_savings_inflation_percent_) / 100 + - inflation_bytes; - - DCHECK(GetDelegate().GetUrl().SchemeIsHTTPOrHTTPS()); - - WriteToSavings(GetDelegate().GetUrl(), total_saved_bytes); -} - -void PreviewsPageLoadMetricsObserver::OnComplete( - const page_load_metrics::mojom::PageLoadTiming& timing) { - RecordPageSizeUMA(); - RecordTimingMetrics(timing); -} - -void PreviewsPageLoadMetricsObserver::RecordPageSizeUMA() const { - RecordPageSizeHistograms(previews_type_, num_network_resources_, - total_network_bytes_); -} - -void PreviewsPageLoadMetricsObserver::RecordTimingMetrics( - const page_load_metrics::mojom::PageLoadTiming& timing) { - if (page_load_metrics::WasStartedInForegroundOptionalEventInForeground( - timing.document_timing->load_event_start, GetDelegate())) { - RecordPageLoadHistogram(previews_type_, - "DocumentTiming.NavigationToLoadEventFired", - timing.document_timing->load_event_start.value()); - } - if (page_load_metrics::WasStartedInForegroundOptionalEventInForeground( - timing.paint_timing->first_contentful_paint, GetDelegate())) { - RecordPageLoadHistogram( - previews_type_, "PaintTiming.NavigationToFirstContentfulPaint", - timing.paint_timing->first_contentful_paint.value()); - } - if (page_load_metrics::WasStartedInForegroundOptionalEventInForeground( - timing.paint_timing->first_meaningful_paint, GetDelegate())) { - RecordPageLoadHistogram( - previews_type_, - "Experimental.PaintTiming.NavigationToFirstMeaningfulPaint", - timing.paint_timing->first_meaningful_paint.value()); - } - if (page_load_metrics::WasStartedInForegroundOptionalEventInForeground( - timing.parse_timing->parse_stop, GetDelegate())) { - RecordPageLoadHistogram( - previews_type_, "ParseTiming.ParseBlockedOnScriptLoad", - timing.parse_timing->parse_blocked_on_script_load_duration.value()); - RecordPageLoadHistogram(previews_type_, "ParseTiming.ParseDuration", - timing.parse_timing->parse_stop.value() - - timing.parse_timing->parse_start.value()); - } -} - -void PreviewsPageLoadMetricsObserver::OnResourceDataUseObserved( - content::RenderFrameHost* rfh, - const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>& - resources) { - for (auto const& resource : resources) { - if (resource->cache_type == - page_load_metrics::mojom::CacheType::kNotCached && - resource->is_complete) { - num_network_resources_++; - } - total_network_bytes_ += resource->delta_bytes; - } -} - -void PreviewsPageLoadMetricsObserver::WriteToSavings(const GURL& url, - int64_t bytes_saved) { - bool is_https = url.SchemeIs(url::kHttpsScheme); - - data_reduction_proxy::DataReductionProxySettings* - data_reduction_proxy_settings = - DataReductionProxyChromeSettingsFactory::GetForBrowserContext( - browser_context_); - - bool data_saver_enabled = - data_reduction_proxy_settings->IsDataReductionProxyEnabled(); - - data_reduction_proxy_settings->data_reduction_proxy_service() - ->UpdateContentLengths(0, bytes_saved, data_saver_enabled, - (is_https ? data_reduction_proxy::HTTPS - : data_reduction_proxy::DIRECT_HTTP), - "text/html", true, - data_use_measurement::DataUseUserData::OTHER, 0); - - data_reduction_proxy_settings->data_reduction_proxy_service() - ->UpdateDataUseForHost(0, bytes_saved, url.HostNoBrackets()); -} - -} // namespace previews
diff --git a/chrome/browser/page_load_metrics/observers/previews_page_load_metrics_observer.h b/chrome/browser/page_load_metrics/observers/previews_page_load_metrics_observer.h deleted file mode 100644 index de9e6c9..0000000 --- a/chrome/browser/page_load_metrics/observers/previews_page_load_metrics_observer.h +++ /dev/null
@@ -1,76 +0,0 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_PREVIEWS_PAGE_LOAD_METRICS_OBSERVER_H_ -#define CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_PREVIEWS_PAGE_LOAD_METRICS_OBSERVER_H_ - -#include <stdint.h> - -#include "base/macros.h" -#include "components/page_load_metrics/browser/page_load_metrics_observer.h" -#include "components/previews/core/previews_experiments.h" - -namespace content { -class NavigationHandle; -} - -namespace previews { - -// Observer responsible for recording page load metrics for some types of -// previews (such as NoScript and ResourceLoadingHints previews). -class PreviewsPageLoadMetricsObserver - : public page_load_metrics::PageLoadMetricsObserver { - public: - PreviewsPageLoadMetricsObserver(); - ~PreviewsPageLoadMetricsObserver() override; - - // page_load_metrics::PageLoadMetricsObserver: - ObservePolicy OnStart(content::NavigationHandle* navigation_handle, - const GURL& currently_committed_url, - bool started_in_foreground) override; - ObservePolicy OnCommit(content::NavigationHandle* navigation_handle, - ukm::SourceId source_id) override; - ObservePolicy FlushMetricsOnAppEnterBackground( - const page_load_metrics::mojom::PageLoadTiming& timing) override; - void OnComplete( - const page_load_metrics::mojom::PageLoadTiming& timing) override; - void OnLoadEventStart( - const page_load_metrics::mojom::PageLoadTiming& timing) override; - void OnResourceDataUseObserved( - content::RenderFrameHost* rfh, - const std::vector<page_load_metrics::mojom::ResourceDataUpdatePtr>& - resources) override; - - protected: - // Virtual for testing. Writes the savings to the data saver feature. - virtual void WriteToSavings(const GURL& url, int64_t byte_savings); - - private: - void RecordTimingMetrics( - const page_load_metrics::mojom::PageLoadTiming& timing); - - // Records UMA of page size when the observer is about to be deleted. - void RecordPageSizeUMA() const; - - content::BrowserContext* browser_context_; - - // The previews type active for the page load (available at commit-time). - previews::PreviewsType previews_type_ = previews::PreviewsType::UNSPECIFIED; - - // The total number of bytes from OnDataUseObserved(). - int64_t total_network_bytes_ = 0; - - // The percent of bytes used by load event that should be considered savings. - // This is often larger than 100 as it corresponds to bytes that were not - // downloaded. - int data_savings_inflation_percent_ = 0; - - int64_t num_network_resources_ = 0; - - DISALLOW_COPY_AND_ASSIGN(PreviewsPageLoadMetricsObserver); -}; - -} // namespace previews - -#endif // CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_PREVIEWS_PAGE_LOAD_METRICS_OBSERVER_H_
diff --git a/chrome/browser/page_load_metrics/observers/previews_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/previews_page_load_metrics_observer_unittest.cc deleted file mode 100644 index c540ff9..0000000 --- a/chrome/browser/page_load_metrics/observers/previews_page_load_metrics_observer_unittest.cc +++ /dev/null
@@ -1,329 +0,0 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/page_load_metrics/observers/previews_page_load_metrics_observer.h" - -#include <stdint.h> -#include <map> -#include <memory> -#include <string> -#include <utility> - -#include "base/bind.h" -#include "base/macros.h" -#include "base/optional.h" -#include "base/test/scoped_feature_list.h" -#include "base/time/time.h" -#include "chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.h" -#include "chrome/browser/previews/previews_ui_tab_helper.h" -#include "components/page_load_metrics/browser/page_load_metrics_observer.h" -#include "components/page_load_metrics/browser/page_load_tracker.h" -#include "components/page_load_metrics/common/page_load_timing.h" -#include "components/page_load_metrics/common/test/page_load_metrics_test_util.h" -#include "components/previews/content/previews_user_data.h" -#include "components/previews/core/previews_features.h" -#include "content/public/browser/web_contents.h" -#include "content/public/test/navigation_simulator.h" -#include "content/public/test/web_contents_tester.h" -#include "third_party/blink/public/common/loader/previews_state.h" - -namespace previews { - -namespace { - -using page_load_metrics::mojom::ResourceDataUpdate; -using page_load_metrics::mojom::ResourceDataUpdatePtr; - -const char kDefaultTestUrl[] = "https://www.google.com"; - -class TestPreviewsPageLoadMetricsObserver - : public PreviewsPageLoadMetricsObserver { - public: - TestPreviewsPageLoadMetricsObserver( - base::OnceCallback<void(const GURL&, int64_t)> bytes_callback) - : bytes_callback_(std::move(bytes_callback)) {} - ~TestPreviewsPageLoadMetricsObserver() override {} - - void WriteToSavings(const GURL& url, int64_t bytes_savings) override { - std::move(bytes_callback_).Run(url, bytes_savings); - } - - private: - base::OnceCallback<void(const GURL&, int64_t)> bytes_callback_; -}; - -class PreviewsPageLoadMetricsObserverTest - : public page_load_metrics::PageLoadMetricsObserverTestHarness { - public: - PreviewsPageLoadMetricsObserverTest() {} - ~PreviewsPageLoadMetricsObserverTest() override {} - - void ResetTest() { - page_load_metrics::InitPageLoadTimingForTest(&timing_); - // Reset to the default testing state. Does not reset histogram state. - timing_.navigation_start = base::Time::FromDoubleT(1); - timing_.response_start = base::TimeDelta::FromSeconds(2); - timing_.parse_timing->parse_start = base::TimeDelta::FromSeconds(3); - timing_.paint_timing->first_contentful_paint = - base::TimeDelta::FromSeconds(4); - timing_.paint_timing->first_paint = base::TimeDelta::FromSeconds(4); - timing_.paint_timing->first_meaningful_paint = - base::TimeDelta::FromSeconds(8); - timing_.paint_timing->first_image_paint = base::TimeDelta::FromSeconds(5); - timing_.document_timing->load_event_start = base::TimeDelta::FromSeconds(7); - timing_.parse_timing->parse_stop = base::TimeDelta::FromSeconds(4); - timing_.parse_timing->parse_blocked_on_script_load_duration = - base::TimeDelta::FromSeconds(1); - PopulateRequiredTimingFields(&timing_); - } - - content::GlobalRequestID NavigateAndCommitWithPreviewsState( - blink::PreviewsState previews_state) { - auto navigation_simulator = - content::NavigationSimulator::CreateRendererInitiated( - GURL(kDefaultTestUrl), main_rfh()); - navigation_simulator->Start(); - PreviewsUITabHelper::FromWebContents(web_contents()) - ->CreatePreviewsUserDataForNavigationHandle( - navigation_simulator->GetNavigationHandle(), 1u) - ->set_committed_previews_state(previews_state); - navigation_simulator->Commit(); - return navigation_simulator->GetGlobalRequestID(); - } - - void ValidateTimingHistograms(std::string preview_type_name, - bool preview_was_active) { - ValidateTimingHistogram("PageLoad.Clients." + preview_type_name + - ".DocumentTiming." - "NavigationToLoadEventFired", - timing_.document_timing->load_event_start, - preview_was_active); - ValidateTimingHistogram("PageLoad.Clients." + preview_type_name + - ".PaintTiming." - "NavigationToFirstContentfulPaint", - timing_.paint_timing->first_contentful_paint, - preview_was_active); - ValidateTimingHistogram("PageLoad.Clients." + preview_type_name + - ".Experimental.PaintTiming." - "NavigationToFirstMeaningfulPaint", - timing_.paint_timing->first_meaningful_paint, - preview_was_active); - ValidateTimingHistogram( - "PageLoad.Clients." + preview_type_name + - ".ParseTiming.ParseBlockedOnScriptLoad", - timing_.parse_timing->parse_blocked_on_script_load_duration, - preview_was_active); - ValidateTimingHistogram( - "PageLoad.Clients." + preview_type_name + ".ParseTiming.ParseDuration", - timing_.parse_timing->parse_stop.value() - - timing_.parse_timing->parse_start.value(), - preview_was_active); - } - - void ValidateTimingHistogram(const std::string& histogram, - const base::Optional<base::TimeDelta>& event, - bool preview_was_active) { - tester()->histogram_tester().ExpectTotalCount(histogram, - preview_was_active ? 1 : 0); - if (!preview_was_active) { - tester()->histogram_tester().ExpectTotalCount(histogram, 0); - } else { - tester()->histogram_tester().ExpectUniqueSample( - histogram, - static_cast<base::HistogramBase::Sample>( - event.value().InMilliseconds()), - 1); - } - } - - void ValidateDataHistograms(std::string preview_type_name, - int network_resources, - int64_t network_bytes) { - if (network_resources > 0) { - tester()->histogram_tester().ExpectUniqueSample( - "PageLoad.Clients." + preview_type_name + - ".Experimental.Bytes.NetworkIncludingHeaders", - static_cast<int>(network_bytes / 1024), 1); - } else { - tester()->histogram_tester().ExpectTotalCount( - "PageLoad.Clients." + preview_type_name + - ".Experimental.Bytes.NetworkIncludingHeaders", - 0); - } - } - - void WriteToSavings(const GURL& url, int64_t bytes_savings) { - savings_url_ = url; - bytes_savings_ = bytes_savings; - } - - void SetUp() override { - page_load_metrics::PageLoadMetricsObserverTestHarness::SetUp(); - PreviewsUITabHelper::CreateForWebContents(web_contents()); - } - - protected: - void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) override { - tracker->AddObserver(std::make_unique<TestPreviewsPageLoadMetricsObserver>( - base::BindOnce(&PreviewsPageLoadMetricsObserverTest::WriteToSavings, - base::Unretained(this)))); - } - - page_load_metrics::mojom::PageLoadTiming timing_; - - GURL savings_url_; - int64_t bytes_savings_ = 0; - - private: - DISALLOW_COPY_AND_ASSIGN(PreviewsPageLoadMetricsObserverTest); -}; - -TEST_F(PreviewsPageLoadMetricsObserverTest, NoActivePreview) { - base::test::ScopedFeatureList scoped_feature_list; - scoped_feature_list.InitAndEnableFeature( - previews::features::kNoScriptPreviews); - ResetTest(); - - NavigateAndCommitWithPreviewsState(blink::PreviewsTypes::PREVIEWS_OFF); - - auto resources = - GetSampleResourceDataUpdateForTesting(10 * 1024 /* resource_size */); - tester()->SimulateResourceDataUseUpdate(resources); - - tester()->SimulateTimingUpdate(timing_); - tester()->NavigateToUntrackedUrl(); - - ValidateTimingHistograms("NoScriptPreview", false /* preview_was_active */); - ValidateTimingHistograms("ResourceLoadingHintsPreview", - false /* preview_was_active */); - ValidateDataHistograms("NoScriptPreview", 0 /* network_resources */, - 0 /* network_bytes */); - ValidateDataHistograms("ResourceLoadingHintsPreview", - 0 /* network_resources */, 0 /* network_bytes */); -} - -TEST_F(PreviewsPageLoadMetricsObserverTest, NoScriptPreviewActive) { - base::test::ScopedFeatureList scoped_feature_list; - scoped_feature_list.InitAndEnableFeature( - previews::features::kNoScriptPreviews); - ResetTest(); - - NavigateAndCommitWithPreviewsState(blink::PreviewsTypes::NOSCRIPT_ON); - - auto resources = - GetSampleResourceDataUpdateForTesting(10 * 1024 /* resource_size */); - tester()->SimulateResourceDataUseUpdate(resources); - - tester()->SimulateTimingUpdate(timing_); - tester()->NavigateToUntrackedUrl(); - - ValidateTimingHistograms("NoScriptPreview", true /* preview_was_active */); - ValidateDataHistograms("NoScriptPreview", 1 /* network_resources */, - 20 * 1024 /* network_bytes */); -} - -TEST_F(PreviewsPageLoadMetricsObserverTest, ResourceLoadingHintsPreviewActive) { - base::test::ScopedFeatureList scoped_feature_list; - scoped_feature_list.InitAndEnableFeature( - previews::features::kResourceLoadingHints); - ResetTest(); - - NavigateAndCommitWithPreviewsState( - blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON); - - auto resources = - GetSampleResourceDataUpdateForTesting(10 * 1024 /* resource_size */); - tester()->SimulateResourceDataUseUpdate(resources); - - tester()->SimulateTimingUpdate(timing_); - tester()->NavigateToUntrackedUrl(); - - ValidateTimingHistograms("ResourceLoadingHintsPreview", - true /* preview_was_active */); - ValidateDataHistograms("ResourceLoadingHintsPreview", - 1 /* network_resources */, - 20 * 1024 /* network_bytes */); -} - -TEST_F(PreviewsPageLoadMetricsObserverTest, NoScriptDataSavings) { - int inflation = 50; - int constant_savings = 120; - base::test::ScopedFeatureList scoped_feature_list; - - std::map<std::string, std::string> parameters = { - {"NoScriptInflationPercent", base::NumberToString(inflation)}, - {"NoScriptInflationBytes", base::NumberToString(constant_savings)}}; - scoped_feature_list.InitAndEnableFeatureWithParameters( - previews::features::kNoScriptPreviews, parameters); - - ResetTest(); - - int64_t data_use = 0; - NavigateAndCommitWithPreviewsState(blink::PreviewsTypes::NOSCRIPT_ON); - std::vector<ResourceDataUpdatePtr> resources; - auto resource_data_update = ResourceDataUpdate::New(); - resource_data_update->delta_bytes = 5 * 1024; - resources.push_back(std::move(resource_data_update)); - tester()->SimulateResourceDataUseUpdate(resources); - data_use += (5 * 1024); - - resources.clear(); - - resource_data_update = ResourceDataUpdate::New(); - resource_data_update->delta_bytes = 20 * 1024; - resources.push_back(std::move(resource_data_update)); - tester()->SimulateResourceDataUseUpdate(resources); - data_use += (20 * 1024); - - tester()->SimulateTimingUpdate(timing_); - - int64_t expected_savings = (data_use * inflation) / 100 + constant_savings; - - EXPECT_EQ(GURL(kDefaultTestUrl), savings_url_); - EXPECT_EQ(expected_savings, bytes_savings_); -} - -TEST_F(PreviewsPageLoadMetricsObserverTest, ResourceLoadingHintsDataSavings) { - int inflation = 30; - int constant_savings = 300; - base::test::ScopedFeatureList scoped_feature_list; - - std::map<std::string, std::string> parameters = { - {"ResourceLoadingHintsInflationPercent", base::NumberToString(inflation)}, - {"ResourceLoadingHintsInflationBytes", - base::NumberToString(constant_savings)}}; - scoped_feature_list.InitAndEnableFeatureWithParameters( - previews::features::kResourceLoadingHints, parameters); - - ResetTest(); - - int64_t data_use = 0; - NavigateAndCommitWithPreviewsState( - blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON); - std::vector<ResourceDataUpdatePtr> resources; - auto resource_data_update = ResourceDataUpdate::New(); - resource_data_update->delta_bytes = 5 * 1024; - resources.push_back(std::move(resource_data_update)); - tester()->SimulateResourceDataUseUpdate(resources); - data_use += (5 * 1024); - - resources.clear(); - - resource_data_update = ResourceDataUpdate::New(); - resource_data_update->delta_bytes = 20 * 1024; - resources.push_back(std::move(resource_data_update)); - tester()->SimulateResourceDataUseUpdate(resources); - data_use += (20 * 1024); - - tester()->SimulateTimingUpdate(timing_); - - int64_t expected_savings = (data_use * inflation) / 100 + constant_savings; - - EXPECT_EQ(GURL(kDefaultTestUrl), savings_url_); - EXPECT_EQ(expected_savings, bytes_savings_); -} - -} // namespace - -} // namespace previews
diff --git a/chrome/browser/page_load_metrics/observers/previews_ukm_observer.cc b/chrome/browser/page_load_metrics/observers/previews_ukm_observer.cc index c6a98c0..72b96ff 100644 --- a/chrome/browser/page_load_metrics/observers/previews_ukm_observer.cc +++ b/chrome/browser/page_load_metrics/observers/previews_ukm_observer.cc
@@ -77,14 +77,6 @@ previews_likely_ = HasEnabledPreviews(previews_state); if (previews_state && previews::GetMainFramePreviewsType(previews_state) == - previews::PreviewsType::NOSCRIPT) { - noscript_seen_ = true; - } - if (previews_state && previews::GetMainFramePreviewsType(previews_state) == - previews::PreviewsType::RESOURCE_LOADING_HINTS) { - resource_loading_hints_seen_ = true; - } - if (previews_state && previews::GetMainFramePreviewsType(previews_state) == previews::PreviewsType::DEFER_ALL_SCRIPT) { defer_all_script_seen_ = true; } @@ -92,12 +84,6 @@ origin_opt_out_occurred_ = true; } - noscript_eligibility_reason_ = - previews_user_data->EligibilityReasonForPreview( - previews::PreviewsType::NOSCRIPT); - resource_loading_hints_eligibility_reason_ = - previews_user_data->EligibilityReasonForPreview( - previews::PreviewsType::RESOURCE_LOADING_HINTS); defer_all_script_eligibility_reason_ = previews_user_data->EligibilityReasonForPreview( previews::PreviewsType::DEFER_ALL_SCRIPT); @@ -152,17 +138,13 @@ page_load_metrics::PageEndReason::PAGE_END_REASON_COUNT); // Only record previews types when they are active. - if (!noscript_seen_ && !resource_loading_hints_seen_ && - !defer_all_script_seen_ && !origin_opt_out_occurred_ && + if (!defer_all_script_seen_ && !origin_opt_out_occurred_ && !save_data_enabled_) { return; } ukm::builders::Previews builder(GetDelegate().GetPageUkmSourceId()); - if (noscript_seen_) - builder.Setnoscript(1); - if (resource_loading_hints_seen_) - builder.Setresource_loading_hints(1); + if (defer_all_script_seen_) builder.Setdefer_all_script(1); // 2 is set here for legacy reasons as it denotes an optout through the @@ -176,15 +158,6 @@ if (previews_likely_) builder.Setpreviews_likely(1); - if (ShouldOptionalEligibilityReasonBeRecorded(noscript_eligibility_reason_)) { - builder.Setnoscript_eligibility_reason( - static_cast<int>(noscript_eligibility_reason_.value())); - } - if (ShouldOptionalEligibilityReasonBeRecorded( - resource_loading_hints_eligibility_reason_)) { - builder.Setresource_loading_hints_eligibility_reason( - static_cast<int>(resource_loading_hints_eligibility_reason_.value())); - } if (ShouldOptionalEligibilityReasonBeRecorded( defer_all_script_eligibility_reason_)) { builder.Setdefer_all_script_eligibility_reason(
diff --git a/chrome/browser/page_load_metrics/observers/previews_ukm_observer.h b/chrome/browser/page_load_metrics/observers/previews_ukm_observer.h index 649138f..06b11fcd 100644 --- a/chrome/browser/page_load_metrics/observers/previews_ukm_observer.h +++ b/chrome/browser/page_load_metrics/observers/previews_ukm_observer.h
@@ -53,18 +53,12 @@ // The preview type that was actually committed and seen by the user. PreviewsType committed_preview_; - bool noscript_seen_ = false; - bool resource_loading_hints_seen_ = false; bool defer_all_script_seen_ = false; bool opt_out_occurred_ = false; bool origin_opt_out_occurred_ = false; bool save_data_enabled_ = false; bool previews_likely_ = false; base::Optional<previews::PreviewsEligibilityReason> - noscript_eligibility_reason_; - base::Optional<previews::PreviewsEligibilityReason> - resource_loading_hints_eligibility_reason_; - base::Optional<previews::PreviewsEligibilityReason> defer_all_script_eligibility_reason_; SEQUENCE_CHECKER(sequence_checker_);
diff --git a/chrome/browser/page_load_metrics/observers/previews_ukm_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/previews_ukm_observer_unittest.cc index 8cd5684..2951ebd2 100644 --- a/chrome/browser/page_load_metrics/observers/previews_ukm_observer_unittest.cc +++ b/chrome/browser/page_load_metrics/observers/previews_ukm_observer_unittest.cc
@@ -148,12 +148,6 @@ // Collect the set of recorded previews into a PreviewsState bitmask to // compare against the expected previews. blink::PreviewsState recorded_previews = 0; - if (tester()->test_ukm_recorder().EntryHasMetric(entry, - UkmEntry::knoscriptName)) - recorded_previews |= blink::PreviewsTypes::NOSCRIPT_ON; - if (tester()->test_ukm_recorder().EntryHasMetric( - entry, UkmEntry::kresource_loading_hintsName)) - recorded_previews |= blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON; if (tester()->test_ukm_recorder().EntryHasMetric( entry, UkmEntry::kdefer_all_scriptName)) recorded_previews |= blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON; @@ -175,27 +169,6 @@ tester()->test_ukm_recorder().EntryHasMetric( entry, UkmEntry::kpreviews_likelyName)); - int want_noscript_eligibility_reason = - static_cast<int>(eligibility_reasons[PreviewsType::NOSCRIPT]); - if (want_noscript_eligibility_reason) { - tester()->test_ukm_recorder().ExpectEntryMetric( - entry, UkmEntry::knoscript_eligibility_reasonName, - want_noscript_eligibility_reason); - } else { - EXPECT_FALSE(tester()->test_ukm_recorder().EntryHasMetric( - entry, UkmEntry::knoscript_eligibility_reasonName)); - } - - int want_resource_loading_hints_eligibility_reason = static_cast<int>( - eligibility_reasons[PreviewsType::RESOURCE_LOADING_HINTS]); - if (want_resource_loading_hints_eligibility_reason) { - tester()->test_ukm_recorder().ExpectEntryMetric( - entry, UkmEntry::kresource_loading_hints_eligibility_reasonName, - want_resource_loading_hints_eligibility_reason); - } else { - EXPECT_FALSE(tester()->test_ukm_recorder().EntryHasMetric( - entry, UkmEntry::kresource_loading_hints_eligibility_reasonName)); - } } void SetUp() override { @@ -257,53 +230,6 @@ {} /* eligibility_reasons */); } -TEST_F(PreviewsUKMObserverTest, NoScriptOptOutChip) { - RunTest(blink::PreviewsTypes::NOSCRIPT_ON /* committed_state */, - blink::PreviewsTypes::PREVIEWS_UNSPECIFIED /* allowed_state */, - false /* origin_opt_out */, false /* save_data_enabled */, - {} /* eligibility_reasons */); - - tester()->metrics_web_contents_observer()->BroadcastEventToObservers( - PreviewsUITabHelper::OptOutEventKey()); - tester()->NavigateToUntrackedUrl(); - - ValidatePreviewsUKM(blink::PreviewsTypes::NOSCRIPT_ON, 2 /* opt_out_value */, - false /* origin_opt_out_expected */, - false /* save_data_enabled_expected */, - true /* previews_likely */, {} /* eligibility_reasons */); -} - -TEST_F(PreviewsUKMObserverTest, ResourceLoadingHintsSeen) { - RunTest(blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON /* committed_state */, - blink::PreviewsTypes::PREVIEWS_UNSPECIFIED /* allowed_state */, - false /* origin_opt_out */, false /* save_data_enabled */, - {} /* eligibility_reasons */); - - tester()->NavigateToUntrackedUrl(); - - ValidatePreviewsUKM(blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON, - 0 /* opt_out_value */, - false /* origin_opt_out_expected */, - false /* save_data_enabled_expected */, - true /* previews_likely */, {} /* eligibility_reasons */); -} - -TEST_F(PreviewsUKMObserverTest, ResourceLoadingHintsOptOutChip) { - RunTest(blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON /* committed_state */, - blink::PreviewsTypes::PREVIEWS_UNSPECIFIED /* allowed_state */, - false /* origin_opt_out */, false /* save_data_enabled */, - {} /* eligibility_reasons */); - - tester()->metrics_web_contents_observer()->BroadcastEventToObservers( - PreviewsUITabHelper::OptOutEventKey()); - tester()->NavigateToUntrackedUrl(); - - ValidatePreviewsUKM(blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON, - 2 /* opt_out_value */, - false /* origin_opt_out_expected */, - false /* save_data_enabled_expected */, - true /* previews_likely */, {} /* eligibility_reasons */); -} TEST_F(PreviewsUKMObserverTest, DeferAllScriptSeen) { RunTest(blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON /* committed_state */, @@ -369,7 +295,7 @@ TEST_F(PreviewsUKMObserverTest, PreviewsLikelyNotSet_PostCommitDecision) { RunTest(blink::PreviewsTypes::PREVIEWS_OFF /* committed_state */, - blink::PreviewsTypes::NOSCRIPT_ON /* allowed_state */, + blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON /* allowed_state */, false /* origin_opt_out */, true /* save_data_enabled */, {} /* eligibility_reasons */); @@ -448,7 +374,7 @@ RunTest(blink::PreviewsTypes::PREVIEWS_OFF /* committed_state */, blink::PreviewsTypes::PREVIEWS_UNSPECIFIED /* allowed_state */, false /* origin_opt_out */, true /* save_data_enabled */, - {{PreviewsType::NOSCRIPT, + {{PreviewsType::DEFER_ALL_SCRIPT, PreviewsEligibilityReason:: BLOCKLIST_DATA_NOT_LOADED}} /* eligibility_reasons */); @@ -458,7 +384,7 @@ blink::PreviewsTypes::PREVIEWS_UNSPECIFIED, 0 /* opt_out_value */, false /* origin_opt_out_expected */, true /* save_data_enabled_expected */, false /* previews_likely */, - {{PreviewsType::NOSCRIPT, + {{PreviewsType::DEFER_ALL_SCRIPT, PreviewsEligibilityReason:: BLOCKLIST_DATA_NOT_LOADED}} /* eligibility_reasons */); }
diff --git a/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc b/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc index e73e00b..11fab4e 100644 --- a/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc +++ b/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc
@@ -29,7 +29,6 @@ #include "chrome/browser/page_load_metrics/observers/optimization_guide_page_load_metrics_observer.h" #include "chrome/browser/page_load_metrics/observers/portal_page_load_metrics_observer.h" #include "chrome/browser/page_load_metrics/observers/prefetch_proxy_page_load_metrics_observer.h" -#include "chrome/browser/page_load_metrics/observers/previews_page_load_metrics_observer.h" #include "chrome/browser/page_load_metrics/observers/previews_ukm_observer.h" #include "chrome/browser/page_load_metrics/observers/protocol_page_load_metrics_observer.h" #include "chrome/browser/page_load_metrics/observers/scheme_page_load_metrics_observer.h" @@ -112,8 +111,6 @@ std::make_unique<MultiTabLoadingPageLoadMetricsObserver>()); tracker->AddObserver( std::make_unique<OptimizationGuidePageLoadMetricsObserver>()); - tracker->AddObserver( - std::make_unique<previews::PreviewsPageLoadMetricsObserver>()); tracker->AddObserver(std::make_unique<previews::PreviewsUKMObserver>()); tracker->AddObserver( std::make_unique<ServiceWorkerPageLoadMetricsObserver>());
diff --git a/chrome/browser/prefetch/search_prefetch/field_trial_settings.cc b/chrome/browser/prefetch/search_prefetch/field_trial_settings.cc index d1a9895e..02393c9 100644 --- a/chrome/browser/prefetch/search_prefetch/field_trial_settings.cc +++ b/chrome/browser/prefetch/search_prefetch/field_trial_settings.cc
@@ -7,6 +7,7 @@ #include <string> #include "base/command_line.h" +#include "base/system/sys_info.h" // Enables the feature completely with a few skipped checks to make local // testing easier. @@ -26,9 +27,19 @@ } bool SearchPrefetchServicePrefetchingIsEnabled() { - return base::CommandLine::ForCurrentProcess()->HasSwitch( - kSearchPrefetchServiceCommandLineFlag) || - base::FeatureList::IsEnabled(kSearchPrefetchServicePrefetching); + if (base::CommandLine::ForCurrentProcess()->HasSwitch( + kSearchPrefetchServiceCommandLineFlag)) { + return true; + } + + if (!base::FeatureList::IsEnabled(kSearchPrefetchServicePrefetching)) { + return false; + } + + return base::SysInfo::AmountOfPhysicalMemoryMB() > + base::GetFieldTrialParamByFeatureAsInt( + kSearchPrefetchServicePrefetching, "device_memory_threshold_MB", + 3000); } base::TimeDelta SearchPrefetchCachingLimit() {
diff --git a/chrome/browser/prefetch/search_prefetch/search_prefetch_service_browsertest.cc b/chrome/browser/prefetch/search_prefetch/search_prefetch_service_browsertest.cc index 68d1d19..2611411 100644 --- a/chrome/browser/prefetch/search_prefetch/search_prefetch_service_browsertest.cc +++ b/chrome/browser/prefetch/search_prefetch/search_prefetch_service_browsertest.cc
@@ -678,7 +678,8 @@ feature_list_.InitWithFeaturesAndParameters( {{kSearchPrefetchServicePrefetching, {{"stream_responses", GetParam() ? "true" : "false"}, - {"cache_size", "1"}}}, + {"cache_size", "1"}, + {"device_memory_threshold_MB", "0"}}}, {{kSearchPrefetchService}, {}}}, {}); } @@ -2217,7 +2218,8 @@ SearchPrefetchServiceZeroCacheTimeBrowserTest() { feature_list_.InitWithFeaturesAndParameters( {{kSearchPrefetchServicePrefetching, - {{"prefetch_caching_limit_ms", "10"}}}, + {{"prefetch_caching_limit_ms", "10"}, + {"device_memory_threshold_MB", "0"}}}, {{kSearchPrefetchService}, {}}}, {}); @@ -2290,7 +2292,8 @@ SearchPrefetchServiceZeroErrorTimeBrowserTest() { feature_list_.InitWithFeaturesAndParameters( {{kSearchPrefetchServicePrefetching, - {{"error_backoff_duration_ms", "10"}}}, + {{"error_backoff_duration_ms", "10"}, + {"device_memory_threshold_MB", "0"}}}, {{kSearchPrefetchService}, {}}}, {}); } @@ -2333,7 +2336,8 @@ SearchPrefetchServiceDefaultMatchOnlyBrowserTest() { feature_list_.InitWithFeaturesAndParameters( {{kSearchPrefetchServicePrefetching, - {{"only_prefetch_default_match", "true"}}}, + {{"only_prefetch_default_match", "true"}, + {"device_memory_threshold_MB", "0"}}}, {{kSearchPrefetchService}, {}}}, {}); } @@ -2384,6 +2388,39 @@ EXPECT_FALSE(base::Contains(inner_html, "prefetch")); } +class SearchPrefetchServiceLowMemoryDeviceBrowserTest + : public SearchPrefetchBaseBrowserTest { + public: + SearchPrefetchServiceLowMemoryDeviceBrowserTest() { + feature_list_.InitWithFeaturesAndParameters( + {{kSearchPrefetchServicePrefetching, + {{"device_memory_threshold_MB", "2000000000"}}}, + {{kSearchPrefetchService}, {}}}, + {}); + } + + private: + base::test::ScopedFeatureList feature_list_; +}; + +IN_PROC_BROWSER_TEST_F(SearchPrefetchServiceLowMemoryDeviceBrowserTest, + NoFetchWhenLowMemoryDevice) { + auto* search_prefetch_service = + SearchPrefetchServiceFactory::GetForProfile(browser()->profile()); + EXPECT_NE(nullptr, search_prefetch_service); + + std::string search_terms = "prefetch_content"; + + GURL prefetch_url = GetSearchServerQueryURL(search_terms); + + EXPECT_FALSE(search_prefetch_service->MaybePrefetchURL(prefetch_url)); + auto prefetch_status = + search_prefetch_service->GetSearchPrefetchStatusForTesting( + base::ASCIIToUTF16(search_terms)); + + EXPECT_FALSE(prefetch_status.has_value()); +} + class GooglePFTest : public InProcessBrowserTest { public: GooglePFTest() = default;
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc index 53bfc1e01..8f63cb5 100644 --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc
@@ -414,8 +414,6 @@ // Deprecated 9/2019 const char kGoogleServicesUsername[] = "google.services.username"; const char kGoogleServicesUserAccountId[] = "google.services.user_account_id"; -const char kDataReductionProxySavingsClearedNegativeSystemClock[] = - "data_reduction.savings_cleared_negative_system_clock"; const char kDataReductionNetworkProperties[] = "data_reduction.network_properties"; @@ -569,8 +567,6 @@ user_prefs::PrefRegistrySyncable* registry) { registry->RegisterStringPref(kGoogleServicesUsername, std::string()); registry->RegisterStringPref(kGoogleServicesUserAccountId, std::string()); - registry->RegisterInt64Pref( - kDataReductionProxySavingsClearedNegativeSystemClock, 0); registry->RegisterDictionaryPref(kDataReductionNetworkProperties); #if BUILDFLAG(IS_CHROMEOS_ASH) @@ -1201,8 +1197,6 @@ // Added 9/2019 profile_prefs->ClearPref(kGoogleServicesUsername); profile_prefs->ClearPref(kGoogleServicesUserAccountId); - profile_prefs->ClearPref( - kDataReductionProxySavingsClearedNegativeSystemClock); #if BUILDFLAG(IS_CHROMEOS_ASH) // Added 10/2019.
diff --git a/chrome/browser/prefs/pref_service_incognito_allowlist.cc b/chrome/browser/prefs/pref_service_incognito_allowlist.cc index 9369459..449610c2 100644 --- a/chrome/browser/prefs/pref_service_incognito_allowlist.cc +++ b/chrome/browser/prefs/pref_service_incognito_allowlist.cc
@@ -57,9 +57,9 @@ ash::prefs::kAccessibilityFocusHighlightEnabled, ash::prefs::kAccessibilitySelectToSpeakEnabled, ash::prefs::kAccessibilitySwitchAccessEnabled, - ash::prefs::kAccessibilitySwitchAccessSelectKeyCodes, - ash::prefs::kAccessibilitySwitchAccessNextKeyCodes, - ash::prefs::kAccessibilitySwitchAccessPreviousKeyCodes, + ash::prefs::kAccessibilitySwitchAccessSelectDeviceKeyCodes, + ash::prefs::kAccessibilitySwitchAccessNextDeviceKeyCodes, + ash::prefs::kAccessibilitySwitchAccessPreviousDeviceKeyCodes, ash::prefs::kAccessibilitySwitchAccessAutoScanEnabled, ash::prefs::kAccessibilitySwitchAccessAutoScanSpeedMs, ash::prefs::kAccessibilitySwitchAccessAutoScanKeyboardSpeedMs,
diff --git a/chrome/browser/previews/defer_all_script_browsertest.cc b/chrome/browser/previews/defer_all_script_browsertest.cc index 1581a46..ddc17db 100644 --- a/chrome/browser/previews/defer_all_script_browsertest.cc +++ b/chrome/browser/previews/defer_all_script_browsertest.cc
@@ -34,6 +34,7 @@ #include "components/optimization_guide/optimization_guide_service.h" #include "components/optimization_guide/proto/hints.pb.h" #include "components/optimization_guide/test_hints_component_creator.h" +#include "components/prefs/pref_service.h" #include "components/previews/core/previews_block_list.h" #include "components/previews/core/previews_features.h" #include "components/previews/core/previews_switches.h" @@ -154,6 +155,15 @@ LoadHintsForUrl(hint_setup_url); } + void SetDataSaverEnabled(content::BrowserContext* browser_context, + bool enabled) { + Profile* profile = Profile::FromBrowserContext(browser_context); + + data_reduction_proxy::DataReductionProxySettings:: + SetDataSaverEnabledForTesting(profile->GetPrefs(), enabled); + base::RunLoop().RunUntilIdle(); + } + content::WebContents* web_contents() const { return browser()->tab_strip_model()->GetActiveWebContents(); } @@ -382,6 +392,48 @@ histogram_tester.ExpectTotalCount("Previews.PageEndReason.DeferAllScript", 0); } +IN_PROC_BROWSER_TEST_F(DeferAllScriptBrowserTest, + DISABLE_ON_WIN_MAC_CHROMEOS(DisableDataSaver)) { + GURL url = https_url(); + + // Allow DeferAllScript for any path for the url's host. + SetDeferAllScriptHintWithPageWithPattern(url, "*"); + + base::HistogramTester histogram_tester; + + // Set query to ensure that it's not treated as a reload as preview metrics + // are not recorded for reloads. + ui_test_utils::NavigateToURL(browser(), SetQuery(url, "foo")); + RetryForHistogramUntilCountReached( + &histogram_tester, "PageLoad.DocumentTiming.NavigationToLoadEventFired", + 1); + EXPECT_EQ(kDeferredPageExpectedOutput, GetScriptLog(browser())); + histogram_tester.ExpectBucketCount( + "Previews.EligibilityReason.DeferAllScript", + static_cast<int>(previews::PreviewsEligibilityReason::COMMITTED), 1); + + // Load another webpage. Previews should be triggerd. + ui_test_utils::NavigateToURL(browser(), SetQuery(url, "bar")); + RetryForHistogramUntilCountReached( + &histogram_tester, "PageLoad.DocumentTiming.NavigationToLoadEventFired", + 2); + EXPECT_EQ(kDeferredPageExpectedOutput, GetScriptLog(browser())); + histogram_tester.ExpectBucketCount( + "Previews.EligibilityReason.DeferAllScript", + static_cast<int>(previews::PreviewsEligibilityReason::COMMITTED), 2); + + // Load another webpage with data saver disabled. Previews should not trigger. + SetDataSaverEnabled(browser()->profile(), false); + ui_test_utils::NavigateToURL(browser(), SetQuery(url, "baz")); + RetryForHistogramUntilCountReached( + &histogram_tester, "PageLoad.DocumentTiming.NavigationToLoadEventFired", + 3); + EXPECT_EQ(kNonDeferredPageExpectedOutput, GetScriptLog(browser())); + histogram_tester.ExpectBucketCount( + "Previews.EligibilityReason.DeferAllScript", + static_cast<int>(previews::PreviewsEligibilityReason::COMMITTED), 2); +} + class DeferAllScriptBrowserTestWithCoinFlipHoldback : public DeferAllScriptBrowserTest { public: @@ -391,7 +443,7 @@ feature_list_.InitWithFeaturesAndParameters( {{previews::features::kCoinFlipHoldback, {{"force_coin_flip_always_holdback", "true"}}}}, - {previews::features::kOfflinePreviews}); + {}); } private:
diff --git a/chrome/browser/previews/previews_browsertest.cc b/chrome/browser/previews/previews_browsertest.cc deleted file mode 100644 index 5404a4a..0000000 --- a/chrome/browser/previews/previews_browsertest.cc +++ /dev/null
@@ -1,366 +0,0 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "base/bind.h" -#include "base/command_line.h" -#include "base/metrics/field_trial_param_associator.h" -#include "base/metrics/field_trial_params.h" -#include "base/run_loop.h" -#include "base/test/metrics/histogram_tester.h" -#include "base/test/scoped_feature_list.h" -#include "build/build_config.h" -#include "chrome/browser/browser_process.h" -#include "chrome/browser/optimization_guide/optimization_guide_keyed_service.h" -#include "chrome/browser/optimization_guide/optimization_guide_keyed_service_factory.h" -#include "chrome/browser/previews/previews_service_factory.h" -#include "chrome/browser/previews/previews_test_util.h" -#include "chrome/browser/previews/previews_ui_tab_helper.h" -#include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/browser.h" -#include "chrome/test/base/in_process_browser_test.h" -#include "chrome/test/base/ui_test_utils.h" -#include "components/data_reduction_proxy/core/common/data_reduction_proxy_features.h" -#include "components/optimization_guide/hints_component_info.h" -#include "components/optimization_guide/hints_component_util.h" -#include "components/optimization_guide/optimization_guide_constants.h" -#include "components/optimization_guide/optimization_guide_features.h" -#include "components/optimization_guide/optimization_guide_service.h" -#include "components/optimization_guide/proto/hints.pb.h" -#include "components/optimization_guide/proto/models.pb.h" -#include "components/optimization_guide/test_hints_component_creator.h" -#include "components/previews/core/previews_features.h" -#include "components/previews/core/previews_switches.h" -#include "content/public/browser/browser_task_traits.h" -#include "content/public/browser/browser_thread.h" -#include "content/public/test/browser_test.h" -#include "content/public/test/browser_test_utils.h" -#include "net/dns/mock_host_resolver.h" -#include "net/test/embedded_test_server/embedded_test_server.h" -#include "net/test/embedded_test_server/http_request.h" -#include "net/test/embedded_test_server/http_response.h" -#include "services/network/public/cpp/network_quality_tracker.h" - -class PreviewsBrowserTest : public InProcessBrowserTest { - public: - PreviewsBrowserTest() = default; - - ~PreviewsBrowserTest() override = default; - - void SetUpOnMainThread() override { - // Set up https server with resource monitor. - https_server_.reset( - new net::EmbeddedTestServer(net::EmbeddedTestServer::TYPE_HTTPS)); - https_server_->ServeFilesFromSourceDirectory("chrome/test/data/previews"); - https_server_->RegisterRequestMonitor(base::BindRepeating( - &PreviewsBrowserTest::MonitorResourceRequest, base::Unretained(this))); - ASSERT_TRUE(https_server_->Start()); - - https_url_ = https_server_->GetURL("/noscript_test.html"); - ASSERT_TRUE(https_url_.SchemeIs(url::kHttpsScheme)); - - https_no_transform_url_ = - https_server_->GetURL("/noscript_test_with_no_transform_header.html"); - ASSERT_TRUE(https_no_transform_url_.SchemeIs(url::kHttpsScheme)); - - https_hint_setup_url_ = https_server_->GetURL("/hint_setup.html"); - ASSERT_TRUE(https_hint_setup_url_.SchemeIs(url::kHttpsScheme)); - ASSERT_EQ(https_hint_setup_url_.host(), https_url_.host()); - - // Set up http server with resource monitor and redirect handler. - http_server_ = std::make_unique<net::EmbeddedTestServer>( - net::EmbeddedTestServer::TYPE_HTTP); - http_server_->ServeFilesFromSourceDirectory("chrome/test/data/previews"); - http_server_->RegisterRequestMonitor(base::BindRepeating( - &PreviewsBrowserTest::MonitorResourceRequest, base::Unretained(this))); - http_server_->RegisterRequestHandler(base::BindRepeating( - &PreviewsBrowserTest::HandleRedirectRequest, base::Unretained(this))); - ASSERT_TRUE(http_server_->Start()); - - http_url_ = http_server_->GetURL("/noscript_test.html"); - ASSERT_TRUE(http_url_.SchemeIs(url::kHttpScheme)); - - redirect_url_ = http_server_->GetURL("/redirect.html"); - ASSERT_TRUE(redirect_url_.SchemeIs(url::kHttpScheme)); - - http_hint_setup_url_ = http_server_->GetURL("/hint_setup.html"); - ASSERT_TRUE(http_hint_setup_url_.SchemeIs(url::kHttpScheme)); - ASSERT_EQ(http_hint_setup_url_.host(), http_url_.host()); - } - - void SetUpCommandLine(base::CommandLine* cmd) override { - cmd->AppendSwitch("enable-spdy-proxy-auth"); - // Due to race conditions, it's possible that blocklist data is not loaded - // at the time of first navigation. That may prevent Preview from - // triggering, and causing the test to flake. - cmd->AppendSwitch(previews::switches::kIgnorePreviewsBlocklist); - } - - const GURL& https_url() const { return https_url_; } - const GURL& https_no_transform_url() const { return https_no_transform_url_; } - const GURL& https_hint_setup_url() const { return https_hint_setup_url_; } - const GURL& http_url() const { return http_url_; } - const GURL& redirect_url() const { return redirect_url_; } - const GURL& http_hint_setup_url() const { return http_hint_setup_url_; } - - bool noscript_css_requested() const { - DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - return noscript_css_requested_; - } - bool noscript_js_requested() const { - DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - return noscript_js_requested_; - } - - private: - void TearDownOnMainThread() override { - EXPECT_TRUE(https_server_->ShutdownAndWaitUntilComplete()); - EXPECT_TRUE(http_server_->ShutdownAndWaitUntilComplete()); - - InProcessBrowserTest::TearDownOnMainThread(); - } - - // Called by |https_server_|. - void MonitorResourceRequest(const net::test_server::HttpRequest& request) { - // This method is called on embedded test server thread. Post the - // information on UI thread. - content::GetUIThreadTaskRunner({})->PostTask( - FROM_HERE, - base::BindOnce(&PreviewsBrowserTest::MonitorResourceRequestOnUIThread, - base::Unretained(this), request)); - } - - void MonitorResourceRequestOnUIThread( - const net::test_server::HttpRequest& request) { - DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - if (request.GetURL().spec().find("noscript_test.css") != - std::string::npos) { - noscript_css_requested_ = true; - } - if (request.GetURL().spec().find("noscript_test.js") != std::string::npos) { - noscript_js_requested_ = true; - } - } - - std::unique_ptr<net::test_server::HttpResponse> HandleRedirectRequest( - const net::test_server::HttpRequest& request) { - std::unique_ptr<net::test_server::BasicHttpResponse> response; - if (request.GetURL().spec().find("redirect") != std::string::npos) { - response.reset(new net::test_server::BasicHttpResponse); - response->set_code(net::HTTP_FOUND); - response->AddCustomHeader("Location", https_url().spec()); - } - return std::move(response); - } - - std::unique_ptr<net::EmbeddedTestServer> https_server_; - std::unique_ptr<net::EmbeddedTestServer> http_server_; - GURL https_url_; - GURL https_no_transform_url_; - GURL https_hint_setup_url_; - GURL http_url_; - GURL redirect_url_; - GURL http_hint_setup_url_; - - // Should be accessed only on UI thread. - bool noscript_css_requested_ = false; - bool noscript_js_requested_ = false; - - DISALLOW_COPY_AND_ASSIGN(PreviewsBrowserTest); -}; - -// Loads a webpage that has both script and noscript tags and also requests -// a script resource. Verifies that the noscript tag is not evaluated and the -// script resource is loaded. -IN_PROC_BROWSER_TEST_F(PreviewsBrowserTest, NoScriptPreviewsDisabled) { - base::HistogramTester histogram_tester; - ui_test_utils::NavigateToURL(browser(), https_url()); - - // Verify loaded js resource but not css triggered by noscript tag. - EXPECT_TRUE(noscript_js_requested()); - EXPECT_FALSE(noscript_css_requested()); - - // Verify info bar not presented via histogram check. - histogram_tester.ExpectTotalCount("Previews.PreviewShown.NoScript", 0); -} - -// This test class enables NoScriptPreviews and with OptimizationHints. -class PreviewsNoScriptBrowserTest : public ::testing::WithParamInterface<bool>, - public PreviewsBrowserTest { - public: - PreviewsNoScriptBrowserTest() {} - - ~PreviewsNoScriptBrowserTest() override {} - - void SetUp() override { - scoped_feature_list_.InitWithFeaturesAndParameters( - { - {previews::features::kPreviews, - {{"override_should_show_preview_check", - GetParam() ? "true" : "false"}}}, - {optimization_guide::features::kOptimizationHints, {}}, - {previews::features::kNoScriptPreviews, {}}, - }, - {}); - PreviewsBrowserTest::SetUp(); - } - - void SetUpOnMainThread() override { - OptimizationGuideKeyedServiceFactory::GetForProfile(browser()->profile()) - ->OverrideTargetDecisionForTesting( - optimization_guide::proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD, - optimization_guide::OptimizationGuideDecision::kTrue); - PreviewsBrowserTest::SetUpOnMainThread(); - } - - void SetUpCommandLine(base::CommandLine* cmd) override { - cmd->AppendSwitch("enable-spdy-proxy-auth"); - cmd->AppendSwitch("optimization-guide-disable-installer"); - cmd->AppendSwitch("purge_hint_cache_store"); - cmd->AppendSwitch(previews::switches::kIgnorePreviewsBlocklist); - } - - // Creates hint data for the |hint_setup_url|'s host and then performs a - // navigation to |hint_setup_url| to trigger the hints to be loaded into the - // hint cache so they will be available for a subsequent navigation to a test - // url to the same host. - void SetUpNoScriptWhitelist(const GURL& hint_setup_url) { - const optimization_guide::HintsComponentInfo& component_info = - test_hints_component_creator_.CreateHintsComponentInfoWithPageHints( - optimization_guide::proto::NOSCRIPT, {hint_setup_url.host()}, "*"); - - base::HistogramTester histogram_tester; - - g_browser_process->optimization_guide_service()->MaybeUpdateHintsComponent( - component_info); - - RetryForHistogramUntilCountReached( - &histogram_tester, - optimization_guide::kComponentHintsUpdatedResultHistogramString, 1); - - // Navigate to |hint_setup_url| to prime the OptimizationGuide hints for the - // url's host and ensure that they have been loaded from the store (via - // histogram) prior to the navigation that tests functionality. - ui_test_utils::NavigateToURL(browser(), hint_setup_url); - - RetryForHistogramUntilCountReached( - &histogram_tester, optimization_guide::kLoadedHintLocalHistogramString, - 1); - } - - // Returns whether the ShouldShowPreview check should have been overridden for - // the test case. - bool ShouldOverrideShouldShowPreviewCheck() const { return GetParam(); } - - private: - base::test::ScopedFeatureList scoped_feature_list_; - optimization_guide::testing::TestHintsComponentCreator - test_hints_component_creator_; -}; - -INSTANTIATE_TEST_SUITE_P(ShouldSkipPreview, - PreviewsNoScriptBrowserTest, - ::testing::Bool()); - - - - -IN_PROC_BROWSER_TEST_P(PreviewsNoScriptBrowserTest, - DISABLE_ON_WIN_MAC_CHROMEOS( - NoScriptPreviewsEnabledButNoTransformDirective)) { - GURL url = https_no_transform_url(); - - // Whitelist NoScript for https_hint_setup_url()'s' host. - SetUpNoScriptWhitelist(https_hint_setup_url()); - - base::HistogramTester histogram_tester; - ui_test_utils::NavigateToURL(browser(), url); - - // Verify loaded js resource but not css triggered by noscript tag. - EXPECT_TRUE(noscript_js_requested()); - EXPECT_FALSE(noscript_css_requested()); - - histogram_tester.ExpectUniqueSample( - "Previews.CacheControlNoTransform.BlockedPreview", 5 /* NoScript */, 1); -} - - - -IN_PROC_BROWSER_TEST_P( - PreviewsNoScriptBrowserTest, - DISABLE_ON_WIN_MAC_CHROMEOS(NoScriptPreviewsNotEnabledByWhitelist)) { - GURL url = https_url(); - - // Whitelist random site for NoScript. - SetUpNoScriptWhitelist(GURL("https://foo.com")); - - ui_test_utils::NavigateToURL(browser(), url); - - // Verify loaded js resource but not css triggered by noscript tag. - EXPECT_TRUE(noscript_js_requested()); - EXPECT_FALSE(noscript_css_requested()); -} - -IN_PROC_BROWSER_TEST_P(PreviewsNoScriptBrowserTest, - DISABLE_ON_WIN_MAC_CHROMEOS( - NoScriptPreviewsEnabledShouldSkipPreviewCheck)) { - // Override the decision to |kFalse| so that the Preview should not be shown - // in the regular case. - OptimizationGuideKeyedServiceFactory::GetForProfile(browser()->profile()) - ->OverrideTargetDecisionForTesting( - optimization_guide::proto::OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD, - optimization_guide::OptimizationGuideDecision::kFalse); - - GURL url = https_url(); - - // Whitelist NoScript for https_hint_setup_url()'s' host. - SetUpNoScriptWhitelist(https_hint_setup_url()); - - base::HistogramTester histogram_tester; - ui_test_utils::NavigateToURL(browser(), url); - - if (ShouldOverrideShouldShowPreviewCheck()) { - // Verify loaded noscript tag triggered css resource but not js one. - EXPECT_TRUE(noscript_css_requested()); - EXPECT_FALSE(noscript_js_requested()); - - // Verify info bar presented via histogram check. - RetryForHistogramUntilCountReached(&histogram_tester, - "Previews.PreviewShown.NoScript", 1); - } else { - // Verify loaded js resource but not css triggered by noscript tag. - EXPECT_TRUE(noscript_js_requested()); - EXPECT_FALSE(noscript_css_requested()); - } -} - -// This test class disables DataSaver. -class PreviewsDataSaverDisabledBrowserTest - : public PreviewsNoScriptBrowserTest { - public: - PreviewsDataSaverDisabledBrowserTest() = default; - - ~PreviewsDataSaverDisabledBrowserTest() override = default; - - void SetUpCommandLine(base::CommandLine* cmd) override { - PreviewsNoScriptBrowserTest::SetUpCommandLine(cmd); - cmd->RemoveSwitch("enable-spdy-proxy-auth"); - } -}; - -INSTANTIATE_TEST_SUITE_P(ShouldDisablePreview, - PreviewsDataSaverDisabledBrowserTest, - ::testing::Bool()); - -IN_PROC_BROWSER_TEST_P(PreviewsDataSaverDisabledBrowserTest, - NoPreviewWithDataSaverDisabled) { - base::HistogramTester histogram_tester; - ui_test_utils::NavigateToURL(browser(), https_url()); - - // Verify loaded noscript tag triggered js file and not css file. - EXPECT_TRUE(noscript_js_requested()); - EXPECT_FALSE(noscript_css_requested()); - - histogram_tester.ExpectTotalCount("OptimizationGuide.ApplyDecision.NoScript", - 0); -}
diff --git a/chrome/browser/previews/previews_content_util.cc b/chrome/browser/previews/previews_content_util.cc index 0354525..ca19b01 100644 --- a/chrome/browser/previews/previews_content_util.cc +++ b/chrome/browser/previews/previews_content_util.cc
@@ -93,24 +93,10 @@ } // Check commit-time preview types first. - bool allow_commit_time_previews = false; if (previews_decider->ShouldAllowPreviewAtNavigationStart( previews_data, navigation_handle, is_reload, previews::PreviewsType::DEFER_ALL_SCRIPT)) { previews_state |= blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON; - allow_commit_time_previews = true; - } - if (previews_decider->ShouldAllowPreviewAtNavigationStart( - previews_data, navigation_handle, is_reload, - previews::PreviewsType::RESOURCE_LOADING_HINTS)) { - previews_state |= blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON; - allow_commit_time_previews = true; - } - if (previews_decider->ShouldAllowPreviewAtNavigationStart( - previews_data, navigation_handle, is_reload, - previews::PreviewsType::NOSCRIPT)) { - previews_state |= blink::PreviewsTypes::NOSCRIPT_ON; - allow_commit_time_previews = true; } return previews_state; @@ -255,34 +241,6 @@ previews_state & ~blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON; } - if (previews_state & blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON) { - // Resource loading hints was chosen for the original URL but only continue - // with it if the committed URL has HTTPS scheme and is allowed by decider. - if (previews_decider && - previews_decider->ShouldCommitPreview( - previews_data, navigation_handle, - previews::PreviewsType::RESOURCE_LOADING_HINTS)) { - return blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON; - } - // Remove RESOURCE_LOADING_HINTS_ON from |previews_state| since we decided - // not to commit to it. - previews_state = - previews_state & ~blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON; - } - - if (previews_state & blink::PreviewsTypes::NOSCRIPT_ON) { - // NoScript was chosen for the original URL but only continue with it - // if the committed URL has HTTPS scheme and is allowed by decider. - if (previews_decider && previews_decider->ShouldCommitPreview( - previews_data, navigation_handle, - previews::PreviewsType::NOSCRIPT)) { - return blink::PreviewsTypes::NOSCRIPT_ON; - } - // Remove NOSCRIPT_ON from |previews_state| since we decided not to - // commit to it. - previews_state = previews_state & ~blink::PreviewsTypes::NOSCRIPT_ON; - } - if (!previews_state) { return blink::PreviewsTypes::PREVIEWS_OFF; } @@ -327,14 +285,9 @@ // The order is important here. if (previews_state & blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON) return previews::PreviewsType::DEFER_ALL_SCRIPT; - if (previews_state & blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON) - return previews::PreviewsType::RESOURCE_LOADING_HINTS; - if (previews_state & blink::PreviewsTypes::NOSCRIPT_ON) - return previews::PreviewsType::NOSCRIPT; DCHECK_EQ(blink::PreviewsTypes::PREVIEWS_UNSPECIFIED, - previews_state & ~blink::PreviewsTypes::CLIENT_LOFI_AUTO_RELOAD & - ~blink::PreviewsTypes::PREVIEWS_NO_TRANSFORM & + previews_state & ~blink::PreviewsTypes::PREVIEWS_NO_TRANSFORM & ~blink::PreviewsTypes::PREVIEWS_OFF); return previews::PreviewsType::NONE; }
diff --git a/chrome/browser/previews/previews_content_util_unittest.cc b/chrome/browser/previews/previews_content_util_unittest.cc index bc70665..65dba0e4 100644 --- a/chrome/browser/previews/previews_content_util_unittest.cc +++ b/chrome/browser/previews/previews_content_util_unittest.cc
@@ -92,9 +92,9 @@ case previews::PreviewsType::DEPRECATED_AMP_REDIRECTION: return false; case previews::PreviewsType::NOSCRIPT: - return params::IsNoScriptPreviewsEnabled(); + return false; case previews::PreviewsType::RESOURCE_LOADING_HINTS: - return params::IsResourceLoadingHintsEnabled(); + return false; case previews::PreviewsType::DEPRECATED_LITE_PAGE_REDIRECT: return false; case previews::PreviewsType::DEFER_ALL_SCRIPT: @@ -158,9 +158,7 @@ bool is_reload = false; bool previews_triggering_logic_already_ran = false; bool is_data_saver_user = true; - EXPECT_EQ(blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON | - blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON | - blink::PreviewsTypes::NOSCRIPT_ON, + EXPECT_EQ(blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON, previews::CallDetermineAllowedClientPreviewsState( &user_data, GURL("http://www.google.com"), is_reload, previews_triggering_logic_already_ran, is_data_saver_user, @@ -199,33 +197,10 @@ } TEST_F(PreviewsContentUtilTest, - DetermineAllowedClientPreviewsStateResourceLoadingHints) { - base::test::ScopedFeatureList scoped_feature_list; - scoped_feature_list.InitFromCommandLine("Previews,ResourceLoadingHints", - std::string()); - PreviewsUserData user_data(1); - bool is_reload = false; - bool previews_triggering_logic_already_ran = false; - bool is_data_saver_user = true; - EXPECT_LT(0, - blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON & - previews::CallDetermineAllowedClientPreviewsState( - &user_data, GURL("https://www.google.com"), is_reload, - previews_triggering_logic_already_ran, is_data_saver_user, - enabled_previews_decider(), nullptr)); - EXPECT_LT(0, - blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON & - previews::CallDetermineAllowedClientPreviewsState( - &user_data, GURL("http://www.google.com"), is_reload, - previews_triggering_logic_already_ran, is_data_saver_user, - enabled_previews_decider(), nullptr)); -} - -TEST_F(PreviewsContentUtilTest, DetermineAllowedClientPreviewsStateAndPageHintPreviews) { base::test::ScopedFeatureList scoped_feature_list; - scoped_feature_list.InitFromCommandLine( - "Previews,ResourceLoadingHints,NoScriptPreviews", std::string()); + scoped_feature_list.InitFromCommandLine("Previews,DeferAllScript", + std::string()); PreviewsUserData user_data(1); bool is_reload = false; @@ -236,16 +211,14 @@ &user_data, GURL("https://www.google.com"), is_reload, previews_triggering_logic_already_ran, is_data_saver_user, enabled_previews_decider(), nullptr); - EXPECT_TRUE(ps1 & blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON); - EXPECT_TRUE(ps1 & blink::PreviewsTypes::NOSCRIPT_ON); + EXPECT_TRUE(ps1 & blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON); // Verify only page hint client previews enabled with known page hints. blink::PreviewsState ps2 = previews::CallDetermineAllowedClientPreviewsState( &user_data, GURL("https://www.hintcachedhost.com"), is_reload, previews_triggering_logic_already_ran, is_data_saver_user, enabled_previews_decider(), nullptr); - EXPECT_TRUE(ps2 & blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON); - EXPECT_TRUE(ps2 & blink::PreviewsTypes::NOSCRIPT_ON); + EXPECT_TRUE(ps2 & blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON); } TEST_F(PreviewsContentUtilTest, DetermineCommittedClientPreviewsState) { @@ -260,25 +233,8 @@ EXPECT_EQ(blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON, previews::DetermineCommittedClientPreviewsState( &user_data, GURL("https://www.google.com"), - blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON | - blink::PreviewsTypes::NOSCRIPT_ON | - blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON, + blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON, enabled_previews_decider(), nullptr)); - - // RESOURCE_LOADING_HINTS has precedence over NoScript. - EXPECT_EQ(blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON, - previews::DetermineCommittedClientPreviewsState( - &user_data, GURL("https://www.google.com"), - blink::PreviewsTypes::NOSCRIPT_ON | - blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON, - enabled_previews_decider(), nullptr)); - - // Only NoScript: - EXPECT_EQ(blink::PreviewsTypes::NOSCRIPT_ON, - previews::DetermineCommittedClientPreviewsState( - &user_data, GURL("https://www.google.com"), - blink::PreviewsTypes::NOSCRIPT_ON, enabled_previews_decider(), - nullptr)); } TEST_F(PreviewsContentUtilTest, DetermineCommittedClientPreviewsStateForHttp) { @@ -293,45 +249,25 @@ EXPECT_EQ(blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON, previews::DetermineCommittedClientPreviewsState( &user_data, GURL("http://www.google.com"), - blink::PreviewsTypes::NOSCRIPT_ON | - blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON | - blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON, + blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON, enabled_previews_decider(), nullptr)); - - EXPECT_EQ(blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON, - previews::DetermineCommittedClientPreviewsState( - &user_data, GURL("http://www.google.com"), - blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON, - enabled_previews_decider(), nullptr)); - - EXPECT_EQ(blink::PreviewsTypes::NOSCRIPT_ON, - previews::DetermineCommittedClientPreviewsState( - &user_data, GURL("http://www.google.com"), - blink::PreviewsTypes::NOSCRIPT_ON, enabled_previews_decider(), - nullptr)); } TEST_F(PreviewsContentUtilTest, - DetermineCommittedClientPreviewsStateNoScriptCheckIfStillAllowed) { + DetermineCommittedClientPreviewsStateDeferAllScriptCheckIfStillAllowed) { base::test::ScopedFeatureList scoped_feature_list; - scoped_feature_list.InitFromCommandLine("Previews", "NoScriptPreviews"); + scoped_feature_list.InitFromCommandLine("Previews", "DeferAllScript"); PreviewsUserData user_data(1); // NoScript not allowed at commit time so no previews chosen: EXPECT_EQ(blink::PreviewsTypes::PREVIEWS_OFF, previews::DetermineCommittedClientPreviewsState( &user_data, GURL("https://www.google.com"), - blink::PreviewsTypes::NOSCRIPT_ON, enabled_previews_decider(), - nullptr)); + blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON, + enabled_previews_decider(), nullptr)); } TEST_F(PreviewsContentUtilTest, GetMainFramePreviewsType) { // Simple cases: - EXPECT_EQ( - previews::PreviewsType::NOSCRIPT, - previews::GetMainFramePreviewsType(blink::PreviewsTypes::NOSCRIPT_ON)); - EXPECT_EQ(previews::PreviewsType::RESOURCE_LOADING_HINTS, - previews::GetMainFramePreviewsType( - blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON)); EXPECT_EQ(previews::PreviewsType::DEFER_ALL_SCRIPT, previews::GetMainFramePreviewsType( blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON)); @@ -345,17 +281,8 @@ blink::PreviewsTypes::PREVIEWS_NO_TRANSFORM)); // Precedence cases when server preview is not available: - EXPECT_EQ( - previews::PreviewsType::NOSCRIPT, - previews::GetMainFramePreviewsType(blink::PreviewsTypes::NOSCRIPT_ON)); - EXPECT_EQ(previews::PreviewsType::RESOURCE_LOADING_HINTS, - previews::GetMainFramePreviewsType( - blink::PreviewsTypes::NOSCRIPT_ON | - blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON)); EXPECT_EQ(previews::PreviewsType::DEFER_ALL_SCRIPT, previews::GetMainFramePreviewsType( - blink::PreviewsTypes::NOSCRIPT_ON | - blink::PreviewsTypes::RESOURCE_LOADING_HINTS_ON | blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON)); } @@ -435,8 +362,8 @@ .set_random_coin_flip_for_navigation = true, .want_ukm = false, .want_coin_flip_result = previews::CoinFlipHoldbackResult::kNotSet, - .initial_state = blink::PreviewsTypes::NOSCRIPT_ON, - .want_returned = blink::PreviewsTypes::NOSCRIPT_ON, + .initial_state = blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON, + .want_returned = blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON, }, { .msg = "Feature disabled, no affect, tails", @@ -444,8 +371,8 @@ .set_random_coin_flip_for_navigation = false, .want_ukm = false, .want_coin_flip_result = previews::CoinFlipHoldbackResult::kNotSet, - .initial_state = blink::PreviewsTypes::NOSCRIPT_ON, - .want_returned = blink::PreviewsTypes::NOSCRIPT_ON, + .initial_state = blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON, + .want_returned = blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON, }, { .msg = "Holdback enabled previews", @@ -453,7 +380,7 @@ .set_random_coin_flip_for_navigation = true, .want_ukm = true, .want_coin_flip_result = previews::CoinFlipHoldbackResult::kHoldback, - .initial_state = blink::PreviewsTypes::NOSCRIPT_ON, + .initial_state = blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON, .want_returned = blink::PreviewsTypes::PREVIEWS_OFF, }, { @@ -462,8 +389,8 @@ .set_random_coin_flip_for_navigation = false, .want_ukm = true, .want_coin_flip_result = previews::CoinFlipHoldbackResult::kAllowed, - .initial_state = blink::PreviewsTypes::NOSCRIPT_ON, - .want_returned = blink::PreviewsTypes::NOSCRIPT_ON, + .initial_state = blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON, + .want_returned = blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON, }, };
diff --git a/chrome/browser/previews/previews_service.cc b/chrome/browser/previews/previews_service.cc index 3ac41593..2ef9b6c 100644 --- a/chrome/browser/previews/previews_service.cc +++ b/chrome/browser/previews/previews_service.cc
@@ -65,9 +65,9 @@ case previews::PreviewsType::DEPRECATED_LITE_PAGE: return false; case previews::PreviewsType::NOSCRIPT: - return previews::params::IsNoScriptPreviewsEnabled(); + return false; case previews::PreviewsType::RESOURCE_LOADING_HINTS: - return previews::params::IsResourceLoadingHintsEnabled(); + return false; case previews::PreviewsType::DEFER_ALL_SCRIPT: return previews::params::IsDeferAllScriptPreviewsEnabled(); case previews::PreviewsType::DEPRECATED_AMP_REDIRECTION: @@ -88,9 +88,9 @@ int GetPreviewsTypeVersion(previews::PreviewsType type) { switch (type) { case previews::PreviewsType::NOSCRIPT: - return previews::params::NoScriptPreviewsVersion(); + return -1; case previews::PreviewsType::RESOURCE_LOADING_HINTS: - return previews::params::ResourceLoadingHintsVersion(); + return -1; case previews::PreviewsType::DEFER_ALL_SCRIPT: return previews::params::DeferAllScriptPreviewsVersion(); case previews::PreviewsType::NONE:
diff --git a/chrome/browser/previews/previews_service_unittest.cc b/chrome/browser/previews/previews_service_unittest.cc index a2104aca..901b16b 100644 --- a/chrome/browser/previews/previews_service_unittest.cc +++ b/chrome/browser/previews/previews_service_unittest.cc
@@ -33,26 +33,6 @@ } // namespace -TEST_F(PreviewsServiceTest, TestNoScriptPreviewsEnabledByFeature) { -#if !defined(OS_ANDROID) - // For non-android, default is disabled. - blocklist::BlocklistData::AllowedTypesAndVersions allowed_types_and_versions = - PreviewsService::GetAllowedPreviews(); - EXPECT_EQ(allowed_types_and_versions.find( - static_cast<int>(previews::PreviewsType::NOSCRIPT)), - allowed_types_and_versions.end()); -#endif // defined(OS_ANDROID) - - base::test::ScopedFeatureList scoped_feature_list; - scoped_feature_list.InitAndEnableFeature( - previews::features::kNoScriptPreviews); - blocklist::BlocklistData::AllowedTypesAndVersions - allowed_types_and_versions2 = PreviewsService::GetAllowedPreviews(); - EXPECT_NE(allowed_types_and_versions2.find( - static_cast<int>(previews::PreviewsType::NOSCRIPT)), - allowed_types_and_versions2.end()); -} - TEST_F(PreviewsServiceTest, TestDeferAllScriptPreviewsEnabledByFeature) { #if !defined(OS_ANDROID) // For non-android, default is disabled.
diff --git a/chrome/browser/printing/print_preview_sticky_settings.cc b/chrome/browser/printing/print_preview_sticky_settings.cc index 8e1e8e3..a225c14 100644 --- a/chrome/browser/printing/print_preview_sticky_settings.cc +++ b/chrome/browser/printing/print_preview_sticky_settings.cc
@@ -57,10 +57,12 @@ base::flat_map<std::string, int> PrintPreviewStickySettings::GetPrinterRecentlyUsedRanks() { + auto recently_used_printers = GetRecentlyUsedPrinters(); int current_rank = 0; - base::flat_map<std::string, int> recently_used_ranks; - for (const std::string& printer_id : GetRecentlyUsedPrinters()) - recently_used_ranks[printer_id] = current_rank++; + std::vector<std::pair<std::string, int>> recently_used_ranks; + recently_used_ranks.reserve(recently_used_printers.size()); + for (std::string& printer_id : recently_used_printers) + recently_used_ranks.emplace_back(std::move(printer_id), current_rank++); return recently_used_ranks; }
diff --git a/chrome/browser/profiles/android/java/src/org/chromium/chrome/browser/profiles/ProfileKey.java b/chrome/browser/profiles/android/java/src/org/chromium/chrome/browser/profiles/ProfileKey.java index a4bfcbf..220f4d72 100644 --- a/chrome/browser/profiles/android/java/src/org/chromium/chrome/browser/profiles/ProfileKey.java +++ b/chrome/browser/profiles/android/java/src/org/chromium/chrome/browser/profiles/ProfileKey.java
@@ -19,8 +19,7 @@ private ProfileKey(long nativeProfileKeyAndroid) { mNativeProfileKeyAndroid = nativeProfileKeyAndroid; - mIsOffTheRecord = - ProfileKeyJni.get().isOffTheRecord(mNativeProfileKeyAndroid, ProfileKey.this); + mIsOffTheRecord = ProfileKeyJni.get().isOffTheRecord(mNativeProfileKeyAndroid); } /** @@ -32,12 +31,11 @@ public static ProfileKey getLastUsedRegularProfileKey() { // TODO(mheikal): Assert at least reduced mode is started when https://crbug.com/973241 is // fixed. - return (ProfileKey) ProfileKeyJni.get().getLastUsedRegularProfileKey(); + return ProfileKeyJni.get().getLastUsedRegularProfileKey(); } public ProfileKey getOriginalKey() { - return (ProfileKey) ProfileKeyJni.get().getOriginalKey( - mNativeProfileKeyAndroid, ProfileKey.this); + return ProfileKeyJni.get().getOriginalKey(mNativeProfileKeyAndroid); } public boolean isOffTheRecord() { @@ -61,8 +59,8 @@ @NativeMethods interface Natives { - Object getLastUsedRegularProfileKey(); - Object getOriginalKey(long nativeProfileKeyAndroid, ProfileKey caller); - boolean isOffTheRecord(long nativeProfileKeyAndroid, ProfileKey caller); + ProfileKey getLastUsedRegularProfileKey(); + ProfileKey getOriginalKey(long nativeProfileKeyAndroid); + boolean isOffTheRecord(long nativeProfileKeyAndroid); } }
diff --git a/chrome/browser/profiles/profile_key_android.cc b/chrome/browser/profiles/profile_key_android.cc index c660f46..a445f0e 100644 --- a/chrome/browser/profiles/profile_key_android.cc +++ b/chrome/browser/profiles/profile_key_android.cc
@@ -42,6 +42,11 @@ } // static +ScopedJavaLocalRef<jobject> JNI_ProfileKey_GetLastUsedRegularProfileKey( + JNIEnv* env) { + return ProfileKeyAndroid::GetLastUsedRegularProfileKey(env); +} + ScopedJavaLocalRef<jobject> ProfileKeyAndroid::GetLastUsedRegularProfileKey( JNIEnv* env) { ProfileKey* key = ::android::GetLastUsedRegularProfileKey(); @@ -59,26 +64,17 @@ return ScopedJavaLocalRef<jobject>(profile_key_android->obj_); } -ScopedJavaLocalRef<jobject> ProfileKeyAndroid::GetOriginalKey( - JNIEnv* env, - const JavaParamRef<jobject>& obj) { +ScopedJavaLocalRef<jobject> ProfileKeyAndroid::GetOriginalKey(JNIEnv* env) { ProfileKeyAndroid* original_key = key_->GetOriginalKey()->GetProfileKeyAndroid(); DCHECK(original_key); return original_key->GetJavaObject(); } -jboolean ProfileKeyAndroid::IsOffTheRecord(JNIEnv* env, - const JavaParamRef<jobject>& obj) { +jboolean ProfileKeyAndroid::IsOffTheRecord(JNIEnv* env) { return key_->IsOffTheRecord(); } -// static -ScopedJavaLocalRef<jobject> JNI_ProfileKey_GetLastUsedRegularProfileKey( - JNIEnv* env) { - return ProfileKeyAndroid::GetLastUsedRegularProfileKey(env); -} - ScopedJavaLocalRef<jobject> ProfileKeyAndroid::GetJavaObject() { return ScopedJavaLocalRef<jobject>(obj_); }
diff --git a/chrome/browser/profiles/profile_key_android.h b/chrome/browser/profiles/profile_key_android.h index b304b1e..8f090171 100644 --- a/chrome/browser/profiles/profile_key_android.h +++ b/chrome/browser/profiles/profile_key_android.h
@@ -26,13 +26,10 @@ GetLastUsedRegularProfileKey(JNIEnv* env); // Return the original profile key. - base::android::ScopedJavaLocalRef<jobject> GetOriginalKey( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); + base::android::ScopedJavaLocalRef<jobject> GetOriginalKey(JNIEnv* env); // Whether this profile is off the record. - jboolean IsOffTheRecord(JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); + jboolean IsOffTheRecord(JNIEnv* env); base::android::ScopedJavaLocalRef<jobject> GetJavaObject();
diff --git a/chrome/browser/resources/chromeos/emoji_picker/BUILD.gn b/chrome/browser/resources/chromeos/emoji_picker/BUILD.gn index 96f18f7..d2dde425 100644 --- a/chrome/browser/resources/chromeos/emoji_picker/BUILD.gn +++ b/chrome/browser/resources/chromeos/emoji_picker/BUILD.gn
@@ -4,20 +4,41 @@ import("//third_party/closure_compiler/compile_js.gni") import("//tools/grit/grit_rule.gni") +import("//tools/polymer/html_to_js.gni") import("//ui/webui/resources/tools/generate_grd.gni") +component_js_files = [ + "emoji_picker.js", + "emoji_group.js", +] + +polymer_deps = + [ "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled" ] + resources_grd_file = "$target_gen_dir/resources.grd" +components_grdp_file = "$target_gen_dir/components.grdp" + generate_grd("build_grd") { + deps = [ ":build_grdp" ] grd_prefix = "emoji_picker" out_grd = resources_grd_file input_files = [ - "emoji_picker.css", - "emoji_picker.html", - "emoji_picker.js", + "index.html", + "types.js", + "emoji_ordering.json", ] + grdp_files = [ components_grdp_file ] input_files_base_dir = rebase_path(".", "//") } +generate_grd("build_grdp") { + deps = [ ":web_components" ] + grd_prefix = "emoji_picker" + out_grd = components_grdp_file + input_files = component_js_files + input_files_base_dir = rebase_path(target_gen_dir, root_build_dir) +} + grit("resources") { # These arguments are needed since the grd is generated at build time. enable_input_discovery_for_gn_analyze = false @@ -33,10 +54,30 @@ } js_library("emoji_picker") { - deps = [ "//ui/webui/resources/js:load_time_data.m" ] + deps = [ + ":types", + ":emoji_group", + "//ui/webui/resources/js:load_time_data.m", + "//third_party/polymer/v3_0/components-chromium/iron-icon", + ] + polymer_deps +} + +js_library("emoji_group") { + deps = [ ":types" ] + polymer_deps +} + +js_library("types") { } js_type_check("closure_compile") { - uses_js_modules = true - deps = [ ":emoji_picker" ] + is_polymer3 = true + deps = [ + ":emoji_group", + ":emoji_picker", + ":types", + ] +} + +html_to_js("web_components") { + js_files = component_js_files }
diff --git a/chrome/browser/resources/chromeos/emoji_picker/emoji_group.html b/chrome/browser/resources/chromeos/emoji_picker/emoji_group.html new file mode 100644 index 0000000..5216797 --- /dev/null +++ b/chrome/browser/resources/chromeos/emoji_picker/emoji_group.html
@@ -0,0 +1,27 @@ +<style> + .emoji-group-emoji { + display: flex; + flex-wrap: wrap; + } + .emoji-button { + font-size: 17px; + height: 20px; + margin: 8px; + text-align: center; + width: 20px; + } + .emoji-button.variants { + background-color: red; + } +</style> + +<div class="emoji-group"> + <div class="emoji-group-heading">[[data.group]]</div> + <div class="emoji-group-emoji"> + <template is="dom-repeat" items="[[data.emoji]]"> + <div class$="[[_className(item.alternates)]]"> + [[_renderEmoji(item.base)]] + </div> + </template> + </div> +</div> \ No newline at end of file
diff --git a/chrome/browser/resources/chromeos/emoji_picker/emoji_group.js b/chrome/browser/resources/chromeos/emoji_picker/emoji_group.js new file mode 100644 index 0000000..a80cbea --- /dev/null +++ b/chrome/browser/resources/chromeos/emoji_picker/emoji_group.js
@@ -0,0 +1,38 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; + +import {EmojiGroup} from './types.js'; + +class EmojiGroupComponent extends PolymerElement { + static get is() { + return 'emoji-group'; + } + + static get template() { + return html`{__html_template__}`; + } + + static get properties() { + return { + /** @type {EmojiGroup} */ + data: {type: Object}, + }; + } + + constructor() { + super(); + } + + _renderEmoji(codepoints) { + return String.fromCodePoint(...codepoints); + } + + _className(alternates) { + return 'emoji-button ' + (alternates.length > 0 ? 'variants' : ''); + } +} + +customElements.define(EmojiGroupComponent.is, EmojiGroupComponent);
diff --git a/chrome/browser/resources/chromeos/emoji_picker/emoji_ordering.json b/chrome/browser/resources/chromeos/emoji_picker/emoji_ordering.json new file mode 100644 index 0000000..c5b92ef --- /dev/null +++ b/chrome/browser/resources/chromeos/emoji_picker/emoji_ordering.json
@@ -0,0 +1,177 @@ +[ + { + "group": "Group 1", + "emoji": [ + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + } + ] + }, + { + "group": "Group 2", + "emoji": [ + { + "base": [ + 128075 + ], + "alternates": [ + [128075], + [128075, 127995] + ] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + }, + { + "base": [ + 128512 + ], + "alternates": [] + } + ] + } +] \ No newline at end of file
diff --git a/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.css b/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.css deleted file mode 100644 index 94e11ff..0000000 --- a/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.css +++ /dev/null
@@ -1,8 +0,0 @@ -/* Copyright 2020 The Chromium Authors. All Rights Reserved. - * Use of this source code is governed by the Apache v2.0 license that can be - * found in the LICENSE file. - */ - -p { - white-space: pre-wrap; -} \ No newline at end of file
diff --git a/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.html b/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.html index d588c19..d0f9681 100644 --- a/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.html +++ b/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.html
@@ -1,13 +1,37 @@ -<!DOCTYPE HTML> -<html> -<head> - <meta charset="utf-8"> - <link rel="stylesheet" href="emoji_picker.css"> - <script type="module" src="emoji_picker.js"></script> -</head> -<body> - <h1>Emoji picker</h1> - <p id="welcome-message"></p> - <div id="emoji-picker"></div> -</body> -</html> \ No newline at end of file +<style> + .w-100 { + width: 100%; + } + + .emoji-picker { + max-height: 343px; + min-height: 343px; + width: calc(36px * 7); + } +</style> + +<div class="emoji-picker"> + + <input + id="search" class="w-100" + type="text" value="{{search::input}}" + ></input> + + <div class="emoji-tabs"> + <iron-icon icon="device:access-time"></iron-icon> + <iron-icon icon="image:tag-faces"></iron-icon> + <iron-icon icon="device:access-time"></iron-icon> + <iron-icon icon="device:access-time"></iron-icon> + <iron-icon icon="device:access-time"></iron-icon> + <iron-icon icon="device:access-time"></iron-icon> + <iron-icon icon="device:access-time"></iron-icon> + <iron-icon icon="device:access-time"></iron-icon> + <iron-icon icon="device:access-time"></iron-icon> + </div> + + <div class="emoji-groups w-100"> + <template is="dom-repeat" items="{{emojiData}}"> + <emoji-group data="[[item]]"></emoji-group> + </template> + </div> +</div> \ No newline at end of file
diff --git a/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.js b/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.js index cab03676..8ab6535 100644 --- a/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.js +++ b/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.js
@@ -1,19 +1,56 @@ -// Copyright 2020 The Chromium Authors. All Rights Reserved. -// Use of this source code is governed by the Apache v2.0 license that can be +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import './strings.m.js'; +import 'chrome://resources/polymer/v3_0/iron-icon/iron-icon.js'; +import './emoji_group.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; -import {$} from 'chrome://resources/js/util.m.js'; +import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; -function initialize() { - for (const emoji of loadTimeData.getString('emoji').split(',')) { - const block = document.createElement('div'); - block.innerText = emoji; - $('emoji-picker').appendChild(block); +import {EmojiData} from './types.js'; + +const EMOJI_ORDERING_JSON = '/emoji_ordering.json'; + +class EmojiPicker extends PolymerElement { + static get is() { + return 'emoji-picker'; + } + + static get template() { + return html`{__html_template__}`; + } + + static get properties() { + return { + emoji: {type: Array}, + /** @type {?EmojiData} */ + emojiData: {type: Object}, + search: {type: String}, + }; + } + + constructor() { + super(); + + const xhr = new XMLHttpRequest(); + xhr.onloadend = () => this.onEmojiDataLoaded(xhr.responseText); + xhr.open('GET', EMOJI_ORDERING_JSON); + xhr.send(); + + this.emojiData = []; + this.emoji = loadTimeData.getString('emoji').split(','); + this.search = ''; + } + + _formatEmojiData(emojiData) { + return JSON.stringify(emojiData); + } + + onEmojiDataLoaded(data) { + this.emojiData = /** @type {!EmojiData} */ (JSON.parse(data)); } } - -document.addEventListener('DOMContentLoaded', initialize); \ No newline at end of file +customElements.define(EmojiPicker.is, EmojiPicker);
diff --git a/chrome/browser/resources/chromeos/emoji_picker/index.html b/chrome/browser/resources/chromeos/emoji_picker/index.html new file mode 100644 index 0000000..857b1f8 --- /dev/null +++ b/chrome/browser/resources/chromeos/emoji_picker/index.html
@@ -0,0 +1,16 @@ +<!DOCTYPE HTML> +<html> +<head> + <meta charset="utf-8"> + <title>Emoji Picker</title> + <script type="module" src="emoji_picker.js"></script> + <style> + * { + font-family: sans-serif; + } + </style> +</head> +<body> + <emoji-picker></emoji-picker> +</body> +</html> \ No newline at end of file
diff --git a/chrome/browser/resources/chromeos/emoji_picker/types.js b/chrome/browser/resources/chromeos/emoji_picker/types.js new file mode 100644 index 0000000..b43121af --- /dev/null +++ b/chrome/browser/resources/chromeos/emoji_picker/types.js
@@ -0,0 +1,18 @@ +// 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. + +/** + * @typedef {{base: number, alternates: Array<Array<number>>}} + */ +export let Emoji; + +/** + * @typedef {{group: string, emoji: Array<Emoji>}} + */ +export let EmojiGroup; + +/** + * @typedef {Array<EmojiGroup>} EmojiData + */ +export let EmojiData; \ No newline at end of file
diff --git a/chrome/browser/resources/new_tab_page/app.html b/chrome/browser/resources/new_tab_page/app.html index 1bf3b74..057ffc2df 100644 --- a/chrome/browser/resources/new_tab_page/app.html +++ b/chrome/browser/resources/new_tab_page/app.html
@@ -100,8 +100,6 @@ } ntp-most-visited[dark] { - --icon-button-color-active: var(--google-grey-refresh-300); - --icon-button-color: white; --tile-hover-color: rgba(255, 255, 255, .1); }
diff --git a/chrome/browser/resources/new_tab_page/modules/cart/BUILD.gn b/chrome/browser/resources/new_tab_page/modules/cart/BUILD.gn index 16dcf76d..4936258e 100644 --- a/chrome/browser/resources/new_tab_page/modules/cart/BUILD.gn +++ b/chrome/browser/resources/new_tab_page/modules/cart/BUILD.gn
@@ -11,6 +11,8 @@ "..:module_descriptor", "../..:img", "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled", + "//ui/webui/resources/cr_elements/cr_action_menu:cr_action_menu.m", + "//ui/webui/resources/cr_elements/cr_icon_button:cr_icon_button.m", ] }
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 5e341ba..fe24360 100644 --- a/chrome/browser/resources/new_tab_page/modules/cart/module.html +++ b/chrome/browser/resources/new_tab_page/modules/cart/module.html
@@ -1,4 +1,4 @@ -<style include="cr-hidden-style"> +<style include="cr-hidden-style cr-icons"> :host { display: flex; flex-direction: column; @@ -25,10 +25,16 @@ height: 160px; margin: 0 4px; outline: none; + position: relative; text-decoration: none; width: 120px; } + .cart-item:hover cr-icon-button { + opacity: 1; + transition-delay: 400ms; + } + :host-context(.focus-outline-visible) .cart-item:focus { box-shadow: var(--ntp-focus-shadow); } @@ -45,7 +51,7 @@ width: 72px; } - .cart-title #merchant { + .cart-title .merchant { font-weight: 400; max-width: 54px; overflow: hidden; @@ -54,7 +60,7 @@ white-space: nowrap; } - .cart-title #itemCount { + .cart-title .item-count { color: var(--cr-secondary-text-color); } @@ -101,6 +107,27 @@ transform: translateY(-50%); width: 102px; } + + :host-context([dir=rtl]) cr-icon-button { + left: 0; + right: unset; + } + + cr-icon-button { + --cr-icon-button-fill-color: var(--ntp-icon-button-color); + --cr-icon-button-size: 16px; + --cr-icon-button-transition: none; + margin: 11px 8px; + opacity: 0; + position: absolute; + right: 0; + top: 0; + transition: opacity 100ms ease-in-out; + } + + cr-icon-button:hover { + --cr-icon-button-fill-color: var(--ntp-icon-button-color-active); + } </style> <ntp-module-header chip-text="$i18n{modulesCartHeaderNew}" @@ -110,12 +137,15 @@ <template id="cartItemRepeat" is="dom-repeat" items="[[cartItems]]"> <a class="cart-item" title="[[item.merchant]]" href="[[item.cartUrl.url]]"> + <cr-icon-button class="icon-more-vert" + title="$i18n{moreActions}" on-click="onMenuButtonClick_"> + </cr-icon-button> <img class="favicon-image" is="ntp-img" auto-src="[[getFaviconUrl_(item.cartUrl.url)]]"></img> <div class="cart-title"> - <span id="merchant">[[item.merchant]]</span> + <span class="merchant">[[item.merchant]]</span> <template is="dom-if" if="[[item.productImageUrls.length]]"> - <span id="itemCount"> + <span class="item-count">  • [[item.productImageUrls.length]] </span> </template> @@ -123,7 +153,7 @@ <div class="thumbnail-container"> <template is="dom-if" if="[[item.productImageUrls.length]]"> - <ul id="thumbnailList"> + <ul class="thumbnail-list"> <template is="dom-repeat" items="[[getImagesToShow_(item.productImageUrls)]]"> <li> @@ -141,4 +171,5 @@ </div> </a> </template> + <cr-action-menu id="actionMenu"></cr-action-menu> </div> \ No newline at end of file
diff --git a/chrome/browser/resources/new_tab_page/modules/cart/module.js b/chrome/browser/resources/new_tab_page/modules/cart/module.js index 26900170..cfcd5d2c 100644 --- a/chrome/browser/resources/new_tab_page/modules/cart/module.js +++ b/chrome/browser/resources/new_tab_page/modules/cart/module.js
@@ -5,6 +5,9 @@ import '../../img.js'; import '../module_header.js'; import 'chrome://resources/cr_elements/hidden_style_css.m.js'; +import 'chrome://resources/cr_elements/cr_icon_button/cr_icon_button.m.js'; +import 'chrome://resources/cr_elements/cr_icons_css.m.js'; +import 'chrome://resources/cr_elements/cr_action_menu/cr_action_menu.m.js'; import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {ModuleDescriptor} from '../module_descriptor.js'; @@ -72,6 +75,17 @@ onRestore_() { ChromeCartProxy.getInstance().handler.restoreCartModule(); } + + /** + * @param {!Event} e + * @private + */ + onMenuButtonClick_(e) { + e.preventDefault(); + const index = this.$.cartItemRepeat.indexForElement( + e.target.parentElement.parentElement); + this.$.actionMenu.showAt(e.target); + } } customElements.define(ChromeCartModuleElement.is, ChromeCartModuleElement);
diff --git a/chrome/browser/resources/new_tab_page/most_visited.html b/chrome/browser/resources/new_tab_page/most_visited.html index 62b2026d..c7065082 100644 --- a/chrome/browser/resources/new_tab_page/most_visited.html +++ b/chrome/browser/resources/new_tab_page/most_visited.html
@@ -1,7 +1,5 @@ <style include="cr-hidden-style cr-icons"> :host { - --icon-button-color-active: var(--google-grey-refresh-700); - --icon-button-color: var(--google-grey-600); --icon-size: 48px; --tile-hover-color: rgba(var(--google-grey-900-rgb), .1); --tile-size: 112px; /* top padding + icon + title margin + title */ @@ -160,7 +158,7 @@ } cr-icon-button { - --cr-icon-button-fill-color: var(--icon-button-color); + --cr-icon-button-fill-color: var(--ntp-icon-button-color); --cr-icon-button-size: 28px; --cr-icon-button-transition: none; margin: 4px 2px; @@ -186,7 +184,7 @@ :host-context(.focus-outline-visible):host(:not([reordering_])) cr-icon-button:focus, :host(:not([reordering_])) cr-icon-button:hover { - --cr-icon-button-fill-color: var(--icon-button-color-active); + --cr-icon-button-fill-color: var(--ntp-icon-button-color-active); opacity: 1; transition-delay: 0s; }
diff --git a/chrome/browser/resources/new_tab_page/shared_vars.css b/chrome/browser/resources/new_tab_page/shared_vars.css index 03a93f4..5cecb935 100644 --- a/chrome/browser/resources/new_tab_page/shared_vars.css +++ b/chrome/browser/resources/new_tab_page/shared_vars.css
@@ -21,6 +21,8 @@ --ntp-module-text-color: #616161; --ntp-chip-background-color: var(--google-blue-600); --ntp-chip-text-color: white; + --ntp-icon-button-color-active: var(--google-grey-refresh-700); + --ntp-icon-button-color: var(--google-grey-600); /* Other: */ --ntp-focus-shadow: 0 0 0 2px var(--ntp-focus-shadow-color); @@ -41,5 +43,7 @@ --ntp-selected-primary-text-color: var(--google-blue-refresh-300); --ntp-chip-background-color: var(--google-blue-300); --ntp-chip-text-color: var(--google-grey-900); + --ntp-icon-button-color-active: var(--google-grey-refresh-300); + --ntp-icon-button-color: white; } }
diff --git a/chrome/browser/resources/settings/chromeos/os_a11y_page/switch_access_action_assignment_dialog.html b/chrome/browser/resources/settings/chromeos/os_a11y_page/switch_access_action_assignment_dialog.html index 63e28b9e..c400a80c 100644 --- a/chrome/browser/resources/settings/chromeos/os_a11y_page/switch_access_action_assignment_dialog.html +++ b/chrome/browser/resources/settings/chromeos/os_a11y_page/switch_access_action_assignment_dialog.html
@@ -91,7 +91,7 @@ class$="icon [[computeIcon_(assignment, assignmentState_)]]-icon" aria-label="[[computeIconLabel_(assignment, assignmentState_)]]"> </iron-icon> - [[assignment]] + [[assignment.key]] </div> </template> </template>
diff --git a/chrome/browser/resources/settings/chromeos/os_a11y_page/switch_access_action_assignment_dialog.js b/chrome/browser/resources/settings/chromeos/os_a11y_page/switch_access_action_assignment_dialog.js index 14bc1514..ebabb01 100644 --- a/chrome/browser/resources/settings/chromeos/os_a11y_page/switch_access_action_assignment_dialog.js +++ b/chrome/browser/resources/settings/chromeos/os_a11y_page/switch_access_action_assignment_dialog.js
@@ -31,9 +31,21 @@ * @private */ /* #export */ const actionToPref = { - select: 'settings.a11y.switch_access.select.key_codes', - next: 'settings.a11y.switch_access.next.key_codes', - previous: 'settings.a11y.switch_access.previous.key_codes' + select: 'settings.a11y.switch_access.select.device_key_codes', + next: 'settings.a11y.switch_access.next.device_key_codes', + previous: 'settings.a11y.switch_access.previous.device_key_codes' +}; + +/** + * Possible device types for Switch Access. + * @enum {string} + * @private + */ +/* #export */ const SwitchAccessDeviceType = { + INTERNAL: 'internal', + USB: 'usb', + BLUETOOTH: 'bluetooth', + UNKNOWN: 'unknown' }; /** @@ -46,6 +58,11 @@ REMOVE_ASSIGNMENT: 'remove-assignment', }; +/** + * @typedef {!Array<!Object<string, !Array<!SwitchAccessDeviceType>>>} + */ +let SwitchAccessKeyAssignmentInfoList; + Polymer({ is: 'settings-switch-access-action-assignment-dialog', @@ -76,7 +93,8 @@ /** * Assignments for the current action. - * @private {Array<string>} + * @private {Array<!{key: string, devices: + * !Array<!SwitchAccessDeviceType>}>} */ assignments_: { type: Array, @@ -95,12 +113,17 @@ /** * A dictionary containing all Switch Access key codes (mapped from * actions). - * @private {{select: !Array<string>, next: !Array<string>, previous: - * !Array<string>}} + * Each key code is another object, mapping a stringified key code to a list + * of Switch Access device types for that key code. + * @private {{ + * select: SwitchAccessKeyAssignmentInfoList, + * next: SwitchAccessKeyAssignmentInfoList, + * previous: SwitchAccessKeyAssignmentInfoList + * }} */ keyCodes_: { type: Object, - value: {select: [], next: [], previous: []}, + value: {select: {}, next: {}, previous: {}}, }, /** @@ -219,7 +242,7 @@ // Check for pre-existing assignments in actions other than the current one. for (const action of Object.values(SwitchAccessCommand)) { - if (!this.keyCodes_[action].includes(event.keyCode)) { + if (!this.keyCodes_[action][event.keyCode]) { continue; } @@ -251,7 +274,12 @@ handleKeyEventInWaitForConfirmation_(event) { if (this.currentKeyCode_ === event.keyCode) { // Confirmed. - this.keyCodes_[this.action].push(this.currentKeyCode_); + // TODO: resolve to specific device type once UI is hooked up; + // |event.device| has the Switch Access device type. + this.keyCodes_[this.action][this.currentKeyCode_] = [ + SwitchAccessDeviceType.INTERNAL, SwitchAccessDeviceType.USB, + SwitchAccessDeviceType.BLUETOOTH + ]; this.$.switchAccessActionAssignmentDialog.close(); return; } @@ -276,10 +304,8 @@ } // Remove this key code. - const index = this.keyCodes_[this.action].indexOf(this.currentKeyCode_); - if (index !== -1) { - this.keyCodes_[this.action].splice(index, 1); - } + delete this.keyCodes_[this.action][this.currentKeyCode_]; + this.$.switchAccessActionAssignmentDialog.close(); }, @@ -289,21 +315,12 @@ }, /** - * @param {!Object<SwitchAccessCommand, !Array<string>>} value + * @param {!Object<SwitchAccessCommand, !Array<!{key: string, devices: + * !Array<SwitchAccessDeviceType>}>>} value * @private */ onAssignmentsChanged_(value) { - switch (this.action) { - case SwitchAccessCommand.SELECT: - this.assignments_ = value.select; - break; - case SwitchAccessCommand.NEXT: - this.assignments_ = value.next; - break; - case SwitchAccessCommand.PREVIOUS: - this.assignments_ = value.previous; - break; - } + this.assignments_ = value[this.action]; }, /**
diff --git a/chrome/browser/resources/settings/chromeos/os_a11y_page/switch_access_subpage.js b/chrome/browser/resources/settings/chromeos/os_a11y_page/switch_access_subpage.js index cefc12d..807aab2 100644 --- a/chrome/browser/resources/settings/chromeos/os_a11y_page/switch_access_subpage.js +++ b/chrome/browser/resources/settings/chromeos/os_a11y_page/switch_access_subpage.js
@@ -206,9 +206,11 @@ * @private */ onAssignmentsChanged_(value) { - this.selectAssignments_ = value[SwitchAccessCommand.SELECT]; - this.nextAssignments_ = value[SwitchAccessCommand.NEXT]; - this.previousAssignments_ = value[SwitchAccessCommand.PREVIOUS]; + // TODO: include |v.devices| for each key in UI. + this.selectAssignments_ = value[SwitchAccessCommand.SELECT].map(v => v.key); + this.nextAssignments_ = value[SwitchAccessCommand.NEXT].map(v => v.key); + this.previousAssignments_ = + value[SwitchAccessCommand.PREVIOUS].map(v => v.key); }, /**
diff --git a/chrome/browser/safe_browsing/safe_browsing_navigation_observer_manager.cc b/chrome/browser/safe_browsing/safe_browsing_navigation_observer_manager.cc index fe8750b..43cf188 100644 --- a/chrome/browser/safe_browsing/safe_browsing_navigation_observer_manager.cc +++ b/chrome/browser/safe_browsing/safe_browsing_navigation_observer_manager.cc
@@ -380,6 +380,8 @@ SessionID event_tab_id, int user_gesture_count_limit, ReferrerChain* out_referrer_chain) { + SCOPED_UMA_HISTOGRAM_TIMER( + "SafeBrowsing.NavigationObserver.IdentifyReferrerChainByEventURLTime"); if (!event_url.is_valid()) return INVALID_URL; @@ -404,6 +406,8 @@ content::WebContents* web_contents, int user_gesture_count_limit, ReferrerChain* out_referrer_chain) { + SCOPED_UMA_HISTOGRAM_TIMER( + "SafeBrowsing.NavigationObserver.IdentifyReferrerChainByWebContentsTime"); if (!web_contents) return INVALID_URL; GURL last_committed_url = web_contents->GetLastCommittedURL(); @@ -525,6 +529,8 @@ void SafeBrowsingNavigationObserverManager::AppendRecentNavigations( size_t recent_navigation_count, ReferrerChain* out_referrer_chain) { + SCOPED_UMA_HISTOGRAM_TIMER( + "SafeBrowsing.NavigationObserver.AppendRecentNavigationsTime"); if (recent_navigation_count <= 0u) return; int current_referrer_chain_size = out_referrer_chain->size();
diff --git a/chrome/browser/ssl/typed_navigation_upgrade_throttle.cc b/chrome/browser/ssl/typed_navigation_upgrade_throttle.cc index 39bbd2d..b3c60e6 100644 --- a/chrome/browser/ssl/typed_navigation_upgrade_throttle.cc +++ b/chrome/browser/ssl/typed_navigation_upgrade_throttle.cc
@@ -6,6 +6,7 @@ #include "base/check_op.h" #include "base/memory/ptr_util.h" +#include "base/metrics/field_trial_params.h" #include "base/metrics/histogram_functions.h" #include "base/strings/string_number_conversions.h" #include "base/task/post_task.h" @@ -20,11 +21,19 @@ #include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents_user_data.h" #include "ui/base/page_transition_types.h" -#include "url/gurl.h" #include "url/url_constants.h" namespace { +// Delay in milliseconds before falling back to the HTTP URL. +// This can be changed in tests. +// - If the HTTPS load finishes successfully during this time, the timer is +// cleared and no more work is done. +// - Otherwise, a new navigation to the the fallback HTTP URL is started. +constexpr base::FeatureParam<base::TimeDelta> kFallbackDelay{ + &omnibox::kDefaultTypedNavigationsToHttps, "timeout", + base::TimeDelta::FromSeconds(3)}; + bool IsNavigationUsingHttpsAsDefaultScheme(content::NavigationHandle* handle) { content::NavigationUIData* ui_data = handle->GetNavigationUIData(); // UI data can be null in the case of navigations to interstitials. @@ -54,7 +63,12 @@ return weak_factory_.GetWeakPtr(); } - void Navigate(const content::OpenURLParams& url_params) { + void Navigate(const content::OpenURLParams& url_params, + bool stop_navigation) { + if (stop_navigation) { + // This deletes the NavigationThrottle and NavigationHandle. + web_contents_->Stop(); + } web_contents_->OpenURL(url_params); } @@ -123,36 +137,47 @@ TypedNavigationUpgradeThrottle::WillStartRequest() { DCHECK_EQ(url::kHttpsScheme, navigation_handle()->GetURL().scheme()); RecordUMA(Event::kHttpsLoadStarted); + timer_.Start(FROM_HERE, kFallbackDelay.Get(), this, + &TypedNavigationUpgradeThrottle::OnHttpsLoadTimeout); return content::NavigationThrottle::PROCEED; } content::NavigationThrottle::ThrottleCheckResult TypedNavigationUpgradeThrottle::WillFailRequest() { DCHECK_EQ(url::kHttpsScheme, navigation_handle()->GetURL().scheme()); - // Cancel and fall back to HTTP in case of SSL errors or other net/ errors. + // Cancel the request, stop the timer and fall back to HTTP in case of SSL + // errors or other net/ errors. + timer_.Stop(); // If there was no certificate error, SSLInfo will be empty. const net::SSLInfo info = navigation_handle()->GetSSLInfo().value_or(net::SSLInfo()); int cert_status = info.cert_status; - if (net::IsCertStatusError(cert_status)) { - RecordUMA(Event::kHttpsLoadFailedWithCertError); - FallbackToHttp(); - return content::NavigationThrottle::CANCEL_AND_IGNORE; + if (!net::IsCertStatusError(cert_status) && + navigation_handle()->GetNetErrorCode() == net::OK) { + return content::NavigationThrottle::PROCEED; } - if (navigation_handle()->GetNetErrorCode() != net::OK) { + if (net::IsCertStatusError(cert_status)) { + RecordUMA(Event::kHttpsLoadFailedWithCertError); + } else if (navigation_handle()->GetNetErrorCode() != net::OK) { RecordUMA(Event::kHttpsLoadFailedWithNetError); - FallbackToHttp(); - return content::NavigationThrottle::CANCEL_AND_IGNORE; } - return content::NavigationThrottle::PROCEED; + + // Fallback to Http without stopping the navigation. The return value of this + // method takes care of that, and we don't need to call WebContents::Stop on a + // navigation that's already about to fail. + FallbackToHttp(false); + + // Do not add any code after here, |this| is deleted. + return content::NavigationThrottle::CANCEL_AND_IGNORE; } content::NavigationThrottle::ThrottleCheckResult TypedNavigationUpgradeThrottle::WillProcessResponse() { DCHECK_EQ(url::kHttpsScheme, navigation_handle()->GetURL().scheme()); - // If we got here, HTTPS load succeeded. + // If we got here, HTTPS load succeeded. Stop the timer. RecordUMA(Event::kHttpsLoadSucceeded); + timer_.Stop(); return content::NavigationThrottle::PROCEED; } @@ -172,13 +197,25 @@ TypedNavigationUpgradeThrottle::TypedNavigationUpgradeThrottle( content::NavigationHandle* handle) - : content::NavigationThrottle(handle) {} + : content::NavigationThrottle(handle), + http_url_(GetHttpUrl(handle->GetURL())) {} -void TypedNavigationUpgradeThrottle::FallbackToHttp() { - const GURL http_url = GetHttpUrl(navigation_handle()->GetURL()); +void TypedNavigationUpgradeThrottle::OnHttpsLoadTimeout() { + RecordUMA(Event::kHttpsLoadTimedOut); + // Stop the current navigation and load the HTTP URL. We explicitly stop the + // navigation here as opposed to WillFailRequest because the timeout happens + // in the middle of a navigation where we can't return a ThrottleCheckResult. + FallbackToHttp(true); + + // Once the fallback navigation starts, |this| will be deleted. Be careful + // adding code here -- any async task posted hereafter may never run. +} + +void TypedNavigationUpgradeThrottle::FallbackToHttp(bool stop_navigation) { + DCHECK_EQ(url::kHttpScheme, http_url_.scheme()) << http_url_; content::OpenURLParams params = content::OpenURLParams::FromNavigationHandle(navigation_handle()); - params.url = http_url; + params.url = http_url_; content::WebContents* web_contents = navigation_handle()->GetWebContents(); // According to crbug.com/1058303, web_contents could be null but we don't @@ -195,7 +232,12 @@ TypedNavigationUpgradeLifetimeHelper::CreateForWebContents(web_contents); TypedNavigationUpgradeLifetimeHelper* helper = TypedNavigationUpgradeLifetimeHelper::FromWebContents(web_contents); + base::SequencedTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::BindOnce(&TypedNavigationUpgradeLifetimeHelper::Navigate, - helper->GetWeakPtr(), std::move(params))); + FROM_HERE, + base::BindOnce(&TypedNavigationUpgradeLifetimeHelper::Navigate, + helper->GetWeakPtr(), std::move(params), stop_navigation)); + + // Once the fallback navigation starts, |this| will be deleted. Be careful + // adding code here -- any async task posted hereafter may never run. }
diff --git a/chrome/browser/ssl/typed_navigation_upgrade_throttle.h b/chrome/browser/ssl/typed_navigation_upgrade_throttle.h index 6c131296..44c49d6 100644 --- a/chrome/browser/ssl/typed_navigation_upgrade_throttle.h +++ b/chrome/browser/ssl/typed_navigation_upgrade_throttle.h
@@ -7,7 +7,9 @@ #include <memory> +#include "base/timer/timer.h" #include "content/public/browser/navigation_throttle.h" +#include "url/gurl.h" namespace content { class NavigationHandle; @@ -30,7 +32,10 @@ // Failed to load the upgraded HTTPS URL because of a net error, fell back // to the HTTP URL. kHttpsLoadFailedWithNetError, - kMaxValue = kHttpsLoadFailedWithNetError, + // Failed to load the upgraded HTTPS URL within the timeout window, fell + // back to the HTTP URL. + kHttpsLoadTimedOut, + kMaxValue = kHttpsLoadTimedOut, }; static std::unique_ptr<content::NavigationThrottle> MaybeCreateThrottleFor( @@ -61,9 +66,15 @@ TypedNavigationUpgradeThrottle& operator=( const TypedNavigationUpgradeThrottle&) = delete; - // Stops the current navigation and initiates a new navigation to the HTTP - // version of the original navigation's URL. - void FallbackToHttp(); + void OnHttpsLoadTimeout(); + + // Initiates a new navigation to the HTTP version of the original navigation's + // URL. If |stop_navigation| is true, also stops any pending navigation in the + // current WebContents. + void FallbackToHttp(bool stop_navigation); + + const GURL http_url_; + base::OneShotTimer timer_; }; #endif // CHROME_BROWSER_SSL_TYPED_NAVIGATION_UPGRADE_THROTTLE_H_
diff --git a/chrome/browser/ssl/typed_navigation_upgrade_throttle_browsertest.cc b/chrome/browser/ssl/typed_navigation_upgrade_throttle_browsertest.cc index 7b072a3..a145ef2b 100644 --- a/chrome/browser/ssl/typed_navigation_upgrade_throttle_browsertest.cc +++ b/chrome/browser/ssl/typed_navigation_upgrade_throttle_browsertest.cc
@@ -39,6 +39,10 @@ // interstitial) but loads fine over HTTP. const char* const kSiteWithBadHttps = "https://site-with-bad-https.com"; const char* const kSiteWithBadHttpsOverHttp = "http://site-with-bad-https.com"; +// Site that loads slowly over HTTPS, but loads fine over HTTP. +const char* const kSiteWithSlowHttps = "https://site-with-slow-https.com"; +const char* const kSiteWithSlowHttpsOverHttp = + "http://site-with-slow-https.com"; // Site that returns a connection error over HTTPS but loads fine over HTTP. const char* const kSiteWithNetError = "https://site-with-net-error.com"; @@ -46,6 +50,13 @@ const char kNetErrorHistogram[] = "Net.ErrorPageCounts"; +enum class NavigationExpectation { + // Test should expect a successful navigation to HTTPS. + kExpectHttps, + // Test should expect a fallback navigation to HTTP. + kExpectHttp +}; + std::string GetURLWithoutScheme(const GURL& url) { return url.spec().substr(url.scheme().size() + strlen("://")); } @@ -60,11 +71,20 @@ ~TypedNavigationUpgradeThrottleBrowserTest() override = default; void SetUp() override { + // Set the delay long enough so that the HTTPS navigation is guaranteed + // to succeed or fail during this window. + SetUpFeature(base::TimeDelta::FromHours(12)); + InProcessBrowserTest::SetUp(); + } + + void SetUpFeature(base::TimeDelta fallback_delay) { std::vector<base::test::ScopedFeatureList::FeatureAndParams> enabled_features; std::vector<base::Feature> disabled_features; if (IsFeatureEnabled()) { base::FieldTrialParams params; + params["timeout"] = + base::NumberToString(fallback_delay.InMilliseconds()) + "ms"; enabled_features.emplace_back(omnibox::kDefaultTypedNavigationsToHttps, params); } else { @@ -72,9 +92,7 @@ } feature_list_.InitWithFeaturesAndParameters(enabled_features, disabled_features); - InProcessBrowserTest::SetUp(); } - void SetUpOnMainThread() override { url_loader_interceptor_ = std::make_unique<content::URLLoaderInterceptor>(base::BindRepeating( @@ -97,6 +115,7 @@ status.error_code = net::OK; if (params->url_request.url == GURL(kSiteWithBadHttps)) { + // Fail with an SSL error. status.error_code = net::ERR_CERT_COMMON_NAME_INVALID; status.ssl_info = net::SSLInfo(); status.ssl_info->cert_status = net::CERT_STATUS_COMMON_NAME_INVALID; @@ -114,12 +133,24 @@ return true; } - std::string headers = - "HTTP/1.1 200 OK\nContent-Type: text/html; charset=utf-8\n"; - std::string body = "<html><title>Success</title>Hello world</html>"; - content::URLLoaderInterceptor::WriteResponse(headers, body, - params->client.get()); - return true; + if (params->url_request.url == GURL(kSiteWithSlowHttps)) { + // Do nothing. This will hang the load. + return true; + } + + if (params->url_request.url == GURL(kSiteWithHttp) || + params->url_request.url == GURL(kSiteWithGoodHttps) || + params->url_request.url == GURL(kSiteWithBadHttpsOverHttp) || + params->url_request.url == GURL(kSiteWithSlowHttpsOverHttp) || + params->url_request.url == GURL(kSiteWithNetErrorOverHttp)) { + std::string headers = + "HTTP/1.1 200 OK\nContent-Type: text/html; charset=utf-8\n"; + std::string body = "<html><title>Success</title>Hello world</html>"; + content::URLLoaderInterceptor::WriteResponse(headers, body, + params->client.get()); + return true; + } + return false; } protected: @@ -151,6 +182,45 @@ omnibox()->OnAfterPossibleChange(true); } + void TypeUrlAndCheckNavigation(const std::string& hostname, + const base::HistogramTester& histograms, + NavigationExpectation expectation) { + const GURL http_url(std::string("http://") + hostname); + const GURL https_url(std::string("https://") + hostname); + SetOmniboxText(hostname); + + // Wait for navigations. + // - If the expectation is to successfully load the HTTPS URL, there should + // be a single navigation. + // - Otherwise, there should be two navigations: One for the initial HTTPS + // navigation (which will be cancelled because of the timeout, or SSL or net + // errors) and one for the fallback HTTP navigation (which will succeed). + PressEnterAndWaitForNavigations( + expectation == NavigationExpectation::kExpectHttps ? 1 : 2); + + content::WebContents* contents = + browser()->tab_strip_model()->GetActiveWebContents(); + const GURL expected_url = expectation == NavigationExpectation::kExpectHttps + ? https_url + : http_url; + EXPECT_EQ(expected_url, contents->GetLastCommittedURL()); + + // Should never hit an error page. + histograms.ExpectTotalCount(SSLErrorHandler::GetHistogramNameForTesting(), + 0); + histograms.ExpectTotalCount(kNetErrorHistogram, 0); + + // Should have either the HTTP or the HTTPS URL in history, but not both. + ui_test_utils::HistoryEnumerator enumerator(browser()->profile()); + if (expectation == NavigationExpectation::kExpectHttp) { + EXPECT_TRUE(base::Contains(enumerator.urls(), http_url)); + EXPECT_FALSE(base::Contains(enumerator.urls(), https_url)); + } else { + EXPECT_TRUE(base::Contains(enumerator.urls(), https_url)); + EXPECT_FALSE(base::Contains(enumerator.urls(), http_url)); + } + } + void PressEnterAndWaitForNavigations(size_t num_navigations) { content::TestNavigationObserver navigation_observer( browser()->tab_strip_model()->GetActiveWebContents(), num_navigations); @@ -285,19 +355,9 @@ const GURL http_url(kSiteWithGoodHttpsOverHttp); // Type "site-with-good-https.com". - SetOmniboxText(GetURLWithoutScheme(http_url)); - PressEnterAndWaitForNavigations(1); - - content::WebContents* contents = - browser()->tab_strip_model()->GetActiveWebContents(); - EXPECT_EQ(https_url, contents->GetLastCommittedURL()); - EXPECT_FALSE(chrome_browser_interstitials::IsShowingInterstitial(contents)); - // Should never hit an SSL interstitial. - histograms.ExpectTotalCount(SSLErrorHandler::GetHistogramNameForTesting(), 0); - // Should have the HTTPS URL in history. - ui_test_utils::HistoryEnumerator enumerator(browser()->profile()); - EXPECT_TRUE(base::Contains(enumerator.urls(), https_url)); - EXPECT_FALSE(base::Contains(enumerator.urls(), http_url)); + const GURL url(kSiteWithGoodHttps); + TypeUrlAndCheckNavigation(url.host(), histograms, + NavigationExpectation::kExpectHttps); histograms.ExpectTotalCount(TypedNavigationUpgradeThrottle::kHistogramName, 2); @@ -307,20 +367,16 @@ histograms.ExpectBucketCount( TypedNavigationUpgradeThrottle::kHistogramName, TypedNavigationUpgradeThrottle::Event::kHttpsLoadSucceeded, 1); + histograms.ExpectBucketCount( + TypedNavigationUpgradeThrottle::kHistogramName, + TypedNavigationUpgradeThrottle::Event::kHttpsLoadTimedOut, 0); // Now that the HTTPS URL is in history, try again. We should load it directly // without going through the upgrade. // Type "site-with-good-https.com". - SetOmniboxText(GetURLWithoutScheme(http_url)); - PressEnterAndWaitForNavigations(1); - - EXPECT_EQ(https_url, contents->GetLastCommittedURL()); - EXPECT_FALSE(chrome_browser_interstitials::IsShowingInterstitial(contents)); - // Should never hit an SSL interstitial. - histograms.ExpectTotalCount(SSLErrorHandler::GetHistogramNameForTesting(), 0); - // Should have the HTTPS URL in history. - EXPECT_TRUE(base::Contains(enumerator.urls(), https_url)); - EXPECT_FALSE(base::Contains(enumerator.urls(), http_url)); + SetOmniboxText(url.host()); + TypeUrlAndCheckNavigation(url.host(), histograms, + NavigationExpectation::kExpectHttps); // Since the throttle wasn't involved in the second navigation, histogram // values shouldn't change. @@ -332,6 +388,9 @@ histograms.ExpectBucketCount( TypedNavigationUpgradeThrottle::kHistogramName, TypedNavigationUpgradeThrottle::Event::kHttpsLoadSucceeded, 1); + histograms.ExpectBucketCount( + TypedNavigationUpgradeThrottle::kHistogramName, + TypedNavigationUpgradeThrottle::Event::kHttpsLoadTimedOut, 0); } // If the upgraded HTTPS URL is not available because of an SSL error), we @@ -341,29 +400,15 @@ if (!IsFeatureEnabled()) { return; } + base::HistogramTester histograms; const GURL https_url(kSiteWithBadHttps); const GURL http_url(kSiteWithBadHttpsOverHttp); // Type "site-with-bad-https.com". - SetOmniboxText(GetURLWithoutScheme(http_url)); - - // Wait for two navigations, one for the HTTPS navigation (which fails with a - // cert error) and one for the fallback HTTP navigation (which succeeds). - PressEnterAndWaitForNavigations(2); - - content::WebContents* contents = - browser()->tab_strip_model()->GetActiveWebContents(); - EXPECT_EQ(http_url, contents->GetLastCommittedURL()); - EXPECT_FALSE(chrome_browser_interstitials::IsShowingInterstitial(contents)); - - // Should never hit an error page. - histograms.ExpectTotalCount(SSLErrorHandler::GetHistogramNameForTesting(), 0); - histograms.ExpectTotalCount(kNetErrorHistogram, 0); - // Should only have the HTTP URL in history. - ui_test_utils::HistoryEnumerator enumerator(browser()->profile()); - EXPECT_TRUE(base::Contains(enumerator.urls(), http_url)); - EXPECT_FALSE(base::Contains(enumerator.urls(), https_url)); + const GURL url(kSiteWithBadHttps); + TypeUrlAndCheckNavigation(url.host(), histograms, + NavigationExpectation::kExpectHttp); histograms.ExpectTotalCount(TypedNavigationUpgradeThrottle::kHistogramName, 2); @@ -373,6 +418,9 @@ histograms.ExpectBucketCount( TypedNavigationUpgradeThrottle::kHistogramName, TypedNavigationUpgradeThrottle::Event::kHttpsLoadFailedWithCertError, 1); + histograms.ExpectBucketCount( + TypedNavigationUpgradeThrottle::kHistogramName, + TypedNavigationUpgradeThrottle::Event::kHttpsLoadTimedOut, 0); // TODO(meacer): Try again and check that the histogram counts doubled. Doing // that currently fails on lacros because this time the navigation never gets @@ -387,25 +435,11 @@ return; } base::HistogramTester histograms; + // Type "site-with-net-error.com". const GURL https_url(kSiteWithNetError); const GURL http_url(kSiteWithNetErrorOverHttp); - - // Type "site-with-net-error.com". - SetOmniboxText(GetURLWithoutScheme(http_url)); - - // Wait for two navigations, one for the HTTPS navigation (which fails with - // a connection error) and one for the fallback HTTP navigation (which - // succeeds). - PressEnterAndWaitForNavigations(2); - - content::WebContents* contents = - browser()->tab_strip_model()->GetActiveWebContents(); - EXPECT_EQ(http_url, contents->GetLastCommittedURL()); - EXPECT_FALSE(chrome_browser_interstitials::IsShowingInterstitial(contents)); - - // Should never hit an error page. - histograms.ExpectTotalCount(SSLErrorHandler::GetHistogramNameForTesting(), 0); - histograms.ExpectTotalCount(kNetErrorHistogram, 0); + TypeUrlAndCheckNavigation(http_url.host(), histograms, + NavigationExpectation::kExpectHttp); histograms.ExpectTotalCount(TypedNavigationUpgradeThrottle::kHistogramName, 2); @@ -415,6 +449,9 @@ histograms.ExpectBucketCount( TypedNavigationUpgradeThrottle::kHistogramName, TypedNavigationUpgradeThrottle::Event::kHttpsLoadFailedWithNetError, 1); + histograms.ExpectBucketCount( + TypedNavigationUpgradeThrottle::kHistogramName, + TypedNavigationUpgradeThrottle::Event::kHttpsLoadTimedOut, 0); ui_test_utils::HistoryEnumerator enumerator(browser()->profile()); EXPECT_TRUE(base::Contains(enumerator.urls(), http_url)); @@ -425,6 +462,45 @@ // upgraded (probably because of an issue in the autocomplete logic). } +class TypedNavigationUpgradeThrottleFastTimeoutBrowserTest + : public TypedNavigationUpgradeThrottleBrowserTest { + protected: + void SetUp() override { + // Set timeout to zero so that HTTPS upgrades immediately timeout. + SetUpFeature(base::TimeDelta::FromSeconds(0)); + InProcessBrowserTest::SetUp(); + } +}; + +INSTANTIATE_TEST_SUITE_P(All, + TypedNavigationUpgradeThrottleFastTimeoutBrowserTest, + testing::Bool() /* IsFeatureEnabled */); + +// If the upgraded HTTPS URL does not load within the timeout window, we should +// load the HTTP URL. +IN_PROC_BROWSER_TEST_P(TypedNavigationUpgradeThrottleFastTimeoutBrowserTest, + UrlTypedWithoutScheme_SlowHttps_ShouldFallback) { + if (!IsFeatureEnabled()) { + return; + } + + base::HistogramTester histograms; + + // Type "site-with-slow-https.com". + const GURL url(kSiteWithSlowHttps); + TypeUrlAndCheckNavigation(url.host(), histograms, + NavigationExpectation::kExpectHttp); + + histograms.ExpectTotalCount(TypedNavigationUpgradeThrottle::kHistogramName, + 2); + histograms.ExpectBucketCount( + TypedNavigationUpgradeThrottle::kHistogramName, + TypedNavigationUpgradeThrottle::Event::kHttpsLoadStarted, 1); + histograms.ExpectBucketCount( + TypedNavigationUpgradeThrottle::kHistogramName, + TypedNavigationUpgradeThrottle::Event::kHttpsLoadTimedOut, 1); +} + // TODO(crbug.com/1141691): Test the following cases: // - Various types of omnibox entries (URLs typed with a port, URLs in history, // non-unique URLs such as machine.local, IP addresses etc.
diff --git a/chrome/browser/supervised_user/supervised_user_extension_browsertest.cc b/chrome/browser/supervised_user/supervised_user_extension_browsertest.cc index c41af7c5..11e0022 100644 --- a/chrome/browser/supervised_user/supervised_user_extension_browsertest.cc +++ b/chrome/browser/supervised_user/supervised_user_extension_browsertest.cc
@@ -3,11 +3,9 @@ // found in the LICENSE file. #include "base/files/file_path.h" -#include "base/test/scoped_feature_list.h" #include "chrome/browser/extensions/extension_browsertest.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/supervised_user/logged_in_user_mixin.h" -#include "chrome/browser/supervised_user/supervised_user_features.h" #include "chrome/browser/supervised_user/supervised_user_service.h" #include "chrome/browser/supervised_user/supervised_user_service_factory.h" #include "chrome/test/base/mixin_based_in_process_browser_test.h" @@ -37,8 +35,6 @@ // We have to essentially replicate what MixinBasedInProcessBrowserTest does // here because ExtensionBrowserTest doesn't inherit from that class. void SetUp() override { - scoped_feature_list_.InitAndEnableFeature( - supervised_users::kSupervisedUserInitiatedExtensionInstall); mixin_host_.SetUp(); ExtensionBrowserTest::SetUp(); } @@ -118,8 +114,6 @@ content::IsPreTest() ? chromeos::LoggedInUserMixin::LogInType::kChild : chromeos::LoggedInUserMixin::LogInType::kRegular, embedded_test_server(), this}; - - base::test::ScopedFeatureList scoped_feature_list_; }; // Removing supervision should also remove associated disable reasons, such as
diff --git a/chrome/browser/supervised_user/supervised_user_extension_unittest.cc b/chrome/browser/supervised_user/supervised_user_extension_unittest.cc index d693d49..b5a5380 100644 --- a/chrome/browser/supervised_user/supervised_user_extension_unittest.cc +++ b/chrome/browser/supervised_user/supervised_user_extension_unittest.cc
@@ -6,14 +6,12 @@ #include "base/test/metrics/histogram_tester.h" #include "base/test/metrics/user_action_tester.h" -#include "base/test/scoped_feature_list.h" #include "chrome/browser/extensions/api/webstore_private/webstore_private_api.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_service_test_with_install.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/supervised_user/supervised_user_constants.h" #include "chrome/browser/supervised_user/supervised_user_extensions_metrics_recorder.h" -#include "chrome/browser/supervised_user/supervised_user_features.h" #include "chrome/browser/supervised_user/supervised_user_service.h" #include "chrome/browser/supervised_user/supervised_user_service_factory.h" #include "chrome/common/pref_names.h" @@ -39,34 +37,6 @@ SupervisedUserExtensionTest() = default; protected: - // These enum values represent various feature flags for enabling supervised - // users to install extensions. - enum class ExtensionInstallMode { - // Turn off all the feature flags. - kNone, - // Refers to the full extensions feature where each install has be approved - // through the parent permissions dialog. - kFull - }; - - // Enables or disables features for allowing supervised users to install - // extensions. - void InitSupervisedUserExtensionInstallFeatures(ExtensionInstallMode mode) { - std::vector<base::Feature> enabled_features; - std::vector<base::Feature> disabled_features; - switch (mode) { - case ExtensionInstallMode::kNone: - disabled_features.push_back( - supervised_users::kSupervisedUserInitiatedExtensionInstall); - break; - case ExtensionInstallMode::kFull: - enabled_features.push_back( - supervised_users::kSupervisedUserInitiatedExtensionInstall); - break; - } - scoped_feature_list_.InitWithFeatures(enabled_features, disabled_features); - } - void SetSupervisedUserExtensionsMayRequestPermissionsPref(bool enabled) { supervised_user_service() ->SetSupervisedUserExtensionsMayRequestPermissionsPrefForTesting( @@ -198,22 +168,8 @@ base::FilePath pem_path() const { return base_path().AppendASCII("permissions.pem"); } - - base::test::ScopedFeatureList scoped_feature_list_; }; -// Tests that extension installation is blocked for child accounts without any -// features. -TEST_F(SupervisedUserExtensionTest, InstallBlocked) { - InitSupervisedUserExtensionInstallFeatures(ExtensionInstallMode::kNone); - InitServices(/*profile_is_supervised=*/true); - - base::FilePath path = data_dir().AppendASCII("good.crx"); - const Extension* extension = InstallCRX(path, INSTALL_FAILED); - // The extension should not have been installed. - EXPECT_FALSE(extension); -} - // Tests that regular users are not affecting supervised user UMA metrics. TEST_F(SupervisedUserExtensionTest, RegularUsersNotAffectingSupervisedUserMetrics) { @@ -240,7 +196,6 @@ // unexpected behavior. TEST_F(SupervisedUserExtensionTest, CustodianApprovalDoesNotAffectRegularUsers) { - InitSupervisedUserExtensionInstallFeatures(ExtensionInstallMode::kFull); InitServices(/*profile_is_supervised=*/false); SetSupervisedUserExtensionsMayRequestPermissionsPref(false); @@ -262,7 +217,6 @@ // Tests that adding supervision to a regular account (Gellerization) disables // previously installed extensions. TEST_F(SupervisedUserExtensionTest, ExtensionsDisabledAfterGellerization) { - InitSupervisedUserExtensionInstallFeatures(ExtensionInstallMode::kFull); InitServices(/*profile_is_supervised=*/false); SetSupervisedUserExtensionsMayRequestPermissionsPref(true); @@ -299,7 +253,6 @@ // newly-installed extensions are disabled until approved by the parent. TEST_F(SupervisedUserExtensionTest, InstallAllowedButDisabledForSupervisedUser) { - InitSupervisedUserExtensionInstallFeatures(ExtensionInstallMode::kFull); InitServices(/*profile_is_supervised=*/true); SetSupervisedUserExtensionsMayRequestPermissionsPref(true); @@ -327,7 +280,6 @@ // Tests that supervised users may approve permission updates without parent // approval if kSupervisedUserExtensionsMayRequestPermissions is true. TEST_F(SupervisedUserExtensionTest, UpdateWithPermissionsIncrease) { - InitSupervisedUserExtensionInstallFeatures(ExtensionInstallMode::kFull); InitServices(/*profile_is_supervised=*/true); SetSupervisedUserExtensionsMayRequestPermissionsPref(true); @@ -404,7 +356,6 @@ // cannot approve permission updates. TEST_F(SupervisedUserExtensionTest, ChildUserCannotApproveAdditionalPermissions) { - InitSupervisedUserExtensionInstallFeatures(ExtensionInstallMode::kFull); InitServices(/*profile_is_supervised=*/true); // Keep the toggle on initially just to install the extension. SetSupervisedUserExtensionsMayRequestPermissionsPref(true); @@ -461,7 +412,6 @@ // Tests that if an approved extension is updated to a newer version that // doesn't require additional permissions, it is still enabled. TEST_F(SupervisedUserExtensionTest, UpdateWithoutPermissionIncrease) { - InitSupervisedUserExtensionInstallFeatures(ExtensionInstallMode::kFull); InitServices(/*profile_is_supervised=*/true); SetSupervisedUserExtensionsMayRequestPermissionsPref(true); @@ -507,7 +457,6 @@ // Tests that the kApprovalGranted UMA metric only increments once without // duplication for the same extension id. TEST_F(SupervisedUserExtensionTest, DontTriggerMetricsIfAlreadyApproved) { - InitSupervisedUserExtensionInstallFeatures(ExtensionInstallMode::kFull); InitServices(/*profile_is_supervised=*/true); SetSupervisedUserExtensionsMayRequestPermissionsPref(true); @@ -565,7 +514,6 @@ // kSupervisedUserExtensionsMayRequestPermissions set to false, then child users // cannot install new extensions. TEST_F(SupervisedUserExtensionTest, SupervisedUserCannotInstallExtension) { - InitSupervisedUserExtensionInstallFeatures(ExtensionInstallMode::kFull); InitServices(/*profile_is_supervised=*/true); SetSupervisedUserExtensionsMayRequestPermissionsPref(false); @@ -578,7 +526,6 @@ // Tests that disabling the "Permissions for sites, apps and extensions" toggle // has no effect on regular users. TEST_F(SupervisedUserExtensionTest, RegularUserCanInstallExtension) { - InitSupervisedUserExtensionInstallFeatures(ExtensionInstallMode::kFull); InitServices(/*profile_is_supervised=*/false); SetSupervisedUserExtensionsMayRequestPermissionsPref(false); @@ -594,7 +541,6 @@ // kSupervisedUserExtensionsMayRequestPermissions set to false, previously // approved extensions are still enabled. TEST_F(SupervisedUserExtensionTest, ToggleOffDoesNotAffectAlreadyEnabled) { - InitSupervisedUserExtensionInstallFeatures(ExtensionInstallMode::kFull); InitServices(/*profile_is_supervised=*/true); SetSupervisedUserExtensionsMayRequestPermissionsPref(true); @@ -619,7 +565,6 @@ // Tests the case when the extension approval arrives through sync before the // extension itself is installed. TEST_F(SupervisedUserExtensionTest, ExtensionApprovalBeforeInstallation) { - InitSupervisedUserExtensionInstallFeatures(ExtensionInstallMode::kFull); InitServices(/*profile_is_supervised=*/true); SetSupervisedUserExtensionsMayRequestPermissionsPref(true); @@ -638,7 +583,6 @@ // extensions when both disable reasons custodian_approval_required and // permissions_increase are present. TEST_F(SupervisedUserExtensionTest, ParentApprovalNecessaryButNotSufficient) { - InitSupervisedUserExtensionInstallFeatures(ExtensionInstallMode::kFull); InitServices(/*profile_is_supervised=*/true); SetSupervisedUserExtensionsMayRequestPermissionsPref(true);
diff --git a/chrome/browser/supervised_user/supervised_user_features.cc b/chrome/browser/supervised_user/supervised_user_features.cc index 130db69..60ddedfd 100644 --- a/chrome/browser/supervised_user/supervised_user_features.cc +++ b/chrome/browser/supervised_user/supervised_user_features.cc
@@ -11,10 +11,6 @@ const base::Feature kSupervisedUserIframeFilter{ "SupervisedUserIframeFilter", base::FEATURE_ENABLED_BY_DEFAULT}; -const base::Feature kSupervisedUserInitiatedExtensionInstall{ - "SupervisedUserInitiatedExtensionInstall", - base::FEATURE_ENABLED_BY_DEFAULT}; - const base::Feature kEduCoexistenceFlowV2{"EduCoexistenceV2", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/chrome/browser/supervised_user/supervised_user_features.h b/chrome/browser/supervised_user/supervised_user_features.h index 419381a..27ff3f9a7 100644 --- a/chrome/browser/supervised_user/supervised_user_features.h +++ b/chrome/browser/supervised_user/supervised_user_features.h
@@ -11,8 +11,6 @@ extern const base::Feature kSupervisedUserIframeFilter; -extern const base::Feature kSupervisedUserInitiatedExtensionInstall; - extern const base::Feature kEduCoexistenceFlowV2; bool IsEduCoexistenceFlowV2Enabled();
diff --git a/chrome/browser/supervised_user/supervised_user_service.cc b/chrome/browser/supervised_user/supervised_user_service.cc index 5775c8a..a52d0c04 100644 --- a/chrome/browser/supervised_user/supervised_user_service.cc +++ b/chrome/browser/supervised_user/supervised_user_service.cc
@@ -281,11 +281,6 @@ return profile_->IsChild(); } -bool SupervisedUserService::IsSupervisedUserExtensionInstallEnabled() const { - return base::FeatureList::IsEnabled( - supervised_users::kSupervisedUserInitiatedExtensionInstall); -} - bool SupervisedUserService::HasACustodian() const { return !GetCustodianEmailAddress().empty() || !GetSecondCustodianEmailAddress().empty(); @@ -389,7 +384,7 @@ } bool SupervisedUserService::CanInstallExtensions() const { - return IsSupervisedUserExtensionInstallEnabled() && HasACustodian() && + return HasACustodian() && GetSupervisedUserExtensionsMayRequestPermissionsPref(); } @@ -791,12 +786,6 @@ return ExtensionState::ALLOWED; } - // Feature flag for gating new behavior. - if (!base::FeatureList::IsEnabled( - supervised_users::kSupervisedUserInitiatedExtensionInstall)) { - return ExtensionState::BLOCKED; - } - if (ShouldBlockExtension(extension.id())) { return ExtensionState::BLOCKED; }
diff --git a/chrome/browser/supervised_user/supervised_user_service_unittest.cc b/chrome/browser/supervised_user/supervised_user_service_unittest.cc index 739091c..b08089f 100644 --- a/chrome/browser/supervised_user/supervised_user_service_unittest.cc +++ b/chrome/browser/supervised_user/supervised_user_service_unittest.cc
@@ -15,7 +15,6 @@ #include "base/path_service.h" #include "base/run_loop.h" #include "base/strings/utf_string_conversions.h" -#include "base/test/scoped_feature_list.h" #include "base/threading/thread_task_runner_handle.h" #include "base/values.h" #include "build/build_config.h" @@ -23,7 +22,6 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/signin/identity_test_environment_profile_adaptor.h" #include "chrome/browser/supervised_user/permission_request_creator.h" -#include "chrome/browser/supervised_user/supervised_user_features.h" #include "chrome/browser/supervised_user/supervised_user_service_factory.h" #include "chrome/test/base/testing_profile.h" #include "components/prefs/pref_service.h" @@ -347,17 +345,9 @@ return extension; } - void InitSupervisedUserInitiatedExtensionInstallFeature(bool enabled) { - if (enabled) { - scoped_feature_list_.InitAndEnableFeature( - supervised_users::kSupervisedUserInitiatedExtensionInstall); - } - } - bool is_supervised_; extensions::ScopedCurrentChannel channel_; SupervisedUserURLFilterObserver url_filter_observer_; - base::test::ScopedFeatureList scoped_feature_list_; }; class SupervisedUserServiceExtensionTestUnsupervised @@ -376,8 +366,6 @@ TEST_F(SupervisedUserServiceExtensionTest, ExtensionManagementPolicyProviderWithoutSUInitiatedInstalls) { - InitSupervisedUserInitiatedExtensionInstallFeature(true); - SupervisedUserService* supervised_user_service = SupervisedUserServiceFactory::GetForProfile(profile_.get()); supervised_user_service @@ -429,12 +417,10 @@ TEST_F(SupervisedUserServiceExtensionTest, ExtensionManagementPolicyProviderWithSUInitiatedInstalls) { - // Enable child users to initiate extension installs by simulating the - // toggling of "Permissions for sites and apps" to enabled. - InitSupervisedUserInitiatedExtensionInstallFeature(true); - SupervisedUserService* supervised_user_service = SupervisedUserServiceFactory::GetForProfile(profile_.get()); + // Enable child users to initiate extension installs by simulating the + // toggling of "Permissions for sites, apps and extensions" to enabled. supervised_user_service ->SetSupervisedUserExtensionsMayRequestPermissionsPrefForTesting(true); EXPECT_TRUE(supervised_user_service
diff --git a/chrome/browser/sync_file_system/drive_backend/fake_sync_worker.cc b/chrome/browser/sync_file_system/drive_backend/fake_sync_worker.cc index 05a9d70..52ce68c 100644 --- a/chrome/browser/sync_file_system/drive_backend/fake_sync_worker.cc +++ b/chrome/browser/sync_file_system/drive_backend/fake_sync_worker.cc
@@ -65,10 +65,9 @@ std::move(callback).Run(SYNC_STATUS_OK); } -void FakeSyncWorker::ProcessRemoteChange( - const SyncFileCallback& callback) { +void FakeSyncWorker::ProcessRemoteChange(SyncFileCallback callback) { DCHECK(sequence_checker_.CalledOnValidSequence()); - callback.Run(SYNC_STATUS_OK, storage::FileSystemURL()); + std::move(callback).Run(SYNC_STATUS_OK, storage::FileSystemURL()); } void FakeSyncWorker::SetRemoteChangeProcessor(
diff --git a/chrome/browser/sync_file_system/drive_backend/fake_sync_worker.h b/chrome/browser/sync_file_system/drive_backend/fake_sync_worker.h index c44cf31..b1685cf3 100644 --- a/chrome/browser/sync_file_system/drive_backend/fake_sync_worker.h +++ b/chrome/browser/sync_file_system/drive_backend/fake_sync_worker.h
@@ -53,7 +53,7 @@ void UninstallOrigin(const GURL& origin, RemoteFileSyncService::UninstallFlag flag, SyncStatusCallback callback) override; - void ProcessRemoteChange(const SyncFileCallback& callback) override; + void ProcessRemoteChange(SyncFileCallback callback) override; void SetRemoteChangeProcessor(RemoteChangeProcessorOnWorker* remote_change_processor_on_worker) override; RemoteServiceState GetCurrentState() const override;
diff --git a/chrome/browser/sync_file_system/drive_backend/sync_engine.cc b/chrome/browser/sync_file_system/drive_backend/sync_engine.cc index a1b2e2e..38064255 100644 --- a/chrome/browser/sync_file_system/drive_backend/sync_engine.cc +++ b/chrome/browser/sync_file_system/drive_backend/sync_engine.cc
@@ -8,6 +8,7 @@ #include <vector> #include "base/bind.h" +#include "base/callback_helpers.h" #include "base/macros.h" #include "base/metrics/histogram_macros.h" #include "base/task/post_task.h" @@ -450,24 +451,33 @@ flag, std::move(relayed_callback))); } -void SyncEngine::ProcessRemoteChange(const SyncFileCallback& callback) { +void SyncEngine::ProcessRemoteChange(SyncFileCallback callback) { if (GetCurrentState() == REMOTE_SERVICE_DISABLED) { - callback.Run(SYNC_STATUS_SYNC_DISABLED, storage::FileSystemURL()); + std::move(callback).Run(SYNC_STATUS_SYNC_DISABLED, + storage::FileSystemURL()); return; } - base::Closure abort_closure = - base::Bind(callback, SYNC_STATUS_ABORT, storage::FileSystemURL()); + // TODO: Callback tracker does not support OnceCallbacks. Use + // SplitOnceCallback when it does. + using AdaptedSyncFileCallback = base::RepeatingCallback<void( + SyncStatusCode status, const storage::FileSystemURL& url)>; + + AdaptedSyncFileCallback adapted_callback = + base::AdaptCallbackForRepeating(std::move(callback)); + + base::RepeatingClosure abort_closure = base::BindRepeating( + adapted_callback, SYNC_STATUS_ABORT, storage::FileSystemURL()); if (!sync_worker_) { abort_closure.Run(); return; } - SyncFileCallback tracked_callback = callback_tracker_.Register( - abort_closure, callback); - SyncFileCallback relayed_callback = RelayCallbackToCurrentThread( - FROM_HERE, tracked_callback); + AdaptedSyncFileCallback tracked_callback = + callback_tracker_.Register(abort_closure, adapted_callback); + AdaptedSyncFileCallback relayed_callback = + RelayCallbackToCurrentThread(FROM_HERE, tracked_callback); worker_task_runner_->PostTask( FROM_HERE, base::BindOnce(&SyncWorkerInterface::ProcessRemoteChange,
diff --git a/chrome/browser/sync_file_system/drive_backend/sync_engine.h b/chrome/browser/sync_file_system/drive_backend/sync_engine.h index e63993c..eac4fa55c 100644 --- a/chrome/browser/sync_file_system/drive_backend/sync_engine.h +++ b/chrome/browser/sync_file_system/drive_backend/sync_engine.h
@@ -114,7 +114,7 @@ void UninstallOrigin(const GURL& origin, UninstallFlag flag, SyncStatusCallback callback) override; - void ProcessRemoteChange(const SyncFileCallback& callback) override; + void ProcessRemoteChange(SyncFileCallback callback) override; void SetRemoteChangeProcessor(RemoteChangeProcessor* processor) override; LocalChangeProcessor* GetLocalChangeProcessor() override; RemoteServiceState GetCurrentState() const override;
diff --git a/chrome/browser/sync_file_system/drive_backend/sync_worker.cc b/chrome/browser/sync_file_system/drive_backend/sync_worker.cc index c09d577..4735021 100644 --- a/chrome/browser/sync_file_system/drive_backend/sync_worker.cc +++ b/chrome/browser/sync_file_system/drive_backend/sync_worker.cc
@@ -133,15 +133,16 @@ SyncTaskManager::PRIORITY_HIGH, std::move(callback)); } -void SyncWorker::ProcessRemoteChange(const SyncFileCallback& callback) { +void SyncWorker::ProcessRemoteChange(SyncFileCallback callback) { DCHECK(sequence_checker_.CalledOnValidSequence()); RemoteToLocalSyncer* syncer = new RemoteToLocalSyncer(context_.get()); task_manager_->ScheduleSyncTask( FROM_HERE, std::unique_ptr<SyncTask>(syncer), SyncTaskManager::PRIORITY_MED, - base::Bind(&SyncWorker::DidProcessRemoteChange, - weak_ptr_factory_.GetWeakPtr(), syncer, callback)); + base::BindOnce(&SyncWorker::DidProcessRemoteChange, + weak_ptr_factory_.GetWeakPtr(), syncer, + std::move(callback))); } void SyncWorker::SetRemoteChangeProcessor( @@ -477,14 +478,14 @@ } void SyncWorker::DidProcessRemoteChange(RemoteToLocalSyncer* syncer, - const SyncFileCallback& callback, + SyncFileCallback callback, SyncStatusCode status) { DCHECK(sequence_checker_.CalledOnValidSequence()); if (syncer->is_sync_root_deletion()) { MetadataDatabase::ClearDatabase(context_->PassMetadataDatabase()); PostInitializeTask(); - callback.Run(status, syncer->url()); + std::move(callback).Run(status, syncer->url()); return; } @@ -505,7 +506,7 @@ } should_check_conflict_ = true; } - callback.Run(status, syncer->url()); + std::move(callback).Run(status, syncer->url()); } void SyncWorker::DidApplyLocalChange(LocalToRemoteSyncer* syncer,
diff --git a/chrome/browser/sync_file_system/drive_backend/sync_worker.h b/chrome/browser/sync_file_system/drive_backend/sync_worker.h index 0b3adb6..8219a88 100644 --- a/chrome/browser/sync_file_system/drive_backend/sync_worker.h +++ b/chrome/browser/sync_file_system/drive_backend/sync_worker.h
@@ -83,7 +83,7 @@ void UninstallOrigin(const GURL& origin, RemoteFileSyncService::UninstallFlag flag, SyncStatusCallback callback) override; - void ProcessRemoteChange(const SyncFileCallback& callback) override; + void ProcessRemoteChange(SyncFileCallback callback) override; void SetRemoteChangeProcessor(RemoteChangeProcessorOnWorker* remote_change_processor_on_worker) override; RemoteServiceState GetCurrentState() const override; @@ -132,7 +132,7 @@ const base::Closure& callback); void DidQueryAppStatus(const AppStatusMap* app_status); void DidProcessRemoteChange(RemoteToLocalSyncer* syncer, - const SyncFileCallback& callback, + SyncFileCallback callback, SyncStatusCode status); void DidApplyLocalChange(LocalToRemoteSyncer* syncer, SyncStatusCallback callback,
diff --git a/chrome/browser/sync_file_system/drive_backend/sync_worker_interface.h b/chrome/browser/sync_file_system/drive_backend/sync_worker_interface.h index b024fcb..23defdc 100644 --- a/chrome/browser/sync_file_system/drive_backend/sync_worker_interface.h +++ b/chrome/browser/sync_file_system/drive_backend/sync_worker_interface.h
@@ -70,7 +70,7 @@ virtual void UninstallOrigin(const GURL& origin, RemoteFileSyncService::UninstallFlag flag, SyncStatusCallback callback) = 0; - virtual void ProcessRemoteChange(const SyncFileCallback& callback) = 0; + virtual void ProcessRemoteChange(SyncFileCallback callback) = 0; virtual void SetRemoteChangeProcessor( RemoteChangeProcessorOnWorker* remote_change_processor_on_worker) = 0; virtual RemoteServiceState GetCurrentState() const = 0;
diff --git a/chrome/browser/sync_file_system/local/local_file_sync_context.cc b/chrome/browser/sync_file_system/local/local_file_sync_context.cc index feca6df..75c4ff7 100644 --- a/chrome/browser/sync_file_system/local/local_file_sync_context.cc +++ b/chrome/browser/sync_file_system/local/local_file_sync_context.cc
@@ -154,15 +154,16 @@ storage::FileSystemContext* file_system_context, const storage::FileSystemURL& url, SyncStatusCode sync_finish_status, - const base::Closure& done_callback) { + base::OnceClosure done_callback) { DCHECK(file_system_context); DCHECK(url.is_valid()); if (!file_system_context->default_file_task_runner()-> RunsTasksInCurrentSequence()) { file_system_context->default_file_task_runner()->PostTask( - FROM_HERE, base::BindOnce(&LocalFileSyncContext::FinalizeSnapshotSync, - this, base::RetainedRef(file_system_context), - url, sync_finish_status, done_callback)); + FROM_HERE, + base::BindOnce(&LocalFileSyncContext::FinalizeSnapshotSync, this, + base::RetainedRef(file_system_context), url, + sync_finish_status, std::move(done_callback))); return; } @@ -188,7 +189,7 @@ this, url)); // Call the completion callback on UI thread. - ui_task_runner_->PostTask(FROM_HERE, done_callback); + ui_task_runner_->PostTask(FROM_HERE, std::move(done_callback)); } void LocalFileSyncContext::FinalizeExclusiveSync(
diff --git a/chrome/browser/sync_file_system/local/local_file_sync_context.h b/chrome/browser/sync_file_system/local/local_file_sync_context.h index 1efb58f..d034d4a 100644 --- a/chrome/browser/sync_file_system/local/local_file_sync_context.h +++ b/chrome/browser/sync_file_system/local/local_file_sync_context.h
@@ -115,7 +115,7 @@ void FinalizeSnapshotSync(storage::FileSystemContext* file_system_context, const storage::FileSystemURL& url, SyncStatusCode sync_finish_status, - const base::Closure& done_callback); + base::OnceClosure done_callback); // Finalizes ExclusiveSync, which must have been started by // PrepareForSync with SYNC_EXCLUSIVE.
diff --git a/chrome/browser/sync_file_system/local/local_file_sync_service.cc b/chrome/browser/sync_file_system/local/local_file_sync_service.cc index 3240c11..129d400 100644 --- a/chrome/browser/sync_file_system/local/local_file_sync_service.cc +++ b/chrome/browser/sync_file_system/local/local_file_sync_service.cc
@@ -155,12 +155,11 @@ sync_context_->RegisterURLForWaitingSync(url, on_syncable_callback); } -void LocalFileSyncService::ProcessLocalChange( - const SyncFileCallback& callback) { +void LocalFileSyncService::ProcessLocalChange(SyncFileCallback callback) { // Pick an origin to process next. GURL origin; if (!origin_change_map_.NextOriginToProcess(&origin)) { - callback.Run(SYNC_STATUS_NO_CHANGE_TO_SYNC, FileSystemURL()); + std::move(callback).Run(SYNC_STATUS_NO_CHANGE_TO_SYNC, FileSystemURL()); return; } DCHECK(!origin.is_empty()); @@ -170,8 +169,8 @@ sync_context_->GetFileForLocalSync( origin_to_contexts_[origin], - base::Bind(&LocalFileSyncService::DidGetFileForLocalSync, - AsWeakPtr(), callback)); + base::BindOnce(&LocalFileSyncService::DidGetFileForLocalSync, AsWeakPtr(), + std::move(callback))); } void LocalFileSyncService::SetLocalChangeProcessor( @@ -404,17 +403,17 @@ } void LocalFileSyncService::DidGetFileForLocalSync( - const SyncFileCallback& callback, + SyncFileCallback callback, SyncStatusCode status, const LocalFileSyncInfo& sync_file_info, storage::ScopedFile snapshot) { if (status != SYNC_STATUS_OK) { - callback.Run(status, sync_file_info.url); + std::move(callback).Run(status, sync_file_info.url); return; } if (sync_file_info.changes.empty()) { // There's a slight chance this could happen. - ProcessLocalChange(callback); + ProcessLocalChange(std::move(callback)); return; } @@ -422,19 +421,18 @@ DVLOG(1) << "ProcessLocalChange: " << sync_file_info.url.DebugString() << " change:" << next_change.DebugString(); - GetLocalChangeProcessor(sync_file_info.url)->ApplyLocalChange( - next_change, - sync_file_info.local_file_path, - sync_file_info.metadata, - sync_file_info.url, - base::Bind(&LocalFileSyncService::ProcessNextChangeForURL, - AsWeakPtr(), callback, - base::Passed(&snapshot), sync_file_info, - next_change, sync_file_info.changes.PopAndGetNewList())); + GetLocalChangeProcessor(sync_file_info.url) + ->ApplyLocalChange( + next_change, sync_file_info.local_file_path, sync_file_info.metadata, + sync_file_info.url, + base::BindOnce(&LocalFileSyncService::ProcessNextChangeForURL, + AsWeakPtr(), std::move(callback), std::move(snapshot), + sync_file_info, next_change, + sync_file_info.changes.PopAndGetNewList())); } void LocalFileSyncService::ProcessNextChangeForURL( - const SyncFileCallback& callback, + SyncFileCallback callback, storage::ScopedFile snapshot, const LocalFileSyncInfo& sync_file_info, const FileChange& processed_change, @@ -446,14 +444,14 @@ << " status:" << status; if (status == SYNC_STATUS_RETRY) { - GetLocalChangeProcessor(sync_file_info.url)->ApplyLocalChange( - processed_change, - sync_file_info.local_file_path, - sync_file_info.metadata, - sync_file_info.url, - base::Bind(&LocalFileSyncService::ProcessNextChangeForURL, - AsWeakPtr(), callback, base::Passed(&snapshot), - sync_file_info, processed_change, changes)); + GetLocalChangeProcessor(sync_file_info.url) + ->ApplyLocalChange( + processed_change, sync_file_info.local_file_path, + sync_file_info.metadata, sync_file_info.url, + base::BindOnce(&LocalFileSyncService::ProcessNextChangeForURL, + AsWeakPtr(), std::move(callback), + std::move(snapshot), sync_file_info, + processed_change, changes)); return; } @@ -468,20 +466,17 @@ DCHECK(base::Contains(origin_to_contexts_, url.origin().GetURL())); sync_context_->FinalizeSnapshotSync( origin_to_contexts_[url.origin().GetURL()], url, status, - base::Bind(callback, status, url)); + base::BindOnce(std::move(callback), status, url)); return; } FileChange next_change = changes.front(); GetLocalChangeProcessor(url)->ApplyLocalChange( - changes.front(), - sync_file_info.local_file_path, - sync_file_info.metadata, + changes.front(), sync_file_info.local_file_path, sync_file_info.metadata, url, - base::Bind(&LocalFileSyncService::ProcessNextChangeForURL, - AsWeakPtr(), callback, - base::Passed(&snapshot), sync_file_info, - next_change, changes.PopAndGetNewList())); + base::BindOnce(&LocalFileSyncService::ProcessNextChangeForURL, + AsWeakPtr(), std::move(callback), std::move(snapshot), + sync_file_info, next_change, changes.PopAndGetNewList())); } LocalChangeProcessor* LocalFileSyncService::GetLocalChangeProcessor(
diff --git a/chrome/browser/sync_file_system/local/local_file_sync_service.h b/chrome/browser/sync_file_system/local/local_file_sync_service.h index 7eb1ef2..68bb6c2 100644 --- a/chrome/browser/sync_file_system/local/local_file_sync_service.h +++ b/chrome/browser/sync_file_system/local/local_file_sync_service.h
@@ -101,7 +101,7 @@ // using local_change_processor given by SetLocalChangeProcessor(). // |processor| must have same or longer lifetime than this service. // It is invalid to call this method before calling SetLocalChangeProcessor(). - void ProcessLocalChange(const SyncFileCallback& callback); + void ProcessLocalChange(SyncFileCallback callback); // Sets a local change processor. The value is ignored if // SetLocalChangeProcessorCallback() is called separately. @@ -203,11 +203,11 @@ void DidApplyRemoteChange(SyncStatusCallback callback, SyncStatusCode status); // Callbacks for ProcessLocalChange. - void DidGetFileForLocalSync(const SyncFileCallback& callback, + void DidGetFileForLocalSync(SyncFileCallback callback, SyncStatusCode status, const LocalFileSyncInfo& sync_file_info, storage::ScopedFile snapshot); - void ProcessNextChangeForURL(const SyncFileCallback& callback, + void ProcessNextChangeForURL(SyncFileCallback callback, storage::ScopedFile snapshot, const LocalFileSyncInfo& sync_file_info, const FileChange& last_change,
diff --git a/chrome/browser/sync_file_system/mock_remote_file_sync_service.cc b/chrome/browser/sync_file_system/mock_remote_file_sync_service.cc index d67825f..6ee3eb1 100644 --- a/chrome/browser/sync_file_system/mock_remote_file_sync_service.cc +++ b/chrome/browser/sync_file_system/mock_remote_file_sync_service.cc
@@ -105,10 +105,11 @@ } void MockRemoteFileSyncService::ProcessRemoteChangeStub( - const SyncFileCallback& callback) { + SyncFileCallback callback) { base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::BindOnce(callback, SYNC_STATUS_NO_CHANGE_TO_SYNC, - storage::FileSystemURL())); + FROM_HERE, + base::BindOnce(std::move(callback), SYNC_STATUS_NO_CHANGE_TO_SYNC, + storage::FileSystemURL())); } RemoteServiceState MockRemoteFileSyncService::GetCurrentStateStub() const {
diff --git a/chrome/browser/sync_file_system/mock_remote_file_sync_service.h b/chrome/browser/sync_file_system/mock_remote_file_sync_service.h index 11e6bdc..313246f8 100644 --- a/chrome/browser/sync_file_system/mock_remote_file_sync_service.h +++ b/chrome/browser/sync_file_system/mock_remote_file_sync_service.h
@@ -46,8 +46,7 @@ void(const GURL& origin, UninstallFlag flag, SyncStatusCallback callback)); - MOCK_METHOD1(ProcessRemoteChange, - void(const SyncFileCallback& callback)); + MOCK_METHOD1(ProcessRemoteChange, void(SyncFileCallback callback)); MOCK_METHOD1(SetRemoteChangeProcessor, void(RemoteChangeProcessor* processor)); MOCK_METHOD0(GetLocalChangeProcessor, LocalChangeProcessor*()); @@ -82,7 +81,7 @@ void DeleteOriginDirectoryStub(const GURL& origin, UninstallFlag flag, SyncStatusCallback callback); - void ProcessRemoteChangeStub(const SyncFileCallback& callback); + void ProcessRemoteChangeStub(SyncFileCallback callback); RemoteServiceState GetCurrentStateStub() const; // For default implementation.
diff --git a/chrome/browser/sync_file_system/remote_file_sync_service.h b/chrome/browser/sync_file_system/remote_file_sync_service.h index 4ffcb5bc..9140d8dc 100644 --- a/chrome/browser/sync_file_system/remote_file_sync_service.h +++ b/chrome/browser/sync_file_system/remote_file_sync_service.h
@@ -176,7 +176,7 @@ // After a change is processed |callback| will be called (to return // the control to the sync engine). // It is invalid to call this before calling SetRemoteChangeProcessor(). - virtual void ProcessRemoteChange(const SyncFileCallback& callback) = 0; + virtual void ProcessRemoteChange(SyncFileCallback callback) = 0; // Sets a remote change processor. This must be called before any // ProcessRemoteChange().
diff --git a/chrome/browser/sync_file_system/sync_callbacks.h b/chrome/browser/sync_file_system/sync_callbacks.h index 514a234..49526d8 100644 --- a/chrome/browser/sync_file_system/sync_callbacks.h +++ b/chrome/browser/sync_file_system/sync_callbacks.h
@@ -18,11 +18,11 @@ class SyncFileMetadata; -typedef base::OnceCallback<void(SyncStatusCode status)> SyncStatusCallback; +using SyncStatusCallback = base::OnceCallback<void(SyncStatusCode status)>; -typedef base::Callback< - void(SyncStatusCode status, const storage::FileSystemURL& url)> - SyncFileCallback; +using SyncFileCallback = + base::OnceCallback<void(SyncStatusCode status, + const storage::FileSystemURL& url)>; typedef base::Callback<void(SyncStatusCode status, const SyncFileMetadata& metadata)>
diff --git a/chrome/browser/sync_file_system/sync_file_system_service_unittest.cc b/chrome/browser/sync_file_system/sync_file_system_service_unittest.cc index 089ff4b..e7ee655 100644 --- a/chrome/browser/sync_file_system/sync_file_system_service_unittest.cc +++ b/chrome/browser/sync_file_system/sync_file_system_service_unittest.cc
@@ -105,13 +105,21 @@ states->push_back(arg1); } -ACTION_P2(MockSyncFileCallback, status, url) { - base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::BindOnce(arg0, status, url)); -} +struct PostSyncFileCallback { + PostSyncFileCallback(SyncStatusCode status, const storage::FileSystemURL& url) + : status_(status), url_(url) {} + void operator()(SyncFileCallback callback) { + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, base::BindOnce(std::move(callback), status_, url_)); + } + + private: + SyncStatusCode status_; + storage::FileSystemURL url_; +}; ACTION(InvokeCompletionClosure) { - base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, arg0); + base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, std::move(arg0)); } class SyncFileSystemServiceTest : public testing::Test { @@ -346,8 +354,8 @@ FROM_HERE, base::BindOnce(std::move(callback), SYNC_STATUS_OK)); })); EXPECT_CALL(*mock_remote_service(), ProcessRemoteChange(_)) - .WillRepeatedly(MockSyncFileCallback(SYNC_STATUS_NO_CHANGE_TO_SYNC, - FileSystemURL())); + .WillRepeatedly( + PostSyncFileCallback(SYNC_STATUS_NO_CHANGE_TO_SYNC, FileSystemURL())); EXPECT_CALL(*mock_remote_service(), PromoteDemotedChanges(_)) .WillRepeatedly(InvokeCompletionClosure()); @@ -392,8 +400,7 @@ // Return with SYNC_STATUS_FILE_BUSY once. EXPECT_CALL(*mock_remote_service(), ProcessRemoteChange(_)) - .WillOnce(MockSyncFileCallback(SYNC_STATUS_FILE_BUSY, - kFile)); + .WillOnce(PostSyncFileCallback(SYNC_STATUS_FILE_BUSY, kFile)); // ProcessRemoteChange should be called again when the becomes // not busy.
diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabData.java b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabData.java index 505cd5b0..d35fa8d 100644 --- a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabData.java +++ b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabData.java
@@ -225,7 +225,9 @@ : new GURL(mWebContentsState.getVirtualUrlFromState()); mTitle = mWebContentsState.getDisplayTitleFromState(); mContentStateVersion = criticalPersistedTabDataProto.getContentStateVersion(); - mOpenerAppId = criticalPersistedTabDataProto.getOpenerAppId(); + mOpenerAppId = TextUtils.isEmpty(criticalPersistedTabDataProto.getOpenerAppId()) + ? null + : criticalPersistedTabDataProto.getOpenerAppId(); mThemeColor = criticalPersistedTabDataProto.getThemeColor(); mTabLaunchTypeAtCreation = getLaunchType(criticalPersistedTabDataProto.getLaunchTypeAtCreation()); @@ -369,7 +371,7 @@ : ByteString.copyFrom( getContentStateByteArray(webContentsState.buffer()))) .setContentStateVersion(mContentStateVersion) - .setOpenerAppId(mOpenerAppId) + .setOpenerAppId(mOpenerAppId == null ? "" : mOpenerAppId) .setThemeColor(mThemeColor) .setLaunchTypeAtCreation(getLaunchType(mTabLaunchTypeAtCreation)) .build()
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service.cc b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service.cc index bf7ddb2..a65a940 100644 --- a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service.cc +++ b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service.cc
@@ -334,7 +334,12 @@ } void HoldingSpaceKeyedService::InitializeDelegates() { - DCHECK(delegates_.empty()); + // Bail out if delegates have already been initialized - delegates are + // shutdown on suspend, and re-initialized once suspend completes. If + // holding space keyed service starts observing suspend state after + // `SuspendImminent()` is sent out, original delegates may still be around. + if (!delegates_.empty()) + return; // The `HoldingSpaceDownloadsDelegate` monitors the status of downloads. delegates_.push_back(std::make_unique<HoldingSpaceDownloadsDelegate>(
diff --git a/chrome/browser/ui/ash/sharesheet/sharesheet_bubble_view.cc b/chrome/browser/ui/ash/sharesheet/sharesheet_bubble_view.cc index 25f6156..10c313a 100644 --- a/chrome/browser/ui/ash/sharesheet/sharesheet_bubble_view.cc +++ b/chrome/browser/ui/ash/sharesheet/sharesheet_bubble_view.cc
@@ -10,6 +10,7 @@ #include "ash/public/cpp/ash_typography.h" #include "ash/public/cpp/tablet_mode.h" #include "base/i18n/rtl.h" +#include "base/scoped_observation.h" #include "base/strings/string16.h" #include "base/time/time.h" #include "chrome/app/vector_icons/vector_icons.h" @@ -49,6 +50,7 @@ #include "ui/views/metadata/metadata_impl_macros.h" #include "ui/views/view_class_properties.h" #include "ui/views/widget/widget.h" +#include "ui/views/widget/widget_observer.h" namespace { @@ -106,11 +108,33 @@ } // namespace +class SharesheetBubbleView::SharesheetParentWidgetObserver + : public views::WidgetObserver { + public: + SharesheetParentWidgetObserver(SharesheetBubbleView* owner, + views::Widget* widget) + : owner_(owner) { + observer_.Observe(widget); + } + ~SharesheetParentWidgetObserver() override = default; + + void OnWidgetBoundsChanged(views::Widget* widget, + const gfx::Rect& bounds) override { + owner_->OnWidgetBoundsChanged(widget, bounds); + } + + private: + SharesheetBubbleView* owner_; + base::ScopedObservation<views::Widget, views::WidgetObserver> observer_{this}; +}; + SharesheetBubbleView::SharesheetBubbleView( gfx::NativeWindow native_window, sharesheet::SharesheetServiceDelegate* delegate) : delegate_(delegate) { set_parent_window(native_window); + parent_widget_observer_ = std::make_unique<SharesheetParentWidgetObserver>( + this, views::Widget::GetWidgetForNativeWindow(native_window)); parent_view_ = views::Widget::GetWidgetForNativeWindow(native_window)->GetRootView(); UpdateAnchorPosition(); @@ -464,6 +488,11 @@ } } +void SharesheetBubbleView::OnWidgetBoundsChanged(views::Widget* widget, + const gfx::Rect& new_bounds) { + UpdateAnchorPosition(); +} + void SharesheetBubbleView::CreateBubble() { set_close_on_deactivate(false); SetButtons(ui::DIALOG_BUTTON_NONE);
diff --git a/chrome/browser/ui/ash/sharesheet/sharesheet_bubble_view.h b/chrome/browser/ui/ash/sharesheet/sharesheet_bubble_view.h index 9d32718..c81d9de1 100644 --- a/chrome/browser/ui/ash/sharesheet/sharesheet_bubble_view.h +++ b/chrome/browser/ui/ash/sharesheet/sharesheet_bubble_view.h
@@ -44,7 +44,13 @@ void ResizeBubble(const int& width, const int& height); void CloseBubble(); + // views::BubbleDialogDelegateView: + void OnWidgetBoundsChanged(views::Widget* widget, + const gfx::Rect& new_bounds) override; + private: + class SharesheetParentWidgetObserver; + // ui::EventHandler: void OnKeyEvent(ui::KeyEvent* event) override; @@ -98,6 +104,8 @@ views::Separator* expanded_view_separator_ = nullptr; views::View* parent_view_ = nullptr; SharesheetExpandButton* expand_button_ = nullptr; + + std::unique_ptr<SharesheetParentWidgetObserver> parent_widget_observer_; }; #endif // CHROME_BROWSER_UI_ASH_SHARESHEET_SHARESHEET_BUBBLE_VIEW_H_
diff --git a/chrome/browser/ui/views/page_action/pwa_install_view.cc b/chrome/browser/ui/views/page_action/pwa_install_view.cc index 6a560f6..42b2a50 100644 --- a/chrome/browser/ui/views/page_action/pwa_install_view.cc +++ b/chrome/browser/ui/views/page_action/pwa_install_view.cc
@@ -96,13 +96,15 @@ if (controller) { // Reset the iph flag when it's shown again. install_icon_clicked_after_iph_shown_ = false; - controller->MaybeShowPromoWithTextReplacements( + bool iph_shown = controller->MaybeShowPromoWithTextReplacements( feature_engagement::kIPHDesktopPwaInstallFeature, FeaturePromoTextReplacements::WithString( webapps::AppBannerManager::GetInstallableWebAppName( web_contents)), base::BindOnce(&PwaInstallView::OnIphClosed, weak_ptr_factory_.GetWeakPtr())); + if (iph_shown) + SetHighlighted(true); } } SetVisible(is_probably_promotable || PWAConfirmationBubbleView::IsShowing()); @@ -110,11 +112,12 @@ void PwaInstallView::OnIphClosed() { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - // IPH is also closed when the install button is clicked. This does not - // count as an 'ignore'. + // count as an 'ignore'. The button should remain highlighted and will + // eventually be un-highlighted when PWAConfirmationBubbleView is closed. if (install_icon_clicked_after_iph_shown_) return; + SetHighlighted(false); content::WebContents* web_contents = GetWebContents(); if (!web_contents) return;
diff --git a/chrome/browser/ui/views/supervised_user/parent_permission_dialog_view_browsertest.cc b/chrome/browser/ui/views/supervised_user/parent_permission_dialog_view_browsertest.cc index b3b46f7..c655215 100644 --- a/chrome/browser/ui/views/supervised_user/parent_permission_dialog_view_browsertest.cc +++ b/chrome/browser/ui/views/supervised_user/parent_permission_dialog_view_browsertest.cc
@@ -13,7 +13,6 @@ #include "base/strings/utf_string_conversions.h" #include "base/test/metrics/histogram_tester.h" #include "base/test/metrics/user_action_tester.h" -#include "base/test/scoped_feature_list.h" #include "chrome/browser/chromeos/login/test/fake_gaia_mixin.h" #include "chrome/browser/extensions/chrome_test_extension_loader.h" #include "chrome/browser/extensions/extension_service.h" @@ -21,7 +20,6 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/supervised_user/logged_in_user_mixin.h" #include "chrome/browser/supervised_user/supervised_user_extensions_metrics_recorder.h" -#include "chrome/browser/supervised_user/supervised_user_features.h" #include "chrome/browser/supervised_user/supervised_user_service.h" #include "chrome/browser/supervised_user/supervised_user_service_factory.h" #include "chrome/browser/supervised_user/supervised_user_test_util.h" @@ -60,12 +58,7 @@ }; ParentPermissionDialogViewTest() - : TestParentPermissionDialogViewObserver(this) { - feature_list_.InitWithFeatures( - /*enabled_features=*/{supervised_users:: - kSupervisedUserInitiatedExtensionInstall}, - /*disabled_features=*/{}); - } + : TestParentPermissionDialogViewObserver(this) {} ParentPermissionDialogViewTest(const ParentPermissionDialogViewTest&) = delete; @@ -278,8 +271,6 @@ std::unique_ptr<signin::IdentityTestEnvironment> identity_test_env_; base::Optional<NextDialogAction> next_dialog_action_; - - base::test::ScopedFeatureList feature_list_; }; // Tests that a plain dialog widget is shown using the TestBrowserUi
diff --git a/chrome/browser/ui/views/web_apps/web_app_uninstall_dialog_view.cc b/chrome/browser/ui/views/web_apps/web_app_uninstall_dialog_view.cc index c161a1f8..844a30d8 100644 --- a/chrome/browser/ui/views/web_apps/web_app_uninstall_dialog_view.cc +++ b/chrome/browser/ui/views/web_apps/web_app_uninstall_dialog_view.cc
@@ -262,7 +262,7 @@ view_->ProcessAutoConfirmValue(); } -void WebAppUninstallDialogViews::OnWebAppUninstalled( +void WebAppUninstallDialogViews::OnWebAppWillBeUninstalled( const web_app::AppId& app_id) { // Handle the case when web app was uninstalled externally and we have to // cancel current dialog. @@ -279,7 +279,7 @@ base::OnceCallback<void(bool uninstalled)> WebAppUninstallDialogViews::UninstallStarted() { DCHECK(closed_callback_); - // Next OnWebAppUninstalled should be ignored. Unsubscribe: + // Next OnWebAppWillBeUninstalled should be ignored. Unsubscribe: registrar_observer_.RemoveAll(); // The view can now be destroyed without us knowing, so clear it to prevent // UAF in the destructor.
diff --git a/chrome/browser/ui/views/web_apps/web_app_uninstall_dialog_view.h b/chrome/browser/ui/views/web_apps/web_app_uninstall_dialog_view.h index 368ef976..5c184013 100644 --- a/chrome/browser/ui/views/web_apps/web_app_uninstall_dialog_view.h +++ b/chrome/browser/ui/views/web_apps/web_app_uninstall_dialog_view.h
@@ -105,7 +105,7 @@ private: // web_app::AppRegistrarObserver: - void OnWebAppUninstalled(const web_app::AppId& app_id) override; + void OnWebAppWillBeUninstalled(const web_app::AppId& app_id) override; void OnAppRegistrarDestroyed() override; void OnIconsRead(std::map<SquareSizePx, SkBitmap> icon_bitmaps);
diff --git a/chrome/browser/ui/web_applications/web_app_browser_controller.cc b/chrome/browser/ui/web_applications/web_app_browser_controller.cc index 668ec1d..ab955bb 100644 --- a/chrome/browser/ui/web_applications/web_app_browser_controller.cc +++ b/chrome/browser/ui/web_applications/web_app_browser_controller.cc
@@ -95,7 +95,7 @@ } #endif // BUILDFLAG(IS_CHROMEOS_ASH) -void WebAppBrowserController::OnWebAppUninstalled(const AppId& app_id) { +void WebAppBrowserController::OnWebAppWillBeUninstalled(const AppId& app_id) { if (HasAppId() && app_id == GetAppId()) chrome::CloseWindow(browser()); }
diff --git a/chrome/browser/ui/web_applications/web_app_browser_controller.h b/chrome/browser/ui/web_applications/web_app_browser_controller.h index 5f0b88d2..937518d8 100644 --- a/chrome/browser/ui/web_applications/web_app_browser_controller.h +++ b/chrome/browser/ui/web_applications/web_app_browser_controller.h
@@ -75,7 +75,7 @@ #endif // BUILDFLAG(IS_CHROMEOS_ASH) // AppRegistrarObserver: - void OnWebAppUninstalled(const AppId& app_id) override; + void OnWebAppWillBeUninstalled(const AppId& app_id) override; void OnAppRegistrarDestroyed() override; void SetReadIconCallbackForTesting(base::OnceClosure callback);
diff --git a/chrome/browser/ui/webui/chromeos/emoji/emoji_picker.cc b/chrome/browser/ui/webui/chromeos/emoji/emoji_picker.cc index 1c0e3aa..9fc1d15 100644 --- a/chrome/browser/ui/webui/chromeos/emoji/emoji_picker.cc +++ b/chrome/browser/ui/webui/chromeos/emoji/emoji_picker.cc
@@ -36,7 +36,7 @@ webui::SetupWebUIDataSource( html_source.get(), base::make_span(kEmojiPickerResources, kEmojiPickerResourcesSize), - IDR_EMOJI_PICKER_EMOJI_PICKER_HTML); + IDR_EMOJI_PICKER_INDEX_HTML); content::BrowserContext* browser_context = web_ui->GetWebContents()->GetBrowserContext();
diff --git a/chrome/browser/ui/webui/interventions_internals/interventions_internals_page_handler.cc b/chrome/browser/ui/webui/interventions_internals/interventions_internals_page_handler.cc index 87c31b3..1365f7cf 100644 --- a/chrome/browser/ui/webui/interventions_internals/interventions_internals_page_handler.cc +++ b/chrome/browser/ui/webui/interventions_internals/interventions_internals_page_handler.cc
@@ -33,28 +33,20 @@ // HTML DOM ID used in the JavaScript code. The IDs are generated here so that // the DOM would have sensible name instead of autogenerated IDs. const char kPreviewsAllowedHtmlId[] = "previews-allowed-status"; -const char kNoScriptPreviewsHtmlId[] = "noscript-preview-status"; -const char kResourceLoadingHintsHtmlId[] = "resource-loading-hints-status"; const char kDeferAllScriptPreviewsHtmlId[] = "defer-all-script-preview-status"; // Descriptions for previews. const char kPreviewsAllowedDescription[] = "Previews Allowed"; -const char kNoScriptDescription[] = "NoScript Previews"; -const char kResourceLoadingHintsDescription[] = "ResourceLoadingHints Previews"; const char kDeferAllScriptPreviewsDescription[] = "DeferAllScript Previews"; // Flag feature name. const char kPreviewsAllowedFeatureName[] = "Previews"; -const char kNoScriptFeatureName[] = "NoScriptPreviews"; -const char kResourceLoadingHintsFeatureName[] = "ResourceLoadingHints"; const char kDeferAllScriptFeatureName[] = "DeferAllScript"; // HTML DOM ID used in the JavaScript code. The IDs are generated here so that // the DOM would have sensible name instead of autogenerated IDs. const char kPreviewsAllowedFlagHtmlId[] = "previews-flag"; -const char kResourceLoadingHintsFlagHtmlId[] = "resource-loading-hints-flag"; const char kDeferAllScriptFlagHtmlId[] = "defer-all-script-flag"; -const char kNoScriptFlagHtmlId[] = "noscript-flag"; const char kEctFlagHtmlId[] = "ect-flag"; const char kIgnorePreviewsBlocklistFlagHtmlId[] = "ignore-previews-blocklist"; const char kDataSaverAltConfigHtmlId[] = @@ -63,11 +55,8 @@ // Links to flags in chrome://flags. // TODO(thanhdle): Refactor into vector of structs. crbug.com/787010. const char kPreviewsAllowedFlagLink[] = "chrome://flags/#allow-previews"; -const char kResourceLoadingHintsFlagLink[] = - "chrome://flags/#enable-resource-loading-hints"; const char kDeferAllScriptFlagLink[] = "chrome://flags/#enable-defer-all-script"; -const char kNoScriptFlagLink[] = "chrome://flags/#enable-noscript-previews"; const char kEctFlagLink[] = "chrome://flags/#force-effective-connection-type"; const char kIgnorePreviewsBlocklistLink[] = "chrome://flags/#ignore-previews-blocklist"; @@ -218,13 +207,6 @@ previews_allowed_status->htmlId = kPreviewsAllowedHtmlId; statuses.push_back(std::move(previews_allowed_status)); - auto resource_loading_hints_status = mojom::PreviewsStatus::New(); - resource_loading_hints_status->description = kResourceLoadingHintsDescription; - resource_loading_hints_status->enabled = - previews::params::IsResourceLoadingHintsEnabled(); - resource_loading_hints_status->htmlId = kResourceLoadingHintsHtmlId; - statuses.push_back(std::move(resource_loading_hints_status)); - auto defer_all_script_preview_status = mojom::PreviewsStatus::New(); defer_all_script_preview_status->description = kDeferAllScriptPreviewsDescription; @@ -233,12 +215,6 @@ defer_all_script_preview_status->htmlId = kDeferAllScriptPreviewsHtmlId; statuses.push_back(std::move(defer_all_script_preview_status)); - auto noscript_status = mojom::PreviewsStatus::New(); - noscript_status->description = kNoScriptDescription; - noscript_status->enabled = previews::params::IsNoScriptPreviewsEnabled(); - noscript_status->htmlId = kNoScriptPreviewsHtmlId; - statuses.push_back(std::move(noscript_status)); - std::move(callback).Run(std::move(statuses)); } @@ -255,15 +231,6 @@ previews_allowed_status->htmlId = kPreviewsAllowedFlagHtmlId; flags.push_back(std::move(previews_allowed_status)); - auto resource_loading_hints_status = mojom::PreviewsFlag::New(); - resource_loading_hints_status->description = - flag_descriptions::kEnableResourceLoadingHintsName; - resource_loading_hints_status->link = kResourceLoadingHintsFlagLink; - resource_loading_hints_status->value = - GetFeatureFlagStatus(kResourceLoadingHintsFeatureName); - resource_loading_hints_status->htmlId = kResourceLoadingHintsFlagHtmlId; - flags.push_back(std::move(resource_loading_hints_status)); - auto defer_all_script_status = mojom::PreviewsFlag::New(); defer_all_script_status->description = flag_descriptions::kEnableDeferAllScriptName; @@ -273,13 +240,6 @@ defer_all_script_status->htmlId = kDeferAllScriptFlagHtmlId; flags.push_back(std::move(defer_all_script_status)); - auto noscript_status = mojom::PreviewsFlag::New(); - noscript_status->description = flag_descriptions::kEnableNoScriptPreviewsName; - noscript_status->link = kNoScriptFlagLink; - noscript_status->value = GetFeatureFlagStatus(kNoScriptFeatureName); - noscript_status->htmlId = kNoScriptFlagHtmlId; - flags.push_back(std::move(noscript_status)); - auto ect_status = mojom::PreviewsFlag::New(); ect_status->description = flag_descriptions::kForceEffectiveConnectionTypeName;
diff --git a/chrome/browser/ui/webui/interventions_internals/interventions_internals_page_handler_unittest.cc b/chrome/browser/ui/webui/interventions_internals/interventions_internals_page_handler_unittest.cc index 55255ef8..3e613685 100644 --- a/chrome/browser/ui/webui/interventions_internals/interventions_internals_page_handler_unittest.cc +++ b/chrome/browser/ui/webui/interventions_internals/interventions_internals_page_handler_unittest.cc
@@ -53,23 +53,15 @@ // The HTML DOM ID used in Javascript. constexpr char kPreviewsAllowedHtmlId[] = "previews-allowed-status"; -constexpr char kResourceLoadingHintsHtmlId[] = "resource-loading-hints-status"; constexpr char kDeferAllScriptPreviewsHtmlId[] = "defer-all-script-preview-status"; -constexpr char kNoScriptPreviewsHtmlId[] = "noscript-preview-status"; // Descriptions for previews. constexpr char kPreviewsAllowedDescription[] = "Previews Allowed"; -constexpr char kResourceLoadingHintsDescription[] = - "ResourceLoadingHints Previews"; constexpr char kDeferAllScriptPreviewsDescription[] = "DeferAllScript Previews"; -constexpr char kNoScriptDescription[] = "NoScript Previews"; // The HTML DOM ID used in Javascript. -constexpr char kResourceLoadingHintsFlagHtmlId[] = - "resource-loading-hints-flag"; constexpr char kDeferAllScriptFlagHtmlId[] = "defer-all-script-flag"; -constexpr char kNoScriptFlagHtmlId[] = "noscript-flag"; constexpr char kEctFlagHtmlId[] = "ect-flag"; constexpr char kIgnorePreviewsBlocklistFlagHtmlId[] = "ignore-previews-blocklist"; @@ -77,11 +69,8 @@ "data-reduction-proxy-server-experiment"; // Links to flags in chrome://flags. -constexpr char kResourceLoadingHintsFlagLink[] = - "chrome://flags/#enable-resource-loading-hints"; constexpr char kDeferAllScriptFlagLink[] = "chrome://flags/#enable-defer-all-script"; -constexpr char kNoScriptFlagLink[] = "chrome://flags/#enable-noscript-previews"; constexpr char kEctFlagLink[] = "chrome://flags/#force-effective-connection-type"; constexpr char kIgnorePreviewsBlocklistLink[] = @@ -90,9 +79,7 @@ "chrome://flags/#enable-data-reduction-proxy-server-experiment"; // Flag features names. -constexpr char kResourceLoadingHintsFeatureName[] = "ResourceLoadingHints"; constexpr char kDeferAllScriptFeatureName[] = "DeferAllScriptPreviews"; -constexpr char kNoScriptFeatureName[] = "NoScriptPreviews"; constexpr char kDefaultFlagValue[] = "Default"; constexpr char kEnabledFlagValue[] = "Enabled"; @@ -321,7 +308,7 @@ page_handler_->GetPreviewsEnabled( base::BindOnce(&MockGetPreviewsEnabledCallback)); - constexpr size_t expected = 4; + constexpr size_t expected = 2; EXPECT_EQ(expected, passed_in_modes.size()); } @@ -349,62 +336,6 @@ EXPECT_TRUE(previews_allowed->second->enabled); } -TEST_F(InterventionsInternalsPageHandlerTest, NoScriptDisabled) { - // Init with kNoScript disabled. - scoped_feature_list_->InitWithFeatures( - {}, {previews::features::kNoScriptPreviews}); - - page_handler_->GetPreviewsEnabled( - base::BindOnce(&MockGetPreviewsEnabledCallback)); - auto noscript = passed_in_modes.find(kNoScriptPreviewsHtmlId); - ASSERT_NE(passed_in_modes.end(), noscript); - EXPECT_EQ(kNoScriptDescription, noscript->second->description); - EXPECT_FALSE(noscript->second->enabled); -} - -TEST_F(InterventionsInternalsPageHandlerTest, NoScriptEnabled) { - // Init with kNoScript enabled. - scoped_feature_list_->InitWithFeatures( - {previews::features::kNoScriptPreviews}, {}); - - page_handler_->GetPreviewsEnabled( - base::BindOnce(&MockGetPreviewsEnabledCallback)); - auto noscript = passed_in_modes.find(kNoScriptPreviewsHtmlId); - ASSERT_NE(passed_in_modes.end(), noscript); - EXPECT_EQ(kNoScriptDescription, noscript->second->description); - EXPECT_TRUE(noscript->second->enabled); -} - -TEST_F(InterventionsInternalsPageHandlerTest, ResourceLoadingHintsDisabled) { - // Init with kResourceLoadingHints disabled. - scoped_feature_list_->InitWithFeatures( - {}, {previews::features::kResourceLoadingHints}); - - page_handler_->GetPreviewsEnabled( - base::BindOnce(&MockGetPreviewsEnabledCallback)); - auto resource_loading_hints = - passed_in_modes.find(kResourceLoadingHintsHtmlId); - ASSERT_NE(passed_in_modes.end(), resource_loading_hints); - EXPECT_EQ(kResourceLoadingHintsDescription, - resource_loading_hints->second->description); - EXPECT_FALSE(resource_loading_hints->second->enabled); -} - -TEST_F(InterventionsInternalsPageHandlerTest, ResourceLoadingHintsEnabled) { - // Init with kResourceLoadingHints enabled. - scoped_feature_list_->InitWithFeatures( - {previews::features::kResourceLoadingHints}, {}); - - page_handler_->GetPreviewsEnabled( - base::BindOnce(&MockGetPreviewsEnabledCallback)); - auto resource_loading_hints = - passed_in_modes.find(kResourceLoadingHintsHtmlId); - ASSERT_NE(passed_in_modes.end(), resource_loading_hints); - EXPECT_EQ(kResourceLoadingHintsDescription, - resource_loading_hints->second->description); - EXPECT_TRUE(resource_loading_hints->second->enabled); -} - TEST_F(InterventionsInternalsPageHandlerTest, DeferAllScriptPreviewsDisabled) { // Init with kDeferAllScriptPreviews disabled. scoped_feature_list_->InitWithFeatures( @@ -437,7 +368,7 @@ page_handler_->GetPreviewsFlagsDetails( base::BindOnce(&MockGetPreviewsFlagsCallback)); - constexpr size_t expected = 7; + constexpr size_t expected = 5; EXPECT_EQ(expected, passed_in_flags.size()); } @@ -516,121 +447,6 @@ ignore_previews_blocklist->second->link); } -TEST_F(InterventionsInternalsPageHandlerTest, GetFlagsNoScriptDisabledValue) { - page_handler_->GetPreviewsFlagsDetails( - base::BindOnce(&MockGetPreviewsFlagsCallback)); - auto ignore_previews_blocklist = - passed_in_flags.find(kIgnorePreviewsBlocklistFlagHtmlId); - - ASSERT_NE(passed_in_flags.end(), ignore_previews_blocklist); - EXPECT_EQ(flag_descriptions::kIgnorePreviewsBlocklistName, - ignore_previews_blocklist->second->description); - EXPECT_EQ(kDisabledFlagValue, ignore_previews_blocklist->second->value); - EXPECT_EQ(kIgnorePreviewsBlocklistLink, - ignore_previews_blocklist->second->link); -} - -TEST_F(InterventionsInternalsPageHandlerTest, GetFlagsNoScriptDefaultValue) { - page_handler_->GetPreviewsFlagsDetails( - base::BindOnce(&MockGetPreviewsFlagsCallback)); - auto noscript_flag = passed_in_flags.find(kNoScriptFlagHtmlId); - - ASSERT_NE(passed_in_flags.end(), noscript_flag); - EXPECT_EQ(flag_descriptions::kEnableNoScriptPreviewsName, - noscript_flag->second->description); - EXPECT_EQ(kDefaultFlagValue, noscript_flag->second->value); - EXPECT_EQ(kNoScriptFlagLink, noscript_flag->second->link); -} - -TEST_F(InterventionsInternalsPageHandlerTest, GetFlagsNoScriptEnabled) { - base::test::ScopedCommandLine scoped_command_line; - base::CommandLine* command_line = scoped_command_line.GetProcessCommandLine(); - command_line->AppendSwitchASCII(switches::kEnableFeatures, - kNoScriptFeatureName); - - page_handler_->GetPreviewsFlagsDetails( - base::BindOnce(&MockGetPreviewsFlagsCallback)); - auto noscript_flag = passed_in_flags.find(kNoScriptFlagHtmlId); - - ASSERT_NE(passed_in_flags.end(), noscript_flag); - EXPECT_EQ(flag_descriptions::kEnableNoScriptPreviewsName, - noscript_flag->second->description); - EXPECT_EQ(kEnabledFlagValue, noscript_flag->second->value); - EXPECT_EQ(kNoScriptFlagLink, noscript_flag->second->link); -} - -TEST_F(InterventionsInternalsPageHandlerTest, GetFlagsNoScriptDisabled) { - base::test::ScopedCommandLine scoped_command_line; - base::CommandLine* command_line = scoped_command_line.GetProcessCommandLine(); - command_line->AppendSwitchASCII(switches::kDisableFeatures, - kNoScriptFeatureName); - - page_handler_->GetPreviewsFlagsDetails( - base::BindOnce(&MockGetPreviewsFlagsCallback)); - auto noscript_flag = passed_in_flags.find(kNoScriptFlagHtmlId); - - ASSERT_NE(passed_in_flags.end(), noscript_flag); - EXPECT_EQ(flag_descriptions::kEnableNoScriptPreviewsName, - noscript_flag->second->description); - EXPECT_EQ(kDisabledFlagValue, noscript_flag->second->value); - EXPECT_EQ(kNoScriptFlagLink, noscript_flag->second->link); -} - -TEST_F(InterventionsInternalsPageHandlerTest, - GetFlagsResourceLoadingHintsDefaultValue) { - page_handler_->GetPreviewsFlagsDetails( - base::BindOnce(&MockGetPreviewsFlagsCallback)); - auto resource_loading_hints_flag = - passed_in_flags.find(kResourceLoadingHintsFlagHtmlId); - - ASSERT_NE(passed_in_flags.end(), resource_loading_hints_flag); - EXPECT_EQ(flag_descriptions::kEnableResourceLoadingHintsName, - resource_loading_hints_flag->second->description); - EXPECT_EQ(kDefaultFlagValue, resource_loading_hints_flag->second->value); - EXPECT_EQ(kResourceLoadingHintsFlagLink, - resource_loading_hints_flag->second->link); -} - -TEST_F(InterventionsInternalsPageHandlerTest, - GetFlagsResourceLoadingHintsEnabled) { - base::test::ScopedCommandLine scoped_command_line; - base::CommandLine* command_line = scoped_command_line.GetProcessCommandLine(); - command_line->AppendSwitchASCII(switches::kEnableFeatures, - kResourceLoadingHintsFeatureName); - - page_handler_->GetPreviewsFlagsDetails( - base::BindOnce(&MockGetPreviewsFlagsCallback)); - auto resource_loading_hints_flag = - passed_in_flags.find(kResourceLoadingHintsFlagHtmlId); - - ASSERT_NE(passed_in_flags.end(), resource_loading_hints_flag); - EXPECT_EQ(flag_descriptions::kEnableResourceLoadingHintsName, - resource_loading_hints_flag->second->description); - EXPECT_EQ(kEnabledFlagValue, resource_loading_hints_flag->second->value); - EXPECT_EQ(kResourceLoadingHintsFlagLink, - resource_loading_hints_flag->second->link); -} - -TEST_F(InterventionsInternalsPageHandlerTest, - GetFlagsResourceLoadingHintsDisabled) { - base::test::ScopedCommandLine scoped_command_line; - base::CommandLine* command_line = scoped_command_line.GetProcessCommandLine(); - command_line->AppendSwitchASCII(switches::kDisableFeatures, - kResourceLoadingHintsFeatureName); - - page_handler_->GetPreviewsFlagsDetails( - base::BindOnce(&MockGetPreviewsFlagsCallback)); - auto resource_loading_hints_flag = - passed_in_flags.find(kResourceLoadingHintsFlagHtmlId); - - ASSERT_NE(passed_in_flags.end(), resource_loading_hints_flag); - EXPECT_EQ(flag_descriptions::kEnableResourceLoadingHintsName, - resource_loading_hints_flag->second->description); - EXPECT_EQ(kDisabledFlagValue, resource_loading_hints_flag->second->value); - EXPECT_EQ(kResourceLoadingHintsFlagLink, - resource_loading_hints_flag->second->link); -} - TEST_F(InterventionsInternalsPageHandlerTest, GetFlagsDeferAllScriptDefaultValue) { page_handler_->GetPreviewsFlagsDetails(
diff --git a/chrome/browser/ui/webui/ntp/app_launcher_handler.cc b/chrome/browser/ui/webui/ntp/app_launcher_handler.cc index b1b4da88..1e365ff5 100644 --- a/chrome/browser/ui/webui/ntp/app_launcher_handler.cc +++ b/chrome/browser/ui/webui/ntp/app_launcher_handler.cc
@@ -569,7 +569,8 @@ web_ui()->CallJavascriptFunctionUnsafe("ntp.appAdded", *app_info, highlight); } -void AppLauncherHandler::OnWebAppUninstalled(const web_app::AppId& app_id) { +void AppLauncherHandler::OnWebAppWillBeUninstalled( + const web_app::AppId& app_id) { std::unique_ptr<base::DictionaryValue> app_info = std::make_unique<base::DictionaryValue>(); app_info->SetString(kInfoIdKey, app_id);
diff --git a/chrome/browser/ui/webui/ntp/app_launcher_handler.h b/chrome/browser/ui/webui/ntp/app_launcher_handler.h index 81ab55d..f7fb6a7 100644 --- a/chrome/browser/ui/webui/ntp/app_launcher_handler.h +++ b/chrome/browser/ui/webui/ntp/app_launcher_handler.h
@@ -95,7 +95,7 @@ // web_app::AppRegistrarObserver: void OnWebAppInstalled(const web_app::AppId& app_id) override; - void OnWebAppUninstalled(const web_app::AppId& app_id) override; + void OnWebAppWillBeUninstalled(const web_app::AppId& app_id) override; void OnAppRegistrarDestroyed() override; // Populate the given dictionary with all installed app info.
diff --git a/chrome/browser/ui/webui/settings/chromeos/switch_access_handler.cc b/chrome/browser/ui/webui/settings/chromeos/switch_access_handler.cc index edb3a14..05b573b0 100644 --- a/chrome/browser/ui/webui/settings/chromeos/switch_access_handler.cc +++ b/chrome/browser/ui/webui/settings/chromeos/switch_access_handler.cc
@@ -5,6 +5,7 @@ #include "chrome/browser/ui/webui/settings/chromeos/switch_access_handler.h" #include "ash/public/cpp/accessibility_controller.h" +#include "ash/public/cpp/ash_constants.h" #include "ash/public/cpp/ash_pref_names.h" #include "base/bind.h" #include "base/no_destructor.h" @@ -14,6 +15,8 @@ #include "content/public/browser/web_contents.h" #include "ui/aura/window.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/events/devices/device_data_manager.h" +#include "ui/events/devices/input_device.h" #include "ui/events/event.h" #include "ui/events/event_constants.h" #include "ui/events/keycodes/dom/dom_code.h" @@ -52,6 +55,19 @@ return std::string(); } +std::string GetSwitchAccessDevice(ui::InputDeviceType source_device_type) { + switch (source_device_type) { + case ui::INPUT_DEVICE_INTERNAL: + return ash::kSwitchAccessInternalDevice; + case ui::INPUT_DEVICE_USB: + return ash::kSwitchAccessUsbDevice; + case ui::INPUT_DEVICE_BLUETOOTH: + return ash::kSwitchAccessBluetoothDevice; + case ui::INPUT_DEVICE_UNKNOWN: + return ash::kSwitchAccessUnknownDevice; + } +} + } // namespace SwitchAccessHandler::SwitchAccessHandler(PrefService* prefs) : prefs_(prefs) {} @@ -91,17 +107,17 @@ pref_change_registrar_.reset(new PrefChangeRegistrar); pref_change_registrar_->Init(prefs_); pref_change_registrar_->Add( - ash::prefs::kAccessibilitySwitchAccessSelectKeyCodes, + ash::prefs::kAccessibilitySwitchAccessSelectDeviceKeyCodes, base::BindRepeating( &SwitchAccessHandler::OnSwitchAccessAssignmentsUpdated, base::Unretained(this))); pref_change_registrar_->Add( - ash::prefs::kAccessibilitySwitchAccessNextKeyCodes, + ash::prefs::kAccessibilitySwitchAccessNextDeviceKeyCodes, base::BindRepeating( &SwitchAccessHandler::OnSwitchAccessAssignmentsUpdated, base::Unretained(this))); pref_change_registrar_->Add( - ash::prefs::kAccessibilitySwitchAccessPreviousKeyCodes, + ash::prefs::kAccessibilitySwitchAccessPreviousDeviceKeyCodes, base::BindRepeating( &SwitchAccessHandler::OnSwitchAccessAssignmentsUpdated, base::Unretained(this))); @@ -122,9 +138,14 @@ response.SetIntPath("keyCode", static_cast<int>(event->key_code())); response.SetStringPath("key", GetStringForKeyboardCode(event->key_code())); - // TODO(accessibility): also include the device type once Switch Access can - // distinguish between internal, usb, and bluetooth keyboards for each action - // type. + int source_device_id = event->source_device_id(); + for (const auto& keyboard : + ui::DeviceDataManager::GetInstance()->GetKeyboardDevices()) { + if (source_device_id == keyboard.id) { + response.SetStringPath("device", GetSwitchAccessDevice(keyboard.type)); + break; + } + } FireWebUIListener("switch-access-got-key-press-for-assignment", response); } @@ -155,17 +176,27 @@ base::DictionaryValue response; static base::NoDestructor<std::vector<AssignmentInfo>> kAssignmentInfo({ - {"select", ash::prefs::kAccessibilitySwitchAccessSelectKeyCodes}, - {"next", ash::prefs::kAccessibilitySwitchAccessNextKeyCodes}, - {"previous", ash::prefs::kAccessibilitySwitchAccessPreviousKeyCodes}, + {"select", ash::prefs::kAccessibilitySwitchAccessSelectDeviceKeyCodes}, + {"next", ash::prefs::kAccessibilitySwitchAccessNextDeviceKeyCodes}, + {"previous", + ash::prefs::kAccessibilitySwitchAccessPreviousDeviceKeyCodes}, }); for (const AssignmentInfo& info : *kAssignmentInfo) { - auto* keycodes = prefs_->GetList(info.pref_name); + auto* keycodes = prefs_->GetDictionary(info.pref_name); base::ListValue keys; - for (size_t i = 0; i < keycodes->GetList().size(); i++) { - keys.Append(GetStringForKeyboardCode( - static_cast<ui::KeyboardCode>(keycodes->GetList()[i].GetInt()))); + for (const auto& item : keycodes->DictItems()) { + base::DictionaryValue key; + int key_code; + if (!base::StringToInt(item.first, &key_code)) { + NOTREACHED(); + return; + } + key.SetStringPath("key", GetStringForKeyboardCode( + static_cast<ui::KeyboardCode>(key_code))); + key.SetPath("devices", item.second.Clone()); + + keys.Append(std::move(key)); } response.SetPath(info.action_name_for_js, std::move(keys)); }
diff --git a/chrome/browser/web_applications/components/app_registrar.cc b/chrome/browser/web_applications/components/app_registrar.cc index 1c393a1..a407492 100644 --- a/chrome/browser/web_applications/components/app_registrar.cc +++ b/chrome/browser/web_applications/components/app_registrar.cc
@@ -64,9 +64,9 @@ observer.OnWebAppsWillBeUpdatedFromSync(new_apps_state); } -void AppRegistrar::NotifyWebAppUninstalled(const AppId& app_id) { +void AppRegistrar::NotifyWebAppWillBeUninstalled(const AppId& app_id) { for (AppRegistrarObserver& observer : observers_) - observer.OnWebAppUninstalled(app_id); + observer.OnWebAppWillBeUninstalled(app_id); RecordWebAppUninstallation(profile()->GetPrefs(), app_id); }
diff --git a/chrome/browser/web_applications/components/app_registrar.h b/chrome/browser/web_applications/components/app_registrar.h index 30c679f..ad0f44fe 100644 --- a/chrome/browser/web_applications/components/app_registrar.h +++ b/chrome/browser/web_applications/components/app_registrar.h
@@ -200,7 +200,7 @@ base::StringPiece old_name); void NotifyWebAppsWillBeUpdatedFromSync( const std::vector<const WebApp*>& new_apps_state); - void NotifyWebAppUninstalled(const AppId& app_id); + void NotifyWebAppWillBeUninstalled(const AppId& app_id); void NotifyWebAppLocallyInstalledStateChanged(const AppId& app_id, bool is_locally_installed); void NotifyWebAppDisabledStateChanged(const AppId& app_id, bool is_disabled);
diff --git a/chrome/browser/web_applications/components/app_registrar_observer.h b/chrome/browser/web_applications/components/app_registrar_observer.h index 23bdbe2a6..d1a7937 100644 --- a/chrome/browser/web_applications/components/app_registrar_observer.h +++ b/chrome/browser/web_applications/components/app_registrar_observer.h
@@ -13,7 +13,6 @@ } namespace web_app { - class WebApp; class AppRegistrarObserver : public base::CheckedObserver { @@ -39,7 +38,7 @@ // Called before a web app is uninstalled. |app_id| is still registered in the // AppRegistrar. For bookmark apps, use BookmarkAppRegistrar::FindExtension to // convert this |app_id| to Extension pointer. - virtual void OnWebAppUninstalled(const AppId& app_id) {} + virtual void OnWebAppWillBeUninstalled(const AppId& app_id) {} // For bookmark apps, use BookmarkAppRegistrar::FindExtension to convert this // |app_id| to Extension pointer.
diff --git a/chrome/browser/web_applications/components/file_handler_manager.cc b/chrome/browser/web_applications/components/file_handler_manager.cc index 530c4a32..d3cdbcb 100644 --- a/chrome/browser/web_applications/components/file_handler_manager.cc +++ b/chrome/browser/web_applications/components/file_handler_manager.cc
@@ -106,7 +106,7 @@ // Temporarily allow file handlers unregistration only if an app has them. // TODO(crbug.com/1088434, crbug.com/1076688): Do not start async - // CreateShortcuts process in OnWebAppUninstalled / Unregistration. + // CreateShortcuts process in OnWebAppWillBeUninstalled / Unregistration. const apps::FileHandlers* file_handlers = GetAllFileHandlers(app_id); if (!ShouldRegisterFileHandlersWithOs() || !file_handlers ||
diff --git a/chrome/browser/web_applications/extensions/bookmark_app_registrar.cc b/chrome/browser/web_applications/extensions/bookmark_app_registrar.cc index a21b40a..8dc47dc 100644 --- a/chrome/browser/web_applications/extensions/bookmark_app_registrar.cc +++ b/chrome/browser/web_applications/extensions/bookmark_app_registrar.cc
@@ -77,7 +77,7 @@ DCHECK(!bookmark_app_being_observed_); bookmark_app_being_observed_ = extension; - NotifyWebAppUninstalled(extension->id()); + NotifyWebAppWillBeUninstalled(extension->id()); os_integration_manager().UninstallAllOsHooks(extension->id(), base::DoNothing());
diff --git a/chrome/browser/web_applications/extensions/bookmark_app_registrar.h b/chrome/browser/web_applications/extensions/bookmark_app_registrar.h index 73bbf5a..af2739df 100644 --- a/chrome/browser/web_applications/extensions/bookmark_app_registrar.h +++ b/chrome/browser/web_applications/extensions/bookmark_app_registrar.h
@@ -99,7 +99,7 @@ // Finds the extension object in ExtensionRegistry and in the being // uninstalled slot. // - // When AppRegistrarObserver::OnWebAppUninstalled(app_id) happens for + // When AppRegistrarObserver::OnWebAppWillBeUninstalled(app_id) happens for // bookmark apps, the bookmark app backing that app_id is already removed // from ExtensionRegistry. If some abstract observer needs the extension // pointer for |app_id| being uninstalled, that observer should use this
diff --git a/chrome/browser/web_applications/manifest_update_manager.cc b/chrome/browser/web_applications/manifest_update_manager.cc index 965d5251..5b77c1b 100644 --- a/chrome/browser/web_applications/manifest_update_manager.cc +++ b/chrome/browser/web_applications/manifest_update_manager.cc
@@ -92,7 +92,7 @@ } // AppRegistrarObserver: -void ManifestUpdateManager::OnWebAppUninstalled(const AppId& app_id) { +void ManifestUpdateManager::OnWebAppWillBeUninstalled(const AppId& app_id) { DCHECK(started_); auto it = tasks_.find(app_id);
diff --git a/chrome/browser/web_applications/manifest_update_manager.h b/chrome/browser/web_applications/manifest_update_manager.h index cd113c2b..d549d26 100644 --- a/chrome/browser/web_applications/manifest_update_manager.h +++ b/chrome/browser/web_applications/manifest_update_manager.h
@@ -56,7 +56,7 @@ content::WebContents* web_contents); // AppRegistrarObserver: - void OnWebAppUninstalled(const AppId& app_id) override; + void OnWebAppWillBeUninstalled(const AppId& app_id) override; // |app_id| will be nullptr when |result| is kNoAppInScope. using ResultCallback =
diff --git a/chrome/browser/web_applications/manifest_update_manager_browsertest.cc b/chrome/browser/web_applications/manifest_update_manager_browsertest.cc index 1a1ecc9..237654a 100644 --- a/chrome/browser/web_applications/manifest_update_manager_browsertest.cc +++ b/chrome/browser/web_applications/manifest_update_manager_browsertest.cc
@@ -620,7 +620,7 @@ AppId app_id = InstallWebApp(); EXPECT_EQ(GetProvider().registrar().GetAppThemeColor(app_id), SK_ColorBLUE); - // Check that OnWebAppInstalled and OnWebAppUninstalled are not called + // Check that OnWebAppInstalled and OnWebAppWillBeUninstalled are not called // if in-place web app update happens. WebAppInstallObserver install_observer(&GetProvider().registrar()); install_observer.SetWebAppInstalledDelegate(
diff --git a/chrome/browser/web_applications/test/web_app_install_observer.cc b/chrome/browser/web_applications/test/web_app_install_observer.cc index ae0e6a9ee..a60dcc90 100644 --- a/chrome/browser/web_applications/test/web_app_install_observer.cc +++ b/chrome/browser/web_applications/test/web_app_install_observer.cc
@@ -161,7 +161,7 @@ app_will_be_updated_from_sync_delegate_.Run(new_apps_state); } -void WebAppInstallObserver::OnWebAppUninstalled(const AppId& app_id) { +void WebAppInstallObserver::OnWebAppWillBeUninstalled(const AppId& app_id) { listening_for_uninstall_app_ids_.erase(app_id); if (!listening_for_uninstall_app_ids_.empty()) return;
diff --git a/chrome/browser/web_applications/test/web_app_install_observer.h b/chrome/browser/web_applications/test/web_app_install_observer.h index 985aada..b01ad494 100644 --- a/chrome/browser/web_applications/test/web_app_install_observer.h +++ b/chrome/browser/web_applications/test/web_app_install_observer.h
@@ -98,7 +98,7 @@ void OnWebAppInstalledWithOsHooks(const AppId& app_id) override; void OnWebAppsWillBeUpdatedFromSync( const std::vector<const WebApp*>& new_apps_state) override; - void OnWebAppUninstalled(const AppId& app_id) override; + void OnWebAppWillBeUninstalled(const AppId& app_id) override; void OnWebAppProfileWillBeDeleted(const AppId& app_id) override; private:
diff --git a/chrome/browser/web_applications/test/web_app_uninstall_waiter.cc b/chrome/browser/web_applications/test/web_app_uninstall_waiter.cc index ae3c13f..62d79b97 100644 --- a/chrome/browser/web_applications/test/web_app_uninstall_waiter.cc +++ b/chrome/browser/web_applications/test/web_app_uninstall_waiter.cc
@@ -18,7 +18,7 @@ run_loop_.Run(); } -void WebAppUninstallWaiter::OnWebAppUninstalled(const AppId& app_id) { +void WebAppUninstallWaiter::OnWebAppWillBeUninstalled(const AppId& app_id) { if (app_id == app_id_) run_loop_.Quit(); }
diff --git a/chrome/browser/web_applications/test/web_app_uninstall_waiter.h b/chrome/browser/web_applications/test/web_app_uninstall_waiter.h index 3fe2a342..428e938 100644 --- a/chrome/browser/web_applications/test/web_app_uninstall_waiter.h +++ b/chrome/browser/web_applications/test/web_app_uninstall_waiter.h
@@ -20,7 +20,7 @@ void Wait(); // AppRegistrarObserver: - void OnWebAppUninstalled(const AppId& app_id) final; + void OnWebAppWillBeUninstalled(const AppId& app_id) final; private: AppId app_id_;
diff --git a/chrome/browser/web_applications/web_app_install_finalizer.cc b/chrome/browser/web_applications/web_app_install_finalizer.cc index bbc2d61..8b2e0444 100644 --- a/chrome/browser/web_applications/web_app_install_finalizer.cc +++ b/chrome/browser/web_applications/web_app_install_finalizer.cc
@@ -204,7 +204,8 @@ UninstallWebAppCallback callback) { DCHECK(started_); // WebAppSyncBridge::ApplySyncChangesToRegistrar does the actual - // NotifyWebAppUninstalled and unregistration of the app from the registry. + // NotifyWebAppWillBeUninstalled and unregistration of the app from the + // registry. DCHECK(!GetWebAppRegistrar().GetAppById(app_id)); icon_manager_->DeleteData( @@ -314,7 +315,7 @@ void WebAppInstallFinalizer::UninstallWebApp(const AppId& app_id, UninstallWebAppCallback callback) { - registrar().NotifyWebAppUninstalled(app_id); + registrar().NotifyWebAppWillBeUninstalled(app_id); os_integration_manager().UninstallAllOsHooks( app_id, base::BindOnce(&WebAppInstallFinalizer::OnUninstallOsHooks, weak_ptr_factory_.GetWeakPtr(), app_id,
diff --git a/chrome/browser/web_applications/web_app_install_manager_unittest.cc b/chrome/browser/web_applications/web_app_install_manager_unittest.cc index e7745ab..5c466cb 100644 --- a/chrome/browser/web_applications/web_app_install_manager_unittest.cc +++ b/chrome/browser/web_applications/web_app_install_manager_unittest.cc
@@ -830,7 +830,7 @@ file_utils().SetNextDeleteFileRecursivelyResult(true); enum Event { - kObserver_OnWebAppUninstalled, + kObserver_OnWebAppWillBeUninstalled, kUninstallWebAppsAfterSync_Callback }; std::vector<Event> event_order; @@ -839,7 +839,7 @@ observer.SetWebAppUninstalledDelegate( base::BindLambdaForTesting([&](const AppId& uninstalled_app_id) { EXPECT_EQ(uninstalled_app_id, app_id); - event_order.push_back(Event::kObserver_OnWebAppUninstalled); + event_order.push_back(Event::kObserver_OnWebAppWillBeUninstalled); })); base::RunLoop run_loop; @@ -863,7 +863,7 @@ run_loop.Run(); const std::vector<Event> expected_event_order{ - Event::kObserver_OnWebAppUninstalled, + Event::kObserver_OnWebAppWillBeUninstalled, Event::kUninstallWebAppsAfterSync_Callback}; EXPECT_EQ(expected_event_order, event_order); }
diff --git a/chrome/browser/web_applications/web_app_sync_bridge.cc b/chrome/browser/web_applications/web_app_sync_bridge.cc index c430534..602d62f 100644 --- a/chrome/browser/web_applications/web_app_sync_bridge.cc +++ b/chrome/browser/web_applications/web_app_sync_bridge.cc
@@ -534,7 +534,7 @@ // Notify observers that web apps will be uninstalled. |apps_to_delete| are // still registered at this stage. for (const AppId& app_id : update_local_data->apps_to_delete) { - registrar_->NotifyWebAppUninstalled(app_id); + registrar_->NotifyWebAppWillBeUninstalled(app_id); os_integration_manager().UninstallAllOsHooks(app_id, base::DoNothing()); }
diff --git a/chrome/browser/web_applications/web_app_tab_helper.cc b/chrome/browser/web_applications/web_app_tab_helper.cc index ce0644fe..c5548bf4 100644 --- a/chrome/browser/web_applications/web_app_tab_helper.cc +++ b/chrome/browser/web_applications/web_app_tab_helper.cc
@@ -148,7 +148,8 @@ web_contents(), installed_app_id); } -void WebAppTabHelper::OnWebAppUninstalled(const AppId& uninstalled_app_id) { +void WebAppTabHelper::OnWebAppWillBeUninstalled( + const AppId& uninstalled_app_id) { if (GetAppId() == uninstalled_app_id) ResetAppId(); }
diff --git a/chrome/browser/web_applications/web_app_tab_helper.h b/chrome/browser/web_applications/web_app_tab_helper.h index 3b7dbfc1..c887e75 100644 --- a/chrome/browser/web_applications/web_app_tab_helper.h +++ b/chrome/browser/web_applications/web_app_tab_helper.h
@@ -59,7 +59,7 @@ // AppRegistrarObserver: void OnWebAppInstalled(const AppId& installed_app_id) override; - void OnWebAppUninstalled(const AppId& uninstalled_app_id) override; + void OnWebAppWillBeUninstalled(const AppId& uninstalled_app_id) override; void OnAppRegistrarShutdown() override; void OnAppRegistrarDestroyed() override;
diff --git a/chrome/browser/webauthn/authenticator_request_dialog_model.cc b/chrome/browser/webauthn/authenticator_request_dialog_model.cc index 0716154..f0f079d 100644 --- a/chrome/browser/webauthn/authenticator_request_dialog_model.cc +++ b/chrome/browser/webauthn/authenticator_request_dialog_model.cc
@@ -291,7 +291,7 @@ if (transport_availability_.request_type == device::FidoRequestHandlerBase::RequestType::kMakeCredential && - incognito_mode_) { + transport_availability_.is_off_the_record_context) { SetCurrentStep(Step::kTouchIdIncognitoSpeedBump); return; }
diff --git a/chrome/browser/webauthn/authenticator_request_dialog_model.h b/chrome/browser/webauthn/authenticator_request_dialog_model.h index a5baccd..e072970ff 100644 --- a/chrome/browser/webauthn/authenticator_request_dialog_model.h +++ b/chrome/browser/webauthn/authenticator_request_dialog_model.h
@@ -388,10 +388,6 @@ return ephemeral_state_.responses_; } - void set_incognito_mode(bool incognito_mode) { - incognito_mode_ = incognito_mode; - } - bool might_create_resident_credential() const { return might_create_resident_credential_; } @@ -485,8 +481,6 @@ base::OnceCallback<void(device::AuthenticatorGetAssertionResponse)> selection_callback_; - bool incognito_mode_ = false; - // offer_try_again_in_ui_ indicates whether a button to retry the request // should be included on the dialog sheet shown when encountering certain // errors.
diff --git a/chrome/browser/webauthn/chrome_authenticator_request_delegate.cc b/chrome/browser/webauthn/chrome_authenticator_request_delegate.cc index e450281e..ed6b8429 100644 --- a/chrome/browser/webauthn/chrome_authenticator_request_delegate.cc +++ b/chrome/browser/webauthn/chrome_authenticator_request_delegate.cc
@@ -519,8 +519,6 @@ } weak_dialog_model_->AddObserver(this); - weak_dialog_model_->set_incognito_mode( - Profile::FromBrowserContext(browser_context())->IsIncognitoProfile()); weak_dialog_model_->StartFlow(std::move(data), GetLastTransportUsed());
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt index 2f7a74cb..26db0de7 100644 --- a/chrome/build/linux.pgo.txt +++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@ -chrome-linux-master-1609869437-8f3fde660eac6867df6a9ca50d8e63b86cfec419.profdata +chrome-linux-master-1609890206-88ace00cc385e4ef682397c3629935c4bd822382.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt index 00fb94d..91cea05 100644 --- a/chrome/build/mac.pgo.txt +++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@ -chrome-mac-master-1609869437-1a950cb4179e276745ee2e9da68ac232cb554183.profdata +chrome-mac-master-1609890206-97a23ce40eede0995d03d53b562706106b3aa301.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index e229c632..98856a0 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-master-1609858728-3e92b62c0c1af42b6c3d7f7431a7286c240b0146.profdata +chrome-win32-master-1609880376-51963dc93137cbb2d9fa681b7bce54c93abd3038.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index 4d74653f..fdd795d 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-master-1609858728-6f035387130eda965f3c879c319423c426ffdda8.profdata +chrome-win64-master-1609880376-433e631db9acaf4e4400335821e1ac4c51c26057.profdata
diff --git a/chrome/common/extensions/api/_api_features.json b/chrome/common/extensions/api/_api_features.json index 19846da..cc568ba 100644 --- a/chrome/common/extensions/api/_api_features.json +++ b/chrome/common/extensions/api/_api_features.json
@@ -298,10 +298,6 @@ "B44D08FD98F1523ED5837D78D0A606EA9D6206E5" // Web Store ] }], - "dataReductionProxy": { - "dependencies": ["permission:dataReductionProxy"], - "contexts": ["blessed_extension"] - }, "debugger": { "dependencies": ["permission:debugger"], "contexts": ["blessed_extension"]
diff --git a/chrome/common/extensions/api/_permission_features.json b/chrome/common/extensions/api/_permission_features.json index 3ab6d52a..e538d42 100644 --- a/chrome/common/extensions/api/_permission_features.json +++ b/chrome/common/extensions/api/_permission_features.json
@@ -199,13 +199,6 @@ "E24F1786D842E91E74C27929B0B3715A4689A473" // Cryptotoken ] }, - "dataReductionProxy": { - "channel": "stable", - "extension_types": ["extension"], - "whitelist": [ - "852290F2442EEE45EF673B8DA6090112079012A2" // http://crbug.com/375484 - ] - }, "debugger": [ { "channel": "stable",
diff --git a/chrome/common/extensions/api/api_sources.gni b/chrome/common/extensions/api/api_sources.gni index 50431b22..dc4ac8e 100644 --- a/chrome/common/extensions/api/api_sources.gni +++ b/chrome/common/extensions/api/api_sources.gni
@@ -25,7 +25,6 @@ "cookies.json", "cryptotoken_private.idl", "dashboard_private.json", - "data_reduction_proxy.json", "debugger.json", "desktop_capture.json", "developer_private.idl",
diff --git a/chrome/common/extensions/api/data_reduction_proxy.json b/chrome/common/extensions/api/data_reduction_proxy.json deleted file mode 100644 index 4c96518..0000000 --- a/chrome/common/extensions/api/data_reduction_proxy.json +++ /dev/null
@@ -1,82 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -[ - { - "namespace": "dataReductionProxy", - "description": "Use the <code>chrome.dataReductionProxy</code> API to control the data reduction proxy and access usage metrics. This API relies on the <a href='types#ChromeSetting'>ChromeSetting prototype of the type API</a> for getting and setting Chrome's configuration.", - "properties": { - "spdyProxyEnabled": { - "nocompile": true, - "$ref": "types.ChromeSetting", - "value": ["spdy_proxy.enabled", {"type":"boolean"}], - "description": "Flag to enable data usage reduction by sending requests via data reduction proxy. This preference's value is a boolean, defaulting to <code>false</code>." - }, - "dataReductionDailyContentLength": { - "nocompile": true, - "$ref": "types.ChromeSetting", - "value": ["data_reduction.daily_original_length", {"type":"array"}], - "description": "Each item contains the number uncompressed bytes through data reduction proxy per day." - }, - "dataReductionDailyReceivedLength": { - "nocompile": true, - "$ref": "types.ChromeSetting", - "value": ["data_reduction.daily_received_length", {"type":"array"}], - "description": "Each item contains the number of compressed bytes through data reduction proxy per day." - }, - "dataUsageReportingEnabled": { - "nocompile": true, - "$ref": "types.ChromeSetting", - "value": ["data_usage_reporting.enabled", {"type":"boolean"}], - "description": "Flag to enable collection and reporting of detailed data usage." - } - }, - "functions": [ - { - "name": "clearDataSavings", - "type": "function", - "description": "Clear all data saving metrics obtained by using the data reduction proxy.", - "parameters": [ - { - "type": "function", - "name": "callback", - "description": "Callback to call after data savings have been cleared", - "optional": true, - "parameters": [] - } - ] - }, - { - "name": "getDataUsage", - "type": "function", - "description": "Get data usage history.", - "parameters": [ - { - "type": "function", - "name": "getDataUsageCallback", - "description": "Callback to call with data usage history", - "optional": true, - "parameters": [ - { - "name": "data_usage", - "type": "object", - "description": "Data usage history.", - "properties": { - "data_usage_buckets": { - "type": "array", - "description": "Data usage for the past 60 days broken down by time intervals. Each element contains data usage for |kDataUsageBucketLengthMins| minutes.", - "items": { - "type": "any", - "description": "Array of per-connection data usage. Each element contains data usage for a connection-type." - } - } - } - } - ] - } - ] - } - ] - } -]
diff --git a/chrome/common/extensions/permissions/chrome_api_permissions.cc b/chrome/common/extensions/permissions/chrome_api_permissions.cc index 50e0aded..0bd1f7f7 100644 --- a/chrome/common/extensions/permissions/chrome_api_permissions.cc +++ b/chrome/common/extensions/permissions/chrome_api_permissions.cc
@@ -72,9 +72,6 @@ APIPermissionInfo::kFlagDoesNotRequireManagedSessionFullLoginWarning}, {APIPermission::kCookie, "cookies"}, {APIPermission::kCryptotokenPrivate, "cryptotokenPrivate"}, - {APIPermission::kDataReductionProxy, "dataReductionProxy", - APIPermissionInfo::kFlagImpliesFullURLAccess | - APIPermissionInfo::kFlagCannotBeOptional}, {APIPermission::kEnterpriseDeviceAttributes, "enterprise.deviceAttributes", APIPermissionInfo::kFlagDoesNotRequireManagedSessionFullLoginWarning}, {APIPermission::kEnterpriseHardwarePlatform, "enterprise.hardwarePlatform",
diff --git a/chrome/common/extensions/permissions/permission_set_unittest.cc b/chrome/common/extensions/permissions/permission_set_unittest.cc index 70e2c325..56e27fd 100644 --- a/chrome/common/extensions/permissions/permission_set_unittest.cc +++ b/chrome/common/extensions/permissions/permission_set_unittest.cc
@@ -790,7 +790,6 @@ skip.insert(APIPermission::kCookie); // These are warned as part of host permission checks. - skip.insert(APIPermission::kDataReductionProxy); skip.insert(APIPermission::kDeclarativeContent); skip.insert(APIPermission::kPageCapture); skip.insert(APIPermission::kProxy);
diff --git a/chrome/installer/linux/rpm/calculate_package_deps.py b/chrome/installer/linux/rpm/calculate_package_deps.py index 9d580f2e..bf64150 100755 --- a/chrome/installer/linux/rpm/calculate_package_deps.py +++ b/chrome/installer/linux/rpm/calculate_package_deps.py
@@ -25,7 +25,7 @@ bundled_shlibs = [os.path.basename(file) for file in args.shlibs] distro_check = args.distro_check -if os.stat(binary).st_mode & 0111 == 0: +if os.stat(binary).st_mode & 0o111 == 0: print (('/usr/lib/rpm/elfdeps requires that binaries have an exectuable ' + 'bit set, but binary "%s" does not.') % os.path.basename(binary)) sys.exit(1)
diff --git a/chrome/renderer/safe_browsing/phishing_classifier_browsertest.cc b/chrome/renderer/safe_browsing/phishing_classifier_browsertest.cc index aef3ca2..7176b58 100644 --- a/chrome/renderer/safe_browsing/phishing_classifier_browsertest.cc +++ b/chrome/renderer/safe_browsing/phishing_classifier_browsertest.cc
@@ -139,6 +139,7 @@ verdict.feature_map(i).value()); } is_phishing_ = verdict.is_phishing(); + is_dom_match_ = verdict.is_dom_match(); screenshot_digest_ = verdict.screenshot_digest(); screenshot_phash_ = verdict.screenshot_phash(); phash_dimension_size_ = verdict.phash_dimension_size(); @@ -174,6 +175,7 @@ std::string screenshot_digest_; std::string screenshot_phash_; int phash_dimension_size_; + bool is_dom_match_; // A DiscardableMemoryAllocator is needed for certain Skia operations. base::TestDiscardableMemoryAllocator test_allocator_; @@ -292,6 +294,25 @@ } #endif +TEST_F(PhishingClassifierTest, TestPhishingPagesAreDomMatches) { + LoadHtml( + GURL("http://host.net"), + "<html><body><a href=\"http://phishing.com/\">login</a></body></html>"); + RunPhishingClassifier(&page_text_); + + EXPECT_TRUE(is_phishing_); + EXPECT_TRUE(is_dom_match_); +} + +TEST_F(PhishingClassifierTest, TestSafePagesAreNotDomMatches) { + LoadHtml(GURL("http://host.net"), + "<html><body><a href=\"http://safe.com/\">login</a></body></html>"); + RunPhishingClassifier(&page_text_); + + EXPECT_FALSE(is_phishing_); + EXPECT_FALSE(is_dom_match_); +} + // TODO(jialiul): Add test to verify that classification only starts on GET // method. It seems there is no easy way to simulate a HTTP POST in // ChromeRenderViewTest.
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 24e2547..e604ccc 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -1280,7 +1280,6 @@ "../browser/previews/defer_all_script_browsertest.cc", "../browser/previews/defer_all_script_priority_browsertest.cc", "../browser/previews/lazyload_browsertest.cc", - "../browser/previews/previews_browsertest.cc", "../browser/previews/previews_service_browser_test.cc", "../browser/previews/previews_test_util.cc", "../browser/previews/previews_test_util.h", @@ -3222,6 +3221,16 @@ if (is_chromeos_lacros) { # This test target is intended for lacros chrome specific tests that depend + # on wayland, for generic tests, please use 'unit_tests' target instead. + test("lacros_chrome_unittests") { + use_xvfb = use_xvfb_in_this_config + deps = [ + "//base/test:run_all_unittests", + "//chromeos/process_proxy:unit_tests", + ] + } + + # This test target is intended for lacros chrome specific tests that depend # on crosapi, for generic tests, please use 'browser_tests' target instead. test("lacros_chrome_browsertests") { use_xvfb = use_xvfb_in_this_config @@ -3597,7 +3606,6 @@ "../browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.cc", "../browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.h", "../browser/page_load_metrics/observers/prefetch_proxy_page_load_metrics_observer_unittest.cc", - "../browser/page_load_metrics/observers/previews_page_load_metrics_observer_unittest.cc", "../browser/page_load_metrics/observers/previews_ukm_observer_unittest.cc", "../browser/page_load_metrics/observers/protocol_page_load_metrics_observer_unittest.cc", "../browser/page_load_metrics/observers/scheme_page_load_metrics_observer_unittest.cc", @@ -6799,6 +6807,8 @@ sources += [ "../browser/apps/platform_apps/app_shim_interactive_uitest_mac.mm", "../browser/apps/platform_apps/app_shim_quit_interactive_uitest_mac.mm", + "../browser/focus_ring_browsertest_mac.h", + "../browser/focus_ring_browsertest_mac.mm", "../browser/global_keyboard_shortcuts_mac_browsertest.mm", "../browser/notifications/notification_interactive_uitest_mac.mm", "../browser/spellchecker/spellcheck_mac_view_interactive_uitest.mm",
diff --git a/chrome/test/data/autofill/captured_sites/testcases.json b/chrome/test/data/autofill/captured_sites/testcases.json index 49df9e8..39cdf37 100644 --- a/chrome/test/data/autofill/captured_sites/testcases.json +++ b/chrome/test/data/autofill/captured_sites/testcases.json
@@ -26,7 +26,7 @@ { "site_name": "boostmobile" }, { "site_name": "bradfordexchange" }, { "site_name": "brandfactoryonline" }, - { "site_name": "bricklink" }, + { "site_name": "bricklink", "disabled":true, "bug_number":1159936 }, { "site_name": "broadway" }, { "site_name": "brownells" }, { "site_name": "cabelas" }, @@ -187,7 +187,7 @@ { "site_name": "tickets" }, { "site_name": "tiger_direct" }, { "site_name": "tillys", "disabled":true, "bug_number":1101866 }, - { "site_name": "timberland" }, + { "site_name": "timberland", "disabled":true, "bug_number":1159947 }, { "site_name": "tirerack" }, { "site_name": "torrid" }, { "site_name": "tractorsupply" },
diff --git a/chrome/test/data/extensions/api_test/preference/data_reduction_proxy/manifest.json b/chrome/test/data/extensions/api_test/preference/data_reduction_proxy/manifest.json deleted file mode 100644 index 86b73392..0000000 --- a/chrome/test/data/extensions/api_test/preference/data_reduction_proxy/manifest.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "name" : "Preferences API Test Extension (dataReductionProxy)", - "version" : "0.1", - "manifest_version": 2, - "description" : "Preferences API Test Extension (dataReductionProxy)", - "permissions": [ "dataReductionProxy" ], - "background": { - "scripts": ["test.js"], - "persistent": false - }, - "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAldnSfuah+uUWJTF0r20TXNdpjRJIlThi/Ehi890TPFerwVfyOUzWIO1wXXnu5/vCMy+SpAYI4TeAWhqBhZKRTLfoDjhcl1VXFf4KSaIDdCQycYe/xIUksmdFBox22cRDMtdUOkV4yLsML/ObIEPUMVLUJoJ4DsiMQJ4KKviEQOdEbySmmB0IXrZfT3PD0tS3HcUUcBP5wrPN9AWhW0FMtwAlp7eT5Uu3US8lyNkJDcdPtdchi6fgQ62khn1mnMpY0YHnZyr5jMKJe8WLxFTf9YtDt1XVZYZKSFtdPE0c7p/06cRqHzXMHcvnM78+gtCXU0r5Ek/4+4emDNQ3HIeJRwIDAQAB" -}
diff --git a/chrome/test/data/extensions/api_test/preference/data_reduction_proxy/test.js b/chrome/test/data/extensions/api_test/preference/data_reduction_proxy/test.js deleted file mode 100644 index 712fa60b..0000000 --- a/chrome/test/data/extensions/api_test/preference/data_reduction_proxy/test.js +++ /dev/null
@@ -1,65 +0,0 @@ -// Copyright (c) 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Content settings API test -// Run with browser_tests -// --gtest_filter=ExtensionPreferenceApiTest.DataReductionProxy - -var dataReductionProxy = chrome.dataReductionProxy; -chrome.test.runTests([ - function getDrpPrefs() { - dataReductionProxy.spdyProxyEnabled.get({}, chrome.test.callbackPass( - function(result) { - chrome.test.assertEq( - { - 'value': false, - 'levelOfControl': 'controllable_by_this_extension' - }, - result); - })); - }, - function clearDataSavings() { - dataReductionProxy.dataUsageReportingEnabled.set({ 'value': true }); - dataReductionProxy.spdyProxyEnabled.set({ 'value': true }); - - verifyDataUsage(20, chrome.test.callbackPass(function() { - dataReductionProxy.clearDataSavings(function() { - verifyDataUsage(1, null); - }); - })); - }, - function dataUsageReporting() { - dataReductionProxy.dataUsageReportingEnabled.set({ 'value': true }); - - verifyDataUsage(20, null); - } -]); - -// Data usage reporting takes some time to initialize before a call to -// |getDataUsage| is successful. If |getDataUsage| gives us an empty array, -// we retry after some delay. Test will report failure if the expected data -// usage is not returned after |numRetries| retries. -// We don't have a way to populate actual data usage in a browser test, so we -// only check the length of the returned data usage array. -// The |onVerifyDone| callback, if present, is executed after verifying data -// usage. -function verifyDataUsage(numRetries, onVerifyDone) { - chrome.test.assertTrue(numRetries != 0); - - setTimeout(chrome.test.callbackPass(function() { - dataReductionProxy.getDataUsage(chrome.test.callbackPass( - function(data_usage) { - chrome.test.assertTrue('data_usage_buckets' in data_usage); - if (data_usage['data_usage_buckets'].length == 0) { - verifyDataUsage(numRetries - 1, onVerifyDone); - } else { - chrome.test.assertEq(5760, - data_usage['data_usage_buckets'].length); - if (onVerifyDone) { - onVerifyDone(); - } - } - })); - }), 1000); -}; \ No newline at end of file
diff --git a/chrome/test/data/focus_rings/focus_ring_browsertest_dark_mode_button.png b/chrome/test/data/focus_rings/focus_ring_browsertest_dark_mode_button.png new file mode 100644 index 0000000..7336590d --- /dev/null +++ b/chrome/test/data/focus_rings/focus_ring_browsertest_dark_mode_button.png Binary files differ
diff --git a/chrome/test/data/focus_rings/focus_ring_browsertest_dark_mode_button_mac.png b/chrome/test/data/focus_rings/focus_ring_browsertest_dark_mode_button_mac.png new file mode 100644 index 0000000..b0ea727 --- /dev/null +++ b/chrome/test/data/focus_rings/focus_ring_browsertest_dark_mode_button_mac.png Binary files differ
diff --git a/chrome/test/data/focus_rings/focus_ring_browsertest_dark_mode_button_win.png b/chrome/test/data/focus_rings/focus_ring_browsertest_dark_mode_button_win.png new file mode 100644 index 0000000..03f91f2 --- /dev/null +++ b/chrome/test/data/focus_rings/focus_ring_browsertest_dark_mode_button_win.png Binary files differ
diff --git a/chrome/test/data/password/captured_sites/testcases.json b/chrome/test/data/password/captured_sites/testcases.json index 7ea4919..b65dc0a 100644 --- a/chrome/test/data/password/captured_sites/testcases.json +++ b/chrome/test/data/password/captured_sites/testcases.json
@@ -144,7 +144,7 @@ { "scenario_dir":"sign_up_pass", "site_name":"hrblock" }, { "scenario_dir":"sign_up_pass", "site_name":"indeed" }, { "scenario_dir":"sign_up_pass", "site_name":"instagram" }, - { "scenario_dir":"sign_up_pass", "site_name":"librus" }, + { "scenario_dir":"sign_up_pass", "site_name":"librus", "disabled":true, "bug_number":1159936 }, { "scenario_dir":"sign_up_pass", "site_name":"marriott" }, { "scenario_dir":"sign_up_pass", "site_name":"nitro_type" }, { "scenario_dir":"sign_up_pass", "site_name":"orange" },
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 16baa4e..db8fa8d0 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
@@ -2,8 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import {chromeCartDescriptor, ChromeCartProxy} from 'chrome://new-tab-page/new_tab_page.js'; +import {$$, chromeCartDescriptor, ChromeCartProxy} from 'chrome://new-tab-page/new_tab_page.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; +import {assertStyle} from 'chrome://test/new_tab_page/test_support.js'; import {TestBrowserProxy} from 'chrome://test/test_browser_proxy.m.js'; import {eventToPromise} from 'chrome://test/test_util.m.js'; @@ -81,11 +82,11 @@ assertEquals(4, cartItems.length); assertEquals('https://amazon.com/', cartItems[0].href); - assertEquals('Amazon', cartItems[0].querySelector('#merchant').innerText); - let itemCount = cartItems[0].querySelector('#itemCount').innerText; + assertEquals('Amazon', cartItems[0].querySelector('.merchant').innerText); + let itemCount = cartItems[0].querySelector('.item-count').innerText; assertEquals('3', itemCount.slice(-1)); let thumbnailList = Array.from( - cartItems[0].querySelector('#thumbnailList').querySelectorAll('img')); + cartItems[0].querySelector('.thumbnail-list').querySelectorAll('img')); assertEquals(3, thumbnailList.length); assertEquals('https://image1.com', thumbnailList[0].autoSrc); assertEquals('https://image2.com', thumbnailList[1].autoSrc); @@ -93,30 +94,30 @@ assertEquals(null, cartItems[0].querySelector('.thumbnail-fallback')); assertEquals('https://ebay.com/', cartItems[1].href); - assertEquals('eBay', cartItems[1].querySelector('#merchant').innerText); - itemCount = cartItems[1].querySelector('#itemCount').innerText; + assertEquals('eBay', cartItems[1].querySelector('.merchant').innerText); + itemCount = cartItems[1].querySelector('.item-count').innerText; assertEquals('2', itemCount.slice(-1)); thumbnailList = Array.from( - cartItems[1].querySelector('#thumbnailList').querySelectorAll('img')); + cartItems[1].querySelector('.thumbnail-list').querySelectorAll('img')); assertEquals(2, thumbnailList.length); assertEquals('https://image4.com', thumbnailList[0].autoSrc); assertEquals('https://image5.com', thumbnailList[1].autoSrc); assertEquals(null, cartItems[1].querySelector('.thumbnail-fallback')); assertEquals('https://bestbuy.com/', cartItems[2].href); - assertEquals('BestBuy', cartItems[2].querySelector('#merchant').innerText); - assertEquals(null, cartItems[2].querySelector('#itemCount')); - assertEquals(null, cartItems[2].querySelector('#thumbnailList')); + assertEquals('BestBuy', cartItems[2].querySelector('.merchant').innerText); + assertEquals(null, cartItems[2].querySelector('.item-count')); + assertEquals(null, cartItems[2].querySelector('.thumbnail-list')); assertEquals( 'chrome://new-tab-page/icons/cart_fallback.svg', cartItems[2].querySelector('.thumbnail-fallback').src); assertEquals('https://walmart.com/', cartItems[3].href); - assertEquals('Walmart', cartItems[3].querySelector('#merchant').innerText); - itemCount = cartItems[3].querySelector('#itemCount').innerText; + assertEquals('Walmart', cartItems[3].querySelector('.merchant').innerText); + itemCount = cartItems[3].querySelector('.item-count').innerText; assertEquals('4', itemCount.slice(-1)); thumbnailList = Array.from( - cartItems[3].querySelector('#thumbnailList').querySelectorAll('img')); + cartItems[3].querySelector('.thumbnail-list').querySelectorAll('img')); assertEquals(3, thumbnailList.length); assertEquals('https://image6.com', thumbnailList[0].autoSrc); assertEquals('https://image7.com', thumbnailList[1].autoSrc); @@ -196,4 +197,41 @@ // Assert. assertEquals(1, testProxy.handler.getCallCount('restoreCartModule')); }); + + test('show and hide action menu', async () => { + // Arrange. + const carts = [ + { + merchant: 'Amazon', + cartUrl: {url: 'https://amazon.com'}, + productImageUrls: [ + {url: 'https://image1.com'}, {url: 'https://image2.com'}, + {url: 'https://image3.com'} + ], + }, + ]; + testProxy.handler.setResultFor( + 'getMerchantCarts', Promise.resolve({carts})); + + // Arrange. + await chromeCartDescriptor.initialize(); + const moduleElement = chromeCartDescriptor.element; + document.body.append(moduleElement); + moduleElement.$.cartItemRepeat.render(); + + // Assert. + const cartItems = + Array.from(moduleElement.shadowRoot.querySelectorAll('.cart-item')); + assertEquals(1, cartItems.length); + let menuButton = cartItems[0].querySelector('.icon-more-vert'); + assertStyle(menuButton, 'opacity', '0'); + const actionMenu = $$(moduleElement, '#actionMenu'); + assertFalse(actionMenu.open); + + // Act + menuButton.click(); + + // Assert. + assertTrue(actionMenu.open); + }); });
diff --git a/chrome/test/data/webui/settings/chromeos/switch_access_subpage_tests.js b/chrome/test/data/webui/settings/chromeos/switch_access_subpage_tests.js index 0a1a73d..fb1fa04 100644 --- a/chrome/test/data/webui/settings/chromeos/switch_access_subpage_tests.js +++ b/chrome/test/data/webui/settings/chromeos/switch_access_subpage_tests.js
@@ -96,13 +96,15 @@ }); /** - * @param {!Array<string>} switches New switch assignments for select action. + * @param {!Array<string>} keys New switch key assignments for select action. * @return {string} Sub-label text from the select link row. */ - function getSublabelForSelectUpdates(switches) { - cr.webUIListenerCallback( - 'switch-access-assignments-changed', - {select: switches, next: [], previous: []}); + function getSublabelForSelectUpdates(keys) { + cr.webUIListenerCallback('switch-access-assignments-changed', { + select: keys.map(key => ({key, devices: ['internal']})), + next: [], + previous: [] + }); return page.$$('#selectLinkRow').$$('#subLabel').textContent.trim(); } @@ -118,7 +120,7 @@ // Simulate a pref change for the select action. cr.webUIListenerCallback( 'switch-access-assignments-changed', - {select: ['a'], next: [], previous: []}); + {select: [{key: 'a', devices: ['internal']}], next: [], previous: []}); assertEquals(1, page.selectAssignments_.length); assertEquals('a', page.selectAssignments_[0]);
diff --git a/chromecast/browser/webview/proto/webview.proto b/chromecast/browser/webview/proto/webview.proto index 6835749..582c1c0 100644 --- a/chromecast/browser/webview/proto/webview.proto +++ b/chromecast/browser/webview/proto/webview.proto
@@ -285,6 +285,15 @@ int32 flags = 2; } +// Used to represent a space within a rectangle by "shrinking" the rectangle by +// the inset amount on all four sides. +message SetInsetsRequest { + int32 top = 1; + int32 left = 2; + int32 bottom = 3; + int32 right = 4; +} + message WebviewRequest { // Unique identifier for the request. For requests that will have a response, // the response id will match the request id. @@ -331,6 +340,7 @@ AssociateCastAppWindowRequest associate = 20; ResizeRequest resize = 21; ClearCookiesRequest clear_cookies = 22; + SetInsetsRequest set_insets = 23; } }
diff --git a/chromecast/browser/webview/web_content_controller.cc b/chromecast/browser/webview/web_content_controller.cc index 5beda14..d5043dd 100644 --- a/chromecast/browser/webview/web_content_controller.cc +++ b/chromecast/browser/webview/web_content_controller.cc
@@ -174,6 +174,16 @@ } break; + case webview::WebviewRequest::kSetInsets: + if (request.has_set_insets()) { + HandleSetInsets(gfx::Insets( + request.set_insets().top(), request.set_insets().left(), + request.set_insets().bottom(), request.set_insets().right())); + } else { + client_->OnError("set_insets() not supplied"); + } + break; + default: client_->OnError("Unknown request code"); break; @@ -506,6 +516,12 @@ } } +void WebContentController::HandleSetInsets(const gfx::Insets& insets) { + auto* contents = GetWebContents(); + if (contents && contents->GetTopLevelRenderWidgetHostView()) + contents->GetTopLevelRenderWidgetHostView()->SetInsets(insets); +} + viz::SurfaceId WebContentController::GetSurfaceId() { content::WebContents* web_contents = GetWebContents(); // Web contents are destroyed before controller for cast apps.
diff --git a/chromecast/browser/webview/web_content_controller.h b/chromecast/browser/webview/web_content_controller.h index f2fbd23..e5322c1 100644 --- a/chromecast/browser/webview/web_content_controller.h +++ b/chromecast/browser/webview/web_content_controller.h
@@ -117,6 +117,8 @@ void HandleClearCookies(int64_t id); void HandleGetTitle(int64_t id); void HandleResize(const gfx::Size& size); + void HandleSetInsets(const gfx::Insets& insets); + viz::SurfaceId GetSurfaceId(); void ChannelModified(content::RenderFrameHost* frame, const std::string& channel,
diff --git a/chromecast/browser/webview/webview_browsertest.cc b/chromecast/browser/webview/webview_browsertest.cc index 3dcaf179..c442cf0 100644 --- a/chromecast/browser/webview/webview_browsertest.cc +++ b/chromecast/browser/webview/webview_browsertest.cc
@@ -11,6 +11,7 @@ #include "chromecast/browser/extensions/cast_extension_system_factory.h" #include "chromecast/browser/webview/webview_controller.h" #include "components/keyed_service/content/browser_context_dependency_manager.h" +#include "content/public/browser/render_widget_host_view.h" #include "content/public/common/content_switches.h" #include "content/public/test/browser_test.h" #include "content/public/test/browser_test_base.h" @@ -130,4 +131,49 @@ RunMessageLoop(); } +IN_PROC_BROWSER_TEST_F(WebviewTest, SetInsets) { + // Webview creation sends messages to the client (eg: accessibility ID). + EXPECT_CALL(client_, EnqueueSend(_)).Times(testing::AnyNumber()); + + WebviewController webview(context_.get(), &client_, true); + GURL test_url = embedded_test_server()->GetURL("foo.com", "/test"); + + auto check = [](const std::unique_ptr<webview::WebviewResponse>& response) { + return response->has_page_event() && + response->page_event().current_page_state() == + webview::AsyncPageEvent_State_LOADED; + }; + EXPECT_CALL(client_, EnqueueSend(Truly(check))) + .Times(testing::AtLeast(1)) + .WillOnce( + [this, &webview](std::unique_ptr<webview::WebviewResponse> response) { + webview::WebviewRequest request; + request.mutable_set_insets()->set_top(0); + request.mutable_set_insets()->set_left(0); + request.mutable_set_insets()->set_bottom(200); + request.mutable_set_insets()->set_right(0); + webview.ProcessRequest(request); + + gfx::Size size_after = webview.GetWebContents() + ->GetRenderWidgetHostView() + ->GetVisibleViewportSize(); + EXPECT_EQ(gfx::Size(800, 400), size_after); + + Quit(); + }); + + // Requests are executed serially. Resize first to make sure the Webview is + // properly sized by the time the page loads. + webview::WebviewRequest resize; + resize.mutable_resize()->set_width(800); + resize.mutable_resize()->set_height(600); + webview.ProcessRequest(resize); + + webview::WebviewRequest nav; + nav.mutable_navigate()->set_url(test_url.spec()); + webview.ProcessRequest(nav); + + RunMessageLoop(); +} + } // namespace chromecast
diff --git a/chromecast/browser/webview/webview_controller.h b/chromecast/browser/webview/webview_controller.h index 4d64453..489519d 100644 --- a/chromecast/browser/webview/webview_controller.h +++ b/chromecast/browser/webview/webview_controller.h
@@ -28,6 +28,7 @@ namespace chromecast { class WebviewNavigationThrottle; +class WebviewTest; // This owns a WebContents and CastWebContents and processes proto commands // to allow the web contents to be controlled and embedded. @@ -62,6 +63,8 @@ void OnNavigationThrottleDestroyed(WebviewNavigationThrottle* throttle); protected: + FRIEND_TEST_ALL_PREFIXES(WebviewTest, SetInsets); + content::WebContents* GetWebContents() override; private:
diff --git a/chromecast/media/audio/capture_service/capture_service_receiver_unittest.cc b/chromecast/media/audio/capture_service/capture_service_receiver_unittest.cc index 0e47cc5..d7f443f 100644 --- a/chromecast/media/audio/capture_service/capture_service_receiver_unittest.cc +++ b/chromecast/media/audio/capture_service/capture_service_receiver_unittest.cc
@@ -28,24 +28,26 @@ namespace { constexpr StreamInfo kStreamInfo = - StreamInfo{StreamType::kSoftwareEchoCancelled, - AudioCodec::kPcm, - 1, - SampleFormat::PLANAR_FLOAT, - 16000, - 160}; -constexpr HandshakePacket kHandshakePacket = - HandshakePacket{0, - static_cast<uint8_t>(MessageType::kHandshake), - static_cast<uint8_t>(kStreamInfo.stream_type), - static_cast<uint8_t>(kStreamInfo.audio_codec), - static_cast<uint8_t>(kStreamInfo.sample_format), - kStreamInfo.num_channels, - kStreamInfo.frames_per_buffer, - kStreamInfo.sample_rate}; -constexpr PcmPacketHeader kPcmAudioPacketHeader = - PcmPacketHeader{0, static_cast<uint8_t>(MessageType::kPcmAudio), - static_cast<uint8_t>(kStreamInfo.stream_type), 0}; + StreamInfo{.stream_type = StreamType::kSoftwareEchoCancelled, + .audio_codec = AudioCodec::kPcm, + .num_channels = 1, + .sample_format = SampleFormat::PLANAR_FLOAT, + .sample_rate = 16000, + .frames_per_buffer = 160}; +constexpr HandshakePacket kHandshakePacket = HandshakePacket{ + .size = 0, // dummy + .message_type = static_cast<uint8_t>(MessageType::kHandshake), + .stream_type = static_cast<uint8_t>(kStreamInfo.stream_type), + .audio_codec = static_cast<uint8_t>(kStreamInfo.audio_codec), + .sample_format = static_cast<uint8_t>(kStreamInfo.sample_format), + .num_channels = kStreamInfo.num_channels, + .num_frames = kStreamInfo.frames_per_buffer, + .sample_rate = kStreamInfo.sample_rate}; +constexpr PcmPacketHeader kPcmAudioPacketHeader = PcmPacketHeader{ + .size = 0, // dummy + .message_type = static_cast<uint8_t>(MessageType::kPcmAudio), + .stream_type = static_cast<uint8_t>(kStreamInfo.stream_type), + .timestamp_us = 0}; class MockStreamSocket : public chromecast::MockStreamSocket { public:
diff --git a/chromecast/media/audio/capture_service/message_parsing_utils.cc b/chromecast/media/audio/capture_service/message_parsing_utils.cc index 78d07de..fcef1e8e 100644 --- a/chromecast/media/audio/capture_service/message_parsing_utils.cc +++ b/chromecast/media/audio/capture_service/message_parsing_utils.cc
@@ -27,6 +27,10 @@ constexpr size_t kHandshakeHeaderBytes = sizeof(HandshakePacket) - sizeof(uint16_t); +static_assert(sizeof(PcmPacketHeader) % 4 == 0, + "Size of PCM audio packet header must be a multiple of 4 bytes."); +static_assert(sizeof(HandshakePacket) % 4 == 0, + "Size of handshake packet must be a multiple of 4 bytes."); static_assert(kPcmAudioHeaderBytes == sizeof(PcmPacketHeader) - sizeof(uint16_t), "Invalid message header size.");
diff --git a/chromecast/media/audio/capture_service/packet_header.h b/chromecast/media/audio/capture_service/packet_header.h index 2f5b6ec..ca33f2b 100644 --- a/chromecast/media/audio/capture_service/packet_header.h +++ b/chromecast/media/audio/capture_service/packet_header.h
@@ -23,8 +23,9 @@ int64_t timestamp_us; }; -// Memory block of a handshake packet. There is no size restriction for this -// structure. +// Memory block of a handshake packet. Audio packet may be sent after handshake +// packet, and thus handshake packet must also have a multiple of 4 bytes, since +// audio data must be aligned. struct __attribute__((__packed__)) HandshakePacket { uint16_t size; uint8_t message_type; @@ -32,7 +33,9 @@ uint8_t audio_codec; uint8_t sample_format; uint8_t num_channels; + uint8_t padding_uint8; uint16_t num_frames; + uint16_t padding_uint16; uint32_t sample_rate; };
diff --git a/chromecast/system/reboot/reboot_fuchsia.cc b/chromecast/system/reboot/reboot_fuchsia.cc index e080c3b..928e6668 100644 --- a/chromecast/system/reboot/reboot_fuchsia.cc +++ b/chromecast/system/reboot/reboot_fuchsia.cc
@@ -91,10 +91,8 @@ reason = StateControlRebootReason::USER_REQUEST; break; case RebootSource::OTA: - // We are only expecting OTAs initiated by the platform via the - // fuchsia.hardware.power.statecontrol/Admin FIDL service. - NOTREACHED(); - return false; + reason = StateControlRebootReason::SYSTEM_UPDATE; + break; case RebootSource::OVERHEAT: reason = StateControlRebootReason::HIGH_TEMPERATURE; break; @@ -177,7 +175,6 @@ case RebootReason::USER_REQUEST: return RebootShlib::RebootSource::API; case RebootReason::SYSTEM_UPDATE: - case RebootReason::RETRY_SYSTEM_UPDATE: return RebootShlib::RebootSource::OTA; case RebootReason::HIGH_TEMPERATURE: return RebootShlib::RebootSource::OVERHEAT;
diff --git a/chromecast/system/reboot/reboot_fuchsia_test.cc b/chromecast/system/reboot/reboot_fuchsia_test.cc index 788a693..975734cf 100644 --- a/chromecast/system/reboot/reboot_fuchsia_test.cc +++ b/chromecast/system/reboot/reboot_fuchsia_test.cc
@@ -66,6 +66,8 @@ // Graceful reboot reasons. {RebootReason::USER_REQUEST, RebootShlib::RebootSource::API, true, StateControlRebootReason::USER_REQUEST}, + {RebootReason::SYSTEM_UPDATE, RebootShlib::RebootSource::OTA, true, + StateControlRebootReason::SYSTEM_UPDATE}, {RebootReason::HIGH_TEMPERATURE, RebootShlib::RebootSource::OVERHEAT, true, StateControlRebootReason::HIGH_TEMPERATURE}, {RebootReason::SESSION_FAILURE, RebootShlib::RebootSource::SW_OTHER, true}, @@ -234,33 +236,6 @@ Eq(RebootShlib::RebootSource::SW_OTHER)); } -TEST_F(RebootFuchsiaTest, RebootSourceOtaNotSupported) { - EXPECT_DEATH(RebootShlib::RebootNow(RebootShlib::RebootSource::OTA), ""); -} - -fuchsia::feedback::LastReboot GenerateLastReboot(bool graceful, - RebootReason reason) { - fuchsia::feedback::LastReboot last_reboot; - last_reboot.set_graceful(graceful); - last_reboot.set_reason(reason); - return last_reboot; -} - -// SystemUpdate-related reasons must be handled separately. Otherwise, they will -// fail RebootNowSendsFidlRebootReason because RebootNow panics when given -// RebootShlib::RebootSource::OTA. -TEST_F(RebootFuchsiaTest, RebootReasonSystemUpdate) { - SetLastReboot(GenerateLastReboot(true, RebootReason::SYSTEM_UPDATE)); - EXPECT_THAT(RebootUtil::GetLastRebootSource(), - Eq(RebootShlib::RebootSource::OTA)); -} - -TEST_F(RebootFuchsiaTest, RebootReasonRetrySystemUpdate) { - SetLastReboot(GenerateLastReboot(true, RebootReason::RETRY_SYSTEM_UPDATE)); - EXPECT_THAT(RebootUtil::GetLastRebootSource(), - Eq(RebootShlib::RebootSource::OTA)); -} - class RebootFuchsiaParamTest : public RebootFuchsiaTest, public ::testing::WithParamInterface<RebootReasonParam> { public: @@ -274,7 +249,12 @@ } TEST_P(RebootFuchsiaParamTest, GetLastRebootSourceTranslatesReasonFromFuchsia) { - SetLastReboot(GenerateLastReboot(GetParam().graceful, GetParam().reason)); + fuchsia::feedback::LastReboot last_reboot; + last_reboot.set_graceful(GetParam().graceful); + last_reboot.set_reason(GetParam().reason); + EXPECT_TRUE(last_reboot.has_graceful()); + EXPECT_TRUE(last_reboot.has_reason()); + SetLastReboot(std::move(last_reboot)); EXPECT_THAT(RebootUtil::GetLastRebootSource(), Eq(GetParam().source)); }
diff --git a/chromeos/BUILD.gn b/chromeos/BUILD.gn index 3743bdb..fbcad6c 100644 --- a/chromeos/BUILD.gn +++ b/chromeos/BUILD.gn
@@ -74,12 +74,6 @@ "printing/uri_impl.h", "printing/usb_printer_id.cc", "printing/usb_printer_id.h", - "process_proxy/process_output_watcher.cc", - "process_proxy/process_output_watcher.h", - "process_proxy/process_proxy.cc", - "process_proxy/process_proxy.h", - "process_proxy/process_proxy_registry.cc", - "process_proxy/process_proxy_registry.h", "scanning/scanner.cc", "scanning/scanner.h", ] @@ -174,6 +168,7 @@ "//chromeos/memory/userspace_swap:unit_tests", "//chromeos/network:test_support", "//chromeos/network:unit_tests", + "//chromeos/process_proxy:unit_tests", "//chromeos/services:unit_tests", "//chromeos/settings:unit_tests", "//chromeos/startup:unit_tests", @@ -213,8 +208,6 @@ "printing/uri_unittest.h", "printing/uri_unittest_consistency.cc", "printing/usb_printer_id_unittest.cc", - "process_proxy/process_output_watcher_unittest.cc", - "process_proxy/process_proxy_unittest.cc", "test/run_all_unittests.cc", ]
diff --git a/chromeos/chromeos_strings.grd b/chromeos/chromeos_strings.grd index acc32be5..290923f 100644 --- a/chromeos/chromeos_strings.grd +++ b/chromeos/chromeos_strings.grd
@@ -833,6 +833,109 @@ <message name="IDS_ONC_WIFI_SIGNAL_STRENGTH" desc="ONC Property label for WiFi.SignalStrength"> Signal strength </message> + <message name="IDS_ONC_IPV4_ADDRESS" desc="ONC Property label for ipv4-IPAddress"> + IP address + </message> + <message name="IDS_ONC_IPV4_GATEWAY" desc="ONC Property label for ipv4-Gateway"> + Gateway + </message> + <message name="IDS_ONC_IPV4_NETMASK" desc="ONC Property label for ipv4-netmask"> + Subnet mask + </message> + <message name="IDS_ONC_IPV6_ADDRESS" desc="ONC Property label for ipv6-Address"> + IPv6 address + </message> + <message name="IDS_ONC_CONNECTED" desc="Settings > Internet, text in network summary when a network is connected."> + Connected + </message> + <message name="IDS_ONC_CONNECTING" desc="Settings > Internet, text in network summary when a network is connecting."> + Connecting + </message> + <message name="IDS_ONC_PORTAL_STATE" desc="Settings > Internet, label in network details page for the captive portal state."> + Portal State + </message> + <message name="IDS_ONC_PORTAL_STATE_NO_INTERNET" desc="Settings > Internet, text in network details page when no internet connection is avialable."> + No internet + </message> + <message name="IDS_ONC_PORTAL_STATE_PORTAL" desc="Settings > Internet, text in network details page when a portal state was detected."> + Captive portal detected + </message> + <message name="IDS_ONC_PORTAL_STATE_PORTAL_SUSPECTED" desc="Settings > Internet, text in network details page when a portal state is suspected."> + Captive portal suspected + </message> + <message name="IDS_ONC_PORTAL_STATE_PROXY_AUTH" desc="Settings > Internet, text in network details page when a portal state was detected."> + Proxy authentication required + </message> + <message name="IDS_ONC_WIFI_FREQUENCY" desc="ONC Property label for WiFi.Frequency"> + Frequency + </message> + <message name="IDS_ONC_WIFI_PASSWORD" desc="ONC Property label for WiFi.Password"> + Password + </message> + <message name="IDS_ONC_WIFI_SECURITY" desc="ONC Property label for WiFi.Security"> + Security + </message> + <message name="IDS_ONC_WIFI_SECURITY_NONE" desc="In settings > Internet, a string specifying security type = none."> + None + </message> + <message name="IDS_ONC_WIFI_SECURITY_PSK" desc="In settings > Internet, a string specifying security type = PSK (either WPA-PSK or RSN-PSK)."> + PSK (WPA or RSN) + </message> + <message name="IDS_ONC_WIFI_SECURITY_WEP" desc="In settings > Internet, a string specifying security type = WEP."> + WEP + </message> + <message name="IDS_ONC_WIFI_SECURITY_EAP" desc="In settings > Internet, a string specifying security type = EAP (802.1X)."> + EAP + </message> + <message name="IDS_ONC_WIFI_SSID" desc="ONC Property label for WiFi.SSID"> + SSID + </message> + <message name="IDS_ONC_WIFI_BSSID" desc="Settings > Network > Wifi Network Detail Page > label for BSSID property. BSSID is a a unique 48 bit identifier for a wireless access point."> + BSSID + </message> + <message name="IDS_ONC_VPN_HOST" desc="ONC Property label for VPN.Host"> + Server hostname + </message> + <message name="IDS_ONC_VPN_TYPE" desc="ONC Property label for VPN.Type"> + Provider type + </message> + <message name="IDS_ONC_VPN_IPSEC_GROUP" desc="ONC Property label for VPN.IPSec.Group"> + Group name + </message> + <message name="IDS_ONC_VPN_THIRD_PARTY_VPN_PROVIDER_NAME" desc="ONC Property label for VPN.ThirdPartyVPN.ProviderName"> + Provider name + </message> + <message name="IDS_ONC_VPN_OPENVPN_OTP" desc="ONC Property label for VPN.OpenVPN.OTP"> + OTP + </message> + <message name="IDS_ONC_VPN_TYPE_L2TP_IPSEC" desc="ONC Property label for VPN.Type.L2TP-IPSec"> + L2TP/IPsec + </message> + <message name="IDS_ONC_VPN_TYPE_L2TP_IPSEC_PSK" desc="ONC Property label for configuring VPN.Type.L2TP-IPSec with AuthenticationType = PSK"> + L2TP/IPsec + pre-shared key + </message> + <message name="IDS_ONC_VPN_TYPE_L2TP_IPSEC_CERT" desc="ONC Property label for configuring VPN.Type.L2TP-IPSec with AuthenticationType = Cert"> + L2TP/IPsec + user certificate + </message> + <message name="IDS_ONC_VPN_OPENVPN_EXTRA_HOSTS" desc="ONC Property label for VPN.OpenVPN.ExtraHosts"> + Extra hosts + </message> + <message name="IDS_ONC_VPN_IPSEC_PSK" desc="ONC Property label for VPN.IPSec.PSK"> + Pre-shared key + </message> + <message name="IDS_ONC_VPN_PASSWORD" desc="ONC Property label for VPN.OpenVPN.Password or VPN.L2TP.Password"> + Password + </message> + <message name="IDS_ONC_VPN_USERNAME" desc="ONC Property label for VPN.OpenVPN.Username or VPN.L2TP.Username"> + Username + </message> + <message name="IDS_ONC_VPN_TYPE_OPENVPN" desc="ONC Property label for VPN.Type.OpenVPN"> + Open VPN + </message> + <message name="IDS_ONC_VPN_TYPE_ARCVPN" desc="ONC Property label for VPN.Type.ARCVPN"> + Android VPN + </message> + <!-- Network Health display strings --> <message name="IDS_NETWORK_HEALTH_STATE" desc="Label for the current state of a networking device.">
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_CONNECTED.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_CONNECTED.png.sha1 new file mode 100644 index 0000000..301775c --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_CONNECTED.png.sha1
@@ -0,0 +1 @@ +9c5b6ba63aef9bb443deaac9b09429a506e8dd1a \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_CONNECTING.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_CONNECTING.png.sha1 new file mode 100644 index 0000000..2b1c927 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_CONNECTING.png.sha1
@@ -0,0 +1 @@ +f46694f24e422c4f45784ce98da9868f86da3528 \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_IPV4_ADDRESS.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_IPV4_ADDRESS.png.sha1 new file mode 100644 index 0000000..cd114d1 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_IPV4_ADDRESS.png.sha1
@@ -0,0 +1 @@ +30efdc1d968bda9824b21dd7132dfe6a271a8c23 \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_IPV4_GATEWAY.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_IPV4_GATEWAY.png.sha1 new file mode 100644 index 0000000..2f83fb02 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_IPV4_GATEWAY.png.sha1
@@ -0,0 +1 @@ +bb5a63541fc15a7ecb9fcf8b0817d76174c62309 \ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_ONC_IPV4_NETMASK.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_IPV4_NETMASK.png.sha1 similarity index 100% rename from chrome/app/chromeos_strings_grdp/IDS_ONC_IPV4_NETMASK.png.sha1 rename to chromeos/chromeos_strings_grd/IDS_ONC_IPV4_NETMASK.png.sha1
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_IPV6_ADDRESS.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_IPV6_ADDRESS.png.sha1 new file mode 100644 index 0000000..542d1dc0 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_IPV6_ADDRESS.png.sha1
@@ -0,0 +1 @@ +e26763abecb597cc9ea6d739ac4f7cccbb58b29c \ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_ONC_PORTAL_STATE.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_PORTAL_STATE.png.sha1 similarity index 100% rename from chrome/app/chromeos_strings_grdp/IDS_ONC_PORTAL_STATE.png.sha1 rename to chromeos/chromeos_strings_grd/IDS_ONC_PORTAL_STATE.png.sha1
diff --git a/chrome/app/chromeos_strings_grdp/IDS_ONC_PORTAL_STATE_NO_INTERNET.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_PORTAL_STATE_NO_INTERNET.png.sha1 similarity index 100% rename from chrome/app/chromeos_strings_grdp/IDS_ONC_PORTAL_STATE_NO_INTERNET.png.sha1 rename to chromeos/chromeos_strings_grd/IDS_ONC_PORTAL_STATE_NO_INTERNET.png.sha1
diff --git a/chrome/app/chromeos_strings_grdp/IDS_ONC_PORTAL_STATE_PORTAL.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_PORTAL_STATE_PORTAL.png.sha1 similarity index 100% rename from chrome/app/chromeos_strings_grdp/IDS_ONC_PORTAL_STATE_PORTAL.png.sha1 rename to chromeos/chromeos_strings_grd/IDS_ONC_PORTAL_STATE_PORTAL.png.sha1
diff --git a/chrome/app/chromeos_strings_grdp/IDS_ONC_PORTAL_STATE_PORTAL_SUSPECTED.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_PORTAL_STATE_PORTAL_SUSPECTED.png.sha1 similarity index 100% rename from chrome/app/chromeos_strings_grdp/IDS_ONC_PORTAL_STATE_PORTAL_SUSPECTED.png.sha1 rename to chromeos/chromeos_strings_grd/IDS_ONC_PORTAL_STATE_PORTAL_SUSPECTED.png.sha1
diff --git a/chrome/app/chromeos_strings_grdp/IDS_ONC_PORTAL_STATE_PROXY_AUTH.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_PORTAL_STATE_PROXY_AUTH.png.sha1 similarity index 100% rename from chrome/app/chromeos_strings_grdp/IDS_ONC_PORTAL_STATE_PROXY_AUTH.png.sha1 rename to chromeos/chromeos_strings_grd/IDS_ONC_PORTAL_STATE_PROXY_AUTH.png.sha1
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_VPN_HOST.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_HOST.png.sha1 new file mode 100644 index 0000000..b4dc22f --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_HOST.png.sha1
@@ -0,0 +1 @@ +fa18ad4b7baa16e22d7a81cde3b22ff1c8f0166f \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_VPN_IPSEC_GROUP.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_IPSEC_GROUP.png.sha1 new file mode 100644 index 0000000..de7fab1 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_IPSEC_GROUP.png.sha1
@@ -0,0 +1 @@ +6de09410619eb9a7abb3613c406508200b7d2dcc \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_VPN_IPSEC_PSK.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_IPSEC_PSK.png.sha1 new file mode 100644 index 0000000..002cc63 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_IPSEC_PSK.png.sha1
@@ -0,0 +1 @@ +cb5c90b2d95d9e78d8e3fc2ad43412b8a6ebd270 \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_VPN_OPENVPN_EXTRA_HOSTS.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_OPENVPN_EXTRA_HOSTS.png.sha1 new file mode 100644 index 0000000..c8f47d2a --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_OPENVPN_EXTRA_HOSTS.png.sha1
@@ -0,0 +1 @@ +d0c7df0acea052164137df30e5a18e1da9be5cd2 \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_VPN_OPENVPN_OTP.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_OPENVPN_OTP.png.sha1 new file mode 100644 index 0000000..6b128071 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_OPENVPN_OTP.png.sha1
@@ -0,0 +1 @@ +723a8bcb7bdf554d431b6735d6bd81ed8fae95a7 \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_VPN_PASSWORD.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_PASSWORD.png.sha1 new file mode 100644 index 0000000..ae19403 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_PASSWORD.png.sha1
@@ -0,0 +1 @@ +de376446f14f8c15f53076e2f4a42423b95aa4cb \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_VPN_THIRD_PARTY_VPN_PROVIDER_NAME.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_THIRD_PARTY_VPN_PROVIDER_NAME.png.sha1 new file mode 100644 index 0000000..a22fe143 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_THIRD_PARTY_VPN_PROVIDER_NAME.png.sha1
@@ -0,0 +1 @@ +fe150b3938b8319b5479b415175b31d4f22a0ca7 \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_VPN_TYPE.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_TYPE.png.sha1 new file mode 100644 index 0000000..706261d --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_TYPE.png.sha1
@@ -0,0 +1 @@ +5daa6bf468d7011dc92e3f88c7df5220f6302f4a \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_VPN_TYPE_ARCVPN.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_TYPE_ARCVPN.png.sha1 new file mode 100644 index 0000000..7c0569a --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_TYPE_ARCVPN.png.sha1
@@ -0,0 +1 @@ +64e5469d2fc1c23bca9f21ca94e170d80dbb060b \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_VPN_TYPE_L2TP_IPSEC.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_TYPE_L2TP_IPSEC.png.sha1 new file mode 100644 index 0000000..de44010 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_TYPE_L2TP_IPSEC.png.sha1
@@ -0,0 +1 @@ +df10ded726fbd38887385d3ddc394bebb28543da \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_VPN_TYPE_L2TP_IPSEC_CERT.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_TYPE_L2TP_IPSEC_CERT.png.sha1 new file mode 100644 index 0000000..4ff5198 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_TYPE_L2TP_IPSEC_CERT.png.sha1
@@ -0,0 +1 @@ +c8c41ff1427632a2e3461cd89efa31c4894931c0 \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_VPN_TYPE_L2TP_IPSEC_PSK.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_TYPE_L2TP_IPSEC_PSK.png.sha1 new file mode 100644 index 0000000..fcb5576 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_TYPE_L2TP_IPSEC_PSK.png.sha1
@@ -0,0 +1 @@ +a73c436c0bad8612779c8aa56f6bf4ac5ac4a08d \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_VPN_TYPE_OPENVPN.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_TYPE_OPENVPN.png.sha1 new file mode 100644 index 0000000..82ae0396 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_TYPE_OPENVPN.png.sha1
@@ -0,0 +1 @@ +eaf73683e5099e0cc5d4ca663ad624a349135114 \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_VPN_USERNAME.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_USERNAME.png.sha1 new file mode 100644 index 0000000..5e62a18c --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_VPN_USERNAME.png.sha1
@@ -0,0 +1 @@ +ac18b260b4688fc0532627485047f45328659072 \ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_ONC_WIFI_BSSID.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_BSSID.png.sha1 similarity index 100% rename from chrome/app/chromeos_strings_grdp/IDS_ONC_WIFI_BSSID.png.sha1 rename to chromeos/chromeos_strings_grd/IDS_ONC_WIFI_BSSID.png.sha1
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_FREQUENCY.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_FREQUENCY.png.sha1 new file mode 100644 index 0000000..616860f1 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_FREQUENCY.png.sha1
@@ -0,0 +1 @@ +61306422288bdb3862be144b5847a95cdc28116c \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_PASSWORD.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_PASSWORD.png.sha1 new file mode 100644 index 0000000..551c103 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_PASSWORD.png.sha1
@@ -0,0 +1 @@ +ab412c718b5749d21e1e291445052c1207b0e317 \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_SECURITY.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_SECURITY.png.sha1 new file mode 100644 index 0000000..a902dbab --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_SECURITY.png.sha1
@@ -0,0 +1 @@ +f490201d829dd34f136992b4a4fdf6e1966aa254 \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_SECURITY_EAP.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_SECURITY_EAP.png.sha1 new file mode 100644 index 0000000..d8c9dd2d --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_SECURITY_EAP.png.sha1
@@ -0,0 +1 @@ +081835e5bd8b9de21213e45e288899d2fefdcd37 \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_SECURITY_NONE.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_SECURITY_NONE.png.sha1 new file mode 100644 index 0000000..0dcfd79b --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_SECURITY_NONE.png.sha1
@@ -0,0 +1 @@ +0f1e470ee1c6cc0b2a151b46ba2d24804adbbc12 \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_SECURITY_PSK.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_SECURITY_PSK.png.sha1 new file mode 100644 index 0000000..8cea1c74 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_SECURITY_PSK.png.sha1
@@ -0,0 +1 @@ +f0772f8884c4484df72317941b334adcfbaacf7e \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_SECURITY_WEP.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_SECURITY_WEP.png.sha1 new file mode 100644 index 0000000..ac36723 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_SECURITY_WEP.png.sha1
@@ -0,0 +1 @@ +fef07a4064a30df7441250318e47cd126d129ae1 \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_SSID.png.sha1 b/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_SSID.png.sha1 new file mode 100644 index 0000000..3b58c3b --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_ONC_WIFI_SSID.png.sha1
@@ -0,0 +1 @@ +2270208ad4ed98f319fdaf80e11d64401b78926b \ No newline at end of file
diff --git a/chromeos/components/sensors/mojom/sensor.mojom b/chromeos/components/sensors/mojom/sensor.mojom index c864df49..7f25af4 100644 --- a/chromeos/components/sensors/mojom/sensor.mojom +++ b/chromeos/components/sensors/mojom/sensor.mojom
@@ -48,7 +48,10 @@ MAGN = 5, ANGL = 6, BARO = 7, - MAX = 8, + ACCEL_UNCALIBRATED = 8, + ANGLVEL_UNCALIBRATED = 9, + MAGN_UNCALIBRATED = 10, + MAX = 11, }; enum ObserverErrorType {
diff --git a/chromeos/crosapi/mojom/crosapi.mojom b/chromeos/crosapi/mojom/crosapi.mojom index 0a03a688e..d6586d4c5 100644 --- a/chromeos/crosapi/mojom/crosapi.mojom +++ b/chromeos/crosapi/mojom/crosapi.mojom
@@ -210,7 +210,7 @@ // If ash-chrome is newer than lacros-chrome, then some fields may not be // processed by lacros-chrome. // -// Next version: 10 +// Next version: 11 [Stable] struct LacrosInitParams { // This is ash-chrome's version of the AshChromeService interface. This is @@ -272,6 +272,11 @@ // depending on the ash-chrome's support status via this flag. [MinVersion=9] ExoImeSupport exo_ime_support@9; + + // Primary user ID hash. Used to set CROS_USER_ID_HASH env var in crosh. + // Do not use this to construct paths, use DefaultPaths for that purpose. + [MinVersion=10] + string? cros_user_id_hash@10; }; // LacrosChromeService defines the APIs that live in lacros-chrome and
diff --git a/chromeos/lacros/BUILD.gn b/chromeos/lacros/BUILD.gn index 6648d81..c70fef7c 100644 --- a/chromeos/lacros/BUILD.gn +++ b/chromeos/lacros/BUILD.gn
@@ -16,6 +16,7 @@ "//base", "//build:chromeos_buildflags", "//chromeos/crosapi/mojom", + "//chromeos/process_proxy", "//chromeos/startup", "//mojo/public/cpp/bindings", ]
diff --git a/chromeos/process_proxy/BUILD.gn b/chromeos/process_proxy/BUILD.gn new file mode 100644 index 0000000..a777825 --- /dev/null +++ b/chromeos/process_proxy/BUILD.gn
@@ -0,0 +1,35 @@ +# Copyright 2020 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/config/chromeos/ui_mode.gni") + +assert(is_chromeos_ash || is_chromeos_lacros, + "Non-Chrome-OS or Lacros builds must not depend on //chromeos") + +component("process_proxy") { + defines = [ "IS_CHROMEOS_PROCESS_PROXY_IMPL" ] + sources = [ + "process_output_watcher.cc", + "process_output_watcher.h", + "process_proxy.cc", + "process_proxy.h", + "process_proxy_registry.cc", + "process_proxy_registry.h", + ] + deps = [ "//base" ] +} + +source_set("unit_tests") { + testonly = true + deps = [ + ":process_proxy", + "//base", + "//base/test:test_support", + "//testing/gtest", + ] + sources = [ + "process_output_watcher_unittest.cc", + "process_proxy_unittest.cc", + ] +}
diff --git a/chromeos/process_proxy/OWNERS b/chromeos/process_proxy/OWNERS index ae659c80..4dbe00ae 100644 --- a/chromeos/process_proxy/OWNERS +++ b/chromeos/process_proxy/OWNERS
@@ -1 +1,2 @@ -tbarzic@chromium.org \ No newline at end of file +joelhockey@chromium.org +tbarzic@chromium.org
diff --git a/chromeos/process_proxy/process_output_watcher.h b/chromeos/process_proxy/process_output_watcher.h index 272328b..318d535 100644 --- a/chromeos/process_proxy/process_output_watcher.h +++ b/chromeos/process_proxy/process_output_watcher.h
@@ -11,11 +11,11 @@ #include <string> #include "base/callback.h" +#include "base/component_export.h" #include "base/files/file.h" #include "base/files/file_descriptor_watcher_posix.h" #include "base/macros.h" #include "base/memory/weak_ptr.h" -#include "chromeos/chromeos_export.h" namespace chromeos { @@ -29,7 +29,7 @@ // Observes output on |out_fd| and invokes |callback| when some output is // detected. It assumes UTF8 output. -class CHROMEOS_EXPORT ProcessOutputWatcher { +class COMPONENT_EXPORT(CHROMEOS_PROCESS_PROXY) ProcessOutputWatcher { public: ProcessOutputWatcher(int out_fd, const ProcessOutputCallback& callback); ~ProcessOutputWatcher();
diff --git a/chromeos/process_proxy/process_proxy_registry.h b/chromeos/process_proxy/process_proxy_registry.h index 5e5edb2f..08d8976 100644 --- a/chromeos/process_proxy/process_proxy_registry.h +++ b/chromeos/process_proxy/process_proxy_registry.h
@@ -11,20 +11,20 @@ #include "base/callback.h" #include "base/command_line.h" +#include "base/component_export.h" #include "base/lazy_instance.h" #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/sequence_checker.h" #include "base/sequenced_task_runner.h" #include "base/threading/thread.h" -#include "chromeos/chromeos_export.h" #include "chromeos/process_proxy/process_proxy.h" namespace chromeos { // Keeps track of all created ProcessProxies. It is created lazily and should // live on a single thread (where all methods must be called). -class CHROMEOS_EXPORT ProcessProxyRegistry { +class COMPONENT_EXPORT(CHROMEOS_PROCESS_PROXY) ProcessProxyRegistry { public: using OutputCallback = base::RepeatingCallback<void(const std::string& id,
diff --git a/chromeos/services/assistant/platform/audio_input_impl.cc b/chromeos/services/assistant/platform/audio_input_impl.cc index 5c8cd7c6..66b944b 100644 --- a/chromeos/services/assistant/platform/audio_input_impl.cc +++ b/chromeos/services/assistant/platform/audio_input_impl.cc
@@ -281,7 +281,8 @@ void AudioInputImpl::RemoveObserver( assistant_client::AudioInput::Observer* observer) { DCHECK_CALLED_ON_VALID_SEQUENCE(observer_sequence_checker_); - VLOG(1) << open_audio_stream_->device_id() << " remove observer"; + if (open_audio_stream_) + VLOG(1) << open_audio_stream_->device_id() << " remove observer"; bool have_no_observer = false; { base::AutoLock lock(lock_);
diff --git a/components/arc/session/arc_client_adapter.h b/components/arc/session/arc_client_adapter.h index 5417c5c..359ac44 100644 --- a/components/arc/session/arc_client_adapter.h +++ b/components/arc/session/arc_client_adapter.h
@@ -8,6 +8,8 @@ #include <memory> #include <string> +#include "base/callback_forward.h" +#include "base/files/file_path.h" #include "base/macros.h" #include "base/observer_list.h" #include "chromeos/dbus/dbus_method_call_status.h" @@ -29,6 +31,22 @@ virtual void ArcInstanceStopped() = 0; }; + // DemoModeDelegate contains functions used to load the demo session apps for + // ARC. The adapter cannot do this directly because chromeos::DemoSession + // classes are in //chrome. + class DemoModeDelegate { + public: + virtual ~DemoModeDelegate() = default; + + // Ensures that the demo session offline resources are loaded, if demo mode + // is enabled. This must be called before GetDemoAppsPath(). + virtual void EnsureOfflineResourcesLoaded(base::OnceClosure callback) = 0; + + // Gets the path of the image containing demo session Android apps. Returns + // an empty path if demo mode is not enabled. + virtual base::FilePath GetDemoAppsPath() = 0; + }; + // Creates a default instance of ArcClientAdapter. static std::unique_ptr<ArcClientAdapter> Create(); virtual ~ArcClientAdapter(); @@ -53,6 +71,10 @@ const std::string& hash, const std::string& serial_number) = 0; + // Provides the DemoModeDelegate which will be used to load the demo session + // apps path. + virtual void SetDemoModeDelegate(DemoModeDelegate* delegate) = 0; + void AddObserver(Observer* observer); void RemoveObserver(Observer* observer);
diff --git a/components/arc/session/arc_container_client_adapter.cc b/components/arc/session/arc_container_client_adapter.cc index 8588615..336d2dd 100644 --- a/components/arc/session/arc_container_client_adapter.cc +++ b/components/arc/session/arc_container_client_adapter.cc
@@ -160,6 +160,10 @@ cryptohome_id_ = cryptohome_id; } + // ArcContainerClientAdapter gets the demo session apps path from + // UpgradeParams, so it does not use the DemoModeDelegate. + void SetDemoModeDelegate(DemoModeDelegate* delegate) override {} + // chromeos::SessionManagerClient::Observer overrides: void ArcInstanceStopped() override { for (auto& observer : observer_list_)
diff --git a/components/arc/session/arc_session.h b/components/arc/session/arc_session.h index 0fdfa12..bf365da2 100644 --- a/components/arc/session/arc_session.h +++ b/components/arc/session/arc_session.h
@@ -11,6 +11,7 @@ #include "base/macros.h" #include "base/observer_list.h" #include "components/arc/session/adb_sideloading_availability_delegate.h" +#include "components/arc/session/arc_client_adapter.h" #include "components/arc/session/arc_stop_reason.h" #include "components/arc/session/arc_upgrade_params.h" @@ -96,6 +97,11 @@ const std::string& hash, const std::string& serial_number) = 0; + // Provides the DemoModeDelegate which will be used to load the demo session + // apps path. + virtual void SetDemoModeDelegate( + ArcClientAdapter::DemoModeDelegate* delegate) = 0; + void AddObserver(Observer* observer); void RemoveObserver(Observer* observer);
diff --git a/components/arc/session/arc_session_impl.cc b/components/arc/session/arc_session_impl.cc index eec3876..c91672d 100644 --- a/components/arc/session/arc_session_impl.cc +++ b/components/arc/session/arc_session_impl.cc
@@ -826,6 +826,12 @@ client_->SetUserInfo(cryptohome_id, hash, serial_number); } +void ArcSessionImpl::SetDemoModeDelegate( + ArcClientAdapter::DemoModeDelegate* delegate) { + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + client_->SetDemoModeDelegate(delegate); +} + void ArcSessionImpl::OnConfigurationSet(bool success, size_t num_cores_disabled) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
diff --git a/components/arc/session/arc_session_impl.h b/components/arc/session/arc_session_impl.h index 868b7bee..761d105 100644 --- a/components/arc/session/arc_session_impl.h +++ b/components/arc/session/arc_session_impl.h
@@ -211,6 +211,8 @@ void SetUserInfo(const cryptohome::Identification& cryptohome_id, const std::string& hash, const std::string& serial_number) override; + void SetDemoModeDelegate( + ArcClientAdapter::DemoModeDelegate* delegate) override; // chromeos::SchedulerConfigurationManagerBase::Observer overrides: void OnConfigurationSet(bool success, size_t num_cores_disabled) override;
diff --git a/components/arc/session/arc_session_impl_unittest.cc b/components/arc/session/arc_session_impl_unittest.cc index 0118215..6a3dd7f 100644 --- a/components/arc/session/arc_session_impl_unittest.cc +++ b/components/arc/session/arc_session_impl_unittest.cc
@@ -86,6 +86,8 @@ const std::string& hash, const std::string& serial_number) override {} + void SetDemoModeDelegate(DemoModeDelegate* delegate) override {} + // Notifies ArcSessionImpl of the ARC instance stop event. void NotifyArcInstanceStopped() { for (auto& observer : observer_list_)
diff --git a/components/arc/session/arc_session_runner.cc b/components/arc/session/arc_session_runner.cc index ae998ffe..7178fa13 100644 --- a/components/arc/session/arc_session_runner.cc +++ b/components/arc/session/arc_session_runner.cc
@@ -251,6 +251,11 @@ arc_session_->SetUserInfo(cryptohome_id_, user_id_hash_, serial_number_); } +void ArcSessionRunner::SetDemoModeDelegate( + std::unique_ptr<ArcClientAdapter::DemoModeDelegate> delegate) { + demo_mode_delegate_ = std::move(delegate); +} + void ArcSessionRunner::SetRestartDelayForTesting( const base::TimeDelta& restart_delay) { DCHECK(!arc_session_); @@ -270,6 +275,7 @@ !serial_number_.empty()) { arc_session_->SetUserInfo(cryptohome_id_, user_id_hash_, serial_number_); } + arc_session_->SetDemoModeDelegate(demo_mode_delegate_.get()); arc_session_->AddObserver(this); arc_session_->StartMiniInstance(); // Record the UMA only when |restart_after_crash_count_| is zero to avoid
diff --git a/components/arc/session/arc_session_runner.h b/components/arc/session/arc_session_runner.h index 1928823e..8e7acd7 100644 --- a/components/arc/session/arc_session_runner.h +++ b/components/arc/session/arc_session_runner.h
@@ -18,6 +18,7 @@ #include "base/time/time.h" #include "base/timer/timer.h" #include "chromeos/cryptohome/cryptohome_parameters.h" +#include "components/arc/session/arc_client_adapter.h" #include "components/arc/session/arc_instance_mode.h" #include "components/arc/session/arc_session.h" #include "components/arc/session/arc_stop_reason.h" @@ -105,6 +106,11 @@ const std::string& hash, const std::string& serial_number); + // Provides the DemoModeDelegate which will be used to load the demo session + // apps path. + void SetDemoModeDelegate( + std::unique_ptr<ArcClientAdapter::DemoModeDelegate> delegate); + // Returns the current ArcSession instance for testing purpose. ArcSession* GetArcSessionForTesting() { return arc_session_.get(); } @@ -162,6 +168,9 @@ bool resumed_ = false; + // DemoModeDelegate to be used by ArcSession. + std::unique_ptr<ArcClientAdapter::DemoModeDelegate> demo_mode_delegate_; + // WeakPtrFactory to use callbacks. base::WeakPtrFactory<ArcSessionRunner> weak_ptr_factory_{this};
diff --git a/components/arc/session/arc_vm_client_adapter.cc b/components/arc/session/arc_vm_client_adapter.cc index f3e8bd6a..c97b8fc 100644 --- a/components/arc/session/arc_vm_client_adapter.cc +++ b/components/arc/session/arc_vm_client_adapter.cc
@@ -535,6 +535,10 @@ serial_number_ = serial_number; } + void SetDemoModeDelegate(DemoModeDelegate* delegate) override { + demo_mode_delegate_ = delegate; + } + // chromeos::ConciergeClient::Observer overrides: void ConciergeServiceStopped() override { VLOG(1) << "vm_concierge stopped"; @@ -880,6 +884,9 @@ FileSystemStatusRewriter file_system_status_rewriter_for_testing_; + // The delegate is owned by ArcSessionRunner. + DemoModeDelegate* demo_mode_delegate_ = nullptr; + // For callbacks. base::WeakPtrFactory<ArcVmClientAdapter> weak_factory_{this};
diff --git a/components/arc/test/fake_arc_session.cc b/components/arc/test/fake_arc_session.cc index 714ca63..f097b51 100644 --- a/components/arc/test/fake_arc_session.cc +++ b/components/arc/test/fake_arc_session.cc
@@ -45,6 +45,9 @@ const std::string& hash, const std::string& serial_number) {} +void FakeArcSession::SetDemoModeDelegate( + ArcClientAdapter::DemoModeDelegate* delegate) {} + void FakeArcSession::StopWithReason(ArcStopReason reason) { bool was_mojo_connected = running_; running_ = false;
diff --git a/components/arc/test/fake_arc_session.h b/components/arc/test/fake_arc_session.h index f7c4e7a..cb0cf46 100644 --- a/components/arc/test/fake_arc_session.h +++ b/components/arc/test/fake_arc_session.h
@@ -33,6 +33,8 @@ void SetUserInfo(const cryptohome::Identification& cryptohome_id, const std::string& hash, const std::string& serial_number) override; + void SetDemoModeDelegate( + ArcClientAdapter::DemoModeDelegate* delegate) override; // To emulate unexpected stop, such as crash. void StopWithReason(ArcStopReason reason);
diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc b/components/content_settings/renderer/content_settings_agent_impl.cc index c0c2a4e..b6b38ab 100644 --- a/components/content_settings/renderer/content_settings_agent_impl.cc +++ b/components/content_settings/renderer/content_settings_agent_impl.cc
@@ -60,10 +60,6 @@ return top_origin.GetURL(); } -bool IsScriptDisabledForPreview(content::RenderFrame* render_frame) { - return render_frame->GetPreviewsState() & blink::PreviewsTypes::NOSCRIPT_ON; -} - bool IsFrameWithOpaqueOrigin(WebFrame* frame) { // Storage access is keyed off the top origin and the frame's origin. // It will be denied any opaque origins so have this method to return early @@ -347,8 +343,6 @@ bool ContentSettingsAgentImpl::AllowScript(bool enabled_per_settings) { if (!enabled_per_settings) return false; - if (IsScriptDisabledForPreview(render_frame())) - return false; blink::WebLocalFrame* frame = render_frame()->GetWebFrame(); const auto it = cached_script_permissions_.find(frame); @@ -376,8 +370,6 @@ const blink::WebURL& script_url) { if (!enabled_per_settings) return false; - if (IsScriptDisabledForPreview(render_frame())) - return false; bool allow = true; if (content_setting_rules_) {
diff --git a/components/optimization_guide/decision_tree_prediction_model.cc b/components/optimization_guide/decision_tree_prediction_model.cc index 4b1324e..f922a13 100644 --- a/components/optimization_guide/decision_tree_prediction_model.cc +++ b/components/optimization_guide/decision_tree_prediction_model.cc
@@ -9,18 +9,17 @@ namespace optimization_guide { DecisionTreePredictionModel::DecisionTreePredictionModel( - std::unique_ptr<optimization_guide::proto::PredictionModel> - prediction_model) - : PredictionModel(std::move(prediction_model)) {} + const proto::PredictionModel& prediction_model) + : PredictionModel(prediction_model) {} DecisionTreePredictionModel::~DecisionTreePredictionModel() = default; bool DecisionTreePredictionModel::ValidatePredictionModel() const { // Only the top-level ensemble or decision tree must have a threshold. Any // submodels of an ensemble will have model weights but no threshold. - if (!model_->has_threshold()) + if (!model_.has_threshold()) return false; - return ValidateModel(*model_.get()); + return ValidateModel(model_); } bool DecisionTreePredictionModel::ValidateModel( @@ -77,7 +76,7 @@ bool DecisionTreePredictionModel::ValidateTreeNode( const proto::DecisionTree& tree, const proto::TreeNode& node, - const int& node_index) const { + int node_index) const { if (node.has_leaf()) return ValidateLeaf(node.leaf()); @@ -119,19 +118,16 @@ return true; } -optimization_guide::OptimizationTargetDecision -DecisionTreePredictionModel::Predict( +OptimizationTargetDecision DecisionTreePredictionModel::Predict( const base::flat_map<std::string, float>& model_features, double* prediction_score) { - SEQUENCE_CHECKER(sequence_checker_); - *prediction_score = 0.0; // TODO(mcrouse): Add metrics to record if the model evaluation fails. - if (!EvaluateModel(*model_.get(), model_features, prediction_score)) - return optimization_guide::OptimizationTargetDecision::kUnknown; - if (*prediction_score > model_->threshold().value()) - return optimization_guide::OptimizationTargetDecision::kPageLoadMatches; - return optimization_guide::OptimizationTargetDecision::kPageLoadDoesNotMatch; + if (!EvaluateModel(model_, model_features, prediction_score)) + return OptimizationTargetDecision::kUnknown; + if (*prediction_score > model_.threshold().value()) + return OptimizationTargetDecision::kPageLoadMatches; + return OptimizationTargetDecision::kPageLoadDoesNotMatch; } bool DecisionTreePredictionModel::TraverseTree(
diff --git a/components/optimization_guide/decision_tree_prediction_model.h b/components/optimization_guide/decision_tree_prediction_model.h index c3856304..c11087e 100644 --- a/components/optimization_guide/decision_tree_prediction_model.h +++ b/components/optimization_guide/decision_tree_prediction_model.h
@@ -11,7 +11,6 @@ #include "base/containers/flat_map.h" #include "base/containers/flat_set.h" #include "base/macros.h" -#include "base/sequence_checker.h" #include "components/optimization_guide/prediction_model.h" #include "components/optimization_guide/proto/models.pb.h" @@ -22,13 +21,12 @@ class DecisionTreePredictionModel : public PredictionModel { public: explicit DecisionTreePredictionModel( - std::unique_ptr<optimization_guide::proto::PredictionModel> - prediction_model); + const proto::PredictionModel& prediction_model); ~DecisionTreePredictionModel() override; // PredictionModel implementation: - optimization_guide::OptimizationTargetDecision Predict( + OptimizationTargetDecision Predict( const base::flat_map<std::string, float>& model_features, double* prediction_score) override; @@ -89,9 +87,7 @@ // node of the |tree|. Returns false if any part of the tree is invalid. bool ValidateTreeNode(const proto::DecisionTree& tree, const proto::TreeNode& node, - const int& node_index) const; - - SEQUENCE_CHECKER(sequence_checker_); + int node_index) const; DISALLOW_COPY_AND_ASSIGN(DecisionTreePredictionModel); };
diff --git a/components/optimization_guide/decision_tree_prediction_model_unittest.cc b/components/optimization_guide/decision_tree_prediction_model_unittest.cc index 67797b99f..37c4eb9c 100644 --- a/components/optimization_guide/decision_tree_prediction_model_unittest.cc +++ b/components/optimization_guide/decision_tree_prediction_model_unittest.cc
@@ -14,10 +14,9 @@ namespace optimization_guide { -std::unique_ptr<proto::PredictionModel> GetValidDecisionTreePredictionModel() { - std::unique_ptr<proto::PredictionModel> prediction_model = - std::make_unique<proto::PredictionModel>(); - prediction_model->mutable_model()->mutable_threshold()->set_value(5.0); +proto::PredictionModel GetValidDecisionTreePredictionModel() { + proto::PredictionModel prediction_model; + prediction_model.mutable_model()->mutable_threshold()->set_value(5.0); proto::DecisionTree decision_tree_model = proto::DecisionTree(); decision_tree_model.set_weight(2.0); @@ -49,31 +48,30 @@ tree_node->mutable_leaf()->mutable_vector()->add_value()->set_double_value( 4.); - *prediction_model->mutable_model()->mutable_decision_tree() = + *prediction_model.mutable_model()->mutable_decision_tree() = decision_tree_model; return prediction_model; } -std::unique_ptr<proto::PredictionModel> GetValidEnsemblePredictionModel() { - std::unique_ptr<proto::PredictionModel> prediction_model = - std::make_unique<proto::PredictionModel>(); - prediction_model->mutable_model()->mutable_threshold()->set_value(5.0); +proto::PredictionModel GetValidEnsemblePredictionModel() { + proto::PredictionModel prediction_model; + prediction_model.mutable_model()->mutable_threshold()->set_value(5.0); proto::Ensemble ensemble = proto::Ensemble(); *ensemble.add_members()->mutable_submodel() = - *GetValidDecisionTreePredictionModel()->mutable_model(); + *GetValidDecisionTreePredictionModel().mutable_model(); *ensemble.add_members()->mutable_submodel() = - *GetValidDecisionTreePredictionModel()->mutable_model(); + *GetValidDecisionTreePredictionModel().mutable_model(); - *prediction_model->mutable_model()->mutable_ensemble() = ensemble; + *prediction_model.mutable_model()->mutable_ensemble() = ensemble; return prediction_model; } TEST(DecisionTreePredictionModel, ValidDecisionTreeModel) { - std::unique_ptr<proto::PredictionModel> prediction_model = + proto::PredictionModel prediction_model = GetValidDecisionTreePredictionModel(); - proto::ModelInfo* model_info = prediction_model->mutable_model_info(); + proto::ModelInfo* model_info = prediction_model.mutable_model_info(); model_info->set_version(1); model_info->add_supported_model_types( proto::ModelType::MODEL_TYPE_DECISION_TREE); @@ -83,7 +81,7 @@ model_info->add_supported_host_model_features("agg1"); std::unique_ptr<PredictionModel> model = - PredictionModel::Create(std::move(prediction_model)); + PredictionModel::Create(prediction_model); EXPECT_TRUE(model); double prediction_score; @@ -96,17 +94,17 @@ } TEST(DecisionTreePredictionModel, InequalityLessThan) { - std::unique_ptr<proto::PredictionModel> prediction_model = + proto::PredictionModel prediction_model = GetValidDecisionTreePredictionModel(); - prediction_model->mutable_model() + prediction_model.mutable_model() ->mutable_decision_tree() ->mutable_nodes(0) ->mutable_binary_node() ->mutable_inequality_left_child_test() ->set_type(proto::InequalityTest::LESS_THAN); - proto::ModelInfo* model_info = prediction_model->mutable_model_info(); + proto::ModelInfo* model_info = prediction_model.mutable_model_info(); model_info->set_version(1); model_info->add_supported_model_types( proto::ModelType::MODEL_TYPE_DECISION_TREE); @@ -129,17 +127,17 @@ } TEST(DecisionTreePredictionModel, InequalityGreaterOrEqual) { - std::unique_ptr<proto::PredictionModel> prediction_model = + proto::PredictionModel prediction_model = GetValidDecisionTreePredictionModel(); - prediction_model->mutable_model() + prediction_model.mutable_model() ->mutable_decision_tree() ->mutable_nodes(0) ->mutable_binary_node() ->mutable_inequality_left_child_test() ->set_type(proto::InequalityTest::GREATER_OR_EQUAL); - proto::ModelInfo* model_info = prediction_model->mutable_model_info(); + proto::ModelInfo* model_info = prediction_model.mutable_model_info(); model_info->set_version(1); model_info->add_supported_model_types( proto::ModelType::MODEL_TYPE_DECISION_TREE); @@ -149,7 +147,7 @@ model_info->add_supported_host_model_features("agg1"); std::unique_ptr<PredictionModel> model = - PredictionModel::Create(std::move(prediction_model)); + PredictionModel::Create(prediction_model); EXPECT_TRUE(model); double prediction_score; @@ -162,17 +160,17 @@ } TEST(DecisionTreePredictionModel, InequalityGreaterThan) { - std::unique_ptr<proto::PredictionModel> prediction_model = + proto::PredictionModel prediction_model = GetValidDecisionTreePredictionModel(); - prediction_model->mutable_model() + prediction_model.mutable_model() ->mutable_decision_tree() ->mutable_nodes(0) ->mutable_binary_node() ->mutable_inequality_left_child_test() ->set_type(proto::InequalityTest::GREATER_THAN); - proto::ModelInfo* model_info = prediction_model->mutable_model_info(); + proto::ModelInfo* model_info = prediction_model.mutable_model_info(); model_info->set_version(1); model_info->add_supported_model_types( proto::ModelType::MODEL_TYPE_DECISION_TREE); @@ -195,17 +193,17 @@ } TEST(DecisionTreePredictionModel, MissingInequalityTest) { - std::unique_ptr<proto::PredictionModel> prediction_model = + proto::PredictionModel prediction_model = GetValidDecisionTreePredictionModel(); - prediction_model->mutable_model() + prediction_model.mutable_model() ->mutable_decision_tree() ->mutable_nodes(0) ->mutable_binary_node() ->mutable_inequality_left_child_test() ->Clear(); - proto::ModelInfo* model_info = prediction_model->mutable_model_info(); + proto::ModelInfo* model_info = prediction_model.mutable_model_info(); model_info->set_version(1); model_info->add_supported_model_types( proto::ModelType::MODEL_TYPE_DECISION_TREE); @@ -220,12 +218,12 @@ } TEST(DecisionTreePredictionModel, NoDecisionTreeThreshold) { - std::unique_ptr<proto::PredictionModel> prediction_model = + proto::PredictionModel prediction_model = GetValidDecisionTreePredictionModel(); - prediction_model->mutable_model()->clear_threshold(); + prediction_model.mutable_model()->clear_threshold(); - proto::ModelInfo* model_info = prediction_model->mutable_model_info(); + proto::ModelInfo* model_info = prediction_model.mutable_model_info(); model_info->set_version(1); model_info->add_supported_model_types( proto::ModelType::MODEL_TYPE_DECISION_TREE); @@ -235,17 +233,17 @@ model_info->add_supported_host_model_features("agg1"); std::unique_ptr<PredictionModel> model = - PredictionModel::Create(std::move(prediction_model)); + PredictionModel::Create(prediction_model); EXPECT_FALSE(model); } TEST(DecisionTreePredictionModel, EmptyTree) { - std::unique_ptr<proto::PredictionModel> prediction_model = + proto::PredictionModel prediction_model = GetValidDecisionTreePredictionModel(); - prediction_model->mutable_model()->mutable_decision_tree()->clear_nodes(); + prediction_model.mutable_model()->mutable_decision_tree()->clear_nodes(); - proto::ModelInfo* model_info = prediction_model->mutable_model_info(); + proto::ModelInfo* model_info = prediction_model.mutable_model_info(); model_info->set_version(1); model_info->add_supported_model_types( proto::ModelType::MODEL_TYPE_DECISION_TREE); @@ -260,12 +258,12 @@ } TEST(DecisionTreePredictionModel, ModelFeatureNotInFeatureMap) { - std::unique_ptr<proto::PredictionModel> prediction_model = + proto::PredictionModel prediction_model = GetValidDecisionTreePredictionModel(); - prediction_model->mutable_model()->mutable_decision_tree()->clear_nodes(); + prediction_model.mutable_model()->mutable_decision_tree()->clear_nodes(); - proto::ModelInfo* model_info = prediction_model->mutable_model_info(); + proto::ModelInfo* model_info = prediction_model.mutable_model_info(); model_info->set_version(1); model_info->add_supported_model_types( proto::ModelType::MODEL_TYPE_DECISION_TREE); @@ -275,21 +273,21 @@ model_info->add_supported_host_model_features("agg1"); std::unique_ptr<PredictionModel> model = - PredictionModel::Create(std::move(prediction_model)); + PredictionModel::Create(prediction_model); EXPECT_FALSE(model); } TEST(DecisionTreePredictionModel, DecisionTreeMissingLeaf) { - std::unique_ptr<proto::PredictionModel> prediction_model = + proto::PredictionModel prediction_model = GetValidDecisionTreePredictionModel(); - prediction_model->mutable_model() + prediction_model.mutable_model() ->mutable_decision_tree() ->mutable_nodes(1) ->mutable_leaf() ->Clear(); - proto::ModelInfo* model_info = prediction_model->mutable_model_info(); + proto::ModelInfo* model_info = prediction_model.mutable_model_info(); model_info->set_version(1); model_info->add_supported_model_types( proto::ModelType::MODEL_TYPE_DECISION_TREE); @@ -299,22 +297,22 @@ model_info->add_supported_host_model_features("agg1"); std::unique_ptr<PredictionModel> model = - PredictionModel::Create(std::move(prediction_model)); + PredictionModel::Create(prediction_model); EXPECT_FALSE(model); } TEST(DecisionTreePredictionModel, DecisionTreeLeftChildIndexInvalid) { - std::unique_ptr<proto::PredictionModel> prediction_model = + proto::PredictionModel prediction_model = GetValidDecisionTreePredictionModel(); - prediction_model->mutable_model() + prediction_model.mutable_model() ->mutable_decision_tree() ->mutable_nodes(0) ->mutable_binary_node() ->mutable_left_child_id() ->set_value(3); - proto::ModelInfo* model_info = prediction_model->mutable_model_info(); + proto::ModelInfo* model_info = prediction_model.mutable_model_info(); model_info->set_version(1); model_info->add_supported_model_types( proto::ModelType::MODEL_TYPE_DECISION_TREE); @@ -329,17 +327,17 @@ } TEST(DecisionTreePredictionModel, DecisionTreeRightChildIndexInvalid) { - std::unique_ptr<proto::PredictionModel> prediction_model = + proto::PredictionModel prediction_model = GetValidDecisionTreePredictionModel(); - prediction_model->mutable_model() + prediction_model.mutable_model() ->mutable_decision_tree() ->mutable_nodes(0) ->mutable_binary_node() ->mutable_right_child_id() ->set_value(3); - proto::ModelInfo* model_info = prediction_model->mutable_model_info(); + proto::ModelInfo* model_info = prediction_model.mutable_model_info(); model_info->set_version(1); model_info->add_supported_model_types( proto::ModelType::MODEL_TYPE_DECISION_TREE); @@ -349,16 +347,16 @@ model_info->add_supported_host_model_features("agg1"); std::unique_ptr<PredictionModel> model = - PredictionModel::Create(std::move(prediction_model)); + PredictionModel::Create(prediction_model); EXPECT_FALSE(model); } TEST(DecisionTreePredictionModel, DecisionTreeWithLoopOnLeftChild) { - std::unique_ptr<proto::PredictionModel> prediction_model = + proto::PredictionModel prediction_model = GetValidDecisionTreePredictionModel(); proto::TreeNode* tree_node = - prediction_model->mutable_model()->mutable_decision_tree()->mutable_nodes( + prediction_model.mutable_model()->mutable_decision_tree()->mutable_nodes( 1); tree_node->mutable_node_id()->set_value(0); @@ -378,7 +376,7 @@ tree_node->mutable_binary_node()->mutable_left_child_id()->set_value(0); tree_node->mutable_binary_node()->mutable_right_child_id()->set_value(2); - proto::ModelInfo* model_info = prediction_model->mutable_model_info(); + proto::ModelInfo* model_info = prediction_model.mutable_model_info(); model_info->set_version(1); model_info->add_supported_model_types( proto::ModelType::MODEL_TYPE_DECISION_TREE); @@ -388,16 +386,16 @@ model_info->add_supported_host_model_features("agg1"); std::unique_ptr<PredictionModel> model = - PredictionModel::Create(std::move(prediction_model)); + PredictionModel::Create(prediction_model); EXPECT_FALSE(model); } TEST(DecisionTreePredictionModel, DecisionTreeWithLoopOnRightChild) { - std::unique_ptr<proto::PredictionModel> prediction_model = + proto::PredictionModel prediction_model = GetValidDecisionTreePredictionModel(); proto::TreeNode* tree_node = - prediction_model->mutable_model()->mutable_decision_tree()->mutable_nodes( + prediction_model.mutable_model()->mutable_decision_tree()->mutable_nodes( 1); tree_node->mutable_node_id()->set_value(0); @@ -417,7 +415,7 @@ tree_node->mutable_binary_node()->mutable_left_child_id()->set_value(2); tree_node->mutable_binary_node()->mutable_right_child_id()->set_value(0); - proto::ModelInfo* model_info = prediction_model->mutable_model_info(); + proto::ModelInfo* model_info = prediction_model.mutable_model_info(); model_info->set_version(1); model_info->add_supported_model_types( proto::ModelType::MODEL_TYPE_DECISION_TREE); @@ -427,15 +425,14 @@ model_info->add_supported_host_model_features("agg1"); std::unique_ptr<PredictionModel> model = - PredictionModel::Create(std::move(prediction_model)); + PredictionModel::Create(prediction_model); EXPECT_FALSE(model); } TEST(DecisionTreePredictionModel, ValidEnsembleModel) { - std::unique_ptr<proto::PredictionModel> prediction_model = - GetValidEnsemblePredictionModel(); + proto::PredictionModel prediction_model = GetValidEnsemblePredictionModel(); - proto::ModelInfo* model_info = prediction_model->mutable_model_info(); + proto::ModelInfo* model_info = prediction_model.mutable_model_info(); model_info->set_version(1); model_info->add_supported_model_types( proto::ModelType::MODEL_TYPE_DECISION_TREE); @@ -445,7 +442,7 @@ model_info->add_supported_host_model_features("agg1"); std::unique_ptr<PredictionModel> model = - PredictionModel::Create(std::move(prediction_model)); + PredictionModel::Create(prediction_model); EXPECT_TRUE(model); double prediction_score; @@ -458,14 +455,13 @@ } TEST(DecisionTreePredictionModel, EnsembleWithNoMembers) { - std::unique_ptr<proto::PredictionModel> prediction_model = - GetValidEnsemblePredictionModel(); - prediction_model->mutable_model() + proto::PredictionModel prediction_model = GetValidEnsemblePredictionModel(); + prediction_model.mutable_model() ->mutable_ensemble() ->mutable_members() ->Clear(); - proto::ModelInfo* model_info = prediction_model->mutable_model_info(); + proto::ModelInfo* model_info = prediction_model.mutable_model_info(); model_info->set_version(1); model_info->add_supported_model_types( proto::ModelType::MODEL_TYPE_DECISION_TREE); @@ -475,7 +471,7 @@ model_info->add_supported_host_model_features("agg1"); std::unique_ptr<PredictionModel> model = - PredictionModel::Create(std::move(prediction_model)); + PredictionModel::Create(prediction_model); EXPECT_FALSE(model); }
diff --git a/components/optimization_guide/hints_fetcher.cc b/components/optimization_guide/hints_fetcher.cc index fb56663..cf3810aa 100644 --- a/components/optimization_guide/hints_fetcher.cc +++ b/components/optimization_guide/hints_fetcher.cc
@@ -151,7 +151,7 @@ optimization_types, optimization_guide::proto::RequestContext request_context, HintsFetchedCallback hints_fetched_callback) { - SEQUENCE_CHECKER(sequence_checker_); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_GT(optimization_types.size(), 0u); if (content::GetNetworkConnectionTracker()->IsOffline()) { @@ -286,7 +286,7 @@ void HintsFetcher::HandleResponse(const std::string& get_hints_response_data, int net_status, int response_code) { - SEQUENCE_CHECKER(sequence_checker_); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); std::unique_ptr<proto::GetHintsResponse> get_hints_response = std::make_unique<proto::GetHintsResponse>(); @@ -390,7 +390,7 @@ // Callback is only invoked if |active_url_loader_| is bound and still alive. void HintsFetcher::OnURLLoadComplete( std::unique_ptr<std::string> response_body) { - SEQUENCE_CHECKER(sequence_checker_); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); int response_code = -1; if (active_url_loader_->ResponseInfo() && @@ -408,7 +408,7 @@ std::vector<std::string> HintsFetcher::GetSizeLimitedHostsDueForHintsRefresh( const std::vector<std::string>& hosts) const { - SEQUENCE_CHECKER(sequence_checker_); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DictionaryPrefUpdate hosts_fetched( pref_service_, prefs::kHintsFetcherHostsSuccessfullyFetched);
diff --git a/components/optimization_guide/prediction_model.cc b/components/optimization_guide/prediction_model.cc index 87df2ef..ed6d786 100644 --- a/components/optimization_guide/prediction_model.cc +++ b/components/optimization_guide/prediction_model.cc
@@ -12,52 +12,50 @@ // static std::unique_ptr<PredictionModel> PredictionModel::Create( - std::unique_ptr<optimization_guide::proto::PredictionModel> - prediction_model) { + const proto::PredictionModel& prediction_model) { // TODO(crbug/1009123): Add a histogram to record if the provided model is // constructed successfully or not. // TODO(crbug/1009123): Adding timing metrics around initialization due to // potential validation overhead. - if (!prediction_model->has_model()) + if (!prediction_model.has_model()) return nullptr; - if (!prediction_model->has_model_info()) + if (!prediction_model.has_model_info()) return nullptr; - if (!prediction_model->model_info().has_version()) + if (!prediction_model.model_info().has_version()) return nullptr; // Enforce that only one ModelType is specified for the PredictionModel. - if (prediction_model->model_info().supported_model_types_size() != 1) { + if (prediction_model.model_info().supported_model_types_size() != 1) { return nullptr; } // Check that the client supports this type of model and is not an unknown // type. - if (!optimization_guide::proto::ModelType_IsValid( - prediction_model->model_info().supported_model_types(0)) || - prediction_model->model_info().supported_model_types(0) == - optimization_guide::proto::ModelType::MODEL_TYPE_UNKNOWN) { + if (!proto::ModelType_IsValid( + prediction_model.model_info().supported_model_types(0)) || + prediction_model.model_info().supported_model_types(0) == + proto::ModelType::MODEL_TYPE_UNKNOWN) { return nullptr; } // Check that the client supports the model features for |prediction model|. for (const auto& model_feature : - prediction_model->model_info().supported_model_features()) { - if (!optimization_guide::proto::ClientModelFeature_IsValid(model_feature) || - model_feature == optimization_guide::proto::ClientModelFeature:: - CLIENT_MODEL_FEATURE_UNKNOWN) + prediction_model.model_info().supported_model_features()) { + if (!proto::ClientModelFeature_IsValid(model_feature) || + model_feature == + proto::ClientModelFeature::CLIENT_MODEL_FEATURE_UNKNOWN) return nullptr; } std::unique_ptr<PredictionModel> model; // The Decision Tree model type is currently the only supported model type. - if (prediction_model->model_info().supported_model_types(0) != - optimization_guide::proto::ModelType::MODEL_TYPE_DECISION_TREE) { + if (prediction_model.model_info().supported_model_types(0) != + proto::ModelType::MODEL_TYPE_DECISION_TREE) { return nullptr; } - model = std::make_unique<DecisionTreePredictionModel>( - std::move(prediction_model)); + model = std::make_unique<DecisionTreePredictionModel>(prediction_model); // Any constructed model must be validated for correctness according to its // model type before being returned. @@ -67,37 +65,32 @@ return model; } -PredictionModel::PredictionModel( - std::unique_ptr<optimization_guide::proto::PredictionModel> - prediction_model) { - version_ = prediction_model->model_info().version(); - model_features_.reserve( - prediction_model->model_info().supported_model_features_size() + - prediction_model->model_info().supported_host_model_features_size()); +namespace { + +std::vector<std::string> ComputeModelFeatures( + const proto::ModelInfo& model_info) { + std::vector<std::string> features; + features.reserve(model_info.supported_model_features_size() + + model_info.supported_host_model_features_size()); // Insert all the client model features for the owned |model_|. for (const auto& client_model_feature : - prediction_model->model_info().supported_model_features()) { - model_features_.emplace(optimization_guide::proto::ClientModelFeature_Name( - client_model_feature)); + model_info.supported_model_features()) { + features.push_back(proto::ClientModelFeature_Name(client_model_feature)); } // Insert all the host model features for the owned |model_|. for (const auto& host_model_feature : - prediction_model->model_info().supported_host_model_features()) { - model_features_.emplace(host_model_feature); + model_info.supported_host_model_features()) { + features.push_back(host_model_feature); } - model_ = std::make_unique<optimization_guide::proto::Model>( - prediction_model->model()); + return features; } -int64_t PredictionModel::GetVersion() const { - SEQUENCE_CHECKER(sequence_checker_); - return version_; -} +} // namespace -base::flat_set<std::string> PredictionModel::GetModelFeatures() const { - SEQUENCE_CHECKER(sequence_checker_); - return model_features_; -} +PredictionModel::PredictionModel(const proto::PredictionModel& prediction_model) + : model_(prediction_model.model()), + model_features_(ComputeModelFeatures(prediction_model.model_info())), + version_(prediction_model.model_info().version()) {} PredictionModel::~PredictionModel() = default;
diff --git a/components/optimization_guide/prediction_model.h b/components/optimization_guide/prediction_model.h index a190905..53a79718 100644 --- a/components/optimization_guide/prediction_model.h +++ b/components/optimization_guide/prediction_model.h
@@ -12,7 +12,6 @@ #include "base/containers/flat_map.h" #include "base/containers/flat_set.h" #include "base/macros.h" -#include "base/sequence_checker.h" #include "components/optimization_guide/optimization_guide_enums.h" #include "components/optimization_guide/proto/models.pb.h" @@ -28,45 +27,40 @@ // |prediction_model|. The validation overhead of this factory can be high and // should should be called in the background. static std::unique_ptr<PredictionModel> Create( - std::unique_ptr<optimization_guide::proto::PredictionModel> - prediction_model); + const proto::PredictionModel& prediction_model); // Returns the OptimizationTargetDecision by evaluating the |model_| // using the provided |model_features|. |prediction_score| will be populated // with the score output by the model. - virtual optimization_guide::OptimizationTargetDecision Predict( + virtual OptimizationTargetDecision Predict( const base::flat_map<std::string, float>& model_features, double* prediction_score) = 0; // Provide the version of the |model_| by |this|. - int64_t GetVersion() const; + int64_t GetVersion() const { return version_; } // Provide the model features required for evaluation of the |model_| by // |this|. - base::flat_set<std::string> GetModelFeatures() const; + const base::flat_set<std::string>& GetModelFeatures() const { + return model_features_; + } protected: - PredictionModel(std::unique_ptr<optimization_guide::proto::PredictionModel> - prediction_model); + explicit PredictionModel(const proto::PredictionModel& prediction_model); // The in-memory model used for prediction. - std::unique_ptr<optimization_guide::proto::Model> model_; + const proto::Model model_; private: // Determines if the |model_| is complete and can be successfully evaluated by // |this|. virtual bool ValidatePredictionModel() const = 0; - // The information that describes the |model_| - std::unique_ptr<optimization_guide::proto::ModelInfo> model_info_; - // The set of features required by the |model_| to be evaluated. - base::flat_set<std::string> model_features_; + const base::flat_set<std::string> model_features_; // The version of the |model_|. - int64_t version_; - - SEQUENCE_CHECKER(sequence_checker_); + const int64_t version_; DISALLOW_COPY_AND_ASSIGN(PredictionModel); };
diff --git a/components/optimization_guide/prediction_model_unittest.cc b/components/optimization_guide/prediction_model_unittest.cc index f84fbfd..55bf39b 100644 --- a/components/optimization_guide/prediction_model_unittest.cc +++ b/components/optimization_guide/prediction_model_unittest.cc
@@ -12,9 +12,8 @@ namespace optimization_guide { TEST(PredictionModelTest, ValidPredictionModel) { - std::unique_ptr<proto::PredictionModel> prediction_model = - std::make_unique<proto::PredictionModel>(); - prediction_model->mutable_model()->mutable_threshold()->set_value(5.0); + proto::PredictionModel prediction_model; + prediction_model.mutable_model()->mutable_threshold()->set_value(5.0); proto::DecisionTree decision_tree_model = proto::DecisionTree(); decision_tree_model.set_weight(2.0); @@ -46,21 +45,20 @@ tree_node->mutable_leaf()->mutable_vector()->add_value()->set_double_value( 4.); - *prediction_model->mutable_model()->mutable_decision_tree() = + *prediction_model.mutable_model()->mutable_decision_tree() = decision_tree_model; - optimization_guide::proto::ModelInfo* model_info = - prediction_model->mutable_model_info(); + proto::ModelInfo* model_info = prediction_model.mutable_model_info(); model_info->set_version(1); model_info->add_supported_model_types( - optimization_guide::proto::ModelType::MODEL_TYPE_DECISION_TREE); + proto::ModelType::MODEL_TYPE_DECISION_TREE); model_info->add_supported_model_features( - optimization_guide::proto::ClientModelFeature:: + proto::ClientModelFeature:: CLIENT_MODEL_FEATURE_EFFECTIVE_CONNECTION_TYPE); model_info->add_supported_host_model_features("agg1"); std::unique_ptr<PredictionModel> model = - PredictionModel::Create(std::move(prediction_model)); + PredictionModel::Create(prediction_model); EXPECT_EQ(1, model->GetVersion()); EXPECT_EQ(2u, model->GetModelFeatures().size()); @@ -70,37 +68,33 @@ } TEST(PredictionModelTest, NoModel) { - std::unique_ptr<optimization_guide::proto::PredictionModel> prediction_model = - std::make_unique<optimization_guide::proto::PredictionModel>(); + proto::PredictionModel prediction_model; std::unique_ptr<PredictionModel> model = - PredictionModel::Create(std::move(prediction_model)); + PredictionModel::Create(prediction_model); EXPECT_FALSE(model); } TEST(PredictionModelTest, NoModelVersion) { - std::unique_ptr<optimization_guide::proto::PredictionModel> prediction_model = - std::make_unique<optimization_guide::proto::PredictionModel>(); + proto::PredictionModel prediction_model; - optimization_guide::proto::DecisionTree* decision_tree_model = - prediction_model->mutable_model()->mutable_decision_tree(); + proto::DecisionTree* decision_tree_model = + prediction_model.mutable_model()->mutable_decision_tree(); decision_tree_model->set_weight(2.0); std::unique_ptr<PredictionModel> model = - PredictionModel::Create(std::move(prediction_model)); + PredictionModel::Create(prediction_model); EXPECT_FALSE(model); } TEST(PredictionModelTest, NoModelType) { - std::unique_ptr<optimization_guide::proto::PredictionModel> prediction_model = - std::make_unique<optimization_guide::proto::PredictionModel>(); + proto::PredictionModel prediction_model; - optimization_guide::proto::DecisionTree* decision_tree_model = - prediction_model->mutable_model()->mutable_decision_tree(); + proto::DecisionTree* decision_tree_model = + prediction_model.mutable_model()->mutable_decision_tree(); decision_tree_model->set_weight(2.0); - optimization_guide::proto::ModelInfo* model_info = - prediction_model->mutable_model_info(); + proto::ModelInfo* model_info = prediction_model.mutable_model_info(); model_info->set_version(1); std::unique_ptr<PredictionModel> model = @@ -109,65 +103,56 @@ } TEST(PredictionModelTest, UnknownModelType) { - std::unique_ptr<optimization_guide::proto::PredictionModel> prediction_model = - std::make_unique<optimization_guide::proto::PredictionModel>(); + proto::PredictionModel prediction_model; - optimization_guide::proto::DecisionTree* decision_tree_model = - prediction_model->mutable_model()->mutable_decision_tree(); + proto::DecisionTree* decision_tree_model = + prediction_model.mutable_model()->mutable_decision_tree(); decision_tree_model->set_weight(2.0); - optimization_guide::proto::ModelInfo* model_info = - prediction_model->mutable_model_info(); + proto::ModelInfo* model_info = prediction_model.mutable_model_info(); model_info->set_version(1); - model_info->add_supported_model_types( - optimization_guide::proto::ModelType::MODEL_TYPE_UNKNOWN); + model_info->add_supported_model_types(proto::ModelType::MODEL_TYPE_UNKNOWN); std::unique_ptr<PredictionModel> model = - PredictionModel::Create(std::move(prediction_model)); + PredictionModel::Create(prediction_model); EXPECT_FALSE(model); } TEST(PredictionModelTest, MultipleModelTypes) { - std::unique_ptr<optimization_guide::proto::PredictionModel> prediction_model = - std::make_unique<optimization_guide::proto::PredictionModel>(); + proto::PredictionModel prediction_model; - optimization_guide::proto::DecisionTree* decision_tree_model = - prediction_model->mutable_model()->mutable_decision_tree(); + proto::DecisionTree* decision_tree_model = + prediction_model.mutable_model()->mutable_decision_tree(); decision_tree_model->set_weight(2.0); - optimization_guide::proto::ModelInfo* model_info = - prediction_model->mutable_model_info(); + proto::ModelInfo* model_info = prediction_model.mutable_model_info(); model_info->set_version(1); model_info->add_supported_model_types( - optimization_guide::proto::ModelType::MODEL_TYPE_DECISION_TREE); - model_info->add_supported_model_types( - optimization_guide::proto::ModelType::MODEL_TYPE_UNKNOWN); + proto::ModelType::MODEL_TYPE_DECISION_TREE); + model_info->add_supported_model_types(proto::ModelType::MODEL_TYPE_UNKNOWN); std::unique_ptr<PredictionModel> model = - PredictionModel::Create(std::move(prediction_model)); + PredictionModel::Create(prediction_model); EXPECT_FALSE(model); } TEST(PredictionModelTest, UnknownModelClientFeature) { - std::unique_ptr<optimization_guide::proto::PredictionModel> prediction_model = - std::make_unique<optimization_guide::proto::PredictionModel>(); + proto::PredictionModel prediction_model; - optimization_guide::proto::DecisionTree* decision_tree_model = - prediction_model->mutable_model()->mutable_decision_tree(); + proto::DecisionTree* decision_tree_model = + prediction_model.mutable_model()->mutable_decision_tree(); decision_tree_model->set_weight(2.0); - optimization_guide::proto::ModelInfo* model_info = - prediction_model->mutable_model_info(); + proto::ModelInfo* model_info = prediction_model.mutable_model_info(); model_info->set_version(1); model_info->add_supported_model_types( - optimization_guide::proto::ModelType::MODEL_TYPE_DECISION_TREE); + proto::ModelType::MODEL_TYPE_DECISION_TREE); model_info->add_supported_model_features( - optimization_guide::proto::ClientModelFeature:: - CLIENT_MODEL_FEATURE_UNKNOWN); + proto::ClientModelFeature::CLIENT_MODEL_FEATURE_UNKNOWN); std::unique_ptr<PredictionModel> model = - PredictionModel::Create(std::move(prediction_model)); + PredictionModel::Create(prediction_model); EXPECT_FALSE(model); }
diff --git a/components/previews/content/previews_decider_impl_unittest.cc b/components/previews/content/previews_decider_impl_unittest.cc index b992aef..0f8e0d06 100644 --- a/components/previews/content/previews_decider_impl_unittest.cc +++ b/components/previews/content/previews_decider_impl_unittest.cc
@@ -81,9 +81,9 @@ case PreviewsType::DEPRECATED_LOFI: return false; case PreviewsType::NOSCRIPT: - return params::IsNoScriptPreviewsEnabled(); + return false; case PreviewsType::RESOURCE_LOADING_HINTS: - return params::IsResourceLoadingHintsEnabled(); + return false; case previews::PreviewsType::DEPRECATED_LITE_PAGE_REDIRECT: return false; case PreviewsType::DEFER_ALL_SCRIPT: @@ -456,7 +456,7 @@ TEST_F(PreviewsDeciderImplTest, AllPreviewsDisabledByFeature) { base::test::ScopedFeatureList scoped_feature_list; scoped_feature_list.InitWithFeatures( - {features::kNoScriptPreviews}, + {features::kDeferAllScriptPreviews}, {features::kPreviews} /* disable_features */); InitializeUIService(); @@ -546,330 +546,6 @@ histogram_tester.ExpectTotalCount("Previews.EligibilityReason.NoScript", 0); } -TEST_F(PreviewsDeciderImplTest, NoScriptNotAllowedWithoutOptimizationHints) { - base::test::ScopedFeatureList scoped_feature_list; - scoped_feature_list.InitWithFeatures( - {features::kPreviews, features::kNoScriptPreviews}, {}); - InitializeUIService(/*include_previews_opt_guide=*/false); - - for (const auto& test_ect : - {net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN, - net::EFFECTIVE_CONNECTION_TYPE_2G, net::EFFECTIVE_CONNECTION_TYPE_4G}) { - ReportEffectiveConnectionType(test_ect); - - base::HistogramTester histogram_tester; - PreviewsUserData user_data(kDefaultPageId); - content::MockNavigationHandle navigation_handle; - navigation_handle.set_url(GURL("https://www.google.com")); - EXPECT_FALSE(previews_decider_impl()->ShouldAllowPreviewAtNavigationStart( - &user_data, &navigation_handle, false, PreviewsType::NOSCRIPT)); - EXPECT_EQ(test_ect, user_data.navigation_ect()); - histogram_tester.ExpectUniqueSample( - "Previews.EligibilityReason.NoScript", - static_cast<int>( - PreviewsEligibilityReason::OPTIMIZATION_HINTS_NOT_AVAILABLE), - 1); - } -} - -TEST_F(PreviewsDeciderImplTest, NoScriptAllowedByFeatureWithAllowlist) { - base::test::ScopedFeatureList scoped_feature_list; - scoped_feature_list.InitWithFeatures( - {features::kPreviews, features::kNoScriptPreviews}, {}); - InitializeUIService(); - - base::HistogramTester histogram_tester; - - PreviewsUserData user_data(kDefaultPageId); - content::MockNavigationHandle navigation_handle; - navigation_handle.set_url(GURL("https://www.google.com")); - // First verify preview allowed for non-allowlisted url; they're always - // allowed at navigation start to enable asynchronous loading of page hints. - EXPECT_TRUE(previews_decider_impl()->ShouldAllowPreviewAtNavigationStart( - &user_data, &navigation_handle, false, PreviewsType::NOSCRIPT)); - - // Now verify preview allowed for allowlisted url. - content::MockNavigationHandle allowlisted_navigation_handle; - allowlisted_navigation_handle.set_url(GURL("https://www.google.com")); - EXPECT_TRUE(previews_decider_impl()->ShouldAllowPreviewAtNavigationStart( - &user_data, &navigation_handle, false, PreviewsType::NOSCRIPT)); - - histogram_tester.ExpectBucketCount( - "Previews.EligibilityReason.NoScript", - static_cast<int>(PreviewsEligibilityReason::ALLOWED), 2); -} - -TEST_F(PreviewsDeciderImplTest, NoScriptCommitTimeAllowlistCheck) { - base::test::ScopedFeatureList scoped_feature_list; - scoped_feature_list.InitWithFeatures( - {features::kPreviews, features::kNoScriptPreviews}, {}); - InitializeUIService(); - - // First verify not allowed for non-allowlisted url. - { - ReportEffectiveConnectionType(net::EFFECTIVE_CONNECTION_TYPE_2G); - base::HistogramTester histogram_tester; - PreviewsUserData user_data(kDefaultPageId); - content::MockNavigationHandle navigation_handle; - navigation_handle.set_url(GURL("https://www.google.com")); - EXPECT_FALSE(previews_decider_impl()->ShouldCommitPreview( - &user_data, &navigation_handle, PreviewsType::NOSCRIPT)); - - histogram_tester.ExpectUniqueSample( - "Previews.EligibilityReason.NoScript", - static_cast<int>( - PreviewsEligibilityReason::NOT_ALLOWED_BY_OPTIMIZATION_GUIDE), - 1); - } - - // Now verify preview for allowlisted url. - { - ReportEffectiveConnectionType(net::EFFECTIVE_CONNECTION_TYPE_2G); - base::HistogramTester histogram_tester; - PreviewsUserData user_data(kDefaultPageId); - content::MockNavigationHandle navigation_handle; - navigation_handle.set_url(GURL("https://allowlisted.example.com")); - EXPECT_TRUE(previews_decider_impl()->ShouldCommitPreview( - &user_data, &navigation_handle, PreviewsType::NOSCRIPT)); - - // Expect no eligibility logging. - histogram_tester.ExpectTotalCount("Previews.EligibilityReason.NoScript", 0); - } - - // Verify preview not allowed for allowlisted url when network is not slow. - { - ReportEffectiveConnectionType(net::EFFECTIVE_CONNECTION_TYPE_3G); - base::HistogramTester histogram_tester; - PreviewsUserData user_data(kDefaultPageId); - content::MockNavigationHandle navigation_handle; - navigation_handle.set_url(GURL("https://allowlisted.example.com")); - EXPECT_FALSE(previews_decider_impl()->ShouldCommitPreview( - &user_data, &navigation_handle, PreviewsType::NOSCRIPT)); - - histogram_tester.ExpectUniqueSample( - "Previews.EligibilityReason.NoScript", - static_cast<int>( - PreviewsEligibilityReason::PAGE_LOAD_PREDICTION_NOT_PAINFUL), - 1); - } - - // Verify preview not allowed for allowlisted url for unknown network quality. - { - ReportEffectiveConnectionType(net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN); - base::HistogramTester histogram_tester; - PreviewsUserData user_data(kDefaultPageId); - content::MockNavigationHandle navigation_handle; - navigation_handle.set_url(GURL("https://allowlisted.example.com")); - user_data.set_navigation_ect(net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN); - EXPECT_FALSE(previews_decider_impl()->ShouldCommitPreview( - &user_data, &navigation_handle, PreviewsType::NOSCRIPT)); - - histogram_tester.ExpectUniqueSample( - "Previews.EligibilityReason.NoScript", - static_cast<int>( - PreviewsEligibilityReason::NETWORK_QUALITY_UNAVAILABLE), - 1); - } - - // Verify preview allowed for network slower than session ECT threshold when - // ECT is not available at navigation time. - { - ReportEffectiveConnectionType(net::EFFECTIVE_CONNECTION_TYPE_SLOW_2G); - base::test::ScopedFeatureList nested_scoped_list; - nested_scoped_list.InitAndEnableFeatureWithParameters( - features::kSlowPageTriggering, - {{"session_max_ect_trigger", "Slow-2G"}}); - base::HistogramTester histogram_tester; - PreviewsUserData user_data(kDefaultPageId); - content::MockNavigationHandle navigation_handle; - navigation_handle.set_url(GURL("https://allowlisted.example.com")); - user_data.set_navigation_ect(net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN); - EXPECT_TRUE(previews_decider_impl()->ShouldCommitPreview( - &user_data, &navigation_handle, PreviewsType::NOSCRIPT)); - - histogram_tester.ExpectTotalCount("Previews.EligibilityReason.NoScript", 0); - } - - // Verify preview not allowed when blocklist is unavailable. - { - ReportEffectiveConnectionType(net::EFFECTIVE_CONNECTION_TYPE_2G); - base::HistogramTester histogram_tester; - previews_decider_impl()->InjectTestBlocklist(nullptr /* blocklist */); - PreviewsUserData user_data(kDefaultPageId); - user_data.set_navigation_ect(net::EFFECTIVE_CONNECTION_TYPE_2G); - content::MockNavigationHandle navigation_handle; - navigation_handle.set_url(GURL("https://allowlisted.example.com")); - EXPECT_FALSE(previews_decider_impl()->ShouldCommitPreview( - &user_data, &navigation_handle, PreviewsType::NOSCRIPT)); - - histogram_tester.ExpectUniqueSample( - "Previews.EligibilityReason.NoScript", - static_cast<int>(PreviewsEligibilityReason::BLOCKLIST_UNAVAILABLE), 1); - } -} - -TEST_F(PreviewsDeciderImplTest, ResourceLoadingHintsNotAllowedByDefault) { - base::test::ScopedFeatureList scoped_feature_list; - scoped_feature_list.InitAndEnableFeature(features::kPreviews); - InitializeUIService(); - - base::HistogramTester histogram_tester; - PreviewsUserData user_data(kDefaultPageId); - content::MockNavigationHandle navigation_handle; - navigation_handle.set_url(GURL("https://www.google.com")); - - EXPECT_FALSE(previews_decider_impl()->ShouldAllowPreviewAtNavigationStart( - &user_data, &navigation_handle, false, - PreviewsType::RESOURCE_LOADING_HINTS)); -} - -TEST_F(PreviewsDeciderImplTest, - ResourceLoadingHintsDisallowedWithoutOptimizationHints) { - base::test::ScopedFeatureList scoped_feature_list; - scoped_feature_list.InitWithFeatures( - {features::kPreviews, features::kResourceLoadingHints}, {}); - InitializeUIService(/*include_previews_opt_guide=*/false); - - base::HistogramTester histogram_tester; - PreviewsUserData user_data(kDefaultPageId); - content::MockNavigationHandle navigation_handle; - navigation_handle.set_url(GURL("https://allowlisted.example.com")); - EXPECT_FALSE(previews_decider_impl()->ShouldAllowPreviewAtNavigationStart( - &user_data, &navigation_handle, false, - PreviewsType::RESOURCE_LOADING_HINTS)); - histogram_tester.ExpectUniqueSample( - "Previews.EligibilityReason", - static_cast<int>( - PreviewsEligibilityReason::OPTIMIZATION_HINTS_NOT_AVAILABLE), - 1); - histogram_tester.ExpectUniqueSample( - "Previews.EligibilityReason.ResourceLoadingHints", - static_cast<int>( - PreviewsEligibilityReason::OPTIMIZATION_HINTS_NOT_AVAILABLE), - 1); -} - -TEST_F(PreviewsDeciderImplTest, - ResourceLoadingHintsAllowedByFeatureAndAllowlist) { - base::test::ScopedFeatureList scoped_feature_list; - scoped_feature_list.InitWithFeatures( - {features::kPreviews, features::kResourceLoadingHints}, {}); - InitializeUIService(); - - for (const auto& test_ect : {net::EFFECTIVE_CONNECTION_TYPE_OFFLINE, - net::EFFECTIVE_CONNECTION_TYPE_SLOW_2G, - net::EFFECTIVE_CONNECTION_TYPE_3G}) { - ReportEffectiveConnectionType(test_ect); - - base::HistogramTester histogram_tester; - PreviewsUserData user_data(kDefaultPageId); - content::MockNavigationHandle navigation_handle; - navigation_handle.set_url(GURL("https://allowlisted.example.com")); - - // Check allowlisted URL. - EXPECT_TRUE(previews_decider_impl()->ShouldAllowPreviewAtNavigationStart( - &user_data, &navigation_handle, false, - PreviewsType::RESOURCE_LOADING_HINTS)); - EXPECT_EQ(test_ect, user_data.navigation_ect()); - histogram_tester.ExpectUniqueSample( - "Previews.EligibilityReason.ResourceLoadingHints", - static_cast<int>(PreviewsEligibilityReason::ALLOWED), 1); - } -} - -TEST_F(PreviewsDeciderImplTest, - ResourceLoadingHintsAllowedByFeatureWithoutKnownHints) { - base::test::ScopedFeatureList scoped_feature_list; - scoped_feature_list.InitWithFeatures( - {features::kPreviews, features::kResourceLoadingHints}, {}); - InitializeUIService(); - - base::HistogramTester histogram_tester; - PreviewsUserData user_data(kDefaultPageId); - content::MockNavigationHandle navigation_handle; - navigation_handle.set_url(GURL("https://www.google.com")); - - // Verify preview allowed initially for url without known hints. - EXPECT_TRUE(previews_decider_impl()->ShouldAllowPreviewAtNavigationStart( - &user_data, &navigation_handle, false, - PreviewsType::RESOURCE_LOADING_HINTS)); - - histogram_tester.ExpectBucketCount( - "Previews.EligibilityReason.ResourceLoadingHints", - static_cast<int>(PreviewsEligibilityReason::ALLOWED), 1); -} - -TEST_F(PreviewsDeciderImplTest, ResourceLoadingHintsCommitTimeAllowlistCheck) { - base::test::ScopedFeatureList scoped_feature_list; - scoped_feature_list.InitWithFeatures( - {features::kPreviews, features::kResourceLoadingHints}, {}); - InitializeUIService(); - - // First verify not allowed for non-allowlisted url. - { - ReportEffectiveConnectionType(net::EFFECTIVE_CONNECTION_TYPE_2G); - base::HistogramTester histogram_tester; - PreviewsUserData user_data(kDefaultPageId); - content::MockNavigationHandle navigation_handle; - navigation_handle.set_url(GURL("https://www.google.com")); - EXPECT_FALSE(previews_decider_impl()->ShouldCommitPreview( - &user_data, &navigation_handle, PreviewsType::RESOURCE_LOADING_HINTS)); - - histogram_tester.ExpectUniqueSample( - "Previews.EligibilityReason.ResourceLoadingHints", - static_cast<int>( - PreviewsEligibilityReason::NOT_ALLOWED_BY_OPTIMIZATION_GUIDE), - 1); - } - - // Now verify preview for allowlisted url. - { - ReportEffectiveConnectionType(net::EFFECTIVE_CONNECTION_TYPE_2G); - base::HistogramTester histogram_tester; - PreviewsUserData user_data(kDefaultPageId); - content::MockNavigationHandle navigation_handle; - navigation_handle.set_url(GURL("https://allowlisted.example.com")); - EXPECT_TRUE(previews_decider_impl()->ShouldCommitPreview( - &user_data, &navigation_handle, PreviewsType::RESOURCE_LOADING_HINTS)); - - // Expect no eligibility logging. - histogram_tester.ExpectTotalCount( - "Previews.EligibilityReason.ResourceLoadingHints", 0); - } - - // Verify preview not allowed for allowlisted url when network is not slow. - { - ReportEffectiveConnectionType(net::EFFECTIVE_CONNECTION_TYPE_4G); - base::HistogramTester histogram_tester; - PreviewsUserData user_data(kDefaultPageId); - content::MockNavigationHandle navigation_handle; - navigation_handle.set_url(GURL("https://allowlisted.example.com")); - EXPECT_FALSE(previews_decider_impl()->ShouldCommitPreview( - &user_data, &navigation_handle, PreviewsType::RESOURCE_LOADING_HINTS)); - - histogram_tester.ExpectUniqueSample( - "Previews.EligibilityReason.ResourceLoadingHints", - static_cast<int>( - PreviewsEligibilityReason::PAGE_LOAD_PREDICTION_NOT_PAINFUL), - 1); - } - - // Verify preview not allowed for allowlisted url for offline network quality. - { - ReportEffectiveConnectionType(net::EFFECTIVE_CONNECTION_TYPE_OFFLINE); - base::HistogramTester histogram_tester; - PreviewsUserData user_data(kDefaultPageId); - content::MockNavigationHandle navigation_handle; - navigation_handle.set_url(GURL("https://allowlisted.example.com")); - EXPECT_FALSE(previews_decider_impl()->ShouldCommitPreview( - &user_data, &navigation_handle, PreviewsType::RESOURCE_LOADING_HINTS)); - - histogram_tester.ExpectUniqueSample( - "Previews.EligibilityReason.ResourceLoadingHints", - static_cast<int>(PreviewsEligibilityReason::DEVICE_OFFLINE), 1); - } -} - TEST_F(PreviewsDeciderImplTest, DeferAllScriptDefaultBehavior) { base::test::ScopedFeatureList scoped_feature_list; scoped_feature_list.InitAndEnableFeature(features::kPreviews); @@ -1100,11 +776,11 @@ LogDecisionMadeBlocklistUnavailableAtNavigationStartForCommitTimePreview) { base::test::ScopedFeatureList scoped_feature_list; scoped_feature_list.InitWithFeatures( - {features::kPreviews, features::kNoScriptPreviews}, {}); + {features::kPreviews, features::kDeferAllScriptPreviews}, {}); InitializeUIService(); auto expected_reason = PreviewsEligibilityReason::ALLOWED; - auto expected_type = PreviewsType::NOSCRIPT; + auto expected_type = PreviewsType::DEFER_ALL_SCRIPT; previews_decider_impl()->InjectTestBlocklist(nullptr /* blocklist */); PreviewsUserData user_data(kDefaultPageId); @@ -1123,7 +799,7 @@ TEST_F(PreviewsDeciderImplTest, ShouldCommitPreviewBlocklistStatuses) { base::test::ScopedFeatureList scoped_feature_list; scoped_feature_list.InitWithFeatures( - {features::kPreviews, features::kNoScriptPreviews}, {}); + {features::kPreviews, features::kDeferAllScriptPreviews}, {}); InitializeUIService(/*include_previews_opt_guide=*/false); auto expected_type = PreviewsType::NOSCRIPT; PreviewsUserData user_data(kDefaultPageId); @@ -1169,10 +845,10 @@ TEST_F(PreviewsDeciderImplTest, LogDecisionMadeMediaSuffixesAreExcluded) { base::test::ScopedFeatureList scoped_feature_list; scoped_feature_list.InitWithFeatures( - {features::kPreviews, features::kResourceLoadingHints}, {}); + {features::kPreviews, features::kDeferAllScriptPreviews}, {}); InitializeUIService(); auto expected_reason = PreviewsEligibilityReason::EXCLUDED_BY_MEDIA_SUFFIX; - auto expected_type = PreviewsType::RESOURCE_LOADING_HINTS; + auto expected_type = PreviewsType::DEFER_ALL_SCRIPT; PreviewsEligibilityReason blocklist_decisions[] = { PreviewsEligibilityReason::BLOCKLIST_DATA_NOT_LOADED, @@ -1249,49 +925,6 @@ &user_data, &navigation_handle, PreviewsType::DEFER_ALL_SCRIPT)); } -TEST_F(PreviewsDeciderImplTest, - ResourceLoadingHints_LogDecisionMadeNetworkQualityNotAvailable) { - base::test::ScopedFeatureList scoped_feature_list; - scoped_feature_list.InitWithFeatures( - {features::kPreviews, features::kResourceLoadingHints}, {}); - InitializeUIService(); - - std::unique_ptr<TestPreviewsBlockList> blocklist = - std::make_unique<TestPreviewsBlockList>( - PreviewsEligibilityReason::ALLOWED, previews_decider_impl()); - previews_decider_impl()->InjectTestBlocklist(std::move(blocklist)); - - auto expected_reason = PreviewsEligibilityReason::ALLOWED; - auto expected_type = PreviewsType::RESOURCE_LOADING_HINTS; - - std::vector<PreviewsEligibilityReason> checked_decisions = { - PreviewsEligibilityReason::URL_HAS_BASIC_AUTH, - PreviewsEligibilityReason::EXCLUDED_BY_MEDIA_SUFFIX, - PreviewsEligibilityReason::RELOAD_DISALLOWED, - }; - - ReportEffectiveConnectionType(net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN); - PreviewsUserData user_data(kDefaultPageId); - content::MockNavigationHandle navigation_handle; - navigation_handle.set_url(GURL("https://www.google.com")); - previews_decider_impl()->ShouldAllowPreviewAtNavigationStart( - &user_data, &navigation_handle, false, expected_type); - - base::RunLoop().RunUntilIdle(); - // Testing correct log method is called. - EXPECT_THAT(ui_service()->decision_reasons(), - ::testing::Contains(expected_reason)); - EXPECT_THAT(ui_service()->decision_types(), - ::testing::Contains(expected_type)); - - EXPECT_EQ(1UL, ui_service()->decision_passed_reasons().size()); - auto actual_passed_reasons = ui_service()->decision_passed_reasons()[0]; - EXPECT_EQ(checked_decisions.size(), actual_passed_reasons.size()); - EXPECT_EQ(checked_decisions.size(), actual_passed_reasons.size()); - for (size_t i = 0; i < actual_passed_reasons.size(); i++) { - EXPECT_EQ(checked_decisions[i], actual_passed_reasons[i]); - } -} TEST_F(PreviewsDeciderImplTest, LogDecisionMadeReloadDisallowed) { base::test::ScopedFeatureList scoped_feature_list; @@ -1360,7 +993,7 @@ TEST_F(PreviewsDeciderImplTest, LogDecisionMadeAllowHintPreviewWithoutECT) { base::test::ScopedFeatureList scoped_feature_list; scoped_feature_list.InitWithFeatures( - {features::kPreviews, features::kNoScriptPreviews}, {}); + {features::kPreviews, features::kDeferAllScriptPreviews}, {}); InitializeUIService(); std::unique_ptr<TestPreviewsBlockList> blocklist = @@ -1372,7 +1005,7 @@ ReportEffectiveConnectionType(net::EFFECTIVE_CONNECTION_TYPE_2G); auto expected_reason = PreviewsEligibilityReason::ALLOWED; - auto expected_type = PreviewsType::NOSCRIPT; + auto expected_type = PreviewsType::DEFER_ALL_SCRIPT; std::vector<PreviewsEligibilityReason> checked_decisions = { PreviewsEligibilityReason::URL_HAS_BASIC_AUTH,
diff --git a/components/previews/content/previews_optimization_guide.cc b/components/previews/content/previews_optimization_guide.cc index 9742317..45d346b 100644 --- a/components/previews/content/previews_optimization_guide.cc +++ b/components/previews/content/previews_optimization_guide.cc
@@ -45,14 +45,8 @@ base::Optional<optimization_guide::proto::OptimizationType> ConvertPreviewsTypeToOptimizationType(PreviewsType previews_type) { switch (previews_type) { - case PreviewsType::NONE: - return optimization_guide::proto::OPTIMIZATION_NONE; - case PreviewsType::NOSCRIPT: - return optimization_guide::proto::NOSCRIPT; case PreviewsType::UNSPECIFIED: return optimization_guide::proto::TYPE_UNSPECIFIED; - case PreviewsType::RESOURCE_LOADING_HINTS: - return optimization_guide::proto::RESOURCE_LOADING; case PreviewsType::DEFER_ALL_SCRIPT: return optimization_guide::proto::DEFER_ALL_SCRIPT; default: @@ -67,10 +61,6 @@ base::flat_set<optimization_guide::proto::OptimizationType> optimization_types; - if (params::IsNoScriptPreviewsEnabled()) - optimization_types.insert(optimization_guide::proto::NOSCRIPT); - if (params::IsResourceLoadingHintsEnabled()) - optimization_types.insert(optimization_guide::proto::RESOURCE_LOADING); if (params::IsDeferAllScriptPreviewsEnabled()) optimization_types.insert(optimization_guide::proto::DEFER_ALL_SCRIPT);
diff --git a/components/previews/content/previews_optimization_guide_unittest.cc b/components/previews/content/previews_optimization_guide_unittest.cc index 46099fa..5208faac 100644 --- a/components/previews/content/previews_optimization_guide_unittest.cc +++ b/components/previews/content/previews_optimization_guide_unittest.cc
@@ -178,10 +178,6 @@ GURL hint_not_loaded_url() { return GURL("https://hintnotloaded.com/123"); } - GURL resource_loading_hints_url() { - return GURL("https://hasresourceloadinghints.com/123"); - } - private: std::unique_ptr<TestOptimizationGuideDecider> optimization_guide_decider_; }; @@ -190,28 +186,19 @@ InitializationRegistersCorrectOptimizationTypesAndTargets) { base::test::ScopedFeatureList scoped_feature_list; scoped_feature_list.InitWithFeatures( - {previews::features::kDeferAllScriptPreviews, - previews::features::kNoScriptPreviews, - previews::features::kResourceLoadingHints}, - {}); + {previews::features::kDeferAllScriptPreviews}, {}); PreviewsOptimizationGuide guide(optimization_guide_decider()); base::flat_set<optimization_guide::proto::OptimizationType> registered_optimization_types = optimization_guide_decider()->registered_optimization_types(); - EXPECT_EQ(3u, registered_optimization_types.size()); + EXPECT_EQ(1u, registered_optimization_types.size()); // We expect for DEFER_ALL_SCRIPT, NOSCRIPT, and RESOURCE_LOADING to be // registered. EXPECT_TRUE(registered_optimization_types.find( optimization_guide::proto::DEFER_ALL_SCRIPT) != registered_optimization_types.end()); - EXPECT_TRUE( - registered_optimization_types.find(optimization_guide::proto::NOSCRIPT) != - registered_optimization_types.end()); - EXPECT_TRUE(registered_optimization_types.find( - optimization_guide::proto::RESOURCE_LOADING) != - registered_optimization_types.end()); // We expect that the PAINFUL_PAGE_LOAD optimization target is always // registered. @@ -228,9 +215,7 @@ TEST_F(PreviewsOptimizationGuideTest, InitializationRegistersOnlyEnabledTypes) { base::test::ScopedFeatureList scoped_feature_list; scoped_feature_list.InitWithFeatures( - {}, {previews::features::kDeferAllScriptPreviews, - previews::features::kNoScriptPreviews, - previews::features::kResourceLoadingHints}); + {}, {previews::features::kDeferAllScriptPreviews}); PreviewsOptimizationGuide guide(optimization_guide_decider()); @@ -242,12 +227,6 @@ EXPECT_EQ(registered_optimization_types.find( optimization_guide::proto::DEFER_ALL_SCRIPT), registered_optimization_types.end()); - EXPECT_EQ( - registered_optimization_types.find(optimization_guide::proto::NOSCRIPT), - registered_optimization_types.end()); - EXPECT_EQ(registered_optimization_types.find( - optimization_guide::proto::RESOURCE_LOADING), - registered_optimization_types.end()); // We expect that the PAINFUL_PAGE_LOAD optimization target is always // registered.
diff --git a/components/previews/content/previews_user_data_unittest.cc b/components/previews/content/previews_user_data_unittest.cc index c03dd67..5350396 100644 --- a/components/previews/content/previews_user_data_unittest.cc +++ b/components/previews/content/previews_user_data_unittest.cc
@@ -65,7 +65,7 @@ std::unique_ptr<PreviewsUserData> data = std::make_unique<PreviewsUserData>(id); - data->SetCommittedPreviewsTypeForTesting(PreviewsType::NOSCRIPT); + data->SetCommittedPreviewsTypeForTesting(PreviewsType::DEFER_ALL_SCRIPT); data->set_coin_flip_holdback_result(CoinFlipHoldbackResult::kHoldback); EXPECT_FALSE(data->HasCommittedPreviewsType()); @@ -78,14 +78,16 @@ std::unique_ptr<PreviewsUserData> data = std::make_unique<PreviewsUserData>(id); - data->SetCommittedPreviewsTypeForTesting(PreviewsType::NOSCRIPT); + data->SetCommittedPreviewsTypeForTesting(PreviewsType::DEFER_ALL_SCRIPT); data->set_coin_flip_holdback_result(CoinFlipHoldbackResult::kHoldback); EXPECT_EQ(data->CommittedPreviewsType(), PreviewsType::NONE); - EXPECT_EQ(data->PreHoldbackCommittedPreviewsType(), PreviewsType::NOSCRIPT); + EXPECT_EQ(data->PreHoldbackCommittedPreviewsType(), + PreviewsType::DEFER_ALL_SCRIPT); data->set_coin_flip_holdback_result(CoinFlipHoldbackResult::kAllowed); - EXPECT_EQ(data->CommittedPreviewsType(), PreviewsType::NOSCRIPT); - EXPECT_EQ(data->PreHoldbackCommittedPreviewsType(), PreviewsType::NOSCRIPT); + EXPECT_EQ(data->CommittedPreviewsType(), PreviewsType::DEFER_ALL_SCRIPT); + EXPECT_EQ(data->PreHoldbackCommittedPreviewsType(), + PreviewsType::DEFER_ALL_SCRIPT); } TEST(PreviewsUserDataTest, TestCoinFlip_AllowedPreviewsState) { @@ -93,16 +95,17 @@ std::unique_ptr<PreviewsUserData> data = std::make_unique<PreviewsUserData>(id); - data->set_allowed_previews_state(blink::PreviewsTypes::NOSCRIPT_ON); + data->set_allowed_previews_state(blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON); data->set_coin_flip_holdback_result(CoinFlipHoldbackResult::kHoldback); EXPECT_EQ(data->AllowedPreviewsState(), blink::PreviewsTypes::PREVIEWS_OFF); EXPECT_EQ(data->PreHoldbackAllowedPreviewsState(), - blink::PreviewsTypes::NOSCRIPT_ON); + blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON); data->set_coin_flip_holdback_result(CoinFlipHoldbackResult::kAllowed); - EXPECT_EQ(data->AllowedPreviewsState(), blink::PreviewsTypes::NOSCRIPT_ON); + EXPECT_EQ(data->AllowedPreviewsState(), + blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON); EXPECT_EQ(data->PreHoldbackAllowedPreviewsState(), - blink::PreviewsTypes::NOSCRIPT_ON); + blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON); } TEST(PreviewsUserDataTest, TestCoinFlip_CommittedPreviewsState) { @@ -110,16 +113,17 @@ std::unique_ptr<PreviewsUserData> data = std::make_unique<PreviewsUserData>(id); - data->set_committed_previews_state(blink::PreviewsTypes::NOSCRIPT_ON); + data->set_committed_previews_state(blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON); data->set_coin_flip_holdback_result(CoinFlipHoldbackResult::kHoldback); EXPECT_EQ(data->CommittedPreviewsState(), blink::PreviewsTypes::PREVIEWS_OFF); EXPECT_EQ(data->PreHoldbackCommittedPreviewsState(), - blink::PreviewsTypes::NOSCRIPT_ON); + blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON); data->set_coin_flip_holdback_result(CoinFlipHoldbackResult::kAllowed); - EXPECT_EQ(data->CommittedPreviewsState(), blink::PreviewsTypes::NOSCRIPT_ON); + EXPECT_EQ(data->CommittedPreviewsState(), + blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON); EXPECT_EQ(data->PreHoldbackCommittedPreviewsState(), - blink::PreviewsTypes::NOSCRIPT_ON); + blink::PreviewsTypes::DEFER_ALL_SCRIPT_ON); } } // namespace previews
diff --git a/components/previews/core/previews_block_list_unittest.cc b/components/previews/core/previews_block_list_unittest.cc index c225350..4fdd1484 100644 --- a/components/previews/core/previews_block_list_unittest.cc +++ b/components/previews/core/previews_block_list_unittest.cc
@@ -95,14 +95,6 @@ void TearDown() override { variations::testing::ClearAllVariationParams(); } void StartTest() { - if (params_.size() > 0) { - ASSERT_TRUE(variations::AssociateVariationParams("ClientSidePreviews", - "Enabled", params_)); - ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("ClientSidePreviews", - "Enabled")); - params_.clear(); - } - blocklist::BlocklistData::AllowedTypesAndVersions allowed_types; allowed_types[static_cast<int>(PreviewsType::DEFER_ALL_SCRIPT)] = 0; block_list_ = std::make_unique<TestPreviewsBlockList>( @@ -111,49 +103,7 @@ passed_reasons_ = {}; } - void SetHostHistoryParam(size_t host_history) { - params_["per_host_max_stored_history_length"] = - base::NumberToString(host_history); - } - void SetHostIndifferentHistoryParam(size_t host_indifferent_history) { - params_["host_indifferent_max_stored_history_length"] = - base::NumberToString(host_indifferent_history); - } - - void SetHostThresholdParam(int per_host_threshold) { - params_["per_host_opt_out_threshold"] = - base::NumberToString(per_host_threshold); - } - - void SetHostIndifferentThresholdParam(int host_indifferent_threshold) { - params_["host_indifferent_opt_out_threshold"] = - base::NumberToString(host_indifferent_threshold); - } - - void SetHostDurationParam(int duration_in_days) { - // TODO(crbug.com/1092102): Migrate to per_host_black_list_duration_in_days - params_["per_host_black_list_duration_in_days"] = - base::NumberToString(duration_in_days); - } - - void SetHostIndifferentDurationParam(int duration_in_days) { - // TODO(crbug.com/1092102): Migrate to - // host_indifferent_block_list_duration_in_days - params_["host_indifferent_black_list_duration_in_days"] = - base::NumberToString(duration_in_days); - } - - void SetSingleOptOutDurationParam(int single_opt_out_duration) { - params_["single_opt_out_duration_in_seconds"] = - base::NumberToString(single_opt_out_duration); - } - - void SetMaxHostInBlockListParam(size_t max_hosts_in_blocklist) { - // TODO(crbug.com/1092102): Migrate to max_hosts_in_blocklist - params_["max_hosts_in_blacklist"] = - base::NumberToString(max_hosts_in_blocklist); - } protected: base::test::SingleThreadTaskEnvironment task_environment_; @@ -162,7 +112,6 @@ TestOptOutBlocklistDelegate blocklist_delegate_; base::SimpleTestClock test_clock_; - std::map<std::string, std::string> params_; std::unique_ptr<TestPreviewsBlockList> block_list_; std::vector<PreviewsEligibilityReason> passed_reasons_; @@ -188,29 +137,22 @@ } TEST_F(PreviewsBlockListTest, SessionParams) { - int duration_seconds = 5; - SetSingleOptOutDurationParam(duration_seconds); - StartTest(); - base::TimeDelta duration; size_t history = 0; int threshold = 0; - + base::TimeDelta duration; EXPECT_TRUE( block_list_->ShouldUseSessionPolicy(&duration, &history, &threshold)); - EXPECT_EQ(base::TimeDelta::FromSeconds(duration_seconds), duration); + EXPECT_EQ(base::TimeDelta::FromSeconds(300), duration); EXPECT_EQ(1u, history); EXPECT_EQ(1, threshold); } TEST_F(PreviewsBlockListTest, PersistentParams) { - int duration_days = 5; - size_t expected_history = 6; - int expected_threshold = 4; - SetHostIndifferentThresholdParam(expected_threshold); - SetHostIndifferentHistoryParam(expected_history); - SetHostIndifferentDurationParam(duration_days); + int duration_days = 30; + size_t expected_history = 10; + int expected_threshold = 6; StartTest(); @@ -226,14 +168,10 @@ } TEST_F(PreviewsBlockListTest, HostParams) { - int duration_days = 5; - size_t expected_history = 6; - int expected_threshold = 4; - size_t expected_max_hosts = 11; - SetHostThresholdParam(expected_threshold); - SetHostHistoryParam(expected_history); - SetHostDurationParam(duration_days); - SetMaxHostInBlockListParam(expected_max_hosts); + int duration_days = 30; + size_t expected_history = 4; + int expected_threshold = 2; + size_t expected_max_hosts = 100; StartTest();
diff --git a/components/previews/core/previews_experiments.cc b/components/previews/core/previews_experiments.cc index 0911294b..1e69c0c 100644 --- a/components/previews/core/previews_experiments.cc +++ b/components/previews/core/previews_experiments.cc
@@ -21,18 +21,10 @@ namespace { -// The group of client-side previews experiments. This controls parameters of -// the client side blocklist. -const char kClientSidePreviewsFieldTrial[] = "ClientSidePreviews"; - // Name for the version parameter of a field trial. Version changes will // result in older blocklist entries being removed. const char kVersion[] = "version"; -// Parameter to clarify that the preview for a UserConsistent study should -// be enabled or not. -const char kUserConsistentPreviewEnabled[] = "user_consistent_preview_enabled"; - // The threshold of EffectiveConnectionType above which previews will not be // served. // See net/nqe/effective_connection_type.h for mapping from string to value. @@ -47,38 +39,6 @@ // See net/nqe/effective_connection_type.h for mapping from string to value. const char kSessionMaxECTTrigger[] = "session_max_ect_trigger"; -// Inflation parameters for estimating NoScript data savings. -const char kNoScriptInflationPercent[] = "NoScriptInflationPercent"; -const char kNoScriptInflationBytes[] = "NoScriptInflationBytes"; - -// Inflation parameters for estimating ResourceLoadingHints data savings. -const char kResourceLoadingHintsInflationPercent[] = - "ResourceLoadingHintsInflationPercent"; -const char kResourceLoadingHintsInflationBytes[] = - "ResourceLoadingHintsInflationBytes"; - -size_t GetParamValueAsSizeT(const std::string& trial_name, - const std::string& param_name, - size_t default_value) { - size_t value; - if (!base::StringToSizeT( - base::GetFieldTrialParamValue(trial_name, param_name), &value)) { - return default_value; - } - return value; -} - -int GetParamValueAsInt(const std::string& trial_name, - const std::string& param_name, - int default_value) { - int value; - if (!base::StringToInt(base::GetFieldTrialParamValue(trial_name, param_name), - &value)) { - return default_value; - } - return value; -} - net::EffectiveConnectionType GetParamValueAsECTByFeature( const base::Feature& feature, const std::string& param_name, @@ -91,107 +51,54 @@ // Returns the effective Feature for DeferAllScript (which may be the // UserConsistent variant). const base::Feature& GetDeferAllScriptPreviewsFeature() { - if (base::FeatureList::IsEnabled(features::kEligibleForUserConsistentStudy) && - base::FeatureList::IsEnabled( - features::kDeferAllScriptPreviewsUserConsistentStudy)) { - return features::kDeferAllScriptPreviewsUserConsistentStudy; - } - return features::kDeferAllScriptPreviews; } -// Returns the effective Feature for ResourceLoadingHints (which may be the -// UserConsistent variant). -const base::Feature& GetResourceLoadingHintsFeature() { - if (base::FeatureList::IsEnabled(features::kEligibleForUserConsistentStudy) && - base::FeatureList::IsEnabled( - features::kResourceLoadingHintsUserConsistentStudy)) { - return features::kResourceLoadingHintsUserConsistentStudy; - } - - return features::kResourceLoadingHints; -} - -// Returns the effective Feature for NoScriptPreviews (which may be the -// UserConsistent variant). -const base::Feature& GetNoScriptPreviewsFeature() { - if (base::FeatureList::IsEnabled(features::kEligibleForUserConsistentStudy) && - base::FeatureList::IsEnabled( - features::kNoScriptPreviewsUserConsistentStudy)) { - return features::kNoScriptPreviewsUserConsistentStudy; - } - - return features::kNoScriptPreviews; -} - } // namespace namespace params { size_t MaxStoredHistoryLengthForPerHostBlockList() { - return GetParamValueAsSizeT(kClientSidePreviewsFieldTrial, - "per_host_max_stored_history_length", 4); + return 4; } size_t MaxStoredHistoryLengthForHostIndifferentBlockList() { - return GetParamValueAsSizeT(kClientSidePreviewsFieldTrial, - "host_indifferent_max_stored_history_length", 10); + return 10; } size_t MaxInMemoryHostsInBlockList() { - // TODO(crbug.com/1092102): Migrate exeriment parameter name to - // max_hosts_in_blocklist. - return GetParamValueAsSizeT(kClientSidePreviewsFieldTrial, - "max_hosts_in_blacklist", 100); + return 100; } int PerHostBlockListOptOutThreshold() { - return GetParamValueAsInt(kClientSidePreviewsFieldTrial, - "per_host_opt_out_threshold", 2); + return 2; } int HostIndifferentBlockListOptOutThreshold() { - return GetParamValueAsInt(kClientSidePreviewsFieldTrial, - "host_indifferent_opt_out_threshold", 6); + return 6; } base::TimeDelta PerHostBlockListDuration() { - // TODO(crbug.com/1092102): Migrate exeriment parameter name to - // per_host_block_list_duration_in_days. - return base::TimeDelta::FromDays( - GetParamValueAsInt(kClientSidePreviewsFieldTrial, - "per_host_black_list_duration_in_days", 30)); + return base::TimeDelta::FromDays(30); } base::TimeDelta HostIndifferentBlockListPerHostDuration() { - // TODO(crbug.com/1092102): Migrate exeriment parameter name to - // host_indifferent_block_list_duration_in_days/ - return base::TimeDelta::FromDays( - GetParamValueAsInt(kClientSidePreviewsFieldTrial, - "host_indifferent_black_list_duration_in_days", 30)); + return base::TimeDelta::FromDays(30); } base::TimeDelta SingleOptOutDuration() { - return base::TimeDelta::FromSeconds( - GetParamValueAsInt(kClientSidePreviewsFieldTrial, - "single_opt_out_duration_in_seconds", 60 * 5)); + return base::TimeDelta::FromSeconds(60 * 5); } net::EffectiveConnectionType GetECTThresholdForPreview( previews::PreviewsType type) { switch (type) { case PreviewsType::NOSCRIPT: - return GetParamValueAsECTByFeature(features::kNoScriptPreviews, - kEffectiveConnectionTypeThreshold, - net::EFFECTIVE_CONNECTION_TYPE_2G); - NOTREACHED(); - break; + return net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN; case PreviewsType::NONE: case PreviewsType::UNSPECIFIED: case PreviewsType::RESOURCE_LOADING_HINTS: - return GetParamValueAsECTByFeature(GetResourceLoadingHintsFeature(), - kEffectiveConnectionTypeThreshold, - net::EFFECTIVE_CONNECTION_TYPE_2G); + return net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN; case PreviewsType::DEFER_ALL_SCRIPT: return GetParamValueAsECTByFeature(GetDeferAllScriptPreviewsFeature(), kEffectiveConnectionTypeThreshold, @@ -218,78 +125,16 @@ return base::FeatureList::IsEnabled(features::kPreviews); } -bool IsNoScriptPreviewsEnabled() { - if (base::FeatureList::IsEnabled(features::kEligibleForUserConsistentStudy) && - base::FeatureList::IsEnabled( - features::kNoScriptPreviewsUserConsistentStudy)) { - return base::GetFieldTrialParamByFeatureAsBool( - features::kNoScriptPreviewsUserConsistentStudy, - kUserConsistentPreviewEnabled, false); - } - return base::FeatureList::IsEnabled(features::kNoScriptPreviews); -} - -bool IsResourceLoadingHintsEnabled() { - if (base::FeatureList::IsEnabled(features::kEligibleForUserConsistentStudy) && - base::FeatureList::IsEnabled( - features::kResourceLoadingHintsUserConsistentStudy)) { - return base::GetFieldTrialParamByFeatureAsBool( - features::kResourceLoadingHintsUserConsistentStudy, - kUserConsistentPreviewEnabled, false); - } - return base::FeatureList::IsEnabled(features::kResourceLoadingHints); -} - bool IsDeferAllScriptPreviewsEnabled() { - if (base::FeatureList::IsEnabled(features::kEligibleForUserConsistentStudy) && - base::FeatureList::IsEnabled( - features::kDeferAllScriptPreviewsUserConsistentStudy)) { - return base::GetFieldTrialParamByFeatureAsBool( - features::kDeferAllScriptPreviewsUserConsistentStudy, - kUserConsistentPreviewEnabled, false); - } return base::FeatureList::IsEnabled(features::kDeferAllScriptPreviews); } -int NoScriptPreviewsVersion() { - return GetFieldTrialParamByFeatureAsInt(GetNoScriptPreviewsFeature(), - kVersion, 0); -} - -int ResourceLoadingHintsVersion() { - return GetFieldTrialParamByFeatureAsInt(GetResourceLoadingHintsFeature(), - kVersion, 0); -} int DeferAllScriptPreviewsVersion() { return GetFieldTrialParamByFeatureAsInt(GetDeferAllScriptPreviewsFeature(), kVersion, 0); } -int NoScriptPreviewsInflationPercent() { - // The default value was determined from lab experiment data of allowlisted - // URLs. It may be improved once there is enough UKM live experiment data - // via the field trial param. - return GetFieldTrialParamByFeatureAsInt(GetNoScriptPreviewsFeature(), - kNoScriptInflationPercent, 80); -} - -int NoScriptPreviewsInflationBytes() { - return GetFieldTrialParamByFeatureAsInt(GetNoScriptPreviewsFeature(), - kNoScriptInflationBytes, 0); -} - -int ResourceLoadingHintsPreviewsInflationPercent() { - return GetFieldTrialParamByFeatureAsInt(GetResourceLoadingHintsFeature(), - kResourceLoadingHintsInflationPercent, - 20); -} - -int ResourceLoadingHintsPreviewsInflationBytes() { - return GetFieldTrialParamByFeatureAsInt( - GetResourceLoadingHintsFeature(), kResourceLoadingHintsInflationBytes, 0); -} - bool ShouldOverrideNavigationCoinFlipToHoldback() { return base::GetFieldTrialParamByFeatureAsBool( features::kCoinFlipHoldback, "force_coin_flip_always_holdback", false);
diff --git a/components/previews/core/previews_experiments.h b/components/previews/core/previews_experiments.h index 41070fb..bdecee7e 100644 --- a/components/previews/core/previews_experiments.h +++ b/components/previews/core/previews_experiments.h
@@ -121,32 +121,11 @@ bool ArePreviewsAllowed(); // Whether the preview type is enabled. -bool IsNoScriptPreviewsEnabled(); -bool IsResourceLoadingHintsEnabled(); bool IsDeferAllScriptPreviewsEnabled(); // The blocklist version for each preview type. -int NoScriptPreviewsVersion(); -int ResourceLoadingHintsVersion(); int DeferAllScriptPreviewsVersion(); -// For estimating NoScript data savings, this is the percentage factor to -// multiple by the network bytes for inflating the original_bytes count. -int NoScriptPreviewsInflationPercent(); - -// For estimating NoScript data savings, this is the number of bytes to -// for inflating the original_bytes count. -int NoScriptPreviewsInflationBytes(); - -// For estimating ResourceLoadingHints data savings, this is the percentage -// factor to multiple by the network bytes for inflating the original_bytes -// count. -int ResourceLoadingHintsPreviewsInflationPercent(); - -// For estimating ResourceLoadingHints data savings, this is the number of -// bytes to for inflating the original_bytes count. -int ResourceLoadingHintsPreviewsInflationBytes(); - // Forces the coin flip holdback, if enabled, to always come up "holdback". bool ShouldOverrideNavigationCoinFlipToHoldback();
diff --git a/components/previews/core/previews_experiments_unittest.cc b/components/previews/core/previews_experiments_unittest.cc index 4350c3f..fe92b5b1b 100644 --- a/components/previews/core/previews_experiments_unittest.cc +++ b/components/previews/core/previews_experiments_unittest.cc
@@ -24,9 +24,7 @@ namespace { -const char kClientSidePreviewsFieldTrial[] = "ClientSidePreviews"; const char kPreviewsFieldTrial[] = "Previews"; -const char kEnabled[] = "Enabled"; // Verifies that the default params are correct, and that custom params can be // set, @@ -43,40 +41,7 @@ EXPECT_EQ(base::TimeDelta::FromSeconds(60 * 5), params::SingleOptOutDuration()); EXPECT_EQ(net::EFFECTIVE_CONNECTION_TYPE_2G, - params::GetECTThresholdForPreview(PreviewsType::NOSCRIPT)); - - // Set some custom params. Somewhat random yet valid values. - // TODO(crbug.com/1092102) : Migrate blacklist names to blocklist. - std::map<std::string, std::string> custom_params = { - {"per_host_max_stored_history_length", "3"}, - {"host_indifferent_max_stored_history_length", "4"}, - {"max_hosts_in_blacklist", "13"}, - {"per_host_opt_out_threshold", "12"}, - {"host_indifferent_opt_out_threshold", "84"}, - {"per_host_black_list_duration_in_days", "99"}, - {"host_indifferent_black_list_duration_in_days", "64"}, - {"single_opt_out_duration_in_seconds", "28"}, - {"max_allowed_effective_connection_type", "4G"}, - {"version", "10"}, - }; - EXPECT_TRUE(base::AssociateFieldTrialParams(kClientSidePreviewsFieldTrial, - kEnabled, custom_params)); - EXPECT_TRUE(base::FieldTrialList::CreateFieldTrial( - kClientSidePreviewsFieldTrial, kEnabled)); - - EXPECT_EQ(3u, params::MaxStoredHistoryLengthForPerHostBlockList()); - EXPECT_EQ(4u, params::MaxStoredHistoryLengthForHostIndifferentBlockList()); - EXPECT_EQ(13u, params::MaxInMemoryHostsInBlockList()); - EXPECT_EQ(12, params::PerHostBlockListOptOutThreshold()); - EXPECT_EQ(84, params::HostIndifferentBlockListOptOutThreshold()); - EXPECT_EQ(base::TimeDelta::FromDays(99), params::PerHostBlockListDuration()); - EXPECT_EQ(base::TimeDelta::FromDays(64), - params::HostIndifferentBlockListPerHostDuration()); - EXPECT_EQ(base::TimeDelta::FromSeconds(28), params::SingleOptOutDuration()); - EXPECT_EQ(net::EFFECTIVE_CONNECTION_TYPE_2G, - params::GetECTThresholdForPreview(PreviewsType::NOSCRIPT)); - - variations::testing::ClearAllVariationParams(); + params::GetECTThresholdForPreview(PreviewsType::DEFER_ALL_SCRIPT)); } TEST(PreviewsExperimentsTest, TestDefaultShouldExcludeMediaSuffix) { @@ -182,97 +147,10 @@ } } -TEST(PreviewsExperimentsTest, TestPreviewsEligibleForUserConsistentStudy) { - EXPECT_TRUE(base::FieldTrialList::CreateFieldTrial("CoinFlipPreviews", - "NonCoinFlipGroup")); - - // Base features enabled + EligibleForUserConsistentStudy + - // UserConsistent features disabled. - { - base::test::ScopedFeatureList scoped_feature_list; - scoped_feature_list.InitWithFeatures( - {features::kDeferAllScriptPreviews, features::kResourceLoadingHints, - features::kNoScriptPreviews, - features::kEligibleForUserConsistentStudy}, - {features::kDeferAllScriptPreviewsUserConsistentStudy, - features::kResourceLoadingHintsUserConsistentStudy, - features::kNoScriptPreviewsUserConsistentStudy}); - - EXPECT_TRUE(params::IsDeferAllScriptPreviewsEnabled()); - EXPECT_TRUE(params::IsResourceLoadingHintsEnabled()); - EXPECT_TRUE(params::IsNoScriptPreviewsEnabled()); - } - - // Base features disabled + EligibleForUserConsistentStudy + - // UserConsistent features enabled but do not specify enabled parameter. - { - base::test::ScopedFeatureList scoped_feature_list; - scoped_feature_list.InitWithFeatures( - {features::kEligibleForUserConsistentStudy, - features::kDeferAllScriptPreviewsUserConsistentStudy, - features::kResourceLoadingHintsUserConsistentStudy, - features::kNoScriptPreviewsUserConsistentStudy}, - {features::kDeferAllScriptPreviews, features::kResourceLoadingHints, - features::kNoScriptPreviews}); - - EXPECT_FALSE(params::IsDeferAllScriptPreviewsEnabled()); - EXPECT_FALSE(params::IsResourceLoadingHintsEnabled()); - EXPECT_FALSE(params::IsNoScriptPreviewsEnabled()); - } - - // Base features disabled + EligibleForUserConsistentStudy + - // UserConsistent features enabled with enabled parameter true. - { - base::test::ScopedFeatureList scoped_feature_list; - scoped_feature_list.InitWithFeaturesAndParameters( - {{features::kEligibleForUserConsistentStudy, {}}, - {features::kDeferAllScriptPreviewsUserConsistentStudy, - {{"user_consistent_preview_enabled", "true"}, {"version", "333"}}}, - {features::kResourceLoadingHintsUserConsistentStudy, - {{"user_consistent_preview_enabled", "true"}, {"version", "555"}}}, - {features::kNoScriptPreviewsUserConsistentStudy, - {{"user_consistent_preview_enabled", "true"}, {"version", "777"}}}}, - {features::kDeferAllScriptPreviews, features::kResourceLoadingHints, - features::kNoScriptPreviews}); - - EXPECT_TRUE(params::IsDeferAllScriptPreviewsEnabled()); - EXPECT_TRUE(params::IsResourceLoadingHintsEnabled()); - EXPECT_TRUE(params::IsNoScriptPreviewsEnabled()); - - // Verify the UserConsistent feature version params. - EXPECT_EQ(333, params::DeferAllScriptPreviewsVersion()); - EXPECT_EQ(555, params::ResourceLoadingHintsVersion()); - EXPECT_EQ(777, params::NoScriptPreviewsVersion()); - } - - // Base features disabled + EligibleForUserConsistentStudy + - // UserConsistent features enabled with enabled parameter false. - { - base::test::ScopedFeatureList scoped_feature_list; - scoped_feature_list.InitWithFeaturesAndParameters( - {{features::kEligibleForUserConsistentStudy, {}}, - {features::kDeferAllScriptPreviewsUserConsistentStudy, - {{"user_consistent_preview_enabled", "false"}, {"version", "333"}}}, - {features::kResourceLoadingHintsUserConsistentStudy, - {{"user_consistent_preview_enabled", "false"}, {"version", "555"}}}, - {features::kNoScriptPreviewsUserConsistentStudy, - {{"user_consistent_preview_enabled", "false"}, {"version", "777"}}}}, - {features::kDeferAllScriptPreviews, features::kResourceLoadingHints, - features::kNoScriptPreviews}); - - EXPECT_FALSE(params::IsDeferAllScriptPreviewsEnabled()); - EXPECT_FALSE(params::IsResourceLoadingHintsEnabled()); - EXPECT_FALSE(params::IsNoScriptPreviewsEnabled()); - } -} - TEST(PreviewsExperimentsTest, TestDeferAllScriptPreviewsCoinFlipExperiment) { base::test::ScopedFeatureList scoped_feature_list; scoped_feature_list.InitWithFeaturesAndParameters( - {{features::kDeferAllScriptPreviewsUserConsistentStudy, - {{"user_consistent_preview_enabled", "true"}, {"version", "333"}}}, - {features::kDeferAllScriptPreviews, {{"version", "444"}}}}, - {features::kEligibleForUserConsistentStudy}); + {{features::kDeferAllScriptPreviews, {{"version", "444"}}}}, {}); EXPECT_TRUE(base::FieldTrialList::CreateFieldTrial( kPreviewsFieldTrial, "DeferAllScriptPreviewsCoinFlipExperimentGroup"));
diff --git a/components/previews/core/previews_features.cc b/components/previews/core/previews_features.cc index bec9f3a..47ebd90 100644 --- a/components/previews/core/previews_features.cc +++ b/components/previews/core/previews_features.cc
@@ -22,34 +22,6 @@ #endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) }; -// Enables the Offline previews on android slow connections. -const base::Feature kOfflinePreviews{"OfflinePreviews", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Support for enabling NoScript previews which includes a base feature -// and a UserConsistent-specific experiment feature. -const base::FeatureState kNoScriptDefaultFeatureState = - base::FEATURE_DISABLED_BY_DEFAULT; -const base::Feature kNoScriptPreviews{"NoScriptPreviews", - kNoScriptDefaultFeatureState}; -const base::Feature kNoScriptPreviewsUserConsistentStudy{ - "NoScriptPreviewsUserConsistentStudy", kNoScriptDefaultFeatureState}; - -// Enables the Stale Previews timestamp on Previews infobars. -const base::Feature kStalePreviewsTimestamp{"StalePreviewsTimestamp", - base::FEATURE_ENABLED_BY_DEFAULT}; - -// Support for enabling the application of the resource loading hints when -// loading resources which includes a base feature and a UserConsistent-specific -// experiment feature. -const base::FeatureState kResourceLoadingHintsDefaultFeatureState = - base::FEATURE_DISABLED_BY_DEFAULT; -const base::Feature kResourceLoadingHints{ - "ResourceLoadingHints", kResourceLoadingHintsDefaultFeatureState}; -const base::Feature kResourceLoadingHintsUserConsistentStudy{ - "ResourceLoadingHintsUserConsistentStudy", - kResourceLoadingHintsDefaultFeatureState}; - // Provides slow page triggering parameters. const base::Feature kSlowPageTriggering{"PreviewsSlowPageTriggering", base::FEATURE_DISABLED_BY_DEFAULT}; @@ -74,13 +46,7 @@ #endif // defined(OS_ANDROID) const base::Feature kDeferAllScriptPreviews{"DeferAllScript", kDeferAllScriptDefaultFeatureState}; -const base::Feature kDeferAllScriptPreviewsUserConsistentStudy{ - "DeferAllScriptUserConsistentStudy", kDeferAllScriptDefaultFeatureState}; -// Specifies whether the client is eligible to be part of a UserConsistent -// study. That is, the UserConsistent-specific features should be considered. -const base::Feature kEligibleForUserConsistentStudy{ - "EligibleForUserConsistentStudy", base::FEATURE_DISABLED_BY_DEFAULT}; } // namespace features } // namespace previews
diff --git a/components/previews/core/previews_features.h b/components/previews/core/previews_features.h index b0481e44..fa2ede4 100644 --- a/components/previews/core/previews_features.h +++ b/components/previews/core/previews_features.h
@@ -11,18 +11,10 @@ namespace features { extern const base::Feature kPreviews; -extern const base::Feature kOfflinePreviews; -extern const base::Feature kNoScriptPreviews; -extern const base::Feature kNoScriptPreviewsUserConsistentStudy; -extern const base::Feature kStalePreviewsTimestamp; -extern const base::Feature kResourceLoadingHints; -extern const base::Feature kResourceLoadingHintsUserConsistentStudy; extern const base::Feature kSlowPageTriggering; extern const base::Feature kCoinFlipHoldback; extern const base::Feature kExcludedMediaSuffixes; extern const base::Feature kDeferAllScriptPreviews; -extern const base::Feature kDeferAllScriptPreviewsUserConsistentStudy; -extern const base::Feature kEligibleForUserConsistentStudy; } // namespace features } // namespace previews
diff --git a/components/previews/core/previews_switches.cc b/components/previews/core/previews_switches.cc index 4bc1ac0..d1e6919 100644 --- a/components/previews/core/previews_switches.cc +++ b/components/previews/core/previews_switches.cc
@@ -11,9 +11,7 @@ bool ShouldIgnorePreviewsBlocklist() { return base::CommandLine::ForCurrentProcess()->HasSwitch( - kIgnorePreviewsBlocklist) || - base::CommandLine::ForCurrentProcess()->HasSwitch( - kForceEnablePreviews); + kIgnorePreviewsBlocklist); } // Do not require the user notification InfoBar to be shown before triggering a @@ -25,9 +23,6 @@ // TODO(crbug.com/1092105) : Migrate this to ignore-previews-blacklist. const char kIgnorePreviewsBlocklist[] = "ignore-previews-blacklist"; -// Force enable all available previews on every page load. -const char kForceEnablePreviews[] = "force-enable-lite-pages"; - // Allows defer script preview on all https pages even if optimization hints are // missing for that webpage. const char kEnableDeferAllScriptWithoutOptimizationHints[] =
diff --git a/components/previews/core/previews_switches.h b/components/previews/core/previews_switches.h index 4fa61a4a..a7b8294 100644 --- a/components/previews/core/previews_switches.h +++ b/components/previews/core/previews_switches.h
@@ -14,7 +14,6 @@ extern const char kDoNotRequireLitePageRedirectInfoBar[]; extern const char kIgnorePreviewsBlocklist[]; -extern const char kForceEnablePreviews[]; extern const char kEnableDeferAllScriptWithoutOptimizationHints[]; } // namespace switches
diff --git a/components/safe_browsing/content/password_protection/password_protection_request.cc b/components/safe_browsing/content/password_protection/password_protection_request.cc index 9cc13012..516d54a 100644 --- a/components/safe_browsing/content/password_protection/password_protection_request.cc +++ b/components/safe_browsing/content/password_protection/password_protection_request.cc
@@ -540,7 +540,7 @@ url_loader_->DownloadToStringOfUnboundedSizeUntilCrashAndDie( password_protection_service_->url_loader_factory().get(), base::BindOnce(&PasswordProtectionRequest::OnURLLoaderComplete, - base::Unretained(this))); + GetWeakPtr())); } void PasswordProtectionRequest::StartTimeout() {
diff --git a/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.cc b/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.cc index b1190850..024ebee3 100644 --- a/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.cc +++ b/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.cc
@@ -231,7 +231,9 @@ } float score = static_cast<float>(scorer_->ComputeScore(hashed_features)); verdict->set_client_score(score); - verdict->set_is_phishing(score >= scorer_->threshold_probability()); + bool is_dom_match = (score >= scorer_->threshold_probability()); + verdict->set_is_phishing(is_dom_match); + verdict->set_is_dom_match(is_dom_match); #if BUILDFLAG(FULL_SAFE_BROWSING) visual_matching_start_ = base::TimeTicks::Now();
diff --git a/components/safe_browsing/core/proto/csd.proto b/components/safe_browsing/core/proto/csd.proto index 499d376..844d8fe 100644 --- a/components/safe_browsing/core/proto/csd.proto +++ b/components/safe_browsing/core/proto/csd.proto
@@ -147,6 +147,11 @@ // The visual feature match results. // Allow multiple results if there are more than one matched target. repeated VisionMatchResult vision_match = 20; + + // Indicates whether the request is due to a match on the DOM features. + optional bool is_dom_match = 21; + + // next available tag number: 22. } // Vision match result for one target image.
diff --git a/components/sessions/core/command_storage_backend.cc b/components/sessions/core/command_storage_backend.cc index aea13af..dd23cd25 100644 --- a/components/sessions/core/command_storage_backend.cc +++ b/components/sessions/core/command_storage_backend.cc
@@ -278,30 +278,49 @@ #endif } -base::FilePath::StringType GetSessionFilename( - const CommandStorageManager::SessionType type, - const base::FilePath::StringType& timestamp_str) { - DCHECK_NE(CommandStorageManager::SessionType::kOther, type); - if (type == CommandStorageManager::kTabRestore) - return base::JoinString({kTabSessionFileNamePrefix, timestamp_str}, - FILE_PATH_LITERAL("_")); +// Returns the directory the files are stored in. +base::FilePath GetSessionDirName(CommandStorageManager::SessionType type, + const base::FilePath& supplied_path) { + if (type == CommandStorageManager::kOther) + return supplied_path.DirName(); + return supplied_path.Append(kSessionsDirectory); +} - return base::JoinString({kSessionFileNamePrefix, timestamp_str}, - FILE_PATH_LITERAL("_")); +base::FilePath::StringType GetSessionBaseName( + CommandStorageManager::SessionType type, + const base::FilePath& supplied_path) { + switch (type) { + case CommandStorageManager::kTabRestore: + return kTabSessionFileNamePrefix; + case CommandStorageManager::kSessionRestore: + return kSessionFileNamePrefix; + case CommandStorageManager::kOther: + return supplied_path.BaseName().value(); + } +} + +base::FilePath::StringType GetSessionFilename( + CommandStorageManager::SessionType type, + const base::FilePath& supplied_path, + const base::FilePath::StringType& timestamp_str) { + return base::JoinString( + {GetSessionBaseName(type, supplied_path), timestamp_str}, + kTimestampSeparator); } base::FilePath GetLegacySessionPath(CommandStorageManager::SessionType type, const base::FilePath& base_path, bool current) { - DCHECK_NE(CommandStorageManager::SessionType::kOther, type); - base::FilePath session_path = base_path; - - if (type == CommandStorageManager::kTabRestore) { - return session_path.Append(current ? kLegacyCurrentTabSessionFileName - : kLegacyLastTabSessionFileName); + switch (type) { + case CommandStorageManager::kTabRestore: + return base_path.Append(current ? kLegacyCurrentTabSessionFileName + : kLegacyLastTabSessionFileName); + case CommandStorageManager::kSessionRestore: + return base_path.Append(current ? kLegacyCurrentSessionFileName + : kLegacyLastSessionFileName); + case CommandStorageManager::kOther: + return base_path; } - return session_path.Append(current ? kLegacyCurrentSessionFileName - : kLegacyLastSessionFileName); } } // namespace @@ -325,10 +344,7 @@ supplied_path_(path), timestamp_(base::Time::Now()) { // This is invoked on the main thread, don't do file access here. - if (type == CommandStorageManager::kOther) - current_path_ = path; - else - current_path_ = FilePathFromTime(type, path, timestamp_); + current_path_ = FilePathFromTime(type, path, timestamp_); } // static @@ -375,19 +391,11 @@ } } -std::vector<std::unique_ptr<SessionCommand>> -CommandStorageBackend::ReadCurrentSessionCommands( - const std::vector<uint8_t>& crypto_key) { - InitIfNecessary(); - - return ReadCommandsFromFile(current_path_, crypto_key); -} - // static bool CommandStorageBackend::TimestampFromPath(const base::FilePath& path, base::Time& timestamp_result) { auto parts = - base::SplitString(path.BaseName().value(), FILE_PATH_LITERAL("_"), + base::SplitString(path.BaseName().value(), kTimestampSeparator, base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); if (parts.size() != 2u) return false; @@ -402,22 +410,22 @@ } // static -base::FilePath CommandStorageBackend::FilePathFromTime( - const SessionType type, - const base::FilePath& base_path, - base::Time time) { - DCHECK_NE(CommandStorageManager::SessionType::kOther, type); - return base_path.Append(kSessionsDirectory) - .Append(GetSessionFilename(type, TimestampToString(time))); +std::set<base::FilePath> CommandStorageBackend::GetSessionFilePaths( + const base::FilePath& path, + CommandStorageManager::SessionType type) { + std::set<base::FilePath> result; + for (const auto& info : GetSessionFiles(path, type)) + result.insert(info.path); + return result; } std::vector<std::unique_ptr<SessionCommand>> -CommandStorageBackend::ReadLastSessionCommands() { +CommandStorageBackend::ReadLastSessionCommands( + const std::vector<uint8_t>& crypto_key) { InitIfNecessary(); if (last_session_info_) - return ReadCommandsFromFile(last_session_info_->path, - std::vector<uint8_t>()); + return ReadCommandsFromFile(last_session_info_->path, crypto_key); return {}; } @@ -488,9 +496,6 @@ inited_ = true; base::CreateDirectory(current_path_.DirName()); - if (type_ == CommandStorageManager::kOther) - return; - DetermineLastSessionFile(); if (last_session_info_) { // Check that the last session's timestamp is before the current file's. @@ -510,6 +515,15 @@ TruncateFile(); } +// static +base::FilePath CommandStorageBackend::FilePathFromTime( + const SessionType type, + const base::FilePath& path, + base::Time time) { + return GetSessionDirName(type, path) + .Append(GetSessionFilename(type, path, TimestampToString(time))); +} + void CommandStorageBackend::SetPath(const base::FilePath& path) { // Do not change the path if the file is open DCHECK(!file_); @@ -650,10 +664,10 @@ // Determine the session with the most recent timestamp that // does not match the current session path. for (const SessionInfo& session : GetSessionFiles()) { - if (session.path != current_path_) { - if (!last_session_info_ || - session.timestamp > last_session_info_->timestamp) - last_session_info_ = session; + if (session.path != current_path_ && + (!last_session_info_ || + session.timestamp > last_session_info_->timestamp)) { + last_session_info_ = session; } } @@ -669,8 +683,8 @@ } void CommandStorageBackend::DeleteLastSessionFiles() { - // Delete session files whose paths do not match the current - // or last session path. + // Delete session files whose paths do not match the current or last session + // path. for (const SessionInfo& session : GetSessionFiles()) { if (session.path != current_path_ && (!last_session_info_ || session.path != last_session_info_->path)) { @@ -679,25 +693,32 @@ } // Delete legacy session files, unless they are being used. - base::FilePath current_session_path = + const base::FilePath legacy_current_session_path = GetLegacySessionPath(type_, supplied_path_, true); - if (last_session_info_ && current_session_path != last_session_info_->path && - base::PathExists(current_session_path)) - base::DeleteFile(current_session_path); + if (last_session_info_ && + legacy_current_session_path != last_session_info_->path && + base::PathExists(legacy_current_session_path)) { + base::DeleteFile(legacy_current_session_path); + } - base::FilePath last_session_path = - GetLegacySessionPath(type_, supplied_path_, false); - if (base::PathExists(last_session_path)) - base::DeleteFile(last_session_path); + // `kOther` does not differentiate between last and current. + if (type_ != CommandStorageManager::kOther) { + const base::FilePath legacy_last_session_path = + GetLegacySessionPath(type_, supplied_path_, false); + if (base::PathExists(legacy_last_session_path)) + base::DeleteFile(legacy_last_session_path); + } } +// static std::vector<CommandStorageBackend::SessionInfo> -CommandStorageBackend::GetSessionFiles() { +CommandStorageBackend::GetSessionFiles( + const base::FilePath& path, + CommandStorageManager::SessionType type) { std::vector<SessionInfo> sessions; base::FileEnumerator file_enum( - supplied_path_.Append(kSessionsDirectory), false, - base::FileEnumerator::FILES, - GetSessionFilename(type_, FILE_PATH_LITERAL("*"))); + GetSessionDirName(type, path), false, base::FileEnumerator::FILES, + GetSessionFilename(type, path, FILE_PATH_LITERAL("*"))); for (base::FilePath name = file_enum.Next(); !name.empty(); name = file_enum.Next()) { base::Time file_time;
diff --git a/components/sessions/core/command_storage_backend.h b/components/sessions/core/command_storage_backend.h index c519614..f332e6d 100644 --- a/components/sessions/core/command_storage_backend.h +++ b/components/sessions/core/command_storage_backend.h
@@ -65,6 +65,9 @@ // Returns true if the file at |path| was generated by this class. static bool IsValidFile(const base::FilePath& path); + // Returns the path the files are being written to. + const base::FilePath& current_path() const { return current_path_; } + base::SequencedTaskRunner* owning_task_runner() { return base::RefCountedDeleteOnSequence< CommandStorageBackend>::owning_task_runner(); @@ -78,24 +81,21 @@ bool truncate, const std::vector<uint8_t>& crypto_key = std::vector<uint8_t>()); - // Reads the commands that make up the current session. If |crypto_key| - // is non-empty, it is used to decrypt the file. - std::vector<std::unique_ptr<SessionCommand>> ReadCurrentSessionCommands( - const std::vector<uint8_t>& crypto_key); - bool inited() const { return inited_; } // Parses out the timestamp from a path pointing to a session file. static bool TimestampFromPath(const base::FilePath& path, base::Time& result); - // Generates the path to a session file with the given timestamp. - static base::FilePath FilePathFromTime( - CommandStorageManager::SessionType type, - const base::FilePath& base_path, - base::Time time); + // Returns the set of possible session files. The returned paths are not + // necessarily valid session files, rather they match the naming criteria + // for session files. + static std::set<base::FilePath> GetSessionFilePaths( + const base::FilePath& path, + CommandStorageManager::SessionType type); // Returns the commands from the last session file. - std::vector<std::unique_ptr<SessionCommand>> ReadLastSessionCommands(); + std::vector<std::unique_ptr<SessionCommand>> ReadLastSessionCommands( + const std::vector<uint8_t>& crypto_key = {}); // Deletes the file containing the commands for the last session. void DeleteLastSession(); @@ -116,6 +116,12 @@ // necessary. void InitIfNecessary(); + // Generates the path to a session file with the given timestamp. + static base::FilePath FilePathFromTime( + CommandStorageManager::SessionType type, + const base::FilePath& path, + base::Time time); + // Change the file path used to save the session. Must be called after closing // the file first (CloseFile()) void SetPath(const base::FilePath& path); @@ -168,7 +174,12 @@ void DeleteLastSessionFiles(); // Gets all sessions files. - std::vector<SessionInfo> GetSessionFiles(); + std::vector<SessionInfo> GetSessionFiles() const { + return GetSessionFiles(supplied_path_, type_); + } + static std::vector<SessionInfo> GetSessionFiles( + const base::FilePath& path, + CommandStorageManager::SessionType type); const CommandStorageManager::SessionType type_;
diff --git a/components/sessions/core/command_storage_backend_unittest.cc b/components/sessions/core/command_storage_backend_unittest.cc index a12de3c..7ac37b8 100644 --- a/components/sessions/core/command_storage_backend_unittest.cc +++ b/components/sessions/core/command_storage_backend_unittest.cc
@@ -90,19 +90,65 @@ return backend->last_session_info_; } + static base::FilePath FilePathFromTime( + CommandStorageManager::SessionType type, + const base::FilePath& path, + base::Time time) { + return CommandStorageBackend::FilePathFromTime(type, path, time); + } + const base::FilePath& file_path() const { return file_path_; } const base::FilePath& restore_path() const { return restore_path_; } private: base::test::TaskEnvironment task_environment_; - // Path used when a SessionType is not supplied. + // Path used by CreateBackend(). base::FilePath file_path_; // Path used by CreateBackendWithRestoreType(). base::FilePath restore_path_; base::ScopedTempDir temp_dir_; }; +TEST_F(CommandStorageBackendTest, MigrateOther) { + scoped_refptr<CommandStorageBackend> backend = CreateBackend(); + const auto path = backend->current_path(); + EXPECT_EQ(file_path().DirName(), path.DirName()); + auto base_name = file_path().BaseName().value(); + EXPECT_EQ(base_name, path.BaseName().value().substr(0, base_name.length())); + struct TestData data = {1, "a"}; + SessionCommands commands; + commands.push_back(CreateCommandFromData(data)); + backend->AppendCommands(std::move(commands), true); + backend = nullptr; + + // Move the file to the original path. This gives the logic before kOther + // started using timestamps. + ASSERT_TRUE(base::PathExists(path)); + ASSERT_TRUE(base::Move(path, file_path())); + + // Create the backend, should get back the data written. + backend = CreateBackend(); + commands = backend->ReadLastSessionCommands(); + ASSERT_EQ(1U, commands.size()); + AssertCommandEqualsData(data, commands[0].get()); + + // Write some more data. + struct TestData data2 = {1, "b"}; + commands.clear(); + commands.push_back(CreateCommandFromData(data2)); + backend->AppendCommands(std::move(commands), true); + + // Recreate, verify updated data read back and the original file has been + // removed. + backend = nullptr; + backend = CreateBackend(); + commands = backend->ReadLastSessionCommands(); + EXPECT_FALSE(base::PathExists(file_path())); + ASSERT_EQ(1U, commands.size()); + AssertCommandEqualsData(data2, commands[0].get()); +} + TEST_F(CommandStorageBackendTest, SimpleReadWriteEncrypted) { std::vector<uint8_t> key = CommandStorageManager::CreateCryptoKey(); scoped_refptr<CommandStorageBackend> backend = CreateBackend(); @@ -115,7 +161,7 @@ // Read it back in. backend = nullptr; backend = CreateBackend(); - commands = backend->ReadCurrentSessionCommands(key); + commands = backend->ReadLastSessionCommands(key); ASSERT_EQ(1U, commands.size()); AssertCommandEqualsData(data, commands[0].get()); @@ -124,7 +170,7 @@ backend = nullptr; ++(key[0]); backend = CreateBackend(); - commands = backend->ReadCurrentSessionCommands(key); + commands = backend->ReadLastSessionCommands(key); EXPECT_TRUE(commands.empty()); } @@ -151,7 +197,7 @@ SessionCommands commands; if (i != 0) { // Read previous data. - commands = backend->ReadCurrentSessionCommands(key); + commands = backend->ReadLastSessionCommands(key); ASSERT_EQ(i, commands.size()); for (auto j = commands.begin(); j != commands.end(); ++j) AssertCommandEqualsData(data[j - commands.begin()], j->get()); @@ -189,7 +235,7 @@ backend = nullptr; backend = CreateBackend(); - commands = backend->ReadCurrentSessionCommands(key); + commands = backend->ReadLastSessionCommands(key); ASSERT_EQ(3U, commands.size()); AssertCommandEqualsData(data[0], commands[0].get()); AssertCommandEqualsData(data[1], commands[2].get()); @@ -215,7 +261,7 @@ backend = nullptr; backend = CreateBackend(); std::vector<std::unique_ptr<SessionCommand>> commands = - backend->ReadCurrentSessionCommands(key2); + backend->ReadLastSessionCommands(key2); ASSERT_EQ(1U, commands.size()); AssertCommandEqualsData(empty_command, commands[0].get()); } @@ -240,7 +286,7 @@ // Read it back in. backend = nullptr; backend = CreateBackend(); - commands = backend->ReadCurrentSessionCommands(key2); + commands = backend->ReadLastSessionCommands(key2); // And make sure we get back the expected data. ASSERT_EQ(1U, commands.size()); @@ -267,7 +313,7 @@ // Read it back in. backend = nullptr; backend = CreateBackend(); - commands = backend->ReadCurrentSessionCommands(key); + commands = backend->ReadLastSessionCommands(key); // Encryption restricts the main size, and results in truncation. ASSERT_EQ(1U, commands.size()); @@ -292,7 +338,7 @@ // Read it back in. backend = nullptr; backend = CreateBackend(); - commands = backend->ReadCurrentSessionCommands({}); + commands = backend->ReadLastSessionCommands({}); ASSERT_EQ(1U, commands.size()); auto expected_command = CreateCommandWithMaxSize(); @@ -314,10 +360,11 @@ TEST_F(CommandStorageBackendTest, IsValidFileWithValidFile) { scoped_refptr<CommandStorageBackend> backend = CreateBackend(); + const auto path = backend->current_path(); backend->AppendCommands({}, true); backend = nullptr; - EXPECT_TRUE(CommandStorageBackend::IsValidFile(file_path())); + EXPECT_TRUE(CommandStorageBackend::IsValidFile(path)); } TEST_F(CommandStorageBackendTest, SimpleReadWriteWithRestoreType) { @@ -500,16 +547,16 @@ TEST_F(CommandStorageBackendTest, FilePathFromTimeWithRestoreType) { const auto base_dir = base::FilePath(kSessionsDirectory); const auto test_time_1 = base::Time(); - const auto result_path_1 = CommandStorageBackend::FilePathFromTime( - CommandStorageManager::SessionType::kSessionRestore, base::FilePath(), - test_time_1); + const auto result_path_1 = + FilePathFromTime(CommandStorageManager::SessionType::kSessionRestore, + base::FilePath(), test_time_1); EXPECT_EQ(base_dir.Append(FILE_PATH_LITERAL("Session_0")), result_path_1); const auto test_time_2 = base::Time::FromDeltaSinceWindowsEpoch( base::TimeDelta::FromMicroseconds(13234316721694577)); - const auto result_path_2 = CommandStorageBackend::FilePathFromTime( - CommandStorageManager::SessionType::kTabRestore, base::FilePath(), - test_time_2); + const auto result_path_2 = + FilePathFromTime(CommandStorageManager::SessionType::kTabRestore, + base::FilePath(), test_time_2); EXPECT_EQ(base_dir.Append(FILE_PATH_LITERAL("Tabs_13234316721694577")), result_path_2); } @@ -632,4 +679,29 @@ ASSERT_EQ(-1, base::ReadFile(last_session, buffer, 0)); } +TEST_F(CommandStorageBackendTest, GetSessionFiles) { + EXPECT_TRUE(CommandStorageBackend::GetSessionFilePaths( + file_path(), CommandStorageManager::kOther) + .empty()); + ASSERT_EQ(0, base::WriteFile(file_path(), "", 0)); + // Not a valid name, as doesn't contain timestamp separator. + ASSERT_EQ(0, base::WriteFile(file_path().DirName().AppendASCII("Session 123"), + "", 0)); + // Valid name. + ASSERT_EQ(0, base::WriteFile(file_path().DirName().AppendASCII("Session_124"), + "", 0)); + // Valid name, but should not be returned as beginning doesn't match. + ASSERT_EQ( + 0, base::WriteFile(file_path().DirName().AppendASCII("Foo_125"), "", 0)); + auto paths = CommandStorageBackend::GetSessionFilePaths( + file_path(), CommandStorageManager::kOther); + ASSERT_EQ(1u, paths.size()); + EXPECT_EQ("Session_124", paths.begin()->BaseName().MaybeAsASCII()); +} + +TEST_F(CommandStorageBackendTest, TimestampSeparatorIsAscii) { + // Code in WebLayer relies on the timestamp separator being ascii. + ASSERT_TRUE(!base::FilePath(kTimestampSeparator).MaybeAsASCII().empty()); +} + } // namespace sessions
diff --git a/components/sessions/core/command_storage_manager.cc b/components/sessions/core/command_storage_manager.cc index faf5833..46d12eb4 100644 --- a/components/sessions/core/command_storage_manager.cc +++ b/components/sessions/core/command_storage_manager.cc
@@ -137,16 +137,6 @@ return weak_factory_for_timer_.HasWeakPtrs(); } -void CommandStorageManager::GetCurrentSessionCommands( - GetCommandsCallback callback, - const std::vector<uint8_t>& decryption_key) { - backend_task_runner_->PostTaskAndReplyWithResult( - FROM_HERE, - base::BindOnce(&CommandStorageBackend::ReadCurrentSessionCommands, - backend_.get(), decryption_key), - std::move(callback)); -} - void CommandStorageManager::MoveCurrentSessionToLastSession() { Save(); backend_task_runner()->PostNonNestableTask( @@ -162,11 +152,12 @@ } void CommandStorageManager::GetLastSessionCommands( - GetCommandsCallback callback) { + GetCommandsCallback callback, + const std::vector<uint8_t>& decryption_key) { backend_task_runner()->PostTaskAndReplyWithResult( FROM_HERE, - base::BindOnce(&CommandStorageBackend::ReadLastSessionCommands, - backend()), + base::BindOnce(&CommandStorageBackend::ReadLastSessionCommands, backend(), + decryption_key), std::move(callback)); }
diff --git a/components/sessions/core/command_storage_manager.h b/components/sessions/core/command_storage_manager.h index e988b541..dcc1b26 100644 --- a/components/sessions/core/command_storage_manager.h +++ b/components/sessions/core/command_storage_manager.h
@@ -111,13 +111,6 @@ // occurred. bool HasPendingSave() const; - // Requests the commands for the current session. If |decryption_key| is - // non-empty it is used to decrypt the contents of the file. - // WARNING: |callback| may be called after |this| is deleted. In other words, - // be sure to use a WeakPtr with |callback|. - void GetCurrentSessionCommands(GetCommandsCallback callback, - const std::vector<uint8_t>& decryption_key); - // Moves the current session to the last session. void MoveCurrentSessionToLastSession(); @@ -127,7 +120,8 @@ // Uses the backend to load the last session commands from disk. |callback| // is called once the data has arrived, and may be called after this is // deleted. - void GetLastSessionCommands(GetCommandsCallback callback); + void GetLastSessionCommands(GetCommandsCallback callback, + const std::vector<uint8_t>& decryption_key = {}); private: friend class CommandStorageManagerTestHelper;
diff --git a/components/sessions/core/command_storage_manager_test_helper.cc b/components/sessions/core/command_storage_manager_test_helper.cc index 24a133e..5aef3c6 100644 --- a/components/sessions/core/command_storage_manager_test_helper.cc +++ b/components/sessions/core/command_storage_manager_test_helper.cc
@@ -29,8 +29,10 @@ } std::vector<std::unique_ptr<SessionCommand>> -CommandStorageManagerTestHelper::ReadLastSessionCommands() { - return command_storage_manager_->backend_.get()->ReadLastSessionCommands(); +CommandStorageManagerTestHelper::ReadLastSessionCommands( + const std::vector<uint8_t>& decryption_key) { + return command_storage_manager_->backend_.get()->ReadLastSessionCommands( + decryption_key); } scoped_refptr<base::SequencedTaskRunner>
diff --git a/components/sessions/core/command_storage_manager_test_helper.h b/components/sessions/core/command_storage_manager_test_helper.h index 57bf96d7..b797935 100644 --- a/components/sessions/core/command_storage_manager_test_helper.h +++ b/components/sessions/core/command_storage_manager_test_helper.h
@@ -31,7 +31,8 @@ bool ProcessedAnyCommands(); // Read the last session commands directly from file. - std::vector<std::unique_ptr<SessionCommand>> ReadLastSessionCommands(); + std::vector<std::unique_ptr<SessionCommand>> ReadLastSessionCommands( + const std::vector<uint8_t>& decryption_key = {}); scoped_refptr<base::SequencedTaskRunner> GetBackendTaskRunner();
diff --git a/components/sessions/core/session_constants.cc b/components/sessions/core/session_constants.cc index d2a08a5..d63209a 100644 --- a/components/sessions/core/session_constants.cc +++ b/components/sessions/core/session_constants.cc
@@ -9,12 +9,14 @@ const base::FilePath::StringPieceType kSessionsDirectory = FILE_PATH_LITERAL("Sessions"); -const base::FilePath::StringPieceType kTabSessionFileNamePrefix = +const base::FilePath::CharType kTabSessionFileNamePrefix[] = FILE_PATH_LITERAL("Tabs"); -const base::FilePath::StringPieceType kSessionFileNamePrefix = +const base::FilePath::CharType kSessionFileNamePrefix[] = FILE_PATH_LITERAL("Session"); +const base::FilePath::CharType kTimestampSeparator[] = FILE_PATH_LITERAL("_"); + const base::FilePath::StringPieceType kLegacyCurrentTabSessionFileName = FILE_PATH_LITERAL("Current Tabs"); const base::FilePath::StringPieceType kLegacyLastTabSessionFileName =
diff --git a/components/sessions/core/session_constants.h b/components/sessions/core/session_constants.h index 2dcc968..afb4e65 100644 --- a/components/sessions/core/session_constants.h +++ b/components/sessions/core/session_constants.h
@@ -16,13 +16,18 @@ // File name prefix for a type of TAB. // Added in Chrome 85. -extern const base::FilePath::StringPieceType SESSIONS_EXPORT - kTabSessionFileNamePrefix; +extern const base::FilePath::CharType SESSIONS_EXPORT + kTabSessionFileNamePrefix[]; // File name prefix for a type of SESSION. // Added in Chrome 85. -extern const base::FilePath::StringPieceType SESSIONS_EXPORT - kSessionFileNamePrefix; +extern const base::FilePath::CharType SESSIONS_EXPORT kSessionFileNamePrefix[]; + +// Separator between the file name (such as `kSessionFileNamePrefix`) and the +// timestamp. +extern const base::FilePath::CharType SESSIONS_EXPORT kTimestampSeparator[]; + +// TODO(sky): remove the legacy files around ~1/2022. // Legacy file names (current and previous) for a type of TAB. // Used before Chrome 85.
diff --git a/components/viz/common/delegated_ink_metadata.cc b/components/viz/common/delegated_ink_metadata.cc index 3215d5c6..d45fb269 100644 --- a/components/viz/common/delegated_ink_metadata.cc +++ b/components/viz/common/delegated_ink_metadata.cc
@@ -12,11 +12,11 @@ std::string DelegatedInkMetadata::ToString() const { std::string str = base::StringPrintf( "point: %s, diameter: %f, color: %u, timestamp: %" PRId64 - ", presentation_area: %s, frame_time: %" PRId64, + ", presentation_area: %s, frame_time: %" PRId64 ", is_hovering: %d", point_.ToString().c_str(), diameter_, color_, timestamp_.since_origin().InMicroseconds(), presentation_area_.ToString().c_str(), - frame_time_.since_origin().InMicroseconds()); + frame_time_.since_origin().InMicroseconds(), is_hovering_); return str; }
diff --git a/components/viz/common/delegated_ink_metadata.h b/components/viz/common/delegated_ink_metadata.h index 4d297f9..42f2b0a6 100644 --- a/components/viz/common/delegated_ink_metadata.h +++ b/components/viz/common/delegated_ink_metadata.h
@@ -28,24 +28,28 @@ double diameter, SkColor color, base::TimeTicks timestamp, - const gfx::RectF& area) - : point_(pt), - diameter_(diameter), - color_(color), - timestamp_(timestamp), - presentation_area_(area) {} - DelegatedInkMetadata(const gfx::PointF& pt, - double diameter, - SkColor color, - base::TimeTicks timestamp, const gfx::RectF& area, - base::TimeTicks frame_time) + bool hovering) : point_(pt), diameter_(diameter), color_(color), timestamp_(timestamp), presentation_area_(area), - frame_time_(frame_time) {} + is_hovering_(hovering) {} + DelegatedInkMetadata(const gfx::PointF& pt, + double diameter, + SkColor color, + base::TimeTicks timestamp, + const gfx::RectF& area, + base::TimeTicks frame_time, + bool hovering) + : point_(pt), + diameter_(diameter), + color_(color), + timestamp_(timestamp), + presentation_area_(area), + frame_time_(frame_time), + is_hovering_(hovering) {} DelegatedInkMetadata(const DelegatedInkMetadata& other) = default; const gfx::PointF& point() const { return point_; } @@ -54,6 +58,7 @@ base::TimeTicks timestamp() const { return timestamp_; } const gfx::RectF& presentation_area() const { return presentation_area_; } base::TimeTicks frame_time() const { return frame_time_; } + bool is_hovering() const { return is_hovering_; } void set_frame_time(base::TimeTicks frame_time) { frame_time_ = frame_time; } @@ -77,6 +82,11 @@ // Frame time of the layer tree that this metadata is on. base::TimeTicks frame_time_; + + // True if the left mouse button is up or if a stylus with hovering + // capabilities is hovering over the screen when updateInkTrailStartPoint is + // called. + bool is_hovering_ = false; }; } // namespace viz
diff --git a/components/viz/service/display/delegated_ink_point_pixel_test_helper.cc b/components/viz/service/display/delegated_ink_point_pixel_test_helper.cc index c1a587c..f67813e 100644 --- a/components/viz/service/display/delegated_ink_point_pixel_test_helper.cc +++ b/components/viz/service/display/delegated_ink_point_pixel_test_helper.cc
@@ -38,9 +38,9 @@ SkColor color, const gfx::RectF& presentation_area) { DCHECK(renderer_); - metadata_ = - DelegatedInkMetadata(point, diameter, color, base::TimeTicks::Now(), - presentation_area, base::TimeTicks::Now()); + metadata_ = DelegatedInkMetadata(point, diameter, color, + base::TimeTicks::Now(), presentation_area, + base::TimeTicks::Now(), /*hovering*/ false); GetInkRenderer()->SetDelegatedInkMetadata( std::make_unique<DelegatedInkMetadata>(metadata_)); } @@ -50,7 +50,7 @@ metadata_ = DelegatedInkMetadata( ink_points_.back().point(), metadata_.diameter(), metadata_.color(), ink_points_.back().timestamp(), metadata_.presentation_area(), - metadata_.frame_time()); + metadata_.frame_time(), metadata_.is_hovering()); GetInkRenderer()->SetDelegatedInkMetadata( std::make_unique<DelegatedInkMetadata>(metadata_)); }
diff --git a/components/viz/service/display/delegated_ink_point_renderer_base.cc b/components/viz/service/display/delegated_ink_point_renderer_base.cc index 76bf1be..ad5ed14 100644 --- a/components/viz/service/display/delegated_ink_point_renderer_base.cc +++ b/components/viz/service/display/delegated_ink_point_renderer_base.cc
@@ -153,6 +153,8 @@ void DelegatedInkPointRendererBase::ResetPrediction() { predictor_->Reset(); metrics_handler_.Reset(); + TRACE_EVENT_INSTANT0("viz", "Delegated ink prediction reset.", + TRACE_EVENT_SCOPE_THREAD); } void DelegatedInkPointRendererBase::StoreDelegatedInkPoint(
diff --git a/components/viz/service/display/delegated_ink_point_renderer_base.h b/components/viz/service/display/delegated_ink_point_renderer_base.h index e915899..ed0f23f 100644 --- a/components/viz/service/display/delegated_ink_point_renderer_base.h +++ b/components/viz/service/display/delegated_ink_point_renderer_base.h
@@ -66,7 +66,7 @@ std::vector<DelegatedInkPoint> FilterPoints(); void PredictPoints(std::vector<DelegatedInkPoint>* ink_points_to_draw); - void ResetPrediction(); + void ResetPrediction() override; std::unique_ptr<DelegatedInkMetadata> metadata_;
diff --git a/components/viz/service/display/display_unittest.cc b/components/viz/service/display/display_unittest.cc index b7b5fe60..ff06e95 100644 --- a/components/viz/service/display/display_unittest.cc +++ b/components/viz/service/display/display_unittest.cc
@@ -4565,7 +4565,8 @@ DelegatedInkMetadata metadata(ink_points_[index].point(), diameter, color, ink_points_[index].timestamp(), - presentation_area, base::TimeTicks::Now()); + presentation_area, base::TimeTicks::Now(), + /*hovering*/ false); SendMetadata(metadata); return metadata; }
diff --git a/components/viz/service/display/surface_aggregator.cc b/components/viz/service/display/surface_aggregator.cc index 50be40d..0683a78 100644 --- a/components/viz/service/display/surface_aggregator.cc +++ b/components/viz/service/display/surface_aggregator.cc
@@ -2040,7 +2040,7 @@ parent_quad_to_root_target_transform.TransformRect(&area); delegated_ink_metadata_ = std::make_unique<DelegatedInkMetadata>( point, metadata->diameter(), metadata->color(), metadata->timestamp(), - area, metadata->frame_time()); + area, metadata->frame_time(), metadata->is_hovering()); TRACE_EVENT_INSTANT2( "viz", "SurfaceAggregator::TransformAndStoreDelegatedInkMetadata",
diff --git a/components/viz/service/display/surface_aggregator_unittest.cc b/components/viz/service/display/surface_aggregator_unittest.cc index f708b7f2..a5a95f40 100644 --- a/components/viz/service/display/surface_aggregator_unittest.cc +++ b/components/viz/service/display/surface_aggregator_unittest.cc
@@ -8295,6 +8295,7 @@ EXPECT_FLOAT_EQ(lhs.presentation_area().height(), rhs.presentation_area().height()); EXPECT_EQ(lhs.frame_time(), rhs.frame_time()); + EXPECT_EQ(lhs.is_hovering(), rhs.is_hovering()); } // Basic test to confirm that ink metadata on a child surface will be @@ -8308,7 +8309,7 @@ CompositorFrame child_frame = MakeEmptyCompositorFrame(); DelegatedInkMetadata metadata( gfx::PointF(100, 100), 1.5, SK_ColorRED, base::TimeTicks::Now(), - gfx::RectF(10, 10, 200, 200), base::TimeTicks::Now()); + gfx::RectF(10, 10, 200, 200), base::TimeTicks::Now(), /*hovering*/ true); child_frame.metadata.delegated_ink_metadata = std::make_unique<DelegatedInkMetadata>(metadata); AddPasses(&child_frame.render_pass_list, child_passes, @@ -8351,9 +8352,9 @@ root_frame.render_pass_list[0] ->shared_quad_state_list.ElementAt(0) ->quad_to_target_transform.TransformRect(&area); - metadata = - DelegatedInkMetadata(pt, metadata.diameter(), metadata.color(), - metadata.timestamp(), area, metadata.frame_time()); + metadata = DelegatedInkMetadata( + pt, metadata.diameter(), metadata.color(), metadata.timestamp(), area, + metadata.frame_time(), metadata.is_hovering()); root_sink_->SubmitCompositorFrame(root_local_surface_id_, std::move(root_frame)); @@ -8386,7 +8387,7 @@ DelegatedInkMetadata metadata( gfx::PointF(100, 100), 1.5, SK_ColorRED, base::TimeTicks::Now(), - gfx::RectF(10, 10, 200, 200), base::TimeTicks::Now()); + gfx::RectF(10, 10, 200, 200), base::TimeTicks::Now(), /*hovering*/ false); CompositorFrame greatgrandchild_frame = MakeEmptyCompositorFrame(); greatgrandchild_frame.metadata.delegated_ink_metadata = std::make_unique<DelegatedInkMetadata>(metadata); @@ -8505,9 +8506,9 @@ root_local_surface_id_); auto aggregated_frame = AggregateFrame(root_surface_id); - metadata = - DelegatedInkMetadata(pt, metadata.diameter(), metadata.color(), - metadata.timestamp(), area, metadata.frame_time()); + metadata = DelegatedInkMetadata( + pt, metadata.diameter(), metadata.color(), metadata.timestamp(), area, + metadata.frame_time(), metadata.is_hovering()); std::unique_ptr<DelegatedInkMetadata> actual_metadata = std::move(aggregated_frame.delegated_ink_metadata); @@ -8554,7 +8555,7 @@ DelegatedInkMetadata metadata = DelegatedInkMetadata( gfx::PointF(88, 34), 1.8, SK_ColorBLACK, base::TimeTicks::Now(), - gfx::RectF(50, 50, 300, 300), base::TimeTicks::Now()); + gfx::RectF(50, 50, 300, 300), base::TimeTicks::Now(), /*hovering*/ true); CompositorFrame child_2_frame = MakeEmptyCompositorFrame(); child_2_frame.metadata.delegated_ink_metadata = std::make_unique<DelegatedInkMetadata>(metadata); @@ -8637,9 +8638,9 @@ root_local_surface_id_); auto aggregated_frame = AggregateFrame(root_surface_id); - metadata = - DelegatedInkMetadata(pt, metadata.diameter(), metadata.color(), - metadata.timestamp(), area, metadata.frame_time()); + metadata = DelegatedInkMetadata( + pt, metadata.diameter(), metadata.color(), metadata.timestamp(), area, + metadata.frame_time(), metadata.is_hovering()); std::unique_ptr<DelegatedInkMetadata> actual_metadata = std::move(aggregated_frame.delegated_ink_metadata); @@ -8691,12 +8692,13 @@ // issues with both metadatas sometimes having the same time in Release. DelegatedInkMetadata early_metadata = DelegatedInkMetadata( gfx::PointF(88, 34), 1.8, SK_ColorBLACK, base::TimeTicks::Now(), - gfx::RectF(50, 50, 300, 300), base::TimeTicks::Now()); + gfx::RectF(50, 50, 300, 300), base::TimeTicks::Now(), /*hovering*/ false); DelegatedInkMetadata later_metadata = DelegatedInkMetadata( gfx::PointF(92, 35), 0.08, SK_ColorYELLOW, base::TimeTicks::Now() + base::TimeDelta::FromMicroseconds(50), gfx::RectF(35, 55, 128, 256), - base::TimeTicks::Now() + base::TimeDelta::FromMicroseconds(52)); + base::TimeTicks::Now() + base::TimeDelta::FromMicroseconds(52), + /*hovering*/ true); CompositorFrame child_2_frame = MakeEmptyCompositorFrame(); child_2_frame.metadata.delegated_ink_metadata = @@ -8785,7 +8787,8 @@ DelegatedInkMetadata expected_metadata = DelegatedInkMetadata( pt, later_metadata.diameter(), later_metadata.color(), - later_metadata.timestamp(), area, later_metadata.frame_time()); + later_metadata.timestamp(), area, later_metadata.frame_time(), + later_metadata.is_hovering()); std::unique_ptr<DelegatedInkMetadata> actual_metadata = std::move(aggregated_frame.delegated_ink_metadata); @@ -8808,9 +8811,10 @@ Pass(child_quads, CompositorRenderPassId{1}, gfx::Size(100, 100))}; CompositorFrame child_frame = MakeEmptyCompositorFrame(); - DelegatedInkMetadata metadata( - gfx::PointF(34, 89), 1.597, SK_ColorBLUE, base::TimeTicks::Now(), - gfx::RectF(2.3, 3.2, 177, 212), base::TimeTicks::Now()); + DelegatedInkMetadata metadata(gfx::PointF(34, 89), 1.597, SK_ColorBLUE, + base::TimeTicks::Now(), + gfx::RectF(2.3, 3.2, 177, 212), + base::TimeTicks::Now(), /*hovering*/ false); child_frame.metadata.delegated_ink_metadata = std::make_unique<DelegatedInkMetadata>(metadata); AddPasses(&child_frame.render_pass_list, child_passes,
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn index 2b7a492..639b7a2b 100644 --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn
@@ -1286,8 +1286,6 @@ "renderer_host/file_utilities_host_impl.h", "renderer_host/form_submission_throttle.cc", "renderer_host/form_submission_throttle.h", - "renderer_host/frame_metadata_util.cc", - "renderer_host/frame_metadata_util.h", "renderer_host/frame_navigation_entry.cc", "renderer_host/frame_navigation_entry.h", "renderer_host/frame_token_message_queue.cc",
diff --git a/content/browser/accessibility/accessibility_tree_formatter_mac.mm b/content/browser/accessibility/accessibility_tree_formatter_mac.mm index 27e64e0..a12233b2 100644 --- a/content/browser/accessibility/accessibility_tree_formatter_mac.mm +++ b/content/browser/accessibility/accessibility_tree_formatter_mac.mm
@@ -51,7 +51,7 @@ const char kSetKeyPrefixDictAttr[] = "_setkey_"; const char kConstValuePrefix[] = "_const_"; const char kNULLValue[] = "_const_NULL"; -const char kFailedToParseArgsError[] = "_const_ERROR:FAILED_TO_PARSE_ARGS"; +const char kFailedToParseError[] = "_const_ERROR:FAILED_TO_PARSE"; } // namespace @@ -126,14 +126,11 @@ continue; } - std::string result; - if (value.IsError()) { - result = kFailedToParseArgsError; - } else { - result = FormatAttributeValue(PopulateObject(*value, line_indexer)); - } + base::Value result = value.IsError() ? base::Value(kFailedToParseError) + : PopulateObject(*value, line_indexer); + std::string code = property_node.original_property; - scripts.Append(code + "=" + result); + scripts.Append(code + "=" + FormatAttributeValue(result)); } dict->SetPath(kScriptsDictAttr, std::move(scripts)); } @@ -188,7 +185,7 @@ } if (value.IsError()) { dict->SetPath(property_node.original_property, - base::Value(kFailedToParseArgsError)); + base::Value(kFailedToParseError)); continue; } dict->SetPath(property_node.original_property,
diff --git a/content/browser/accessibility/accessibility_tree_formatter_mac_browsertest.mm b/content/browser/accessibility/accessibility_tree_formatter_mac_browsertest.mm index f47157a0..17b011d 100644 --- a/content/browser/accessibility/accessibility_tree_formatter_mac_browsertest.mm +++ b/content/browser/accessibility/accessibility_tree_formatter_mac_browsertest.mm
@@ -193,7 +193,7 @@ <p contentEditable='true'>Text</p>)~~", {"1, 2", "NaN"}, ":2;AXLineForIndex(Argument)=*", R"~~(AXWebArea -++AXTextArea AXLineForIndex(Argument)=ERROR:FAILED_TO_PARSE_ARGS AXValue='Text' +++AXTextArea AXLineForIndex(Argument)=ERROR:FAILED_TO_PARSE AXValue='Text' ++++AXStaticText AXValue='Text' )~~"); } @@ -239,7 +239,7 @@ <table role="grid"><tr><td>CELL</td></tr></table>)~~", {"0, 0", "{1, 2}", "[1, NaN]", "[NaN, 1]"}, "AXCellForColumnAndRow(Argument)=*", R"~~(AXWebArea -++AXTable AXCellForColumnAndRow(Argument)=ERROR:FAILED_TO_PARSE_ARGS +++AXTable AXCellForColumnAndRow(Argument)=ERROR:FAILED_TO_PARSE ++++AXRow ++++++AXCell ++++++++AXStaticText AXValue='CELL' @@ -267,7 +267,7 @@ {"1, 2", "[]", "{loc: 1, leno: 2}", "{loco: 1, len: 2}", "{loc: NaN, len: 2}", "{loc: 2, len: NaN}"}, ":2;AXStringForRange(Argument)=*", R"~~(AXWebArea -++AXTextArea AXStringForRange(Argument)=ERROR:FAILED_TO_PARSE_ARGS AXValue='Text' +++AXTextArea AXStringForRange(Argument)=ERROR:FAILED_TO_PARSE AXValue='Text' ++++AXStaticText AXValue='Text' )~~"); } @@ -289,7 +289,7 @@ {"1, 2", "2", ":4"}, ":2;AXIndexForChildUIElement(Argument)=*", R"~~(AXWebArea -++AXTextArea AXIndexForChildUIElement(Argument)=ERROR:FAILED_TO_PARSE_ARGS AXValue='Text' +++AXTextArea AXIndexForChildUIElement(Argument)=ERROR:FAILED_TO_PARSE AXValue='Text' ++++AXStaticText AXValue='Text' )~~"); } @@ -312,7 +312,7 @@ <p>Text</p>)~~", {"1, 2", "2", "{2, 1, down}", "{:2, NaN, down}", "{:2, 1, hoho}"}, ":1;AXIndexForTextMarker(Argument)=*", - R"~~(AXWebArea AXIndexForTextMarker(Argument)=ERROR:FAILED_TO_PARSE_ARGS + R"~~(AXWebArea AXIndexForTextMarker(Argument)=ERROR:FAILED_TO_PARSE ++AXGroup ++++AXStaticText AXValue='Text' )~~"); @@ -339,7 +339,7 @@ {"1, 2", "2", "{focus: {:2, 1, down}}", "{anchor: {:2, 1, down}}", "{anchor: {2, 1, down}, focus: {2, 1, down}}"}, ":1;AXStringForTextMarkerRange(Argument)=*", - R"~~(AXWebArea AXStringForTextMarkerRange(Argument)=ERROR:FAILED_TO_PARSE_ARGS + R"~~(AXWebArea AXStringForTextMarkerRange(Argument)=ERROR:FAILED_TO_PARSE ++AXGroup ++++AXStaticText AXValue='Text' )~~"); @@ -363,4 +363,22 @@ )~~"); } +IN_PROC_BROWSER_TEST_F(AccessibilityTreeFormatterMacBrowserTest, + Script_ByDOMId) { + TestAndCheck(R"~~(data:text/html, + <input id='textbox' aria-label='input'>)~~", + {{"textbox.AXRole", SCRIPT}}, {{"*", "*"}}, + R"~~(textbox.AXRole='AXTextField' +)~~"); +} + +IN_PROC_BROWSER_TEST_F(AccessibilityTreeFormatterMacBrowserTest, + Script_ByDOMId_WrongDOMId) { + TestAndCheck(R"~~(data:text/html, + <input id='textbox' aria-label='input'>)~~", + {{"textbo.AXRole", SCRIPT}}, {{"*", "*"}}, + R"~~(textbo.AXRole=ERROR:FAILED_TO_PARSE +)~~"); +} + } // namespace content
diff --git a/content/browser/accessibility/accessibility_tree_formatter_utils_mac.h b/content/browser/accessibility/accessibility_tree_formatter_utils_mac.h index fb2effba..f1dcf1a 100644 --- a/content/browser/accessibility/accessibility_tree_formatter_utils_mac.h +++ b/content/browser/accessibility/accessibility_tree_formatter_utils_mac.h
@@ -29,7 +29,15 @@ private: void Build(const gfx::NativeViewAccessible node, int* counter); - std::map<const gfx::NativeViewAccessible, std::string> map; + struct NodeIdentifier { + std::string line_index; + std::string DOMid; + }; + + // Map between accessible objects and their identificators which can be a line + // index the object is placed at in an accessible tree or its DOM id + // attribute. + std::map<const gfx::NativeViewAccessible, NodeIdentifier> map; }; // Implements stateful id values. Can be either id or be in
diff --git a/content/browser/accessibility/accessibility_tree_formatter_utils_mac.mm b/content/browser/accessibility/accessibility_tree_formatter_utils_mac.mm index 0ae74b7..955a1c8 100644 --- a/content/browser/accessibility/accessibility_tree_formatter_utils_mac.mm +++ b/content/browser/accessibility/accessibility_tree_formatter_utils_mac.mm
@@ -60,12 +60,12 @@ if (IsBrowserAccessibilityCocoa(node)) { auto iter = map.find(node); if (iter != map.end()) { - line_index = iter->second; + line_index = iter->second.line_index; } } else if (IsAXUIElement(node)) { for (auto& iter : map) { if (CFEqual(iter.first, node)) { - line_index = iter.second; + line_index = iter.second.line_index; break; } } @@ -74,9 +74,12 @@ } gfx::NativeViewAccessible LineIndexer::NodeBy( - const std::string& line_index) const { - for (std::pair<const gfx::NativeViewAccessible, std::string> item : map) { - if (item.second == line_index) { + const std::string& identifier) const { + // Finds a first match either by a line number in :LINE_NUM format or by DOM + // id. + for (auto& item : map) { + if (item.second.line_index == identifier || + item.second.DOMid == identifier) { return item.first; } } @@ -86,7 +89,13 @@ void LineIndexer::Build(const gfx::NativeViewAccessible node, int* counter) { const std::string line_index = std::string(1, ':') + base::NumberToString(++(*counter)); - map.insert({node, line_index}); + + const id domid_value = + AttributeValueOf(node, base::SysUTF8ToNSString("AXDOMIdentifier")); + const std::string domid = + base::SysNSStringToUTF8(static_cast<NSString*>(domid_value)); + + map.insert({node, {line_index, domid}}); NSArray* children = ChildrenOf(node); for (gfx::NativeViewAccessible child in children) { Build(child, counter); @@ -120,6 +129,13 @@ OptionalNSObject AttributeInvoker::Invoke( const AXPropertyNode& property_node) const { id target = TargetOf(property_node); + if (!target) { + // TODO(alexs): failing the tests when filters are incorrect is a good idea, + // however crashing ax_dump tools on wrong input might be not. Figure out + // a working solution that works nicely in both cases. + LOG(ERROR) << "No target to invoke attribute"; + return OptionalNSObject::Error(); + } // Attributes for (NSString* attribute : AttributeNamesOf(target)) {
diff --git a/content/browser/appcache/appcache_storage_impl_unittest.cc b/content/browser/appcache/appcache_storage_impl_unittest.cc index 23a48a2..5e96ff5 100644 --- a/content/browser/appcache/appcache_storage_impl_unittest.cc +++ b/content/browser/appcache/appcache_storage_impl_unittest.cc
@@ -273,9 +273,7 @@ // Test harness -------------------------------------------------- AppCacheStorageImplTest() - : interceptor_(base::BindRepeating(&InterceptRequest)), - weak_partition_factory_(static_cast<StoragePartitionImpl*>( - BrowserContext::GetDefaultStoragePartition(&browser_context_))) { + : interceptor_(base::BindRepeating(&InterceptRequest)) { ChildProcessSecurityPolicyImpl::GetInstance()->AddForTesting( kProcessId, &browser_context_); appcache_require_origin_trial_feature_.InitAndDisableFeature( @@ -297,6 +295,14 @@ run_loop.Run(); } + void SetUp() override { + // Calling GetDefaultStoragePartition kicks off a bunch of things, + // including setting up a disk cache, which checks feature lists. + // Defer until here so test constructors can set feature lists first. + weak_partition_factory_.emplace(static_cast<StoragePartitionImpl*>( + BrowserContext::GetDefaultStoragePartition(&browser_context_))); + } + void SetUpTest() { service_ = std::make_unique<AppCacheServiceImpl>(nullptr, nullptr); service_->set_appcache_policy(&mock_policy_); @@ -1586,7 +1592,7 @@ // Recreate the service to point at the db and corruption on disk. service_ = std::make_unique<AppCacheServiceImpl>( - nullptr, weak_partition_factory_.GetWeakPtr()); + nullptr, weak_partition_factory_->GetWeakPtr()); service_->set_appcache_policy(&mock_policy_); service_->Initialize(temp_directory_.GetPath()); @@ -1811,7 +1817,9 @@ URLLoaderInterceptor interceptor_; TestBrowserContext browser_context_; base::test::ScopedFeatureList appcache_require_origin_trial_feature_; - base::WeakPtrFactory<StoragePartitionImpl> weak_partition_factory_; + // Delayed initialization to avoid data races with feature list. + base::Optional<base::WeakPtrFactory<StoragePartitionImpl>> + weak_partition_factory_; // Test data const base::Time kZeroTime; @@ -1857,6 +1865,20 @@ const int kDefaultEntryIdOffset = 12345; }; +// By default AppCacheStorageImplTest disables the origin trial. +// Specific tests use this to turn it back on. +class AppCacheStorageImplTestEnableOriginTrial + : public AppCacheStorageImplTest { + public: + AppCacheStorageImplTestEnableOriginTrial() { + appcache_require_origin_trial_feature_.InitAndEnableFeature( + blink::features::kAppCacheRequireOriginTrial); + } + + private: + base::test::ScopedFeatureList appcache_require_origin_trial_feature_; +}; + TEST_F(AppCacheStorageImplTest, LoadCache_Miss) { RunTestOnUIThread(&AppCacheStorageImplTest::LoadCache_Miss); } @@ -1865,15 +1887,11 @@ RunTestOnUIThread(&AppCacheStorageImplTest::LoadCache_NearHit); } -TEST_F(AppCacheStorageImplTest, LoadCache_OriginTrialSuccess) { - base::test::ScopedFeatureList f; - f.InitAndEnableFeature(blink::features::kAppCacheRequireOriginTrial); +TEST_F(AppCacheStorageImplTestEnableOriginTrial, LoadCache_OriginTrialSuccess) { RunTestOnUIThread(&AppCacheStorageImplTest::LoadCache_OriginTrialSuccess); } -TEST_F(AppCacheStorageImplTest, LoadCache_OriginTrialFailure) { - base::test::ScopedFeatureList f; - f.InitAndEnableFeature(blink::features::kAppCacheRequireOriginTrial); +TEST_F(AppCacheStorageImplTestEnableOriginTrial, LoadCache_OriginTrialFailure) { RunTestOnUIThread(&AppCacheStorageImplTest::LoadCache_OriginTrialFailure); } @@ -1889,9 +1907,8 @@ RunTestOnUIThread(&AppCacheStorageImplTest::LoadGroupAndCache_FarHit); } -TEST_F(AppCacheStorageImplTest, LoadGroupAndCache_OriginTrialSuccess) { - base::test::ScopedFeatureList f; - f.InitAndEnableFeature(blink::features::kAppCacheRequireOriginTrial); +TEST_F(AppCacheStorageImplTestEnableOriginTrial, + LoadGroupAndCache_OriginTrialSuccess) { RunTestOnUIThread(&AppCacheStorageImplTest::LoadGroupAndCache_FarHit); } @@ -1936,16 +1953,14 @@ RunTestOnUIThread(&AppCacheStorageImplTest::BasicFindMainResponseInDatabase); } -TEST_F(AppCacheStorageImplTest, BasicFindMainResponse_OriginTrialFailure) { - base::test::ScopedFeatureList f; - f.InitAndEnableFeature(blink::features::kAppCacheRequireOriginTrial); +TEST_F(AppCacheStorageImplTestEnableOriginTrial, + BasicFindMainResponse_OriginTrialFailure) { RunTestOnUIThread( &AppCacheStorageImplTest::BasicFindMainResponse_OriginTrialFailure); } -TEST_F(AppCacheStorageImplTest, BasicFindMainResponse_OriginTrialSuccess) { - base::test::ScopedFeatureList f; - f.InitAndEnableFeature(blink::features::kAppCacheRequireOriginTrial); +TEST_F(AppCacheStorageImplTestEnableOriginTrial, + BasicFindMainResponse_OriginTrialSuccess) { RunTestOnUIThread( &AppCacheStorageImplTest::BasicFindMainFallbackResponseInDatabase); } @@ -1965,16 +1980,14 @@ &AppCacheStorageImplTest::BasicFindMainFallbackResponseInWorkingSet); } -TEST_F(AppCacheStorageImplTest, FindMainFallbackResponse_OriginTrialSuccess) { - base::test::ScopedFeatureList f; - f.InitAndEnableFeature(blink::features::kAppCacheRequireOriginTrial); +TEST_F(AppCacheStorageImplTestEnableOriginTrial, + FindMainFallbackResponse_OriginTrialSuccess) { RunTestOnUIThread( &AppCacheStorageImplTest::BasicFindMainFallbackResponseInDatabase); } -TEST_F(AppCacheStorageImplTest, FindMainFallbackResponse_OriginTrialFailure) { - base::test::ScopedFeatureList f; - f.InitAndEnableFeature(blink::features::kAppCacheRequireOriginTrial); +TEST_F(AppCacheStorageImplTestEnableOriginTrial, + FindMainFallbackResponse_OriginTrialFailure) { RunTestOnUIThread( &AppCacheStorageImplTest::FindMainFallbackResponse_OriginTrialFailure); } @@ -1989,16 +2002,14 @@ &AppCacheStorageImplTest::BasicFindMainInterceptResponseInWorkingSet); } -TEST_F(AppCacheStorageImplTest, FindMainInterceptResponse_OriginTrialSuccess) { - base::test::ScopedFeatureList f; - f.InitAndEnableFeature(blink::features::kAppCacheRequireOriginTrial); +TEST_F(AppCacheStorageImplTestEnableOriginTrial, + FindMainInterceptResponse_OriginTrialSuccess) { RunTestOnUIThread( &AppCacheStorageImplTest::BasicFindMainInterceptResponseInDatabase); } -TEST_F(AppCacheStorageImplTest, FindMainInterceptResponse_OriginTrialFailure) { - base::test::ScopedFeatureList f; - f.InitAndEnableFeature(blink::features::kAppCacheRequireOriginTrial); +TEST_F(AppCacheStorageImplTestEnableOriginTrial, + FindMainInterceptResponse_OriginTrialFailure) { RunTestOnUIThread( &AppCacheStorageImplTest::FindMainInterceptResponse_OriginTrialFailure); }
diff --git a/content/browser/cache_storage/cache_storage_dispatcher_host.cc b/content/browser/cache_storage/cache_storage_dispatcher_host.cc index a0d3151..6d2630d5 100644 --- a/content/browser/cache_storage/cache_storage_dispatcher_host.cc +++ b/content/browser/cache_storage/cache_storage_dispatcher_host.cc
@@ -5,7 +5,6 @@ #include "content/browser/cache_storage/cache_storage_dispatcher_host.h" #include "base/bind.h" -#include "base/debug/stack_trace.h" #include "base/feature_list.h" #include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" @@ -573,6 +572,33 @@ host_->cache_receivers_.GetBadMessageCallback())); } + void WriteSideData(const GURL& url, + base::Time expected_response_time, + mojo_base::BigBuffer data, + int64_t trace_id, + WriteSideDataCallback callback) override { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + TRACE_EVENT_WITH_FLOW1("CacheStorage", + "CacheStorageDispatchHost::CacheImpl::WriteSideData", + TRACE_ID_GLOBAL(trace_id), + TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT, + "url", url.spec()); + + content::CacheStorageCache* cache = cache_handle_.value(); + if (!cache) { + std::move(callback).Run(CacheStorageError::kErrorNotFound); + return; + } + + scoped_refptr<net::IOBuffer> buf = + base::MakeRefCounted<net::IOBuffer>(data.size()); + if (data.size()) + memcpy(buf->data(), data.data(), data.size()); + + cache->WriteSideData(std::move(callback), url, expected_response_time, + trace_id, std::move(buf), data.size()); + } + // Owns this. CacheStorageDispatcherHost* const host_;
diff --git a/content/browser/download/download_browsertest.cc b/content/browser/download/download_browsertest.cc index 08cb1efb7..257e3754 100644 --- a/content/browser/download/download_browsertest.cc +++ b/content/browser/download/download_browsertest.cc
@@ -690,20 +690,17 @@ DownloadManager* manager_; }; -class ErrorStreamCountingObserver : download::DownloadItem::Observer { +class DownloadCountingObserver : public download::DownloadItem::Observer { public: - ErrorStreamCountingObserver() : item_(nullptr), count_(0) {} + DownloadCountingObserver() : item_(nullptr), count_(0) {} - ~ErrorStreamCountingObserver() override { + ~DownloadCountingObserver() override { if (item_) item_->RemoveObserver(this); } void OnDownloadUpdated(download::DownloadItem* download) override { - std::unique_ptr<base::HistogramSamples> samples = - histogram_tester_.GetHistogramSamplesSinceCreation( - "Download.ParallelDownload.CreationFailureReason"); - if (samples->TotalCount() == count_ && completion_closure_) + if (IsCountReached(download, count_) && completion_closure_) std::move(completion_closure_).Run(); } @@ -712,6 +709,8 @@ } void WaitForFinished(download::DownloadItem* item, int count) { + if (IsCountReached(item, count)) + return; item_ = item; count_ = count; if (item_) { @@ -722,13 +721,35 @@ } } + protected: + virtual bool IsCountReached(download::DownloadItem* download, int count) = 0; + private: - base::HistogramTester histogram_tester_; download::DownloadItem* item_; int count_; base::OnceClosure completion_closure_; }; +class ReceivedSlicesCountingObserver : public DownloadCountingObserver { + private: + bool IsCountReached(download::DownloadItem* download, int count) override { + return download->GetReceivedSlices().size() >= static_cast<size_t>(count); + } +}; + +class ErrorStreamCountingObserver : public DownloadCountingObserver { + private: + bool IsCountReached(download::DownloadItem* download, int count) override { + std::unique_ptr<base::HistogramSamples> samples = + histogram_tester_.GetHistogramSamplesSinceCreation( + "Download.ParallelDownload.CreationFailureReason"); + return samples->TotalCount() == count; + } + + private: + base::HistogramTester histogram_tester_; +}; + // Class to wait for a WebContents to kick off a specified number of // navigations. class NavigationStartObserver : public WebContentsObserver { @@ -4326,14 +4347,7 @@ // Verify that if the second request fails after the beginning request takes // over and completes its slice, download should complete. -// Flaky on Windows and Linux. http://crbug.com/1106059 -#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) -#define MAYBE_MiddleSliceDelayedError DISABLED_MiddleSliceDelayedError -#else -#define MAYBE_MiddleSliceDelayedError MiddleSliceDelayedError -#endif - -IN_PROC_BROWSER_TEST_F(ParallelDownloadTest, MAYBE_MiddleSliceDelayedError) { +IN_PROC_BROWSER_TEST_F(ParallelDownloadTest, MiddleSliceDelayedError) { scoped_refptr<TestFileErrorInjector> injector( TestFileErrorInjector::Create(DownloadManagerForShell(shell()))); @@ -4365,6 +4379,12 @@ // Wait for the 3rd request to complete first. test_response_handler()->WaitUntilCompletion(1); + ReceivedSlicesCountingObserver obs; + obs.WaitForFinished(download, 2); + std::vector<download::DownloadItem::ReceivedSlice> received_slices = + download->GetReceivedSlices(); + EXPECT_EQ(received_slices[1].offset + received_slices[1].received_bytes, + 5097152); // Now resume the first request and wait for it to complete. request_pause_handler.Resume(); test_response_handler()->WaitUntilCompletion(2); @@ -4375,6 +4395,7 @@ const TestDownloadResponseHandler::CompletedRequests& completed_requests = test_response_handler()->completed_requests(); EXPECT_EQ(3u, completed_requests.size()); + WaitForCompletion(download); ReadAndVerifyFileContents(parameters.pattern_generator_seed, parameters.size, download->GetTargetFilePath()); }
diff --git a/content/browser/indexed_db/indexed_db_context_impl.cc b/content/browser/indexed_db/indexed_db_context_impl.cc index 38eabbde..e053270 100644 --- a/content/browser/indexed_db/indexed_db_context_impl.cc +++ b/content/browser/indexed_db/indexed_db_context_impl.cc
@@ -138,11 +138,11 @@ data_path_(data_path.empty() ? base::FilePath() : data_path.Append(kIndexedDBDirectory)), force_keep_session_state_(false), - quota_manager_proxy_(quota_manager_proxy), + quota_manager_proxy_(std::move(quota_manager_proxy)), clock_(clock), filesystem_proxy_(storage::CreateFilesystemProxy()) { IDB_TRACE("init"); - quota_manager_proxy->RegisterClient( + quota_manager_proxy_->RegisterClient( base::MakeRefCounted<IndexedDBQuotaClient>(this), storage::QuotaClientType::kIndexedDatabase, {blink::mojom::StorageType::kTemporary});
diff --git a/content/browser/indexed_db/indexed_db_context_impl.h b/content/browser/indexed_db/indexed_db_context_impl.h index 65b51285..c0b29f8 100644 --- a/content/browser/indexed_db/indexed_db_context_impl.h +++ b/content/browser/indexed_db/indexed_db_context_impl.h
@@ -232,7 +232,7 @@ // backing stores); the cache will be primed as needed by checking disk. std::set<url::Origin>* GetOriginSet(); - scoped_refptr<base::SequencedTaskRunner> idb_task_runner_; + const scoped_refptr<base::SequencedTaskRunner> idb_task_runner_; IndexedDBDispatcherHost dispatcher_host_; // Bound and accessed on the |idb_task_runner_|. @@ -247,20 +247,20 @@ // If true, nothing (not even session-only data) should be deleted on exit. bool force_keep_session_state_; - scoped_refptr<storage::SpecialStoragePolicy> special_storage_policy_; - scoped_refptr<storage::QuotaManagerProxy> quota_manager_proxy_; + const scoped_refptr<storage::SpecialStoragePolicy> special_storage_policy_; + const scoped_refptr<storage::QuotaManagerProxy> quota_manager_proxy_; std::unique_ptr<std::set<url::Origin>> origin_set_; std::map<url::Origin, int64_t> origin_size_map_; // The set of origins whose storage should be cleared on shutdown. std::set<url::Origin> origins_to_purge_on_shutdown_; - base::Clock* clock_; + base::Clock* const clock_; mojo::ReceiverSet<storage::mojom::IndexedDBControl> receivers_; mojo::ReceiverSet<storage::mojom::IndexedDBControlTest> test_receivers_; base::Optional<mojo::Receiver<storage::mojom::MockFailureInjector>> mock_failure_injector_; mojo::RemoteSet<storage::mojom::IndexedDBObserver> observers_; - std::unique_ptr<storage::FilesystemProxy> filesystem_proxy_; + const std::unique_ptr<storage::FilesystemProxy> filesystem_proxy_; DISALLOW_COPY_AND_ASSIGN(IndexedDBContextImpl); };
diff --git a/content/browser/renderer_host/code_cache_host_impl.cc b/content/browser/renderer_host/code_cache_host_impl.cc index f91b31d3..8f73fd3 100644 --- a/content/browser/renderer_host/code_cache_host_impl.cc +++ b/content/browser/renderer_host/code_cache_host_impl.cc
@@ -7,14 +7,11 @@ #include "base/bind.h" #include "base/callback_helpers.h" #include "base/metrics/histogram_functions.h" +#include "base/strings/utf_string_conversions.h" #include "base/task/post_task.h" #include "base/threading/thread.h" #include "build/build_config.h" -#include "content/browser/cache_storage/cache_storage.h" -#include "content/browser/cache_storage/cache_storage_cache.h" -#include "content/browser/cache_storage/cache_storage_cache_handle.h" #include "content/browser/cache_storage/cache_storage_context_impl.h" -#include "content/browser/cache_storage/cache_storage_manager.h" #include "content/browser/child_process_security_policy_impl.h" #include "content/browser/code_cache/generated_code_cache.h" #include "content/browser/code_cache/generated_code_cache_context.h" @@ -36,9 +33,6 @@ namespace { -void NoOpCacheStorageErrorCallback(CacheStorageCacheHandle cache_handle, - CacheStorageError error) {} - // Code caches use two keys: the URL of requested resource |resource_url| // as the primary key and the origin lock of the renderer that requested this // resource as secondary key. This function returns the origin lock of the @@ -206,23 +200,47 @@ "CodeCacheHostImpl::DidGenerateCacheableMetadataInCacheStorage", TRACE_ID_GLOBAL(trace_id), TRACE_EVENT_FLAG_FLOW_OUT, "url", url.spec()); - scoped_refptr<CacheStorageManager> manager = - cache_storage_context_->CacheManager(); - if (!manager) + if (!cache_storage_context_) return; - scoped_refptr<net::IOBuffer> buf = - base::MakeRefCounted<net::IOBuffer>(data.size()); - if (data.size()) - memcpy(buf->data(), data.data(), data.size()); + mojo::Remote<blink::mojom::CacheStorage> remote; + network::CrossOriginEmbedderPolicy cross_origin_embedder_policy; + DCHECK(cache_storage_context_); + // TODO(enne): replace this direct use of CacheStorageContext with a new + // storage::mojom::CacheStorageControl remote, similar to IndexedDBControl. + cache_storage_context_->AddReceiver( + cross_origin_embedder_policy, mojo::NullRemote(), cache_storage_origin, + CacheStorageOwner::kCacheAPI, remote.BindNewPipeAndPassReceiver()); - CacheStorageHandle cache_storage = manager->OpenCacheStorage( - cache_storage_origin, CacheStorageOwner::kCacheAPI); - cache_storage.value()->OpenCache( - cache_storage_cache_name, trace_id, - base::BindOnce(&CodeCacheHostImpl::OnCacheStorageOpenCallback, - weak_ptr_factory_.GetWeakPtr(), url, - expected_response_time, trace_id, buf, data.size())); + // Call the remote pointer directly so we can pass the remote to the callback + // itself to preserve its lifetime. + auto* raw_remote = remote.get(); + raw_remote->Open( + base::UTF8ToUTF16(cache_storage_cache_name), trace_id, + base::BindOnce( + [](const GURL& url, base::Time expected_response_time, + mojo_base::BigBuffer data, int64_t trace_id, + mojo::Remote<blink::mojom::CacheStorage> preserve_remote_lifetime, + blink::mojom::OpenResultPtr result) { + if (result->is_status()) { + // Silently ignore errors. + return; + } + + mojo::AssociatedRemote<blink::mojom::CacheStorageCache> remote; + remote.Bind(std::move(result->get_cache())); + remote->WriteSideData( + url, expected_response_time, std::move(data), trace_id, + base::BindOnce( + [](mojo::Remote<blink::mojom::CacheStorage> + preserve_remote_lifetime, + CacheStorageError error) { + // Silently ignore errors. + }, + std::move(preserve_remote_lifetime))); + }, + url, expected_response_time, std::move(data), trace_id, + std::move(remote))); } GeneratedCodeCache* CodeCacheHostImpl::GetCodeCache( @@ -243,24 +261,4 @@ std::move(callback).Run(response_time, std::move(data)); } -void CodeCacheHostImpl::OnCacheStorageOpenCallback( - const GURL& url, - base::Time expected_response_time, - int64_t trace_id, - scoped_refptr<net::IOBuffer> buf, - int buf_len, - CacheStorageCacheHandle cache_handle, - CacheStorageError error) { - TRACE_EVENT_WITH_FLOW1( - "CacheStorage", "CodeCacheHostImpl::OnCacheStorageOpenCallback", - TRACE_ID_GLOBAL(trace_id), - TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT, "url", url.spec()); - if (error != CacheStorageError::kSuccess || !cache_handle.value()) - return; - CacheStorageCache* cache = cache_handle.value(); - cache->WriteSideData( - base::BindOnce(&NoOpCacheStorageErrorCallback, std::move(cache_handle)), - url, expected_response_time, trace_id, buf, buf_len); -} - } // namespace content
diff --git a/content/browser/renderer_host/code_cache_host_impl.h b/content/browser/renderer_host/code_cache_host_impl.h index 39afafe0..39970a8 100644 --- a/content/browser/renderer_host/code_cache_host_impl.h +++ b/content/browser/renderer_host/code_cache_host_impl.h
@@ -21,10 +21,6 @@ class GURL; -namespace net { -class IOBuffer; -} - namespace url { class Origin; } @@ -75,13 +71,6 @@ void OnReceiveCachedCode(FetchCachedCodeCallback callback, const base::Time& response_time, mojo_base::BigBuffer data); - void OnCacheStorageOpenCallback(const GURL& url, - base::Time expected_response_time, - int64_t trace_id, - scoped_refptr<net::IOBuffer> buf, - int buf_len, - CacheStorageCacheHandle cache_handle, - blink::mojom::CacheStorageError error); // Our render process host ID, used to bind to the correct render process. const int render_process_id_;
diff --git a/content/browser/renderer_host/frame_metadata_util.cc b/content/browser/renderer_host/frame_metadata_util.cc deleted file mode 100644 index 06c09529..0000000 --- a/content/browser/renderer_host/frame_metadata_util.cc +++ /dev/null
@@ -1,45 +0,0 @@ -// Copyright (c) 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "content/browser/renderer_host/frame_metadata_util.h" - -#include "ui/gfx/geometry/size_f.h" - -namespace { - -// Used to accomodate finite precision when comparing scaled viewport and -// content widths. While this value may seem large, width=device-width on an N7 -// V1 saw errors of ~0.065 between computed window and content widths. -const float kMobileViewportWidthEpsilon = 0.15f; - -bool HasFixedPageScale(float min_page_scale_factor, - float max_page_scale_factor) { - return min_page_scale_factor == max_page_scale_factor; -} - -bool HasMobileViewport(float page_scale_factor, - const gfx::SizeF& scrollable_viewport_size, - const gfx::SizeF& root_layer_size) { - float window_width_dip = page_scale_factor * scrollable_viewport_size.width(); - float content_width_css = root_layer_size.width(); - return content_width_css <= window_width_dip + kMobileViewportWidthEpsilon; -} - -} // namespace - -namespace content { - -bool IsMobileOptimizedFrame(float page_scale_factor, - float min_page_scale_factor, - float max_page_scale_factor, - const gfx::SizeF& scrollable_viewport_size, - const gfx::SizeF& root_layer_size) { - bool has_mobile_viewport = HasMobileViewport( - page_scale_factor, scrollable_viewport_size, root_layer_size); - bool has_fixed_page_scale = - HasFixedPageScale(min_page_scale_factor, max_page_scale_factor); - return has_fixed_page_scale || has_mobile_viewport; -} - -} // namespace content
diff --git a/content/browser/renderer_host/frame_metadata_util.h b/content/browser/renderer_host/frame_metadata_util.h deleted file mode 100644 index dfa4585..0000000 --- a/content/browser/renderer_host/frame_metadata_util.h +++ /dev/null
@@ -1,30 +0,0 @@ -// Copyright (c) 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CONTENT_BROWSER_RENDERER_HOST_FRAME_METADATA_UTIL_H_ -#define CONTENT_BROWSER_RENDERER_HOST_FRAME_METADATA_UTIL_H_ - -#include "content/common/content_export.h" - -namespace gfx { -class SizeF; -} - -namespace content { - -// Decides whether frame metadata corresponds to mobile-optimized content. -// By default returns |false|, except for the following cases: -// - page that has a width=device-width or narrower viewport -// (indicating that this is a mobile-optimized or responsive web design); -// - page that prevents zooming in or out. -CONTENT_EXPORT bool IsMobileOptimizedFrame( - float page_scale_factor, - float min_page_scale_factor, - float max_page_scale_factor, - const gfx::SizeF& scrollable_viewport_size, - const gfx::SizeF& root_layer_size); - -} // namespace content - -#endif // CONTENT_BROWSER_RENDERER_HOST_FRAME_METADATA_UTIL_H_
diff --git a/content/browser/renderer_host/render_widget_host_browsertest.cc b/content/browser/renderer_host/render_widget_host_browsertest.cc index a30f6944..5af1eb0 100644 --- a/content/browser/renderer_host/render_widget_host_browsertest.cc +++ b/content/browser/renderer_host/render_widget_host_browsertest.cc
@@ -889,16 +889,41 @@ { const cc::RenderFrameMetadata& last_metadata = host()->render_frame_metadata_provider()->LastRenderFrameMetadata(); - EXPECT_TRUE(last_metadata.has_delegated_ink_metadata); + EXPECT_TRUE(last_metadata.delegated_ink_metadata.has_value()); + EXPECT_TRUE( + last_metadata.delegated_ink_metadata.value().delegated_ink_is_hovering); + } + + // Confirm that the state of hover changing on the next produced delegated ink + // metadata results in a new RenderFrameMetadata being sent, with + // |delegated_ink_hovering| false. + SimulateRoutedMouseEvent(blink::WebInputEvent::Type::kMouseMove, 20, 20, + blink::WebInputEvent::kLeftButtonDown, false); + RunUntilInputProcessed(host()); + + { + const cc::RenderFrameMetadata& last_metadata = + host()->render_frame_metadata_provider()->LastRenderFrameMetadata(); + EXPECT_TRUE(last_metadata.delegated_ink_metadata.has_value()); + EXPECT_FALSE( + last_metadata.delegated_ink_metadata.value().delegated_ink_is_hovering); } // Confirm that the flag is set back to false when the JS API isn't called. RunUntilInputProcessed(host()); - { - const cc::RenderFrameMetadata& last_metadata = - host()->render_frame_metadata_provider()->LastRenderFrameMetadata(); - EXPECT_FALSE(last_metadata.has_delegated_ink_metadata); - } + const cc::RenderFrameMetadata& last_metadata = + host()->render_frame_metadata_provider()->LastRenderFrameMetadata(); + EXPECT_FALSE(last_metadata.delegated_ink_metadata.has_value()); + + // Finally, confirm that a change in hovering state (pointerdown to pointerup + // here) without a call to updateInkTrailStartPoint doesn't cause a new + // RenderFrameMetadata to be sent. + SimulateRoutedMouseEvent(blink::WebInputEvent::Type::kMouseMove, 20, 20, 0, + false); + RunUntilInputProcessed(host()); + EXPECT_EQ( + last_metadata, + host()->render_frame_metadata_provider()->LastRenderFrameMetadata()); } } // namespace content
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc index 85be5451..7db7877 100644 --- a/content/browser/renderer_host/render_widget_host_view_android.cc +++ b/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -52,7 +52,6 @@ #include "content/browser/renderer_host/compositor_impl_android.h" #include "content/browser/renderer_host/delegated_frame_host_client_android.h" #include "content/browser/renderer_host/display_util.h" -#include "content/browser/renderer_host/frame_metadata_util.h" #include "content/browser/renderer_host/input/input_router.h" #include "content/browser/renderer_host/input/synthetic_gesture_target_android.h" #include "content/browser/renderer_host/input/touch_selection_controller_client_manager_android.h" @@ -423,12 +422,8 @@ is_transparent = false; } - bool is_mobile_optimized = IsMobileOptimizedFrame( - metadata.page_scale_factor, metadata.min_page_scale_factor, - metadata.max_page_scale_factor, metadata.scrollable_viewport_size, - metadata.root_layer_size); - - gesture_provider_.SetDoubleTapSupportForPageEnabled(!is_mobile_optimized); + gesture_provider_.SetDoubleTapSupportForPageEnabled( + !metadata.is_mobile_optimized); float dip_scale = view_.GetDipScale(); gfx::SizeF root_layer_size_dip = metadata.root_layer_size;
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 a516ed1..d4b50bcb7 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
@@ -6718,6 +6718,15 @@ return point; } + void ClearDelegatedInkPoint() { delegated_ink_point_.reset(); } + + void ResetPrediction() override { prediction_reset_ = true; } + bool GetPredictionState() { + bool state = prediction_reset_; + prediction_reset_ = false; + return state; + } + void FlushForTesting() { receiver_.FlushForTesting(); } void ResetReceiver() { receiver_.reset(); } @@ -6726,6 +6735,7 @@ private: mojo::Receiver<viz::mojom::DelegatedInkPointRenderer> receiver_; base::Optional<viz::DelegatedInkPoint> delegated_ink_point_; + bool prediction_reset_ = false; }; // MockCompositor class binds the mojo interfaces so that the ink points are @@ -6756,97 +6766,136 @@ }; enum TestEvent { kMouseEvent, kTouchEvent }; +enum HoveringState { kHovering, kNotHovering }; -class DelegatedInkPointTest : public RenderWidgetHostViewAuraTest, - public testing::WithParamInterface<TestEvent> { +class DelegatedInkPointTest + : public RenderWidgetHostViewAuraTest, + public testing::WithParamInterface<std::tuple<TestEvent, HoveringState>> { public: DelegatedInkPointTest() = default; + + void SetUp() override { + RenderWidgetHostViewAuraTest::SetUp(); + + InitViewForFrame(nullptr); + aura_test_helper_->GetTestScreen()->SetDeviceScaleFactor(1.0f); + + real_compositor_ = view_->GetNativeView()->layer()->GetCompositor(); + compositor_ = std::make_unique<MockCompositor>( + aura_test_helper_->GetHost()->compositor()); + view_->GetNativeView()->layer()->SetCompositorForTesting(compositor_.get()); + } + + void TearDown() override { + // Restore the view's compositor to the old value so it no longer references + // the MockCompositor that is about to be destructed. This also ensures + // that the view can be properly destroyed by TearDown(). + view_->GetNativeView()->layer()->SetCompositorForTesting(real_compositor_); + compositor_.reset(); + RenderWidgetHostViewAuraTest::TearDown(); + } + + TestEvent GetEventParam() { return std::get<0>(GetParam()); } + HoveringState GetHoverParam() { return std::get<1>(GetParam()); } + + void SetInkMetadataFlagOnRenderFrameMetadata(bool delegated_ink) { + cc::RenderFrameMetadata metadata; + if (delegated_ink) { + metadata.delegated_ink_metadata = cc::DelegatedInkBrowserMetadata( + GetHoverParam() == HoveringState::kHovering); + } + view_->SetRenderFrameMetadata(metadata); + } + + void SendEvent(bool match_test_hovering_state, + gfx::PointF point, + base::TimeTicks timestamp = ui::EventTimeForNow()) { + if (GetEventParam() == TestEvent::kTouchEvent) { + ui::EventPointerType pointer_type = ui::EventPointerType::kTouch; + if (GetHoverParam() == HoveringState::kHovering) + pointer_type = ui::EventPointerType::kPen; + + // Touch needs a pressed event first to properly handle future move + // events. + SendTouchPress(pointer_type); + + ui::TouchEvent touch_event(ui::ET_TOUCH_MOVED, point, point, timestamp, + ui::PointerDetails(pointer_type, 0)); + if ((GetHoverParam() == HoveringState::kHovering && + match_test_hovering_state) || + (GetHoverParam() == HoveringState::kNotHovering && + !match_test_hovering_state)) { + touch_event.set_hovering(true); + } + view_->OnTouchEvent(&touch_event); + } else { + int flags = match_test_hovering_state ? 0 : ui::EF_LEFT_MOUSE_BUTTON; + if (GetHoverParam() == HoveringState::kNotHovering) + flags = match_test_hovering_state ? ui::EF_LEFT_MOUSE_BUTTON : 0; + ui::MouseEvent mouse_event(ui::ET_MOUSE_MOVED, point, point, timestamp, + flags, 0); + view_->OnMouseEvent(&mouse_event); + } + } + + MockCompositor* compositor() { return compositor_.get(); } + + private: + void SendTouchPress(ui::EventPointerType pointer_type) { + DCHECK(GetEventParam() == TestEvent::kTouchEvent); + if (sent_touch_press_) + return; + + // Location of the point doesn't matter, chosen arbitrarily. + ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::PointF(15, 15), + gfx::PointF(15, 15), ui::EventTimeForNow(), + ui::PointerDetails(pointer_type, 0)); + if (GetHoverParam() == HoveringState::kHovering) + press.set_hovering(true); + + view_->OnTouchEvent(&press); + sent_touch_press_ = true; + } + + // Touch events are ignored if a press isn't sent first, so use this to track + // if we have already sent a touch press event yet or not. + bool sent_touch_press_ = false; + + // The real compositor that was contained by the |view_| and must be replaced + // before tear down, and the mock compositor used for getting the delegated + // ink points. + ui::Compositor* real_compositor_; + std::unique_ptr<MockCompositor> compositor_; }; -INSTANTIATE_TEST_SUITE_P(DelegatedInkTrails, - DelegatedInkPointTest, - testing::Values(TestEvent::kMouseEvent, - TestEvent::kTouchEvent)); +INSTANTIATE_TEST_SUITE_P( + DelegatedInkTrails, + DelegatedInkPointTest, + testing::Combine(testing::Values(TestEvent::kMouseEvent, + TestEvent::kTouchEvent), + testing::Values(HoveringState::kHovering, + HoveringState::kNotHovering))); // Tests to confirm that input events are correctly forwarded to the UI // Compositor when DelegatedInkTrails should be drawn, and stops forwarding when // they no longer should be drawn. TEST_P(DelegatedInkPointTest, EventForwardedToCompositor) { - InitViewForFrame(nullptr); - aura_test_helper_->GetTestScreen()->SetDeviceScaleFactor(1.0f); - - ui::Compositor* old_compositor = - view_->GetNativeView()->layer()->GetCompositor(); - MockCompositor compositor(aura_test_helper_->GetHost()->compositor()); - view_->GetNativeView()->layer()->SetCompositorForTesting(&compositor); - // First confirm that the flag is false by default and the point is not sent. - if (GetParam() == TestEvent::kTouchEvent) { - // Touch needs a pressed event first to properly handle future move events. - ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::PointF(15, 15), - gfx::PointF(15, 15), ui::EventTimeForNow(), - ui::PointerDetails(ui::EventPointerType::kTouch, 0)); - view_->OnTouchEvent(&press); - - ui::TouchEvent touch_event( - ui::ET_TOUCH_MOVED, gfx::PointF(20, 20), gfx::PointF(20, 20), - ui::EventTimeForNow(), - ui::PointerDetails(ui::EventPointerType::kTouch, 0)); - view_->OnTouchEvent(&touch_event); - } else { - ui::MouseEvent mouse_event(ui::ET_MOUSE_MOVED, gfx::PointF(20, 20), - gfx::PointF(20, 20), ui::EventTimeForNow(), 0, - 0); - view_->OnMouseEvent(&mouse_event); - } + SendEvent(true, gfx::PointF(15, 15)); MockDelegatedInkPointRenderer* delegated_ink_point_renderer = - compositor.delegated_ink_point_renderer(); + compositor()->delegated_ink_point_renderer(); EXPECT_FALSE(delegated_ink_point_renderer); // Then set it to true and confirm that the DelegatedInkPointRenderer is - // initialized and the connection is made. - { - cc::RenderFrameMetadata metadata; - metadata.has_delegated_ink_metadata = true; - view_->SetRenderFrameMetadata(metadata); - } + // initialized, the connection is made and the point makes it to the renderer. + SetInkMetadataFlagOnRenderFrameMetadata(true); viz::DelegatedInkPoint expected_point(gfx::PointF(10, 10), base::TimeTicks::Now()); + SendEvent(true, expected_point.point(), expected_point.timestamp()); - if (GetParam() == TestEvent::kTouchEvent) { - ui::TouchEvent touch_event( - ui::ET_TOUCH_MOVED, expected_point.point(), expected_point.point(), - expected_point.timestamp(), - ui::PointerDetails(ui::EventPointerType::kTouch, 0)); - view_->OnTouchEvent(&touch_event); - } else { - ui::MouseEvent mouse_event(ui::ET_MOUSE_MOVED, expected_point.point(), - expected_point.point(), - expected_point.timestamp(), 0, 0); - view_->OnMouseEvent(&mouse_event); - } - delegated_ink_point_renderer = compositor.delegated_ink_point_renderer(); - + delegated_ink_point_renderer = compositor()->delegated_ink_point_renderer(); EXPECT_TRUE(delegated_ink_point_renderer); - EXPECT_FALSE(delegated_ink_point_renderer->HasDelegatedInkPoint()); - - // Now send a point and confirm it gets all the way to the - // DelegatedInkPointRenderer. - expected_point = - viz::DelegatedInkPoint(gfx::PointF(30, 30), base::TimeTicks::Now()); - if (GetParam() == TestEvent::kTouchEvent) { - ui::TouchEvent touch_event( - ui::ET_TOUCH_MOVED, expected_point.point(), expected_point.point(), - expected_point.timestamp(), - ui::PointerDetails(ui::EventPointerType::kTouch, 0)); - view_->OnTouchEvent(&touch_event); - } else { - ui::MouseEvent mouse_event(ui::ET_MOUSE_MOVED, expected_point.point(), - expected_point.point(), - expected_point.timestamp(), 0, 0); - view_->OnMouseEvent(&mouse_event); - } delegated_ink_point_renderer->FlushForTesting(); EXPECT_TRUE(delegated_ink_point_renderer->HasDelegatedInkPoint()); @@ -6862,16 +6911,7 @@ gfx::PointF unscaled_point(15, 15); base::TimeTicks unscaled_time = base::TimeTicks::Now(); - if (GetParam() == TestEvent::kTouchEvent) { - ui::TouchEvent touch_event( - ui::ET_TOUCH_MOVED, unscaled_point, unscaled_point, unscaled_time, - ui::PointerDetails(ui::EventPointerType::kTouch, 0)); - view_->OnTouchEvent(&touch_event); - } else { - ui::MouseEvent mouse_event(ui::ET_MOUSE_MOVED, unscaled_point, - unscaled_point, unscaled_time, 0, 0); - view_->OnMouseEvent(&mouse_event); - } + SendEvent(true, unscaled_point, unscaled_time); delegated_ink_point_renderer->FlushForTesting(); unscaled_point.Scale(scale); @@ -6882,73 +6922,33 @@ EXPECT_EQ(expected_point.point(), actual_point.point()); EXPECT_EQ(expected_point.timestamp(), actual_point.timestamp()); - // Finally, confirm that points aren't sent whenever the flag is changed back - // to false. - { - cc::RenderFrameMetadata metadata; - metadata.has_delegated_ink_metadata = false; - view_->SetRenderFrameMetadata(metadata); - } + // Confirm that prediction is reset when the API is no longer being used and + // |delegated_ink_metadata| is not set. + SetInkMetadataFlagOnRenderFrameMetadata(false); - if (GetParam() == TestEvent::kTouchEvent) { - ui::TouchEvent touch_event( - ui::ET_TOUCH_MOVED, gfx::PointF(25, 25), gfx::PointF(25, 25), - ui::EventTimeForNow(), - ui::PointerDetails(ui::EventPointerType::kTouch, 0)); - view_->OnTouchEvent(&touch_event); - } else { - ui::MouseEvent mouse_event(ui::ET_MOUSE_MOVED, gfx::PointF(25, 25), - gfx::PointF(25, 25), ui::EventTimeForNow(), 0, - 0); - view_->OnMouseEvent(&mouse_event); - } + SendEvent(true, gfx::PointF(25, 25)); delegated_ink_point_renderer->FlushForTesting(); EXPECT_FALSE(delegated_ink_point_renderer->HasDelegatedInkPoint()); + EXPECT_TRUE(delegated_ink_point_renderer->GetPredictionState()); - // Restore the view's compositor to the old value so it no longer references - // the MockCompositor that is about to go out of scope. This also ensures - // that the view can be properly destroyed by TearDownEnvironment(). - view_->GetNativeView()->layer()->SetCompositorForTesting(old_compositor); + // Finally, confirm that nothing is sent after the prediction has been reset + // when the delegated ink flag on the render frame metadata is false. + SendEvent(true, gfx::PointF(46, 46)); + delegated_ink_point_renderer->FlushForTesting(); + + EXPECT_FALSE(delegated_ink_point_renderer->HasDelegatedInkPoint()); + EXPECT_FALSE(delegated_ink_point_renderer->GetPredictionState()); } // Confirm that the interface is rebound if the receiver disconnects. TEST_P(DelegatedInkPointTest, MojoInterfaceReboundOnDisconnect) { - InitViewForFrame(nullptr); - aura_test_helper_->GetTestScreen()->SetDeviceScaleFactor(1.0f); - - ui::Compositor* old_compositor = - view_->GetNativeView()->layer()->GetCompositor(); - MockCompositor compositor(aura_test_helper_->GetHost()->compositor()); - view_->GetNativeView()->layer()->SetCompositorForTesting(&compositor); - // First make sure the connection exists. - { - cc::RenderFrameMetadata metadata; - metadata.has_delegated_ink_metadata = true; - view_->SetRenderFrameMetadata(metadata); - } - if (GetParam() == TestEvent::kTouchEvent) { - // Touch needs a pressed event first to properly handle future move events. - ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::PointF(15, 15), - gfx::PointF(15, 15), ui::EventTimeForNow(), - ui::PointerDetails(ui::EventPointerType::kTouch, 0)); - view_->OnTouchEvent(&press); - - ui::TouchEvent touch_event( - ui::ET_TOUCH_MOVED, gfx::PointF(20, 20), gfx::PointF(20, 20), - base::TimeTicks::Now(), - ui::PointerDetails(ui::EventPointerType::kTouch, 0)); - view_->OnTouchEvent(&touch_event); - } else { - ui::MouseEvent mouse_event(ui::ET_MOUSE_MOVED, gfx::PointF(20, 20), - gfx::PointF(20, 20), base::TimeTicks::Now(), 0, - 0); - view_->OnMouseEvent(&mouse_event); - } + SetInkMetadataFlagOnRenderFrameMetadata(true); + SendEvent(true, gfx::PointF(15, 15)); MockDelegatedInkPointRenderer* delegated_ink_point_renderer = - compositor.delegated_ink_point_renderer(); + compositor()->delegated_ink_point_renderer(); EXPECT_TRUE(delegated_ink_point_renderer); EXPECT_TRUE(delegated_ink_point_renderer->ReceiverIsBound()); @@ -6960,28 +6960,51 @@ EXPECT_FALSE(delegated_ink_point_renderer->ReceiverIsBound()); // Confirm that it now gets reconnected correctly. - if (GetParam() == TestEvent::kTouchEvent) { - ui::TouchEvent touch_event( - ui::ET_TOUCH_MOVED, gfx::PointF(25, 25), gfx::PointF(25, 25), - base::TimeTicks::Now(), - ui::PointerDetails(ui::EventPointerType::kTouch, 0)); - view_->OnTouchEvent(&touch_event); - } else { - ui::MouseEvent mouse_event(ui::ET_MOUSE_MOVED, gfx::PointF(25, 25), - gfx::PointF(25, 25), base::TimeTicks::Now(), 0, - 0); - view_->OnMouseEvent(&mouse_event); - } + SendEvent(true, gfx::PointF(25, 25)); - delegated_ink_point_renderer = compositor.delegated_ink_point_renderer(); + delegated_ink_point_renderer = compositor()->delegated_ink_point_renderer(); EXPECT_TRUE(delegated_ink_point_renderer); EXPECT_TRUE(delegated_ink_point_renderer->ReceiverIsBound()); +} - // Restore the view's compositor to the old value so it no longer references - // the MockCompositor that is about to go out of scope. This also ensures - // that the view can be properly destroyed by TearDownEnvironment(). - view_->GetNativeView()->layer()->SetCompositorForTesting(old_compositor); +// Test to confirm that forwarding points to viz will stop and prediction is +// reset if the state of hovering differs between what is expected and the +// received points. +TEST_P(DelegatedInkPointTest, StopForwardingOnHoverStateChange) { + // First send a point and make sure it makes it to the renderer. + SetInkMetadataFlagOnRenderFrameMetadata(true); + SendEvent(true, gfx::PointF(15, 15)); + + MockDelegatedInkPointRenderer* delegated_ink_point_renderer = + compositor()->delegated_ink_point_renderer(); + EXPECT_TRUE(delegated_ink_point_renderer); + delegated_ink_point_renderer->FlushForTesting(); + + EXPECT_TRUE(delegated_ink_point_renderer->HasDelegatedInkPoint()); + delegated_ink_point_renderer->ClearDelegatedInkPoint(); + + // Now send a point that doesn't match the state of hovering on the metadata + // to confirm that it isn't sent and ResetPrediction is called. + SendEvent(false, gfx::PointF(20, 20)); + delegated_ink_point_renderer->FlushForTesting(); + + EXPECT_FALSE(delegated_ink_point_renderer->HasDelegatedInkPoint()); + EXPECT_TRUE(delegated_ink_point_renderer->GetPredictionState()); + + // Send another that doesn't match to confirm the end trail point is only sent + // once. + SendEvent(false, gfx::PointF(25, 25)); + delegated_ink_point_renderer->FlushForTesting(); + EXPECT_FALSE(delegated_ink_point_renderer->HasDelegatedInkPoint()); + + // Send one that does match again to confirm that points will start sending + // again if the hovering state starts matching again. + SendEvent(true, gfx::PointF(30, 30)); + delegated_ink_point_renderer->FlushForTesting(); + + EXPECT_TRUE(delegated_ink_point_renderer->HasDelegatedInkPoint()); + EXPECT_FALSE(delegated_ink_point_renderer->GetPredictionState()); } } // namespace content
diff --git a/content/browser/renderer_host/render_widget_host_view_event_handler.cc b/content/browser/renderer_host/render_widget_host_view_event_handler.cc index b7951f0..69d909a 100644 --- a/content/browser/renderer_host/render_widget_host_view_event_handler.cc +++ b/content/browser/renderer_host/render_widget_host_view_event_handler.cc
@@ -364,10 +364,13 @@ } void RenderWidgetHostViewEventHandler::ForwardDelegatedInkPoint( - ui::LocatedEvent* event) { + ui::LocatedEvent* event, + bool hovering) { const cc::RenderFrameMetadata& last_metadata = host_->render_frame_metadata_provider()->LastRenderFrameMetadata(); - if (last_metadata.has_delegated_ink_metadata) { + if (last_metadata.delegated_ink_metadata.has_value() && + hovering == last_metadata.delegated_ink_metadata.value() + .delegated_ink_is_hovering) { if (!delegated_ink_point_renderer_.is_bound()) { ui::Compositor* compositor = window_ && window_->layer() ? window_->layer()->GetCompositor() @@ -402,6 +405,16 @@ // DrawAndSwap() is called, allowing more points to be drawn as part of // the delegated ink trail, and thus reducing user perceived latency. delegated_ink_point_renderer_->StoreDelegatedInkPoint(delegated_ink_point); + ended_delegated_ink_trail_ = false; + } else if (delegated_ink_point_renderer_.is_bound() && + !ended_delegated_ink_trail_) { + // Let viz know that the most recent point it received from us is probably + // the last point the user is inking, so it shouldn't predict anything + // beyond it. + TRACE_EVENT_INSTANT0("input", "Delegated ink trail ended", + TRACE_EVENT_SCOPE_THREAD); + delegated_ink_point_renderer_->ResetPrediction(); + ended_delegated_ink_trail_ = true; } } @@ -448,7 +461,9 @@ bool is_selection_popup = NeedsInputGrab(popup_child_host_view_); if (CanRendererHandleEvent(event, mouse_locked_, is_selection_popup) && !(event->flags() & ui::EF_FROM_TOUCH)) { - ForwardDelegatedInkPoint(event); + bool hovering = (event->type() ^ ui::ET_MOUSE_DRAGGED) && + (event->type() ^ ui::ET_MOUSE_PRESSED); + ForwardDelegatedInkPoint(event, hovering); // Confirm existing composition text on mouse press, to make sure // the input caret won't be moved with an ongoing composition text. @@ -573,7 +588,7 @@ if (handled) return; - ForwardDelegatedInkPoint(event); + ForwardDelegatedInkPoint(event, event->hovering()); if (had_no_pointer) delegate_->selection_controller_client()->OnTouchDown();
diff --git a/content/browser/renderer_host/render_widget_host_view_event_handler.h b/content/browser/renderer_host/render_widget_host_view_event_handler.h index abd253b1..24d7ad02 100644 --- a/content/browser/renderer_host/render_widget_host_view_event_handler.h +++ b/content/browser/renderer_host/render_widget_host_view_event_handler.h
@@ -256,7 +256,7 @@ // Forward the location and timestamp of the event to viz if a delegated ink // trail is requested. - void ForwardDelegatedInkPoint(ui::LocatedEvent* event); + void ForwardDelegatedInkPoint(ui::LocatedEvent* event, bool hovering); // Flush the remote for testing purposes. void FlushForTest() { delegated_ink_point_renderer_.FlushForTesting(); } @@ -327,6 +327,13 @@ // support the delegated ink trails feature. mojo::Remote<viz::mojom::DelegatedInkPointRenderer> delegated_ink_point_renderer_; + // Used to know if we have already told viz to reset prediction because the + // final point of the delegated ink trail has been sent. True when prediction + // has already been reset for the most recent trail, false otherwise. This + // flag helps make sure that we don't send more IPCs than necessary to viz to + // reset prediction. Sending extra IPCs wouldn't impact correctness, but can + // impact performance due to the IPC overhead. + bool ended_delegated_ink_trail_ = false; DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewEventHandler); };
diff --git a/content/browser/webauth/authenticator_common.cc b/content/browser/webauth/authenticator_common.cc index 8b53b86..477ed64 100644 --- a/content/browser/webauth/authenticator_common.cc +++ b/content/browser/webauth/authenticator_common.cc
@@ -195,7 +195,7 @@ const std::string& client_data_json, const blink::mojom::PublicKeyCredentialRequestOptionsPtr& options, base::Optional<std::string> app_id, - bool is_incognito) { + bool is_off_the_record) { device::CtapGetAssertionRequest request_parameter(options->relying_party_id, client_data_json); @@ -219,7 +219,7 @@ if (options->large_blob_write) { request_parameter.large_blob_key = true; } - request_parameter.is_incognito_mode = is_incognito; + request_parameter.is_off_the_record_context = is_off_the_record; return request_parameter; } @@ -984,7 +984,7 @@ } make_credential_options_->large_blob_support = options->large_blob_enable; ctap_make_credential_request_->app_id = std::move(appid_exclude); - ctap_make_credential_request_->is_incognito_mode = + ctap_make_credential_request_->is_off_the_record_context = browser_context()->IsOffTheRecord(); // On dual protocol CTAP2/U2F devices, force credential creation over U2F. ctap_make_credential_request_->is_u2f_only = origin_is_crypto_token_extension;
diff --git a/device/fido/ctap_get_assertion_request.h b/device/fido/ctap_get_assertion_request.h index 7d4245f..fcde764 100644 --- a/device/fido/ctap_get_assertion_request.h +++ b/device/fido/ctap_get_assertion_request.h
@@ -126,9 +126,13 @@ bool large_blob_read = false; base::Optional<std::vector<uint8_t>> large_blob_write; - bool is_incognito_mode = false; + // Instructs the request handler only to dispatch this request via U2F. bool is_u2f_only = false; + // Indicates whether the request was created in an off-the-record + // BrowserContext (e.g. Incognito or Guest mode in Chrome). + bool is_off_the_record_context = false; + base::Optional<AndroidClientDataExtensionInput> android_client_data_ext; };
diff --git a/device/fido/ctap_make_credential_request.h b/device/fido/ctap_make_credential_request.h index 5e09461..6688fce 100644 --- a/device/fido/ctap_make_credential_request.h +++ b/device/fido/ctap_make_credential_request.h
@@ -79,10 +79,12 @@ // the new credential through the "largeBlobKey" extension. bool large_blob_key = false; - // If true, instruct the request handler only to dispatch this request via - // U2F. + // Instructs the request handler only to dispatch this request via U2F. bool is_u2f_only = false; - bool is_incognito_mode = false; + + // Indicates whether the request was created in an off-the-record + // BrowserContext (e.g. Chrome Incognito mode). + bool is_off_the_record_context = false; std::vector<PublicKeyCredentialDescriptor> exclude_list; base::Optional<std::vector<uint8_t>> pin_auth;
diff --git a/device/fido/fido_request_handler_base.h b/device/fido/fido_request_handler_base.h index b14edf8..8ccb918 100644 --- a/device/fido/fido_request_handler_base.h +++ b/device/fido/fido_request_handler_base.h
@@ -93,6 +93,10 @@ // This allows the observer to distinguish it from other // authenticators. std::string win_native_api_authenticator_id; + + // Indicates whether the request is occurring in an off-the-record + // BrowserContext (e.g. Chrome Incognito mode). + bool is_off_the_record_context = false; }; class COMPONENT_EXPORT(DEVICE_FIDO) Observer {
diff --git a/device/fido/get_assertion_request_handler.cc b/device/fido/get_assertion_request_handler.cc index 975d3e88..9dbc4d4 100644 --- a/device/fido/get_assertion_request_handler.cc +++ b/device/fido/get_assertion_request_handler.cc
@@ -298,6 +298,8 @@ FidoRequestHandlerBase::RequestType::kGetAssertion; transport_availability_info().has_empty_allow_list = request_.allow_list.empty(); + transport_availability_info().is_off_the_record_context = + request_.is_off_the_record_context; if (request_.allow_list.empty()) { // Resident credential requests always involve user verification.
diff --git a/device/fido/make_credential_request_handler.cc b/device/fido/make_credential_request_handler.cc index 9ca2966..9cb23a7 100644 --- a/device/fido/make_credential_request_handler.cc +++ b/device/fido/make_credential_request_handler.cc
@@ -373,6 +373,8 @@ transport_availability_info().request_type = FidoRequestHandlerBase::RequestType::kMakeCredential; + transport_availability_info().is_off_the_record_context = + request_.is_off_the_record_context; Start(); }
diff --git a/device/fido/win/webauthn_api.cc b/device/fido/win/webauthn_api.cc index b148352..44e1097 100644 --- a/device/fido/win/webauthn_api.cc +++ b/device/fido/win/webauthn_api.cc
@@ -268,9 +268,12 @@ if (request.is_u2f_only) { authenticator_attachment = WEBAUTHN_AUTHENTICATOR_ATTACHMENT_CROSS_PLATFORM_U2F_V2; - } else if (request.is_incognito_mode) { - // Disable all platform authenticators in incognito mode. We are going to - // revisit this in crbug/908622. + } else if (request.is_off_the_record_context) { + // Disable all platform authenticators in off-the-record contexts. + // + // TODO(crbug.com/908622): Revisit this if the Windows WebAuthn API supports + // showing an equivalent dialog to what Chrome is displaying before creating + // a platform credential in Incognito mode. authenticator_attachment = WEBAUTHN_AUTHENTICATOR_ATTACHMENT_CROSS_PLATFORM; } else { authenticator_attachment = @@ -378,9 +381,12 @@ if (request.is_u2f_only) { authenticator_attachment = WEBAUTHN_AUTHENTICATOR_ATTACHMENT_CROSS_PLATFORM_U2F_V2; - } else if (request.is_incognito_mode) { - // Disable all platform authenticators in incognito mode. We are going to - // revisit this in crbug/908622. + } else if (request.is_off_the_record_context) { + // Disable all platform authenticators in off-the-record contexts. + // + // TODO(crbug.com/908622): Revisit this if the Windows WebAuthn API supports + // showing an equivalent dialog to what Chrome is displaying before creating + // a platform credential in Incognito mode. authenticator_attachment = WEBAUTHN_AUTHENTICATOR_ATTACHMENT_CROSS_PLATFORM; } else { authenticator_attachment = WEBAUTHN_AUTHENTICATOR_ATTACHMENT_ANY;
diff --git a/extensions/browser/api/feedback_private/feedback_private_api.cc b/extensions/browser/api/feedback_private/feedback_private_api.cc index 6791a87..773682c 100644 --- a/extensions/browser/api/feedback_private/feedback_private_api.cc +++ b/extensions/browser/api/feedback_private/feedback_private_api.cc
@@ -194,7 +194,7 @@ } // static -base::Closure* FeedbackPrivateGetStringsFunction::test_callback_ = NULL; +base::OnceClosure* FeedbackPrivateGetStringsFunction::test_callback_ = nullptr; ExtensionFunction::ResponseAction FeedbackPrivateGetStringsFunction::Run() { auto params = feedback_private::GetStrings::Params::Create(*args_); @@ -209,7 +209,7 @@ params->flow == FeedbackFlow::FEEDBACK_FLOW_SADTABCRASH); if (test_callback_ && !test_callback_->is_null()) - test_callback_->Run(); + std::move(*test_callback_).Run(); return RespondNow( OneArgument(base::Value::FromUniquePtrValue(std::move(dict))));
diff --git a/extensions/browser/api/feedback_private/feedback_private_api.h b/extensions/browser/api/feedback_private/feedback_private_api.h index 29012ae..3336a38 100644 --- a/extensions/browser/api/feedback_private/feedback_private_api.h +++ b/extensions/browser/api/feedback_private/feedback_private_api.h
@@ -81,7 +81,7 @@ FEEDBACKPRIVATE_GETSTRINGS) // Invoke this callback when this function is called - used for testing. - static void set_test_callback(base::Closure* const callback) { + static void set_test_callback(base::OnceClosure* callback) { test_callback_ = callback; } @@ -92,7 +92,7 @@ ResponseAction Run() override; private: - static base::Closure* test_callback_; + static base::OnceClosure* test_callback_; }; class FeedbackPrivateGetUserEmailFunction : public ExtensionFunction {
diff --git a/extensions/browser/api/feedback_private/feedback_private_api_chromeos_unittest.cc b/extensions/browser/api/feedback_private/feedback_private_api_chromeos_unittest.cc index 936993b..86fa9ff3 100644 --- a/extensions/browser/api/feedback_private/feedback_private_api_chromeos_unittest.cc +++ b/extensions/browser/api/feedback_private/feedback_private_api_chromeos_unittest.cc
@@ -127,11 +127,11 @@ scoped_refptr<FeedbackData> actual_feedback_data; EXPECT_CALL(*mock, SendFeedback(_, _)) - .WillOnce(Invoke([&](scoped_refptr<FeedbackData> feedback_data, - FeedbackService::SendFeedbackCallback callback) { - actual_feedback_data = feedback_data; + .WillOnce([&](scoped_refptr<FeedbackData> feedback_data, + FeedbackService::SendFeedbackCallback callback) { + actual_feedback_data = std::move(feedback_data); std::move(callback).Run(true); - })); + }); FeedbackPrivateAPI::GetFactoryInstance() ->Get(browser_context())
diff --git a/extensions/browser/api/feedback_private/feedback_service.cc b/extensions/browser/api/feedback_private/feedback_service.cc index 209908e..c420934e6 100644 --- a/extensions/browser/api/feedback_private/feedback_service.cc +++ b/extensions/browser/api/feedback_private/feedback_service.cc
@@ -8,6 +8,7 @@ #include <string> #include <utility> +#include "base/barrier_closure.h" #include "base/bind.h" #include "base/callback.h" #include "base/memory/weak_ptr.h" @@ -26,9 +27,6 @@ #include "mojo/public/cpp/bindings/remote.h" #endif // BUILDFLAG(IS_CHROMEOS_ASH) -using content::BrowserThread; -using feedback::FeedbackData; - namespace extensions { FeedbackService::FeedbackService(content::BrowserContext* browser_context) @@ -36,52 +34,54 @@ FeedbackService::~FeedbackService() = default; -void FeedbackService::SendFeedback(scoped_refptr<FeedbackData> feedback_data, - SendFeedbackCallback callback) { - send_feedback_callback_ = std::move(callback); - feedback_data->set_locale( - ExtensionsBrowserClient::Get()->GetApplicationLocale()); - feedback_data->set_user_agent(ExtensionsBrowserClient::Get()->GetUserAgent()); +void FeedbackService::SendFeedback( + scoped_refptr<feedback::FeedbackData> feedback_data, + SendFeedbackCallback callback) { + auto* browser_client = ExtensionsBrowserClient::Get(); + feedback_data->set_locale(browser_client->GetApplicationLocale()); + feedback_data->set_user_agent(browser_client->GetUserAgent()); - if (!feedback_data->attached_file_uuid().empty()) { + // CompleteSendFeedback must be called once the attached file and screenshot + // have been read, if applicable. The barrier closure will call this when its + // count of remaining tasks has been reduced to zero (immediately, if none are + // there in the first place). + const bool must_attach_file = !feedback_data->attached_file_uuid().empty(); + const bool must_attach_screenshot = !feedback_data->screenshot_uuid().empty(); + auto barrier_closure = base::BarrierClosure( + (must_attach_file ? 1 : 0) + (must_attach_screenshot ? 1 : 0), + base::BindOnce(&FeedbackService::CompleteSendFeedback, AsWeakPtr(), + feedback_data, std::move(callback))); + + if (must_attach_file) { + auto populate_attached_file = base::BindOnce( + [](scoped_refptr<feedback::FeedbackData> feedback_data, + std::unique_ptr<std::string> data, int64_t /* total_blob_length */) { + feedback_data->set_attached_file_uuid(std::string()); + if (data) + feedback_data->AttachAndCompressFileData(std::move(*data)); + }, + feedback_data); BlobReader::Read(browser_context_, feedback_data->attached_file_uuid(), - base::BindOnce(&FeedbackService::AttachedFileCallback, - AsWeakPtr(), feedback_data)); + std::move(populate_attached_file).Then(barrier_closure)); } - if (!feedback_data->screenshot_uuid().empty()) { + if (must_attach_screenshot) { + auto populate_screenshot = base::BindOnce( + [](scoped_refptr<feedback::FeedbackData> feedback_data, + std::unique_ptr<std::string> data, int64_t /* total_blob_length */) { + feedback_data->set_screenshot_uuid(std::string()); + if (data) + feedback_data->set_image(std::move(*data)); + }, + feedback_data); BlobReader::Read(browser_context_, feedback_data->screenshot_uuid(), - base::BindOnce(&FeedbackService::ScreenshotCallback, - AsWeakPtr(), feedback_data)); + std::move(populate_screenshot).Then(barrier_closure)); } - - CompleteSendFeedback(feedback_data); -} - -void FeedbackService::AttachedFileCallback( - scoped_refptr<feedback::FeedbackData> feedback_data, - std::unique_ptr<std::string> data, - int64_t /* total_blob_length */) { - feedback_data->set_attached_file_uuid(std::string()); - if (data) - feedback_data->AttachAndCompressFileData(std::move(*data)); - - CompleteSendFeedback(feedback_data); -} - -void FeedbackService::ScreenshotCallback( - scoped_refptr<feedback::FeedbackData> feedback_data, - std::unique_ptr<std::string> data, - int64_t /* total_blob_length */) { - feedback_data->set_screenshot_uuid(std::string()); - if (data) - feedback_data->set_image(std::move(*data)); - - CompleteSendFeedback(feedback_data); } void FeedbackService::CompleteSendFeedback( - scoped_refptr<feedback::FeedbackData> feedback_data) { + scoped_refptr<feedback::FeedbackData> feedback_data, + SendFeedbackCallback callback) { // A particular data collection is considered completed if, // a.) The blob URL is invalid - this will either happen because we never had // a URL and never needed to read this data, or that the data read failed @@ -89,31 +89,28 @@ // b.) The associated data object exists, meaning that the data has been read // and the read callback has updated the associated data on the feedback // object. - const bool attached_file_completed = - feedback_data->attached_file_uuid().empty(); - const bool screenshot_completed = feedback_data->screenshot_uuid().empty(); + DCHECK(feedback_data->attached_file_uuid().empty()); + DCHECK(feedback_data->screenshot_uuid().empty()); - if (screenshot_completed && attached_file_completed) { #if BUILDFLAG(IS_CHROMEOS_ASH) - // Send feedback to Assistant server if triggered from Google Assistant. - if (feedback_data->from_assistant()) { - ash::AssistantController::Get()->SendAssistantFeedback( - feedback_data->assistant_debug_info_allowed(), - feedback_data->description(), feedback_data->image()); - } + // Send feedback to Assistant server if triggered from Google Assistant. + if (feedback_data->from_assistant()) { + ash::AssistantController::Get()->SendAssistantFeedback( + feedback_data->assistant_debug_info_allowed(), + feedback_data->description(), feedback_data->image()); + } #endif - // Signal the feedback object that the data from the feedback page has been - // filled - the object will manage sending of the actual report. - feedback_data->OnFeedbackPageDataComplete(); + // Signal the feedback object that the data from the feedback page has been + // filled - the object will manage sending of the actual report. + feedback_data->OnFeedbackPageDataComplete(); - // Sending the feedback will be delayed if the user is offline. - const bool result = !net::NetworkChangeNotifier::IsOffline(); + // Sending the feedback will be delayed if the user is offline. + const bool result = !net::NetworkChangeNotifier::IsOffline(); - // TODO(rkc): Change this once we have FeedbackData/Util refactored to - // report the status of the report being sent. - std::move(send_feedback_callback_).Run(result); - } + // TODO(rkc): Change this once we have FeedbackData/Util refactored to + // report the status of the report being sent. + std::move(callback).Run(result); } } // namespace extensions
diff --git a/extensions/browser/api/feedback_private/feedback_service.h b/extensions/browser/api/feedback_private/feedback_service.h index c0828f6..19d7d2f 100644 --- a/extensions/browser/api/feedback_private/feedback_service.h +++ b/extensions/browser/api/feedback_private/feedback_service.h
@@ -39,20 +39,10 @@ SendFeedbackCallback callback); private: - // Callbacks to receive blob data. - void AttachedFileCallback(scoped_refptr<feedback::FeedbackData> feedback_data, - std::unique_ptr<std::string> data, - int64_t total_blob_length); - void ScreenshotCallback(scoped_refptr<feedback::FeedbackData> feedback_data, - std::unique_ptr<std::string> data, - int64_t total_blob_length); - // Checks if we have read all the blobs we need to; signals the feedback // data object once all the requisite data has been populated. - void CompleteSendFeedback( - scoped_refptr<feedback::FeedbackData> feedback_data); - - SendFeedbackCallback send_feedback_callback_; + void CompleteSendFeedback(scoped_refptr<feedback::FeedbackData> feedback_data, + SendFeedbackCallback callback); content::BrowserContext* browser_context_;
diff --git a/extensions/browser/api/runtime/runtime_api.cc b/extensions/browser/api/runtime/runtime_api.cc index 59c66e2..7e70eab 100644 --- a/extensions/browser/api/runtime/runtime_api.cc +++ b/extensions/browser/api/runtime/runtime_api.cc
@@ -259,8 +259,8 @@ bool RuntimeAPI::CheckForUpdates( const std::string& extension_id, - const RuntimeAPIDelegate::UpdateCheckCallback& callback) { - return delegate_->CheckForUpdates(extension_id, callback); + RuntimeAPIDelegate::UpdateCheckCallback callback) { + return delegate_->CheckForUpdates(extension_id, std::move(callback)); } void RuntimeAPI::OpenURL(const GURL& update_url) { @@ -645,8 +645,8 @@ ->Get(browser_context()) ->CheckForUpdates( extension_id(), - base::Bind(&RuntimeRequestUpdateCheckFunction::CheckComplete, - this))) { + base::BindOnce(&RuntimeRequestUpdateCheckFunction::CheckComplete, + this))) { return RespondNow(Error(kUpdatesDisabledError)); } return RespondLater();
diff --git a/extensions/browser/api/runtime/runtime_api.h b/extensions/browser/api/runtime/runtime_api.h index 634840d..4d272f8 100644 --- a/extensions/browser/api/runtime/runtime_api.h +++ b/extensions/browser/api/runtime/runtime_api.h
@@ -89,7 +89,7 @@ void ReloadExtension(const std::string& extension_id); bool CheckForUpdates(const std::string& extension_id, - const RuntimeAPIDelegate::UpdateCheckCallback& callback); + RuntimeAPIDelegate::UpdateCheckCallback callback); void OpenURL(const GURL& uninstall_url); bool GetPlatformInfo(api::runtime::PlatformInfo* info); bool RestartDevice(std::string* error_message);
diff --git a/extensions/browser/api/runtime/runtime_api_delegate.h b/extensions/browser/api/runtime/runtime_api_delegate.h index e194d32..04535ae2 100644 --- a/extensions/browser/api/runtime/runtime_api_delegate.h +++ b/extensions/browser/api/runtime/runtime_api_delegate.h
@@ -43,7 +43,8 @@ virtual ~RuntimeAPIDelegate() {} // The callback given to RequestUpdateCheck. - typedef base::Callback<void(const UpdateCheckResult&)> UpdateCheckCallback; + using UpdateCheckCallback = + base::OnceCallback<void(const UpdateCheckResult&)>; // Registers an UpdateObserver on behalf of the runtime API. virtual void AddUpdateObserver(UpdateObserver* observer) = 0; @@ -58,7 +59,7 @@ // are disabled. Otherwise |callback| is called with the result of the // update check. virtual bool CheckForUpdates(const std::string& extension_id, - const UpdateCheckCallback& callback) = 0; + UpdateCheckCallback callback) = 0; // Navigates the browser to a URL on behalf of the runtime API. virtual void OpenURL(const GURL& uninstall_url) = 0;
diff --git a/extensions/browser/api/virtual_keyboard_private/virtual_keyboard_delegate.h b/extensions/browser/api/virtual_keyboard_private/virtual_keyboard_delegate.h index c4d2188..1e82f880 100644 --- a/extensions/browser/api/virtual_keyboard_private/virtual_keyboard_delegate.h +++ b/extensions/browser/api/virtual_keyboard_private/virtual_keyboard_delegate.h
@@ -28,6 +28,9 @@ using OnSetModeCallback = base::OnceCallback<void(bool success)>; + using OnGetClipboardHistoryCallback = + base::Callback<void(base::Value history)>; + // Fetch information about the preferred configuration of the keyboard. On // exit, |settings| is populated with the keyboard configuration if execution // is successful, otherwise it's set to nullptr. @@ -106,6 +109,22 @@ // Sets the bounds of the keyboard window in screen coordinates. virtual bool SetWindowBoundsInScreen(const gfx::Rect& bounds_in_screen) = 0; + // Calls the |get_history_callback| function and passes a value containing the + // current cipboard history items. Only clipboard items which have an id in + // the |item_ids_filter| are included. If the filter is empty then all + // clipboard items are included. + virtual void GetClipboardHistory( + const std::set<std::string>& item_ids_filter, + OnGetClipboardHistoryCallback get_history_callback) = 0; + + // Paste a clipboard item from the clipboard history. Returns whether the + // paste is successful. + virtual bool PasteClipboardItem(const std::string& clipboard_item_id) = 0; + + // Delete a clipboard item from the clipboard history. Returns whether the + // deletion is successful. + virtual bool DeleteClipboardItem(const std::string& clipboard_item_id) = 0; + // Restricts the virtual keyboard IME features. // Returns the values which were updated. virtual api::virtual_keyboard::FeatureRestrictions RestrictFeatures(
diff --git a/extensions/browser/api/virtual_keyboard_private/virtual_keyboard_private_api.cc b/extensions/browser/api/virtual_keyboard_private/virtual_keyboard_private_api.cc index 65876be0..17be1db 100644 --- a/extensions/browser/api/virtual_keyboard_private/virtual_keyboard_private_api.cc +++ b/extensions/browser/api/virtual_keyboard_private/virtual_keyboard_private_api.cc
@@ -32,6 +32,8 @@ const char kSetWindowBoundsInScreenFailed[] = "Setting bounds of the virtual keyboard failed"; const char kUnknownError[] = "Unknown error."; +const char kPasteClipboardItemFailed[] = "Pasting the clipboard item failed"; +const char kDeleteClipboardItemFailed[] = "Deleting the clipboard item failed"; namespace keyboard = api::virtual_keyboard_private; @@ -247,7 +249,27 @@ ExtensionFunction::ResponseAction VirtualKeyboardPrivateGetClipboardHistoryFunction::Run() { - return RespondNow(Error("Not implemented")); + std::unique_ptr<keyboard::GetClipboardHistory::Params> params = + keyboard::GetClipboardHistory::Params::Create(*args_); + EXTENSION_FUNCTION_VALIDATE(params); + std::set<std::string> item_id_filter; + if (params->options.item_ids) { + for (const auto& id : *(params->options.item_ids)) { + item_id_filter.insert(id); + } + } + + delegate()->GetClipboardHistory( + item_id_filter, + base::Bind(&VirtualKeyboardPrivateGetClipboardHistoryFunction:: + OnGetClipboardHistory, + this)); + return did_respond() ? AlreadyResponded() : RespondLater(); +} + +void VirtualKeyboardPrivateGetClipboardHistoryFunction::OnGetClipboardHistory( + base::Value results) { + Respond(OneArgument(std::move(results))); } VirtualKeyboardPrivateGetClipboardHistoryFunction :: @@ -255,7 +277,13 @@ ExtensionFunction::ResponseAction VirtualKeyboardPrivatePasteClipboardItemFunction::Run() { - return RespondNow(Error("Not implemented")); + std::unique_ptr<keyboard::PasteClipboardItem::Params> params = + keyboard::PasteClipboardItem::Params::Create(*args_); + EXTENSION_FUNCTION_VALIDATE(params); + + if (!delegate()->PasteClipboardItem(params->item_id)) + return RespondNow(Error(kPasteClipboardItemFailed)); + return RespondNow(NoArguments()); } VirtualKeyboardPrivatePasteClipboardItemFunction :: @@ -263,7 +291,13 @@ ExtensionFunction::ResponseAction VirtualKeyboardPrivateDeleteClipboardItemFunction::Run() { - return RespondNow(Error("Not implemented")); + std::unique_ptr<keyboard::DeleteClipboardItem::Params> params = + keyboard::DeleteClipboardItem::Params::Create(*args_); + EXTENSION_FUNCTION_VALIDATE(params); + + if (!delegate()->DeleteClipboardItem(params->item_id)) + return RespondNow(Error(kDeleteClipboardItemFailed)); + return RespondNow(NoArguments()); } VirtualKeyboardPrivateDeleteClipboardItemFunction ::
diff --git a/extensions/browser/api/virtual_keyboard_private/virtual_keyboard_private_api_unittest.cc b/extensions/browser/api/virtual_keyboard_private/virtual_keyboard_private_api_unittest.cc index 94ba0036..4ab9b270 100644 --- a/extensions/browser/api/virtual_keyboard_private/virtual_keyboard_private_api_unittest.cc +++ b/extensions/browser/api/virtual_keyboard_private/virtual_keyboard_private_api_unittest.cc
@@ -75,6 +75,16 @@ } const gfx::Rect& GetWindowBounds() { return window_bounds_; } + void GetClipboardHistory( + const std::set<std::string>& item_ids_filter, + OnGetClipboardHistoryCallback get_history_callback) override {} + bool PasteClipboardItem(const std::string& clipboard_item_id) override { + return false; + } + bool DeleteClipboardItem(const std::string& clipboard_item_id) override { + return false; + } + api::virtual_keyboard::FeatureRestrictions RestrictFeatures( const api::virtual_keyboard::RestrictFeatures::Params& params) override { return api::virtual_keyboard::FeatureRestrictions();
diff --git a/extensions/browser/api/web_request/web_request_event_details.h b/extensions/browser/api/web_request/web_request_event_details.h index 64e28d6a..6518c8f 100644 --- a/extensions/browser/api/web_request/web_request_event_details.h +++ b/extensions/browser/api/web_request/web_request_event_details.h
@@ -42,9 +42,6 @@ // other threads, as long as there is no concurrent access. class WebRequestEventDetails { public: - using DeterminedFrameDataCallback = - base::Callback<void(std::unique_ptr<WebRequestEventDetails>)>; - // Create a WebRequestEventDetails with the following keys: // - method // - requestId
diff --git a/extensions/browser/extension_function_histogram_value.h b/extensions/browser/extension_function_histogram_value.h index 9056ec1..635f5f9 100644 --- a/extensions/browser/extension_function_histogram_value.h +++ b/extensions/browser/extension_function_histogram_value.h
@@ -1054,7 +1054,7 @@ WEBVIEWINTERNAL_SETZOOMMODE = 993, WEBVIEWINTERNAL_GETZOOMMODE = 994, LAUNCHERSEARCHPROVIDER_SETSEARCHRESULTS = 995, - DATAREDUCTIONPROXY_CLEARDATASAVINGS = 996, + DELETED_DATAREDUCTIONPROXY_CLEARDATASAVINGS = 996, BLUETOOTHPRIVATE_SETDISCOVERYFILTER = 997, FILESYSTEM_GETVOLUMELIST = 998, NETWORKINGPRIVATE_GETDEVICESTATES = 999, @@ -1147,7 +1147,7 @@ DELETED_EASYUNLOCKPRIVATE_SETUPCONNECTIONSTATUS = 1086, DELETED_EASYUNLOCKPRIVATE_SETUPCONNECTIONDISCONNECT = 1087, DELETED_EASYUNLOCKPRIVATE_SETUPCONNECTIONSEND = 1088, - DATAREDUCTIONPROXY_GETDATAUSAGE = 1089, + DELETED_DATAREDUCTIONPROXY_GETDATAUSAGE = 1089, DELETED_EASYUNLOCKPRIVATE_SETUPCONNECTIONGETDEVICEADDRESS = 1090, TABCAPTURE_CAPTUREOFFSCREENTAB = 1091, LANGUAGESETTINGSPRIVATE_ADDSPELLCHECKWORD = 1092,
diff --git a/extensions/browser/extension_protocols.h b/extensions/browser/extension_protocols.h index 566d095..eaaac71 100644 --- a/extensions/browser/extension_protocols.h +++ b/extensions/browser/extension_protocols.h
@@ -29,8 +29,8 @@ namespace extensions { using ExtensionProtocolTestHandler = - base::Callback<void(base::FilePath* directory_path, - base::FilePath* relative_path)>; + base::RepeatingCallback<void(base::FilePath* directory_path, + base::FilePath* relative_path)>; // Builds HTTP headers for an extension request. Hashes the time to avoid // exposing the exact user installation time of the extension.
diff --git a/extensions/browser/supervised_user_extensions_delegate.h b/extensions/browser/supervised_user_extensions_delegate.h index 4b4e9f4..d8b71cdd 100644 --- a/extensions/browser/supervised_user_extensions_delegate.h +++ b/extensions/browser/supervised_user_extensions_delegate.h
@@ -37,10 +37,9 @@ const extensions::Extension& extension, content::BrowserContext* context) const = 0; - // If the current user is a child, the child user has a custodian/parent, the - // kSupervisedUserInitiatedExtensionInstall feature flag is enabled, and the - // parent has enabled the "Permissions for sites, apps and extensions" toggle, - // then display the Parent Permission Dialog and call + // If the current user is a child, the child user has a custodian/parent, and + // the parent has enabled the "Permissions for sites, apps and extensions" + // toggle, then display the Parent Permission Dialog and call // |parent_permission_callback|. Otherwise, display the Extension Install // Blocked by Parent Dialog and call |error_callback|. The two paths are // mutually exclusive.
diff --git a/extensions/browser/test_runtime_api_delegate.cc b/extensions/browser/test_runtime_api_delegate.cc index 1416d49..5dca065 100644 --- a/extensions/browser/test_runtime_api_delegate.cc +++ b/extensions/browser/test_runtime_api_delegate.cc
@@ -25,9 +25,8 @@ void TestRuntimeAPIDelegate::ReloadExtension(const std::string& extension_id) { } -bool TestRuntimeAPIDelegate::CheckForUpdates( - const std::string& extension_id, - const UpdateCheckCallback& callback) { +bool TestRuntimeAPIDelegate::CheckForUpdates(const std::string& extension_id, + UpdateCheckCallback callback) { return false; }
diff --git a/extensions/browser/test_runtime_api_delegate.h b/extensions/browser/test_runtime_api_delegate.h index 549fc13b..471299a 100644 --- a/extensions/browser/test_runtime_api_delegate.h +++ b/extensions/browser/test_runtime_api_delegate.h
@@ -20,7 +20,7 @@ void RemoveUpdateObserver(UpdateObserver* observer) override; void ReloadExtension(const std::string& extension_id) override; bool CheckForUpdates(const std::string& extension_id, - const UpdateCheckCallback& callback) override; + UpdateCheckCallback callback) override; void OpenURL(const GURL& uninstall_url) override; bool GetPlatformInfo(api::runtime::PlatformInfo* info) override; bool RestartDevice(std::string* error_message) override;
diff --git a/extensions/common/api/_manifest_features.json b/extensions/common/api/_manifest_features.json index e91808d5..6419810 100644 --- a/extensions/common/api/_manifest_features.json +++ b/extensions/common/api/_manifest_features.json
@@ -161,7 +161,7 @@ } ], "host_permissions": { - "channel": "dev", + "channel": "stable", "extension_types": ["extension"], "min_manifest_version": 3 },
diff --git a/extensions/common/permissions/api_permission.h b/extensions/common/permissions/api_permission.h index 04a2e94c..11989d8 100644 --- a/extensions/common/permissions/api_permission.h +++ b/extensions/common/permissions/api_permission.h
@@ -79,7 +79,7 @@ kDeleted_Copresence = 35, kDeleted_CopresencePrivate = 36, kCryptotokenPrivate = 37, - kDataReductionProxy = 38, + kDeleted_DataReductionProxy = 38, // API removed. kDiagnostics = 39, kDeleted_Dial = 40, // API removed. kDebugger = 41,
diff --git a/extensions/renderer/gc_callback.cc b/extensions/renderer/gc_callback.cc index 6f9ae52..f895f96 100644 --- a/extensions/renderer/gc_callback.cc +++ b/extensions/renderer/gc_callback.cc
@@ -21,7 +21,7 @@ : GCCallback(context, object, callback, - base::Closure(), + base::OnceClosure(), std::move(fallback)) {} GCCallback::GCCallback(ScriptContext* context,
diff --git a/extensions/shell/browser/api/runtime/shell_runtime_api_delegate.cc b/extensions/shell/browser/api/runtime/shell_runtime_api_delegate.cc index 039c0c68..b79aa0b9 100644 --- a/extensions/shell/browser/api/runtime/shell_runtime_api_delegate.cc +++ b/extensions/shell/browser/api/runtime/shell_runtime_api_delegate.cc
@@ -35,9 +35,8 @@ ->ReloadExtension(extension_id); } -bool ShellRuntimeAPIDelegate::CheckForUpdates( - const std::string& extension_id, - const UpdateCheckCallback& callback) { +bool ShellRuntimeAPIDelegate::CheckForUpdates(const std::string& extension_id, + UpdateCheckCallback callback) { return false; }
diff --git a/extensions/shell/browser/api/runtime/shell_runtime_api_delegate.h b/extensions/shell/browser/api/runtime/shell_runtime_api_delegate.h index 1691ce34..14a40f1 100644 --- a/extensions/shell/browser/api/runtime/shell_runtime_api_delegate.h +++ b/extensions/shell/browser/api/runtime/shell_runtime_api_delegate.h
@@ -24,7 +24,7 @@ void RemoveUpdateObserver(UpdateObserver* observer) override; void ReloadExtension(const std::string& extension_id) override; bool CheckForUpdates(const std::string& extension_id, - const UpdateCheckCallback& callback) override; + UpdateCheckCallback callback) override; void OpenURL(const GURL& uninstall_url) override; bool GetPlatformInfo(api::runtime::PlatformInfo* info) override; bool RestartDevice(std::string* error_message) override;
diff --git a/extensions/shell/browser/shell_virtual_keyboard_delegate.cc b/extensions/shell/browser/shell_virtual_keyboard_delegate.cc index 8cf32b73..a892f0f 100644 --- a/extensions/shell/browser/shell_virtual_keyboard_delegate.cc +++ b/extensions/shell/browser/shell_virtual_keyboard_delegate.cc
@@ -101,6 +101,24 @@ return false; } +void ShellVirtualKeyboardDelegate::GetClipboardHistory( + const std::set<std::string>& item_ids_filter, + OnGetClipboardHistoryCallback get_history_callback) { + NOTIMPLEMENTED(); +} + +bool ShellVirtualKeyboardDelegate::PasteClipboardItem( + const std::string& clipboard_item_id) { + NOTIMPLEMENTED(); + return false; +} + +bool ShellVirtualKeyboardDelegate::DeleteClipboardItem( + const std::string& clipboard_item_id) { + NOTIMPLEMENTED(); + return false; +} + api::virtual_keyboard::FeatureRestrictions ShellVirtualKeyboardDelegate::RestrictFeatures( const api::virtual_keyboard::RestrictFeatures::Params& params) {
diff --git a/extensions/shell/browser/shell_virtual_keyboard_delegate.h b/extensions/shell/browser/shell_virtual_keyboard_delegate.h index 30e8add..7e78f498 100644 --- a/extensions/shell/browser/shell_virtual_keyboard_delegate.h +++ b/extensions/shell/browser/shell_virtual_keyboard_delegate.h
@@ -46,6 +46,11 @@ bool SetHitTestBounds(const std::vector<gfx::Rect>& bounds) override; bool SetAreaToRemainOnScreen(const gfx::Rect& bounds) override; bool SetWindowBoundsInScreen(const gfx::Rect& bounds_in_screen) override; + void GetClipboardHistory( + const std::set<std::string>& item_ids_filter, + OnGetClipboardHistoryCallback get_history_callback) override; + bool PasteClipboardItem(const std::string& clipboard_item_id) override; + bool DeleteClipboardItem(const std::string& clipboard_item_id) override; api::virtual_keyboard::FeatureRestrictions RestrictFeatures( const api::virtual_keyboard::RestrictFeatures::Params& params) override;
diff --git a/infra/config/generated/commit-queue.cfg b/infra/config/generated/commit-queue.cfg index 3ab5794..fba85473 100644 --- a/infra/config/generated/commit-queue.cfg +++ b/infra/config/generated/commit-queue.cfg
@@ -1051,10 +1051,6 @@ includable_only: true } builders { - name: "chromium/try/linux-layout-tests-fragment-item" - includable_only: true - } - builders { name: "chromium/try/linux-libfuzzer-asan-rel" location_regexp: ".*" location_regexp_exclude: ".+/[+]/docs/.+"
diff --git a/infra/config/generated/cr-buildbucket.cfg b/infra/config/generated/cr-buildbucket.cfg index a1a3490..1956816 100644 --- a/infra/config/generated/cr-buildbucket.cfg +++ b/infra/config/generated/cr-buildbucket.cfg
@@ -19028,11 +19028,11 @@ cipd_version: "refs/heads/master" cmd: "recipes" } - properties: "{\"$build/goma\":{\"rpc_extra_params\":\"?prod\",\"server_host\":\"goma.chromium.org\",\"use_luci_auth\":true},\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"$recipe_engine/isolated\":{\"server\":\"https://isolateserver.appspot.com\"},\"builder_group\":\"chromium.fyi\",\"recipe\":\"chromium\",\"xcode_build_version\":\"12b5044c\"}" + properties: "{\"$build/goma\":{\"rpc_extra_params\":\"?prod\",\"server_host\":\"goma.chromium.org\",\"use_luci_auth\":true},\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"$recipe_engine/isolated\":{\"server\":\"https://isolateserver.appspot.com\"},\"builder_group\":\"chromium.fyi\",\"recipe\":\"chromium\",\"xcode_build_version\":\"12c33\"}" execution_timeout_secs: 36000 caches { - name: "xcode_ios_12b5044c" - path: "xcode_ios_12b5044c.app" + name: "xcode_ios_12c33" + path: "xcode_ios_12c33.app" } build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -36886,7 +36886,7 @@ cipd_version: "refs/heads/master" cmd: "recipes" } - properties: "{\"$build/goma\":{\"rpc_extra_params\":\"?prod\",\"server_host\":\"goma.chromium.org\",\"use_luci_auth\":true},\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"$recipe_engine/isolated\":{\"server\":\"https://isolateserver.appspot.com\"},\"builder_group\":\"tryserver.chromium.mac\",\"recipe\":\"chromium_trybot\",\"xcode_build_version\":\"12b5044c\"}" + properties: "{\"$build/goma\":{\"rpc_extra_params\":\"?prod\",\"server_host\":\"goma.chromium.org\",\"use_luci_auth\":true},\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"$recipe_engine/isolated\":{\"server\":\"https://isolateserver.appspot.com\"},\"builder_group\":\"tryserver.chromium.mac\",\"recipe\":\"chromium_trybot\",\"xcode_build_version\":\"12c33\"}" execution_timeout_secs: 14400 expiration_secs: 7200 caches { @@ -36894,8 +36894,8 @@ path: "win_toolchain" } caches { - name: "xcode_ios_12b5044c" - path: "xcode_ios_12b5044c.app" + name: "xcode_ios_12c33" + path: "xcode_ios_12c33.app" } build_numbers: YES service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -38405,65 +38405,6 @@ } } builders { - name: "linux-layout-tests-fragment-item" - swarming_host: "chromium-swarm.appspot.com" - swarming_tags: "vpython:native-python-wrapper" - dimensions: "builderless:1" - dimensions: "cores:8" - dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-16.04" - dimensions: "pool:luci.chromium.try" - dimensions: "ssd:0" - exe { - cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build" - cipd_version: "refs/heads/master" - cmd: "recipes" - } - properties: "{\"$build/goma\":{\"enable_ats\":true,\"rpc_extra_params\":\"?prod\",\"server_host\":\"goma.chromium.org\",\"use_luci_auth\":true},\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"$recipe_engine/isolated\":{\"server\":\"https://isolateserver.appspot.com\"},\"builder_group\":\"tryserver.chromium.linux\",\"recipe\":\"chromium_trybot\"}" - execution_timeout_secs: 14400 - expiration_secs: 7200 - caches { - name: "win_toolchain" - path: "win_toolchain" - } - build_numbers: YES - service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com" - task_template_canary_percentage { - value: 5 - } - experiments { - key: "chromium.resultdb.result_sink" - value: 100 - } - experiments { - key: "chromium.resultdb.result_sink.junit_tests" - value: 100 - } - experiments { - key: "luci.use_realms" - value: 100 - } - resultdb { - enable: true - bq_exports { - project: "luci-resultdb" - dataset: "chromium" - table: "try_test_results" - test_results {} - } - bq_exports { - project: "luci-resultdb" - dataset: "chromium" - table: "gpu_try_test_results" - test_results { - predicate { - test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test/.+" - } - } - } - } - } - builders { name: "linux-libfuzzer-asan-rel" swarming_host: "chromium-swarm.appspot.com" swarming_tags: "vpython:native-python-wrapper"
diff --git a/infra/config/generated/luci-milo.cfg b/infra/config/generated/luci-milo.cfg index 4583484..6c2f0be 100644 --- a/infra/config/generated/luci-milo.cfg +++ b/infra/config/generated/luci-milo.cfg
@@ -12691,9 +12691,6 @@ name: "buildbucket/luci.chromium.try/linux-layout-tests-edit-ng" } builders { - name: "buildbucket/luci.chromium.try/linux-layout-tests-fragment-item" - } - builders { name: "buildbucket/luci.chromium.try/linux-libfuzzer-asan-rel" } builders { @@ -13575,9 +13572,6 @@ name: "buildbucket/luci.chromium.try/linux-layout-tests-edit-ng" } builders { - name: "buildbucket/luci.chromium.try/linux-layout-tests-fragment-item" - } - builders { name: "buildbucket/luci.chromium.try/linux-libfuzzer-asan-rel" } builders {
diff --git a/infra/config/lib/builders.star b/infra/config/lib/builders.star index e0df630..71571cc 100644 --- a/infra/config/lib/builders.star +++ b/infra/config/lib/builders.star
@@ -141,7 +141,7 @@ # (current default) xc12 gm seed x12a7209 = xcode_enum("12a7209"), # latest Xcode 12 beta version. - x12b5044c = xcode_enum("12b5044c"), + x12c33 = xcode_enum("12c33"), ) ################################################################################
diff --git a/infra/config/subprojects/chromium/ci.star b/infra/config/subprojects/chromium/ci.star index 79ad624..8f4fd0836 100644 --- a/infra/config/subprojects/chromium/ci.star +++ b/infra/config/subprojects/chromium/ci.star
@@ -3601,7 +3601,7 @@ category = "iOS|iOS14", short_name = "sdk14", ), - xcode = xcode.x12b5044c, + xcode = xcode.x12c33, ) ci.fyi_mac_builder(
diff --git a/infra/config/subprojects/chromium/try.star b/infra/config/subprojects/chromium/try.star index 3f7c9eb..ca78e6c 100644 --- a/infra/config/subprojects/chromium/try.star +++ b/infra/config/subprojects/chromium/try.star
@@ -1000,10 +1000,6 @@ ) try_.chromium_linux_builder( - name = "linux-layout-tests-fragment-item", -) - -try_.chromium_linux_builder( name = "linux-libfuzzer-asan-rel", branch_selector = branches.STANDARD_MILESTONE, builderless = not settings.is_master, @@ -1441,7 +1437,7 @@ try_.chromium_mac_ios_builder( name = "ios14-sdk-simulator", - xcode = xcode.x12b5044c, + xcode = xcode.x12c33, ) try_.chromium_updater_mac_builder(
diff --git a/ios/chrome/browser/ui/main/scene_controller.mm b/ios/chrome/browser/ui/main/scene_controller.mm index 8f9184bf..10b25db2 100644 --- a/ios/chrome/browser/ui/main/scene_controller.mm +++ b/ios/chrome/browser/ui/main/scene_controller.mm
@@ -780,9 +780,10 @@ self.sceneState.appState.startupInformation.restoreHelper = nil; } - // If skipping first run and not in Safe Mode, consider showing the default - // browser promo. - if (!firstRun && !self.sceneState.appState.isInSafeMode) { + // If skipping first run, not in Safe Mode, and the launch is not after a + // crash, consider showing the default browser promo. + if (!firstRun && !self.sceneState.appState.isInSafeMode && + !self.sceneState.appState.postCrashLaunch) { // Show the Default Browser promo UI if the user's past behavior fits // the categorization of potentially interested users or if the user is // signed in. Do not show if it is determined that Chrome is already the
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 5722ee0..10c55d15 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 @@ -b60b915f2972861172cffa452c532f272156c14b \ No newline at end of file +783fdce9361239c67ef90da92b63002f8a8a16bb \ 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 6b63eb5..702eb46d 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 @@ -a36ae014977039c35a78904785c67bd626c22541 \ No newline at end of file +88448df52a73ed2e5b6365fe5ca033ed7ee12965 \ 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 900ea257..b3b48157 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 @@ -4eeb8ab3862860db0cfe1a498d0e44c2f1598cf4 \ No newline at end of file +34ae96712865c59413fa82eced04d7e920fc7099 \ 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 3861915..b338de9 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 @@ -072e3c920f7846bdccc1185774a3817b7fea59d5 \ No newline at end of file +0dab37afa9a1369d17b5068d41e8cc506253af5f \ 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 8818ce09..61c4a4b 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 @@ -4b6745b9cd096f46838f3b7478bc5c55a930c748 \ No newline at end of file +d5f1a5422dda86218a2cab42294093707dd993a6 \ 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 89a3ac8..172adcbf 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 @@ -4b137efca014e54188e79070cc96ff176355c1e0 \ No newline at end of file +2b255503b156208d0d5b605adbbc56018a50721f \ 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 886e0c9..d01f6c2 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 @@ -4371fc0f15afd59491a56c50a469017a2646716c \ No newline at end of file +102a6a7b33ff13b2aefc9e4ca4f8fa36b9f04a82 \ 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 67612d9b..a4d1f51 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 @@ -7222a3171cfd678b1da982a0fc37fe0f15a18243 \ No newline at end of file +9b0f42737c92b083515ad729cf51af0143322dbf \ No newline at end of file
diff --git a/ios/third_party/material_components_ios/BUILD.gn b/ios/third_party/material_components_ios/BUILD.gn index 69d2ee5..530b02d 100644 --- a/ios/third_party/material_components_ios/BUILD.gn +++ b/ios/third_party/material_components_ios/BUILD.gn
@@ -235,7 +235,6 @@ "src/components/List/src/MDCBaseCell.h", "src/components/List/src/MDCSelfSizingLayoutAttributes.h", "src/components/List/src/MDCSelfSizingStereoCell.h", - "src/components/List/src/MDCSelfSizingStereoCellImageViewVerticalPosition.h", "src/components/List/src/MaterialList.h", "src/components/List/src/Theming/MDCBaseCell+MaterialTheming.h", "src/components/List/src/Theming/MDCSelfSizingStereoCell+MaterialTheming.h", @@ -1046,7 +1045,6 @@ "src/components/List/src/MDCSelfSizingLayoutAttributes.h", "src/components/List/src/MDCSelfSizingStereoCell.h", "src/components/List/src/MDCSelfSizingStereoCell.m", - "src/components/List/src/MDCSelfSizingStereoCellImageViewVerticalPosition.h", "src/components/List/src/MaterialList.h", "src/components/List/src/Theming/MDCBaseCell+MaterialTheming.h", "src/components/List/src/Theming/MDCBaseCell+MaterialTheming.m",
diff --git a/ios/web/common/features.mm b/ios/web/common/features.mm index 7bd7252..cbf8f6f 100644 --- a/ios/web/common/features.mm +++ b/ios/web/common/features.mm
@@ -43,8 +43,8 @@ const base::Feature kScrollToTextIOS{"ScrollToTextIOS", base::FEATURE_ENABLED_BY_DEFAULT}; -const base::Feature kIOSLegacyTLSInterstitial{ - "IOSLegacyTLSInterstitial", base::FEATURE_DISABLED_BY_DEFAULT}; +const base::Feature kIOSLegacyTLSInterstitial{"IOSLegacyTLSInterstitial", + base::FEATURE_ENABLED_BY_DEFAULT}; const base::Feature kWebViewNativeContextMenu{ "WebViewNativeContextMenu", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/mojo/public/tools/mojom/mojom_parser.py b/mojo/public/tools/mojom/mojom_parser.py index 998304c..999fcff3 100755 --- a/mojo/public/tools/mojom/mojom_parser.py +++ b/mojo/public/tools/mojom/mojom_parser.py
@@ -14,6 +14,7 @@ import codecs import errno import json +import logging import os import os.path import sys @@ -193,48 +194,52 @@ mojom_files_to_parse = dict((os.path.normcase(abs_path), _RebaseAbsolutePath(abs_path, input_root_paths)) for abs_path in mojom_files) + logging.info('Parsing %d .mojom into ASTs', len(mojom_files_to_parse)) abs_paths = dict( (path, abs_path) for abs_path, path in mojom_files_to_parse.items()) - for mojom_abspath, _ in mojom_files_to_parse.items(): + for mojom_abspath in mojom_files_to_parse: with codecs.open(mojom_abspath, encoding='utf-8') as f: ast = parser.Parse(''.join(f.readlines()), mojom_abspath) conditional_features.RemoveDisabledDefinitions(ast, enabled_features) loaded_mojom_asts[mojom_abspath] = ast - invalid_imports = [] - for imp in ast.import_list: - import_abspath = _ResolveRelativeImportPath(imp.import_filename, - input_root_paths) - if allowed_imports and import_abspath not in allowed_imports: - invalid_imports.append(imp.import_filename) - abs_paths[imp.import_filename] = import_abspath - if import_abspath in mojom_files_to_parse: - # This import is in the input list, so we're going to translate it - # into a module below; however it's also a dependency of another input - # module. We retain record of dependencies to help with input - # processing later. - input_dependencies[mojom_abspath].add((import_abspath, - imp.import_filename)) - else: - # We have an import that isn't being parsed right now. It must already - # be parsed and have a module file sitting in a corresponding output - # location. - module_path = _GetModuleFilename(imp.import_filename) - module_abspath = _ResolveRelativeImportPath(module_path, - [output_root_path]) - with open(module_abspath, 'rb') as module_file: - loaded_modules[import_abspath] = module.Module.Load(module_file) + logging.info('Processing dependencies') + for mojom_abspath, ast in loaded_mojom_asts.items(): + invalid_imports = [] + for imp in ast.import_list: + import_abspath = _ResolveRelativeImportPath(imp.import_filename, + input_root_paths) + if allowed_imports and import_abspath not in allowed_imports: + invalid_imports.append(imp.import_filename) - if invalid_imports: - raise ValueError( - '\nThe file %s imports the following files not allowed by build ' - 'dependencies:\n\n%s\n' % (mojom_abspath, - '\n'.join(invalid_imports))) + abs_paths[imp.import_filename] = import_abspath + if import_abspath in mojom_files_to_parse: + # This import is in the input list, so we're going to translate it + # into a module below; however it's also a dependency of another input + # module. We retain record of dependencies to help with input + # processing later. + input_dependencies[mojom_abspath].add( + (import_abspath, imp.import_filename)) + elif import_abspath not in loaded_modules: + # We have an import that isn't being parsed right now. It must already + # be parsed and have a module file sitting in a corresponding output + # location. + module_path = _GetModuleFilename(imp.import_filename) + module_abspath = _ResolveRelativeImportPath(module_path, + [output_root_path]) + with open(module_abspath, 'rb') as module_file: + loaded_modules[import_abspath] = module.Module.Load(module_file) + if invalid_imports: + raise ValueError( + '\nThe file %s imports the following files not allowed by build ' + 'dependencies:\n\n%s\n' % (mojom_abspath, '\n'.join(invalid_imports))) + logging.info('Loaded %d modules from dependencies', len(loaded_modules)) # At this point all transitive imports not listed as inputs have been loaded # and we have a complete dependency tree of the unprocessed inputs. Now we can # load all the inputs, resolving dependencies among them recursively as we go. + logging.info('Ensuring inputs are loaded') num_existing_modules_loaded = len(loaded_modules) for mojom_abspath, mojom_path in mojom_files_to_parse.items(): _EnsureInputLoaded(mojom_abspath, mojom_path, abs_paths, loaded_mojom_asts, @@ -244,6 +249,7 @@ # Now we have fully translated modules for every input and every transitive # dependency. We can dump the modules to disk for other tools to use. + logging.info('Serializeing %d modules', len(mojom_files_to_parse)) for mojom_abspath, mojom_path in mojom_files_to_parse.items(): module_path = os.path.join(output_root_path, _GetModuleFilename(mojom_path)) module_dir = os.path.dirname(module_path) @@ -261,6 +267,11 @@ def Run(command_line): + debug_logging = os.environ.get('MOJOM_PARSER_DEBUG', '0') != '0' + logging.basicConfig(level=logging.DEBUG if debug_logging else logging.WARNING, + format='%(levelname).1s %(relativeCreated)6d %(message)s') + logging.info('Started (%s)', os.path.basename(sys.argv[0])) + arg_parser = argparse.ArgumentParser( description=""" Parses one or more mojom files and produces corresponding module outputs fully @@ -368,6 +379,7 @@ module_metadata = map(lambda kvp: tuple(kvp.split('=')), args.module_metadata) _ParseMojoms(mojom_files, input_roots, output_root, args.enabled_features, module_metadata, allowed_imports) + logging.info('Finished') if __name__ == '__main__':
diff --git a/net/cookies/canonical_cookie.cc b/net/cookies/canonical_cookie.cc index 83d70d4..8bd71640 100644 --- a/net/cookies/canonical_cookie.cc +++ b/net/cookies/canonical_cookie.cc
@@ -788,17 +788,14 @@ CookieAccessResult CanonicalCookie::IsSetPermittedInContext( const GURL& source_url, const CookieOptions& options, - const CookieAccessParams& params) const { - CookieAccessResult access_result; - IsSetPermittedInContext(source_url, options, params, &access_result); - return access_result; -} - -void CanonicalCookie::IsSetPermittedInContext( - const GURL& source_url, - const CookieOptions& options, const CookieAccessParams& params, - CookieAccessResult* access_result) const { + const std::vector<std::string>& cookieable_schemes) const { + CookieAccessResult access_result; + if (!base::Contains(cookieable_schemes, source_url.scheme())) { + access_result.status.AddExclusionReason( + CookieInclusionStatus::EXCLUDE_NONCOOKIEABLE_SCHEME); + } + CookieAccessScheme access_scheme = cookie_util::ProvisionalAccessScheme(source_url); if (access_scheme == CookieAccessScheme::kNonCryptographic && @@ -808,34 +805,34 @@ switch (access_scheme) { case CookieAccessScheme::kNonCryptographic: - access_result->is_allowed_to_access_secure_cookies = false; + access_result.is_allowed_to_access_secure_cookies = false; if (IsSecure()) { - access_result->status.AddExclusionReason( + access_result.status.AddExclusionReason( CookieInclusionStatus::EXCLUDE_SECURE_ONLY); } break; case CookieAccessScheme::kCryptographic: // All cool! - access_result->is_allowed_to_access_secure_cookies = true; + access_result.is_allowed_to_access_secure_cookies = true; break; case CookieAccessScheme::kTrustworthy: - access_result->is_allowed_to_access_secure_cookies = true; + access_result.is_allowed_to_access_secure_cookies = true; if (IsSecure()) { // OK, but want people aware of this. - access_result->status.AddWarningReason( + access_result.status.AddWarningReason( CookieInclusionStatus:: WARN_SECURE_ACCESS_GRANTED_NON_CRYPTOGRAPHIC); } break; } - access_result->access_semantics = params.access_semantics; + access_result.access_semantics = params.access_semantics; if (options.exclude_httponly() && IsHttpOnly()) { DVLOG(net::cookie_util::kVlogSetCookies) << "HttpOnly cookie not permitted in script context."; - access_result->status.AddExclusionReason( + access_result.status.AddExclusionReason( CookieInclusionStatus::EXCLUDE_HTTP_ONLY); } @@ -847,7 +844,7 @@ SameSite() == CookieSameSite::NO_RESTRICTION && !IsSecure()) { DVLOG(net::cookie_util::kVlogSetCookies) << "SetCookie() rejecting insecure cookie with SameSite=None."; - access_result->status.AddExclusionReason( + access_result.status.AddExclusionReason( CookieInclusionStatus::EXCLUDE_SAMESITE_NONE_INSECURE); } // Log whether a SameSite=None cookie is Secure or not. @@ -862,11 +859,11 @@ ? options.same_site_cookie_context().context() : options.same_site_cookie_context().GetContextForCookieInclusion(); - access_result->effective_same_site = + access_result.effective_same_site = GetEffectiveSameSite(params.access_semantics); - DCHECK(access_result->effective_same_site != + DCHECK(access_result.effective_same_site != CookieEffectiveSameSite::UNDEFINED); - switch (access_result->effective_same_site) { + switch (access_result.effective_same_site) { case CookieEffectiveSameSite::STRICT_MODE: // This intentionally checks for `< SAME_SITE_LAX`, as we allow // `SameSite=Strict` cookies to be set for top-level navigations that @@ -876,7 +873,7 @@ DVLOG(net::cookie_util::kVlogSetCookies) << "Trying to set a `SameSite=Strict` cookie from a " "cross-site URL."; - access_result->status.AddExclusionReason( + access_result.status.AddExclusionReason( CookieInclusionStatus::EXCLUDE_SAMESITE_STRICT); } break; @@ -888,13 +885,13 @@ DVLOG(net::cookie_util::kVlogSetCookies) << "Cookies with no known SameSite attribute being treated as " "lax; attempt to set from a cross-site URL denied."; - access_result->status.AddExclusionReason( + access_result.status.AddExclusionReason( CookieInclusionStatus:: EXCLUDE_SAMESITE_UNSPECIFIED_TREATED_AS_LAX); } else { DVLOG(net::cookie_util::kVlogSetCookies) << "Trying to set a `SameSite=Lax` cookie from a cross-site URL."; - access_result->status.AddExclusionReason( + access_result.status.AddExclusionReason( CookieInclusionStatus::EXCLUDE_SAMESITE_LAX); } } @@ -904,17 +901,19 @@ } ApplySameSiteCookieWarningToStatus( - SameSite(), access_result->effective_same_site, IsSecure(), - options.same_site_cookie_context(), &access_result->status, + SameSite(), access_result.effective_same_site, IsSecure(), + options.same_site_cookie_context(), &access_result.status, true /* is_cookie_being_set */); - if (access_result->status.IsInclude()) { + if (access_result.status.IsInclude()) { UMA_HISTOGRAM_ENUMERATION("Cookie.IncludedResponseEffectiveSameSite", - access_result->effective_same_site, + access_result.effective_same_site, CookieEffectiveSameSite::COUNT); } // TODO(chlily): Log metrics. + + return access_result; } std::string CanonicalCookie::DebugString() const {
diff --git a/net/cookies/canonical_cookie.h b/net/cookies/canonical_cookie.h index 96098a25..a031656e 100644 --- a/net/cookies/canonical_cookie.h +++ b/net/cookies/canonical_cookie.h
@@ -311,13 +311,8 @@ CookieAccessResult IsSetPermittedInContext( const GURL& source_url, const CookieOptions& options, - const CookieAccessParams& params) const; - - // Overload that updates an existing |status| rather than returning a new one. - void IsSetPermittedInContext(const GURL& source_url, - const CookieOptions& options, - const CookieAccessParams& params, - CookieAccessResult* access_result) const; + const CookieAccessParams& params, + const std::vector<std::string>& cookieable_schemes) const; std::string DebugString() const;
diff --git a/net/cookies/canonical_cookie_unittest.cc b/net/cookies/canonical_cookie_unittest.cc index 3482b545..810e853 100644 --- a/net/cookies/canonical_cookie_unittest.cc +++ b/net/cookies/canonical_cookie_unittest.cc
@@ -21,6 +21,8 @@ namespace net { namespace { +const std::vector<std::string> kCookieableSchemes = {"http", "https", "ws", + "wss"}; // Helper for testing BuildCookieLine void MatchCookieLineToVector( @@ -1537,7 +1539,8 @@ cookie3->IsSetPermittedInContext( url, options, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( CookieInclusionStatus::MakeFromReasonsForTesting( {CookieInclusionStatus::EXCLUDE_HTTP_ONLY, @@ -2587,9 +2590,23 @@ EXPECT_THAT( cookie_scriptable->IsSetPermittedInContext( + GURL("file://foo/bar.txt"), context_network, + CookieAccessParams(CookieAccessSemantics::UNKNOWN, + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), + MatchesCookieAccessResult( + CookieInclusionStatus::MakeFromReasonsForTesting({ + CookieInclusionStatus::EXCLUDE_NONCOOKIEABLE_SCHEME, + CookieInclusionStatus::EXCLUDE_SECURE_ONLY, + }), + _, _, false)); + + EXPECT_THAT( + cookie_scriptable->IsSetPermittedInContext( insecure_url, context_network, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( CookieInclusionStatus::MakeFromReasonsForTesting( {CookieInclusionStatus::EXCLUDE_SECURE_ONLY}), @@ -2598,26 +2615,30 @@ cookie_scriptable->IsSetPermittedInContext( url, context_network, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); EXPECT_THAT( cookie_scriptable->IsSetPermittedInContext( url, context_script, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); EXPECT_THAT( cookie_httponly->IsSetPermittedInContext( url, context_network, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); EXPECT_THAT( cookie_httponly->IsSetPermittedInContext( url, context_script, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( CookieInclusionStatus::MakeFromReasonsForTesting( {CookieInclusionStatus::EXCLUDE_HTTP_ONLY}), @@ -2662,19 +2683,22 @@ cookie_same_site_unrestricted->IsSetPermittedInContext( url, context_cross_site, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); EXPECT_THAT( cookie_same_site_unrestricted->IsSetPermittedInContext( url, context_same_site_lax, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); EXPECT_THAT( cookie_same_site_unrestricted->IsSetPermittedInContext( url, context_same_site_strict, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); { @@ -2687,7 +2711,8 @@ url, context_same_site_strict_to_lax, CookieAccessParams( CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( AllOf(IsInclude(), Not(HasDowngradeWarning())), _, _, true)); EXPECT_THAT( @@ -2695,7 +2720,8 @@ url, context_same_site_strict_to_cross, CookieAccessParams( CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( AllOf(IsInclude(), Not(HasDowngradeWarning())), _, _, true)); EXPECT_THAT( @@ -2703,7 +2729,8 @@ url, context_same_site_lax_to_cross, CookieAccessParams( CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( AllOf(IsInclude(), Not(HasDowngradeWarning())), _, _, true)); } @@ -2717,7 +2744,8 @@ url, context_same_site_strict_to_lax, CookieAccessParams( CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( AllOf(IsInclude(), Not(HasDowngradeWarning())), _, _, true)); EXPECT_THAT( @@ -2725,7 +2753,8 @@ url, context_same_site_strict_to_cross, CookieAccessParams( CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( AllOf(IsInclude(), Not(HasDowngradeWarning())), _, _, true)); EXPECT_THAT( @@ -2733,7 +2762,8 @@ url, context_same_site_lax_to_cross, CookieAccessParams( CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( AllOf(IsInclude(), Not(HasDowngradeWarning())), _, _, true)); } @@ -2749,7 +2779,8 @@ cookie_same_site_lax->IsSetPermittedInContext( url, context_cross_site, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( CookieInclusionStatus::MakeFromReasonsForTesting( {CookieInclusionStatus::EXCLUDE_SAMESITE_LAX}), @@ -2758,13 +2789,15 @@ cookie_same_site_lax->IsSetPermittedInContext( url, context_same_site_lax, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); EXPECT_THAT( cookie_same_site_lax->IsSetPermittedInContext( url, context_same_site_strict, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); { @@ -2777,14 +2810,16 @@ url, context_same_site_strict_to_lax, CookieAccessParams( CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( AllOf(IsInclude(), Not(HasDowngradeWarning())), _, _, true)); EXPECT_THAT(cookie_same_site_lax->IsSetPermittedInContext( url, context_same_site_strict_to_cross, CookieAccessParams( CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( AllOf(IsInclude(), HasWarningReason( @@ -2795,7 +2830,8 @@ url, context_same_site_lax_to_cross, CookieAccessParams( CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( AllOf(IsInclude(), HasWarningReason( @@ -2813,14 +2849,16 @@ url, context_same_site_strict_to_lax, CookieAccessParams( CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( AllOf(IsInclude(), Not(HasDowngradeWarning())), _, _, true)); EXPECT_THAT(cookie_same_site_lax->IsSetPermittedInContext( url, context_same_site_strict_to_cross, CookieAccessParams( CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( AllOf(Not(IsInclude()), HasWarningReason( @@ -2834,7 +2872,8 @@ url, context_same_site_lax_to_cross, CookieAccessParams( CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( AllOf(Not(IsInclude()), HasWarningReason(CookieInclusionStatus:: @@ -2858,7 +2897,8 @@ cookie_same_site_strict->IsSetPermittedInContext( url, context_cross_site, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( CookieInclusionStatus::MakeFromReasonsForTesting( {CookieInclusionStatus::EXCLUDE_SAMESITE_STRICT}), @@ -2867,13 +2907,15 @@ cookie_same_site_strict->IsSetPermittedInContext( url, context_same_site_lax, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); EXPECT_THAT( cookie_same_site_strict->IsSetPermittedInContext( url, context_same_site_strict, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); { @@ -2886,7 +2928,8 @@ url, context_same_site_strict_to_lax, CookieAccessParams( CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( AllOf(IsInclude(), Not(HasDowngradeWarning())), _, _, true)); EXPECT_THAT( @@ -2894,7 +2937,8 @@ url, context_same_site_strict_to_cross, CookieAccessParams( CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( AllOf(IsInclude(), HasWarningReason( @@ -2905,7 +2949,8 @@ url, context_same_site_lax_to_cross, CookieAccessParams( CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( AllOf(IsInclude(), HasWarningReason( @@ -2923,7 +2968,8 @@ url, context_same_site_strict_to_lax, CookieAccessParams( CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( AllOf(IsInclude(), Not(HasDowngradeWarning())), _, _, true)); EXPECT_THAT( @@ -2931,7 +2977,8 @@ url, context_same_site_strict_to_cross, CookieAccessParams( CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( AllOf(Not(IsInclude()), HasWarningReason( @@ -2945,7 +2992,8 @@ url, context_same_site_lax_to_cross, CookieAccessParams( CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( AllOf(Not(IsInclude()), HasWarningReason( @@ -2966,13 +3014,15 @@ url, context_same_site_strict_to_cross, CookieAccessParams( CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(Not(IsInclude()), _, _, true)); EXPECT_THAT(cookie_same_site_strict->IsSetPermittedInContext( url, context_same_site_strict_to_cross, CookieAccessParams( CookieAccessSemantics::NONLEGACY, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(Not(IsInclude()), _, _, true)); // LEGACY semantics should allow cookies which Schemeful Same-Site would // normally block. @@ -2980,7 +3030,8 @@ url, context_same_site_strict_to_cross, CookieAccessParams( CookieAccessSemantics::LEGACY, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); } } @@ -3000,43 +3051,50 @@ cookie_same_site_unspecified->IsSetPermittedInContext( url, context_cross_site, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); EXPECT_THAT( cookie_same_site_unspecified->IsSetPermittedInContext( url, context_same_site_lax, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); EXPECT_THAT( cookie_same_site_unspecified->IsSetPermittedInContext( url, context_same_site_strict, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); EXPECT_THAT( cookie_same_site_unspecified->IsSetPermittedInContext( url, context_cross_site, CookieAccessParams(CookieAccessSemantics::LEGACY, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); EXPECT_THAT( cookie_same_site_unspecified->IsSetPermittedInContext( url, context_same_site_lax, CookieAccessParams(CookieAccessSemantics::LEGACY, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); EXPECT_THAT( cookie_same_site_unspecified->IsSetPermittedInContext( url, context_same_site_strict, CookieAccessParams(CookieAccessSemantics::LEGACY, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); EXPECT_THAT( cookie_same_site_unspecified->IsSetPermittedInContext( url, context_cross_site, CookieAccessParams(CookieAccessSemantics::NONLEGACY, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( HasExactlyExclusionReasonsForTesting( std::vector<CookieInclusionStatus::ExclusionReason>( @@ -3047,13 +3105,15 @@ cookie_same_site_unspecified->IsSetPermittedInContext( url, context_same_site_lax, CookieAccessParams(CookieAccessSemantics::NONLEGACY, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); EXPECT_THAT( cookie_same_site_unspecified->IsSetPermittedInContext( url, context_same_site_strict, CookieAccessParams(CookieAccessSemantics::NONLEGACY, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); } @@ -3065,7 +3125,8 @@ cookie_same_site_unspecified->IsSetPermittedInContext( url, context_cross_site, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( HasExactlyExclusionReasonsForTesting( std::vector<CookieInclusionStatus::ExclusionReason>( @@ -3076,37 +3137,43 @@ cookie_same_site_unspecified->IsSetPermittedInContext( url, context_same_site_lax, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); EXPECT_THAT( cookie_same_site_unspecified->IsSetPermittedInContext( url, context_same_site_strict, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); EXPECT_THAT( cookie_same_site_unspecified->IsSetPermittedInContext( url, context_cross_site, CookieAccessParams(CookieAccessSemantics::LEGACY, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); EXPECT_THAT( cookie_same_site_unspecified->IsSetPermittedInContext( url, context_same_site_lax, CookieAccessParams(CookieAccessSemantics::LEGACY, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); EXPECT_THAT( cookie_same_site_unspecified->IsSetPermittedInContext( url, context_same_site_strict, CookieAccessParams(CookieAccessSemantics::LEGACY, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); EXPECT_THAT( cookie_same_site_unspecified->IsSetPermittedInContext( url, context_cross_site, CookieAccessParams(CookieAccessSemantics::NONLEGACY, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( HasExactlyExclusionReasonsForTesting( std::vector<CookieInclusionStatus::ExclusionReason>( @@ -3117,13 +3184,15 @@ cookie_same_site_unspecified->IsSetPermittedInContext( url, context_same_site_lax, CookieAccessParams(CookieAccessSemantics::NONLEGACY, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); EXPECT_THAT( cookie_same_site_unspecified->IsSetPermittedInContext( url, context_same_site_strict, CookieAccessParams(CookieAccessSemantics::NONLEGACY, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); } } @@ -3144,7 +3213,8 @@ cookie_no_restriction->IsSetPermittedInContext( url, options, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(_, CookieEffectiveSameSite::NO_RESTRICTION, _, false)); @@ -3159,7 +3229,8 @@ cookie_lax->IsSetPermittedInContext( url, options, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(_, CookieEffectiveSameSite::LAX_MODE, _, false)); @@ -3174,7 +3245,8 @@ cookie_strict->IsSetPermittedInContext( url, options, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(_, CookieEffectiveSameSite::STRICT_MODE, _, false)); @@ -3194,7 +3266,8 @@ cookie_old_unspecified->IsSetPermittedInContext( url, options, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(_, CookieEffectiveSameSite::LAX_MODE, _, false)); @@ -3202,7 +3275,8 @@ cookie_unspecified->IsSetPermittedInContext( url, options, CookieAccessParams(CookieAccessSemantics::UNKNOWN, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( _, CookieEffectiveSameSite::LAX_MODE_ALLOW_UNSAFE, _, false)); @@ -3210,7 +3284,8 @@ cookie_unspecified->IsSetPermittedInContext( url, options, CookieAccessParams(CookieAccessSemantics::NONLEGACY, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult( _, CookieEffectiveSameSite::LAX_MODE_ALLOW_UNSAFE, _, false)); @@ -3218,7 +3293,8 @@ cookie_unspecified->IsSetPermittedInContext( url, options, CookieAccessParams(CookieAccessSemantics::LEGACY, - false /* delegate_treats_url_as_trustworthy */)), + false /* delegate_treats_url_as_trustworthy */), + kCookieableSchemes), MatchesCookieAccessResult(_, CookieEffectiveSameSite::NO_RESTRICTION, _, false)); } @@ -3252,20 +3328,23 @@ cookie->IsSetPermittedInContext( url, options, CookieAccessParams(access_semantics, - delegate_treats_url_as_trustworthy)), + delegate_treats_url_as_trustworthy), + kCookieableSchemes), MatchesCookieAccessResult(_, _, _, true)); EXPECT_THAT( cookie->IsSetPermittedInContext( insecure_url, options, CookieAccessParams(access_semantics, - delegate_treats_url_as_trustworthy)), + delegate_treats_url_as_trustworthy), + kCookieableSchemes), MatchesCookieAccessResult(_, _, _, delegate_treats_url_as_trustworthy)); EXPECT_THAT( cookie->IsSetPermittedInContext( localhost_url, options, CookieAccessParams(access_semantics, - delegate_treats_url_as_trustworthy)), + delegate_treats_url_as_trustworthy), + kCookieableSchemes), MatchesCookieAccessResult(_, _, _, true)); } }
diff --git a/net/cookies/cookie_monster.cc b/net/cookies/cookie_monster.cc index 92258798..9672fc4f 100644 --- a/net/cookies/cookie_monster.cc +++ b/net/cookies/cookie_monster.cc
@@ -479,12 +479,6 @@ persist_session_cookies_ = persist_session_cookies; } -bool CookieMonster::IsCookieableScheme(const std::string& scheme) { - DCHECK(thread_checker_.CalledOnValidThread()); - - return base::Contains(cookieable_schemes_, scheme); -} - const char* const CookieMonster::kDefaultCookieableSchemes[] = {"http", "https", "ws", "wss"}; const int CookieMonster::kDefaultCookieableSchemesCount = @@ -1175,24 +1169,17 @@ SetCookiesCallback callback) { DCHECK(thread_checker_.CalledOnValidThread()); - CookieAccessResult access_result; - bool delegate_treats_url_as_trustworthy = cookie_access_delegate() && cookie_access_delegate()->ShouldTreatUrlAsTrustworthy(source_url); - if (!IsCookieableScheme(source_url.scheme())) { - access_result.status.AddExclusionReason( - CookieInclusionStatus::EXCLUDE_NONCOOKIEABLE_SCHEME); - } - - const std::string key(GetKey(cc->Domain())); - - cc->IsSetPermittedInContext( + CookieAccessResult access_result = cc->IsSetPermittedInContext( source_url, options, CookieAccessParams(GetAccessSemanticsForCookie(*cc), delegate_treats_url_as_trustworthy), - &access_result); + cookieable_schemes_); + + const std::string key(GetKey(cc->Domain())); base::Time creation_date = cc->CreationDate(); if (creation_date.is_null()) {
diff --git a/net/cookies/cookie_monster.h b/net/cookies/cookie_monster.h index ba50ce04..990869d 100644 --- a/net/cookies/cookie_monster.h +++ b/net/cookies/cookie_monster.h
@@ -190,10 +190,6 @@ // (i.e. as part of the instance initialization process). void SetPersistSessionCookies(bool persist_session_cookies); - // Determines if the scheme of the URL is a scheme that cookies will be - // stored for. - bool IsCookieableScheme(const std::string& scheme); - // The default list of schemes the cookie monster can handle. static const char* const kDefaultCookieableSchemes[]; static const int kDefaultCookieableSchemesCount;
diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc index dd79c60..b327383 100644 --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc
@@ -44,6 +44,7 @@ #include "net/cert/ct_policy_status.h" #include "net/cert/known_roots.h" #include "net/cookies/canonical_cookie.h" +#include "net/cookies/cookie_access_delegate.h" #include "net/cookies/cookie_store.h" #include "net/cookies/cookie_util.h" #include "net/filter/brotli_source_stream.h" @@ -153,14 +154,45 @@ } net::CookieOptions CreateCookieOptions( - net::CookieOptions::SameSiteCookieContext cookie_context) { + net::CookieOptions::SameSiteCookieContext same_site_context, + net::CookieOptions::SamePartyCookieContextType same_party_context, + const net::IsolationInfo& isolation_info) { net::CookieOptions options; options.set_return_excluded_cookies(); options.set_include_httponly(); - options.set_same_site_cookie_context(cookie_context); + options.set_same_site_cookie_context(same_site_context); + options.set_same_party_cookie_context_type(same_party_context); + if (isolation_info.party_context().has_value()) { + // Count the top-frame site since it's not in the party_context. + options.set_full_party_context_size(isolation_info.party_context()->size() + + 1); + } return options; } +// Return SamePartyCookieContextType::kCrossParty when: +// 1) `isolation_info` is not fully populated. +// 2) `isolation_info.party_context` is null. +// 3) `cookie_access_delegate.IsContextSamePartyWithSite` returns false. +// +// In Chrome, all requests with credentials enabled have a fully populated +// IsolationInfo. But that might not be true for other embedders yet +// (including cast, WebView, etc). Also not sure about iOS. +net::CookieOptions::SamePartyCookieContextType ComputeSamePartyContext( + const GURL& request_url, + const net::IsolationInfo& isolation_info, + const net::CookieAccessDelegate* cookie_access_delegate) { + if (!isolation_info.IsEmpty() && isolation_info.party_context().has_value() && + cookie_access_delegate && + cookie_access_delegate->IsContextSamePartyWithSite( + net::SchemefulSite(request_url), + isolation_info.network_isolation_key().GetTopFrameSite().value(), + isolation_info.party_context().value())) { + return net::CookieOptions::SamePartyCookieContextType::kSameParty; + } + return net::CookieOptions::SamePartyCookieContextType::kCrossParty; +} + } // namespace namespace net { @@ -541,7 +573,11 @@ request_->method(), request_->url(), request_->site_for_cookies(), request_->initiator(), force_ignore_site_for_cookies); - CookieOptions options = CreateCookieOptions(same_site_context); + CookieOptions::SamePartyCookieContextType same_party_context = + ComputeSamePartyContext(request_->url(), request_->isolation_info(), + cookie_store->cookie_access_delegate()); + CookieOptions options = CreateCookieOptions( + same_site_context, same_party_context, request_->isolation_info()); cookie_store->GetCookieListWithOptionsAsync( request_->url(), options, @@ -680,10 +716,15 @@ request_->url(), request_->site_for_cookies(), request_->initiator(), force_ignore_site_for_cookies); - CookieOptions options = CreateCookieOptions(same_site_context); + CookieOptions::SamePartyCookieContextType same_party_context = + ComputeSamePartyContext(request_->url(), request_->isolation_info(), + cookie_store->cookie_access_delegate()); - // Set all cookies, without waiting for them to be set. Any subsequent read - // will see the combined result of all cookie operation. + CookieOptions options = CreateCookieOptions( + same_site_context, same_party_context, request_->isolation_info()); + + // Set all cookies, without waiting for them to be set. Any subsequent + // read will see the combined result of all cookie operation. const base::StringPiece name("Set-Cookie"); std::string cookie_string; size_t iter = 0; @@ -693,10 +734,10 @@ // list has been fully processed, and it can either be called in the // callback or after the loop is called, depending on how the last element // was handled. |num_cookie_lines_left_| keeps track of how many async - // callbacks are currently out (starting from 1 to make sure the loop runs all - // the way through before trying to exit). If there are any callbacks still - // waiting when the loop ends, then NotifyHeadersComplete will be called when - // it reaches 0 in the callback itself. + // callbacks are currently out (starting from 1 to make sure the loop runs + // all the way through before trying to exit). If there are any callbacks + // still waiting when the loop ends, then NotifyHeadersComplete will be + // called when it reaches 0 in the callback itself. num_cookie_lines_left_ = 1; while (headers->EnumerateHeader(&iter, name, &cookie_string)) { CookieInclusionStatus returned_status;
diff --git a/remoting/host/BUILD.gn b/remoting/host/BUILD.gn index fef854fc..f0540a5 100644 --- a/remoting/host/BUILD.gn +++ b/remoting/host/BUILD.gn
@@ -401,6 +401,7 @@ if (is_mac) { sources += [ "audio_capturer_mac.cc", + "audio_capturer_mac.h", "clipboard_mac.mm", "continue_window_mac.mm", "curtain_mode_mac.cc",
diff --git a/remoting/host/audio_capturer_mac.cc b/remoting/host/audio_capturer_mac.cc index 69e58f4..d9b0cb2 100644 --- a/remoting/host/audio_capturer_mac.cc +++ b/remoting/host/audio_capturer_mac.cc
@@ -2,11 +2,268 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "base/notreached.h" -#include "remoting/host/audio_capturer.h" +#include "remoting/host/audio_capturer_mac.h" + +#include <memory> + +#include "base/bind.h" +#include "base/containers/flat_set.h" +#include "base/logging.h" +#include "base/no_destructor.h" +#include "base/synchronization/lock.h" +#include "base/threading/sequenced_task_runner_handle.h" +#include "remoting/proto/audio.pb.h" namespace remoting { +namespace { + +// TODO(yuweih): Determine the device's sample rate. This probably still works +// with higher device sampling rate as AudioQueue will just downsample it. +constexpr AudioPacket::SamplingRate kSampleRate = + AudioPacket::SAMPLING_RATE_44100; +constexpr int kBytesPerChannel = 2; +constexpr int kChannelsPerFrame = 2; // Stereo +constexpr int kBytesPerFrame = kBytesPerChannel * kChannelsPerFrame; +constexpr float kBufferTimeDurationSec = 0.01f; // 10ms +constexpr size_t kBufferByteSize = + kSampleRate * kBytesPerFrame * kBufferTimeDurationSec; + +// Total delay: kBufferTimeDurationSec * kNumberBuffers +constexpr int kNumberBuffers = 2; + +// A set to keep track of valid instances as we can't pass WeakPtr to the buffer +// callback. +class AudioCapturerInstanceSet { + public: + static base::Lock& GetLock(); + + // Note: Add() and Remove() acquire a lock while Contains() doesn't. + static void Add(AudioCapturerMac* instance); + static void Remove(AudioCapturerMac* instance); + static bool Contains(AudioCapturerMac* instance); + + private: + friend class base::NoDestructor<AudioCapturerInstanceSet>; + + AudioCapturerInstanceSet(); + ~AudioCapturerInstanceSet(); + static AudioCapturerInstanceSet* Get(); + + base::flat_set<AudioCapturerMac*> instance_set_; + base::Lock lock_; +}; + +// static +base::Lock& AudioCapturerInstanceSet::GetLock() { + return Get()->lock_; +} + +// static +void AudioCapturerInstanceSet::Add(AudioCapturerMac* instance) { + base::AutoLock guard(GetLock()); + Get()->instance_set_.insert(instance); +} + +// static +void AudioCapturerInstanceSet::Remove(AudioCapturerMac* instance) { + base::AutoLock guard(GetLock()); + Get()->instance_set_.erase(instance); +} + +// static +bool AudioCapturerInstanceSet::Contains(AudioCapturerMac* instance) { + return Get()->instance_set_.find(instance) != Get()->instance_set_.end(); +} + +AudioCapturerInstanceSet::AudioCapturerInstanceSet() = default; + +AudioCapturerInstanceSet::~AudioCapturerInstanceSet() = default; + +// static +AudioCapturerInstanceSet* AudioCapturerInstanceSet::Get() { + static base::NoDestructor<AudioCapturerInstanceSet> instance_set; + return instance_set.get(); +} + +} // namespace + +AudioCapturerMac::AudioCapturerMac() { + DETACH_FROM_SEQUENCE(sequence_checker_); + + stream_description_.mSampleRate = kSampleRate; + stream_description_.mFormatID = kAudioFormatLinearPCM; + stream_description_.mFormatFlags = + kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked; + stream_description_.mBytesPerPacket = kBytesPerFrame; + stream_description_.mFramesPerPacket = 1; + stream_description_.mBytesPerFrame = kBytesPerFrame; + stream_description_.mChannelsPerFrame = kChannelsPerFrame; + stream_description_.mBitsPerChannel = 8 * kBytesPerChannel; + stream_description_.mReserved = 0; + + AudioCapturerInstanceSet::Add(this); +} + +AudioCapturerMac::~AudioCapturerMac() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + AudioCapturerInstanceSet::Remove(this); + + DisposeInputQueue(); +} + +bool AudioCapturerMac::Start(const PacketCapturedCallback& callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK(!callback_); + DCHECK(callback); + + caller_task_runner_ = base::SequencedTaskRunnerHandle::Get(); + + if (!StartInputQueue()) { + return false; + } + + callback_ = callback; + return true; +} + +// static +void AudioCapturerMac::HandleInputBufferOnAQThread( + void* user_data, + AudioQueueRef aq, + AudioQueueBufferRef buffer, + const AudioTimeStamp* start_time, + UInt32 num_packets, + const AudioStreamPacketDescription* packet_descs) { + AudioCapturerMac* capturer = reinterpret_cast<AudioCapturerMac*>(user_data); + + { + base::AutoLock guard(AudioCapturerInstanceSet::GetLock()); + if (!AudioCapturerInstanceSet::Contains(capturer)) { + // The capturer has been destroyed. + return; + } + capturer->caller_task_runner_->PostTask( + FROM_HERE, + base::BindOnce(&AudioCapturerMac::HandleInputBuffer, + capturer->weak_factory_.GetWeakPtr(), aq, buffer)); + } +} + +void AudioCapturerMac::HandleInputBuffer(AudioQueueRef aq, + AudioQueueBufferRef buffer) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + if (!is_started_) { + LOG(WARNING) << "Playback has been stopped."; + return; + } + + DCHECK_EQ(input_queue_, aq); + DCHECK(callback_); + + // TODO(yuweih): Add silence detection and drop empty packets. + + auto packet = std::make_unique<AudioPacket>(); + packet->add_data(buffer->mAudioData, buffer->mAudioDataByteSize); + packet->set_encoding(AudioPacket::ENCODING_RAW); + packet->set_sampling_rate(kSampleRate); + packet->set_bytes_per_sample(AudioPacket::BYTES_PER_SAMPLE_2); + packet->set_channels(AudioPacket::CHANNELS_STEREO); + callback_.Run(std::move(packet)); + + // Recycle the buffer. + // Only the first 2 params are needed for recording. + OSStatus err = AudioQueueEnqueueBuffer(input_queue_, buffer, 0, NULL); + HandleError(err, "AudioQueueEnqueueBuffer"); +} + +bool AudioCapturerMac::StartInputQueue() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK(!input_queue_); + DCHECK(!is_started_); + + // Setup input queue. + // This runs on AudioQueue's internal thread. For some reason if we specify + // inCallbackRunLoop to current thread, then the callback will never get + // called. + // TODO(yuweih): Search for the loopback device directly instead of relying on + // the default input device. This would allow the user to keep their + // microphone as the default input device. + OSStatus err = + AudioQueueNewInput(&stream_description_, &HandleInputBufferOnAQThread, + /* inUserData= */ this, /* inCallbackRunLoop= */ NULL, + kCFRunLoopCommonModes, 0, &input_queue_); + + if (HandleError(err, "AudioQueueNewInput")) { + return false; + } + + // Setup buffers. + for (int i = 0; i < kNumberBuffers; i++) { + // |buffer| will automatically be freed when |input_queue_| is released. + AudioQueueBufferRef buffer; + err = AudioQueueAllocateBuffer(input_queue_, kBufferByteSize, &buffer); + if (HandleError(err, "AudioQueueAllocateBuffer")) { + return false; + } + err = AudioQueueEnqueueBuffer(input_queue_, buffer, 0, NULL); + if (HandleError(err, "AudioQueueEnqueueBuffer")) { + return false; + } + } + + // Start input queue. + err = AudioQueueStart(input_queue_, NULL); + if (HandleError(err, "AudioQueueStart")) { + return false; + } + is_started_ = true; + + return true; +} + +void AudioCapturerMac::DisposeInputQueue() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + if (!input_queue_) { + return; + } + + OSStatus err; + + if (is_started_) { + err = AudioQueueStop(input_queue_, /* Immediate */ true); + if (err != noErr) { + LOG(DFATAL) << "Failed to call AudioQueueStop, error code: " << err; + } + is_started_ = false; + } + + err = AudioQueueDispose(input_queue_, /* Immediate */ true); + if (err != noErr) { + LOG(DFATAL) << "Failed to call AudioQueueDispose, error code: " << err; + } + input_queue_ = nullptr; +} + +bool AudioCapturerMac::HandleError(OSStatus err, const char* function_name) { + if (err != noErr) { + LOG(DFATAL) << "Failed to call " << function_name + << ", error code: " << err; + DisposeInputQueue(); + return true; + } + return false; +} + +// AudioCapturer + +// AudioCapturer support on Mac is still experimental. + +#if defined(NDEBUG) + bool AudioCapturer::IsSupported() { return false; } @@ -16,4 +273,16 @@ return nullptr; } +#else + +bool AudioCapturer::IsSupported() { + return true; +} + +std::unique_ptr<AudioCapturer> AudioCapturer::Create() { + return std::make_unique<AudioCapturerMac>(); +} + +#endif + } // namespace remoting
diff --git a/remoting/host/audio_capturer_mac.h b/remoting/host/audio_capturer_mac.h new file mode 100644 index 0000000..e906201 --- /dev/null +++ b/remoting/host/audio_capturer_mac.h
@@ -0,0 +1,66 @@ +// 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 REMOTING_HOST_AUDIO_CAPTURER_MAC_H_ +#define REMOTING_HOST_AUDIO_CAPTURER_MAC_H_ + +#include <AudioToolbox/AudioToolbox.h> + +#include "base/macros.h" +#include "base/memory/scoped_refptr.h" +#include "base/memory/weak_ptr.h" +#include "base/sequence_checker.h" +#include "base/sequenced_task_runner.h" +#include "remoting/host/audio_capturer.h" + +namespace remoting { + +// An AudioCapturer implementation for the Mac which uses an audio loopback +// device. The user will need to manually install and set up an audio loopback +// device such that it takes the system's audio output as its input, and routes +// its input to its output, then this capturer will be able to capture system +// audio on Mac through the loopback device. +class AudioCapturerMac : public AudioCapturer { + public: + AudioCapturerMac(); + ~AudioCapturerMac() override; + + // AudioCapturer interface. + bool Start(const PacketCapturedCallback& callback) override; + + AudioCapturerMac(const AudioCapturerMac&) = delete; + AudioCapturerMac& operator=(const AudioCapturerMac&) = delete; + + private: + static void HandleInputBufferOnAQThread( + void* user_data, + AudioQueueRef aq, + AudioQueueBufferRef buffer, + const AudioTimeStamp* start_time, + UInt32 num_packets, + const AudioStreamPacketDescription* packet_descs); + void HandleInputBuffer(AudioQueueRef aq, AudioQueueBufferRef buffer); + + bool StartInputQueue(); + void DisposeInputQueue(); + + // If an error occurs (err != noErr), stops capturing and disposes the input + // queue, otherwise no-op. + // Returns true if error occurs and the input queue has been disposed. + bool HandleError(OSStatus err, const char* function_name); + + SEQUENCE_CHECKER(sequence_checker_); + + AudioStreamBasicDescription stream_description_; + PacketCapturedCallback callback_; + AudioQueueRef input_queue_ = nullptr; + bool is_started_ = false; + scoped_refptr<base::SequencedTaskRunner> caller_task_runner_; + + base::WeakPtrFactory<AudioCapturerMac> weak_factory_{this}; +}; + +} // namespace remoting + +#endif // REMOTING_HOST_AUDIO_CAPTURER_MAC_H_
diff --git a/remoting/resources/remoting_strings.grd b/remoting/resources/remoting_strings.grd index 8801063..2340879 100644 --- a/remoting/resources/remoting_strings.grd +++ b/remoting/resources/remoting_strings.grd
@@ -317,7 +317,7 @@ Google LLC </message> <message name="IDS_COPYRIGHT" desc="The copyright message specified in the version information of each Chrome Remote Desktop Host executable. It should be updated every year."> - Copyright 2020 Google LLC. All Rights Reserved. + Copyright 2021 Google LLC. All Rights Reserved. </message> <message name="IDS_DISPLAY_SERVICE_NAME" desc="The name of the Windows service installed by Chrome Remote Desktop."> Chrome Remote Desktop Service
diff --git a/services/device/hid/hid_connection_win.cc b/services/device/hid/hid_connection_win.cc index e0efa2a..bc0d77b 100644 --- a/services/device/hid/hid_connection_win.cc +++ b/services/device/hid/hid_connection_win.cc
@@ -149,6 +149,7 @@ if (!IsValidHandle(file_handle)) { HID_LOG(DEBUG) << "HID write failed due to invalid handle."; std::move(callback).Run(false); + return; } transfers_.push_back(std::make_unique<PendingHidTransfer>( @@ -170,6 +171,7 @@ if (!IsValidHandle(file_handle)) { HID_LOG(DEBUG) << "HID read failed due to invalid handle."; std::move(callback).Run(false, nullptr, 0); + return; } transfers_.push_back(std::make_unique<PendingHidTransfer>(
diff --git a/services/device/usb/usb_device_handle_mac.cc b/services/device/usb/usb_device_handle_mac.cc index c91439b..616c8c8 100644 --- a/services/device/usb/usb_device_handle_mac.cc +++ b/services/device/usb/usb_device_handle_mac.cc
@@ -513,15 +513,16 @@ for (const auto& size : packet_lengths) { if (!base::IsValueInRangeForNumericType<uint16_t>(size)) { USB_LOG(ERROR) << "Transfer too long."; - ReportIsochronousTransferError(std::move(callback), packet_lengths, - mojom::UsbTransferStatus::TRANSFER_ERROR); + ReportIsochronousTransferError( + std::move(transfer_data->isochronous_callback), packet_lengths, + mojom::UsbTransferStatus::TRANSFER_ERROR); return; } IOUSBIsocFrame frame_entry; frame_entry.frReqCount = static_cast<uint16_t>(size); frame_list.push_back(frame_entry); } - transfer->frame_list = frame_list; + transfer_data->frame_list = frame_list; kr = (*interface_interface) ->ReadIsochPipeAsync(interface_interface, @@ -597,15 +598,16 @@ for (const auto& size : packet_lengths) { if (!base::IsValueInRangeForNumericType<uint16_t>(size)) { USB_LOG(ERROR) << "Transfer too long."; - ReportIsochronousTransferError(std::move(callback), packet_lengths, - mojom::UsbTransferStatus::TRANSFER_ERROR); + ReportIsochronousTransferError( + std::move(transfer_data->isochronous_callback), packet_lengths, + mojom::UsbTransferStatus::TRANSFER_ERROR); return; } IOUSBIsocFrame frame_entry; frame_entry.frReqCount = static_cast<uint16_t>(size); frame_list.push_back(frame_entry); } - transfer->frame_list = frame_list; + transfer_data->frame_list = frame_list; kr = (*interface_interface) ->WriteIsochPipeAsync(interface_interface, @@ -774,7 +776,7 @@ reinterpret_cast<void*>(transfer_data)); if (kr != kIOReturnSuccess) { USB_LOG(ERROR) << "Failed to read from device: " << std::hex << kr; - std::move(transfer->generic_callback) + std::move(transfer_data->generic_callback) .Run(mojom::UsbTransferStatus::TRANSFER_ERROR, buffer, 0); transfers_.erase(result.first); } @@ -795,7 +797,7 @@ reinterpret_cast<void*>(transfer_data)); if (kr != kIOReturnSuccess) { USB_LOG(ERROR) << "Failed to write to device: " << std::hex << kr; - std::move(transfer->generic_callback) + std::move(transfer_data->generic_callback) .Run(mojom::UsbTransferStatus::TRANSFER_ERROR, buffer, 0); transfers_.erase(result.first); }
diff --git a/services/network/public/cpp/cross_origin_read_blocking.cc b/services/network/public/cpp/cross_origin_read_blocking.cc index 94a050f..000ff5d3 100644 --- a/services/network/public/cpp/cross_origin_read_blocking.cc +++ b/services/network/public/cpp/cross_origin_read_blocking.cc
@@ -485,10 +485,6 @@ // Whitespace is ignored (outside of string literals) if (c == ' ' || c == '\t' || c == '\r' || c == '\n') continue; - } else { - // Inside string literals, control characters should result in rejection. - if ((c >= 0 && c < 32) || c == 127) - return kNo; } switch (state) {
diff --git a/services/network/public/cpp/cross_origin_read_blocking_unittest.cc b/services/network/public/cpp/cross_origin_read_blocking_unittest.cc index 9ea8144..c900543c 100644 --- a/services/network/public/cpp/cross_origin_read_blocking_unittest.cc +++ b/services/network/public/cpp/cross_origin_read_blocking_unittest.cc
@@ -2565,9 +2565,10 @@ EXPECT_EQ(SniffingResult::kMaybe, CrossOriginReadBlocking::SniffForJSON("{\"\\\"")) << "Incomplete escape results in maybe"; - EXPECT_EQ(SniffingResult::kNo, + EXPECT_EQ(SniffingResult::kYes, CrossOriginReadBlocking::SniffForJSON("{\"\n\" : true}")) - << "Unescaped control characters are rejected"; + << "Unescaped control characters are accepted (a bit more like " + << "Javascript than strict reading of the JSON spec)"; EXPECT_EQ(SniffingResult::kNo, CrossOriginReadBlocking::SniffForJSON("{}")) << "Empty dictionary is not recognized (since it's valid JS too)"; EXPECT_EQ(SniffingResult::kNo,
diff --git a/services/viz/public/cpp/compositing/delegated_ink_metadata_mojom_traits.cc b/services/viz/public/cpp/compositing/delegated_ink_metadata_mojom_traits.cc index 031dba2..f23dc53 100644 --- a/services/viz/public/cpp/compositing/delegated_ink_metadata_mojom_traits.cc +++ b/services/viz/public/cpp/compositing/delegated_ink_metadata_mojom_traits.cc
@@ -27,7 +27,8 @@ return false; } *out = std::make_unique<viz::DelegatedInkMetadata>( - point, data.diameter(), color, timestamp, presentation_area, frame_time); + point, data.diameter(), color, timestamp, presentation_area, frame_time, + data.is_hovering()); return true; }
diff --git a/services/viz/public/cpp/compositing/delegated_ink_metadata_mojom_traits.h b/services/viz/public/cpp/compositing/delegated_ink_metadata_mojom_traits.h index 2a9a243..1b7d841 100644 --- a/services/viz/public/cpp/compositing/delegated_ink_metadata_mojom_traits.h +++ b/services/viz/public/cpp/compositing/delegated_ink_metadata_mojom_traits.h
@@ -56,6 +56,11 @@ return input->frame_time(); } + static bool is_hovering( + const std::unique_ptr<viz::DelegatedInkMetadata>& input) { + return input->is_hovering(); + } + static bool Read(viz::mojom::DelegatedInkMetadataDataView data, std::unique_ptr<viz::DelegatedInkMetadata>* out); };
diff --git a/services/viz/public/mojom/compositing/delegated_ink_metadata.mojom b/services/viz/public/mojom/compositing/delegated_ink_metadata.mojom index 99ff67e..695c666b 100644 --- a/services/viz/public/mojom/compositing/delegated_ink_metadata.mojom +++ b/services/viz/public/mojom/compositing/delegated_ink_metadata.mojom
@@ -16,4 +16,5 @@ mojo_base.mojom.TimeTicks timestamp; gfx.mojom.RectF presentation_area; mojo_base.mojom.TimeTicks frame_time; + bool is_hovering; };
diff --git a/services/viz/public/mojom/compositing/delegated_ink_point.mojom b/services/viz/public/mojom/compositing/delegated_ink_point.mojom index 1335e5e..148c0d1 100644 --- a/services/viz/public/mojom/compositing/delegated_ink_point.mojom +++ b/services/viz/public/mojom/compositing/delegated_ink_point.mojom
@@ -17,9 +17,16 @@ // delegated ink trails. A delegated ink point will be produced in the // browser process and sent to viz to be held until DrawAndSwap occurs, at // which point any delegated ink points that arrived may be used to draw the -// ink trail. +// ink trail. When the browser detects the end of the trail, it will call +// ResetPrediction() so that viz does not predict any points further than what +// the user is expecting. interface DelegatedInkPointRenderer { // Used to send the DelegatedInkPoint that was created in the browser process // to viz in order to be drawn as part of the delegated ink trail. StoreDelegatedInkPoint(DelegatedInkPoint point); + + // Used to reset prediction and prediction metrics that have been generated + // by previously received points. Used by the browser process when a delegated + // ink trail should end. + ResetPrediction(); };
diff --git a/testing/buildbot/chromium.android.fyi.json b/testing/buildbot/chromium.android.fyi.json index 17efaa0..e0624a1 100644 --- a/testing/buildbot/chromium.android.fyi.json +++ b/testing/buildbot/chromium.android.fyi.json
@@ -240,11 +240,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.140" + "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.141" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.140", + "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.141", "resultdb": { "enable": true }, @@ -254,7 +254,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M87", - "revision": "version:87.0.4280.140" + "revision": "version:87.0.4280.141" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -394,11 +394,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.140" + "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.141" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.140", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.141", "resultdb": { "enable": true }, @@ -408,7 +408,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M87", - "revision": "version:87.0.4280.140" + "revision": "version:87.0.4280.141" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -769,11 +769,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.140" + "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.141" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.140", + "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.141", "resultdb": { "enable": true }, @@ -783,7 +783,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M87", - "revision": "version:87.0.4280.140" + "revision": "version:87.0.4280.141" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -923,11 +923,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.140" + "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.141" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.140", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.141", "resultdb": { "enable": true }, @@ -937,7 +937,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M87", - "revision": "version:87.0.4280.140" + "revision": "version:87.0.4280.141" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -1298,11 +1298,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.140" + "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.141" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.140", + "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.141", "resultdb": { "enable": true }, @@ -1312,7 +1312,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M87", - "revision": "version:87.0.4280.140" + "revision": "version:87.0.4280.141" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -1452,11 +1452,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.140" + "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.141" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.140", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.141", "resultdb": { "enable": true }, @@ -1466,7 +1466,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M87", - "revision": "version:87.0.4280.140" + "revision": "version:87.0.4280.141" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -1827,11 +1827,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.140" + "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.141" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.140", + "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.141", "resultdb": { "enable": true }, @@ -1841,7 +1841,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M87", - "revision": "version:87.0.4280.140" + "revision": "version:87.0.4280.141" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -1981,11 +1981,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.140" + "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.141" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.140", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.141", "resultdb": { "enable": true }, @@ -1995,7 +1995,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M87", - "revision": "version:87.0.4280.140" + "revision": "version:87.0.4280.141" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
diff --git a/testing/buildbot/chromium.chromiumos.json b/testing/buildbot/chromium.chromiumos.json index ae51d21..420e5084 100644 --- a/testing/buildbot/chromium.chromiumos.json +++ b/testing/buildbot/chromium.chromiumos.json
@@ -4642,6 +4642,18 @@ "can_use_on_swarming_builders": true, "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" }, + "test": "lacros_chrome_unittests", + "test_id_prefix": "ninja://chrome/test:lacros_chrome_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, "test": "ui_base_unittests", "test_id_prefix": "ninja://ui/base:ui_base_unittests/" }, @@ -5220,6 +5232,18 @@ "can_use_on_swarming_builders": true, "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" }, + "test": "lacros_chrome_unittests", + "test_id_prefix": "ninja://chrome/test:lacros_chrome_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, "test": "latency_unittests", "test_id_prefix": "ninja://ui/latency:latency_unittests/" },
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json index 50d35e7..5e8d9b4 100644 --- a/testing/buildbot/chromium.fyi.json +++ b/testing/buildbot/chromium.fyi.json
@@ -34139,7 +34139,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "absl_hardening_tests", @@ -34167,7 +34167,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -34184,7 +34184,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "base_unittests", @@ -34212,7 +34212,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -34229,7 +34229,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "base_unittests", @@ -34257,7 +34257,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -34274,7 +34274,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "base_unittests", @@ -34302,7 +34302,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -34319,7 +34319,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "boringssl_crypto_tests", @@ -34347,7 +34347,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -34364,7 +34364,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "boringssl_ssl_tests", @@ -34392,7 +34392,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -34409,7 +34409,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "components_unittests", @@ -34437,7 +34437,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -34454,7 +34454,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "components_unittests", @@ -34482,7 +34482,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -34499,7 +34499,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "components_unittests", @@ -34527,7 +34527,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -34544,7 +34544,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "crypto_unittests", @@ -34572,7 +34572,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -34589,7 +34589,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "gfx_unittests", @@ -34617,7 +34617,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -34634,7 +34634,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "gfx_unittests", @@ -34662,7 +34662,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -34679,7 +34679,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "gfx_unittests", @@ -34707,7 +34707,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -34724,7 +34724,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "google_apis_unittests", @@ -34752,7 +34752,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -34769,7 +34769,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -34798,7 +34798,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -34815,7 +34815,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -34844,7 +34844,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -34861,7 +34861,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -34890,7 +34890,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -34907,7 +34907,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -34936,7 +34936,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -34953,7 +34953,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -34982,7 +34982,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -35000,7 +35000,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -35029,7 +35029,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -35047,7 +35047,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -35076,7 +35076,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -35094,7 +35094,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -35123,7 +35123,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -35141,7 +35141,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -35170,7 +35170,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -35188,7 +35188,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -35217,7 +35217,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -35235,7 +35235,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -35264,7 +35264,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -35282,7 +35282,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -35311,7 +35311,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -35329,7 +35329,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -35358,7 +35358,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -35375,7 +35375,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -35404,7 +35404,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -35421,7 +35421,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -35450,7 +35450,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -35467,7 +35467,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -35496,7 +35496,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -35513,7 +35513,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -35542,7 +35542,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -35559,7 +35559,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -35588,7 +35588,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -35605,7 +35605,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -35634,7 +35634,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -35651,7 +35651,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -35680,7 +35680,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -35697,7 +35697,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -35726,7 +35726,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -35744,7 +35744,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -35773,7 +35773,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -35791,7 +35791,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -35820,7 +35820,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -35838,7 +35838,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -35867,7 +35867,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -35885,7 +35885,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -35913,7 +35913,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -35930,7 +35930,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -35958,7 +35958,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -35975,7 +35975,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -36003,7 +36003,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -36020,7 +36020,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -36049,7 +36049,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -36066,7 +36066,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -36095,7 +36095,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -36112,7 +36112,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -36141,7 +36141,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -36158,7 +36158,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -36187,7 +36187,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -36204,7 +36204,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_components_unittests", @@ -36232,7 +36232,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -36249,7 +36249,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_net_unittests", @@ -36277,7 +36277,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -36294,7 +36294,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_remoting_unittests", @@ -36322,7 +36322,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -36339,7 +36339,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -36368,7 +36368,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -36385,7 +36385,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -36414,7 +36414,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -36431,7 +36431,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -36460,7 +36460,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -36477,7 +36477,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -36506,7 +36506,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -36523,7 +36523,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_testing_unittests", @@ -36551,7 +36551,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -36568,7 +36568,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -36596,7 +36596,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -36613,7 +36613,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -36641,7 +36641,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -36658,7 +36658,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -36686,7 +36686,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -36703,7 +36703,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -36732,7 +36732,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -36749,7 +36749,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -36778,7 +36778,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -36795,7 +36795,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -36824,7 +36824,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -36841,7 +36841,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -36870,7 +36870,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -36887,7 +36887,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -36915,7 +36915,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -36932,7 +36932,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -36960,7 +36960,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -36977,7 +36977,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -37005,7 +37005,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -37022,7 +37022,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -37050,7 +37050,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -37067,7 +37067,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -37095,7 +37095,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -37112,7 +37112,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -37140,7 +37140,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -37157,7 +37157,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -37185,7 +37185,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -37202,7 +37202,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -37230,7 +37230,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -37247,7 +37247,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -37275,7 +37275,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -37292,7 +37292,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "net_unittests", @@ -37320,7 +37320,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -37337,7 +37337,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "services_unittests", @@ -37365,7 +37365,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -37382,7 +37382,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "skia_unittests", @@ -37410,7 +37410,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -37427,7 +37427,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "skia_unittests", @@ -37455,7 +37455,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -37472,7 +37472,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "skia_unittests", @@ -37500,7 +37500,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -37517,7 +37517,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "sql_unittests", @@ -37545,7 +37545,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -37562,7 +37562,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -37590,7 +37590,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -37607,7 +37607,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -37635,7 +37635,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -37652,7 +37652,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -37680,7 +37680,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -37697,7 +37697,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "url_unittests", @@ -37725,7 +37725,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -37749,7 +37749,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "absl_hardening_tests", @@ -37777,7 +37777,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -37794,7 +37794,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "base_unittests", @@ -37822,7 +37822,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -37839,7 +37839,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "base_unittests", @@ -37867,7 +37867,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -37884,7 +37884,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "boringssl_crypto_tests", @@ -37912,7 +37912,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -37929,7 +37929,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "boringssl_ssl_tests", @@ -37957,7 +37957,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -37974,7 +37974,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "components_unittests", @@ -38002,7 +38002,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -38019,7 +38019,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "components_unittests", @@ -38047,7 +38047,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -38064,7 +38064,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "crypto_unittests", @@ -38092,7 +38092,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -38109,7 +38109,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "gfx_unittests", @@ -38137,7 +38137,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -38154,7 +38154,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "gfx_unittests", @@ -38182,7 +38182,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -38199,7 +38199,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "google_apis_unittests", @@ -38227,7 +38227,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -38244,7 +38244,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -38273,7 +38273,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -38290,7 +38290,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -38319,7 +38319,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -38336,7 +38336,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -38365,7 +38365,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -38382,7 +38382,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -38411,7 +38411,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -38429,7 +38429,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -38458,7 +38458,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -38476,7 +38476,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -38505,7 +38505,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -38523,7 +38523,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -38552,7 +38552,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -38570,7 +38570,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -38599,7 +38599,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -38617,7 +38617,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -38646,7 +38646,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -38664,7 +38664,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -38693,7 +38693,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -38710,7 +38710,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -38739,7 +38739,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -38756,7 +38756,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -38785,7 +38785,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -38802,7 +38802,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -38831,7 +38831,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -38848,7 +38848,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -38877,7 +38877,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -38894,7 +38894,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -38923,7 +38923,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -38940,7 +38940,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -38969,7 +38969,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -38987,7 +38987,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -39016,7 +39016,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -39034,7 +39034,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -39063,7 +39063,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -39081,7 +39081,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -39109,7 +39109,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -39126,7 +39126,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -39154,7 +39154,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -39171,7 +39171,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -39200,7 +39200,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -39217,7 +39217,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -39246,7 +39246,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -39263,7 +39263,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -39292,7 +39292,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -39309,7 +39309,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_components_unittests", @@ -39337,7 +39337,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -39354,7 +39354,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_net_unittests", @@ -39382,7 +39382,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -39399,7 +39399,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_remoting_unittests", @@ -39427,7 +39427,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -39444,7 +39444,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -39473,7 +39473,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -39490,7 +39490,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -39519,7 +39519,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -39536,7 +39536,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -39565,7 +39565,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -39582,7 +39582,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_testing_unittests", @@ -39610,7 +39610,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -39627,7 +39627,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -39655,7 +39655,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -39672,7 +39672,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -39700,7 +39700,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -39717,7 +39717,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -39746,7 +39746,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -39763,7 +39763,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -39792,7 +39792,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -39809,7 +39809,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest", "--xcode-parallelization" ], @@ -39838,7 +39838,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -39855,7 +39855,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -39883,7 +39883,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -39900,7 +39900,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -39928,7 +39928,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -39945,7 +39945,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -39973,7 +39973,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -39990,7 +39990,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -40018,7 +40018,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -40035,7 +40035,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -40063,7 +40063,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -40080,7 +40080,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -40108,7 +40108,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -40125,7 +40125,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "net_unittests", @@ -40153,7 +40153,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -40170,7 +40170,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "services_unittests", @@ -40198,7 +40198,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -40215,7 +40215,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "skia_unittests", @@ -40243,7 +40243,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -40260,7 +40260,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "skia_unittests", @@ -40288,7 +40288,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -40305,7 +40305,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "sql_unittests", @@ -40333,7 +40333,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -40350,7 +40350,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -40378,7 +40378,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -40395,7 +40395,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -40423,7 +40423,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -40440,7 +40440,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "12b5044c", + "12c33", "--xctest" ], "isolate_name": "url_unittests", @@ -40468,7 +40468,7 @@ ], "named_caches": [ { - "name": "xcode_ios_12b5044c", + "name": "xcode_ios_12c33", "path": "Xcode.app" } ], @@ -44831,8 +44831,7 @@ "gtest_tests": [ { "args": [ - "--gtest_filter=*FilesApp*", - "--devtools-code-coverage" + "--gtest_filter=*FilesApp*" ], "isolate_profile_data": true, "merge": { @@ -49838,6 +49837,24 @@ ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" }, + "test": "lacros_chrome_unittests", + "test_id_prefix": "ninja://chrome/test:lacros_chrome_unittests/" + }, + { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "os": "Ubuntu-16.04", + "ssd": "0" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, "test": "latency_unittests", "test_id_prefix": "ninja://ui/latency:latency_unittests/" },
diff --git a/testing/buildbot/chromium.gpu.fyi.json b/testing/buildbot/chromium.gpu.fyi.json index 6ff45b5..bfe0aae4 100644 --- a/testing/buildbot/chromium.gpu.fyi.json +++ b/testing/buildbot/chromium.gpu.fyi.json
@@ -18512,7 +18512,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -18536,7 +18536,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -18563,7 +18563,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -18588,7 +18588,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -18612,7 +18612,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -18634,7 +18634,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -18656,7 +18656,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -18675,7 +18675,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -18698,7 +18698,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -18717,7 +18717,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -18752,7 +18752,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "idempotent": false, @@ -18785,7 +18785,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "idempotent": false, @@ -18818,7 +18818,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "idempotent": false, @@ -18851,7 +18851,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "idempotent": false, @@ -18884,7 +18884,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "idempotent": false, @@ -18921,7 +18921,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "idempotent": false, @@ -18963,7 +18963,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "idempotent": false, @@ -19005,7 +19005,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "idempotent": false, @@ -19047,7 +19047,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "idempotent": false, @@ -19089,7 +19089,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "idempotent": false, @@ -19114,7 +19114,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -19147,7 +19147,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "idempotent": false, @@ -19181,7 +19181,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "idempotent": false, @@ -19214,7 +19214,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "idempotent": false, @@ -19249,7 +19249,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "idempotent": false, @@ -19285,7 +19285,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "idempotent": false, @@ -19320,7 +19320,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "idempotent": false, @@ -19355,7 +19355,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "idempotent": false, @@ -19390,7 +19390,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "idempotent": false, @@ -19424,7 +19424,7 @@ "dimension_sets": [ { "gpu": "8086:3e9b", - "os": "Mac-10.15.5" + "os": "Mac-10.15.7" } ], "idempotent": false,
diff --git a/testing/buildbot/gn_isolate_map.pyl b/testing/buildbot/gn_isolate_map.pyl index 6f7da4b..50edcf7 100644 --- a/testing/buildbot/gn_isolate_map.pyl +++ b/testing/buildbot/gn_isolate_map.pyl
@@ -1107,6 +1107,10 @@ "label": "//chrome/test:lacros_chrome_browsertests", "type": "windowed_test_launcher", }, + "lacros_chrome_unittests": { + "label": "//chrome/test:lacros_chrome_unittests", + "type": "console_test_launcher", + }, "latency_unittests": { "label": "//ui/latency:latency_unittests", "type": "console_test_launcher",
diff --git a/testing/buildbot/mixins.pyl b/testing/buildbot/mixins.pyl index a27c2f1..5290332 100644 --- a/testing/buildbot/mixins.pyl +++ b/testing/buildbot/mixins.pyl
@@ -605,7 +605,7 @@ 'swarming': { 'dimensions': { 'gpu': '8086:3e9b', - 'os': 'Mac-10.15.5', + 'os': 'Mac-10.15.7', }, }, }, @@ -1069,17 +1069,17 @@ }, }, # latest Xcode 12 beta version. - 'xcode_12b5044c': { + 'xcode_12c33': { '$mixin_append': { 'args': [ '--xcode-build-version', - '12b5044c' + '12c33' ], }, 'swarming': { 'named_caches': [ { - 'name': 'xcode_ios_12b5044c', + 'name': 'xcode_ios_12c33', 'path': 'Xcode.app', }, ],
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl index 3850433..38f1dab6 100644 --- a/testing/buildbot/test_suite_exceptions.pyl +++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -404,11 +404,6 @@ '--additional-driver-flag=--enable-blink-features=EditingNG', ], }, - 'linux-layout-tests-fragment-item': { - 'args': [ - '--additional-driver-flag=--enable-blink-features=LayoutNGFragmentItem', - ], - }, 'mac10.12-blink-rel-dummy': { 'swarming': { 'shards': 20,
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl index 2fa9ecc..52962b6 100644 --- a/testing/buildbot/test_suites.pyl +++ b/testing/buildbot/test_suites.pyl
@@ -3738,8 +3738,7 @@ 'js_code_coverage_browser_tests' : { 'js_code_coverage_browser_tests': { 'args': [ - '--gtest_filter=*FilesApp*', - '--devtools-code-coverage' + '--gtest_filter=*FilesApp*' ], 'test': 'browser_tests', } @@ -3852,12 +3851,14 @@ }, }, 'lacros_chrome_browsertests': {}, + 'lacros_chrome_unittests': {}, 'ui_base_unittests': {}, 'unit_tests': {}, }, 'linux_lacros_specific_gtests': { 'lacros_chrome_browsertests': {}, + 'lacros_chrome_unittests': {}, }, 'linux_ozone_common_gtests': {
diff --git a/testing/buildbot/tryserver.chromium.linux.json b/testing/buildbot/tryserver.chromium.linux.json index 79a0346..c6dc434ad 100644 --- a/testing/buildbot/tryserver.chromium.linux.json +++ b/testing/buildbot/tryserver.chromium.linux.json
@@ -77,41 +77,5 @@ "test_id_prefix": "ninja://:blink_web_tests/" } ] - }, - "linux-layout-tests-fragment-item": { - "additional_compile_targets": [ - "blink_tests" - ], - "isolated_scripts": [ - { - "args": [ - "--num-retries=3", - "--additional-driver-flag=--enable-blink-features=LayoutNGFragmentItem" - ], - "isolate_name": "blink_web_tests", - "merge": { - "args": [ - "--verbose" - ], - "script": "//third_party/blink/tools/merge_web_test_results.py" - }, - "name": "blink_web_tests", - "resultdb": { - "enable": true - }, - "results_handler": "layout tests", - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "os": "Ubuntu-16.04" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 12 - }, - "test_id_prefix": "ninja://:blink_web_tests/" - } - ] } }
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl index ea91540..21cbad5 100644 --- a/testing/buildbot/variants.pyl +++ b/testing/buildbot/variants.pyl
@@ -342,13 +342,13 @@ '../../weblayer/browser/android/javatests/skew/expectations.txt', '--impl-version=87', ], - 'identifier': 'Implementation Tests For 87.0.4280.140', + 'identifier': 'Implementation Tests For 87.0.4280.141', 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M87', - 'revision': 'version:87.0.4280.140', + 'revision': 'version:87.0.4280.141', } ], }, @@ -411,13 +411,13 @@ '../../weblayer/browser/android/javatests/skew/expectations.txt', '--client-version=87', ], - 'identifier': 'Client Tests For 87.0.4280.140', + 'identifier': 'Client Tests For 87.0.4280.141', 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M87', - 'revision': 'version:87.0.4280.140', + 'revision': 'version:87.0.4280.141', } ], }, @@ -460,4 +460,4 @@ }, 'identifier': 'OCTOPUS_TOT-1', }, -} +} \ No newline at end of file
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl index 66dcfdf..0fc2b3dd 100644 --- a/testing/buildbot/waterfalls.pyl +++ b/testing/buildbot/waterfalls.pyl
@@ -2802,7 +2802,7 @@ 'mac_10.15', 'mac_toolchain', 'out_dir_arg', - 'xcode_12b5044c', + 'xcode_12c33', 'xctest', ], 'test_suites': { @@ -2820,7 +2820,7 @@ 'mac_10.15', 'mac_toolchain', 'out_dir_arg', - 'xcode_12b5044c', + 'xcode_12c33', 'xctest', ], 'test_suites': { @@ -6450,17 +6450,6 @@ 'isolated_scripts': 'chromium_webkit_isolated_scripts', }, }, - 'linux-layout-tests-fragment-item': { - 'additional_compile_targets': [ - 'blink_tests', - ], - 'mixins': [ - 'linux-xenial', - ], - 'test_suites': { - 'isolated_scripts': 'chromium_webkit_isolated_scripts', - }, - }, }, }, {
diff --git a/testing/merge_scripts/code_coverage/merge_js_lib.py b/testing/merge_scripts/code_coverage/merge_js_lib.py index 1ae2646..5011c73 100644 --- a/testing/merge_scripts/code_coverage/merge_js_lib.py +++ b/testing/merge_scripts/code_coverage/merge_js_lib.py
@@ -208,7 +208,7 @@ for dir_path, _sub_dirs, file_names in os.walk(input_dir): paths.extend([ os.path.join(dir_path, fn) for fn in file_names - if fn.endswith('.json') + if fn.endswith('.cov.json') ]) return paths
diff --git a/testing/merge_scripts/code_coverage/merge_results.py b/testing/merge_scripts/code_coverage/merge_results.py index 0af49a6..bd5870a5 100755 --- a/testing/merge_scripts/code_coverage/merge_results.py +++ b/testing/merge_scripts/code_coverage/merge_results.py
@@ -101,11 +101,14 @@ parser.error('--merged-js-cov-filename required when merging ' 'JavaScript coverage') + # Ensure JavaScript coverage dir exists. + if not os.path.exists(params.javascript_coverage_dir): + os.makedirs(params.javascript_coverage_dir) + output_path = os.path.join(params.javascript_coverage_dir, '%s_javascript.json' % params.merged_js_cov_filename) - raw_coverage_folder = os.path.join(params.javascript_coverage_dir, 'tests') logging.info('Merging v8 coverage output to %s', output_path) - javascript_merger.merge_coverage_files(raw_coverage_folder, output_path) + javascript_merger.merge_coverage_files(params.task_output_dir, output_path) # Name the output profdata file name as {test_target}.profdata or # default.profdata.
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index 6766c48d..f5755d4 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -7391,6 +7391,29 @@ ] } ], + "TabLoadingFrameNavigationThrottle": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "FCPMultiple": "4.0", + "MinimumThrottleTimeoutMilliseconds": "2000" + }, + "enable_features": [ + "TabLoadingFrameNavigationThrottle" + ] + } + ] + } + ], "TabRanker": [ { "platforms": [
diff --git a/third_party/.gitignore b/third_party/.gitignore index dd70593..953f1b6 100644 --- a/third_party/.gitignore +++ b/third_party/.gitignore
@@ -72,6 +72,7 @@ /eigen3/src /elfutils/src /emoji-segmenter/src +/emoji-metadata/src /espresso/lib/ /expat/src /eyesfree/src
diff --git a/third_party/blink/public/common/loader/previews_state.h b/third_party/blink/public/common/loader/previews_state.h index 7344d99..1236426 100644 --- a/third_party/blink/public/common/loader/previews_state.h +++ b/third_party/blink/public/common/loader/previews_state.h
@@ -28,14 +28,14 @@ // DEPRECATED: CLIENT_LOFI_ON = 1 << 1, Request a Lo-Fi version of the // resource from the client. This preview type has been deprecated and should // no longer be used. - CLIENT_LOFI_AUTO_RELOAD = 1 << 2, // Request the original version of the - // resource after a decoding error occurred - // when attempting to use Client Lo-Fi. - kClientLoFiAutoReload = CLIENT_LOFI_AUTO_RELOAD, + // DEPRECATED: CLIENT_LOFI_AUTO_RELOAD = 1 << 2, // Request the original + // version of the resource after a decoding error occurred when attempting to + // use Client Lo-Fi. + // kClientLoFiAutoReload = CLIENT_LOFI_AUTO_RELOAD, - SERVER_LITE_PAGE_ON = 1 << 3, // Request a Lite Page version of the - // resource from the server. - kServiceLitePageOn = SERVER_LITE_PAGE_ON, + // DEPRECATED: SERVER_LITE_PAGE_ON = 1 << 3, // Request a Lite Page version + // of the resource from the server. + // kServiceLitePageOn = SERVER_LITE_PAGE_ON, PREVIEWS_NO_TRANSFORM = 1 << 4, // Explicitly forbid Previews // transformations. @@ -46,16 +46,16 @@ // still happen if the page is heavy. kPreviewsOff = PREVIEWS_OFF, - NOSCRIPT_ON = 1 << 6, // Request that script be disabled for page load. - kNoScriptOn = NOSCRIPT_ON, + // DEPRECATED: NOSCRIPT_ON = 1 << 6, // Request that script be disabled for + // page load. kNoScriptOn = NOSCRIPT_ON, - RESOURCE_LOADING_HINTS_ON = - 1 << 7, // Request that resource loading hints be used during pageload. - kResourceLoadingHintsOn = RESOURCE_LOADING_HINTS_ON, + // DEPRECATED: RESOURCE_LOADING_HINTS_ON = + // 1 << 7, // Request that resource loading hints be used during pageload. + // kResourceLoadingHintsOn = RESOURCE_LOADING_HINTS_ON, - OFFLINE_PAGE_ON = - 1 << 8, // Request that an offline page be used if one is stored. - kOfflinePageOn = OFFLINE_PAGE_ON, + // DEPRECATED: OFFLINE_PAGE_ON = + // 1 << 8, // Request that an offline page be used if one is stored. + // kOfflinePageOn = OFFLINE_PAGE_ON, // DEPRECATED: LITE_PAGE_REDIRECT_ON = 1 << 9, // Allow the browser to // redirect the resource to a Lite Page server. Support for this functionality @@ -73,16 +73,6 @@ kPreviewsStateLast = PREVIEWS_STATE_LAST }; -// Combination of all previews that are guaranteed not to provide partial -// content. -// const PreviewsState PARTIAL_CONTENT_SAFE_PREVIEWS = SERVER_LOFI_ON; -// deprecated - -// Combination of all currently supported previews. -const PreviewsState ALL_SUPPORTED_PREVIEWS = SERVER_LITE_PAGE_ON | NOSCRIPT_ON | - RESOURCE_LOADING_HINTS_ON | - OFFLINE_PAGE_ON; - } // namespace blink #endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_PREVIEWS_STATE_H_
diff --git a/third_party/blink/public/mojom/cache_storage/cache_storage.mojom b/third_party/blink/public/mojom/cache_storage/cache_storage.mojom index 125cf28..2b45e72 100644 --- a/third_party/blink/public/mojom/cache_storage/cache_storage.mojom +++ b/third_party/blink/public/mojom/cache_storage/cache_storage.mojom
@@ -4,11 +4,14 @@ module blink.mojom; +import "mojo/public/mojom/base/big_buffer.mojom"; import "mojo/public/mojom/base/read_only_buffer.mojom"; +import "mojo/public/mojom/base/string16.mojom"; +import "mojo/public/mojom/base/time.mojom"; import "third_party/blink/public/mojom/blob/blob.mojom"; import "third_party/blink/public/mojom/fetch/fetch_api_response.mojom"; import "third_party/blink/public/mojom/fetch/fetch_api_request.mojom"; -import "mojo/public/mojom/base/string16.mojom"; +import "url/mojom/url.mojom"; // This enum is used in histograms, so do not change the ordering and always // append new types to the end. @@ -151,6 +154,14 @@ // Perform a batch of operations, used for PUT and DELETE operations. Batch(array<BatchOperation> batch_operations, int64 trace_id) => (CacheStorageVerboseError result); + + // Writes the side data (ex: V8 code cache) for the specified cache entry. + // If it doesn't exist, or the |expected_response_time| differs from the + // entry's, blink::mojom::CacheStorageError::kErrorNotFound is returned. + WriteSideData(url.mojom.Url url, + mojo_base.mojom.Time expected_response_time, + mojo_base.mojom.BigBuffer data, + int64 trace_id) => (CacheStorageError result); }; // Handles global CacheStorage methods, directly relates to methods available on
diff --git a/third_party/blink/public/web/web_navigation_params.h b/third_party/blink/public/web/web_navigation_params.h index 86616237..71f8ddfa 100644 --- a/third_party/blink/public/web/web_navigation_params.h +++ b/third_party/blink/public/web/web_navigation_params.h
@@ -57,7 +57,6 @@ class KURL; class WebDocumentLoader; -class WebLocalFrame; // This structure holds all information collected by Blink when // navigation is being initiated. @@ -93,12 +92,6 @@ // Whether the navigation is a result of client redirect. bool is_client_redirect = false; - // WebLocalFrame that initiated this navigation request. May be null for - // navigations that are not associated with a frame. Storing this pointer is - // dangerous, it should be verified by comparing against a set of known active - // frames before direct use. - WebLocalFrame* initiator_frame; - // Whether the navigation initiator frame has the // |network::mojom::blink::WebSandboxFlags::kDownloads| bit set in its sandbox // flags set.
diff --git a/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.cc b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.cc index 624e846..2c24d190 100644 --- a/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.cc +++ b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer.cc
@@ -345,10 +345,14 @@ WriteUint32Enum(ImageSerializationTag::kEndTag); WriteUint32(image_data->width()); WriteUint32(image_data->height()); - SkPixmap image_data_pixmap = image_data->GetSkPixmap(); - size_t pixel_buffer_length = image_data_pixmap.computeByteSize(); - WriteUint64(base::strict_cast<uint64_t>(pixel_buffer_length)); - WriteRawBytes(image_data_pixmap.addr(), pixel_buffer_length); + if (image_data->IsBufferBaseDetached()) { + WriteUint64(0u); + } else { + SkPixmap image_data_pixmap = image_data->GetSkPixmap(); + size_t pixel_buffer_length = image_data_pixmap.computeByteSize(); + WriteUint64(base::strict_cast<uint64_t>(pixel_buffer_length)); + WriteRawBytes(image_data_pixmap.addr(), pixel_buffer_length); + } return true; } if (wrapper_type_info == V8DOMPoint::GetWrapperTypeInfo()) {
diff --git a/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer_test.cc b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer_test.cc index 501fe9a..f8e1a44 100644 --- a/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer_test.cc +++ b/third_party/blink/renderer/bindings/core/v8/serialization/v8_script_value_serializer_test.cc
@@ -776,6 +776,22 @@ EXPECT_EQ(100u, new_pm.addr32(1, 0)[0]); } +TEST(V8ScriptValueSerializerTest, RoundTripDetachedImageData) { + // If an ImageData is detached, it can be serialized, but will fail when being + // deserialized. + V8TestingScope scope; + ImageData* image_data = ImageData::ValidateAndCreate( + 2, 1, base::nullopt, nullptr, ASSERT_NO_EXCEPTION); + SkPixmap pm = image_data->GetSkPixmap(); + pm.writable_addr32(0, 0)[0] = 200u; + image_data->data().GetAsUint8ClampedArray()->BufferBase()->Detach(); + + v8::Local<v8::Value> wrapper = + ToV8(image_data, scope.GetContext()->Global(), scope.GetIsolate()); + v8::Local<v8::Value> result = RoundTrip(wrapper, scope); + EXPECT_FALSE(V8ImageData::HasInstance(result, scope.GetIsolate())); +} + TEST(V8ScriptValueSerializerTest, RoundTripImageDataWithColorSpaceInfo) { // ImageData objects with color space information should serialize and // deserialize correctly.
diff --git a/third_party/blink/renderer/core/dom/events/event.idl b/third_party/blink/renderer/core/dom/events/event.idl index 702058fe..4d92c2a 100644 --- a/third_party/blink/renderer/core/dom/events/event.idl +++ b/third_party/blink/renderer/core/dom/events/event.idl
@@ -51,9 +51,10 @@ [Measure] void initEvent(DOMString type, optional boolean bubbles = false, optional boolean cancelable = false); - // Non-standard APIs [MeasureAs=EventSrcElement] readonly attribute EventTarget srcElement; [MeasureAs=EventReturnValue, CallWith=ScriptState, ImplementedAs=legacyReturnValue] attribute boolean returnValue; [MeasureAs=EventCancelBubble, CallWith=ScriptState] attribute boolean cancelBubble; + + // Non-standard APIs [MeasureAs=EventPath, CallWith=ScriptState] readonly attribute object path; };
diff --git a/third_party/blink/renderer/core/execution_context/execution_context.cc b/third_party/blink/renderer/core/execution_context/execution_context.cc index f191f6df..7d316ea 100644 --- a/third_party/blink/renderer/core/execution_context/execution_context.cc +++ b/third_party/blink/renderer/core/execution_context/execution_context.cc
@@ -518,7 +518,7 @@ const String& source_file) const { // The default value for any feature should be true unless restricted by // document policy - if (!RuntimeEnabledFeatures::DocumentPolicyEnabled(this)) + if (!RuntimeEnabledFeatures::DocumentPolicyEnabled()) return true; SecurityContext::FeatureStatus status =
diff --git a/third_party/blink/renderer/core/execution_context/security_context_init.cc b/third_party/blink/renderer/core/execution_context/security_context_init.cc index 03fdf85..24bb90a 100644 --- a/third_party/blink/renderer/core/execution_context/security_context_init.cc +++ b/third_party/blink/renderer/core/execution_context/security_context_init.cc
@@ -78,7 +78,7 @@ void SecurityContextInit::ApplyDocumentPolicy( DocumentPolicy::ParsedDocumentPolicy& document_policy, const String& report_only_document_policy_header) { - if (!RuntimeEnabledFeatures::DocumentPolicyEnabled(execution_context_)) + if (!RuntimeEnabledFeatures::DocumentPolicyEnabled()) return; // Because Document-Policy http header is parsed in DocumentLoader,
diff --git a/third_party/blink/renderer/core/exported/web_page_popup_impl.cc b/third_party/blink/renderer/core/exported/web_page_popup_impl.cc index e58e560..eb962ab2 100644 --- a/third_party/blink/renderer/core/exported/web_page_popup_impl.cc +++ b/third_party/blink/renderer/core/exported/web_page_popup_impl.cc
@@ -349,8 +349,15 @@ // an UpdateStyleAndLayoutTree() before opening the popup in the various // default event handlers. if (const auto* style = popup_client_->OwnerElement().GetComputedStyle()) { + // Avoid using dark color scheme stylesheet for popups when forced colors + // mode is active. + // TODO(iopopesc): move this to popup CSS when the FocedColors feature is + // enabled by default. + bool in_forced_colors_mode = + popup_client_->OwnerElement().GetDocument().InForcedColorsMode(); page_->GetSettings().SetPreferredColorScheme( - style->UsedColorScheme() == mojom::blink::ColorScheme::kDark + style->UsedColorScheme() == mojom::blink::ColorScheme::kDark && + !in_forced_colors_mode ? mojom::blink::PreferredColorScheme::kDark : mojom::blink::PreferredColorScheme::kLight); }
diff --git a/third_party/blink/renderer/core/frame/local_frame_client_impl.cc b/third_party/blink/renderer/core/frame/local_frame_client_impl.cc index df004b1f..63076a7 100644 --- a/third_party/blink/renderer/core/frame/local_frame_client_impl.cc +++ b/third_party/blink/renderer/core/frame/local_frame_client_impl.cc
@@ -647,16 +647,12 @@ if (initiator_frame_token) navigation_info->initiator_frame_token = *initiator_frame_token; if (origin_window && origin_window->GetFrame()) { - navigation_info->initiator_frame = - origin_window->GetFrame()->Client()->GetWebFrame(); // Many navigation paths do not pass an |initiator_frame_token|, so we need // to compute it here. if (!navigation_info->initiator_frame_token) { navigation_info->initiator_frame_token = origin_window->GetFrame()->GetFrameToken(); } - } else { - navigation_info->initiator_frame = nullptr; } for (auto& csp_policy : initiator_csp) { navigation_info->initiator_csp.emplace_back(
diff --git a/third_party/blink/renderer/core/html/canvas/image_data.cc b/third_party/blink/renderer/core/html/canvas/image_data.cc index 1e89555..d2bbbae8b 100644 --- a/third_party/blink/renderer/core/html/canvas/image_data.cc +++ b/third_party/blink/renderer/core/html/canvas/image_data.cc
@@ -365,6 +365,7 @@ } SkPixmap ImageData::GetSkPixmap() const { + CHECK(!IsBufferBaseDetached()); SkColorType color_type = kRGBA_8888_SkColorType; const void* data = nullptr; if (data_.IsUint8ClampedArray()) {
diff --git a/third_party/blink/renderer/core/html/forms/resources/color_picker.css b/third_party/blink/renderer/core/html/forms/resources/color_picker.css index cb08889fc..401f06da 100644 --- a/third_party/blink/renderer/core/html/forms/resources/color_picker.css +++ b/third_party/blink/renderer/core/html/forms/resources/color_picker.css
@@ -211,6 +211,14 @@ format-toggler { border: 1px solid WindowText; } + format-toggler:hover, + input:hover { + border: 1px solid Highlight; + } + eye-dropper:hover { + border: 1px solid Highlight; + padding: 5px; + } } @media (prefers-color-scheme: dark) {
diff --git a/third_party/blink/renderer/core/html/resources/images/time_icon.svg b/third_party/blink/renderer/core/html/resources/images/time_icon.svg index 71a94c0..d9c2206 100644 --- a/third_party/blink/renderer/core/html/resources/images/time_icon.svg +++ b/third_party/blink/renderer/core/html/resources/images/time_icon.svg
@@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24"><path fill="WindowText" d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"/><path d="M0 0h24v24H0z" fill="none"/><path d="M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"/></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24"><path fill="WindowText" d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"/><path d="M0 0h24v24H0z" fill="none"/><path fill="WindowText" d="M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"/></svg> \ No newline at end of file
diff --git a/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm_test.cc b/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm_test.cc index f5a401f..02c803a 100644 --- a/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm_test.cc +++ b/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm_test.cc
@@ -36,11 +36,6 @@ : ScopedLayoutNGGridForTest(true), ScopedLayoutNGBlockFragmentationForTest(true) {} - void SetUp() override { - NGBaseLayoutAlgorithmTest::SetUp(); - style_ = ComputedStyle::Create(); - } - void BuildGridItemsAndTrackCollections(NGGridLayoutAlgorithm& algorithm) { // Measure Items algorithm.ConstructAndAppendGridItems(&grid_items_, &out_of_flow_items_); @@ -197,8 +192,6 @@ NGGridLayoutAlgorithmTrackCollection algorithm_column_track_collection_; NGGridLayoutAlgorithmTrackCollection algorithm_row_track_collection_; - - scoped_refptr<ComputedStyle> style_; }; TEST_F(NGGridLayoutAlgorithmTest, NGGridLayoutAlgorithmMeasuring) {
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node_test.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node_test.cc index ef4b14c2..fb3f2f7 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node_test.cc +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node_test.cc
@@ -80,16 +80,10 @@ class NGInlineNodeTest : public NGLayoutTest { protected: - void SetUp() override { - NGLayoutTest::SetUp(); - style_ = ComputedStyle::Create(); - } - void SetupHtml(const char* id, String html) { SetBodyInnerHTML(html); layout_block_flow_ = To<LayoutNGBlockFlow>(GetLayoutObjectByElementId(id)); layout_object_ = layout_block_flow_->FirstChild(); - style_ = layout_object_ ? layout_object_->Style() : nullptr; } void UseLayoutObjectAndAhem() { @@ -158,7 +152,6 @@ EXPECT_FALSE(expected); } - scoped_refptr<const ComputedStyle> style_; LayoutNGBlockFlow* layout_block_flow_ = nullptr; LayoutObject* layout_object_ = nullptr; FontCachePurgePreventer purge_preventer_;
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping_test.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping_test.cc index 651cc8e..1785a2a 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping_test.cc +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping_test.cc
@@ -93,17 +93,11 @@ static const auto kCollapsed = NGOffsetMappingUnitType::kCollapsed; static const auto kIdentity = NGOffsetMappingUnitType::kIdentity; - void SetUp() override { - NGLayoutTest::SetUp(); - style_ = ComputedStyle::Create(); - } - void SetupHtml(const char* id, String html) { SetBodyInnerHTML(html); layout_block_flow_ = To<LayoutBlockFlow>(GetLayoutObjectByElementId(id)); DCHECK(layout_block_flow_->IsLayoutNGMixin()); layout_object_ = layout_block_flow_->FirstChild(); - style_ = layout_object_->Style(); } const NGOffsetMapping& GetOffsetMapping() const { @@ -235,7 +229,6 @@ return GetOffsetMapping().GetLastPosition(offset); } - scoped_refptr<const ComputedStyle> style_; LayoutBlockFlow* layout_block_flow_ = nullptr; LayoutObject* layout_object_ = nullptr; FontCachePurgePreventer purge_preventer_;
diff --git a/third_party/blink/renderer/core/layout/ng/ng_column_layout_algorithm_test.cc b/third_party/blink/renderer/core/layout/ng/ng_column_layout_algorithm_test.cc index f1dea0c4..b73c02d 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_column_layout_algorithm_test.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_column_layout_algorithm_test.cc
@@ -21,11 +21,6 @@ NGColumnLayoutAlgorithmTest() : ScopedLayoutNGBlockFragmentationForTest(true) {} - void SetUp() override { - NGBaseLayoutAlgorithmTest::SetUp(); - style_ = ComputedStyle::Create(); - } - scoped_refptr<const NGPhysicalBoxFragment> RunBlockLayoutAlgorithm( Element* element) { NGBlockNode container(element->GetLayoutBox()); @@ -48,8 +43,6 @@ auto fragment = RunBlockLayoutAlgorithm(element); return DumpFragmentTree(fragment.get()); } - - scoped_refptr<ComputedStyle> style_; }; TEST_F(NGColumnLayoutAlgorithmTest, EmptyMulticol) {
diff --git a/third_party/blink/renderer/core/layout/ng/ng_fieldset_layout_algorithm_test.cc b/third_party/blink/renderer/core/layout/ng/ng_fieldset_layout_algorithm_test.cc index 4102938..d50eec06 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_fieldset_layout_algorithm_test.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_fieldset_layout_algorithm_test.cc
@@ -21,10 +21,6 @@ NGFieldsetLayoutAlgorithmTest() : ScopedLayoutNGFieldsetForTest(true), ScopedLayoutNGBlockFragmentationForTest(true) {} - void SetUp() override { - NGBaseLayoutAlgorithmTest::SetUp(); - style_ = ComputedStyle::Create(); - } scoped_refptr<const NGPhysicalBoxFragment> RunBlockLayoutAlgorithm( Element* element) { @@ -69,8 +65,6 @@ auto fragment = RunBlockLayoutAlgorithm(element); return DumpFragmentTree(fragment.get()); } - - scoped_refptr<ComputedStyle> style_; }; TEST_F(NGFieldsetLayoutAlgorithmTest, Empty) {
diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc index 028f8f7..ceb2348 100644 --- a/third_party/blink/renderer/core/loader/document_loader.cc +++ b/third_party/blink/renderer/core/loader/document_loader.cc
@@ -2069,7 +2069,6 @@ return; // Verify that certain types are not on main frame requests. - DCHECK_NE(PreviewsTypes::kClientLoFiAutoReload, previews_state_); DCHECK_NE(PreviewsTypes::kSubresourceRedirectOn, previews_state_); static_assert(PreviewsTypes::kPreviewsStateLast ==
diff --git a/third_party/blink/renderer/core/loader/image_loader.cc b/third_party/blink/renderer/core/loader/image_loader.cc index e88daab..91248da 100644 --- a/third_party/blink/renderer/core/loader/image_loader.cc +++ b/third_party/blink/renderer/core/loader/image_loader.cc
@@ -85,7 +85,7 @@ // Note: UnoptimizedImagePolicies is currently part of DocumentPolicy. // The original runtime feature UnoptimizedImagePolicies is no longer used, // and are planned to be removed. - if (RuntimeEnabledFeatures::DocumentPolicyEnabled(context) && + if (RuntimeEnabledFeatures::DocumentPolicyEnabled() && !new_image->IsAcceptableCompressionRatio(*context)) { return true; }
diff --git a/third_party/blink/renderer/modules/cache_storage/cache_test.cc b/third_party/blink/renderer/modules/cache_storage/cache_test.cc index de0971b6..722528b 100644 --- a/third_party/blink/renderer/modules/cache_storage/cache_test.cc +++ b/third_party/blink/renderer/modules/cache_storage/cache_test.cc
@@ -189,6 +189,13 @@ CheckBatchOperationsIfProvided(batch_operations); std::move(callback).Run(CacheStorageVerboseError::New(error_, String())); } + void WriteSideData(const blink::KURL& url, + base::Time expected_response_time, + mojo_base::BigBuffer data, + int64_t trace_id, + WriteSideDataCallback callback) override { + NOTREACHED(); + } protected: void CheckUrlIfProvided(const KURL& url) {
diff --git a/third_party/blink/renderer/modules/delegated_ink/delegated_ink_trail_presenter.cc b/third_party/blink/renderer/modules/delegated_ink/delegated_ink_trail_presenter.cc index c8431ee4..b574e03 100644 --- a/third_party/blink/renderer/modules/delegated_ink/delegated_ink_trail_presenter.cc +++ b/third_party/blink/renderer/modules/delegated_ink/delegated_ink_trail_presenter.cc
@@ -133,11 +133,25 @@ border_box_rect_absolute.Width().ToFloat(), border_box_rect_absolute.Height().ToFloat()); + // This is used to know if the user starts inking with the pointer down or + // not, so that we can stop drawing delegated ink trails as quickly as + // possible if the left button state changes, as presumably that indicates the + // the end of inking. + // Touch events do not need to be special cased here. When something is + // physically touching the screen to trigger a touch event, it is converted to + // a pointerevent with kLeftButtonDown, and if a stylus with hovering + // capabilities sent the touch event, then the resulting pointerevent will not + // have the kLeftButtonDown modifier. In either case, it will match the + // expectations of a normal mouse event, so it doesn't need to be handled + // separately. + const bool is_hovering = + !(evt->GetModifiers() & WebInputEvent::Modifiers::kLeftButtonDown); + const double diameter_in_physical_pixels = style->diameter() * effective_zoom; std::unique_ptr<viz::DelegatedInkMetadata> metadata = std::make_unique<viz::DelegatedInkMetadata>( point, diameter_in_physical_pixels, color.Rgb(), - evt->PlatformTimeStamp(), area); + evt->PlatformTimeStamp(), area, is_hovering); TRACE_EVENT_INSTANT1( "blink", "DelegatedInkTrailPresenter::updateInkTrailStartPoint",
diff --git a/third_party/blink/renderer/modules/delegated_ink/delegated_ink_trail_presenter_unittest.cc b/third_party/blink/renderer/modules/delegated_ink/delegated_ink_trail_presenter_unittest.cc index 17e30d4..6faf067 100644 --- a/third_party/blink/renderer/modules/delegated_ink/delegated_ink_trail_presenter_unittest.cc +++ b/third_party/blink/renderer/modules/delegated_ink/delegated_ink_trail_presenter_unittest.cc
@@ -24,7 +24,8 @@ : point_(metadata->point()), color_(metadata->color()), diameter_(metadata->diameter()), - area_(metadata->presentation_area()) {} + area_(metadata->presentation_area()), + is_hovering_(metadata->is_hovering()) {} explicit TestDelegatedInkMetadata(gfx::RectF area, float device_pixel_ratio = 1.0) : area_(area) { @@ -43,18 +44,21 @@ EXPECT_NEAR(area_.y(), actual.area_.y(), LayoutUnit::Epsilon()); EXPECT_NEAR(area_.width(), actual.area_.width(), LayoutUnit::Epsilon()); EXPECT_NEAR(area_.height(), actual.area_.height(), LayoutUnit::Epsilon()); + EXPECT_EQ(is_hovering_, actual.is_hovering_); } void SetPoint(gfx::PointF pt) { point_ = pt; } void SetColor(SkColor color) { color_ = color; } void SetDiameter(double diameter) { diameter_ = diameter; } void SetArea(gfx::RectF area) { area_ = area; } + void SetHovering(bool hovering) { is_hovering_ = hovering; } private: gfx::PointF point_; SkColor color_; double diameter_; gfx::RectF area_; + bool is_hovering_; }; DelegatedInkTrailPresenter* CreatePresenter(Element* element, @@ -78,10 +82,14 @@ SetWebViewSize(width + 1, height + 1); } - PointerEvent* CreatePointerMoveEvent(gfx::PointF pt) { + PointerEvent* CreatePointerMoveEvent(gfx::PointF pt, bool hovering) { PointerEventInit* init = PointerEventInit::Create(); init->setClientX(pt.x()); init->setClientY(pt.y()); + if (!hovering) { + init->setButtons(MouseEvent::WebInputEventModifiersToButtons( + WebInputEvent::Modifiers::kLeftButtonDown)); + } PointerEvent* event = PointerEvent::Create("pointermove", init); event->SetTrusted(true); return event; @@ -167,7 +175,8 @@ gfx::PointF pt(100, 100); presenter->updateInkTrailStartPoint( ToScriptStateForMainWorld(GetDocument().GetFrame()), - CreatePointerMoveEvent(pt), &style); + CreatePointerMoveEvent(pt, /*hovering*/ true), &style); + expected_metadata.SetHovering(true); expected_metadata.SetPoint(pt); expected_metadata.ExpectEqual(GetActualMetadata()); @@ -227,7 +236,8 @@ gfx::PointF pt(87, 113); presenter->updateInkTrailStartPoint( ToScriptStateForMainWorld(GetDocument().GetFrame()), - CreatePointerMoveEvent(pt), &style); + CreatePointerMoveEvent(pt, /*hovering*/ true), &style); + expected_metadata.SetHovering(true); pt.Scale(kZoom); expected_metadata.SetPoint(pt); @@ -291,7 +301,8 @@ gfx::PointF pt(380, 175); presenter->updateInkTrailStartPoint( ToScriptStateForMainWorld(GetDocument().GetFrame()), - CreatePointerMoveEvent(pt), &style); + CreatePointerMoveEvent(pt, /*hovering*/ false), &style); + expected_metadata.SetHovering(false); expected_metadata.SetPoint(pt); expected_metadata.ExpectEqual(GetActualMetadata()); @@ -389,7 +400,8 @@ gfx::PointF pt(380, 375); presenter->updateInkTrailStartPoint( ToScriptStateForMainWorld(iframe_document->GetFrame()), - CreatePointerMoveEvent(pt), &style); + CreatePointerMoveEvent(pt, /*hovering*/ false), &style); + expected_metadata.SetHovering(false); expected_metadata.SetPoint( gfx::PointF(pt.x() + kIframeLeftOffset, pt.y() + kIframeTopOffset)); @@ -515,7 +527,8 @@ gfx::PointF pt(350, 375); presenter->updateInkTrailStartPoint( ToScriptStateForMainWorld(iframe_document->GetFrame()), - CreatePointerMoveEvent(pt), &style); + CreatePointerMoveEvent(pt, /*hovering*/ true), &style); + expected_metadata.SetHovering(true); expected_metadata.SetPoint(gfx::PointF(pt.x() + kInnerIframeLeftOffset, pt.y() + kInnerIframeTopOffset)); @@ -598,7 +611,8 @@ gfx::PointF pt(380, 375); presenter->updateInkTrailStartPoint( ToScriptStateForMainWorld(iframe_document->GetFrame()), - CreatePointerMoveEvent(pt), &style); + CreatePointerMoveEvent(pt, /*hovering*/ true), &style); + expected_metadata.SetHovering(true); expected_metadata.SetPoint( gfx::PointF(pt.x() + kIframeLeftOffset, pt.y() + kIframeTopOffset)); @@ -632,7 +646,8 @@ gfx::PointF pt(70, 109); presenter->updateInkTrailStartPoint( ToScriptStateForMainWorld(GetDocument().GetFrame()), - CreatePointerMoveEvent(pt), &style); + CreatePointerMoveEvent(pt, /*hovering*/ false), &style); + expected_metadata.SetHovering(false); expected_metadata.SetPoint(pt); expected_metadata.ExpectEqual(GetActualMetadata()); @@ -716,7 +731,8 @@ gfx::PointF pt(102, 67); presenter->updateInkTrailStartPoint( ToScriptStateForMainWorld(iframe_document->GetFrame()), - CreatePointerMoveEvent(pt), &style); + CreatePointerMoveEvent(pt, /*hovering*/ false), &style); + expected_metadata.SetHovering(false); expected_metadata.SetPoint( gfx::PointF(pt.x() + kIframeLeftOffset, pt.y() + kIframeTopOffset)); @@ -806,7 +822,8 @@ gfx::PointF pt(102, 67); presenter->updateInkTrailStartPoint( ToScriptStateForMainWorld(iframe_document->GetFrame()), - CreatePointerMoveEvent(pt), &style); + CreatePointerMoveEvent(pt, /*hovering*/ true), &style); + expected_metadata.SetHovering(true); expected_metadata.SetPoint( gfx::PointF(pt.x() + kIframeLeftOffset, pt.y() + kIframeTopOffset)); @@ -927,7 +944,8 @@ gfx::PointF pt(357, 401); presenter->updateInkTrailStartPoint( ToScriptStateForMainWorld(iframe_document->GetFrame()), - CreatePointerMoveEvent(pt), &style); + CreatePointerMoveEvent(pt, /*hovering*/ false), &style); + expected_metadata.SetHovering(false); expected_metadata.SetPoint(gfx::PointF(pt.x() + kInnerIframeLeftOffset, pt.y() + kInnerIframeTopOffset));
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 index 31f0ad0..9d6cb75 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -756,7 +756,6 @@ }, { name: "DocumentPolicy", - origin_trial_feature_name: "DocumentPolicy", status: "stable", }, { @@ -1843,8 +1842,7 @@ }, { name: "Serial", - origin_trial_feature_name: "Serial", - status: {"Android": "", "default": "experimental"}, + status: {"Android": "", "default": "stable"}, }, { name: "ServiceWorkerClientLifecycleState",
diff --git a/third_party/blink/renderer/platform/widget/compositing/render_frame_metadata_observer_impl.cc b/third_party/blink/renderer/platform/widget/compositing/render_frame_metadata_observer_impl.cc index 101e6e5c..775bafa 100644 --- a/third_party/blink/renderer/platform/widget/compositing/render_frame_metadata_observer_impl.cc +++ b/third_party/blink/renderer/platform/widget/compositing/render_frame_metadata_observer_impl.cc
@@ -161,7 +161,7 @@ rfm1.page_scale_factor != rfm2.page_scale_factor || rfm1.external_page_scale_factor != rfm2.external_page_scale_factor || rfm1.is_mobile_optimized != rfm2.is_mobile_optimized || - rfm1.has_delegated_ink_metadata != rfm2.has_delegated_ink_metadata || + rfm1.delegated_ink_metadata != rfm2.delegated_ink_metadata || rfm1.device_scale_factor != rfm2.device_scale_factor || rfm1.viewport_size_in_pixels != rfm2.viewport_size_in_pixels || rfm1.top_controls_height != rfm2.top_controls_height ||
diff --git a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-navigated-expected.txt b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-navigated-expected.txt index a96554f0..0b96c8de 100644 --- a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-navigated-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-navigated-expected.txt
@@ -40,6 +40,8 @@ PASS window.cached_navigator_mediaSession.playbackState is 'none' PASS window.cached_navigator_presentation.defaultRequest is null PASS window.cached_navigator_presentation.receiver is null +PASS window.cached_navigator_serial.onconnect is null +PASS window.cached_navigator_serial.ondisconnect is null PASS window.cached_navigator_serviceWorker.controller is null PASS window.cached_navigator_serviceWorker.oncontrollerchange is null PASS window.cached_navigator_serviceWorker.onmessage is null
diff --git a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-and-gced-expected.txt b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-and-gced-expected.txt index afb062d..b17bd1f5 100644 --- a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-and-gced-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-and-gced-expected.txt
@@ -40,6 +40,8 @@ PASS window.cached_navigator_mediaSession.playbackState is 'none' PASS window.cached_navigator_presentation.defaultRequest is null PASS window.cached_navigator_presentation.receiver is null +PASS window.cached_navigator_serial.onconnect is null +PASS window.cached_navigator_serial.ondisconnect is null PASS window.cached_navigator_serviceWorker.controller is null PASS window.cached_navigator_serviceWorker.oncontrollerchange is null PASS window.cached_navigator_serviceWorker.onmessage is null
diff --git a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-expected.txt b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-expected.txt index 8f86d40..3530916 100644 --- a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-expected.txt
@@ -40,6 +40,8 @@ PASS window.cached_navigator_mediaSession.playbackState is 'none' PASS window.cached_navigator_presentation.defaultRequest is null PASS window.cached_navigator_presentation.receiver is null +PASS window.cached_navigator_serial.onconnect is null +PASS window.cached_navigator_serial.ondisconnect is null PASS window.cached_navigator_serviceWorker.controller is null PASS window.cached_navigator_serviceWorker.oncontrollerchange is null PASS window.cached_navigator_serviceWorker.onmessage is null
diff --git a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-navigated-expected.txt b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-navigated-expected.txt index c717263..d62632e5 100644 --- a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-navigated-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-navigated-expected.txt
@@ -46,6 +46,8 @@ PASS oldChildWindow.navigator.presentation.receiver is newChildWindow.navigator.presentation.receiver PASS oldChildWindow.navigator.product is newChildWindow.navigator.product PASS oldChildWindow.navigator.productSub is newChildWindow.navigator.productSub +PASS oldChildWindow.navigator.serial.onconnect is newChildWindow.navigator.serial.onconnect +PASS oldChildWindow.navigator.serial.ondisconnect is newChildWindow.navigator.serial.ondisconnect PASS oldChildWindow.navigator.serviceWorker.controller is newChildWindow.navigator.serviceWorker.controller PASS oldChildWindow.navigator.serviceWorker.oncontrollerchange is newChildWindow.navigator.serviceWorker.oncontrollerchange PASS oldChildWindow.navigator.serviceWorker.onmessage is newChildWindow.navigator.serviceWorker.onmessage
diff --git a/third_party/blink/web_tests/virtual/stable/webexposed/feature-policy-features-expected.txt b/third_party/blink/web_tests/virtual/stable/webexposed/feature-policy-features-expected.txt index 2e4d320..4c4046d1 100644 --- a/third_party/blink/web_tests/virtual/stable/webexposed/feature-policy-features-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/webexposed/feature-policy-features-expected.txt
@@ -34,6 +34,7 @@ picture-in-picture publickey-credentials-get screen-wake-lock +serial sync-xhr usb xr-spatial-tracking
diff --git a/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-dedicated-worker-expected.txt b/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-dedicated-worker-expected.txt index 58e9629c..1142718 100644 --- a/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-dedicated-worker-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-dedicated-worker-expected.txt
@@ -1116,6 +1116,28 @@ [Worker] getter statusCode [Worker] getter violatedDirective [Worker] method constructor +[Worker] interface Serial : EventTarget +[Worker] attribute @@toStringTag +[Worker] getter onconnect +[Worker] getter ondisconnect +[Worker] method constructor +[Worker] method getPorts +[Worker] setter onconnect +[Worker] setter ondisconnect +[Worker] interface SerialPort : EventTarget +[Worker] attribute @@toStringTag +[Worker] getter onconnect +[Worker] getter ondisconnect +[Worker] getter readable +[Worker] getter writable +[Worker] method close +[Worker] method constructor +[Worker] method getInfo +[Worker] method getSignals +[Worker] method open +[Worker] method setSignals +[Worker] setter onconnect +[Worker] setter ondisconnect [Worker] interface ServiceWorkerRegistration : EventTarget [Worker] attribute @@toStringTag [Worker] getter active @@ -2745,6 +2767,7 @@ [Worker] getter permissions [Worker] getter platform [Worker] getter product +[Worker] getter serial [Worker] getter storage [Worker] getter usb [Worker] getter userAgent
diff --git a/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt b/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt index 6b2cb14..75d90f4 100644 --- a/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt
@@ -4564,6 +4564,7 @@ getter product getter productSub getter scheduling + getter serial getter serviceWorker getter storage getter usb @@ -6964,6 +6965,29 @@ attribute @@toStringTag getter error method constructor +interface Serial : EventTarget + attribute @@toStringTag + getter onconnect + getter ondisconnect + method constructor + method getPorts + method requestPort + setter onconnect + setter ondisconnect +interface SerialPort : EventTarget + attribute @@toStringTag + getter onconnect + getter ondisconnect + getter readable + getter writable + method close + method constructor + method getInfo + method getSignals + method open + method setSignals + setter onconnect + setter ondisconnect interface ServiceWorker : EventTarget attribute @@toStringTag getter onerror
diff --git a/third_party/boringssl/BUILD.generated.gni b/third_party/boringssl/BUILD.generated.gni index 528bdbd..8baaa14 100644 --- a/third_party/boringssl/BUILD.generated.gni +++ b/third_party/boringssl/BUILD.generated.gni
@@ -412,6 +412,27 @@ "src/include/openssl/tls1.h", ] +tool_sources = [ + "src/tool/args.cc", + "src/tool/ciphers.cc", + "src/tool/client.cc", + "src/tool/const.cc", + "src/tool/digest.cc", + "src/tool/fd.cc", + "src/tool/file.cc", + "src/tool/generate_ed25519.cc", + "src/tool/genrsa.cc", + "src/tool/internal.h", + "src/tool/pkcs12.cc", + "src/tool/rand.cc", + "src/tool/server.cc", + "src/tool/sign.cc", + "src/tool/speed.cc", + "src/tool/tool.cc", + "src/tool/transport_common.cc", + "src/tool/transport_common.h", +] + crypto_sources_ios_aarch64 = [ "ios-aarch64/crypto/chacha/chacha-armv8.S", "ios-aarch64/crypto/fipsmodule/aesv8-armx64.S",
diff --git a/third_party/dav1d/dav1d_generated.gni b/third_party/dav1d/dav1d_generated.gni index 690fae5..c59cb08 100644 --- a/third_party/dav1d/dav1d_generated.gni +++ b/third_party/dav1d/dav1d_generated.gni
@@ -1,4 +1,4 @@ -# Copyright 2020 The Chromium Authors. All rights reserved. +# 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.
diff --git a/third_party/emoji-metadata/LICENSE b/third_party/emoji-metadata/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/third_party/emoji-metadata/LICENSE
@@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License.
diff --git a/third_party/emoji-metadata/OWNERS b/third_party/emoji-metadata/OWNERS new file mode 100644 index 0000000..6e8e4b7e --- /dev/null +++ b/third_party/emoji-metadata/OWNERS
@@ -0,0 +1,2 @@ +jopalmer@chromium.org +file://chrome/browser/chromeos/input_method/OWNERS
diff --git a/third_party/emoji-metadata/README.chromium b/third_party/emoji-metadata/README.chromium new file mode 100644 index 0000000..209b321f --- /dev/null +++ b/third_party/emoji-metadata/README.chromium
@@ -0,0 +1,12 @@ +Name: emoji-metadata +Short Name: emoji-metadata +URL: https://github.com/googlefonts/emoji-metadata +Version: 0 +Date: 20210105 +Revision: 9d8e5cfe52ee763b7dd91e33e5a50250efbf7135 +License: Apache 2.0 +License File: LICENCE +Security Critical: yes + +Description: +This is an import of the emoji metadata repository from the source URL above. The emoji metadata repository contains a JSON file with an ordering for emoji which can be used in an emoji picker. This ordering also includes full skin tone support. It is currently used for the chrome OS emoji picker.
diff --git a/tools/infra/clobber_cache_utils.py b/tools/infra/clobber_cache_utils.py index 8fef31d..fcc2a39 100644 --- a/tools/infra/clobber_cache_utils.py +++ b/tools/infra/clobber_cache_utils.py
@@ -35,6 +35,7 @@ cmd = [ _SWARMING_CLIENT, 'trigger', + '-raw-cmd', '-S', swarming_server, '-dimension',
diff --git a/tools/mb/mb.py b/tools/mb/mb.py index 9ebb137d..f9f07b9 100755 --- a/tools/mb/mb.py +++ b/tools/mb/mb.py
@@ -1556,6 +1556,7 @@ cfi_diag = 'use_cfi_diag=true' in vals['gn_args'] clang_coverage = 'use_clang_coverage=true' in vals['gn_args'] java_coverage = 'use_jacoco_coverage=true' in vals['gn_args'] + javascript_coverage = 'use_javascript_coverage=true' in vals['gn_args'] executable = isolate_map[target].get('executable', target) executable_suffix = isolate_map[target].get( @@ -1603,6 +1604,9 @@ '--tsan=%d' % tsan, '--cfi-diag=%d' % cfi_diag, ] + + if javascript_coverage: + cmdline += ['--devtools-code-coverage=${ISOLATED_OUTDIR}'] elif test_type in ('windowed_test_launcher', 'console_test_launcher'): cmdline += [ '../../testing/test_env.py',
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl index 44a5509..4f9b366 100644 --- a/tools/mb/mb_config.pyl +++ b/tools/mb/mb_config.pyl
@@ -326,7 +326,7 @@ 'linux-blink-heap-concurrent-marking-tsan-rel': 'release_trybot_tsan', 'linux-blink-heap-verification': 'release_bot_enable_blink_heap_verification_dcheck_always_on', 'linux-chromeos-code-coverage': 'chromeos_with_codecs_release_bot_coverage', - 'linux-chromeos-js-code-coverage': 'chromeos_with_codecs_release_bot', + 'linux-chromeos-js-code-coverage': 'chromeos_with_codecs_release_bot_javascript_coverage', 'linux-chromium-tests-staging-builder': 'release_bot', 'linux-code-coverage': 'clang_code_coverage', 'linux-example-builder': 'release_bot', @@ -590,7 +590,7 @@ 'chromium.perf.fyi': { 'android-cfi-builder-perf-fyi': 'official_goma_minimal_symbols_android_thin_lto_opt', 'android_arm64-cfi-builder-perf-fyi': 'official_goma_minimal_symbols_android_thin_lto_opt_arm64', - 'chromeos-kevin-builder-perf-fyi': 'chromeos_kevin', + 'chromeos-kevin-builder-perf-fyi': 'chromeos_kevin_include_unwind_tables_official', }, 'chromium.swangle': { @@ -1027,7 +1027,6 @@ 'linux_layout_tests_layout_ng_disabled': 'release_trybot', 'linux-layout-tests-edit-ng': 'release_trybot', 'linux-blink-web-tests-force-accessibility-rel': 'release_trybot', - 'linux-layout-tests-fragment-item': 'release_trybot', 'linux_mojo': 'release_trybot', 'linux_mojo_chromeos': 'chromeos_with_codecs_release_trybot', 'linux_optional_gpu_tests_rel': 'gpu_fyi_tests_release_trybot', @@ -1738,6 +1737,10 @@ 'chromeos_with_codecs', 'release_bot', 'use_clang_coverage', ], + 'chromeos_with_codecs_release_bot_javascript_coverage': [ + 'chromeos_with_codecs', 'release_bot', 'use_javascript_coverage', + ], + 'chromeos_with_codecs_release_trybot': [ 'chromeos_with_codecs', 'release_trybot', 'no_symbols', ], @@ -3329,6 +3332,10 @@ 'gn_args': 'use_jacoco_coverage=true', }, + 'use_javascript_coverage': { + 'gn_args': 'use_javascript_coverage=true', + }, + 'v8_simulate_arm': { 'gn_args': 'target_cpu="x86" v8_target_cpu="arm"', },
diff --git a/tools/mb/mb_config_expectations/chromium.fyi.json b/tools/mb/mb_config_expectations/chromium.fyi.json index 837c2e9..0d02c48 100644 --- a/tools/mb/mb_config_expectations/chromium.fyi.json +++ b/tools/mb/mb_config_expectations/chromium.fyi.json
@@ -580,7 +580,8 @@ "is_debug": false, "proprietary_codecs": true, "target_os": "chromeos", - "use_goma": true + "use_goma": true, + "use_javascript_coverage": true } }, "linux-chromium-tests-staging-builder": {
diff --git a/tools/mb/mb_config_expectations/chromium.perf.fyi.json b/tools/mb/mb_config_expectations/chromium.perf.fyi.json index 8625faf..eb83001 100644 --- a/tools/mb/mb_config_expectations/chromium.perf.fyi.json +++ b/tools/mb/mb_config_expectations/chromium.perf.fyi.json
@@ -29,7 +29,10 @@ "chromeos-kevin-builder-perf-fyi": { "args_file": "//build/args/chromeos/kevin.gni", "gn_args": { + "exclude_unwind_tables": false, + "is_chrome_branded": true, "is_chromeos_device": true, + "is_official_build": true, "ozone_platform_headless": true, "use_goma": true }
diff --git a/tools/mb/mb_config_expectations/tryserver.chromium.linux.json b/tools/mb/mb_config_expectations/tryserver.chromium.linux.json index 0330c82..f58bdfc 100644 --- a/tools/mb/mb_config_expectations/tryserver.chromium.linux.json +++ b/tools/mb/mb_config_expectations/tryserver.chromium.linux.json
@@ -463,15 +463,6 @@ "use_goma": true } }, - "linux-layout-tests-fragment-item": { - "gn_args": { - "dcheck_always_on": true, - "is_component_build": false, - "is_debug": false, - "symbol_level": 1, - "use_goma": true - } - }, "linux-libfuzzer-asan-rel": { "gn_args": { "dcheck_always_on": true,
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 220aa13..926dd33 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -25238,7 +25238,7 @@ <int value="993" label="WEBVIEWINTERNAL_SETZOOMMODE"/> <int value="994" label="WEBVIEWINTERNAL_GETZOOMMODE"/> <int value="995" label="LAUNCHERSEARCHPROVIDER_SETSEARCHRESULTS"/> - <int value="996" label="DATAREDUCTIONPROXY_CLEARDATASAVINGS"/> + <int value="996" label="DELETED_DATAREDUCTIONPROXY_CLEARDATASAVINGS"/> <int value="997" label="BLUETOOTHPRIVATE_SETDISCOVERYFILTER"/> <int value="998" label="FILESYSTEM_GETVOLUMELIST"/> <int value="999" label="NETWORKINGPRIVATE_GETDEVICESTATES"/> @@ -25338,7 +25338,7 @@ <int value="1087" label="DELETED_EASYUNLOCKPRIVATE_SETUPCONNECTIONDISCONNECT"/> <int value="1088" label="DELETED_EASYUNLOCKPRIVATE_SETUPCONNECTIONSEND"/> - <int value="1089" label="DATAREDUCTIONPROXY_GETDATAUSAGE"/> + <int value="1089" label="DELETED_DATAREDUCTIONPROXY_GETDATAUSAGE"/> <int value="1090" label="DELETED_EASYUNLOCKPRIVATE_SETUPCONNECTIONGETDEVICEADDRESS"/> <int value="1091" label="TABCAPTURE_CAPTUREOFFSCREENTAB"/> @@ -26218,7 +26218,7 @@ <int value="35" label="kDeleted_Copresence"/> <int value="36" label="kDeleted_CopresencePrivate"/> <int value="37" label="kCryptotokenPrivate"/> - <int value="38" label="kDataReductionProxy"/> + <int value="38" label="kDeleted_DataReductionProxy"/> <int value="39" label="kDiagnostics"/> <int value="40" label="kDeleted_Dial"/> <int value="41" label="kDebugger"/> @@ -36826,11 +36826,13 @@ <enum name="HoldingSpacePodAction"> <int value="0" label="kClick (Deprecated)"/> - <int value="1" label="kShow"/> - <int value="2" label="kClose"/> + <int value="1" label="kShowBubble"/> + <int value="2" label="kCloseBubble"/> <int value="3" label="kShowContextMenu"/> <int value="4" label="kShowPreviews"/> <int value="5" label="kHidePreviews"/> + <int value="6" label="kShowPod"/> + <int value="7" label="kHidePod"/> </enum> <enum name="HomeButtonPreferenceStateType"> @@ -58741,6 +58743,7 @@ <int value="7" label="OnboardingDismissPrompt"/> <int value="8" label="Invalid"/> <int value="9" label="PhoneConnecting"/> + <int value="10" label="PhoneTetherConnectionPending"/> </enum> <enum name="PhoneHubTetherConnectionResult">
diff --git a/tools/metrics/histograms/histograms_xml/android/histograms.xml b/tools/metrics/histograms/histograms_xml/android/histograms.xml index e7044af..754f513 100644 --- a/tools/metrics/histograms/histograms_xml/android/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/android/histograms.xml
@@ -1599,7 +1599,7 @@ </histogram> <histogram name="Android.OmniboxFocusReason" enum="OmniboxFocusReason" - expires_after="2021-01-24"> + expires_after="2021-12-01"> <owner>mdjones@chromium.org</owner> <owner>twellington@chromium.org</owner> <owner>amaralp@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/blink/histograms.xml b/tools/metrics/histograms/histograms_xml/blink/histograms.xml index e1a455b..f37e5e3 100644 --- a/tools/metrics/histograms/histograms_xml/blink/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/blink/histograms.xml
@@ -95,7 +95,7 @@ </histogram> <histogram name="Blink.Canvas.CreateImageBitmapSource" - enum="CanvasCreateImageBitmapSource" expires_after="2021-01-31"> + enum="CanvasCreateImageBitmapSource" expires_after="2022-04-04"> <owner>fserb@chromium.org</owner> <owner>aaronhk@chromium.org</owner> <summary> @@ -171,8 +171,8 @@ </summary> </histogram> -<histogram name="Blink.Canvas.IsComposited" enum="BooleanSuccess" - expires_after="2021-01-31"> +<histogram name="Blink.Canvas.IsComposited" enum="Boolean" + expires_after="2022-04-04"> <owner>aaronhk@chromium.org</owner> <owner>fserb@chromium.org</owner> <summary> @@ -240,7 +240,7 @@ </histogram> <histogram base="true" name="Blink.Canvas.RequestedImageMimeTypes" - enum="RequestedImageMimeType" expires_after="2021-01-31"> + enum="RequestedImageMimeType" expires_after="2022-04-04"> <owner>fserb@chromium.org</owner> <owner>aaronhk@chromium.org</owner> <summary> @@ -250,21 +250,21 @@ </histogram> <histogram name="Blink.Canvas.ResourceProviderIsAccelerated" - enum="BooleanHardwareAccelerated" expires_after="2021-04-04"> + enum="BooleanHardwareAccelerated" expires_after="2022-04-04"> <owner>aaronhk@chromium.org</owner> <owner>fserb@chromium.org</owner> <summary>Logs if the canvas resource provider is accelerated or not.</summary> </histogram> <histogram name="Blink.Canvas.ResourceProviderType" - enum="CanvasResourceProviderType" expires_after="2021-04-04"> + enum="CanvasResourceProviderType" expires_after="2022-04-04"> <owner>aaronhk@chromium.org</owner> <owner>fserb@chromium.org</owner> <summary>Records the type of resource provider used for a canvas.</summary> </histogram> <histogram name="Blink.Canvas.ResourceProviderUsage" - enum="CanvasResourceProviderUsage" expires_after="2021-01-31"> + enum="CanvasResourceProviderUsage" expires_after="2022-04-04"> <owner>aaronhk@chromium.org</owner> <owner>fserb@chromium.org</owner> <summary> @@ -273,7 +273,7 @@ </histogram> <histogram name="Blink.Canvas.SqrtNumberOfPixels" units="sqrt(pixels)" - expires_after="2021-01-31"> + expires_after="2022-04-04"> <owner>aaronhk@chromium.org</owner> <owner>fserb@chromium.org</owner> <summary> @@ -350,7 +350,7 @@ </histogram> <histogram base="true" name="Blink.Canvas.ToBlob.ScaledDuration" - units="microseconds/sqrt(pixels)" expires_after="2021-01-31"> + units="microseconds/sqrt(pixels)" expires_after="2022-04-04"> <owner>fserb@chromium.org</owner> <owner>aaronhk@chromium.org</owner> <summary> @@ -369,7 +369,7 @@ </histogram> <histogram base="true" name="Blink.Canvas.ToDataURLScaledDuration" - units="microseconds/sqrt(pixels)" expires_after="2021-01-31"> + units="microseconds/sqrt(pixels)" expires_after="2022-04-04"> <owner>fserb@chromium.org</owner> <owner>aaronhk@chromium.org</owner> <summary> @@ -1651,7 +1651,7 @@ </histogram> <histogram name="Blink.OffscreenCanvas.SqrtNumberOfPixels" units="sqrt(pixels)" - expires_after="2021-01-31"> + expires_after="2022-04-04"> <owner>aaronhk@chromium.org</owner> <owner>fserb@chromium.org</owner> <summary> @@ -1661,13 +1661,10 @@ </histogram> <histogram name="Blink.OffscreenCanvas.TransferControlToOffscreen" - enum="Boolean" expires_after="2021-01-31"> + enum="BooleanSuccess" expires_after="2022-04-04"> <owner>aaronhk@chromium.org</owner> <owner>fserb@chromium.org</owner> - <summary> - Records a call to transfer a canvas offscreen. True indicates a successful - transfer, false for a failure. - </summary> + <summary>Records a call to transfer a canvas offscreen.</summary> </histogram> <histogram name="Blink.OffscreenCanvas.Transferred" enum="Boolean"
diff --git a/tools/metrics/histograms/histograms_xml/event/histograms.xml b/tools/metrics/histograms/histograms_xml/event/histograms.xml index a3406be5..ebdeb03 100644 --- a/tools/metrics/histograms/histograms_xml/event/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/event/histograms.xml
@@ -55,8 +55,8 @@ </histogram> <histogram name="Event.AsyncTargeting.AsyncClientDepth" units="clients" - expires_after="2021-01-31"> - <owner>yigu@chromium.org</owner> + expires_after="2021-06-06"> + <owner>sadrul@chromium.org</owner> <owner>event-targeting@chromium.org</owner> <summary> Tracks how many clients were queried (asynchronously) to determine the @@ -66,12 +66,11 @@ <histogram name="Event.AsyncTargeting.ResponseTime" units="ms" expires_after="2021-06-06"> - <owner>yigu@chromium.org</owner> + <owner>sadrul@chromium.org</owner> + <owner>event-targeting@chromium.org</owner> <summary> Tracks how long it takes for a client to respond to an asynchronous request to find a target for an input event. - - Team: event-targeting@chromium.org. </summary> </histogram> @@ -1621,13 +1620,12 @@ </histogram> <histogram name="Event.VizHitTest.AsyncHitTestReasons" - enum="AsyncHitTestReasons" expires_after="2021-06-27"> - <owner>yigu@chromium.org</owner> + enum="AsyncHitTestReasons" expires_after="2021-06-06"> + <owner>sadrul@chromium.org</owner> + <owner>event-targeting@chromium.org</owner> <summary> Tracks the reasons why sychronous hit testing could not be done for each hit test requests processd by HitTestQuery. - - Team: event-targeting@chromium.org. </summary> </histogram>
diff --git a/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml b/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml index e6f6c81..d4dd494 100644 --- a/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml +++ b/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml
@@ -12097,11 +12097,19 @@ page"/> <suffix name="None" label="No optimization type"/> <suffix name="NoScript" - label="Disables the fetching and execution of JavaScript"/> + label="Disables the fetching and execution of JavaScript"> + <obsolete> + Removed in M89. + </obsolete> + </suffix> <suffix name="PerformanceHints" label="Provides aggregated performance information about the page"/> <suffix name="ResourceLoading" - label="Applies a set of resource loading hints to load the page"/> + label="Applies a set of resource loading hints to load the page"> + <obsolete> + Removed in M89. + </obsolete> + </suffix> <affected-histogram name="OptimizationGuide.ApplyDecision"/> <affected-histogram name="OptimizationGuide.ApplyDecisionAsync"/> <affected-histogram name="OptimizationGuide.OptimizationFilterStatus"/> @@ -14519,14 +14527,22 @@ </obsolete> </suffix> <suffix name="None" label="No preview was served"/> - <suffix name="NoScript" label="NoScript previews"/> + <suffix name="NoScript" label="NoScript previews"> + <obsolete> + Removed in M89. + </obsolete> + </suffix> <suffix name="Offline" label="Offline previews"> <obsolete> Functionality removed in M86. </obsolete> </suffix> <suffix name="ResourceLoadingHints" - label="Resource loading hints based previews"/> + label="Resource loading hints based previews"> + <obsolete> + Removed in M89. + </obsolete> + </suffix> <affected-histogram name="Previews.EligibilityReason"/> <affected-histogram name="Previews.InfoBarAction"/> <affected-histogram name="Previews.OmniboxAction"/>
diff --git a/tools/metrics/histograms/histograms_xml/navigation/histograms.xml b/tools/metrics/histograms/histograms_xml/navigation/histograms.xml index 9381bde6..88dbf0c 100644 --- a/tools/metrics/histograms/histograms_xml/navigation/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/navigation/histograms.xml
@@ -1079,6 +1079,17 @@ </summary> </histogram> +<histogram + name="NavigationPredictor.SearchEnginePreconnector.IsBrowserAppLikelyInForeground" + enum="BooleanForeground" expires_after="M95"> + <owner>tbansal@chromium.org</owner> + <owner>ryansturm@chromium.org</owner> + <summary> + Reports if the browser app was in foreground when a preconnect attempt was + made to the default search engine. + </summary> +</histogram> + <histogram name="NavigationSuggestion.Event" enum="NavigationSuggestionEvent" expires_after="M89"> <obsolete>
diff --git a/tools/metrics/histograms/histograms_xml/safe_browsing/histograms.xml b/tools/metrics/histograms/histograms_xml/safe_browsing/histograms.xml index 78bf5d2..231a8ef 100644 --- a/tools/metrics/histograms/histograms_xml/safe_browsing/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/safe_browsing/histograms.xml
@@ -705,6 +705,38 @@ </summary> </histogram> +<histogram name="SafeBrowsing.NavigationObserver.AppendRecentNavigationsTime" + units="ms" expires_after="2021-04-05"> + <owner>xinghuilu@chromium.org</owner> + <owner>chrome-safebrowsing-alerts@google.com</owner> + <summary> + Logs the time it takes to append recent navigations. Logged each time the + function is called. + </summary> +</histogram> + +<histogram + name="SafeBrowsing.NavigationObserver.IdentifyReferrerChainByEventURLTime" + units="ms" expires_after="2021-04-05"> + <owner>xinghuilu@chromium.org</owner> + <owner>chrome-safebrowsing-alerts@google.com</owner> + <summary> + Logs the time it takes to identify referrer chain by event URL. Logged each + time the function is called. + </summary> +</histogram> + +<histogram + name="SafeBrowsing.NavigationObserver.IdentifyReferrerChainByWebContentsTime" + units="ms" expires_after="2021-04-05"> + <owner>xinghuilu@chromium.org</owner> + <owner>chrome-safebrowsing-alerts@google.com</owner> + <summary> + Logs the time it takes to identify referrer chain by web contents. Logged + each time the function is called. + </summary> +</histogram> + <histogram name="SafeBrowsing.NavigationObserver.NavigationEventCleanUpCount" units="NavigationEvents" expires_after="2021-01-27"> <owner>drubery@chromium.org</owner>
diff --git a/tools/metrics/ukm/ukm.xml b/tools/metrics/ukm/ukm.xml index e48b3ea..d7c1f97d 100644 --- a/tools/metrics/ukm/ukm.xml +++ b/tools/metrics/ukm/ukm.xml
@@ -11265,11 +11265,17 @@ </summary> </metric> <metric name="noscript"> + <obsolete> + Deprecated December 2020. + </obsolete> <summary> Set to 1 when a user is shown a NoScript preview on a page load. </summary> </metric> <metric name="noscript_eligibility_reason"> + <obsolete> + Deprecated December 2020. + </obsolete> <summary> Set to the value of the last known reason a NoScript preview was not eligible on this page load. The value of this metric corresponds to the @@ -11278,6 +11284,9 @@ </summary> </metric> <metric name="offline_eligibility_reason"> + <obsolete> + Deprecated December 2020. + </obsolete> <summary> Set to the value of the last known reason an Offline preview was not eligible on this page load. The value of this metric corresponds to the @@ -11286,6 +11295,9 @@ </summary> </metric> <metric name="offline_preview"> + <obsolete> + Deprecated December 2020. + </obsolete> <summary> Set to 1 when a user is shown an offline preview page in page load. </summary> @@ -11323,12 +11335,18 @@ </summary> </metric> <metric name="resource_loading_hints"> + <obsolete> + Deprecated December 2020. + </obsolete> <summary> Set to 1 when a user is shown a resource loading hints based preview on a page load. </summary> </metric> <metric name="resource_loading_hints_eligibility_reason"> + <obsolete> + Deprecated December 2020. + </obsolete> <summary> Set to the value of the last known reason a Resource Loading Hints preview was not eligible on this page load. The value of this metric corresponds
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json index b556cb9..60fdfa9 100644 --- a/tools/perf/core/perfetto_binary_roller/binary_deps.json +++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -2,15 +2,15 @@ "trace_processor_shell": { "win": { "hash": "9598a575e79cfb70611008e247f2af28f5473d4a", - "remote_path": "perfetto_binaries/trace_processor_shell/win/4722394621223824ab05728fe07e904f70a6f587/trace_processor_shell.exe" + "remote_path": "perfetto_binaries/trace_processor_shell/win/f9a1b53d2809ce2f710e66b06f69449b8242ee8b/trace_processor_shell.exe" }, "mac": { "hash": "c85853e98da47864d7161c57b4de7de265e7d1e2", - "remote_path": "perfetto_binaries/trace_processor_shell/mac/4722394621223824ab05728fe07e904f70a6f587/trace_processor_shell" + "remote_path": "perfetto_binaries/trace_processor_shell/mac/f9a1b53d2809ce2f710e66b06f69449b8242ee8b/trace_processor_shell" }, "linux": { "hash": "9197f51579704b8d777dd2307a3eb695eef62d50", - "remote_path": "perfetto_binaries/trace_processor_shell/linux/4722394621223824ab05728fe07e904f70a6f587/trace_processor_shell" + "remote_path": "perfetto_binaries/trace_processor_shell/linux/f9a1b53d2809ce2f710e66b06f69449b8242ee8b/trace_processor_shell" } }, "power_profile.sql": {
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 587ea21..20bf6e0 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": 4, + "end": 3, "abridged": false } } @@ -19,8 +19,8 @@ "1": { "benchmarks": { "system_health.common_mobile": { - "begin": 4, - "end": 15, + "begin": 3, + "end": 14, "abridged": false } } @@ -28,8 +28,8 @@ "2": { "benchmarks": { "system_health.common_mobile": { - "begin": 15, - "end": 42, + "begin": 14, + "end": 38, "abridged": false } } @@ -37,8 +37,8 @@ "3": { "benchmarks": { "system_health.common_mobile": { - "begin": 42, - "end": 66, + "begin": 38, + "end": 64, "abridged": false } } @@ -46,11 +46,11 @@ "4": { "benchmarks": { "system_health.common_mobile": { - "begin": 66, + "begin": 64, "abridged": false }, "system_health.memory_mobile": { - "end": 3, + "end": 2, "abridged": false } } @@ -58,8 +58,8 @@ "5": { "benchmarks": { "system_health.memory_mobile": { - "begin": 3, - "end": 9, + "begin": 2, + "end": 7, "abridged": false } } @@ -67,8 +67,8 @@ "6": { "benchmarks": { "system_health.memory_mobile": { - "begin": 9, - "end": 13, + "begin": 7, + "end": 12, "abridged": false } } @@ -76,8 +76,8 @@ "7": { "benchmarks": { "system_health.memory_mobile": { - "begin": 13, - "end": 21, + "begin": 12, + "end": 18, "abridged": false } } @@ -85,8 +85,8 @@ "8": { "benchmarks": { "system_health.memory_mobile": { - "begin": 21, - "end": 26, + "begin": 18, + "end": 24, "abridged": false } } @@ -94,8 +94,8 @@ "9": { "benchmarks": { "system_health.memory_mobile": { - "begin": 26, - "end": 37, + "begin": 24, + "end": 31, "abridged": false } } @@ -103,8 +103,8 @@ "10": { "benchmarks": { "system_health.memory_mobile": { - "begin": 37, - "end": 46, + "begin": 31, + "end": 42, "abridged": false } } @@ -112,8 +112,8 @@ "11": { "benchmarks": { "system_health.memory_mobile": { - "begin": 46, - "end": 55, + "begin": 42, + "end": 51, "abridged": false } } @@ -121,8 +121,8 @@ "12": { "benchmarks": { "system_health.memory_mobile": { - "begin": 55, - "end": 64, + "begin": 51, + "end": 63, "abridged": false } } @@ -130,8 +130,8 @@ "13": { "benchmarks": { "system_health.memory_mobile": { - "begin": 64, - "end": 66, + "begin": 63, + "end": 65, "abridged": false } } @@ -139,8 +139,8 @@ "14": { "benchmarks": { "system_health.memory_mobile": { - "begin": 66, - "end": 70, + "begin": 65, + "end": 71, "abridged": false } } @@ -148,14 +148,14 @@ "15": { "benchmarks": { "system_health.memory_mobile": { - "begin": 70, + "begin": 71, "abridged": false }, "system_health.webview_startup": { "abridged": false }, "v8.browsing_mobile": { - "end": 2, + "end": 4, "abridged": false } } @@ -163,8 +163,8 @@ "16": { "benchmarks": { "v8.browsing_mobile": { - "begin": 2, - "end": 12, + "begin": 4, + "end": 13, "abridged": false } } @@ -172,8 +172,8 @@ "17": { "benchmarks": { "v8.browsing_mobile": { - "begin": 12, - "end": 21, + "begin": 13, + "end": 20, "abridged": false } } @@ -181,35 +181,35 @@ "18": { "benchmarks": { "v8.browsing_mobile": { - "begin": 21, + "begin": 20, "abridged": false } } }, "extra_infos": { "num_stories": 182, - "predicted_min_shard_time": 929.0, - "predicted_min_shard_index": 18, - "predicted_max_shard_time": 1284.0, - "predicted_max_shard_index": 6, - "shard #0": 1082.0, - "shard #1": 1071.0, - "shard #2": 1070.0, - "shard #3": 1072.0, - "shard #4": 1010.0, - "shard #5": 1050.0, - "shard #6": 1284.0, - "shard #7": 1008.0, - "shard #8": 1080.0, - "shard #9": 1101.0, - "shard #10": 1026.0, - "shard #11": 1044.0, - "shard #12": 1278.0, - "shard #13": 972.0, - "shard #14": 960.0, - "shard #15": 1101.0, - "shard #16": 1032.0, - "shard #17": 1183.0, - "shard #18": 929.0 + "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 } } \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/android-go_webview-perf_map.json b/tools/perf/core/shard_maps/android-go_webview-perf_map.json index f9eca6e..575f219f 100644 --- a/tools/perf/core/shard_maps/android-go_webview-perf_map.json +++ b/tools/perf/core/shard_maps/android-go_webview-perf_map.json
@@ -20,7 +20,7 @@ "benchmarks": { "system_health.common_mobile": { "begin": 13, - "end": 37, + "end": 36, "abridged": false } } @@ -28,8 +28,8 @@ "2": { "benchmarks": { "system_health.common_mobile": { - "begin": 37, - "end": 68, + "begin": 36, + "end": 67, "abridged": false } } @@ -37,11 +37,11 @@ "3": { "benchmarks": { "system_health.common_mobile": { - "begin": 68, + "begin": 67, "abridged": false }, "system_health.memory_mobile": { - "end": 5, + "end": 4, "abridged": false } } @@ -49,8 +49,8 @@ "4": { "benchmarks": { "system_health.memory_mobile": { - "begin": 5, - "end": 11, + "begin": 4, + "end": 10, "abridged": false } } @@ -58,8 +58,8 @@ "5": { "benchmarks": { "system_health.memory_mobile": { - "begin": 11, - "end": 18, + "begin": 10, + "end": 17, "abridged": false } } @@ -67,8 +67,8 @@ "6": { "benchmarks": { "system_health.memory_mobile": { - "begin": 18, - "end": 25, + "begin": 17, + "end": 23, "abridged": false } } @@ -76,8 +76,8 @@ "7": { "benchmarks": { "system_health.memory_mobile": { - "begin": 25, - "end": 36, + "begin": 23, + "end": 32, "abridged": false } } @@ -85,8 +85,8 @@ "8": { "benchmarks": { "system_health.memory_mobile": { - "begin": 36, - "end": 47, + "begin": 32, + "end": 44, "abridged": false } } @@ -94,8 +94,8 @@ "9": { "benchmarks": { "system_health.memory_mobile": { - "begin": 47, - "end": 58, + "begin": 44, + "end": 55, "abridged": false } } @@ -103,8 +103,8 @@ "10": { "benchmarks": { "system_health.memory_mobile": { - "begin": 58, - "end": 67, + "begin": 55, + "end": 65, "abridged": false } } @@ -112,7 +112,7 @@ "11": { "benchmarks": { "system_health.memory_mobile": { - "begin": 67, + "begin": 65, "end": 71, "abridged": false } @@ -134,22 +134,22 @@ }, "extra_infos": { "num_stories": 182, - "predicted_min_shard_time": 939.0, - "predicted_min_shard_index": 11, - "predicted_max_shard_time": 1169.0, - "predicted_max_shard_index": 3, - "shard #0": 1097.0, - "shard #1": 1052.0, - "shard #2": 1078.0, - "shard #3": 1169.0, - "shard #4": 1092.0, - "shard #5": 957.0, - "shard #6": 1026.0, - "shard #7": 1080.0, - "shard #8": 1116.0, - "shard #9": 1005.0, - "shard #10": 1101.0, - "shard #11": 939.0, - "shard #12": 1039.0 + "predicted_min_shard_time": 923.0, + "predicted_min_shard_index": 3, + "predicted_max_shard_time": 1161.0, + "predicted_max_shard_index": 10, + "shard #0": 1087.0, + "shard #1": 1048.0, + "shard #2": 1013.0, + "shard #3": 923.0, + "shard #4": 1110.0, + "shard #5": 969.0, + "shard #6": 1020.0, + "shard #7": 1116.0, + "shard #8": 1035.0, + "shard #9": 1089.0, + "shard #10": 1161.0, + "shard #11": 1065.0, + "shard #12": 1059.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 dc88342..d35ba9fa 100644 --- a/tools/perf/core/shard_maps/android-pixel2-perf_map.json +++ b/tools/perf/core/shard_maps/android-pixel2-perf_map.json
@@ -8,18 +8,18 @@ "abridged": false }, "blink_perf.css": { - "end": 38, + "abridged": false + }, + "blink_perf.dom": { + "end": 1, "abridged": false } } }, "1": { "benchmarks": { - "blink_perf.css": { - "begin": 38, - "abridged": false - }, "blink_perf.dom": { + "begin": 1, "abridged": false }, "blink_perf.events": { @@ -29,7 +29,7 @@ "abridged": false }, "blink_perf.layout": { - "end": 63, + "end": 67, "abridged": false } } @@ -37,7 +37,7 @@ "2": { "benchmarks": { "blink_perf.layout": { - "begin": 63, + "begin": 67, "abridged": false }, "blink_perf.owp_storage": { @@ -47,7 +47,7 @@ "abridged": false }, "blink_perf.parser": { - "end": 8, + "end": 22, "abridged": false } } @@ -55,7 +55,7 @@ "3": { "benchmarks": { "blink_perf.parser": { - "begin": 8, + "begin": 22, "abridged": false }, "blink_perf.shadow_dom": { @@ -76,9 +76,6 @@ "dummy_benchmark.stable_benchmark_1": { "abridged": false }, - "speedometer2-pcscan": { - "abridged": false - }, "jetstream": { "abridged": false } @@ -110,7 +107,7 @@ "benchmarks": { "loading.mobile": { "begin": 27, - "end": 70, + "end": 66, "abridged": false } } @@ -118,17 +115,29 @@ "6": { "benchmarks": { "loading.mobile": { - "begin": 70, + "begin": 66, "abridged": false }, "media.mobile": { + "end": 9, + "abridged": false + } + } + }, + "7": { + "benchmarks": { + "media.mobile": { + "begin": 9, "abridged": false }, "octane": { "abridged": false }, "rasterize_and_record_micro.top_25": { - "end": 7, + "abridged": false + }, + "rendering.mobile": { + "end": 25, "abridged": false } }, @@ -143,23 +152,11 @@ } } }, - "7": { - "benchmarks": { - "rasterize_and_record_micro.top_25": { - "begin": 7, - "abridged": false - }, - "rendering.mobile": { - "end": 43, - "abridged": false - } - } - }, "8": { "benchmarks": { "rendering.mobile": { - "begin": 43, - "end": 95, + "begin": 25, + "end": 77, "abridged": false } } @@ -167,8 +164,8 @@ "9": { "benchmarks": { "rendering.mobile": { - "begin": 95, - "end": 149, + "begin": 77, + "end": 125, "abridged": false } } @@ -176,8 +173,8 @@ "10": { "benchmarks": { "rendering.mobile": { - "begin": 149, - "end": 189, + "begin": 125, + "end": 173, "abridged": false } } @@ -185,8 +182,8 @@ "11": { "benchmarks": { "rendering.mobile": { - "begin": 189, - "end": 235, + "begin": 173, + "end": 220, "abridged": false } } @@ -194,8 +191,8 @@ "12": { "benchmarks": { "rendering.mobile": { - "begin": 235, - "end": 305, + "begin": 220, + "end": 278, "abridged": false } } @@ -203,8 +200,8 @@ "13": { "benchmarks": { "rendering.mobile": { - "begin": 305, - "end": 341, + "begin": 278, + "end": 323, "abridged": false } } @@ -212,8 +209,8 @@ "14": { "benchmarks": { "rendering.mobile": { - "begin": 341, - "end": 388, + "begin": 323, + "end": 362, "abridged": false } } @@ -221,7 +218,16 @@ "15": { "benchmarks": { "rendering.mobile": { - "begin": 388, + "begin": 362, + "end": 410, + "abridged": false + } + } + }, + "16": { + "benchmarks": { + "rendering.mobile": { + "begin": 410, "abridged": false }, "speedometer": { @@ -236,20 +242,14 @@ "speedometer2-future": { "abridged": false }, + "speedometer2-pcscan": { + "abridged": false + }, "startup.mobile": { "abridged": false }, "system_health.common_mobile": { - "end": 7, - "abridged": false - } - } - }, - "16": { - "benchmarks": { - "system_health.common_mobile": { - "begin": 7, - "end": 37, + "end": 17, "abridged": false } } @@ -257,20 +257,20 @@ "17": { "benchmarks": { "system_health.common_mobile": { - "begin": 37, - "abridged": false - }, - "system_health.memory_mobile": { - "end": 3, + "begin": 17, + "end": 58, "abridged": false } } }, "18": { "benchmarks": { + "system_health.common_mobile": { + "begin": 58, + "abridged": false + }, "system_health.memory_mobile": { - "begin": 3, - "end": 12, + "end": 7, "abridged": false } } @@ -278,8 +278,8 @@ "19": { "benchmarks": { "system_health.memory_mobile": { - "begin": 12, - "end": 21, + "begin": 7, + "end": 17, "abridged": false } } @@ -287,8 +287,8 @@ "20": { "benchmarks": { "system_health.memory_mobile": { - "begin": 21, - "end": 30, + "begin": 17, + "end": 25, "abridged": false } } @@ -296,8 +296,8 @@ "21": { "benchmarks": { "system_health.memory_mobile": { - "begin": 30, - "end": 44, + "begin": 25, + "end": 39, "abridged": false } } @@ -305,8 +305,8 @@ "22": { "benchmarks": { "system_health.memory_mobile": { - "begin": 44, - "end": 59, + "begin": 39, + "end": 53, "abridged": false } } @@ -314,8 +314,8 @@ "23": { "benchmarks": { "system_health.memory_mobile": { - "begin": 59, - "end": 69, + "begin": 53, + "end": 68, "abridged": false } } @@ -323,7 +323,7 @@ "24": { "benchmarks": { "system_health.memory_mobile": { - "begin": 69, + "begin": 68, "abridged": false }, "system_health.webview_startup": { @@ -333,7 +333,7 @@ "abridged": false }, "v8.browsing_mobile": { - "end": 6, + "end": 5, "abridged": false } } @@ -341,8 +341,8 @@ "25": { "benchmarks": { "v8.browsing_mobile": { - "begin": 6, - "end": 22, + "begin": 5, + "end": 23, "abridged": false } } @@ -350,11 +350,11 @@ "26": { "benchmarks": { "v8.browsing_mobile": { - "begin": 22, + "begin": 23, "abridged": false }, "v8.browsing_mobile-future": { - "end": 13, + "end": 14, "abridged": false } } @@ -362,7 +362,7 @@ "27": { "benchmarks": { "v8.browsing_mobile-future": { - "begin": 13, + "begin": 14, "abridged": false }, "webrtc": { @@ -371,38 +371,38 @@ } }, "extra_infos": { - "num_stories": 1131, - "predicted_min_shard_time": 921.0, + "num_stories": 1139, + "predicted_min_shard_time": 1001.0, "predicted_min_shard_index": 3, - "predicted_max_shard_time": 1194.0, - "predicted_max_shard_index": 21, - "shard #0": 1143.0, - "shard #1": 1137.0, - "shard #2": 1137.0, - "shard #3": 931.0, - "shard #4": 1150.0, - "shard #5": 1170.0, - "shard #6": 1153.0, - "shard #7": 1152.0, - "shard #8": 1138.0, - "shard #9": 1141.0, - "shard #10": 1159.0, - "shard #11": 1140.0, - "shard #12": 1156.0, - "shard #13": 1137.0, - "shard #14": 1141.0, - "shard #15": 1172.0, - "shard #16": 1146.0, - "shard #17": 1168.0, - "shard #18": 1155.0, - "shard #19": 1086.0, - "shard #20": 1134.0, - "shard #21": 1194.0, - "shard #22": 1176.0, - "shard #23": 1116.0, - "shard #24": 1161.0, - "shard #25": 1142.0, - "shard #26": 1162.0, - "shard #27": 1145.0 + "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 } -} +} \ 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 81fda736..d79c402 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,7 +5,7 @@ "abridged": false }, "system_health.common_mobile": { - "end": 10, + "end": 11, "abridged": true } } @@ -13,11 +13,11 @@ "1": { "benchmarks": { "system_health.common_mobile": { - "begin": 10, + "begin": 11, "abridged": true }, "system_health.memory_mobile": { - "end": 5, + "end": 6, "abridged": true } } @@ -25,7 +25,7 @@ "2": { "benchmarks": { "system_health.memory_mobile": { - "begin": 5, + "begin": 6, "end": 11, "abridged": true } @@ -44,13 +44,13 @@ }, "extra_infos": { "num_stories": 29, - "predicted_min_shard_time": 587.0, - "predicted_min_shard_index": 1, - "predicted_max_shard_time": 653.0, + "predicted_min_shard_time": 498.0, + "predicted_min_shard_index": 2, + "predicted_max_shard_time": 699.0, "predicted_max_shard_index": 3, - "shard #0": 609.0, - "shard #1": 587.0, - "shard #2": 600.0, - "shard #3": 653.0 + "shard #0": 658.0, + "shard #1": 636.0, + "shard #2": 498.0, + "shard #3": 699.0 } } \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/android-pixel2_webview-perf_map.json b/tools/perf/core/shard_maps/android-pixel2_webview-perf_map.json index bb98b7c..52b0fdb 100644 --- a/tools/perf/core/shard_maps/android-pixel2_webview-perf_map.json +++ b/tools/perf/core/shard_maps/android-pixel2_webview-perf_map.json
@@ -14,36 +14,36 @@ "abridged": false }, "blink_perf.events": { - "end": 3, + "abridged": false + }, + "blink_perf.image_decoder": { + "end": 9, "abridged": false } } }, "1": { "benchmarks": { - "blink_perf.events": { - "begin": 3, - "abridged": false - }, "blink_perf.image_decoder": { + "begin": 9, "abridged": false }, "blink_perf.layout": { - "end": 92, - "abridged": false - } - } - }, - "2": { - "benchmarks": { - "blink_perf.layout": { - "begin": 92, "abridged": false }, "blink_perf.owp_storage": { "abridged": false }, "blink_perf.paint": { + "end": 7, + "abridged": false + } + } + }, + "2": { + "benchmarks": { + "blink_perf.paint": { + "begin": 7, "abridged": false }, "blink_perf.parser": { @@ -56,18 +56,18 @@ "abridged": false }, "blink_perf.webaudio": { - "end": 4, + "abridged": false + }, + "dromaeo": { + "end": 3, "abridged": false } } }, "3": { "benchmarks": { - "blink_perf.webaudio": { - "begin": 4, - "abridged": false - }, "dromaeo": { + "begin": 3, "abridged": false }, "dummy_benchmark.noisy_benchmark_1": { @@ -83,7 +83,7 @@ "abridged": false }, "loading.mobile": { - "end": 54, + "end": 56, "abridged": false } } @@ -91,7 +91,7 @@ "4": { "benchmarks": { "loading.mobile": { - "begin": 54, + "begin": 56, "abridged": false }, "media.mobile": { @@ -113,7 +113,7 @@ "abridged": false }, "rendering.mobile": { - "end": 46, + "end": 44, "abridged": false } } @@ -121,8 +121,8 @@ "6": { "benchmarks": { "rendering.mobile": { - "begin": 46, - "end": 110, + "begin": 44, + "end": 101, "abridged": false } } @@ -130,8 +130,8 @@ "7": { "benchmarks": { "rendering.mobile": { - "begin": 110, - "end": 174, + "begin": 101, + "end": 158, "abridged": false } } @@ -139,8 +139,8 @@ "8": { "benchmarks": { "rendering.mobile": { - "begin": 174, - "end": 227, + "begin": 158, + "end": 211, "abridged": false } } @@ -148,8 +148,8 @@ "9": { "benchmarks": { "rendering.mobile": { - "begin": 227, - "end": 303, + "begin": 211, + "end": 284, "abridged": false } } @@ -157,8 +157,8 @@ "10": { "benchmarks": { "rendering.mobile": { - "begin": 303, - "end": 352, + "begin": 284, + "end": 344, "abridged": false } } @@ -166,8 +166,8 @@ "11": { "benchmarks": { "rendering.mobile": { - "begin": 352, - "end": 408, + "begin": 344, + "end": 395, "abridged": false } } @@ -175,7 +175,7 @@ "12": { "benchmarks": { "rendering.mobile": { - "begin": 408, + "begin": 395, "abridged": false }, "speedometer": { @@ -197,7 +197,7 @@ "abridged": false }, "system_health.common_mobile": { - "end": 23, + "end": 17, "abridged": false } } @@ -205,15 +205,20 @@ "13": { "benchmarks": { "system_health.common_mobile": { - "begin": 23, + "begin": 17, + "end": 68, "abridged": false } } }, "14": { "benchmarks": { + "system_health.common_mobile": { + "begin": 68, + "abridged": false + }, "system_health.memory_mobile": { - "end": 13, + "end": 12, "abridged": false } } @@ -221,7 +226,7 @@ "15": { "benchmarks": { "system_health.memory_mobile": { - "begin": 13, + "begin": 12, "end": 23, "abridged": false } @@ -231,7 +236,7 @@ "benchmarks": { "system_health.memory_mobile": { "begin": 23, - "end": 36, + "end": 37, "abridged": false } } @@ -239,8 +244,8 @@ "17": { "benchmarks": { "system_health.memory_mobile": { - "begin": 36, - "end": 54, + "begin": 37, + "end": 55, "abridged": false } } @@ -248,8 +253,8 @@ "18": { "benchmarks": { "system_health.memory_mobile": { - "begin": 54, - "end": 70, + "begin": 55, + "end": 71, "abridged": false } } @@ -257,7 +262,7 @@ "19": { "benchmarks": { "system_health.memory_mobile": { - "begin": 70, + "begin": 71, "abridged": false }, "system_health.webview_startup": { @@ -267,7 +272,7 @@ "abridged": false }, "v8.browsing_mobile": { - "end": 4, + "end": 8, "abridged": false } } @@ -275,7 +280,7 @@ "20": { "benchmarks": { "v8.browsing_mobile": { - "begin": 4, + "begin": 8, "abridged": false }, "webrtc": { @@ -284,31 +289,31 @@ } }, "extra_infos": { - "num_stories": 1099, - "predicted_min_shard_time": 1146.0, + "num_stories": 1107, + "predicted_min_shard_time": 1353.0, "predicted_min_shard_index": 15, - "predicted_max_shard_time": 1331.0, - "predicted_max_shard_index": 19, - "shard #0": 1226.0, - "shard #1": 1260.0, - "shard #2": 1241.0, - "shard #3": 1237.0, - "shard #4": 1233.0, - "shard #5": 1241.0, - "shard #6": 1240.0, - "shard #7": 1227.0, - "shard #8": 1238.0, - "shard #9": 1243.0, - "shard #10": 1242.0, - "shard #11": 1230.0, - "shard #12": 1234.0, - "shard #13": 1228.0, - "shard #14": 1191.0, - "shard #15": 1146.0, - "shard #16": 1266.0, - "shard #17": 1254.0, - "shard #18": 1176.0, - "shard #19": 1331.0, - "shard #20": 1293.0 + "predicted_max_shard_time": 1416.0, + "predicted_max_shard_index": 16, + "shard #0": 1391.0, + "shard #1": 1381.0, + "shard #2": 1407.0, + "shard #3": 1391.0, + "shard #4": 1379.0, + "shard #5": 1400.0, + "shard #6": 1383.0, + "shard #7": 1378.0, + "shard #8": 1393.0, + "shard #9": 1382.0, + "shard #10": 1384.0, + "shard #11": 1398.0, + "shard #12": 1359.0, + "shard #13": 1409.0, + "shard #14": 1360.0, + "shard #15": 1353.0, + "shard #16": 1416.0, + "shard #17": 1368.0, + "shard #18": 1395.0, + "shard #19": 1393.0, + "shard #20": 1413.0 } } \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/android-pixel4a_power-perf_map.json b/tools/perf/core/shard_maps/android-pixel4a_power-perf_map.json index 31e77b7c..17a5f30 100644 --- a/tools/perf/core/shard_maps/android-pixel4a_power-perf_map.json +++ b/tools/perf/core/shard_maps/android-pixel4a_power-perf_map.json
@@ -8,10 +8,10 @@ }, "extra_infos": { "num_stories": 4, - "predicted_min_shard_time": 253.0, + "predicted_min_shard_time": 318.0, "predicted_min_shard_index": 0, - "predicted_max_shard_time": 253.0, + "predicted_max_shard_time": 318.0, "predicted_max_shard_index": 0, - "shard #0": 253.0 + "shard #0": 318.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 0200e9e..4c5bd30 100644 --- a/tools/perf/core/shard_maps/android_nexus5_perf_map.json +++ b/tools/perf/core/shard_maps/android_nexus5_perf_map.json
@@ -22,12 +22,17 @@ "benchmarks": { "loading.mobile": { "begin": 1, + "end": 5, "abridged": true } } }, "2": { "benchmarks": { + "loading.mobile": { + "begin": 5, + "abridged": true + }, "startup.mobile": { "end": 1, "abridged": true @@ -38,17 +43,12 @@ "benchmarks": { "startup.mobile": { "begin": 1, - "end": 3, "abridged": true } } }, "4": { "benchmarks": { - "startup.mobile": { - "begin": 3, - "abridged": true - }, "system_health.common_mobile": { "end": 3, "abridged": true @@ -93,15 +93,15 @@ "num_stories": 26, "predicted_min_shard_time": 158.0, "predicted_min_shard_index": 7, - "predicted_max_shard_time": 311.0, + "predicted_max_shard_time": 306.0, "predicted_max_shard_index": 3, - "shard #0": 199.0, - "shard #1": 246.0, - "shard #2": 185.0, - "shard #3": 311.0, - "shard #4": 239.0, - "shard #5": 197.0, - "shard #6": 261.0, + "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 } } \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/android_nexus5x_webview_perf_map.json b/tools/perf/core/shard_maps/android_nexus5x_webview_perf_map.json index 5511adc..a689464 100644 --- a/tools/perf/core/shard_maps/android_nexus5x_webview_perf_map.json +++ b/tools/perf/core/shard_maps/android_nexus5x_webview_perf_map.json
@@ -17,18 +17,18 @@ "abridged": false }, "blink_perf.image_decoder": { - "end": 6, + "abridged": false + }, + "blink_perf.layout": { + "end": 7, "abridged": false } } }, "1": { "benchmarks": { - "blink_perf.image_decoder": { - "begin": 6, - "abridged": false - }, "blink_perf.layout": { + "begin": 7, "abridged": false }, "blink_perf.owp_storage": { @@ -38,7 +38,7 @@ "abridged": false }, "blink_perf.parser": { - "end": 2, + "end": 12, "abridged": false } } @@ -46,7 +46,7 @@ "2": { "benchmarks": { "blink_perf.parser": { - "begin": 2, + "begin": 12, "abridged": false }, "blink_perf.shadow_dom": { @@ -74,7 +74,7 @@ "abridged": false }, "loading.mobile": { - "end": 36, + "end": 44, "abridged": false } } @@ -82,7 +82,7 @@ "3": { "benchmarks": { "loading.mobile": { - "begin": 36, + "begin": 44, "abridged": false }, "media.mobile": { @@ -92,7 +92,7 @@ "abridged": false }, "rasterize_and_record_micro.top_25": { - "end": 4, + "end": 5, "abridged": false } } @@ -100,11 +100,11 @@ "4": { "benchmarks": { "rasterize_and_record_micro.top_25": { - "begin": 4, + "begin": 5, "abridged": false }, "rendering.mobile": { - "end": 60, + "end": 63, "abridged": false } } @@ -112,8 +112,8 @@ "5": { "benchmarks": { "rendering.mobile": { - "begin": 60, - "end": 141, + "begin": 63, + "end": 149, "abridged": false } } @@ -121,8 +121,8 @@ "6": { "benchmarks": { "rendering.mobile": { - "begin": 141, - "end": 206, + "begin": 149, + "end": 216, "abridged": false } } @@ -130,8 +130,8 @@ "7": { "benchmarks": { "rendering.mobile": { - "begin": 206, - "end": 302, + "begin": 216, + "end": 321, "abridged": false } } @@ -139,8 +139,8 @@ "8": { "benchmarks": { "rendering.mobile": { - "begin": 302, - "end": 377, + "begin": 321, + "end": 397, "abridged": false } } @@ -148,7 +148,7 @@ "9": { "benchmarks": { "rendering.mobile": { - "begin": 377, + "begin": 397, "abridged": false }, "speedometer": { @@ -170,7 +170,7 @@ "abridged": false }, "system_health.common_mobile": { - "end": 16, + "end": 24, "abridged": false } } @@ -178,11 +178,11 @@ "10": { "benchmarks": { "system_health.common_mobile": { - "begin": 16, + "begin": 24, "abridged": false }, "system_health.memory_mobile": { - "end": 2, + "end": 6, "abridged": false } } @@ -190,8 +190,8 @@ "11": { "benchmarks": { "system_health.memory_mobile": { - "begin": 2, - "end": 18, + "begin": 6, + "end": 22, "abridged": false } } @@ -199,8 +199,8 @@ "12": { "benchmarks": { "system_health.memory_mobile": { - "begin": 18, - "end": 38, + "begin": 22, + "end": 44, "abridged": false } } @@ -208,8 +208,8 @@ "13": { "benchmarks": { "system_health.memory_mobile": { - "begin": 38, - "end": 64, + "begin": 44, + "end": 68, "abridged": false } } @@ -217,20 +217,25 @@ "14": { "benchmarks": { "system_health.memory_mobile": { - "begin": 64, + "begin": 68, "abridged": false }, "system_health.webview_startup": { "abridged": false + }, + "tracing.tracing_with_background_memory_infra": { + "abridged": false + }, + "v8.browsing_mobile": { + "end": 5, + "abridged": false } } }, "15": { "benchmarks": { - "tracing.tracing_with_background_memory_infra": { - "abridged": false - }, "v8.browsing_mobile": { + "begin": 5, "abridged": false }, "webrtc": { @@ -239,26 +244,26 @@ } }, "extra_infos": { - "num_stories": 1099, - "predicted_min_shard_time": 1851.0, - "predicted_min_shard_index": 13, - "predicted_max_shard_time": 1921.0, - "predicted_max_shard_index": 14, - "shard #0": 1901.0, - "shard #1": 1880.0, - "shard #2": 1885.0, - "shard #3": 1881.0, - "shard #4": 1883.0, - "shard #5": 1882.0, - "shard #6": 1884.0, - "shard #7": 1890.0, - "shard #8": 1873.0, - "shard #9": 1888.0, - "shard #10": 1876.0, - "shard #11": 1872.0, - "shard #12": 1872.0, - "shard #13": 1851.0, - "shard #14": 1921.0, - "shard #15": 1920.0 + "num_stories": 1107, + "predicted_min_shard_time": 1932.0, + "predicted_min_shard_index": 11, + "predicted_max_shard_time": 2076.0, + "predicted_max_shard_index": 13, + "shard #0": 1980.0, + "shard #1": 1978.0, + "shard #2": 1984.0, + "shard #3": 1987.0, + "shard #4": 2001.0, + "shard #5": 1986.0, + "shard #6": 1974.0, + "shard #7": 1982.0, + "shard #8": 1993.0, + "shard #9": 1993.0, + "shard #10": 1961.0, + "shard #11": 1932.0, + "shard #12": 1959.0, + "shard #13": 2076.0, + "shard #14": 1967.0, + "shard #15": 1978.0 } -} +} \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/linux-perf_map.json b/tools/perf/core/shard_maps/linux-perf_map.json index 813db9e..8477588c 100644 --- a/tools/perf/core/shard_maps/linux-perf_map.json +++ b/tools/perf/core/shard_maps/linux-perf_map.json
@@ -11,7 +11,10 @@ "abridged": false }, "blink_perf.dom": { - "end": 1, + "abridged": false + }, + "blink_perf.events": { + "end": 3, "abridged": false } }, @@ -27,11 +30,8 @@ }, "1": { "benchmarks": { - "blink_perf.dom": { - "begin": 1, - "abridged": false - }, "blink_perf.events": { + "begin": 3, "abridged": false }, "blink_perf.image_decoder": { @@ -45,12 +45,17 @@ }, "blink_perf.paint": { "abridged": false + }, + "blink_perf.parser": { + "end": 15, + "abridged": false } } }, "2": { "benchmarks": { "blink_perf.parser": { + "begin": 15, "abridged": false }, "blink_perf.shadow_dom": { @@ -76,16 +81,8 @@ }, "jetstream2": { "abridged": false - } - } - }, - "3": { - "benchmarks": { - "kraken": { - "abridged": false }, - "loading.desktop": { - "end": 32, + "kraken": { "abridged": false } }, @@ -95,11 +92,19 @@ } } }, + "3": { + "benchmarks": { + "loading.desktop": { + "end": 34, + "abridged": false + } + } + }, "4": { "benchmarks": { "loading.desktop": { - "begin": 32, - "end": 57, + "begin": 34, + "end": 59, "abridged": false } } @@ -107,8 +112,8 @@ "5": { "benchmarks": { "loading.desktop": { - "begin": 57, - "end": 81, + "begin": 59, + "end": 85, "abridged": false } } @@ -116,11 +121,11 @@ "6": { "benchmarks": { "loading.desktop": { - "begin": 81, + "begin": 85, "abridged": false }, "media.desktop": { - "end": 9, + "end": 11, "abridged": false } } @@ -128,10 +133,11 @@ "7": { "benchmarks": { "media.desktop": { - "begin": 9, + "begin": 11, "abridged": false }, "memory.desktop": { + "end": 8, "abridged": false } }, @@ -148,10 +154,15 @@ }, "8": { "benchmarks": { + "memory.desktop": { + "begin": 8, + "abridged": false + }, "octane": { "abridged": false }, "power.desktop": { + "end": 14, "abridged": false } }, @@ -172,6 +183,10 @@ }, "9": { "benchmarks": { + "power.desktop": { + "begin": 14, + "abridged": false + }, "rasterize_and_record_micro.top_25": { "abridged": false }, @@ -185,7 +200,7 @@ "benchmarks": { "rendering.desktop": { "begin": 39, - "end": 91, + "end": 90, "abridged": false } } @@ -193,8 +208,8 @@ "11": { "benchmarks": { "rendering.desktop": { - "begin": 91, - "end": 145, + "begin": 90, + "end": 148, "abridged": false } } @@ -202,7 +217,7 @@ "12": { "benchmarks": { "rendering.desktop": { - "begin": 145, + "begin": 148, "end": 195, "abridged": false } @@ -212,7 +227,7 @@ "benchmarks": { "rendering.desktop": { "begin": 195, - "end": 238, + "end": 240, "abridged": false } } @@ -220,8 +235,8 @@ "14": { "benchmarks": { "rendering.desktop": { - "begin": 238, - "end": 288, + "begin": 240, + "end": 286, "abridged": false } } @@ -229,7 +244,7 @@ "15": { "benchmarks": { "rendering.desktop": { - "begin": 288, + "begin": 286, "abridged": false }, "speedometer": { @@ -248,7 +263,7 @@ "abridged": false }, "system_health.common_desktop": { - "end": 17, + "end": 10, "abridged": false } } @@ -256,8 +271,8 @@ "16": { "benchmarks": { "system_health.common_desktop": { - "begin": 17, - "end": 55, + "begin": 10, + "end": 53, "abridged": false } } @@ -265,20 +280,20 @@ "17": { "benchmarks": { "system_health.common_desktop": { - "begin": 55, - "end": 78, + "begin": 53, + "abridged": false + }, + "system_health.memory_desktop": { + "end": 6, "abridged": false } } }, "18": { "benchmarks": { - "system_health.common_desktop": { - "begin": 78, - "abridged": false - }, "system_health.memory_desktop": { - "end": 20, + "begin": 6, + "end": 22, "abridged": false } } @@ -286,8 +301,8 @@ "19": { "benchmarks": { "system_health.memory_desktop": { - "begin": 20, - "end": 34, + "begin": 22, + "end": 40, "abridged": false } } @@ -295,8 +310,8 @@ "20": { "benchmarks": { "system_health.memory_desktop": { - "begin": 34, - "end": 54, + "begin": 40, + "end": 63, "abridged": false } } @@ -304,8 +319,8 @@ "21": { "benchmarks": { "system_health.memory_desktop": { - "begin": 54, - "end": 73, + "begin": 63, + "end": 76, "abridged": false } } @@ -313,14 +328,17 @@ "22": { "benchmarks": { "system_health.memory_desktop": { - "begin": 73, + "begin": 76, + "abridged": false + }, + "tab_search": { "abridged": false }, "tab_switching.typical_25": { "abridged": false }, "tracing.tracing_with_background_memory_infra": { - "end": 5, + "end": 7, "abridged": false } } @@ -328,11 +346,11 @@ "23": { "benchmarks": { "tracing.tracing_with_background_memory_infra": { - "begin": 5, + "begin": 7, "abridged": false }, "v8.browsing_desktop": { - "end": 22, + "end": 23, "abridged": false } }, @@ -345,22 +363,19 @@ "24": { "benchmarks": { "v8.browsing_desktop": { - "begin": 22, + "begin": 23, "abridged": false }, "v8.browsing_desktop-future": { - "end": 14, + "end": 17, "abridged": false } } }, "25": { "benchmarks": { - "tab_search": { - "abridged": false - }, "v8.browsing_desktop-future": { - "begin": 14, + "begin": 17, "abridged": false }, "webrtc": { @@ -369,36 +384,36 @@ } }, "extra_infos": { - "num_stories": 1064, - "predicted_min_shard_time": 807.0, + "num_stories": 1088, + "predicted_min_shard_time": 852.0, "predicted_min_shard_index": 17, - "predicted_max_shard_time": 897.0, - "predicted_max_shard_index": 7, - "shard #0": 835.0, - "shard #1": 834.0, - "shard #2": 882.0, - "shard #3": 846.0, - "shard #4": 832.0, - "shard #5": 828.0, - "shard #6": 832.0, - "shard #7": 897.0, - "shard #8": 836.0, - "shard #9": 838.0, - "shard #10": 838.0, - "shard #11": 829.0, - "shard #12": 836.0, - "shard #13": 833.0, - "shard #14": 825.0, - "shard #15": 845.0, - "shard #16": 826.0, - "shard #17": 807.0, - "shard #18": 825.0, - "shard #19": 849.0, - "shard #20": 819.0, - "shard #21": 879.0, - "shard #22": 831.0, - "shard #23": 850.0, - "shard #24": 809.0, - "shard #25": 825.0 + "predicted_max_shard_time": 972.0, + "predicted_max_shard_index": 21, + "shard #0": 886.0, + "shard #1": 887.0, + "shard #2": 879.0, + "shard #3": 900.0, + "shard #4": 896.0, + "shard #5": 894.0, + "shard #6": 879.0, + "shard #7": 854.0, + "shard #8": 903.0, + "shard #9": 883.0, + "shard #10": 896.0, + "shard #11": 903.0, + "shard #12": 882.0, + "shard #13": 882.0, + "shard #14": 888.0, + "shard #15": 910.0, + "shard #16": 883.0, + "shard #17": 852.0, + "shard #18": 879.0, + "shard #19": 882.0, + "shard #20": 888.0, + "shard #21": 972.0, + "shard #22": 875.0, + "shard #23": 889.0, + "shard #24": 866.0, + "shard #25": 877.0 } -} +} \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/mac-10_12_laptop_low_end-perf_map.json b/tools/perf/core/shard_maps/mac-10_12_laptop_low_end-perf_map.json index 6d0bb6a..c06aa6d9 100644 --- a/tools/perf/core/shard_maps/mac-10_12_laptop_low_end-perf_map.json +++ b/tools/perf/core/shard_maps/mac-10_12_laptop_low_end-perf_map.json
@@ -17,18 +17,18 @@ "abridged": false }, "blink_perf.events": { - "end": 2, + "abridged": false + }, + "blink_perf.image_decoder": { + "end": 8, "abridged": false } } }, "1": { "benchmarks": { - "blink_perf.events": { - "begin": 2, - "abridged": false - }, "blink_perf.image_decoder": { + "begin": 8, "abridged": false }, "blink_perf.layout": { @@ -38,18 +38,18 @@ "abridged": false }, "blink_perf.paint": { - "end": 4, + "abridged": false + }, + "blink_perf.parser": { + "end": 13, "abridged": false } } }, "2": { "benchmarks": { - "blink_perf.paint": { - "begin": 4, - "abridged": false - }, "blink_perf.parser": { + "begin": 13, "abridged": false }, "blink_perf.shadow_dom": { @@ -75,6 +75,10 @@ }, "kraken": { "abridged": false + }, + "loading.desktop": { + "end": 4, + "abridged": false } }, "executables": { @@ -86,7 +90,8 @@ "3": { "benchmarks": { "loading.desktop": { - "end": 27, + "begin": 4, + "end": 31, "abridged": false } } @@ -94,8 +99,8 @@ "4": { "benchmarks": { "loading.desktop": { - "begin": 27, - "end": 51, + "begin": 31, + "end": 55, "abridged": false } } @@ -103,8 +108,8 @@ "5": { "benchmarks": { "loading.desktop": { - "begin": 51, - "end": 73, + "begin": 55, + "end": 77, "abridged": false } } @@ -112,8 +117,8 @@ "6": { "benchmarks": { "loading.desktop": { - "begin": 73, - "end": 95, + "begin": 77, + "end": 100, "abridged": false } } @@ -121,14 +126,14 @@ "7": { "benchmarks": { "loading.desktop": { - "begin": 95, + "begin": 100, "abridged": false }, "media.desktop": { "abridged": false }, "memory.desktop": { - "end": 3, + "end": 5, "abridged": false } } @@ -136,14 +141,14 @@ "8": { "benchmarks": { "memory.desktop": { - "begin": 3, + "begin": 5, "abridged": false }, "octane": { "abridged": false }, "power.desktop": { - "end": 7, + "end": 13, "abridged": false } }, @@ -165,14 +170,14 @@ "9": { "benchmarks": { "power.desktop": { - "begin": 7, + "begin": 13, "abridged": false }, "rasterize_and_record_micro.top_25": { "abridged": false }, "rendering.desktop": { - "end": 23, + "end": 35, "abridged": false } } @@ -180,8 +185,8 @@ "10": { "benchmarks": { "rendering.desktop": { - "begin": 23, - "end": 72, + "begin": 35, + "end": 86, "abridged": false } } @@ -189,8 +194,8 @@ "11": { "benchmarks": { "rendering.desktop": { - "begin": 72, - "end": 124, + "begin": 86, + "end": 138, "abridged": false } } @@ -198,8 +203,8 @@ "12": { "benchmarks": { "rendering.desktop": { - "begin": 124, - "end": 172, + "begin": 138, + "end": 185, "abridged": false } } @@ -207,8 +212,8 @@ "13": { "benchmarks": { "rendering.desktop": { - "begin": 172, - "end": 221, + "begin": 185, + "end": 234, "abridged": false } } @@ -216,8 +221,8 @@ "14": { "benchmarks": { "rendering.desktop": { - "begin": 221, - "end": 265, + "begin": 234, + "end": 276, "abridged": false } } @@ -225,7 +230,7 @@ "15": { "benchmarks": { "rendering.desktop": { - "begin": 265, + "begin": 276, "abridged": false }, "speedometer": { @@ -244,7 +249,7 @@ "abridged": false }, "system_health.common_desktop": { - "end": 3, + "end": 6, "abridged": false } } @@ -252,8 +257,8 @@ "16": { "benchmarks": { "system_health.common_desktop": { - "begin": 3, - "end": 42, + "begin": 6, + "end": 49, "abridged": false } } @@ -261,20 +266,20 @@ "17": { "benchmarks": { "system_health.common_desktop": { - "begin": 42, - "end": 75, + "begin": 49, + "abridged": false + }, + "system_health.memory_desktop": { + "end": 3, "abridged": false } } }, "18": { "benchmarks": { - "system_health.common_desktop": { - "begin": 75, - "abridged": false - }, "system_health.memory_desktop": { - "end": 14, + "begin": 3, + "end": 21, "abridged": false } } @@ -282,8 +287,8 @@ "19": { "benchmarks": { "system_health.memory_desktop": { - "begin": 14, - "end": 28, + "begin": 21, + "end": 39, "abridged": false } } @@ -291,8 +296,8 @@ "20": { "benchmarks": { "system_health.memory_desktop": { - "begin": 28, - "end": 48, + "begin": 39, + "end": 62, "abridged": false } } @@ -300,8 +305,8 @@ "21": { "benchmarks": { "system_health.memory_desktop": { - "begin": 48, - "end": 69, + "begin": 62, + "end": 76, "abridged": false } } @@ -309,16 +314,19 @@ "22": { "benchmarks": { "system_health.memory_desktop": { - "begin": 69, - "end": 77, + "begin": 76, + "abridged": false + }, + "tab_search": { + "end": 6, "abridged": false } } }, "23": { "benchmarks": { - "system_health.memory_desktop": { - "begin": 77, + "tab_search": { + "begin": 6, "abridged": false }, "tab_switching.typical_25": { @@ -328,7 +336,7 @@ "abridged": false }, "v8.browsing_desktop": { - "end": 15, + "end": 16, "abridged": false } } @@ -336,22 +344,19 @@ "24": { "benchmarks": { "v8.browsing_desktop": { - "begin": 15, + "begin": 16, "abridged": false }, "v8.browsing_desktop-future": { - "end": 10, + "end": 12, "abridged": false } } }, "25": { "benchmarks": { - "tab_search": { - "abridged": false - }, "v8.browsing_desktop-future": { - "begin": 10, + "begin": 12, "abridged": false }, "webrtc": { @@ -360,36 +365,36 @@ } }, "extra_infos": { - "num_stories": 1070, - "predicted_min_shard_time": 1262.0, - "predicted_min_shard_index": 6, - "predicted_max_shard_time": 1331.0, - "predicted_max_shard_index": 23, - "shard #0": 1290.0, - "shard #1": 1295.0, - "shard #2": 1269.0, - "shard #3": 1308.0, - "shard #4": 1298.0, - "shard #5": 1318.0, - "shard #6": 1262.0, - "shard #7": 1272.0, - "shard #8": 1309.0, - "shard #9": 1281.0, - "shard #10": 1286.0, - "shard #11": 1284.0, - "shard #12": 1304.0, - "shard #13": 1277.0, - "shard #14": 1307.0, - "shard #15": 1308.0, - "shard #16": 1308.0, - "shard #17": 1268.0, - "shard #18": 1264.0, - "shard #19": 1302.0, - "shard #20": 1326.0, - "shard #21": 1263.0, - "shard #22": 1281.0, - "shard #23": 1331.0, - "shard #24": 1315.0, - "shard #25": 1286.0 + "num_stories": 1094, + "predicted_min_shard_time": 1344.0, + "predicted_min_shard_index": 25, + "predicted_max_shard_time": 1467.0, + "predicted_max_shard_index": 21, + "shard #0": 1398.0, + "shard #1": 1398.0, + "shard #2": 1396.0, + "shard #3": 1392.0, + "shard #4": 1406.0, + "shard #5": 1410.0, + "shard #6": 1400.0, + "shard #7": 1408.0, + "shard #8": 1399.0, + "shard #9": 1408.0, + "shard #10": 1387.0, + "shard #11": 1393.0, + "shard #12": 1393.0, + "shard #13": 1400.0, + "shard #14": 1395.0, + "shard #15": 1386.0, + "shard #16": 1407.0, + "shard #17": 1409.0, + "shard #18": 1416.0, + "shard #19": 1395.0, + "shard #20": 1422.0, + "shard #21": 1467.0, + "shard #22": 1371.0, + "shard #23": 1380.0, + "shard #24": 1393.0, + "shard #25": 1344.0 } -} +} \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/mac-10_13_laptop_high_end-perf_map.json b/tools/perf/core/shard_maps/mac-10_13_laptop_high_end-perf_map.json index 04e102e..af61c037 100644 --- a/tools/perf/core/shard_maps/mac-10_13_laptop_high_end-perf_map.json +++ b/tools/perf/core/shard_maps/mac-10_13_laptop_high_end-perf_map.json
@@ -8,7 +8,7 @@ "abridged": false }, "blink_perf.css": { - "end": 16, + "end": 38, "abridged": false } }, @@ -25,7 +25,7 @@ "1": { "benchmarks": { "blink_perf.css": { - "begin": 16, + "begin": 38, "abridged": false }, "blink_perf.dom": { @@ -38,21 +38,21 @@ "abridged": false }, "blink_perf.layout": { - "end": 88, - "abridged": false - } - } - }, - "2": { - "benchmarks": { - "blink_perf.layout": { - "begin": 88, "abridged": false }, "blink_perf.owp_storage": { "abridged": false }, "blink_perf.paint": { + "end": 4, + "abridged": false + } + } + }, + "2": { + "benchmarks": { + "blink_perf.paint": { + "begin": 4, "abridged": false }, "blink_perf.parser": { @@ -66,9 +66,15 @@ }, "blink_perf.webaudio": { "abridged": false - }, - "speedometer2-pcscan": { - "abridged": false + } + }, + "executables": { + "dawn_perf_tests": { + "path": "dawn_perf_tests", + "arguments": [ + "--test-launcher-jobs=1", + "--test-launcher-retry-limit=0" + ] } } }, @@ -93,25 +99,16 @@ "abridged": false }, "loading.desktop": { - "end": 5, + "end": 16, "abridged": false } - }, - "executables": { - "dawn_perf_tests": { - "path": "dawn_perf_tests", - "arguments": [ - "--test-launcher-jobs=1", - "--test-launcher-retry-limit=0" - ] - } } }, "4": { "benchmarks": { "loading.desktop": { - "begin": 5, - "end": 34, + "begin": 16, + "end": 44, "abridged": false } } @@ -119,8 +116,8 @@ "5": { "benchmarks": { "loading.desktop": { - "begin": 34, - "end": 59, + "begin": 44, + "end": 71, "abridged": false } } @@ -128,8 +125,8 @@ "6": { "benchmarks": { "loading.desktop": { - "begin": 59, - "end": 83, + "begin": 71, + "end": 98, "abridged": false } } @@ -137,25 +134,14 @@ "7": { "benchmarks": { "loading.desktop": { - "begin": 83, + "begin": 98, "abridged": false }, "media.desktop": { - "end": 16, - "abridged": false - } - } - }, - "8": { - "benchmarks": { - "media.desktop": { - "begin": 16, "abridged": false }, "memory.desktop": { - "abridged": false - }, - "octane": { + "end": 3, "abridged": false } }, @@ -167,7 +153,24 @@ "--test-launcher-retry-limit=0", "--isolated-script-test-filter=*::-*_unoptimized::*_unaligned::*unoptimized_aligned" ] + } + } + }, + "8": { + "benchmarks": { + "memory.desktop": { + "begin": 3, + "abridged": false }, + "octane": { + "abridged": false + }, + "power.desktop": { + "end": 8, + "abridged": false + } + }, + "executables": { "performance_browser_tests": { "path": "browser_tests", "arguments": [ @@ -185,13 +188,14 @@ "9": { "benchmarks": { "power.desktop": { + "begin": 8, "abridged": false }, "rasterize_and_record_micro.top_25": { "abridged": false }, "rendering.desktop": { - "end": 10, + "end": 27, "abridged": false } } @@ -199,8 +203,8 @@ "10": { "benchmarks": { "rendering.desktop": { - "begin": 10, - "end": 60, + "begin": 27, + "end": 81, "abridged": false } } @@ -208,8 +212,8 @@ "11": { "benchmarks": { "rendering.desktop": { - "begin": 60, - "end": 117, + "begin": 81, + "end": 140, "abridged": false } } @@ -217,8 +221,8 @@ "12": { "benchmarks": { "rendering.desktop": { - "begin": 117, - "end": 169, + "begin": 140, + "end": 191, "abridged": false } } @@ -226,8 +230,8 @@ "13": { "benchmarks": { "rendering.desktop": { - "begin": 169, - "end": 223, + "begin": 191, + "end": 240, "abridged": false } } @@ -235,8 +239,8 @@ "14": { "benchmarks": { "rendering.desktop": { - "begin": 223, - "end": 270, + "begin": 240, + "end": 288, "abridged": false } } @@ -244,7 +248,7 @@ "15": { "benchmarks": { "rendering.desktop": { - "begin": 270, + "begin": 288, "abridged": false }, "speedometer": { @@ -259,8 +263,11 @@ "speedometer2-future": { "abridged": false }, + "speedometer2-pcscan": { + "abridged": false + }, "system_health.common_desktop": { - "end": 7, + "end": 14, "abridged": false } } @@ -268,8 +275,8 @@ "16": { "benchmarks": { "system_health.common_desktop": { - "begin": 7, - "end": 49, + "begin": 14, + "end": 62, "abridged": false } } @@ -277,7 +284,11 @@ "17": { "benchmarks": { "system_health.common_desktop": { - "begin": 49, + "begin": 62, + "abridged": false + }, + "system_health.memory_desktop": { + "end": 6, "abridged": false } } @@ -285,7 +296,8 @@ "18": { "benchmarks": { "system_health.memory_desktop": { - "end": 16, + "begin": 6, + "end": 22, "abridged": false } } @@ -293,8 +305,8 @@ "19": { "benchmarks": { "system_health.memory_desktop": { - "begin": 16, - "end": 31, + "begin": 22, + "end": 41, "abridged": false } } @@ -302,8 +314,8 @@ "20": { "benchmarks": { "system_health.memory_desktop": { - "begin": 31, - "end": 51, + "begin": 41, + "end": 63, "abridged": false } } @@ -311,8 +323,8 @@ "21": { "benchmarks": { "system_health.memory_desktop": { - "begin": 51, - "end": 70, + "begin": 63, + "end": 74, "abridged": false } } @@ -320,16 +332,19 @@ "22": { "benchmarks": { "system_health.memory_desktop": { - "begin": 70, - "end": 78, + "begin": 74, + "abridged": false + }, + "tab_search": { + "end": 5, "abridged": false } } }, "23": { "benchmarks": { - "system_health.memory_desktop": { - "begin": 78, + "tab_search": { + "begin": 5, "abridged": false }, "tab_switching.typical_25": { @@ -339,7 +354,7 @@ "abridged": false }, "v8.browsing_desktop": { - "end": 18, + "end": 17, "abridged": false } } @@ -347,7 +362,7 @@ "24": { "benchmarks": { "v8.browsing_desktop": { - "begin": 18, + "begin": 17, "abridged": false }, "v8.browsing_desktop-future": { @@ -358,9 +373,6 @@ }, "25": { "benchmarks": { - "tab_search": { - "abridged": false - }, "v8.browsing_desktop-future": { "begin": 11, "abridged": false @@ -379,36 +391,36 @@ } }, "extra_infos": { - "num_stories": 1064, - "predicted_min_shard_time": 927.0, - "predicted_min_shard_index": 2, - "predicted_max_shard_time": 1128.0, - "predicted_max_shard_index": 8, - "shard #0": 1030.0, - "shard #1": 1031.0, - "shard #2": 937.0, - "shard #3": 1025.0, - "shard #4": 1048.0, - "shard #5": 1032.0, - "shard #6": 1022.0, - "shard #7": 1041.0, - "shard #8": 1128.0, - "shard #9": 1021.0, - "shard #10": 1027.0, - "shard #11": 1041.0, - "shard #12": 1033.0, - "shard #13": 1042.0, - "shard #14": 1029.0, - "shard #15": 1023.0, - "shard #16": 1042.0, - "shard #17": 1056.0, - "shard #18": 1062.0, - "shard #19": 1047.0, - "shard #20": 1017.0, - "shard #21": 1077.0, - "shard #22": 1074.0, - "shard #23": 961.0, - "shard #24": 1016.0, - "shard #25": 988.0 + "num_stories": 1088, + "predicted_min_shard_time": 1075.0, + "predicted_min_shard_index": 24, + "predicted_max_shard_time": 1204.0, + "predicted_max_shard_index": 2, + "shard #0": 1113.0, + "shard #1": 1114.0, + "shard #2": 1204.0, + "shard #3": 1105.0, + "shard #4": 1106.0, + "shard #5": 1112.0, + "shard #6": 1128.0, + "shard #7": 1095.0, + "shard #8": 1121.0, + "shard #9": 1111.0, + "shard #10": 1107.0, + "shard #11": 1117.0, + "shard #12": 1117.0, + "shard #13": 1097.0, + "shard #14": 1110.0, + "shard #15": 1107.0, + "shard #16": 1105.0, + "shard #17": 1126.0, + "shard #18": 1173.0, + "shard #19": 1092.0, + "shard #20": 1089.0, + "shard #21": 1098.0, + "shard #22": 1115.0, + "shard #23": 1095.0, + "shard #24": 1075.0, + "shard #25": 1101.0 } -} +} \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/mac-arm_dtk_arm-perf_map.json b/tools/perf/core/shard_maps/mac-arm_dtk_arm-perf_map.json index f2f63af..efdd59b 100644 --- a/tools/perf/core/shard_maps/mac-arm_dtk_arm-perf_map.json +++ b/tools/perf/core/shard_maps/mac-arm_dtk_arm-perf_map.json
@@ -17,24 +17,6 @@ "abridged": false }, "blink_perf.image_decoder": { - "end": 4, - "abridged": false - } - }, - "executables": { - "base_perftests": { - "path": "base_perftests", - "arguments": [ - "--test-launcher-jobs=1", - "--test-launcher-retry-limit=0" - ] - } - } - }, - "1": { - "benchmarks": { - "blink_perf.image_decoder": { - "begin": 4, "abridged": false }, "blink_perf.layout": { @@ -47,15 +29,6 @@ "abridged": false }, "blink_perf.parser": { - "end": 26, - "abridged": false - } - } - }, - "2": { - "benchmarks": { - "blink_perf.parser": { - "begin": 26, "abridged": false }, "blink_perf.shadow_dom": { @@ -81,16 +54,16 @@ }, "jetstream2": { "abridged": false - }, - "kraken": { - "abridged": false - }, - "loading.desktop": { - "end": 20, - "abridged": false } }, "executables": { + "base_perftests": { + "path": "base_perftests", + "arguments": [ + "--test-launcher-jobs=1", + "--test-launcher-retry-limit=0" + ] + }, "dawn_perf_tests": { "path": "dawn_perf_tests", "arguments": [ @@ -100,10 +73,21 @@ } } }, - "3": { + "1": { + "benchmarks": { + "kraken": { + "abridged": false + }, + "loading.desktop": { + "end": 84, + "abridged": false + } + } + }, + "2": { "benchmarks": { "loading.desktop": { - "begin": 20, + "begin": 84, "abridged": false }, "media.desktop": { @@ -112,10 +96,17 @@ "memory.desktop": { "abridged": false }, - "speedometer2-pcscan": { + "octane": { "abridged": false }, - "octane": { + "power.desktop": { + "abridged": false + }, + "rasterize_and_record_micro.top_25": { + "abridged": false + }, + "rendering.desktop": { + "end": 15, "abridged": false } }, @@ -127,23 +118,7 @@ "--test-launcher-retry-limit=0", "--isolated-script-test-filter=*::-*_unoptimized::*_unaligned::*unoptimized_aligned" ] - } - } - }, - "4": { - "benchmarks": { - "power.desktop": { - "abridged": false }, - "rasterize_and_record_micro.top_25": { - "abridged": false - }, - "rendering.desktop": { - "end": 90, - "abridged": false - } - }, - "executables": { "performance_browser_tests": { "path": "browser_tests", "arguments": [ @@ -158,19 +133,19 @@ } } }, - "5": { + "3": { "benchmarks": { "rendering.desktop": { - "begin": 90, - "end": 240, + "begin": 15, + "end": 178, "abridged": false } } }, - "6": { + "4": { "benchmarks": { "rendering.desktop": { - "begin": 240, + "begin": 178, "abridged": false }, "speedometer": { @@ -185,11 +160,32 @@ "speedometer2-future": { "abridged": false }, + "speedometer2-pcscan": { + "abridged": false + }, "system_health.common_desktop": { + "end": 15, + "abridged": false + } + } + }, + "5": { + "benchmarks": { + "system_health.common_desktop": { + "begin": 15, "abridged": false }, "system_health.memory_desktop": { - "end": 2, + "end": 24, + "abridged": false + } + } + }, + "6": { + "benchmarks": { + "system_health.memory_desktop": { + "begin": 24, + "end": 78, "abridged": false } } @@ -197,7 +193,7 @@ "7": { "benchmarks": { "system_health.memory_desktop": { - "begin": 2, + "begin": 78, "abridged": false }, "tab_search": { @@ -229,18 +225,18 @@ } }, "extra_infos": { - "num_stories": 1064, - "predicted_min_shard_time": 1428.0, - "predicted_min_shard_index": 3, - "predicted_max_shard_time": 1500, - "predicted_max_shard_index": 5, - "shard #0": 1480.0, - "shard #1": 1480, - "shard #2": 1482.0, - "shard #3": 1428.0, - "shard #4": 1490.0, - "shard #5": 1500, - "shard #6": 1490, - "shard #7": 1497.0 + "num_stories": 1088, + "predicted_min_shard_time": 4017.0, + "predicted_min_shard_index": 6, + "predicted_max_shard_time": 4154.0, + "predicted_max_shard_index": 7, + "shard #0": 4145.0, + "shard #1": 4101.0, + "shard #2": 4100.0, + "shard #3": 4116.0, + "shard #4": 4127.0, + "shard #5": 4127.0, + "shard #6": 4017.0, + "shard #7": 4154.0 } -} +} \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/mac-m1_mini_2020-perf_map.json b/tools/perf/core/shard_maps/mac-m1_mini_2020-perf_map.json index 90843ed7..ad83860 100644 --- a/tools/perf/core/shard_maps/mac-m1_mini_2020-perf_map.json +++ b/tools/perf/core/shard_maps/mac-m1_mini_2020-perf_map.json
@@ -17,11 +17,11 @@ }, "extra_infos": { "num_stories": 10, - "predicted_min_shard_time": 50, + "predicted_min_shard_time": 170.0, "predicted_min_shard_index": 0, - "predicted_max_shard_time": 50, - "predicted_max_shard_index": 0, - "shard #0": 50, - "shard #1": 50 + "predicted_max_shard_time": 224.0, + "predicted_max_shard_index": 1, + "shard #0": 170.0, + "shard #1": 224.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 474f61c2..9700344 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,10 +1,10 @@ [ { - "duration": "140.0", + "duration": "139.0", "name": "speedometer/http://browserbench.org/Speedometer/" }, { - "duration": "267.0", + "duration": "266.0", "name": "speedometer2/Speedometer2" }, { @@ -12,15 +12,15 @@ "name": "startup.mobile/cct:coldish:bbc" }, { - "duration": "145.0", + "duration": "147.0", "name": "startup.mobile/intent:coldish:bbc" }, { - "duration": "113.0", + "duration": "114.0", "name": "startup.mobile/intent:warm:bbc" }, { - "duration": "105.0", + "duration": "107.0", "name": "startup.mobile/maps_pwa:with_http_cache" }, { @@ -28,55 +28,55 @@ "name": "system_health.common_mobile/background:media:imgur:2019" }, { - "duration": "128.0", + "duration": "127.0", "name": "system_health.common_mobile/background:news:nytimes:2019" }, { - "duration": "38.0", + "duration": "34.0", "name": "system_health.common_mobile/background:search:google:2019" }, { - "duration": "34.0", + "duration": "28.0", "name": "system_health.common_mobile/background:social:facebook:2019" }, { - "duration": "51.0", + "duration": "48.0", "name": "system_health.common_mobile/background:tools:gmail:2019" }, { - "duration": "217.0", + "duration": "216.0", "name": "system_health.common_mobile/browse:chrome:newtab:2019" }, { - "duration": "62.0", + "duration": "6.0", "name": "system_health.common_mobile/browse:chrome:omnibox:2019" }, { - "duration": "95.0", + "duration": "97.0", "name": "system_health.common_mobile/browse:media:facebook_photos:2019" }, { - "duration": "62.0", + "duration": "64.0", "name": "system_health.common_mobile/browse:media:flickr_infinite_scroll:2019" }, { - "duration": "54.0", + "duration": "56.0", "name": "system_health.common_mobile/browse:media:googleplaystore:2019" }, { - "duration": "3.0", + "duration": "5.0", "name": "system_health.common_mobile/browse:media:imgur:2019" }, { - "duration": "83.0", + "duration": "81.0", "name": "system_health.common_mobile/browse:media:youtube:2019" }, { - "duration": "176.0", + "duration": "174.0", "name": "system_health.common_mobile/browse:news:cnn:2020" }, { - "duration": "8.0", + "duration": "9.0", "name": "system_health.common_mobile/browse:news:cricbuzz:2019" }, { @@ -84,11 +84,11 @@ "name": "system_health.common_mobile/browse:news:globo:2019" }, { - "duration": "220.0", + "duration": "201.0", "name": "system_health.common_mobile/browse:news:nytimes:2019" }, { - "duration": "56.0", + "duration": "55.0", "name": "system_health.common_mobile/browse:news:qq:2019" }, { @@ -96,27 +96,27 @@ "name": "system_health.common_mobile/browse:news:reddit:2019" }, { - "duration": "158.0", + "duration": "160.0", "name": "system_health.common_mobile/browse:news:toi:2019" }, { - "duration": "116.0", + "duration": "115.0", "name": "system_health.common_mobile/browse:news:washingtonpost:2019" }, { - "duration": "32.0", + "duration": "33.0", "name": "system_health.common_mobile/browse:search:amp:2018" }, { - "duration": "32.0", + "duration": "33.0", "name": "system_health.common_mobile/browse:search:amp:sxg:2019" }, { - "duration": "91.0", + "duration": "90.0", "name": "system_health.common_mobile/browse:shopping:amazon:2019" }, { - "duration": "82.0", + "duration": "83.0", "name": "system_health.common_mobile/browse:shopping:avito:2019" }, { @@ -124,75 +124,75 @@ "name": "system_health.common_mobile/browse:shopping:flipkart:2019" }, { - "duration": "125.0", + "duration": "126.0", "name": "system_health.common_mobile/browse:shopping:lazada:2019" }, { - "duration": "3.0", + "duration": "5.0", "name": "system_health.common_mobile/browse:social:facebook:2019" }, { - "duration": "97.0", + "duration": "98.0", "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "105.0", + "duration": "106.0", "name": "system_health.common_mobile/browse:social:instagram:2019" }, { - "duration": "6.0", + "duration": "4.0", "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "104.0", + "duration": "101.0", "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "102.0", + "duration": "101.0", "name": "system_health.common_mobile/browse:social:twitter:2019" }, { - "duration": "93.0", + "duration": "94.0", "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "58.0", + "duration": "59.0", "name": "system_health.common_mobile/browse:tools:maps:2019" }, { - "duration": "29.0", + "duration": "33.0", "name": "system_health.common_mobile/load:chrome:blank" }, { - "duration": "27.0", + "duration": "28.0", "name": "system_health.common_mobile/load:games:bubbles:2020" }, { - "duration": "28.0", + "duration": "29.0", "name": "system_health.common_mobile/load:games:lazors" }, { - "duration": "38.0", + "duration": "37.0", "name": "system_health.common_mobile/load:games:spychase:2018" }, { - "duration": "37.0", + "duration": "38.0", "name": "system_health.common_mobile/load:media:dailymotion:2019" }, { - "duration": "29.0", + "duration": "31.0", "name": "system_health.common_mobile/load:media:facebook_feed:mobile:2020" }, { - "duration": "26.0", + "duration": "27.0", "name": "system_health.common_mobile/load:media:facebook_photos:2019" }, { - "duration": "30.0", + "duration": "32.0", "name": "system_health.common_mobile/load:media:facebook_photos:mobile:2020" }, { - "duration": "36.0", + "duration": "37.0", "name": "system_health.common_mobile/load:media:flickr:2018" }, { @@ -200,43 +200,47 @@ "name": "system_health.common_mobile/load:media:google_images:2018" }, { - "duration": "37.0", + "duration": "36.0", "name": "system_health.common_mobile/load:media:imgur:2018" }, { - "duration": "27.0", + "duration": "26.0", "name": "system_health.common_mobile/load:media:soundcloud:2018" }, { - "duration": "30.0", + "duration": "29.0", "name": "system_health.common_mobile/load:media:youtube:2018" }, { - "duration": "30.0", + "duration": "32.0", "name": "system_health.common_mobile/load:news:bbc:2019" }, { - "duration": "39.0", + "duration": "48.0", + "name": "system_health.common_mobile/load:news:cnn:2020" + }, + { + "duration": "38.0", "name": "system_health.common_mobile/load:news:irctc:2019" }, { - "duration": "59.0", + "duration": "58.0", "name": "system_health.common_mobile/load:news:nytimes:2019" }, { - "duration": "32.0", + "duration": "31.0", "name": "system_health.common_mobile/load:news:qq:2019" }, { - "duration": "33.0", + "duration": "32.0", "name": "system_health.common_mobile/load:news:reddit:2019" }, { - "duration": "30.0", + "duration": "29.0", "name": "system_health.common_mobile/load:news:washingtonpost:2019" }, { - "duration": "30.0", + "duration": "29.0", "name": "system_health.common_mobile/load:news:wikipedia:2018" }, { @@ -244,23 +248,23 @@ "name": "system_health.common_mobile/load:search:amazon:2019" }, { - "duration": "36.0", + "duration": "38.0", "name": "system_health.common_mobile/load:search:baidu:2018" }, { - "duration": "28.0", + "duration": "29.0", "name": "system_health.common_mobile/load:search:ebay:2018" }, { - "duration": "28.0", + "duration": "27.0", "name": "system_health.common_mobile/load:search:google:2018" }, { - "duration": "28.0", + "duration": "27.0", "name": "system_health.common_mobile/load:search:taobao:2019" }, { - "duration": "25.0", + "duration": "24.0", "name": "system_health.common_mobile/load:search:yahoo:2018" }, { @@ -268,39 +272,39 @@ "name": "system_health.common_mobile/load:search:yandex:2018" }, { - "duration": "30.0", + "duration": "29.0", "name": "system_health.common_mobile/load:social:instagram:2019" }, { - "duration": "36.0", + "duration": "35.0", "name": "system_health.common_mobile/load:social:pinterest:2019" }, { - "duration": "30.0", + "duration": "29.0", "name": "system_health.common_mobile/load:social:twitter:2019" }, { - "duration": "25.0", + "duration": "26.0", "name": "system_health.common_mobile/load:tools:docs:2019" }, { - "duration": "31.0", + "duration": "32.0", "name": "system_health.common_mobile/load:tools:drive:2019" }, { - "duration": "3.0", + "duration": "5.0", "name": "system_health.common_mobile/load:tools:dropbox:2019" }, { - "duration": "50.0", + "duration": "49.0", "name": "system_health.common_mobile/load:tools:gmail:2019" }, { - "duration": "30.0", + "duration": "29.0", "name": "system_health.common_mobile/load:tools:stackoverflow:2018" }, { - "duration": "30.0", + "duration": "29.0", "name": "system_health.common_mobile/load:tools:weather:2019" }, { @@ -312,7 +316,7 @@ "name": "system_health.common_mobile/long_running:tools:gmail-foreground" }, { - "duration": "41.0", + "duration": "42.0", "name": "system_health.memory_mobile/background:media:imgur:2019" }, { @@ -332,47 +336,47 @@ "name": "system_health.memory_mobile/background:tools:gmail:2019" }, { - "duration": "223.0", + "duration": "216.0", "name": "system_health.memory_mobile/browse:chrome:newtab:2019" }, { - "duration": "61.0", + "duration": "3.0", "name": "system_health.memory_mobile/browse:chrome:omnibox:2019" }, { - "duration": "96.0", + "duration": "98.0", "name": "system_health.memory_mobile/browse:media:facebook_photos:2019" }, { - "duration": "66.0", + "duration": "67.0", "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll:2019" }, { - "duration": "58.0", + "duration": "61.0", "name": "system_health.memory_mobile/browse:media:googleplaystore:2019" }, { - "duration": "99.0", + "duration": "100.0", "name": "system_health.memory_mobile/browse:media:imgur:2019" }, { - "duration": "77.0", + "duration": "78.0", "name": "system_health.memory_mobile/browse:media:youtube:2019" }, { - "duration": "2.0", + "duration": "3.0", "name": "system_health.memory_mobile/browse:news:cnn:2020" }, { - "duration": "3.0", + "duration": "4.0", "name": "system_health.memory_mobile/browse:news:cricbuzz:2019" }, { - "duration": "87.0", + "duration": "86.0", "name": "system_health.memory_mobile/browse:news:globo:2019" }, { - "duration": "199.0", + "duration": "188.0", "name": "system_health.memory_mobile/browse:news:nytimes:2019" }, { @@ -384,15 +388,15 @@ "name": "system_health.memory_mobile/browse:news:reddit:2019" }, { - "duration": "144.0", + "duration": "146.0", "name": "system_health.memory_mobile/browse:news:toi:2019" }, { - "duration": "108.0", + "duration": "111.0", "name": "system_health.memory_mobile/browse:news:washingtonpost:2019" }, { - "duration": "36.0", + "duration": "35.0", "name": "system_health.memory_mobile/browse:search:amp:2018" }, { @@ -404,11 +408,11 @@ "name": "system_health.memory_mobile/browse:shopping:amazon:2019" }, { - "duration": "76.0", + "duration": "78.0", "name": "system_health.memory_mobile/browse:shopping:avito:2019" }, { - "duration": "87.0", + "duration": "86.0", "name": "system_health.memory_mobile/browse:shopping:flipkart:2019" }, { @@ -416,51 +420,51 @@ "name": "system_health.memory_mobile/browse:shopping:lazada:2019" }, { - "duration": "2.0", + "duration": "3.0", "name": "system_health.memory_mobile/browse:social:facebook:2019" }, { - "duration": "95.0", + "duration": "97.0", "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "105.0", + "duration": "106.0", "name": "system_health.memory_mobile/browse:social:instagram:2019" }, { - "duration": "125.0", + "duration": "2.0", "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "96.0", + "duration": "95.0", "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "104.0", + "duration": "105.0", "name": "system_health.memory_mobile/browse:social:twitter:2019" }, { - "duration": "2.0", + "duration": "3.0", "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "59.0", + "duration": "61.0", "name": "system_health.memory_mobile/browse:tools:maps:2019" }, { - "duration": "29.0", + "duration": "31.0", "name": "system_health.memory_mobile/load:chrome:blank" }, { - "duration": "32.0", + "duration": "31.0", "name": "system_health.memory_mobile/load:games:bubbles:2020" }, { - "duration": "31.0", + "duration": "32.0", "name": "system_health.memory_mobile/load:games:lazors" }, { - "duration": "41.0", + "duration": "40.0", "name": "system_health.memory_mobile/load:games:spychase:2018" }, { @@ -476,7 +480,7 @@ "name": "system_health.memory_mobile/load:media:facebook_photos:2019" }, { - "duration": "35.0", + "duration": "36.0", "name": "system_health.memory_mobile/load:media:facebook_photos:mobile:2020" }, { @@ -484,11 +488,11 @@ "name": "system_health.memory_mobile/load:media:flickr:2018" }, { - "duration": "35.0", + "duration": "36.0", "name": "system_health.memory_mobile/load:media:google_images:2018" }, { - "duration": "40.0", + "duration": "41.0", "name": "system_health.memory_mobile/load:media:imgur:2018" }, { @@ -496,19 +500,23 @@ "name": "system_health.memory_mobile/load:media:soundcloud:2018" }, { - "duration": "34.0", + "duration": "35.0", "name": "system_health.memory_mobile/load:media:youtube:2018" }, { - "duration": "36.0", + "duration": "35.0", "name": "system_health.memory_mobile/load:news:bbc:2019" }, { - "duration": "42.0", + "duration": "51.0", + "name": "system_health.memory_mobile/load:news:cnn:2020" + }, + { + "duration": "44.0", "name": "system_health.memory_mobile/load:news:irctc:2019" }, { - "duration": "61.0", + "duration": "60.0", "name": "system_health.memory_mobile/load:news:nytimes:2019" }, { @@ -520,11 +528,11 @@ "name": "system_health.memory_mobile/load:news:reddit:2019" }, { - "duration": "34.0", + "duration": "35.0", "name": "system_health.memory_mobile/load:news:washingtonpost:2019" }, { - "duration": "34.0", + "duration": "35.0", "name": "system_health.memory_mobile/load:news:wikipedia:2018" }, { @@ -544,7 +552,7 @@ "name": "system_health.memory_mobile/load:search:google:2018" }, { - "duration": "33.0", + "duration": "34.0", "name": "system_health.memory_mobile/load:search:taobao:2019" }, { @@ -576,11 +584,11 @@ "name": "system_health.memory_mobile/load:tools:drive:2019" }, { - "duration": "3.0", + "duration": "2.0", "name": "system_health.memory_mobile/load:tools:dropbox:2019" }, { - "duration": "50.0", + "duration": "51.0", "name": "system_health.memory_mobile/load:tools:gmail:2019" }, { @@ -592,87 +600,87 @@ "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" }, { - "duration": "229.0", + "duration": "284.0", "name": "v8.browsing_mobile/browse:chrome:newtab:2019" }, { - "duration": "79.0", + "duration": "12.0", "name": "v8.browsing_mobile/browse:chrome:omnibox:2019" }, { - "duration": "120.0", + "duration": "122.0", "name": "v8.browsing_mobile/browse:media:facebook_photos:2019" }, { - "duration": "87.0", + "duration": "97.0", "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll:2019" }, { - "duration": "70.0", + "duration": "77.0", "name": "v8.browsing_mobile/browse:media:googleplaystore:2019" }, { - "duration": "148.0", + "duration": "159.0", "name": "v8.browsing_mobile/browse:media:imgur:2019" }, { - "duration": "118.0", + "duration": "112.0", "name": "v8.browsing_mobile/browse:media:youtube:2019" }, { - "duration": "13.0", + "duration": "14.0", "name": "v8.browsing_mobile/browse:news:cnn:2020" }, { - "duration": "13.0", + "duration": "14.0", "name": "v8.browsing_mobile/browse:news:cricbuzz:2019" }, { - "duration": "115.0", + "duration": "117.0", "name": "v8.browsing_mobile/browse:news:globo:2019" }, { - "duration": "356.0", + "duration": "328.0", "name": "v8.browsing_mobile/browse:news:nytimes:2019" }, { - "duration": "76.0", + "duration": "71.0", "name": "v8.browsing_mobile/browse:news:qq:2019" }, { - "duration": "159.0", + "duration": "153.0", "name": "v8.browsing_mobile/browse:news:reddit:2019" }, { - "duration": "216.0", + "duration": "226.0", "name": "v8.browsing_mobile/browse:news:toi:2019" }, { - "duration": "159.0", + "duration": "157.0", "name": "v8.browsing_mobile/browse:news:washingtonpost:2019" }, { - "duration": "44.0", + "duration": "52.0", "name": "v8.browsing_mobile/browse:search:amp:2018" }, { - "duration": "44.0", + "duration": "52.0", "name": "v8.browsing_mobile/browse:search:amp:sxg:2019" }, { - "duration": "118.0", + "duration": "136.0", "name": "v8.browsing_mobile/browse:shopping:amazon:2019" }, { - "duration": "106.0", + "duration": "117.0", "name": "v8.browsing_mobile/browse:shopping:avito:2019" }, { @@ -680,39 +688,39 @@ "name": "v8.browsing_mobile/browse:shopping:flipkart:2019" }, { - "duration": "168.0", + "duration": "175.0", "name": "v8.browsing_mobile/browse:shopping:lazada:2019" }, { - "duration": "13.0", + "duration": "14.0", "name": "v8.browsing_mobile/browse:social:facebook:2019" }, { - "duration": "129.0", + "duration": "138.0", "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "129.0", + "duration": "138.0", "name": "v8.browsing_mobile/browse:social:instagram:2019" }, { - "duration": "17.0", + "duration": "12.0", "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "137.0", + "duration": "133.0", "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "184.0", + "duration": "176.0", "name": "v8.browsing_mobile/browse:social:twitter:2019" }, { - "duration": "118.0", + "duration": "116.0", "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "76.0", + "duration": "84.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-go_webview-perf_timing.json b/tools/perf/core/shard_maps/timing_data/android-go_webview-perf_timing.json index 2665d5a..0dc4c11 100644 --- a/tools/perf/core/shard_maps/timing_data/android-go_webview-perf_timing.json +++ b/tools/perf/core/shard_maps/timing_data/android-go_webview-perf_timing.json
@@ -1,18 +1,18 @@ [ { - "duration": "136.0", + "duration": "135.0", "name": "speedometer/http://browserbench.org/Speedometer/" }, { - "duration": "258.0", + "duration": "255.0", "name": "speedometer2/Speedometer2" }, { - "duration": "34.0", + "duration": "33.0", "name": "system_health.common_mobile/background:media:imgur:2019" }, { - "duration": "111.0", + "duration": "108.0", "name": "system_health.common_mobile/background:news:nytimes:2019" }, { @@ -28,35 +28,35 @@ "name": "system_health.common_mobile/background:tools:gmail:2019" }, { - "duration": "11.0", + "duration": "12.0", "name": "system_health.common_mobile/browse:chrome:newtab:2019" }, { - "duration": "12.0", + "duration": "5.0", "name": "system_health.common_mobile/browse:chrome:omnibox:2019" }, { - "duration": "90.0", + "duration": "91.0", "name": "system_health.common_mobile/browse:media:facebook_photos:2019" }, { - "duration": "61.0", + "duration": "63.0", "name": "system_health.common_mobile/browse:media:flickr_infinite_scroll:2019" }, { - "duration": "53.0", + "duration": "54.0", "name": "system_health.common_mobile/browse:media:googleplaystore:2019" }, { - "duration": "5.0", + "duration": "6.0", "name": "system_health.common_mobile/browse:media:imgur:2019" }, { - "duration": "78.0", + "duration": "76.0", "name": "system_health.common_mobile/browse:media:youtube:2019" }, { - "duration": "172.0", + "duration": "171.0", "name": "system_health.common_mobile/browse:news:cnn:2020" }, { @@ -68,7 +68,7 @@ "name": "system_health.common_mobile/browse:news:globo:2019" }, { - "duration": "214.0", + "duration": "202.0", "name": "system_health.common_mobile/browse:news:nytimes:2019" }, { @@ -80,31 +80,31 @@ "name": "system_health.common_mobile/browse:news:reddit:2019" }, { - "duration": "141.0", + "duration": "140.0", "name": "system_health.common_mobile/browse:news:toi:2019" }, { - "duration": "100.0", + "duration": "99.0", "name": "system_health.common_mobile/browse:news:washingtonpost:2019" }, { - "duration": "32.0", + "duration": "33.0", "name": "system_health.common_mobile/browse:search:amp:2018" }, { - "duration": "31.0", + "duration": "32.0", "name": "system_health.common_mobile/browse:search:amp:sxg:2019" }, { - "duration": "80.0", + "duration": "79.0", "name": "system_health.common_mobile/browse:shopping:amazon:2019" }, { - "duration": "74.0", + "duration": "73.0", "name": "system_health.common_mobile/browse:shopping:avito:2019" }, { - "duration": "85.0", + "duration": "84.0", "name": "system_health.common_mobile/browse:shopping:flipkart:2019" }, { @@ -112,23 +112,23 @@ "name": "system_health.common_mobile/browse:shopping:lazada:2019" }, { - "duration": "5.0", + "duration": "6.0", "name": "system_health.common_mobile/browse:social:facebook:2019" }, { - "duration": "96.0", + "duration": "97.0", "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "5.0", + "duration": "6.0", "name": "system_health.common_mobile/browse:social:instagram:2019" }, { - "duration": "4.0", + "duration": "5.0", "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "93.0", + "duration": "90.0", "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018" }, { @@ -136,7 +136,7 @@ "name": "system_health.common_mobile/browse:social:twitter:2019" }, { - "duration": "85.0", + "duration": "86.0", "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll:2018" }, { @@ -144,19 +144,19 @@ "name": "system_health.common_mobile/browse:tools:maps:2019" }, { - "duration": "23.0", + "duration": "25.0", "name": "system_health.common_mobile/load:chrome:blank" }, { - "duration": "27.0", + "duration": "28.0", "name": "system_health.common_mobile/load:games:bubbles:2020" }, { - "duration": "25.0", + "duration": "28.0", "name": "system_health.common_mobile/load:games:lazors" }, { - "duration": "35.0", + "duration": "36.0", "name": "system_health.common_mobile/load:games:spychase:2018" }, { @@ -164,19 +164,19 @@ "name": "system_health.common_mobile/load:media:dailymotion:2019" }, { - "duration": "29.0", + "duration": "30.0", "name": "system_health.common_mobile/load:media:facebook_feed:mobile:2020" }, { - "duration": "25.0", + "duration": "26.0", "name": "system_health.common_mobile/load:media:facebook_photos:2019" }, { - "duration": "29.0", + "duration": "30.0", "name": "system_health.common_mobile/load:media:facebook_photos:mobile:2020" }, { - "duration": "36.0", + "duration": "37.0", "name": "system_health.common_mobile/load:media:flickr:2018" }, { @@ -184,23 +184,27 @@ "name": "system_health.common_mobile/load:media:google_images:2018" }, { - "duration": "4.0", + "duration": "5.0", "name": "system_health.common_mobile/load:media:imgur:2018" }, { - "duration": "4.0", + "duration": "5.0", "name": "system_health.common_mobile/load:media:soundcloud:2018" }, { - "duration": "28.0", + "duration": "29.0", "name": "system_health.common_mobile/load:media:youtube:2018" }, { - "duration": "30.0", + "duration": "31.0", "name": "system_health.common_mobile/load:news:bbc:2019" }, { - "duration": "32.0", + "duration": "49.0", + "name": "system_health.common_mobile/load:news:cnn:2020" + }, + { + "duration": "33.0", "name": "system_health.common_mobile/load:news:irctc:2019" }, { @@ -208,43 +212,43 @@ "name": "system_health.common_mobile/load:news:nytimes:2019" }, { - "duration": "30.0", + "duration": "31.0", "name": "system_health.common_mobile/load:news:qq:2019" }, { - "duration": "31.0", + "duration": "32.0", "name": "system_health.common_mobile/load:news:reddit:2019" }, { - "duration": "27.0", + "duration": "28.0", "name": "system_health.common_mobile/load:news:washingtonpost:2019" }, { - "duration": "25.0", + "duration": "26.0", "name": "system_health.common_mobile/load:news:wikipedia:2018" }, { - "duration": "33.0", + "duration": "34.0", "name": "system_health.common_mobile/load:search:amazon:2019" }, { - "duration": "36.0", + "duration": "38.0", "name": "system_health.common_mobile/load:search:baidu:2018" }, { - "duration": "28.0", + "duration": "29.0", "name": "system_health.common_mobile/load:search:ebay:2018" }, { - "duration": "25.0", + "duration": "27.0", "name": "system_health.common_mobile/load:search:google:2018" }, { - "duration": "26.0", + "duration": "27.0", "name": "system_health.common_mobile/load:search:taobao:2019" }, { - "duration": "23.0", + "duration": "24.0", "name": "system_health.common_mobile/load:search:yahoo:2018" }, { @@ -252,7 +256,7 @@ "name": "system_health.common_mobile/load:search:yandex:2018" }, { - "duration": "27.0", + "duration": "28.0", "name": "system_health.common_mobile/load:social:instagram:2019" }, { @@ -260,47 +264,47 @@ "name": "system_health.common_mobile/load:social:pinterest:2019" }, { - "duration": "27.0", + "duration": "28.0", "name": "system_health.common_mobile/load:social:twitter:2019" }, { - "duration": "24.0", + "duration": "25.0", "name": "system_health.common_mobile/load:tools:docs:2019" }, { - "duration": "30.0", + "duration": "31.0", "name": "system_health.common_mobile/load:tools:drive:2019" }, { - "duration": "5.0", + "duration": "6.0", "name": "system_health.common_mobile/load:tools:dropbox:2019" }, { - "duration": "43.0", + "duration": "44.0", "name": "system_health.common_mobile/load:tools:gmail:2019" }, { - "duration": "28.0", + "duration": "29.0", "name": "system_health.common_mobile/load:tools:stackoverflow:2018" }, { - "duration": "27.0", + "duration": "28.0", "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": "38.0", + "duration": "37.0", "name": "system_health.memory_mobile/background:media:imgur:2019" }, { - "duration": "110.0", + "duration": "106.0", "name": "system_health.memory_mobile/background:news:nytimes:2019" }, { @@ -308,11 +312,11 @@ "name": "system_health.memory_mobile/background:search:google:2019" }, { - "duration": "31.0", + "duration": "30.0", "name": "system_health.memory_mobile/background:social:facebook:2019" }, { - "duration": "47.0", + "duration": "46.0", "name": "system_health.memory_mobile/background:tools:gmail:2019" }, { @@ -320,15 +324,15 @@ "name": "system_health.memory_mobile/browse:chrome:newtab:2019" }, { - "duration": "15.0", + "duration": "3.0", "name": "system_health.memory_mobile/browse:chrome:omnibox:2019" }, { - "duration": "90.0", + "duration": "91.0", "name": "system_health.memory_mobile/browse:media:facebook_photos:2019" }, { - "duration": "63.0", + "duration": "64.0", "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll:2019" }, { @@ -336,7 +340,7 @@ "name": "system_health.memory_mobile/browse:media:googleplaystore:2019" }, { - "duration": "96.0", + "duration": "97.0", "name": "system_health.memory_mobile/browse:media:imgur:2019" }, { @@ -344,31 +348,31 @@ "name": "system_health.memory_mobile/browse:media:youtube:2019" }, { - "duration": "1.0", + "duration": "2.0", "name": "system_health.memory_mobile/browse:news:cnn:2020" }, { - "duration": "3.0", + "duration": "2.0", "name": "system_health.memory_mobile/browse:news:cricbuzz:2019" }, { - "duration": "95.0", + "duration": "94.0", "name": "system_health.memory_mobile/browse:news:globo:2019" }, { - "duration": "198.0", + "duration": "187.0", "name": "system_health.memory_mobile/browse:news:nytimes:2019" }, { - "duration": "56.0", + "duration": "55.0", "name": "system_health.memory_mobile/browse:news:qq:2019" }, { - "duration": "107.0", + "duration": "106.0", "name": "system_health.memory_mobile/browse:news:reddit:2019" }, { - "duration": "131.0", + "duration": "130.0", "name": "system_health.memory_mobile/browse:news:toi:2019" }, { @@ -376,7 +380,7 @@ "name": "system_health.memory_mobile/browse:news:washingtonpost:2019" }, { - "duration": "33.0", + "duration": "32.0", "name": "system_health.memory_mobile/browse:search:amp:2018" }, { @@ -384,47 +388,47 @@ "name": "system_health.memory_mobile/browse:search:amp:sxg:2019" }, { - "duration": "78.0", + "duration": "77.0", "name": "system_health.memory_mobile/browse:shopping:amazon:2019" }, { - "duration": "74.0", + "duration": "73.0", "name": "system_health.memory_mobile/browse:shopping:avito:2019" }, { - "duration": "87.0", + "duration": "85.0", "name": "system_health.memory_mobile/browse:shopping:flipkart:2019" }, { - "duration": "1.0", + "duration": "2.0", "name": "system_health.memory_mobile/browse:shopping:lazada:2019" }, { - "duration": "1.0", + "duration": "2.0", "name": "system_health.memory_mobile/browse:social:facebook:2019" }, { - "duration": "94.0", + "duration": "96.0", "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "2.0", + "duration": "3.0", "name": "system_health.memory_mobile/browse:social:instagram:2019" }, { - "duration": "3.0", + "duration": "2.0", "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "90.0", + "duration": "89.0", "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "101.0", + "duration": "100.0", "name": "system_health.memory_mobile/browse:social:twitter:2019" }, { - "duration": "1.0", + "duration": "2.0", "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll:2018" }, { @@ -436,7 +440,7 @@ "name": "system_health.memory_mobile/load:chrome:blank" }, { - "duration": "31.0", + "duration": "33.0", "name": "system_health.memory_mobile/load:games:bubbles:2020" }, { @@ -452,15 +456,15 @@ "name": "system_health.memory_mobile/load:media:dailymotion:2019" }, { - "duration": "32.0", + "duration": "33.0", "name": "system_health.memory_mobile/load:media:facebook_feed:mobile:2020" }, { - "duration": "29.0", + "duration": "28.0", "name": "system_health.memory_mobile/load:media:facebook_photos:2019" }, { - "duration": "33.0", + "duration": "32.0", "name": "system_health.memory_mobile/load:media:facebook_photos:mobile:2020" }, { @@ -468,27 +472,31 @@ "name": "system_health.memory_mobile/load:media:flickr:2018" }, { - "duration": "33.0", + "duration": "32.0", "name": "system_health.memory_mobile/load:media:google_images:2018" }, { - "duration": "3.0", + "duration": "2.0", "name": "system_health.memory_mobile/load:media:imgur:2018" }, { - "duration": "3.0", + "duration": "2.0", "name": "system_health.memory_mobile/load:media:soundcloud:2018" }, { - "duration": "32.0", + "duration": "31.0", "name": "system_health.memory_mobile/load:media:youtube:2018" }, { - "duration": "33.0", + "duration": "34.0", "name": "system_health.memory_mobile/load:news:bbc:2019" }, { - "duration": "37.0", + "duration": "52.0", + "name": "system_health.memory_mobile/load:news:cnn:2020" + }, + { + "duration": "36.0", "name": "system_health.memory_mobile/load:news:irctc:2019" }, { @@ -500,7 +508,7 @@ "name": "system_health.memory_mobile/load:news:qq:2019" }, { - "duration": "35.0", + "duration": "34.0", "name": "system_health.memory_mobile/load:news:reddit:2019" }, { @@ -512,19 +520,19 @@ "name": "system_health.memory_mobile/load:news:wikipedia:2018" }, { - "duration": "36.0", + "duration": "38.0", "name": "system_health.memory_mobile/load:search:amazon:2019" }, { - "duration": "37.0", + "duration": "39.0", "name": "system_health.memory_mobile/load:search:baidu:2018" }, { - "duration": "31.0", + "duration": "33.0", "name": "system_health.memory_mobile/load:search:ebay:2018" }, { - "duration": "31.0", + "duration": "30.0", "name": "system_health.memory_mobile/load:search:google:2018" }, { @@ -540,7 +548,7 @@ "name": "system_health.memory_mobile/load:search:yandex:2018" }, { - "duration": "32.0", + "duration": "31.0", "name": "system_health.memory_mobile/load:social:instagram:2019" }, { @@ -552,19 +560,19 @@ "name": "system_health.memory_mobile/load:social:twitter:2019" }, { - "duration": "27.0", + "duration": "29.0", "name": "system_health.memory_mobile/load:tools:docs:2019" }, { - "duration": "33.0", + "duration": "35.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": "47.0", + "duration": "46.0", "name": "system_health.memory_mobile/load:tools:gmail:2019" }, { @@ -576,15 +584,15 @@ "name": "system_health.memory_mobile/load:tools:weather:2019" }, { - "duration": "3.0", + "duration": "2.0", "name": "system_health.memory_mobile/long_running:tools:gmail-background" }, { - "duration": "3.0", + "duration": "2.0", "name": "system_health.memory_mobile/long_running:tools:gmail-foreground" }, { - "duration": "26.0", + "duration": "27.0", "name": "system_health.webview_startup/load:chrome:blank" }, {
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 20bead68..802ae8b 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": "121.0", + "duration": "23.0", "name": "blink_perf.accessibility/build-table.html" }, { - "duration": "23.0", + "duration": "19.0", "name": "blink_perf.accessibility/focus-links.html" }, { - "duration": "29.0", + "duration": "27.0", "name": "blink_perf.accessibility/line-breaks.html" }, { @@ -16,15 +16,15 @@ "name": "blink_perf.accessibility/many-text-changes-deep-block-subtree.html" }, { - "duration": "26.0", + "duration": "28.0", "name": "blink_perf.accessibility/many-text-changes-deep-hidden-subtree.html" }, { - "duration": "21.0", + "duration": "29.0", "name": "blink_perf.accessibility/many-text-changes-deep-inline-subtree.html" }, { - "duration": "27.0", + "duration": "29.0", "name": "blink_perf.accessibility/many-text-changes-small-wait-between.html" }, { @@ -32,7 +32,7 @@ "name": "blink_perf.accessibility/textarea-append.html" }, { - "duration": "14.0", + "duration": "15.0", "name": "blink_perf.bindings/append-child.html" }, { @@ -48,7 +48,7 @@ "name": "blink_perf.bindings/dom-attribute-on-prototoype.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.bindings/first-child.html" }, { @@ -60,7 +60,7 @@ "name": "blink_perf.bindings/gc-mini-tree.html" }, { - "duration": "23.0", + "duration": "21.0", "name": "blink_perf.bindings/gc-tree.html" }, { @@ -96,27 +96,27 @@ "name": "blink_perf.bindings/insert-before.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.bindings/named-property-enumerator.html" }, { - "duration": "21.0", + "duration": "23.0", "name": "blink_perf.bindings/node-list-access.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.bindings/node-type.html" }, { - "duration": "5.0", + "duration": "6.0", "name": "blink_perf.bindings/post-message.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.bindings/sequence-conversion-array.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.bindings/sequence-conversion-custom-iterator.html" }, { @@ -124,7 +124,7 @@ "name": "blink_perf.bindings/serialize-array.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.bindings/serialize-long-string.html" }, { @@ -132,111 +132,111 @@ "name": "blink_perf.bindings/serialize-map.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.bindings/serialize-nested-array.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.bindings/set-attribute-rare.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.bindings/set-attribute.html" }, { - "duration": "15.0", + "duration": "16.0", "name": "blink_perf.bindings/structured-clone-json-deserialize.html" }, { - "duration": "15.0", + "duration": "16.0", "name": "blink_perf.bindings/structured-clone-json-serialize.html" }, { - "duration": "0.0", + "duration": "1.0", "name": "blink_perf.bindings/structured-clone-long-string-deserialize.html" }, { - "duration": "0.0", + "duration": "1.0", "name": "blink_perf.bindings/structured-clone-long-string-serialize.html" }, { - "duration": "10.0", + "duration": "12.0", "name": "blink_perf.bindings/typed-array-construct-from-array.html" }, { - "duration": "10.0", + "duration": "12.0", "name": "blink_perf.bindings/typed-array-construct-from-same-type.html" }, { - "duration": "10.0", + "duration": "12.0", "name": "blink_perf.bindings/typed-array-construct-from-typed.html" }, { - "duration": "10.0", + "duration": "12.0", "name": "blink_perf.bindings/typed-array-set-from-typed.html" }, { - "duration": "10.0", + "duration": "13.0", "name": "blink_perf.bindings/undefined-first-child.html" }, { - "duration": "11.0", + "duration": "13.0", "name": "blink_perf.bindings/undefined-get-element-by-id.html" }, { - "duration": "10.0", + "duration": "13.0", "name": "blink_perf.bindings/undefined-id-getter.html" }, { - "duration": "4.0", + "duration": "7.0", "name": "blink_perf.bindings/worker-structured-clone-different-payloads.html" }, { - "duration": "24.0", + "duration": "26.0", "name": "blink_perf.bindings/worker-structured-clone-json-from-worker.html" }, { - "duration": "24.0", + "duration": "26.0", "name": "blink_perf.bindings/worker-structured-clone-json-roundtrip.html" }, { - "duration": "24.0", + "duration": "26.0", "name": "blink_perf.bindings/worker-structured-clone-json-to-worker.html" }, { - "duration": "7.0", + "duration": "10.0", "name": "blink_perf.bindings/worker-structured-clone-workerDOM-DBMon-from-worker.html" }, { - "duration": "4.0", + "duration": "7.0", "name": "blink_perf.bindings/worker-structured-clone-workerDOM-Map-from-worker.html" }, { - "duration": "14.0", + "duration": "17.0", "name": "blink_perf.bindings/worker-text-encoded-transferable-from-worker.html" }, { - "duration": "14.0", + "duration": "17.0", "name": "blink_perf.bindings/worker-text-encoded-transferable-roundtrip.html" }, { - "duration": "14.0", + "duration": "17.0", "name": "blink_perf.bindings/worker-text-encoded-transferable-to-worker.html" }, { - "duration": "11.0", + "duration": "14.0", "name": "blink_perf.bindings/worker-transferable-from-worker.html" }, { - "duration": "11.0", + "duration": "13.0", "name": "blink_perf.bindings/worker-transferable-roundtrip.html" }, { - "duration": "11.0", + "duration": "13.0", "name": "blink_perf.bindings/worker-transferable-to-worker.html" }, { - "duration": "20.0", + "duration": "22.0", "name": "blink_perf.css/AttributeDescendantSelector.html" }, { @@ -244,7 +244,7 @@ "name": "blink_perf.css/CSSLogicalDirection.html" }, { - "duration": "11.0", + "duration": "12.0", "name": "blink_perf.css/CSSPropertySetterGetter.html" }, { @@ -252,7 +252,7 @@ "name": "blink_perf.css/CSSPropertySetterGetterMethods.html" }, { - "duration": "11.0", + "duration": "12.0", "name": "blink_perf.css/CSSPropertyUpdateValue.html" }, { @@ -316,43 +316,43 @@ "name": "blink_perf.css/ChangeStyleSingleClassSelector.html" }, { - "duration": "9.0", + "duration": "6.0", "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html" }, { - "duration": "5.0", + "duration": "6.0", "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html" }, { - "duration": "5.0", + "duration": "6.0", "name": "blink_perf.css/ChangeStyleUniversalSelector.html" }, { - "duration": "5.0", + "duration": "6.0", "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html" }, { - "duration": "5.0", + "duration": "6.0", "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html" }, { - "duration": "17.0", + "duration": "18.0", "name": "blink_perf.css/ClassDescendantSelector.html" }, { - "duration": "11.0", + "duration": "13.0", "name": "blink_perf.css/ClassInvalidation.html" }, { - "duration": "5.0", + "duration": "6.0", "name": "blink_perf.css/CustomPropertiesCascade.html" }, { - "duration": "7.0", + "duration": "8.0", "name": "blink_perf.css/CustomPropertiesDependency.html" }, { - "duration": "6.0", + "duration": "7.0", "name": "blink_perf.css/CustomPropertiesNonRootInheritance.html" }, { @@ -360,11 +360,11 @@ "name": "blink_perf.css/CustomPropertiesPendingSubstitution.html" }, { - "duration": "6.0", + "duration": "7.0", "name": "blink_perf.css/CustomPropertiesRootInheritance.html" }, { - "duration": "5.0", + "duration": "6.0", "name": "blink_perf.css/CustomPropertiesVarAlias.html" }, { @@ -376,19 +376,19 @@ "name": "blink_perf.css/FocusUpdate.html" }, { - "duration": "6.0", + "duration": "7.0", "name": "blink_perf.css/LoadBootstrapBlog.html" }, { - "duration": "6.0", + "duration": "7.0", "name": "blink_perf.css/LoadMaterializeStarterPage.html" }, { - "duration": "6.0", + "duration": "7.0", "name": "blink_perf.css/LoadSemanticPageExample.html" }, { - "duration": "11.0", + "duration": "15.0", "name": "blink_perf.css/PseudoClassSelectors.html" }, { @@ -396,7 +396,7 @@ "name": "blink_perf.css/SelectorCountScaling.html" }, { - "duration": "16.0", + "duration": "17.0", "name": "blink_perf.dom/custom-element-default-style-with-shadow.html" }, { @@ -404,11 +404,11 @@ "name": "blink_perf.dom/custom-element-default-style.html" }, { - "duration": "26.0", + "duration": "18.0", "name": "blink_perf.dom/long-sibling-list.html" }, { - "duration": "8.0", + "duration": "10.0", "name": "blink_perf.dom/modify-element-classname.html" }, { @@ -416,11 +416,11 @@ "name": "blink_perf.dom/modify-element-id.html" }, { - "duration": "6.0", + "duration": "8.0", "name": "blink_perf.dom/modify-element-title.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.dom/select-multiple-add.html" }, { @@ -432,51 +432,51 @@ "name": "blink_perf.dom/select-single-remove.html" }, { - "duration": "15.0", + "duration": "18.0", "name": "blink_perf.events/EventsDispatching.html" }, { - "duration": "0.0", + "duration": "1.0", "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html" }, { - "duration": "0.0", + "duration": "1.0", "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html" }, { - "duration": "29.0", + "duration": "27.0", "name": "blink_perf.events/hit-test-lots-of-layers.html" }, { - "duration": "11.0", + "duration": "12.0", "name": "blink_perf.events/is-input-pending-default-events.html" }, { - "duration": "11.0", + "duration": "12.0", "name": "blink_perf.events/is-input-pending-include-continuous-events.html" }, { - "duration": "17.0", + "duration": "19.0", "name": "blink_perf.image_decoder/decode-gif.html" }, { - "duration": "10.0", + "duration": "12.0", "name": "blink_perf.image_decoder/decode-jpeg-h1v1.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.image_decoder/decode-jpeg-h1v2.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.image_decoder/decode-jpeg-h2v1.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.image_decoder/decode-jpeg-h2v2.html" }, { - "duration": "17.0", + "duration": "18.0", "name": "blink_perf.image_decoder/decode-lossless-webp.html" }, { @@ -484,15 +484,15 @@ "name": "blink_perf.image_decoder/decode-lossy-webp.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.image_decoder/decode-png-palette-opaque.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.image_decoder/decode-png-palette.html" }, { - "duration": "15.0", + "duration": "16.0", "name": "blink_perf.image_decoder/decode-png.html" }, { @@ -508,27 +508,27 @@ "name": "blink_perf.layout/SimpleTextPathLineLayout.html" }, { - "duration": "30.0", + "duration": "31.0", "name": "blink_perf.layout/abspos.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.layout/add-remove-inline-floats.html" }, { - "duration": "6.0", + "duration": "7.0", "name": "blink_perf.layout/animate-abspos-deep.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.layout/attach-inlines-2.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.layout/attach-inlines.html" }, { - "duration": "11.0", + "duration": "12.0", "name": "blink_perf.layout/auto-grid-lots-of-data.html" }, { @@ -536,7 +536,7 @@ "name": "blink_perf.layout/auto-grid-lots-of-spanning-data.html" }, { - "duration": "64.0", + "duration": "69.0", "name": "blink_perf.layout/change-text-css-contain.html" }, { @@ -560,19 +560,19 @@ "name": "blink_perf.layout/chapter-reflow.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.layout/character_fallback.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.layout/contain-content-style-change.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.layout/culled-inline-bounding-rects.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.layout/culled-inline-hittest.html" }, { @@ -580,7 +580,7 @@ "name": "blink_perf.layout/deeply-nested-grid.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/editing_append.html" }, { @@ -588,19 +588,19 @@ "name": "blink_perf.layout/editing_append_single_line.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/editing_delete.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/editing_insert.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/editing_prepend.html" }, { - "duration": "25.0", + "duration": "21.0", "name": "blink_perf.layout/fit-content-change-available-size-blocks.html" }, { @@ -632,7 +632,7 @@ "name": "blink_perf.layout/flexbox-hittest.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.layout/flexbox-input.html" }, { @@ -652,15 +652,15 @@ "name": "blink_perf.layout/flexbox-row-stretch-height-indefinite.html" }, { - "duration": "11.0", + "duration": "12.0", "name": "blink_perf.layout/flexbox-row-wrap.html" }, { - "duration": "11.0", + "duration": "12.0", "name": "blink_perf.layout/flexbox-with-stretch-layout.html" }, { - "duration": "16.0", + "duration": "17.0", "name": "blink_perf.layout/flexbox_with_list_item.html" }, { @@ -672,99 +672,99 @@ "name": "blink_perf.layout/floats_100_100_nested.html" }, { - "duration": "15.0", + "duration": "16.0", "name": "blink_perf.layout/floats_10_1000.html" }, { - "duration": "9.0", + "duration": "11.0", "name": "blink_perf.layout/floats_20_100.html" }, { - "duration": "9.0", + "duration": "11.0", "name": "blink_perf.layout/floats_20_100_nested.html" }, { - "duration": "7.0", + "duration": "10.0", "name": "blink_perf.layout/floats_2_100.html" }, { - "duration": "6.0", + "duration": "8.0", "name": "blink_perf.layout/floats_2_100_nested.html" }, { - "duration": "10.0", + "duration": "12.0", "name": "blink_perf.layout/floats_50_100.html" }, { - "duration": "10.0", + "duration": "12.0", "name": "blink_perf.layout/floats_50_100_nested.html" }, { - "duration": "11.0", + "duration": "13.0", "name": "blink_perf.layout/floats_show_hide.html" }, { - "duration": "11.0", + "duration": "13.0", "name": "blink_perf.layout/hindi-line-layout.html" }, { - "duration": "8.0", + "duration": "10.0", "name": "blink_perf.layout/hittest-block-children.html" }, { - "duration": "9.0", + "duration": "11.0", "name": "blink_perf.layout/japanese-kokoro-insert.html" }, { - "duration": "16.0", + "duration": "19.0", "name": "blink_perf.layout/large-grid.html" }, { - "duration": "11.0", + "duration": "13.0", "name": "blink_perf.layout/large-spanning-grid-item.html" }, { - "duration": "21.0", + "duration": "24.0", "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html" }, { - "duration": "21.0", + "duration": "23.0", "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html" }, { - "duration": "21.0", + "duration": "23.0", "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html" }, { - "duration": "25.0", + "duration": "27.0", "name": "blink_perf.layout/latin-ebook-resize.html" }, { - "duration": "10.0", + "duration": "12.0", "name": "blink_perf.layout/latin-ebook.html" }, { - "duration": "7.0", + "duration": "9.0", "name": "blink_perf.layout/layers_overlap_2d.html" }, { - "duration": "7.0", + "duration": "11.0", "name": "blink_perf.layout/layers_overlap_3d.html" }, { - "duration": "1.0", + "duration": "0.0", "name": "blink_perf.layout/line-layout-fit-content-break-word.html" }, { - "duration": "1.0", + "duration": "0.0", "name": "blink_perf.layout/line-layout-fit-content.html" }, { - "duration": "19.0", + "duration": "18.0", "name": "blink_perf.layout/line-layout-line-height.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.layout/line-layout-repeat-append-select.html" }, { @@ -788,7 +788,7 @@ "name": "blink_perf.layout/long-line-nowrap.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/many-block-children-auto-inline-size.html" }, { @@ -796,7 +796,7 @@ "name": "blink_perf.layout/many-block-children-fixed-inline-size.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/multicol/balance-forced-breaks.html" }, { @@ -804,135 +804,135 @@ "name": "blink_perf.layout/multicol/deeply-nested-tables.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/multicol/fixed-height-with-spanner-and-nested-tables.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/multicol/lots-of-small-nested-unbreakable-blocks-autofill.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/multicol/lots-of-small-unbreakable-blocks-autofill.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/multicol/lots-of-text-autofill.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/multicol/lots-of-text-balanced-orphans-widows.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/multicol/lots-of-text-balanced.html" }, { - "duration": "60.0", + "duration": "58.0", "name": "blink_perf.layout/multicol/nested-forced-breaks.html" }, { - "duration": "12.0", + "duration": "10.0", "name": "blink_perf.layout/multicol/tall-content-short-columns-realistic.html" }, { - "duration": "12.0", + "duration": "10.0", "name": "blink_perf.layout/multicol/tall-content-short-columns.html" }, { - "duration": "12.0", + "duration": "10.0", "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.layout/nested-grid-lots-of-tracks.html" }, { - "duration": "13.0", + "duration": "11.0", "name": "blink_perf.layout/nested-grid.html" }, { - "duration": "12.0", + "duration": "10.0", "name": "blink_perf.layout/nested-percent-height-tables.html" }, { - "duration": "12.0", + "duration": "10.0", "name": "blink_perf.layout/ruby.html" }, { - "duration": "107.0", + "duration": "106.0", "name": "blink_perf.layout/subtree-detaching.html" }, { - "duration": "12.0", + "duration": "9.0", "name": "blink_perf.layout/vertical-japanese-kokoro-insert.html" }, { - "duration": "7.0", + "duration": "5.0", "name": "blink_perf.layout/word-break-break-all.html" }, { - "duration": "7.0", + "duration": "5.0", "name": "blink_perf.layout/word-break-break-word.html" }, { - "duration": "7.0", + "duration": "5.0", "name": "blink_perf.layout/word-wrap-break-word.html" }, { - "duration": "18.0", + "duration": "14.0", "name": "blink_perf.owp_storage/blob-perf-files.html" }, { - "duration": "14.0", + "duration": "11.0", "name": "blink_perf.owp_storage/blob-perf-ipc.html" }, { - "duration": "10.0", + "duration": "8.0", "name": "blink_perf.owp_storage/blob-perf-shm.html" }, { - "duration": "13.0", + "duration": "11.0", "name": "blink_perf.owp_storage/blob-perf-tiny.html" }, { - "duration": "14.0", + "duration": "11.0", "name": "blink_perf.owp_storage/idb-load-docs.html" }, { - "duration": "23.0", + "duration": "27.0", "name": "blink_perf.owp_storage/idb-put-all.html" }, { - "duration": "30.0", + "duration": "33.0", "name": "blink_perf.owp_storage/idb-put.html" }, { - "duration": "24.0", + "duration": "18.0", "name": "blink_perf.paint/appending-text.html" }, { - "duration": "6.0", + "duration": "3.0", "name": "blink_perf.paint/color-changes.html" }, { - "duration": "24.0", + "duration": "21.0", "name": "blink_perf.paint/complex-content-slow-scroll.html" }, { - "duration": "24.0", + "duration": "22.0", "name": "blink_perf.paint/complex-iframe-filtered.html" }, { - "duration": "72.0", + "duration": "71.0", "name": "blink_perf.paint/contain-update-layer-tree.html" }, { - "duration": "28.0", + "duration": "27.0", "name": "blink_perf.paint/containment-resize.html" }, { - "duration": "21.0", + "duration": "20.0", "name": "blink_perf.paint/fixed-and-many-layers-scroll.html" }, { @@ -940,23 +940,23 @@ "name": "blink_perf.paint/large-table-background-change.html" }, { - "duration": "17.0", + "duration": "20.0", "name": "blink_perf.paint/large-table-collapsed-border-change.html" }, { - "duration": "11.0", + "duration": "14.0", "name": "blink_perf.paint/modify-selection.html" }, { - "duration": "14.0", + "duration": "17.0", "name": "blink_perf.paint/move-text-with-mask.html" }, { - "duration": "16.0", + "duration": "19.0", "name": "blink_perf.paint/paint-offset-changes.html" }, { - "duration": "16.0", + "duration": "19.0", "name": "blink_perf.paint/transform-changes.html" }, { @@ -964,11 +964,11 @@ "name": "blink_perf.parser/css-parser-yui.html" }, { - "duration": "35.0", + "duration": "17.0", "name": "blink_perf.parser/declarative-shadow-dom-cloning.html" }, { - "duration": "15.0", + "duration": "12.0", "name": "blink_perf.parser/declarative-shadow-dom.html" }, { @@ -976,7 +976,7 @@ "name": "blink_perf.parser/html-parser-threaded.html" }, { - "duration": "25.0", + "duration": "27.0", "name": "blink_perf.parser/html-parser.html" }, { @@ -984,19 +984,19 @@ "name": "blink_perf.parser/html5-full-render.html" }, { - "duration": "21.0", + "duration": "24.0", "name": "blink_perf.parser/iframe-append-remove.html" }, { - "duration": "10.0", + "duration": "12.0", "name": "blink_perf.parser/innerHTML-setter-siblings.html" }, { - "duration": "10.0", + "duration": "15.0", "name": "blink_perf.parser/innerHTML-setter.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.parser/query-selector-all-attribute-complex.html" }, { @@ -1008,7 +1008,7 @@ "name": "blink_perf.parser/query-selector-all-class-deep.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.parser/query-selector-all-class-first.html" }, { @@ -1024,7 +1024,7 @@ "name": "blink_perf.parser/query-selector-all-deep.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.parser/query-selector-all-first.html" }, { @@ -1044,7 +1044,7 @@ "name": "blink_perf.parser/query-selector-all-last.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.parser/query-selector-deep.html" }, { @@ -1052,7 +1052,7 @@ "name": "blink_perf.parser/query-selector-first.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.parser/query-selector-id-deep.html" }, { @@ -1060,7 +1060,7 @@ "name": "blink_perf.parser/query-selector-id-last.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.parser/query-selector-last.html" }, { @@ -1072,15 +1072,15 @@ "name": "blink_perf.parser/textarea-parsing.html" }, { - "duration": "10.0", + "duration": "13.0", "name": "blink_perf.parser/tiny-innerHTML.html" }, { - "duration": "11.0", + "duration": "12.0", "name": "blink_perf.parser/url-parser.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.parser/xml-parser.html" }, { @@ -1104,11 +1104,11 @@ "name": "blink_perf.shadow_dom/imperative-api-assigned-slot.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary-large.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary.html" }, { @@ -1116,7 +1116,7 @@ "name": "blink_perf.shadow_dom/imperative-api-detail-summary-large.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/imperative-api-detail-summary.html" }, { @@ -1132,15 +1132,15 @@ "name": "blink_perf.shadow_dom/shadow-style-share-attr-selectors.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.shadow_dom/shadow-style-share-media-query.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.shadow_dom/shadow-style-share-with-distribution.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/shadow-style-share.html" }, { @@ -1148,47 +1148,47 @@ "name": "blink_perf.shadow_dom/style-sheet-insert.html" }, { - "duration": "14.0", + "duration": "13.0", "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-distribution.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-host-child-append.html" }, { - "duration": "14.0", + "duration": "13.0", "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html" }, { - "duration": "20.0", + "duration": "19.0", "name": "blink_perf.shadow_dom/v1-large-deep-layout.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-large-shallow-append-layout.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-large-shallow-distribution.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-large-shallow-layout.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-large-shallow-prepend-layout.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-re-layout.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-assigned-nodes.html" }, { @@ -1200,7 +1200,7 @@ "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-re-layout.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-assigned-nodes.html" }, { @@ -1208,7 +1208,7 @@ "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-flatten.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-slot-append.html" }, { @@ -1216,19 +1216,19 @@ "name": "blink_perf.shadow_dom/v1-small-deep-distribution.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.shadow_dom/v1-small-deep-layout.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-small-shallow-distribution.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-small-shallow-layout.html" }, { - "duration": "8.0", + "duration": "9.0", "name": "blink_perf.svg/AzLizardBenjiPark.html" }, { @@ -1288,7 +1288,7 @@ "name": "blink_perf.svg/HereGear.html" }, { - "duration": "9.0", + "duration": "10.0", "name": "blink_perf.svg/MtSaintHelens.html" }, { @@ -1304,7 +1304,7 @@ "name": "blink_perf.svg/SvgCubics.html" }, { - "duration": "5.0", + "duration": "6.0", "name": "blink_perf.svg/SvgHitTesting.html" }, { @@ -1324,23 +1324,23 @@ "name": "blink_perf.svg/Worldcup.html" }, { - "duration": "15.0", + "duration": "18.0", "name": "blink_perf.webaudio/audio-buffer-source-node.html" }, { - "duration": "45.0", + "duration": "104.0", "name": "blink_perf.webaudio/audio-worklet-node.html" }, { - "duration": "43.0", + "duration": "107.0", "name": "blink_perf.webaudio/biquad-filter-node.html" }, { - "duration": "40.0", + "duration": "114.0", "name": "blink_perf.webaudio/gain-node.html" }, { - "duration": "47.0", + "duration": "52.0", "name": "blink_perf.webaudio/panner-node.html" }, { @@ -1352,7 +1352,7 @@ "name": "dromaeo/http://dromaeo.com?dom-modify" }, { - "duration": "50.0", + "duration": "52.0", "name": "dromaeo/http://dromaeo.com?dom-query" }, { @@ -1364,7 +1364,7 @@ "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html" }, { - "duration": "6.0", + "duration": "7.0", "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html" }, { @@ -1372,15 +1372,15 @@ "name": "jetstream/JetStream" }, { - "duration": "471.0", + "duration": "472.0", "name": "jetstream2/JetStream2" }, { - "duration": "55.0", + "duration": "57.0", "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "loading.mobile/58Pic" }, { @@ -1392,7 +1392,7 @@ "name": "loading.mobile/Amazon" }, { - "duration": "28.0", + "duration": "29.0", "name": "loading.mobile/Amazon_3g" }, { @@ -1416,15 +1416,15 @@ "name": "loading.mobile/Bradesco" }, { - "duration": "3.0", + "duration": "2.0", "name": "loading.mobile/Bradesco_3g" }, { - "duration": "14.0", + "duration": "16.0", "name": "loading.mobile/Dailymotion" }, { - "duration": "4.0", + "duration": "5.0", "name": "loading.mobile/Dailymotion_3g" }, { @@ -1432,31 +1432,31 @@ "name": "loading.mobile/Dawn" }, { - "duration": "3.0", + "duration": "2.0", "name": "loading.mobile/Dawn_3g" }, { - "duration": "12.0", + "duration": "14.0", "name": "loading.mobile/DevOpera_cold" }, { - "duration": "17.0", + "duration": "19.0", "name": "loading.mobile/DevOpera_cold_3g" }, { - "duration": "17.0", + "duration": "19.0", "name": "loading.mobile/DevOpera_hot" }, { - "duration": "18.0", + "duration": "20.0", "name": "loading.mobile/DevOpera_hot_3g" }, { - "duration": "15.0", + "duration": "17.0", "name": "loading.mobile/DevOpera_warm" }, { - "duration": "15.0", + "duration": "17.0", "name": "loading.mobile/DevOpera_warm_3g" }, { @@ -1468,15 +1468,15 @@ "name": "loading.mobile/Dramaq_3g" }, { - "duration": "12.0", + "duration": "14.0", "name": "loading.mobile/EnquiryIndianRail" }, { - "duration": "14.0", + "duration": "16.0", "name": "loading.mobile/EnquiryIndianRail_3g" }, { - "duration": "14.0", + "duration": "13.0", "name": "loading.mobile/Facebook" }, { @@ -1484,15 +1484,15 @@ "name": "loading.mobile/Facebook_3g" }, { - "duration": "13.0", + "duration": "15.0", "name": "loading.mobile/FlipBoard_cold" }, { - "duration": "37.0", + "duration": "39.0", "name": "loading.mobile/FlipBoard_cold_3g" }, { - "duration": "18.0", + "duration": "21.0", "name": "loading.mobile/FlipBoard_hot" }, { @@ -1500,39 +1500,39 @@ "name": "loading.mobile/FlipBoard_hot_3g" }, { - "duration": "15.0", + "duration": "18.0", "name": "loading.mobile/FlipBoard_warm" }, { - "duration": "17.0", + "duration": "19.0", "name": "loading.mobile/FlipBoard_warm_3g" }, { - "duration": "14.0", + "duration": "16.0", "name": "loading.mobile/FlipKart_cold" }, { - "duration": "4.0", + "duration": "5.0", "name": "loading.mobile/FlipKart_cold_3g" }, { - "duration": "17.0", + "duration": "19.0", "name": "loading.mobile/FlipKart_hot" }, { - "duration": "19.0", + "duration": "21.0", "name": "loading.mobile/FlipKart_hot_3g" }, { - "duration": "15.0", + "duration": "17.0", "name": "loading.mobile/FlipKart_warm" }, { - "duration": "4.0", + "duration": "5.0", "name": "loading.mobile/FlipKart_warm_3g" }, { - "duration": "12.0", + "duration": "11.0", "name": "loading.mobile/FranceTVInfo" }, { @@ -1552,7 +1552,7 @@ "name": "loading.mobile/GSShop" }, { - "duration": "3.0", + "duration": "2.0", "name": "loading.mobile/GSShop_3g" }, { @@ -1564,7 +1564,7 @@ "name": "loading.mobile/GoogleBrazil_3g" }, { - "duration": "10.0", + "duration": "11.0", "name": "loading.mobile/GoogleIndia" }, { @@ -1580,7 +1580,7 @@ "name": "loading.mobile/GoogleIndonesia_3g" }, { - "duration": "13.0", + "duration": "14.0", "name": "loading.mobile/GoogleRedirectToGoogleJapan" }, { @@ -1588,7 +1588,7 @@ "name": "loading.mobile/GoogleRedirectToGoogleJapan_3g" }, { - "duration": "13.0", + "duration": "12.0", "name": "loading.mobile/Hongkiat" }, { @@ -1596,11 +1596,11 @@ "name": "loading.mobile/Hongkiat_3g" }, { - "duration": "15.0", + "duration": "17.0", "name": "loading.mobile/KapanLagi" }, { - "duration": "4.0", + "duration": "5.0", "name": "loading.mobile/KapanLagi_3g" }, { @@ -1608,15 +1608,15 @@ "name": "loading.mobile/Kaskus" }, { - "duration": "4.0", + "duration": "5.0", "name": "loading.mobile/Kaskus_3g" }, { - "duration": "14.0", + "duration": "12.0", "name": "loading.mobile/LocalMoxie" }, { - "duration": "3.0", + "duration": "2.0", "name": "loading.mobile/LocalMoxie_3g" }, { @@ -1628,59 +1628,59 @@ "name": "loading.mobile/Locanto_3g" }, { - "duration": "12.0", + "duration": "14.0", "name": "loading.mobile/OLX" }, { - "duration": "22.0", + "duration": "25.0", "name": "loading.mobile/OLX_3g" }, { - "duration": "10.0", + "duration": "11.0", "name": "loading.mobile/QQNews" }, { - "duration": "20.0", + "duration": "28.0", "name": "loading.mobile/QQNews_3g" }, { - "duration": "11.0", + "duration": "10.0", "name": "loading.mobile/SlideShare" }, { - "duration": "20.0", + "duration": "19.0", "name": "loading.mobile/SlideShare_3g" }, { - "duration": "12.0", + "duration": "14.0", "name": "loading.mobile/Suumo_cold" }, { - "duration": "13.0", + "duration": "15.0", "name": "loading.mobile/Suumo_cold_3g" }, { - "duration": "17.0", + "duration": "19.0", "name": "loading.mobile/Suumo_hot" }, { - "duration": "17.0", + "duration": "19.0", "name": "loading.mobile/Suumo_hot_3g" }, { - "duration": "15.0", + "duration": "17.0", "name": "loading.mobile/Suumo_warm" }, { - "duration": "15.0", + "duration": "17.0", "name": "loading.mobile/Suumo_warm_3g" }, { - "duration": "11.0", + "duration": "10.0", "name": "loading.mobile/Thairath" }, { - "duration": "3.0", + "duration": "2.0", "name": "loading.mobile/Thairath_3g" }, { @@ -1688,7 +1688,7 @@ "name": "loading.mobile/TheStar" }, { - "duration": "3.0", + "duration": "2.0", "name": "loading.mobile/TheStar_3g" }, { @@ -1700,35 +1700,35 @@ "name": "loading.mobile/TribunNews_3g" }, { - "duration": "11.0", + "duration": "13.0", "name": "loading.mobile/Twitter" }, { - "duration": "14.0", + "duration": "16.0", "name": "loading.mobile/Twitter_3g" }, { - "duration": "12.0", + "duration": "15.0", "name": "loading.mobile/VoiceMemos_cold" }, { - "duration": "15.0", + "duration": "17.0", "name": "loading.mobile/VoiceMemos_cold_3g" }, { - "duration": "4.0", + "duration": "5.0", "name": "loading.mobile/VoiceMemos_hot" }, { - "duration": "4.0", + "duration": "5.0", "name": "loading.mobile/VoiceMemos_hot_3g" }, { - "duration": "4.0", + "duration": "5.0", "name": "loading.mobile/VoiceMemos_warm" }, { - "duration": "4.0", + "duration": "5.0", "name": "loading.mobile/VoiceMemos_warm_3g" }, { @@ -1760,19 +1760,27 @@ "name": "media.mobile/mse.html?media=aac_audio.mp4" }, { - "duration": "13.0", + "duration": "14.0", "name": "media.mobile/mse.html?media=aac_audio.mp4,h264_video.mp4" }, { - "duration": "13.0", + "duration": "14.0", "name": "media.mobile/mse.html?media=h264_video.mp4" }, { - "duration": "13.0", + "duration": "14.0", "name": "media.mobile/mse.html?media=tulip2.vp9.webm" }, { - "duration": "25.0", + "duration": "133.0", + "name": "media.mobile/video.html?src=boat_1080p60fps_vp9.webm" + }, + { + "duration": "133.0", + "name": "media.mobile/video.html?src=foodmarket_720p30fps.mp4" + }, + { + "duration": "26.0", "name": "media.mobile/video.html?src=tulip2.m4a&type=audio" }, { @@ -1780,27 +1788,27 @@ "name": "media.mobile/video.html?src=tulip2.mp3&type=audio" }, { - "duration": "9.0", + "duration": "10.0", "name": "media.mobile/video.html?src=tulip2.mp3&type=audio&seek" }, { - "duration": "26.0", + "duration": "27.0", "name": "media.mobile/video.html?src=tulip2.mp4" }, { - "duration": "26.0", + "duration": "27.0", "name": "media.mobile/video.html?src=tulip2.mp4&busyjs" }, { - "duration": "29.0", + "duration": "30.0", "name": "media.mobile/video.html?src=tulip2.ogg&type=audio" }, { - "duration": "11.0", + "duration": "10.0", "name": "media.mobile/video.html?src=tulip2.ogg&type=audio&seek" }, { - "duration": "26.0", + "duration": "27.0", "name": "media.mobile/video.html?src=tulip2.vp9.webm" }, { @@ -1820,7 +1828,7 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html" }, { - "duration": "15.0", + "duration": "10.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/blogger.html" }, { @@ -1844,7 +1852,7 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/facebook.html" }, { - "duration": "28.0", + "duration": "33.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/gmail.html" }, { @@ -1920,35 +1928,35 @@ "name": "rendering.mobile/accu_weather_2018" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/accu_weather_mobile_pinch_2018" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.mobile/amazon_2018" }, { - "duration": "22.0", + "duration": "26.0", "name": "rendering.mobile/amazon_mobile_2018" }, { - "duration": "20.0", + "duration": "22.0", "name": "rendering.mobile/analog_clock_svg" }, { - "duration": "20.0", + "duration": "23.0", "name": "rendering.mobile/androidpolice_mobile_2018" }, { - "duration": "30.0", + "duration": "25.0", "name": "rendering.mobile/animometer_webgl" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/animometer_webgl_attrib_arrays" }, { - "duration": "23.0", + "duration": "25.0", "name": "rendering.mobile/animometer_webgl_multi_draw" }, { @@ -1956,231 +1964,231 @@ "name": "rendering.mobile/aquarium" }, { - "duration": "4.0", + "duration": "5.0", "name": "rendering.mobile/aquarium_20k" }, { - "duration": "20.0", + "duration": "24.0", "name": "rendering.mobile/background_color_animation" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.mobile/background_color_animation_with_gradient" }, { - "duration": "14.0", + "duration": "16.0", "name": "rendering.mobile/baidu_mobile_2018" }, { - "duration": "21.0", + "duration": "23.0", "name": "rendering.mobile/balls_css_key_frame_animations" }, { - "duration": "4.0", + "duration": "5.0", "name": "rendering.mobile/balls_css_key_frame_animations_composited_transform" }, { - "duration": "20.0", + "duration": "22.0", "name": "rendering.mobile/balls_css_transition_2_properties" }, { - "duration": "20.0", + "duration": "22.0", "name": "rendering.mobile/balls_css_transition_40_properties" }, { - "duration": "20.0", + "duration": "22.0", "name": "rendering.mobile/balls_css_transition_all_properties" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.mobile/balls_javascript_canvas" }, { - "duration": "20.0", + "duration": "22.0", "name": "rendering.mobile/balls_javascript_css" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/balls_svg_animations" }, { - "duration": "21.0", + "duration": "26.0", "name": "rendering.mobile/basic_stream" }, { - "duration": "16.0", + "duration": "18.0", "name": "rendering.mobile/bing_mobile_2018" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/blob" }, { - "duration": "14.0", + "duration": "16.0", "name": "rendering.mobile/blogspot_2018" }, { - "duration": "13.0", + "duration": "15.0", "name": "rendering.mobile/blogspot_mobile_2018" }, { - "duration": "16.0", + "duration": "15.0", "name": "rendering.mobile/blur_rotating_background" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.mobile/boingboing_mobile_2018" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.mobile/booking.com_2018" }, { - "duration": "11.0", + "duration": "13.0", "name": "rendering.mobile/booking.com_mobile_2018" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.mobile/bouncing_balls_15" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/bouncing_balls_shadow" }, { - "duration": "20.0", + "duration": "22.0", "name": "rendering.mobile/bouncing_clipped_rectangles" }, { - "duration": "20.0", + "duration": "22.0", "name": "rendering.mobile/bouncing_gradient_circles" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.mobile/bouncing_png_images" }, { - "duration": "21.0", + "duration": "23.0", "name": "rendering.mobile/bouncing_svg_images" }, { - "duration": "25.0", + "duration": "32.0", "name": "rendering.mobile/camera_to_webgl" }, { - "duration": "21.0", + "duration": "24.0", "name": "rendering.mobile/canvas2d_to_texture.html" }, { - "duration": "34.0", + "duration": "39.0", "name": "rendering.mobile/canvas_05000_pixels_per_second" }, { - "duration": "36.0", + "duration": "35.0", "name": "rendering.mobile/canvas_10000_pixels_per_second" }, { - "duration": "34.0", + "duration": "42.0", "name": "rendering.mobile/canvas_20000_pixels_per_second" }, { - "duration": "30.0", + "duration": "36.0", "name": "rendering.mobile/canvas_40000_pixels_per_second" }, { - "duration": "28.0", + "duration": "34.0", "name": "rendering.mobile/canvas_60000_pixels_per_second" }, { - "duration": "29.0", + "duration": "34.0", "name": "rendering.mobile/canvas_75000_pixels_per_second" }, { - "duration": "29.0", + "duration": "35.0", "name": "rendering.mobile/canvas_90000_pixels_per_second" }, { - "duration": "21.0", + "duration": "24.0", "name": "rendering.mobile/canvas_animation_no_clear" }, { - "duration": "21.0", + "duration": "24.0", "name": "rendering.mobile/canvas_arcs" }, { - "duration": "21.0", + "duration": "24.0", "name": "rendering.mobile/canvas_font_cycler" }, { - "duration": "21.0", + "duration": "24.0", "name": "rendering.mobile/canvas_lines" }, { - "duration": "21.0", + "duration": "24.0", "name": "rendering.mobile/canvas_to_blob" }, { - "duration": "20.0", + "duration": "24.0", "name": "rendering.mobile/canvas_to_canvas_draw" }, { - "duration": "19.0", + "duration": "33.0", "name": "rendering.mobile/capitolvolkswagen_mobile_2018" }, { - "duration": "13.0", + "duration": "18.0", "name": "rendering.mobile/card_expansion" }, { - "duration": "14.0", + "duration": "19.0", "name": "rendering.mobile/card_expansion_animated" }, { - "duration": "15.0", + "duration": "20.0", "name": "rendering.mobile/card_expansion_images_text" }, { - "duration": "13.0", + "duration": "18.0", "name": "rendering.mobile/card_flying" }, { - "duration": "14.0", + "duration": "18.0", "name": "rendering.mobile/cats_unscaled" }, { - "duration": "13.0", + "duration": "17.0", "name": "rendering.mobile/cats_viewport_width" }, { - "duration": "23.0", + "duration": "25.0", "name": "rendering.mobile/cc_poster_circle" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/cc_scroll_text_only" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/chip_tune" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.mobile/cnn_2018" }, { - "duration": "16.0", + "duration": "23.0", "name": "rendering.mobile/cnn_article_mobile_2018" }, { - "duration": "14.0", + "duration": "21.0", "name": "rendering.mobile/cnn_mobile_2018" }, { - "duration": "22.0", + "duration": "29.0", "name": "rendering.mobile/cnn_mobile_pinch_2018" }, { - "duration": "18.0", + "duration": "23.0", "name": "rendering.mobile/cnn_pathological_2018" }, { @@ -2188,11 +2196,11 @@ "name": "rendering.mobile/compositor_heavy_animation" }, { - "duration": "15.0", + "duration": "20.0", "name": "rendering.mobile/coordinated_animation" }, { - "duration": "6.0", + "duration": "7.0", "name": "rendering.mobile/core_scroll_header_panel" }, { @@ -2200,191 +2208,191 @@ "name": "rendering.mobile/crafty_mind" }, { - "duration": "23.0", + "duration": "25.0", "name": "rendering.mobile/css_animations_many_keyframes" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_animations_simultaneous_inline_style" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_animations_simultaneous_new_element" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_animations_simultaneous_style_element" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_animations_simultaneous_updating_class" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_animations_staggered_infinite_iterations" }, { - "duration": "23.0", + "duration": "25.0", "name": "rendering.mobile/css_animations_staggered_inline_style" }, { - "duration": "23.0", + "duration": "25.0", "name": "rendering.mobile/css_animations_staggered_new_element" }, { - "duration": "23.0", + "duration": "25.0", "name": "rendering.mobile/css_animations_staggered_style_element" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/css_animations_staggered_updating_class" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/css_animations_triggered_inline_style" }, { - "duration": "23.0", + "duration": "25.0", "name": "rendering.mobile/css_animations_triggered_new_element" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_animations_triggered_style_element" }, { - "duration": "23.0", + "duration": "25.0", "name": "rendering.mobile/css_animations_triggered_updating_class" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/css_opacity_plus_n_layers_0" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/css_opacity_plus_n_layers_75" }, { - "duration": "24.0", + "duration": "29.0", "name": "rendering.mobile/css_opacity_plus_n_layers_99" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_transitions_inline_style" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_transitions_new_element" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_transitions_staggered_inline_style" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_transitions_staggered_new_element" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_transitions_staggered_style_element" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_transitions_staggered_updating_class" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_transitions_style_element" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_transitions_triggered_inline_style" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_transitions_triggered_new_element" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_transitions_triggered_style_element" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_transitions_triggered_updating_class" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_transitions_updating_class" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_value_type_color" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_value_type_filter" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_value_type_length" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_value_type_length_complex" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_value_type_length_simple" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/css_value_type_path" }, { - "duration": "21.0", + "duration": "28.0", "name": "rendering.mobile/css_value_type_shadow" }, { - "duration": "22.0", + "duration": "26.0", "name": "rendering.mobile/css_value_type_transform_complex" }, { - "duration": "22.0", + "duration": "26.0", "name": "rendering.mobile/css_value_type_transform_simple" }, { - "duration": "26.0", + "duration": "31.0", "name": "rendering.mobile/deviantart_mobile_2018" }, { - "duration": "17.0", + "duration": "21.0", "name": "rendering.mobile/digg_mobile_2018" }, { - "duration": "22.0", + "duration": "26.0", "name": "rendering.mobile/docs_paper.html" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/docs_resume.html" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/docs_table.html" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/draw_image" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/draw_image_not_pixel_aligned" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/dynamic_canvas_to_hw_accelerated_canvas.html" }, { - "duration": "25.0", + "duration": "29.0", "name": "rendering.mobile/dynamic_cube_map" }, { @@ -2392,411 +2400,411 @@ "name": "rendering.mobile/dynamic_webgl_to_hw_accelerated_canvas.html" }, { - "duration": "25.0", + "duration": "28.0", "name": "rendering.mobile/earth" }, { - "duration": "18.0", + "duration": "21.0", "name": "rendering.mobile/ebay_2018" }, { - "duration": "15.0", + "duration": "19.0", "name": "rendering.mobile/ebay_mobile_2018" }, { - "duration": "20.0", + "duration": "24.0", "name": "rendering.mobile/ebay_mobile_pinch_2018" }, { - "duration": "28.0", + "duration": "33.0", "name": "rendering.mobile/ebay_scroll_2018" }, { - "duration": "25.0", + "duration": "28.0", "name": "rendering.mobile/effect_games" }, { - "duration": "22.0", + "duration": "26.0", "name": "rendering.mobile/espn_2018" }, { - "duration": "23.0", + "duration": "19.0", "name": "rendering.mobile/espn_mobile_2018" }, { - "duration": "18.0", + "duration": "21.0", "name": "rendering.mobile/espn_pathological_2018" }, { - "duration": "23.0", + "duration": "26.0", "name": "rendering.mobile/extra_large_texture_uploads" }, { - "duration": "18.0", + "duration": "21.0", "name": "rendering.mobile/facebook_2018" }, { - "duration": "21.0", + "duration": "24.0", "name": "rendering.mobile/facebook_mobile_2018" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/falling_particle_simulation_cpu.html" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/falling_particle_simulation_gpu.html" }, { - "duration": "3.0", + "duration": "7.0", "name": "rendering.mobile/famo_us_twitter_demo" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/fill_clear_rect.html" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/fill_shapes" }, { - "duration": "24.0", + "duration": "28.0", "name": "rendering.mobile/filter_terrain_svg" }, { - "duration": "27.0", + "duration": "31.0", "name": "rendering.mobile/flickr_scroll_2018" }, { - "duration": "15.0", + "duration": "20.0", "name": "rendering.mobile/font_wipe" }, { - "duration": "15.0", + "duration": "19.0", "name": "rendering.mobile/forecast.io_mobile_2018" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/geo_apis" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/get_image_data_cpu.html" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/get_image_data_gpu.html" }, { - "duration": "20.0", + "duration": "23.0", "name": "rendering.mobile/gmail_2018" }, { - "duration": "14.0", + "duration": "17.0", "name": "rendering.mobile/google_calendar_2018" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/google_docs_2018" }, { - "duration": "19.0", + "duration": "22.0", "name": "rendering.mobile/google_image_search_2018" }, { - "duration": "21.0", + "duration": "24.0", "name": "rendering.mobile/google_image_search_mobile_2018" }, { - "duration": "16.0", + "duration": "21.0", "name": "rendering.mobile/google_news_ios" }, { - "duration": "17.0", + "duration": "20.0", "name": "rendering.mobile/google_news_mobile_2018" }, { - "duration": "20.0", + "duration": "22.0", "name": "rendering.mobile/google_plus_2018" }, { - "duration": "21.0", + "duration": "24.0", "name": "rendering.mobile/google_plus_mobile_2018" }, { - "duration": "19.0", + "duration": "22.0", "name": "rendering.mobile/google_search_mobile_pinch_2018" }, { - "duration": "16.0", + "duration": "20.0", "name": "rendering.mobile/google_web_search_2018" }, { - "duration": "19.0", + "duration": "22.0", "name": "rendering.mobile/google_web_search_mobile_2018" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/gpu_bound_shader.html" }, { - "duration": "21.0", + "duration": "24.0", "name": "rendering.mobile/gsp.ro_mobile_2018" }, { - "duration": "21.0", + "duration": "24.0", "name": "rendering.mobile/guardian_pathological_2018" }, { - "duration": "23.0", + "duration": "26.0", "name": "rendering.mobile/guimark_vector_chart" }, { - "duration": "20.0", + "duration": "23.0", "name": "rendering.mobile/gws_boogie_expansion" }, { - "duration": "20.0", + "duration": "23.0", "name": "rendering.mobile/gws_google_expansion" }, { - "duration": "22.0", + "duration": "26.0", "name": "rendering.mobile/hakim" }, { - "duration": "14.0", + "duration": "19.0", "name": "rendering.mobile/horizontal_vertical_expansion" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/hw_accelerated_canvas_to_sw_canvas.html" }, { - "duration": "37.0", + "duration": "5.0", "name": "rendering.mobile/idle_power_animated_gif" }, { - "duration": "32.0", + "duration": "33.0", "name": "rendering.mobile/idle_power_blank" }, { - "duration": "37.0", + "duration": "7.0", "name": "rendering.mobile/idle_power_css_animation" }, { - "duration": "34.0", + "duration": "7.0", "name": "rendering.mobile/idle_power_request_animation_frame" }, { - "duration": "108.0", + "duration": "11.0", "name": "rendering.mobile/idle_power_set_timeout_long" }, { - "duration": "38.0", + "duration": "11.0", "name": "rendering.mobile/idle_power_set_timetout" }, { - "duration": "31.0", + "duration": "36.0", "name": "rendering.mobile/ie_chalkboard" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/ie_pirate_mark" }, { - "duration": "24.0", + "duration": "27.0", "name": "rendering.mobile/infinite_scroll_element_n_layers_0" }, { - "duration": "24.0", + "duration": "27.0", "name": "rendering.mobile/infinite_scroll_element_n_layers_75" }, { - "duration": "24.0", + "duration": "29.0", "name": "rendering.mobile/infinite_scroll_element_n_layers_99" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_0" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_75" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_99" }, { - "duration": "24.0", + "duration": "25.0", "name": "rendering.mobile/infinite_scroll_root_n_layers_0" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.mobile/infinite_scroll_root_n_layers_75" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.mobile/infinite_scroll_root_n_layers_99" }, { - "duration": "18.0", + "duration": "22.0", "name": "rendering.mobile/infinite_scrolling" }, { - "duration": "31.0", + "duration": "28.0", "name": "rendering.mobile/jarro_doverson" }, { - "duration": "21.0", + "duration": "18.0", "name": "rendering.mobile/jpeg_decoding_rgb_and_gpu_rasterization" }, { - "duration": "21.0", + "duration": "18.0", "name": "rendering.mobile/jpeg_decoding_yuv_and_gpu_rasterization" }, { - "duration": "26.0", + "duration": "28.0", "name": "rendering.mobile/js_full_screen_invalidation" }, { - "duration": "25.0", + "duration": "27.0", "name": "rendering.mobile/js_opacity_plus_n_layers_0" }, { - "duration": "33.0", + "duration": "27.0", "name": "rendering.mobile/js_opacity_plus_n_layers_75" }, { - "duration": "30.0", + "duration": "27.0", "name": "rendering.mobile/js_opacity_plus_n_layers_99" }, { - "duration": "30.0", + "duration": "27.0", "name": "rendering.mobile/js_paint_plus_n_layers_0" }, { - "duration": "30.0", + "duration": "27.0", "name": "rendering.mobile/js_paint_plus_n_layers_75" }, { - "duration": "29.0", + "duration": "27.0", "name": "rendering.mobile/js_paint_plus_n_layers_99" }, { - "duration": "30.0", + "duration": "27.0", "name": "rendering.mobile/js_poster_circle" }, { - "duration": "22.0", + "duration": "19.0", "name": "rendering.mobile/js_scroll_text_only" }, { - "duration": "27.0", + "duration": "24.0", "name": "rendering.mobile/kevs_3d" }, { - "duration": "26.0", + "duration": "23.0", "name": "rendering.mobile/keyframed_animations" }, { - "duration": "26.0", + "duration": "24.0", "name": "rendering.mobile/large_texture_uploads" }, { - "duration": "27.0", + "duration": "24.0", "name": "rendering.mobile/latimes_pathological_2018" }, { - "duration": "24.0", + "duration": "20.0", "name": "rendering.mobile/linkedin_2018" }, { - "duration": "42.0", + "duration": "39.0", "name": "rendering.mobile/linkedin_mobile_2018" }, { - "duration": "39.0", + "duration": "36.0", "name": "rendering.mobile/linkedin_mobile_pinch_2018" }, { - "duration": "35.0", + "duration": "32.0", "name": "rendering.mobile/linkedin_pathological_2018" }, { - "duration": "12.0", + "duration": "17.0", "name": "rendering.mobile/list_animation_simple" }, { - "duration": "19.0", + "duration": "23.0", "name": "rendering.mobile/list_recycle_transform" }, { - "duration": "67.0", + "duration": "60.0", "name": "rendering.mobile/lost_crypt" }, { - "duration": "27.0", + "duration": "23.0", "name": "rendering.mobile/main_0fps_impl_60fps" }, { - "duration": "27.0", + "duration": "23.0", "name": "rendering.mobile/main_0fps_impl_60fps_no_update" }, { - "duration": "27.0", + "duration": "23.0", "name": "rendering.mobile/main_0fps_impl_60fps_no_update_jank" }, { - "duration": "27.0", + "duration": "23.0", "name": "rendering.mobile/main_0fps_with_jank_impl_0fps" }, { - "duration": "26.0", + "duration": "23.0", "name": "rendering.mobile/main_15fps_impl_0fps" }, { - "duration": "26.0", + "duration": "23.0", "name": "rendering.mobile/main_15fps_with_jank_impl_0fps" }, { - "duration": "27.0", + "duration": "26.0", "name": "rendering.mobile/main_30fps_impl_0fps" }, { - "duration": "27.0", + "duration": "24.0", "name": "rendering.mobile/main_30fps_impl_60fps" }, { - "duration": "27.0", + "duration": "24.0", "name": "rendering.mobile/main_60fps_impl_0fps" }, { - "duration": "27.0", + "duration": "24.0", "name": "rendering.mobile/main_60fps_impl_60fps" }, { - "duration": "26.0", + "duration": "24.0", "name": "rendering.mobile/main_60fps_impl_60fps_no_update" }, { - "duration": "27.0", + "duration": "24.0", "name": "rendering.mobile/main_60fps_impl_60fps_no_update_jank" }, { - "duration": "42.0", + "duration": "39.0", "name": "rendering.mobile/main_60fps_with_extreme_jank_impl_0fps" }, { - "duration": "27.0", + "duration": "24.0", "name": "rendering.mobile/main_60fps_with_jank_and_delay_impl_60fps" }, { - "duration": "27.0", + "duration": "24.0", "name": "rendering.mobile/main_60fps_with_jank_impl_0fps" }, { - "duration": "27.0", + "duration": "24.0", "name": "rendering.mobile/main_animations_half_presented" }, { @@ -2804,47 +2812,47 @@ "name": "rendering.mobile/man_in_blue" }, { - "duration": "30.0", + "duration": "7.0", "name": "rendering.mobile/many_images" }, { - "duration": "28.0", + "duration": "26.0", "name": "rendering.mobile/many_planets_deep" }, { - "duration": "28.0", + "duration": "25.0", "name": "rendering.mobile/maps_perf_test" }, { - "duration": "14.0", + "duration": "20.0", "name": "rendering.mobile/mask_transition_animation" }, { - "duration": "21.0", + "duration": "17.0", "name": "rendering.mobile/masonry" }, { - "duration": "27.0", + "duration": "23.0", "name": "rendering.mobile/medium_texture_uploads" }, { - "duration": "26.0", + "duration": "23.0", "name": "rendering.mobile/megi_dish" }, { - "duration": "65.0", + "duration": "66.0", "name": "rendering.mobile/microgame_fps" }, { - "duration": "27.0", + "duration": "24.0", "name": "rendering.mobile/microsoft_asteroid_belt" }, { - "duration": "10.0", + "duration": "7.0", "name": "rendering.mobile/microsoft_fireflies" }, { - "duration": "27.0", + "duration": "23.0", "name": "rendering.mobile/microsoft_fish_ie_tank" }, { @@ -2852,7 +2860,7 @@ "name": "rendering.mobile/microsoft_performance" }, { - "duration": "26.0", + "duration": "24.0", "name": "rendering.mobile/microsoft_snow" }, { @@ -2868,23 +2876,23 @@ "name": "rendering.mobile/microsoft_video_city" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/microsoft_worker_fountains" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/mix_10k" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/mix_blend_mode_animation_difference" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/mix_blend_mode_animation_hue" }, { - "duration": "27.0", + "duration": "23.0", "name": "rendering.mobile/mix_blend_mode_animation_propagating_isolation" }, { @@ -2892,11 +2900,11 @@ "name": "rendering.mobile/mix_blend_mode_animation_screen" }, { - "duration": "33.0", + "duration": "29.0", "name": "rendering.mobile/mlb_mobile_2018" }, { - "duration": "13.0", + "duration": "18.0", "name": "rendering.mobile/mobile_news_sandbox" }, { @@ -2908,15 +2916,15 @@ "name": "rendering.mobile/motion_mark_canvas_stroke_shapes" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/motionmark_anim_design_15" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.mobile/motionmark_anim_focus_25" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/motionmark_anim_images_50" }, { @@ -2928,7 +2936,7 @@ "name": "rendering.mobile/motionmark_anim_multiply_175" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.mobile/motionmark_anim_suits_125" }, { @@ -2940,35 +2948,35 @@ "name": "rendering.mobile/motionmark_html_css_bouncing_blend_circles_25" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.mobile/motionmark_html_css_bouncing_circles_250" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.mobile/motionmark_html_css_bouncing_clipped_rects_100" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.mobile/motionmark_html_css_bouncing_filter_circles_15" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.mobile/motionmark_html_css_bouncing_gradient_circles_250" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.mobile/motionmark_html_css_bouncing_svg_images_50" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.mobile/motionmark_html_css_bouncing_tagged_images_225" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.mobile/motionmark_html_dom_particles_svg_masks_25" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.mobile/motionmark_html_focus_20_15" }, { @@ -2976,7 +2984,7 @@ "name": "rendering.mobile/motionmark_html_leaves_20_50" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/motionmark_svg_bouncing_circles_250" }, { @@ -3000,7 +3008,7 @@ "name": "rendering.mobile/new_tilings" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/no_op_raf" }, { @@ -3020,131 +3028,131 @@ "name": "rendering.mobile/nvidia_vertex_buffer_object" }, { - "duration": "26.0", + "duration": "31.0", "name": "rendering.mobile/nyc_gov_scroll_2018" }, { - "duration": "31.0", + "duration": "32.0", "name": "rendering.mobile/nytimes_mobile_2018" }, { - "duration": "26.0", + "duration": "30.0", "name": "rendering.mobile/nytimes_scroll_2018" }, { - "duration": "21.0", + "duration": "24.0", "name": "rendering.mobile/off_screen_main_60fps" }, { - "duration": "19.0", + "duration": "24.0", "name": "rendering.mobile/off_screen_main_60fps_jank" }, { - "duration": "19.0", + "duration": "24.0", "name": "rendering.mobile/overlay_background_color_css_transitions_page" }, { - "duration": "3.0", + "duration": "7.0", "name": "rendering.mobile/paper_button" }, { - "duration": "3.0", + "duration": "7.0", "name": "rendering.mobile/paper_calculator" }, { - "duration": "3.0", + "duration": "7.0", "name": "rendering.mobile/paper_calculator_hit_test" }, { - "duration": "3.0", + "duration": "7.0", "name": "rendering.mobile/paper_checkbox" }, { - "duration": "3.0", + "duration": "7.0", "name": "rendering.mobile/paper_fab" }, { - "duration": "3.0", + "duration": "7.0", "name": "rendering.mobile/paper_icon_button" }, { - "duration": "3.0", + "duration": "7.0", "name": "rendering.mobile/paper_shadow" }, { - "duration": "3.0", + "duration": "7.0", "name": "rendering.mobile/paper_tabs" }, { - "duration": "3.0", + "duration": "7.0", "name": "rendering.mobile/paper_toggle_button" }, { - "duration": "14.0", + "duration": "20.0", "name": "rendering.mobile/parallax_effect" }, { - "duration": "22.0", + "duration": "26.0", "name": "rendering.mobile/particles" }, { - "duration": "15.0", + "duration": "21.0", "name": "rendering.mobile/pbs_pathological_2018" }, { - "duration": "12.0", + "duration": "17.0", "name": "rendering.mobile/physical_simulation" }, { - "duration": "21.0", + "duration": "28.0", "name": "rendering.mobile/pinterest_2018" }, { - "duration": "16.0", + "duration": "14.0", "name": "rendering.mobile/pinterest_mobile_2018" }, { - "duration": "3.0", + "duration": "7.0", "name": "rendering.mobile/polymer_topeka" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/put_and_create_imagebitmap_from_imagedata" }, { - "duration": "19.0", + "duration": "24.0", "name": "rendering.mobile/put_get_image_data" }, { - "duration": "19.0", + "duration": "24.0", "name": "rendering.mobile/put_image_data.html" }, { - "duration": "16.0", + "duration": "21.0", "name": "rendering.mobile/raf" }, { - "duration": "16.0", + "duration": "21.0", "name": "rendering.mobile/raf_animation" }, { - "duration": "16.0", + "duration": "21.0", "name": "rendering.mobile/raf_canvas" }, { - "duration": "16.0", + "duration": "21.0", "name": "rendering.mobile/raf_touch_animation" }, { - "duration": "17.0", + "duration": "22.0", "name": "rendering.mobile/recode_pathological_2018" }, { - "duration": "19.0", + "duration": "24.0", "name": "rendering.mobile/reddit_mobile_2018" }, { - "duration": "19.0", + "duration": "24.0", "name": "rendering.mobile/runway_2019" }, { @@ -3152,51 +3160,51 @@ "name": "rendering.mobile/san_angeles" }, { - "duration": "14.0", + "duration": "20.0", "name": "rendering.mobile/second_batch_js_heavy" }, { - "duration": "14.0", + "duration": "19.0", "name": "rendering.mobile/second_batch_js_light" }, { - "duration": "14.0", + "duration": "19.0", "name": "rendering.mobile/second_batch_js_medium" }, { - "duration": "32.0", + "duration": "23.0", "name": "rendering.mobile/sfgate_mobile_2018" }, { - "duration": "23.0", + "duration": "28.0", "name": "rendering.mobile/sheets_render.html" }, { - "duration": "25.0", + "duration": "30.0", "name": "rendering.mobile/silk_finance" }, { - "duration": "20.0", + "duration": "26.0", "name": "rendering.mobile/simple_text_page" }, { - "duration": "16.0", + "duration": "19.0", "name": "rendering.mobile/simple_touch_drag" }, { - "duration": "62.0", + "duration": "65.0", "name": "rendering.mobile/skelebuddies_wasm_2020" }, { - "duration": "20.0", + "duration": "29.0", "name": "rendering.mobile/slashdot_mobile_2018" }, { - "duration": "14.0", + "duration": "19.0", "name": "rendering.mobile/slide_drawer" }, { - "duration": "24.0", + "duration": "27.0", "name": "rendering.mobile/small_texture_uploads" }, { @@ -3204,27 +3212,27 @@ "name": "rendering.mobile/smash_cat" }, { - "duration": "24.0", + "duration": "27.0", "name": "rendering.mobile/spielzeugz" }, { - "duration": "24.0", + "duration": "27.0", "name": "rendering.mobile/static_canvas_to_hw_accelerated_canvas.html" }, { - "duration": "25.0", + "duration": "27.0", "name": "rendering.mobile/static_webgl_to_hw_accelerated_canvas.html" }, { - "duration": "13.0", + "duration": "18.0", "name": "rendering.mobile/sticky_using_webkit" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/stress_hidey_bars" }, { - "duration": "23.0", + "duration": "27.0", "name": "rendering.mobile/stroke_shapes" }, { @@ -3232,239 +3240,239 @@ "name": "rendering.mobile/svg_icon_raster" }, { - "duration": "11.0", + "duration": "16.0", "name": "rendering.mobile/swipe_action" }, { - "duration": "13.0", + "duration": "18.0", "name": "rendering.mobile/swipe_to_dismiss" }, { - "duration": "19.0", + "duration": "22.0", "name": "rendering.mobile/sync_scroll_offset" }, { - "duration": "28.0", + "duration": "31.0", "name": "rendering.mobile/techcrunch_2018" }, { - "duration": "29.0", + "duration": "26.0", "name": "rendering.mobile/techcrunch_mobile_2018" }, { - "duration": "33.0", + "duration": "39.0", "name": "rendering.mobile/text_05000_pixels_per_second" }, { - "duration": "34.0", + "duration": "39.0", "name": "rendering.mobile/text_10000_pixels_per_second" }, { - "duration": "34.0", + "duration": "39.0", "name": "rendering.mobile/text_20000_pixels_per_second" }, { - "duration": "30.0", + "duration": "36.0", "name": "rendering.mobile/text_40000_pixels_per_second" }, { - "duration": "29.0", + "duration": "35.0", "name": "rendering.mobile/text_60000_pixels_per_second" }, { - "duration": "29.0", + "duration": "34.0", "name": "rendering.mobile/text_75000_pixels_per_second" }, { - "duration": "29.0", + "duration": "35.0", "name": "rendering.mobile/text_90000_pixels_per_second" }, { - "duration": "35.0", + "duration": "41.0", "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second" }, { - "duration": "35.0", + "duration": "41.0", "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second" }, { - "duration": "34.0", + "duration": "41.0", "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second" }, { - "duration": "31.0", + "duration": "37.0", "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second" }, { - "duration": "30.0", + "duration": "36.0", "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second" }, { - "duration": "31.0", + "duration": "37.0", "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second" }, { - "duration": "29.0", + "duration": "35.0", "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second" }, { - "duration": "33.0", + "duration": "39.0", "name": "rendering.mobile/text_hover_05000_pixels_per_second" }, { - "duration": "33.0", + "duration": "39.0", "name": "rendering.mobile/text_hover_10000_pixels_per_second" }, { - "duration": "33.0", + "duration": "39.0", "name": "rendering.mobile/text_hover_20000_pixels_per_second" }, { - "duration": "30.0", + "duration": "35.0", "name": "rendering.mobile/text_hover_40000_pixels_per_second" }, { - "duration": "32.0", + "duration": "38.0", "name": "rendering.mobile/text_hover_60000_pixels_per_second" }, { - "duration": "29.0", + "duration": "34.0", "name": "rendering.mobile/text_hover_75000_pixels_per_second" }, { - "duration": "29.0", + "duration": "34.0", "name": "rendering.mobile/text_hover_90000_pixels_per_second" }, { - "duration": "22.0", + "duration": "26.0", "name": "rendering.mobile/theverge_article_mobile_2018" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/theverge_mobile_2018" }, { - "duration": "27.0", + "duration": "30.0", "name": "rendering.mobile/throughput_scrolling_active_handler" }, { - "duration": "27.0", + "duration": "31.0", "name": "rendering.mobile/throughput_scrolling_composited" }, { - "duration": "29.0", + "duration": "33.0", "name": "rendering.mobile/throughput_scrolling_passive_handler" }, { - "duration": "27.0", + "duration": "31.0", "name": "rendering.mobile/throughput_scrolling_uncomposited" }, { - "duration": "61.0", + "duration": "60.0", "name": "rendering.mobile/tiny_racing_v3_wasm_2020" }, { - "duration": "23.0", + "duration": "27.0", "name": "rendering.mobile/toBlob_duration.html" }, { - "duration": "23.0", + "duration": "27.0", "name": "rendering.mobile/toBlob_duration_jpeg.html" }, { - "duration": "24.0", + "duration": "28.0", "name": "rendering.mobile/toBlob_small_canvas_in_worker.html" }, { - "duration": "19.0", + "duration": "24.0", "name": "rendering.mobile/toggle_drawer" }, { - "duration": "20.0", + "duration": "24.0", "name": "rendering.mobile/touch_handler_scrolling" }, { - "duration": "23.0", + "duration": "27.0", "name": "rendering.mobile/transfer_from_imageBitmap.html" }, { - "duration": "23.0", + "duration": "27.0", "name": "rendering.mobile/transform_transitions" }, { - "duration": "23.0", + "duration": "27.0", "name": "rendering.mobile/transform_transitions_js_block" }, { - "duration": "19.0", + "duration": "23.0", "name": "rendering.mobile/twitch_2018" }, { - "duration": "22.0", + "duration": "26.0", "name": "rendering.mobile/twitch_mobile_pinch_2018" }, { - "duration": "22.0", + "duration": "26.0", "name": "rendering.mobile/twitter_2018" }, { - "duration": "17.0", + "duration": "22.0", "name": "rendering.mobile/twitter_mobile_2018" }, { - "duration": "20.0", + "duration": "24.0", "name": "rendering.mobile/update_history_state" }, { - "duration": "15.0", + "duration": "19.0", "name": "rendering.mobile/usatoday_mobile_2018" }, { - "duration": "15.0", + "duration": "20.0", "name": "rendering.mobile/vertical_expansion" }, { - "duration": "24.0", + "duration": "28.0", "name": "rendering.mobile/video_to_hw_accelerated_canvas" }, { - "duration": "23.0", + "duration": "27.0", "name": "rendering.mobile/video_to_sub_texture" }, { - "duration": "23.0", + "duration": "27.0", "name": "rendering.mobile/video_to_sub_texture_flip_and_premultiply" }, { - "duration": "23.0", + "duration": "27.0", "name": "rendering.mobile/video_to_sub_texture_flip_y" }, { - "duration": "23.0", + "duration": "27.0", "name": "rendering.mobile/video_to_sub_texture_premultiply" }, { - "duration": "24.0", + "duration": "28.0", "name": "rendering.mobile/video_to_texture" }, { - "duration": "23.0", + "duration": "27.0", "name": "rendering.mobile/web_animation_value_type_color" }, { - "duration": "23.0", + "duration": "27.0", "name": "rendering.mobile/web_animation_value_type_length_3d" }, { - "duration": "23.0", + "duration": "26.0", "name": "rendering.mobile/web_animation_value_type_length_complex" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/web_animation_value_type_length_simple" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/web_animation_value_type_path" }, { @@ -3480,7 +3488,7 @@ "name": "rendering.mobile/web_animation_value_type_transform_simple" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.mobile/web_animations_many_keyframes" }, { @@ -3496,7 +3504,7 @@ "name": "rendering.mobile/web_animations_staggered_chaining" }, { - "duration": "23.0", + "duration": "27.0", "name": "rendering.mobile/web_animations_staggered_infinite_iterations" }, { @@ -3504,7 +3512,7 @@ "name": "rendering.mobile/web_animations_staggered_triggering_page" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/webgl_to_texture" }, { @@ -3516,79 +3524,79 @@ "name": "rendering.mobile/webp_decoding_yuv_and_gpu_rasterization" }, { - "duration": "27.0", + "duration": "28.0", "name": "rendering.mobile/wikipedia_2018" }, { - "duration": "26.0", + "duration": "29.0", "name": "rendering.mobile/wikipedia_delayed_scroll_start_2018" }, { - "duration": "20.0", + "duration": "22.0", "name": "rendering.mobile/wikipedia_mobile_2018" }, { - "duration": "21.0", + "duration": "23.0", "name": "rendering.mobile/wordpress_2018" }, { - "duration": "19.0", + "duration": "22.0", "name": "rendering.mobile/wordpress_mobile_2018" }, { - "duration": "19.0", + "duration": "22.0", "name": "rendering.mobile/worldjournal_mobile_2018" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/wow_wiki_pathological_2018" }, { - "duration": "30.0", + "duration": "33.0", "name": "rendering.mobile/wowwiki_mobile_2018" }, { - "duration": "22.0", + "duration": "26.0", "name": "rendering.mobile/wsj_mobile_2018" }, { - "duration": "14.0", + "duration": "17.0", "name": "rendering.mobile/yahoo_answers_2018" }, { - "duration": "5.0", + "duration": "7.0", "name": "rendering.mobile/yahoo_answers_mobile_2018" }, { - "duration": "16.0", + "duration": "18.0", "name": "rendering.mobile/yahoo_news_2018" }, { - "duration": "19.0", + "duration": "21.0", "name": "rendering.mobile/yahoo_news_mobile_2018" }, { - "duration": "18.0", + "duration": "21.0", "name": "rendering.mobile/yahoo_sports_2018" }, { - "duration": "14.0", + "duration": "17.0", "name": "rendering.mobile/yahoo_sports_pathological_2018" }, { - "duration": "5.0", + "duration": "7.0", "name": "rendering.mobile/youtube_2018" }, { - "duration": "13.0", + "duration": "15.0", "name": "rendering.mobile/youtube_mobile_2018" }, { - "duration": "19.0", + "duration": "21.0", "name": "rendering.mobile/zdnet_pathological_2018" }, { - "duration": "13.0", + "duration": "18.0", "name": "rendering.mobile/zoom_in_animation" }, { @@ -3605,6 +3613,10 @@ }, { "duration": "52.0", + "name": "speedometer2-pcscan/Speedometer2" + }, + { + "duration": "52.0", "name": "speedometer2/Speedometer2" }, { @@ -3616,39 +3628,39 @@ "name": "startup.mobile/intent:coldish:bbc" }, { - "duration": "44.0", + "duration": "43.0", "name": "startup.mobile/intent:warm:bbc" }, { - "duration": "8.0", + "duration": "7.0", "name": "startup.mobile/maps_pwa:with_http_cache" }, { - "duration": "23.0", + "duration": "22.0", "name": "system_health.common_mobile/background:media:imgur:2019" }, { - "duration": "42.0", + "duration": "39.0", "name": "system_health.common_mobile/background:news:nytimes:2019" }, { - "duration": "22.0", + "duration": "21.0", "name": "system_health.common_mobile/background:search:google:2019" }, { - "duration": "21.0", + "duration": "19.0", "name": "system_health.common_mobile/background:social:facebook:2019" }, { - "duration": "5.0", + "duration": "3.0", "name": "system_health.common_mobile/background:tools:gmail:2019" }, { - "duration": "51.0", + "duration": "52.0", "name": "system_health.common_mobile/browse:chrome:newtab:2019" }, { - "duration": "4.0", + "duration": "5.0", "name": "system_health.common_mobile/browse:chrome:omnibox:2019" }, { @@ -3668,7 +3680,7 @@ "name": "system_health.common_mobile/browse:media:imgur:2019" }, { - "duration": "70.0", + "duration": "55.0", "name": "system_health.common_mobile/browse:media:youtube:2019" }, { @@ -3676,23 +3688,23 @@ "name": "system_health.common_mobile/browse:news:cnn:2020" }, { - "duration": "7.0", + "duration": "8.0", "name": "system_health.common_mobile/browse:news:cricbuzz:2019" }, { - "duration": "43.0", + "duration": "44.0", "name": "system_health.common_mobile/browse:news:globo:2019" }, { - "duration": "57.0", + "duration": "56.0", "name": "system_health.common_mobile/browse:news:nytimes:2019" }, { - "duration": "34.0", + "duration": "35.0", "name": "system_health.common_mobile/browse:news:qq:2019" }, { - "duration": "49.0", + "duration": "50.0", "name": "system_health.common_mobile/browse:news:reddit:2019" }, { @@ -3700,11 +3712,11 @@ "name": "system_health.common_mobile/browse:news:toi:2019" }, { - "duration": "76.0", + "duration": "56.0", "name": "system_health.common_mobile/browse:news:washingtonpost:2019" }, { - "duration": "25.0", + "duration": "26.0", "name": "system_health.common_mobile/browse:search:amp:2018" }, { @@ -3712,11 +3724,11 @@ "name": "system_health.common_mobile/browse:search:amp:sxg:2019" }, { - "duration": "52.0", + "duration": "51.0", "name": "system_health.common_mobile/browse:shopping:amazon:2019" }, { - "duration": "50.0", + "duration": "52.0", "name": "system_health.common_mobile/browse:shopping:avito:2019" }, { @@ -3724,11 +3736,11 @@ "name": "system_health.common_mobile/browse:shopping:flipkart:2019" }, { - "duration": "58.0", + "duration": "57.0", "name": "system_health.common_mobile/browse:shopping:lazada:2019" }, { - "duration": "7.0", + "duration": "8.0", "name": "system_health.common_mobile/browse:social:facebook:2019" }, { @@ -3736,11 +3748,11 @@ "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "78.0", + "duration": "79.0", "name": "system_health.common_mobile/browse:social:instagram:2019" }, { - "duration": "4.0", + "duration": "5.0", "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll:2019" }, { @@ -3760,15 +3772,15 @@ "name": "system_health.common_mobile/browse:tools:maps:2019" }, { - "duration": "21.0", + "duration": "19.0", "name": "system_health.common_mobile/load:chrome:blank" }, { - "duration": "22.0", + "duration": "23.0", "name": "system_health.common_mobile/load:games:bubbles:2020" }, { - "duration": "22.0", + "duration": "23.0", "name": "system_health.common_mobile/load:games:lazors" }, { @@ -3780,27 +3792,27 @@ "name": "system_health.common_mobile/load:media:dailymotion:2019" }, { - "duration": "20.0", + "duration": "23.0", "name": "system_health.common_mobile/load:media:facebook_feed:mobile:2020" }, { - "duration": "19.0", + "duration": "23.0", "name": "system_health.common_mobile/load:media:facebook_photos:2019" }, { - "duration": "20.0", + "duration": "21.0", "name": "system_health.common_mobile/load:media:facebook_photos:mobile:2020" }, { - "duration": "22.0", + "duration": "23.0", "name": "system_health.common_mobile/load:media:flickr:2018" }, { - "duration": "20.0", + "duration": "21.0", "name": "system_health.common_mobile/load:media:google_images:2018" }, { - "duration": "21.0", + "duration": "24.0", "name": "system_health.common_mobile/load:media:imgur:2018" }, { @@ -3808,15 +3820,19 @@ "name": "system_health.common_mobile/load:media:soundcloud:2018" }, { - "duration": "20.0", + "duration": "21.0", "name": "system_health.common_mobile/load:media:youtube:2018" }, { - "duration": "23.0", + "duration": "24.0", "name": "system_health.common_mobile/load:news:bbc:2019" }, { - "duration": "21.0", + "duration": "27.0", + "name": "system_health.common_mobile/load:news:cnn:2020" + }, + { + "duration": "22.0", "name": "system_health.common_mobile/load:news:irctc:2019" }, { @@ -3824,19 +3840,19 @@ "name": "system_health.common_mobile/load:news:nytimes:2019" }, { - "duration": "20.0", + "duration": "21.0", "name": "system_health.common_mobile/load:news:qq:2019" }, { - "duration": "20.0", + "duration": "21.0", "name": "system_health.common_mobile/load:news:reddit:2019" }, { - "duration": "20.0", + "duration": "21.0", "name": "system_health.common_mobile/load:news:washingtonpost:2019" }, { - "duration": "20.0", + "duration": "21.0", "name": "system_health.common_mobile/load:news:wikipedia:2018" }, { @@ -3844,71 +3860,71 @@ "name": "system_health.common_mobile/load:search:amazon:2019" }, { - "duration": "26.0", + "duration": "27.0", "name": "system_health.common_mobile/load:search:baidu:2018" }, { - "duration": "20.0", + "duration": "23.0", "name": "system_health.common_mobile/load:search:ebay:2018" }, { - "duration": "20.0", + "duration": "21.0", "name": "system_health.common_mobile/load:search:google:2018" }, { - "duration": "20.0", + "duration": "21.0", "name": "system_health.common_mobile/load:search:taobao:2019" }, { - "duration": "19.0", + "duration": "20.0", "name": "system_health.common_mobile/load:search:yahoo:2018" }, { - "duration": "20.0", + "duration": "21.0", "name": "system_health.common_mobile/load:search:yandex:2018" }, { - "duration": "20.0", + "duration": "21.0", "name": "system_health.common_mobile/load:social:instagram:2019" }, { - "duration": "21.0", + "duration": "22.0", "name": "system_health.common_mobile/load:social:pinterest:2019" }, { - "duration": "20.0", + "duration": "21.0", "name": "system_health.common_mobile/load:social:twitter:2019" }, { - "duration": "19.0", + "duration": "23.0", "name": "system_health.common_mobile/load:tools:docs:2019" }, { - "duration": "20.0", + "duration": "23.0", "name": "system_health.common_mobile/load:tools:drive:2019" }, { - "duration": "32.0", + "duration": "36.0", "name": "system_health.common_mobile/load:tools:dropbox:2019" }, { - "duration": "29.0", + "duration": "30.0", "name": "system_health.common_mobile/load:tools:gmail:2019" }, { - "duration": "20.0", + "duration": "22.0", "name": "system_health.common_mobile/load:tools:stackoverflow:2018" }, { - "duration": "20.0", + "duration": "21.0", "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" }, { @@ -3916,35 +3932,35 @@ "name": "system_health.memory_mobile/background:media:imgur:2019" }, { - "duration": "48.0", + "duration": "46.0", "name": "system_health.memory_mobile/background:news:nytimes:2019" }, { - "duration": "29.0", + "duration": "25.0", "name": "system_health.memory_mobile/background:search:google:2019" }, { - "duration": "28.0", + "duration": "25.0", "name": "system_health.memory_mobile/background:social:facebook:2019" }, { - "duration": "5.0", + "duration": "2.0", "name": "system_health.memory_mobile/background:tools:gmail:2019" }, { - "duration": "60.0", + "duration": "53.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": "76.0", + "duration": "77.0", "name": "system_health.memory_mobile/browse:media:facebook_photos:2019" }, { - "duration": "48.0", + "duration": "49.0", "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll:2019" }, { @@ -3952,15 +3968,15 @@ "name": "system_health.memory_mobile/browse:media:googleplaystore:2019" }, { - "duration": "71.0", + "duration": "69.0", "name": "system_health.memory_mobile/browse:media:imgur:2019" }, { - "duration": "56.0", + "duration": "60.0", "name": "system_health.memory_mobile/browse:media:youtube:2019" }, { - "duration": "51.0", + "duration": "52.0", "name": "system_health.memory_mobile/browse:news:cnn:2020" }, { @@ -3968,19 +3984,19 @@ "name": "system_health.memory_mobile/browse:news:cricbuzz:2019" }, { - "duration": "48.0", + "duration": "46.0", "name": "system_health.memory_mobile/browse:news:globo:2019" }, { - "duration": "65.0", + "duration": "55.0", "name": "system_health.memory_mobile/browse:news:nytimes:2019" }, { - "duration": "41.0", + "duration": "36.0", "name": "system_health.memory_mobile/browse:news:qq:2019" }, { - "duration": "53.0", + "duration": "52.0", "name": "system_health.memory_mobile/browse:news:reddit:2019" }, { @@ -3988,7 +4004,7 @@ "name": "system_health.memory_mobile/browse:news:toi:2019" }, { - "duration": "58.0", + "duration": "64.0", "name": "system_health.memory_mobile/browse:news:washingtonpost:2019" }, { @@ -4000,23 +4016,23 @@ "name": "system_health.memory_mobile/browse:search:amp:sxg:2019" }, { - "duration": "58.0", + "duration": "57.0", "name": "system_health.memory_mobile/browse:shopping:amazon:2019" }, { - "duration": "57.0", + "duration": "56.0", "name": "system_health.memory_mobile/browse:shopping:avito:2019" }, { - "duration": "57.0", + "duration": "55.0", "name": "system_health.memory_mobile/browse:shopping:flipkart:2019" }, { - "duration": "57.0", + "duration": "61.0", "name": "system_health.memory_mobile/browse:shopping:lazada:2019" }, { - "duration": "3.0", + "duration": "4.0", "name": "system_health.memory_mobile/browse:social:facebook:2019" }, { @@ -4028,23 +4044,23 @@ "name": "system_health.memory_mobile/browse:social:instagram:2019" }, { - "duration": "84.0", + "duration": "2.0", "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "65.0", + "duration": "68.0", "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "65.0", + "duration": "69.0", "name": "system_health.memory_mobile/browse:social:twitter:2019" }, { - "duration": "3.0", + "duration": "4.0", "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "44.0", + "duration": "43.0", "name": "system_health.memory_mobile/browse:tools:maps:2019" }, { @@ -4052,71 +4068,75 @@ "name": "system_health.memory_mobile/load:chrome:blank" }, { - "duration": "26.0", + "duration": "24.0", "name": "system_health.memory_mobile/load:games:bubbles:2020" }, { - "duration": "25.0", + "duration": "27.0", "name": "system_health.memory_mobile/load:games:lazors" }, { - "duration": "29.0", + "duration": "31.0", "name": "system_health.memory_mobile/load:games:spychase:2018" }, { - "duration": "28.0", + "duration": "27.0", "name": "system_health.memory_mobile/load:media:dailymotion:2019" }, { - "duration": "28.0", + "duration": "26.0", "name": "system_health.memory_mobile/load:media:facebook_feed:mobile:2020" }, { - "duration": "27.0", + "duration": "25.0", "name": "system_health.memory_mobile/load:media:facebook_photos:2019" }, { - "duration": "28.0", + "duration": "26.0", "name": "system_health.memory_mobile/load:media:facebook_photos:mobile:2020" }, { - "duration": "29.0", + "duration": "28.0", "name": "system_health.memory_mobile/load:media:flickr:2018" }, { - "duration": "25.0", + "duration": "26.0", "name": "system_health.memory_mobile/load:media:google_images:2018" }, { - "duration": "26.0", + "duration": "29.0", "name": "system_health.memory_mobile/load:media:imgur:2018" }, { - "duration": "24.0", + "duration": "26.0", "name": "system_health.memory_mobile/load:media:soundcloud:2018" }, { - "duration": "27.0", + "duration": "22.0", "name": "system_health.memory_mobile/load:media:youtube:2018" }, { - "duration": "28.0", + "duration": "25.0", "name": "system_health.memory_mobile/load:news:bbc:2019" }, { - "duration": "25.0", + "duration": "29.0", + "name": "system_health.memory_mobile/load:news:cnn:2020" + }, + { + "duration": "27.0", "name": "system_health.memory_mobile/load:news:irctc:2019" }, { - "duration": "29.0", + "duration": "31.0", "name": "system_health.memory_mobile/load:news:nytimes:2019" }, { - "duration": "25.0", + "duration": "27.0", "name": "system_health.memory_mobile/load:news:qq:2019" }, { - "duration": "25.0", + "duration": "27.0", "name": "system_health.memory_mobile/load:news:reddit:2019" }, { @@ -4128,7 +4148,7 @@ "name": "system_health.memory_mobile/load:news:wikipedia:2018" }, { - "duration": "26.0", + "duration": "25.0", "name": "system_health.memory_mobile/load:search:amazon:2019" }, { @@ -4136,15 +4156,15 @@ "name": "system_health.memory_mobile/load:search:baidu:2018" }, { - "duration": "27.0", + "duration": "26.0", "name": "system_health.memory_mobile/load:search:ebay:2018" }, { - "duration": "24.0", + "duration": "27.0", "name": "system_health.memory_mobile/load:search:google:2018" }, { - "duration": "24.0", + "duration": "26.0", "name": "system_health.memory_mobile/load:search:taobao:2019" }, { @@ -4152,39 +4172,39 @@ "name": "system_health.memory_mobile/load:search:yahoo:2018" }, { - "duration": "27.0", + "duration": "22.0", "name": "system_health.memory_mobile/load:search:yandex:2018" }, { - "duration": "25.0", + "duration": "26.0", "name": "system_health.memory_mobile/load:social:instagram:2019" }, { - "duration": "26.0", + "duration": "28.0", "name": "system_health.memory_mobile/load:social:pinterest:2019" }, { - "duration": "28.0", + "duration": "27.0", "name": "system_health.memory_mobile/load:social:twitter:2019" }, { - "duration": "28.0", + "duration": "25.0", "name": "system_health.memory_mobile/load:tools:docs:2019" }, { - "duration": "27.0", + "duration": "26.0", "name": "system_health.memory_mobile/load:tools:drive:2019" }, { - "duration": "40.0", + "duration": "38.0", "name": "system_health.memory_mobile/load:tools:dropbox:2019" }, { - "duration": "36.0", + "duration": "35.0", "name": "system_health.memory_mobile/load:tools:gmail:2019" }, { - "duration": "25.0", + "duration": "27.0", "name": "system_health.memory_mobile/load:tools:stackoverflow:2018" }, { @@ -4192,11 +4212,11 @@ "name": "system_health.memory_mobile/load:tools:weather:2019" }, { - "duration": "6.0", + "duration": "2.0", "name": "system_health.memory_mobile/long_running:tools:gmail-background" }, { - "duration": "6.0", + "duration": "2.0", "name": "system_health.memory_mobile/long_running:tools:gmail-foreground" }, { @@ -4204,7 +4224,7 @@ "name": "tracing.tracing_with_background_memory_infra/Facebook" }, { - "duration": "8.0", + "duration": "9.0", "name": "tracing.tracing_with_background_memory_infra/Wikipedia" }, { @@ -4216,7 +4236,7 @@ "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/" }, { - "duration": "7.0", + "duration": "8.0", "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/" }, { @@ -4224,11 +4244,11 @@ "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/" }, { - "duration": "9.0", + "duration": "10.0", "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com" }, { - "duration": "10.0", + "duration": "11.0", "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama" }, { @@ -4236,262 +4256,286 @@ "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/" }, { - "duration": "61.0", + "duration": "63.0", "name": "v8.browsing_mobile-future/browse:chrome:newtab:2019" }, { - "duration": "13.0", + "duration": "15.0", "name": "v8.browsing_mobile-future/browse:chrome:omnibox:2019" }, { - "duration": "83.0", + "duration": "85.0", "name": "v8.browsing_mobile-future/browse:media:facebook_photos:2019" }, { - "duration": "56.0", + "duration": "57.0", "name": "v8.browsing_mobile-future/browse:media:flickr_infinite_scroll:2019" }, { - "duration": "48.0", + "duration": "51.0", "name": "v8.browsing_mobile-future/browse:media:googleplaystore:2019" }, { - "duration": "82.0", + "duration": "84.0", "name": "v8.browsing_mobile-future/browse:media:imgur:2019" }, { - "duration": "63.0", + "duration": "66.0", "name": "v8.browsing_mobile-future/browse:media:youtube:2019" }, { - "duration": "62.0", + "duration": "64.0", "name": "v8.browsing_mobile-future/browse:news:cnn:2020" }, { - "duration": "12.0", + "duration": "13.0", "name": "v8.browsing_mobile-future/browse:news:cricbuzz:2019" }, { - "duration": "50.0", + "duration": "52.0", "name": "v8.browsing_mobile-future/browse:news:globo:2019" }, { - "duration": "73.0", + "duration": "72.0", "name": "v8.browsing_mobile-future/browse:news:nytimes:2019" }, { - "duration": "44.0", + "duration": "46.0", "name": "v8.browsing_mobile-future/browse:news:qq:2019" }, { - "duration": "60.0", + "duration": "62.0", "name": "v8.browsing_mobile-future/browse:news:reddit:2019" }, { - "duration": "63.0", + "duration": "64.0", "name": "v8.browsing_mobile-future/browse:news:toi:2019" }, { - "duration": "68.0", + "duration": "71.0", "name": "v8.browsing_mobile-future/browse:news:washingtonpost:2019" }, { - "duration": "31.0", + "duration": "37.0", "name": "v8.browsing_mobile-future/browse:search:amp:2018" }, { - "duration": "33.0", + "duration": "35.0", "name": "v8.browsing_mobile-future/browse:search:amp:sxg:2019" }, { - "duration": "60.0", + "duration": "62.0", "name": "v8.browsing_mobile-future/browse:shopping:amazon:2019" }, { - "duration": "59.0", + "duration": "61.0", "name": "v8.browsing_mobile-future/browse:shopping:avito:2019" }, { - "duration": "60.0", + "duration": "61.0", "name": "v8.browsing_mobile-future/browse:shopping:flipkart:2019" }, { - "duration": "66.0", + "duration": "67.0", "name": "v8.browsing_mobile-future/browse:shopping:lazada:2019" }, { - "duration": "67.0", + "duration": "69.0", "name": "v8.browsing_mobile-future/browse:social:facebook:2019" }, { - "duration": "83.0", + "duration": "82.0", "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "86.0", + "duration": "88.0", "name": "v8.browsing_mobile-future/browse:social:instagram:2019" }, { - "duration": "91.0", + "duration": "15.0", "name": "v8.browsing_mobile-future/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "75.0", + "duration": "77.0", "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "70.0", + "duration": "71.0", "name": "v8.browsing_mobile-future/browse:social:twitter:2019" }, { - "duration": "12.0", + "duration": "13.0", "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "49.0", + "duration": "51.0", "name": "v8.browsing_mobile-future/browse:tools:maps:2019" }, { - "duration": "76.0", + "duration": "66.0", "name": "v8.browsing_mobile/browse:chrome:newtab:2019" }, { - "duration": "16.0", + "duration": "17.0", "name": "v8.browsing_mobile/browse:chrome:omnibox:2019" }, { - "duration": "99.0", + "duration": "91.0", "name": "v8.browsing_mobile/browse:media:facebook_photos:2019" }, { - "duration": "73.0", + "duration": "63.0", "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll:2019" }, { - "duration": "63.0", + "duration": "55.0", "name": "v8.browsing_mobile/browse:media:googleplaystore:2019" }, { - "duration": "98.0", + "duration": "88.0", "name": "v8.browsing_mobile/browse:media:imgur:2019" }, { - "duration": "69.0", + "duration": "70.0", "name": "v8.browsing_mobile/browse:media:youtube:2019" }, { - "duration": "79.0", + "duration": "70.0", "name": "v8.browsing_mobile/browse:news:cnn:2020" }, { - "duration": "12.0", + "duration": "13.0", "name": "v8.browsing_mobile/browse:news:cricbuzz:2019" }, { - "duration": "66.0", + "duration": "54.0", "name": "v8.browsing_mobile/browse:news:globo:2019" }, { - "duration": "83.0", + "duration": "77.0", "name": "v8.browsing_mobile/browse:news:nytimes:2019" }, { - "duration": "48.0", + "duration": "49.0", "name": "v8.browsing_mobile/browse:news:qq:2019" }, { - "duration": "65.0", + "duration": "66.0", "name": "v8.browsing_mobile/browse:news:reddit:2019" }, { - "duration": "81.0", + "duration": "70.0", "name": "v8.browsing_mobile/browse:news:toi:2019" }, { - "duration": "76.0", + "duration": "78.0", "name": "v8.browsing_mobile/browse:news:washingtonpost:2019" }, { - "duration": "46.0", + "duration": "38.0", "name": "v8.browsing_mobile/browse:search:amp:2018" }, { - "duration": "48.0", + "duration": "40.0", "name": "v8.browsing_mobile/browse:search:amp:sxg:2019" }, { - "duration": "64.0", + "duration": "62.0", "name": "v8.browsing_mobile/browse:shopping:amazon:2019" }, { - "duration": "59.0", + "duration": "60.0", "name": "v8.browsing_mobile/browse:shopping:avito:2019" }, { - "duration": "60.0", + "duration": "61.0", "name": "v8.browsing_mobile/browse:shopping:flipkart:2019" }, { - "duration": "83.0", + "duration": "67.0", "name": "v8.browsing_mobile/browse:shopping:lazada:2019" }, { - "duration": "27.0", + "duration": "19.0", "name": "v8.browsing_mobile/browse:social:facebook:2019" }, { - "duration": "96.0", + "duration": "88.0", "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "101.0", + "duration": "93.0", "name": "v8.browsing_mobile/browse:social:instagram:2019" }, { - "duration": "16.0", + "duration": "19.0", "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "81.0", + "duration": "82.0", "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "74.0", + "duration": "75.0", "name": "v8.browsing_mobile/browse:social:twitter:2019" }, { - "duration": "92.0", + "duration": "85.0", "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "64.0", + "duration": "56.0", "name": "v8.browsing_mobile/browse:tools:maps:2019" }, { - "duration": "18.0", + "duration": "19.0", "name": "webrtc/10s_datachannel_transfer" }, { - "duration": "18.0", + "duration": "19.0", "name": "webrtc/canvas_capture_peer_connection" }, { - "duration": "28.0", + "duration": "29.0", "name": "webrtc/codec_constraints_h264" }, { - "duration": "28.0", + "duration": "29.0", "name": "webrtc/codec_constraints_vp8" }, { - "duration": "28.0", + "duration": "29.0", "name": "webrtc/codec_constraints_vp9" }, { - "duration": "18.0", + "duration": "19.0", "name": "webrtc/hd_local_stream_10s" }, { + "duration": "19.0", + "name": "webrtc/insertable_streams_video_processing_camera_canvas2d_video" + }, + { + "duration": "19.0", + "name": "webrtc/insertable_streams_video_processing_camera_drop_video" + }, + { + "duration": "19.0", + "name": "webrtc/insertable_streams_video_processing_camera_webgl_pc" + }, + { + "duration": "19.0", + "name": "webrtc/insertable_streams_video_processing_camera_webgl_video" + }, + { + "duration": "19.0", + "name": "webrtc/insertable_streams_video_processing_pc_webgl_video" + }, + { + "duration": "19.0", + "name": "webrtc/insertable_streams_video_processing_video_webgl_video" + }, + { "duration": "29.0", "name": "webrtc/multiple_peerconnections" }, @@ -4500,11 +4544,11 @@ "name": "webrtc/pause_play_peerconnections" }, { - "duration": "75.0", - "name": "media_perftests/_gtest_" - }, - { "duration": "60.0", "name": "components_perftests/_gtest_" + }, + { + "duration": "75.0", + "name": "media_perftests/_gtest_" } ] \ No newline at end of file
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 ffe277dc7..d47dad4 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,62 +1,66 @@ [ { - "duration": "114.0", + "duration": "115.0", "name": "startup.mobile/cct:coldish:bbc" }, { - "duration": "115.0", + "duration": "117.0", "name": "startup.mobile/intent:coldish:bbc" }, { - "duration": "67.0", + "duration": "68.0", "name": "startup.mobile/intent:warm:bbc" }, { - "duration": "15.0", + "duration": "18.0", "name": "startup.mobile/maps_pwa:with_http_cache" }, { - "duration": "23.0", + "duration": "20.0", "name": "system_health.common_mobile/background:social:facebook:2019" }, { - "duration": "7.0", + "duration": "5.0", "name": "system_health.common_mobile/background:tools:gmail:2019" }, { - "duration": "57.0", + "duration": "55.0", "name": "system_health.common_mobile/browse:news:cnn:2020" }, { - "duration": "55.0", + "duration": "49.0", "name": "system_health.common_mobile/browse:news:reddit:2019" }, { - "duration": "8.0", + "duration": "5.0", "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "64.0", + "duration": "73.0", "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "70.0", + "duration": "81.0", "name": "system_health.common_mobile/browse:social:twitter:2019" }, { - "duration": "42.0", + "duration": "39.0", "name": "system_health.common_mobile/browse:tools:maps:2019" }, { - "duration": "23.0", + "duration": "20.0", "name": "system_health.common_mobile/load:media:youtube:2018" }, { - "duration": "32.0", + "duration": "25.0", + "name": "system_health.common_mobile/load:news:cnn:2020" + }, + { + "duration": "29.0", "name": "system_health.common_mobile/load:tools:gmail:2019" }, { - "duration": "24.0", + "duration": "20.0", "name": "system_health.common_mobile/load:tools:weather:2019" }, { @@ -64,15 +68,15 @@ "name": "system_health.memory_mobile/background:social:facebook:2019" }, { - "duration": "3.0", + "duration": "4.0", "name": "system_health.memory_mobile/background:tools:gmail:2019" }, { - "duration": "54.0", + "duration": "55.0", "name": "system_health.memory_mobile/browse:news:cnn:2020" }, { - "duration": "54.0", + "duration": "53.0", "name": "system_health.memory_mobile/browse:news:reddit:2019" }, { @@ -80,11 +84,11 @@ "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "65.0", + "duration": "64.0", "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "71.0", + "duration": "73.0", "name": "system_health.memory_mobile/browse:social:twitter:2019" }, { @@ -92,10 +96,14 @@ "name": "system_health.memory_mobile/browse:tools:maps:2019" }, { - "duration": "24.0", + "duration": "23.0", "name": "system_health.memory_mobile/load:media:youtube:2018" }, { + "duration": "29.0", + "name": "system_health.memory_mobile/load:news:cnn:2020" + }, + { "duration": "31.0", "name": "system_health.memory_mobile/load:tools:gmail:2019" }, @@ -104,7 +112,7 @@ "name": "system_health.memory_mobile/load:tools:weather:2019" }, { - "duration": "22.0", + "duration": "24.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-pixel2_webview-perf_timing.json b/tools/perf/core/shard_maps/timing_data/android-pixel2_webview-perf_timing.json index 1b2a86c..586ee29 100644 --- a/tools/perf/core/shard_maps/timing_data/android-pixel2_webview-perf_timing.json +++ b/tools/perf/core/shard_maps/timing_data/android-pixel2_webview-perf_timing.json
@@ -1,26 +1,26 @@ [ { - "duration": "73.0", + "duration": "22.0", "name": "blink_perf.accessibility/build-table.html" }, { - "duration": "22.0", + "duration": "18.0", "name": "blink_perf.accessibility/focus-links.html" }, { - "duration": "18.0", + "duration": "31.0", "name": "blink_perf.accessibility/line-breaks.html" }, { - "duration": "25.0", + "duration": "27.0", "name": "blink_perf.accessibility/many-text-changes-deep-block-subtree.html" }, { - "duration": "26.0", + "duration": "31.0", "name": "blink_perf.accessibility/many-text-changes-deep-hidden-subtree.html" }, { - "duration": "21.0", + "duration": "27.0", "name": "blink_perf.accessibility/many-text-changes-deep-inline-subtree.html" }, { @@ -44,7 +44,7 @@ "name": "blink_perf.bindings/document-implementation.html" }, { - "duration": "9.0", + "duration": "10.0", "name": "blink_perf.bindings/dom-attribute-on-prototoype.html" }, { @@ -52,15 +52,15 @@ "name": "blink_perf.bindings/first-child.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.bindings/gc-forest.html" }, { - "duration": "12.0", + "duration": "14.0", "name": "blink_perf.bindings/gc-mini-tree.html" }, { - "duration": "25.0", + "duration": "19.0", "name": "blink_perf.bindings/gc-tree.html" }, { @@ -72,7 +72,7 @@ "name": "blink_perf.bindings/get-attribute.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.bindings/get-element-by-id.html" }, { @@ -92,7 +92,7 @@ "name": "blink_perf.bindings/indexed-getter.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.bindings/insert-before.html" }, { @@ -104,7 +104,7 @@ "name": "blink_perf.bindings/node-list-access.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.bindings/node-type.html" }, { @@ -112,43 +112,43 @@ "name": "blink_perf.bindings/post-message.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.bindings/sequence-conversion-array.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.bindings/sequence-conversion-custom-iterator.html" }, { - "duration": "5.0", + "duration": "6.0", "name": "blink_perf.bindings/serialize-array.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.bindings/serialize-long-string.html" }, { - "duration": "8.0", + "duration": "9.0", "name": "blink_perf.bindings/serialize-map.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.bindings/serialize-nested-array.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.bindings/set-attribute-rare.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.bindings/set-attribute.html" }, { - "duration": "16.0", + "duration": "18.0", "name": "blink_perf.bindings/structured-clone-json-deserialize.html" }, { - "duration": "16.0", + "duration": "18.0", "name": "blink_perf.bindings/structured-clone-json-serialize.html" }, { @@ -160,79 +160,79 @@ "name": "blink_perf.bindings/structured-clone-long-string-serialize.html" }, { - "duration": "10.0", + "duration": "12.0", "name": "blink_perf.bindings/typed-array-construct-from-array.html" }, { - "duration": "10.0", + "duration": "12.0", "name": "blink_perf.bindings/typed-array-construct-from-same-type.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.bindings/typed-array-construct-from-typed.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.bindings/typed-array-set-from-typed.html" }, { - "duration": "10.0", + "duration": "12.0", "name": "blink_perf.bindings/undefined-first-child.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.bindings/undefined-get-element-by-id.html" }, { - "duration": "10.0", + "duration": "12.0", "name": "blink_perf.bindings/undefined-id-getter.html" }, { - "duration": "4.0", + "duration": "6.0", "name": "blink_perf.bindings/worker-structured-clone-different-payloads.html" }, { - "duration": "27.0", + "duration": "29.0", "name": "blink_perf.bindings/worker-structured-clone-json-from-worker.html" }, { - "duration": "27.0", + "duration": "29.0", "name": "blink_perf.bindings/worker-structured-clone-json-roundtrip.html" }, { - "duration": "27.0", + "duration": "29.0", "name": "blink_perf.bindings/worker-structured-clone-json-to-worker.html" }, { - "duration": "7.0", + "duration": "9.0", "name": "blink_perf.bindings/worker-structured-clone-workerDOM-DBMon-from-worker.html" }, { - "duration": "4.0", + "duration": "6.0", "name": "blink_perf.bindings/worker-structured-clone-workerDOM-Map-from-worker.html" }, { - "duration": "15.0", + "duration": "17.0", "name": "blink_perf.bindings/worker-text-encoded-transferable-from-worker.html" }, { - "duration": "15.0", + "duration": "17.0", "name": "blink_perf.bindings/worker-text-encoded-transferable-roundtrip.html" }, { - "duration": "15.0", + "duration": "16.0", "name": "blink_perf.bindings/worker-text-encoded-transferable-to-worker.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.bindings/worker-transferable-from-worker.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.bindings/worker-transferable-roundtrip.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.bindings/worker-transferable-to-worker.html" }, { @@ -312,11 +312,11 @@ "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" }, { @@ -324,19 +324,19 @@ "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": "17.0", + "duration": "18.0", "name": "blink_perf.css/ClassDescendantSelector.html" }, { @@ -396,11 +396,11 @@ "name": "blink_perf.css/SelectorCountScaling.html" }, { - "duration": "18.0", + "duration": "16.0", "name": "blink_perf.dom/custom-element-default-style-with-shadow.html" }, { - "duration": "17.0", + "duration": "10.0", "name": "blink_perf.dom/custom-element-default-style.html" }, { @@ -408,11 +408,11 @@ "name": "blink_perf.dom/long-sibling-list.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.dom/modify-element-classname.html" }, { - "duration": "6.0", + "duration": "8.0", "name": "blink_perf.dom/modify-element-id.html" }, { @@ -420,7 +420,7 @@ "name": "blink_perf.dom/modify-element-title.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.dom/select-multiple-add.html" }, { @@ -432,7 +432,7 @@ "name": "blink_perf.dom/select-single-remove.html" }, { - "duration": "14.0", + "duration": "16.0", "name": "blink_perf.events/EventsDispatching.html" }, { @@ -444,23 +444,23 @@ "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html" }, { - "duration": "26.0", + "duration": "28.0", "name": "blink_perf.events/hit-test-lots-of-layers.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.events/is-input-pending-default-events.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.events/is-input-pending-include-continuous-events.html" }, { - "duration": "17.0", + "duration": "18.0", "name": "blink_perf.image_decoder/decode-gif.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.image_decoder/decode-jpeg-h1v1.html" }, { @@ -476,11 +476,11 @@ "name": "blink_perf.image_decoder/decode-jpeg-h2v2.html" }, { - "duration": "19.0", + "duration": "20.0", "name": "blink_perf.image_decoder/decode-lossless-webp.html" }, { - "duration": "9.0", + "duration": "10.0", "name": "blink_perf.image_decoder/decode-lossy-webp.html" }, { @@ -512,11 +512,11 @@ "name": "blink_perf.layout/abspos.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.layout/add-remove-inline-floats.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.layout/animate-abspos-deep.html" }, { @@ -532,7 +532,7 @@ "name": "blink_perf.layout/auto-grid-lots-of-data.html" }, { - "duration": "11.0", + "duration": "12.0", "name": "blink_perf.layout/auto-grid-lots-of-spanning-data.html" }, { @@ -568,11 +568,11 @@ "name": "blink_perf.layout/contain-content-style-change.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.layout/culled-inline-bounding-rects.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.layout/culled-inline-hittest.html" }, { @@ -628,7 +628,7 @@ "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/flexbox-hittest.html" }, { @@ -672,15 +672,15 @@ "name": "blink_perf.layout/floats_100_100_nested.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.layout/floats_10_1000.html" }, { - "duration": "7.0", + "duration": "8.0", "name": "blink_perf.layout/floats_20_100.html" }, { - "duration": "7.0", + "duration": "8.0", "name": "blink_perf.layout/floats_20_100_nested.html" }, { @@ -728,11 +728,11 @@ "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html" }, { - "duration": "19.0", + "duration": "20.0", "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html" }, { - "duration": "23.0", + "duration": "19.0", "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html" }, { @@ -828,15 +828,15 @@ "name": "blink_perf.layout/multicol/lots-of-text-balanced.html" }, { - "duration": "48.0", + "duration": "50.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" }, { - "duration": "9.0", + "duration": "10.0", "name": "blink_perf.layout/multicol/tall-content-short-columns.html" }, { @@ -848,7 +848,7 @@ "name": "blink_perf.layout/nested-grid-lots-of-tracks.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.layout/nested-grid.html" }, { @@ -860,11 +860,11 @@ "name": "blink_perf.layout/ruby.html" }, { - "duration": "99.0", + "duration": "92.0", "name": "blink_perf.layout/subtree-detaching.html" }, { - "duration": "8.0", + "duration": "15.0", "name": "blink_perf.layout/vertical-japanese-kokoro-insert.html" }, { @@ -880,7 +880,7 @@ "name": "blink_perf.layout/word-wrap-break-word.html" }, { - "duration": "14.0", + "duration": "12.0", "name": "blink_perf.owp_storage/blob-perf-files.html" }, { @@ -892,7 +892,7 @@ "name": "blink_perf.owp_storage/blob-perf-shm.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.owp_storage/blob-perf-tiny.html" }, { @@ -900,11 +900,11 @@ "name": "blink_perf.owp_storage/idb-load-docs.html" }, { - "duration": "20.0", + "duration": "25.0", "name": "blink_perf.owp_storage/idb-put-all.html" }, { - "duration": "25.0", + "duration": "30.0", "name": "blink_perf.owp_storage/idb-put.html" }, { @@ -924,11 +924,11 @@ "name": "blink_perf.paint/complex-iframe-filtered.html" }, { - "duration": "55.0", + "duration": "54.0", "name": "blink_perf.paint/contain-update-layer-tree.html" }, { - "duration": "26.0", + "duration": "27.0", "name": "blink_perf.paint/containment-resize.html" }, { @@ -956,19 +956,19 @@ "name": "blink_perf.paint/paint-offset-changes.html" }, { - "duration": "13.0", + "duration": "14.0", "name": "blink_perf.paint/transform-changes.html" }, { - "duration": "14.0", + "duration": "15.0", "name": "blink_perf.parser/css-parser-yui.html" }, { - "duration": "33.0", + "duration": "16.0", "name": "blink_perf.parser/declarative-shadow-dom-cloning.html" }, { - "duration": "13.0", + "duration": "11.0", "name": "blink_perf.parser/declarative-shadow-dom.html" }, { @@ -976,23 +976,23 @@ "name": "blink_perf.parser/html-parser-threaded.html" }, { - "duration": "23.0", + "duration": "25.0", "name": "blink_perf.parser/html-parser.html" }, { - "duration": "102.0", + "duration": "101.0", "name": "blink_perf.parser/html5-full-render.html" }, { - "duration": "29.0", + "duration": "28.0", "name": "blink_perf.parser/iframe-append-remove.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.parser/innerHTML-setter-siblings.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.parser/innerHTML-setter.html" }, { @@ -1000,7 +1000,7 @@ "name": "blink_perf.parser/query-selector-all-attribute-complex.html" }, { - "duration": "9.0", + "duration": "10.0", "name": "blink_perf.parser/query-selector-all-attribute.html" }, { @@ -1008,7 +1008,7 @@ "name": "blink_perf.parser/query-selector-all-class-deep.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.parser/query-selector-all-class-first.html" }, { @@ -1024,7 +1024,7 @@ "name": "blink_perf.parser/query-selector-all-deep.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.parser/query-selector-all-first.html" }, { @@ -1032,15 +1032,15 @@ "name": "blink_perf.parser/query-selector-all-id-deep.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.parser/query-selector-all-id-first.html" }, { - "duration": "11.0", + "duration": "12.0", "name": "blink_perf.parser/query-selector-all-id-last.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.parser/query-selector-all-last.html" }, { @@ -1048,15 +1048,15 @@ "name": "blink_perf.parser/query-selector-deep.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.parser/query-selector-first.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.parser/query-selector-id-deep.html" }, { - "duration": "11.0", + "duration": "12.0", "name": "blink_perf.parser/query-selector-id-last.html" }, { @@ -1064,7 +1064,7 @@ "name": "blink_perf.parser/query-selector-last.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.parser/simple-url.html" }, { @@ -1072,15 +1072,15 @@ "name": "blink_perf.parser/textarea-parsing.html" }, { - "duration": "13.0", + "duration": "14.0", "name": "blink_perf.parser/tiny-innerHTML.html" }, { - "duration": "14.0", + "duration": "15.0", "name": "blink_perf.parser/url-parser.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.parser/xml-parser.html" }, { @@ -1124,7 +1124,7 @@ "name": "blink_perf.shadow_dom/imperative-api-insertbefore.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.shadow_dom/imperative-api.html" }, { @@ -1136,7 +1136,7 @@ "name": "blink_perf.shadow_dom/shadow-style-share-media-query.html" }, { - "duration": "5.0", + "duration": "6.0", "name": "blink_perf.shadow_dom/shadow-style-share-with-distribution.html" }, { @@ -1148,27 +1148,27 @@ "name": "blink_perf.shadow_dom/style-sheet-insert.html" }, { - "duration": "13.0", + "duration": "14.0", "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.shadow_dom/v1-distribution.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.shadow_dom/v1-host-child-append.html" }, { - "duration": "13.0", + "duration": "14.0", "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html" }, { - "duration": "22.0", + "duration": "18.0", "name": "blink_perf.shadow_dom/v1-large-deep-layout.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-large-shallow-append-layout.html" }, { @@ -1196,7 +1196,7 @@ "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" }, { @@ -1228,11 +1228,11 @@ "name": "blink_perf.shadow_dom/v1-small-shallow-layout.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.svg/AzLizardBenjiPark.html" }, { - "duration": "7.0", + "duration": "8.0", "name": "blink_perf.svg/Bamboo.html" }, { @@ -1264,11 +1264,11 @@ "name": "blink_perf.svg/FlowerFromMyGarden.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.svg/FoodLeifLodahl.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.svg/France.html" }, { @@ -1284,7 +1284,7 @@ "name": "blink_perf.svg/HarveyRayner.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.svg/HereGear.html" }, { @@ -1312,7 +1312,7 @@ "name": "blink_perf.svg/SvgNestedUse.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.svg/UnderTheSee.html" }, { @@ -1324,23 +1324,23 @@ "name": "blink_perf.svg/Worldcup.html" }, { - "duration": "16.0", + "duration": "23.0", "name": "blink_perf.webaudio/audio-buffer-source-node.html" }, { - "duration": "44.0", + "duration": "141.0", "name": "blink_perf.webaudio/audio-worklet-node.html" }, { - "duration": "45.0", + "duration": "146.0", "name": "blink_perf.webaudio/biquad-filter-node.html" }, { - "duration": "45.0", + "duration": "137.0", "name": "blink_perf.webaudio/gain-node.html" }, { - "duration": "54.0", + "duration": "52.0", "name": "blink_perf.webaudio/panner-node.html" }, { @@ -1372,91 +1372,91 @@ "name": "jetstream/JetStream" }, { - "duration": "57.0", + "duration": "60.0", "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html" }, { - "duration": "10.0", + "duration": "13.0", "name": "loading.mobile/58Pic" }, { - "duration": "26.0", + "duration": "22.0", "name": "loading.mobile/58Pic_3g" }, { - "duration": "11.0", + "duration": "14.0", "name": "loading.mobile/Amazon" }, { - "duration": "28.0", + "duration": "30.0", "name": "loading.mobile/Amazon_3g" }, { - "duration": "12.0", + "duration": "15.0", "name": "loading.mobile/BOLNoticias" }, { - "duration": "2.0", + "duration": "5.0", "name": "loading.mobile/BOLNoticias_3g" }, { - "duration": "9.0", + "duration": "12.0", "name": "loading.mobile/Baidu" }, { - "duration": "19.0", + "duration": "22.0", "name": "loading.mobile/Baidu_3g" }, { - "duration": "12.0", + "duration": "14.0", "name": "loading.mobile/Bradesco" }, { - "duration": "3.0", + "duration": "5.0", "name": "loading.mobile/Bradesco_3g" }, { - "duration": "11.0", + "duration": "15.0", "name": "loading.mobile/Dailymotion" }, { - "duration": "3.0", + "duration": "5.0", "name": "loading.mobile/Dailymotion_3g" }, { - "duration": "13.0", + "duration": "15.0", "name": "loading.mobile/Dawn" }, { - "duration": "3.0", + "duration": "5.0", "name": "loading.mobile/Dawn_3g" }, { - "duration": "9.0", + "duration": "16.0", "name": "loading.mobile/DevOpera_cold" }, { - "duration": "16.0", + "duration": "18.0", "name": "loading.mobile/DevOpera_cold_3g" }, { - "duration": "16.0", + "duration": "19.0", "name": "loading.mobile/DevOpera_hot" }, { - "duration": "20.0", + "duration": "22.0", "name": "loading.mobile/DevOpera_hot_3g" }, { - "duration": "14.0", + "duration": "16.0", "name": "loading.mobile/DevOpera_warm" }, { - "duration": "17.0", + "duration": "20.0", "name": "loading.mobile/DevOpera_warm_3g" }, { - "duration": "15.0", + "duration": "14.0", "name": "loading.mobile/Dramaq" }, { @@ -1464,67 +1464,67 @@ "name": "loading.mobile/Dramaq_3g" }, { - "duration": "9.0", + "duration": "11.0", "name": "loading.mobile/EnquiryIndianRail" }, { - "duration": "13.0", + "duration": "15.0", "name": "loading.mobile/EnquiryIndianRail_3g" }, { - "duration": "10.0", + "duration": "12.0", "name": "loading.mobile/Facebook" }, { - "duration": "2.0", + "duration": "5.0", "name": "loading.mobile/Facebook_3g" }, { - "duration": "11.0", + "duration": "14.0", "name": "loading.mobile/FlipBoard_cold" }, { - "duration": "3.0", + "duration": "5.0", "name": "loading.mobile/FlipBoard_cold_3g" }, { - "duration": "15.0", + "duration": "18.0", "name": "loading.mobile/FlipBoard_hot" }, { - "duration": "17.0", + "duration": "20.0", "name": "loading.mobile/FlipBoard_hot_3g" }, { - "duration": "13.0", + "duration": "15.0", "name": "loading.mobile/FlipBoard_warm" }, { - "duration": "3.0", + "duration": "5.0", "name": "loading.mobile/FlipBoard_warm_3g" }, { - "duration": "12.0", + "duration": "15.0", "name": "loading.mobile/FlipKart_cold" }, { - "duration": "3.0", + "duration": "5.0", "name": "loading.mobile/FlipKart_cold_3g" }, { - "duration": "16.0", + "duration": "19.0", "name": "loading.mobile/FlipKart_hot" }, { - "duration": "18.0", + "duration": "21.0", "name": "loading.mobile/FlipKart_hot_3g" }, { - "duration": "13.0", + "duration": "16.0", "name": "loading.mobile/FlipKart_warm" }, { - "duration": "3.0", + "duration": "5.0", "name": "loading.mobile/FlipKart_warm_3g" }, { @@ -1536,55 +1536,55 @@ "name": "loading.mobile/FranceTVInfo_3g" }, { - "duration": "2.0", + "duration": "5.0", "name": "loading.mobile/G1" }, { - "duration": "2.0", + "duration": "5.0", "name": "loading.mobile/G1_3g" }, { - "duration": "11.0", + "duration": "14.0", "name": "loading.mobile/GSShop" }, { - "duration": "3.0", + "duration": "5.0", "name": "loading.mobile/GSShop_3g" }, { - "duration": "9.0", + "duration": "11.0", "name": "loading.mobile/GoogleBrazil" }, { - "duration": "2.0", + "duration": "5.0", "name": "loading.mobile/GoogleBrazil_3g" }, { - "duration": "9.0", + "duration": "12.0", "name": "loading.mobile/GoogleIndia" }, { - "duration": "2.0", + "duration": "5.0", "name": "loading.mobile/GoogleIndia_3g" }, { - "duration": "9.0", + "duration": "11.0", "name": "loading.mobile/GoogleIndonesia" }, { - "duration": "2.0", + "duration": "5.0", "name": "loading.mobile/GoogleIndonesia_3g" }, { - "duration": "12.0", + "duration": "15.0", "name": "loading.mobile/GoogleRedirectToGoogleJapan" }, { - "duration": "2.0", + "duration": "5.0", "name": "loading.mobile/GoogleRedirectToGoogleJapan_3g" }, { - "duration": "16.0", + "duration": "15.0", "name": "loading.mobile/Hongkiat" }, { @@ -1592,11 +1592,11 @@ "name": "loading.mobile/Hongkiat_3g" }, { - "duration": "12.0", + "duration": "15.0", "name": "loading.mobile/KapanLagi" }, { - "duration": "3.0", + "duration": "5.0", "name": "loading.mobile/KapanLagi_3g" }, { @@ -1604,15 +1604,15 @@ "name": "loading.mobile/Kaskus" }, { - "duration": "3.0", + "duration": "5.0", "name": "loading.mobile/Kaskus_3g" }, { - "duration": "11.0", + "duration": "16.0", "name": "loading.mobile/LocalMoxie" }, { - "duration": "3.0", + "duration": "5.0", "name": "loading.mobile/LocalMoxie_3g" }, { @@ -1624,131 +1624,131 @@ "name": "loading.mobile/Locanto_3g" }, { - "duration": "10.0", + "duration": "13.0", "name": "loading.mobile/OLX" }, { - "duration": "3.0", + "duration": "5.0", "name": "loading.mobile/OLX_3g" }, { - "duration": "9.0", + "duration": "12.0", "name": "loading.mobile/QQNews" }, { - "duration": "19.0", + "duration": "21.0", "name": "loading.mobile/QQNews_3g" }, { - "duration": "10.0", + "duration": "13.0", "name": "loading.mobile/SlideShare" }, { - "duration": "21.0", + "duration": "24.0", "name": "loading.mobile/SlideShare_3g" }, { - "duration": "11.0", + "duration": "13.0", "name": "loading.mobile/Suumo_cold" }, { - "duration": "11.0", + "duration": "13.0", "name": "loading.mobile/Suumo_cold_3g" }, { - "duration": "15.0", + "duration": "17.0", "name": "loading.mobile/Suumo_hot" }, { - "duration": "15.0", + "duration": "17.0", "name": "loading.mobile/Suumo_hot_3g" }, { - "duration": "13.0", + "duration": "15.0", "name": "loading.mobile/Suumo_warm" }, { - "duration": "13.0", + "duration": "15.0", "name": "loading.mobile/Suumo_warm_3g" }, { - "duration": "11.0", + "duration": "13.0", "name": "loading.mobile/Thairath" }, { - "duration": "3.0", + "duration": "5.0", "name": "loading.mobile/Thairath_3g" }, { - "duration": "13.0", + "duration": "15.0", "name": "loading.mobile/TheStar" }, { - "duration": "3.0", + "duration": "5.0", "name": "loading.mobile/TheStar_3g" }, { - "duration": "12.0", + "duration": "15.0", "name": "loading.mobile/TribunNews" }, { - "duration": "2.0", + "duration": "5.0", "name": "loading.mobile/TribunNews_3g" }, { - "duration": "9.0", + "duration": "11.0", "name": "loading.mobile/Twitter" }, { - "duration": "14.0", + "duration": "16.0", "name": "loading.mobile/Twitter_3g" }, { - "duration": "11.0", + "duration": "13.0", "name": "loading.mobile/VoiceMemos_cold" }, { - "duration": "3.0", + "duration": "5.0", "name": "loading.mobile/VoiceMemos_cold_3g" }, { - "duration": "3.0", + "duration": "5.0", "name": "loading.mobile/VoiceMemos_hot" }, { - "duration": "3.0", + "duration": "5.0", "name": "loading.mobile/VoiceMemos_hot_3g" }, { - "duration": "3.0", + "duration": "5.0", "name": "loading.mobile/VoiceMemos_warm" }, { - "duration": "3.0", + "duration": "5.0", "name": "loading.mobile/VoiceMemos_warm_3g" }, { - "duration": "9.0", + "duration": "11.0", "name": "loading.mobile/Wikipedia" }, { - "duration": "14.0", + "duration": "17.0", "name": "loading.mobile/Wikipedia_3g" }, { - "duration": "12.0", + "duration": "15.0", "name": "loading.mobile/YahooNews" }, { - "duration": "2.0", + "duration": "5.0", "name": "loading.mobile/YahooNews_3g" }, { - "duration": "9.0", + "duration": "12.0", "name": "loading.mobile/Youtube" }, { - "duration": "2.0", + "duration": "5.0", "name": "loading.mobile/Youtube_3g" }, { @@ -1780,7 +1780,7 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html" }, { - "duration": "20.0", + "duration": "25.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/facebook.html" }, { @@ -1804,7 +1804,7 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleimagesearch.html" }, { - "duration": "18.0", + "duration": "17.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleplus.html" }, { @@ -1812,11 +1812,11 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html" }, { - "duration": "15.0", + "duration": "14.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html" }, { @@ -1824,7 +1824,7 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/twitter.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html" }, { @@ -1852,107 +1852,107 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html" }, { - "duration": "31.0", + "duration": "30.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html" }, { - "duration": "24.0", + "duration": "30.0", "name": "rendering.mobile/accu_weather_2018" }, { - "duration": "21.0", + "duration": "35.0", "name": "rendering.mobile/accu_weather_mobile_pinch_2018" }, { - "duration": "18.0", + "duration": "23.0", "name": "rendering.mobile/amazon_2018" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/amazon_mobile_2018" }, { - "duration": "21.0", + "duration": "26.0", "name": "rendering.mobile/analog_clock_svg" }, { - "duration": "20.0", + "duration": "26.0", "name": "rendering.mobile/androidpolice_mobile_2018" }, { - "duration": "25.0", + "duration": "31.0", "name": "rendering.mobile/animometer_webgl" }, { - "duration": "26.0", + "duration": "31.0", "name": "rendering.mobile/animometer_webgl_attrib_arrays" }, { - "duration": "26.0", + "duration": "32.0", "name": "rendering.mobile/animometer_webgl_multi_draw" }, { - "duration": "25.0", + "duration": "31.0", "name": "rendering.mobile/aquarium" }, { - "duration": "4.0", + "duration": "9.0", "name": "rendering.mobile/aquarium_20k" }, { - "duration": "19.0", + "duration": "27.0", "name": "rendering.mobile/background_color_animation" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/background_color_animation_with_gradient" }, { - "duration": "13.0", + "duration": "19.0", "name": "rendering.mobile/baidu_mobile_2018" }, { - "duration": "23.0", + "duration": "27.0", "name": "rendering.mobile/balls_css_key_frame_animations" }, { - "duration": "4.0", + "duration": "9.0", "name": "rendering.mobile/balls_css_key_frame_animations_composited_transform" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/balls_css_transition_2_properties" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/balls_css_transition_40_properties" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/balls_css_transition_all_properties" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/balls_javascript_canvas" }, { - "duration": "20.0", + "duration": "26.0", "name": "rendering.mobile/balls_javascript_css" }, { - "duration": "21.0", + "duration": "28.0", "name": "rendering.mobile/balls_svg_animations" }, { - "duration": "21.0", + "duration": "23.0", "name": "rendering.mobile/basic_stream" }, { - "duration": "27.0", + "duration": "22.0", "name": "rendering.mobile/bing_mobile_2018" }, { - "duration": "23.0", + "duration": "29.0", "name": "rendering.mobile/blob" }, { @@ -1960,583 +1960,583 @@ "name": "rendering.mobile/blogspot_2018" }, { - "duration": "14.0", + "duration": "18.0", "name": "rendering.mobile/blogspot_mobile_2018" }, { - "duration": "14.0", + "duration": "19.0", "name": "rendering.mobile/blur_rotating_background" }, { - "duration": "19.0", + "duration": "22.0", "name": "rendering.mobile/boingboing_mobile_2018" }, { - "duration": "15.0", + "duration": "20.0", "name": "rendering.mobile/booking.com_2018" }, { - "duration": "13.0", + "duration": "18.0", "name": "rendering.mobile/booking.com_mobile_2018" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/bouncing_balls_15" }, { - "duration": "4.0", + "duration": "9.0", "name": "rendering.mobile/bouncing_balls_shadow" }, { - "duration": "20.0", + "duration": "26.0", "name": "rendering.mobile/bouncing_clipped_rectangles" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/bouncing_gradient_circles" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/bouncing_png_images" }, { - "duration": "21.0", + "duration": "26.0", "name": "rendering.mobile/bouncing_svg_images" }, { - "duration": "24.0", + "duration": "32.0", "name": "rendering.mobile/camera_to_webgl" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/canvas2d_to_texture.html" }, { - "duration": "32.0", + "duration": "38.0", "name": "rendering.mobile/canvas_05000_pixels_per_second" }, { - "duration": "5.0", + "duration": "9.0", "name": "rendering.mobile/canvas_10000_pixels_per_second" }, { - "duration": "5.0", + "duration": "9.0", "name": "rendering.mobile/canvas_20000_pixels_per_second" }, { - "duration": "5.0", + "duration": "9.0", "name": "rendering.mobile/canvas_40000_pixels_per_second" }, { - "duration": "5.0", + "duration": "9.0", "name": "rendering.mobile/canvas_60000_pixels_per_second" }, { - "duration": "5.0", + "duration": "9.0", "name": "rendering.mobile/canvas_75000_pixels_per_second" }, { - "duration": "5.0", + "duration": "9.0", "name": "rendering.mobile/canvas_90000_pixels_per_second" }, { - "duration": "19.0", + "duration": "27.0", "name": "rendering.mobile/canvas_animation_no_clear" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/canvas_arcs" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/canvas_font_cycler" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/canvas_lines" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/canvas_to_blob" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/canvas_to_canvas_draw" }, { - "duration": "21.0", + "duration": "31.0", "name": "rendering.mobile/capitolvolkswagen_mobile_2018" }, { - "duration": "14.0", + "duration": "16.0", "name": "rendering.mobile/card_expansion" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.mobile/card_expansion_animated" }, { - "duration": "16.0", + "duration": "18.0", "name": "rendering.mobile/card_expansion_images_text" }, { - "duration": "14.0", + "duration": "16.0", "name": "rendering.mobile/card_flying" }, { - "duration": "14.0", + "duration": "18.0", "name": "rendering.mobile/cats_unscaled" }, { - "duration": "13.0", + "duration": "17.0", "name": "rendering.mobile/cats_viewport_width" }, { - "duration": "24.0", + "duration": "29.0", "name": "rendering.mobile/cc_poster_circle" }, { - "duration": "17.0", + "duration": "22.0", "name": "rendering.mobile/cc_scroll_text_only" }, { - "duration": "23.0", + "duration": "27.0", "name": "rendering.mobile/chip_tune" }, { - "duration": "15.0", + "duration": "20.0", "name": "rendering.mobile/cnn_2018" }, { - "duration": "18.0", + "duration": "22.0", "name": "rendering.mobile/cnn_article_mobile_2018" }, { - "duration": "16.0", + "duration": "21.0", "name": "rendering.mobile/cnn_mobile_2018" }, { - "duration": "4.0", + "duration": "9.0", "name": "rendering.mobile/cnn_mobile_pinch_2018" }, { - "duration": "16.0", + "duration": "22.0", "name": "rendering.mobile/cnn_pathological_2018" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/compositor_heavy_animation" }, { - "duration": "16.0", + "duration": "18.0", "name": "rendering.mobile/coordinated_animation" }, { - "duration": "4.0", + "duration": "9.0", "name": "rendering.mobile/core_scroll_header_panel" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/crafty_mind" }, { - "duration": "21.0", + "duration": "26.0", "name": "rendering.mobile/css_animations_many_keyframes" }, { - "duration": "19.0", + "duration": "24.0", "name": "rendering.mobile/css_animations_simultaneous_inline_style" }, { - "duration": "19.0", + "duration": "24.0", "name": "rendering.mobile/css_animations_simultaneous_new_element" }, { - "duration": "19.0", + "duration": "24.0", "name": "rendering.mobile/css_animations_simultaneous_style_element" }, { - "duration": "19.0", + "duration": "24.0", "name": "rendering.mobile/css_animations_simultaneous_updating_class" }, { - "duration": "19.0", + "duration": "24.0", "name": "rendering.mobile/css_animations_staggered_infinite_iterations" }, { - "duration": "20.0", + "duration": "26.0", "name": "rendering.mobile/css_animations_staggered_inline_style" }, { - "duration": "20.0", + "duration": "26.0", "name": "rendering.mobile/css_animations_staggered_new_element" }, { - "duration": "20.0", + "duration": "26.0", "name": "rendering.mobile/css_animations_staggered_style_element" }, { - "duration": "20.0", + "duration": "26.0", "name": "rendering.mobile/css_animations_staggered_updating_class" }, { - "duration": "20.0", + "duration": "26.0", "name": "rendering.mobile/css_animations_triggered_inline_style" }, { - "duration": "20.0", + "duration": "26.0", "name": "rendering.mobile/css_animations_triggered_new_element" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/css_animations_triggered_style_element" }, { - "duration": "20.0", + "duration": "26.0", "name": "rendering.mobile/css_animations_triggered_updating_class" }, { - "duration": "22.0", + "duration": "28.0", "name": "rendering.mobile/css_opacity_plus_n_layers_0" }, { - "duration": "22.0", + "duration": "28.0", "name": "rendering.mobile/css_opacity_plus_n_layers_75" }, { - "duration": "22.0", + "duration": "28.0", "name": "rendering.mobile/css_opacity_plus_n_layers_99" }, { - "duration": "19.0", + "duration": "24.0", "name": "rendering.mobile/css_transitions_inline_style" }, { - "duration": "19.0", + "duration": "24.0", "name": "rendering.mobile/css_transitions_new_element" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/css_transitions_staggered_inline_style" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/css_transitions_staggered_new_element" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/css_transitions_staggered_style_element" }, { - "duration": "19.0", + "duration": "24.0", "name": "rendering.mobile/css_transitions_staggered_updating_class" }, { - "duration": "19.0", + "duration": "24.0", "name": "rendering.mobile/css_transitions_style_element" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/css_transitions_triggered_inline_style" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/css_transitions_triggered_new_element" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/css_transitions_triggered_style_element" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/css_transitions_triggered_updating_class" }, { - "duration": "19.0", + "duration": "24.0", "name": "rendering.mobile/css_transitions_updating_class" }, { - "duration": "19.0", + "duration": "24.0", "name": "rendering.mobile/css_value_type_color" }, { - "duration": "19.0", + "duration": "24.0", "name": "rendering.mobile/css_value_type_filter" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/css_value_type_length" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/css_value_type_length_complex" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/css_value_type_length_simple" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/css_value_type_path" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/css_value_type_shadow" }, { - "duration": "20.0", + "duration": "24.0", "name": "rendering.mobile/css_value_type_transform_complex" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/css_value_type_transform_simple" }, { - "duration": "17.0", + "duration": "23.0", "name": "rendering.mobile/deviantart_mobile_2018" }, { - "duration": "14.0", + "duration": "20.0", "name": "rendering.mobile/digg_mobile_2018" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/docs_paper.html" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/docs_resume.html" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/docs_table.html" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/draw_image" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/draw_image_not_pixel_aligned" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/dynamic_canvas_to_hw_accelerated_canvas.html" }, { - "duration": "23.0", + "duration": "29.0", "name": "rendering.mobile/dynamic_cube_map" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/dynamic_webgl_to_hw_accelerated_canvas.html" }, { - "duration": "22.0", + "duration": "29.0", "name": "rendering.mobile/earth" }, { - "duration": "16.0", + "duration": "26.0", "name": "rendering.mobile/ebay_2018" }, { - "duration": "12.0", + "duration": "18.0", "name": "rendering.mobile/ebay_mobile_2018" }, { - "duration": "16.0", + "duration": "24.0", "name": "rendering.mobile/ebay_mobile_pinch_2018" }, { - "duration": "25.0", + "duration": "28.0", "name": "rendering.mobile/ebay_scroll_2018" }, { - "duration": "4.0", + "duration": "9.0", "name": "rendering.mobile/effect_games" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/espn_2018" }, { - "duration": "20.0", + "duration": "26.0", "name": "rendering.mobile/espn_mobile_2018" }, { - "duration": "15.0", + "duration": "21.0", "name": "rendering.mobile/espn_pathological_2018" }, { - "duration": "20.0", + "duration": "29.0", "name": "rendering.mobile/extra_large_texture_uploads" }, { - "duration": "15.0", + "duration": "21.0", "name": "rendering.mobile/facebook_2018" }, { - "duration": "19.0", + "duration": "24.0", "name": "rendering.mobile/facebook_mobile_2018" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/falling_particle_simulation_cpu.html" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/falling_particle_simulation_gpu.html" }, { - "duration": "3.0", + "duration": "5.0", "name": "rendering.mobile/famo_us_twitter_demo" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/fill_clear_rect.html" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/fill_shapes" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/filter_terrain_svg" }, { - "duration": "24.0", + "duration": "27.0", "name": "rendering.mobile/flickr_scroll_2018" }, { - "duration": "16.0", + "duration": "18.0", "name": "rendering.mobile/font_wipe" }, { - "duration": "13.0", + "duration": "18.0", "name": "rendering.mobile/forecast.io_mobile_2018" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/geo_apis" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/get_image_data_cpu.html" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/get_image_data_gpu.html" }, { - "duration": "17.0", + "duration": "23.0", "name": "rendering.mobile/gmail_2018" }, { - "duration": "12.0", + "duration": "17.0", "name": "rendering.mobile/google_calendar_2018" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/google_docs_2018" }, { - "duration": "16.0", + "duration": "21.0", "name": "rendering.mobile/google_image_search_2018" }, { - "duration": "18.0", + "duration": "23.0", "name": "rendering.mobile/google_image_search_mobile_2018" }, { - "duration": "16.0", + "duration": "18.0", "name": "rendering.mobile/google_news_ios" }, { - "duration": "4.0", + "duration": "9.0", "name": "rendering.mobile/google_news_mobile_2018" }, { - "duration": "18.0", + "duration": "24.0", "name": "rendering.mobile/google_plus_2018" }, { - "duration": "18.0", + "duration": "23.0", "name": "rendering.mobile/google_plus_mobile_2018" }, { - "duration": "15.0", + "duration": "23.0", "name": "rendering.mobile/google_search_mobile_pinch_2018" }, { - "duration": "13.0", + "duration": "18.0", "name": "rendering.mobile/google_web_search_2018" }, { - "duration": "16.0", + "duration": "22.0", "name": "rendering.mobile/google_web_search_mobile_2018" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/gpu_bound_shader.html" }, { - "duration": "18.0", + "duration": "24.0", "name": "rendering.mobile/gsp.ro_mobile_2018" }, { - "duration": "18.0", + "duration": "24.0", "name": "rendering.mobile/guardian_pathological_2018" }, { - "duration": "20.0", + "duration": "26.0", "name": "rendering.mobile/guimark_vector_chart" }, { - "duration": "17.0", + "duration": "23.0", "name": "rendering.mobile/gws_boogie_expansion" }, { - "duration": "18.0", + "duration": "23.0", "name": "rendering.mobile/gws_google_expansion" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/hakim" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.mobile/horizontal_vertical_expansion" }, { - "duration": "20.0", + "duration": "25.0", "name": "rendering.mobile/hw_accelerated_canvas_to_sw_canvas.html" }, { - "duration": "38.0", + "duration": "9.0", "name": "rendering.mobile/idle_power_animated_gif" }, { - "duration": "31.0", + "duration": "37.0", "name": "rendering.mobile/idle_power_blank" }, { - "duration": "35.0", + "duration": "9.0", "name": "rendering.mobile/idle_power_css_animation" }, { - "duration": "37.0", + "duration": "5.0", "name": "rendering.mobile/idle_power_request_animation_frame" }, { - "duration": "108.0", + "duration": "9.0", "name": "rendering.mobile/idle_power_set_timeout_long" }, { - "duration": "37.0", + "duration": "9.0", "name": "rendering.mobile/idle_power_set_timetout" }, { - "duration": "31.0", + "duration": "36.0", "name": "rendering.mobile/ie_chalkboard" }, { @@ -2544,447 +2544,447 @@ "name": "rendering.mobile/ie_pirate_mark" }, { - "duration": "21.0", + "duration": "27.0", "name": "rendering.mobile/infinite_scroll_element_n_layers_0" }, { - "duration": "21.0", + "duration": "27.0", "name": "rendering.mobile/infinite_scroll_element_n_layers_75" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/infinite_scroll_element_n_layers_99" }, { - "duration": "21.0", + "duration": "27.0", "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_0" }, { - "duration": "21.0", + "duration": "27.0", "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_75" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_99" }, { - "duration": "21.0", + "duration": "27.0", "name": "rendering.mobile/infinite_scroll_root_n_layers_0" }, { - "duration": "21.0", + "duration": "27.0", "name": "rendering.mobile/infinite_scroll_root_n_layers_75" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/infinite_scroll_root_n_layers_99" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.mobile/infinite_scrolling" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.mobile/jarro_doverson" }, { - "duration": "15.0", + "duration": "20.0", "name": "rendering.mobile/jpeg_decoding_rgb_and_gpu_rasterization" }, { - "duration": "15.0", + "duration": "20.0", "name": "rendering.mobile/jpeg_decoding_yuv_and_gpu_rasterization" }, { - "duration": "24.0", + "duration": "29.0", "name": "rendering.mobile/js_full_screen_invalidation" }, { - "duration": "22.0", + "duration": "28.0", "name": "rendering.mobile/js_opacity_plus_n_layers_0" }, { - "duration": "23.0", + "duration": "28.0", "name": "rendering.mobile/js_opacity_plus_n_layers_75" }, { - "duration": "23.0", + "duration": "28.0", "name": "rendering.mobile/js_opacity_plus_n_layers_99" }, { - "duration": "23.0", + "duration": "28.0", "name": "rendering.mobile/js_paint_plus_n_layers_0" }, { - "duration": "26.0", + "duration": "28.0", "name": "rendering.mobile/js_paint_plus_n_layers_75" }, { - "duration": "24.0", + "duration": "28.0", "name": "rendering.mobile/js_paint_plus_n_layers_99" }, { - "duration": "24.0", + "duration": "28.0", "name": "rendering.mobile/js_poster_circle" }, { - "duration": "16.0", + "duration": "20.0", "name": "rendering.mobile/js_scroll_text_only" }, { - "duration": "5.0", + "duration": "9.0", "name": "rendering.mobile/kevs_3d" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/keyframed_animations" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/large_texture_uploads" }, { - "duration": "21.0", + "duration": "24.0", "name": "rendering.mobile/latimes_pathological_2018" }, { - "duration": "18.0", + "duration": "23.0", "name": "rendering.mobile/linkedin_2018" }, { - "duration": "37.0", + "duration": "42.0", "name": "rendering.mobile/linkedin_mobile_2018" }, { - "duration": "33.0", + "duration": "37.0", "name": "rendering.mobile/linkedin_mobile_pinch_2018" }, { - "duration": "30.0", + "duration": "35.0", "name": "rendering.mobile/linkedin_pathological_2018" }, { - "duration": "13.0", + "duration": "15.0", "name": "rendering.mobile/list_animation_simple" }, { - "duration": "19.0", + "duration": "21.0", "name": "rendering.mobile/list_recycle_transform" }, { - "duration": "59.0", + "duration": "62.0", "name": "rendering.mobile/lost_crypt" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/main_0fps_impl_60fps" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/main_0fps_impl_60fps_no_update" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/main_0fps_impl_60fps_no_update_jank" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/main_0fps_with_jank_impl_0fps" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/main_15fps_impl_0fps" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/main_15fps_with_jank_impl_0fps" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/main_30fps_impl_0fps" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/main_30fps_impl_60fps" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/main_60fps_impl_0fps" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/main_60fps_impl_60fps" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/main_60fps_impl_60fps_no_update" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/main_60fps_impl_60fps_no_update_jank" }, { - "duration": "37.0", + "duration": "41.0", "name": "rendering.mobile/main_60fps_with_extreme_jank_impl_0fps" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/main_60fps_with_jank_and_delay_impl_60fps" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/main_60fps_with_jank_impl_0fps" }, { - "duration": "21.0", + "duration": "29.0", "name": "rendering.mobile/main_animations_half_presented" }, { - "duration": "21.0", + "duration": "28.0", "name": "rendering.mobile/man_in_blue" }, { - "duration": "124.0", + "duration": "9.0", "name": "rendering.mobile/many_images" }, { - "duration": "23.0", + "duration": "29.0", "name": "rendering.mobile/many_planets_deep" }, { - "duration": "5.0", + "duration": "9.0", "name": "rendering.mobile/maps_perf_test" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.mobile/mask_transition_animation" }, { - "duration": "14.0", + "duration": "19.0", "name": "rendering.mobile/masonry" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/medium_texture_uploads" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/megi_dish" }, { - "duration": "57.0", + "duration": "63.0", "name": "rendering.mobile/microgame_fps" }, { - "duration": "21.0", + "duration": "26.0", "name": "rendering.mobile/microsoft_asteroid_belt" }, { - "duration": "5.0", + "duration": "9.0", "name": "rendering.mobile/microsoft_fireflies" }, { - "duration": "21.0", + "duration": "26.0", "name": "rendering.mobile/microsoft_fish_ie_tank" }, { - "duration": "21.0", + "duration": "26.0", "name": "rendering.mobile/microsoft_performance" }, { - "duration": "21.0", + "duration": "26.0", "name": "rendering.mobile/microsoft_snow" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/microsoft_speed_reading" }, { - "duration": "21.0", + "duration": "26.0", "name": "rendering.mobile/microsoft_tweet_map" }, { - "duration": "5.0", + "duration": "9.0", "name": "rendering.mobile/microsoft_video_city" }, { - "duration": "21.0", + "duration": "26.0", "name": "rendering.mobile/microsoft_worker_fountains" }, { - "duration": "21.0", + "duration": "26.0", "name": "rendering.mobile/mix_10k" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/mix_blend_mode_animation_difference" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/mix_blend_mode_animation_hue" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/mix_blend_mode_animation_propagating_isolation" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/mix_blend_mode_animation_screen" }, { - "duration": "27.0", + "duration": "31.0", "name": "rendering.mobile/mlb_mobile_2018" }, { - "duration": "14.0", + "duration": "16.0", "name": "rendering.mobile/mobile_news_sandbox" }, { - "duration": "20.0", + "duration": "27.0", "name": "rendering.mobile/motion_mark_canvas_fill_shapes" }, { - "duration": "19.0", + "duration": "25.0", "name": "rendering.mobile/motion_mark_canvas_stroke_shapes" }, { - "duration": "18.0", + "duration": "24.0", "name": "rendering.mobile/motionmark_anim_design_15" }, { - "duration": "18.0", + "duration": "24.0", "name": "rendering.mobile/motionmark_anim_focus_25" }, { - "duration": "18.0", + "duration": "24.0", "name": "rendering.mobile/motionmark_anim_images_50" }, { - "duration": "18.0", + "duration": "24.0", "name": "rendering.mobile/motionmark_anim_leaves_250" }, { - "duration": "18.0", + "duration": "24.0", "name": "rendering.mobile/motionmark_anim_multiply_175" }, { - "duration": "18.0", + "duration": "24.0", "name": "rendering.mobile/motionmark_anim_suits_125" }, { - "duration": "18.0", + "duration": "24.0", "name": "rendering.mobile/motionmark_html_composited_transforms_125" }, { - "duration": "18.0", + "duration": "24.0", "name": "rendering.mobile/motionmark_html_css_bouncing_blend_circles_25" }, { - "duration": "18.0", + "duration": "24.0", "name": "rendering.mobile/motionmark_html_css_bouncing_circles_250" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_html_css_bouncing_clipped_rects_100" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_html_css_bouncing_filter_circles_15" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_html_css_bouncing_gradient_circles_250" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_html_css_bouncing_svg_images_50" }, { - "duration": "17.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_html_css_bouncing_tagged_images_225" }, { - "duration": "17.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_html_dom_particles_svg_masks_25" }, { - "duration": "17.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_html_focus_20_15" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_html_leaves_20_50" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_svg_bouncing_circles_250" }, { - "duration": "17.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_svg_bouncing_clipped_rects_100" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_svg_bouncing_gradient_circles_200" }, { - "duration": "17.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_svg_bouncing_png_images_200" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_svg_bouncing_svg_images_50" }, { - "duration": "23.0", + "duration": "25.0", "name": "rendering.mobile/new_tilings" }, { - "duration": "19.0", + "duration": "23.0", "name": "rendering.mobile/no_op_raf" }, { - "duration": "17.0", + "duration": "19.0", "name": "rendering.mobile/no_op_scroll" }, { - "duration": "16.0", + "duration": "18.0", "name": "rendering.mobile/no_op_settimeout" }, { - "duration": "17.0", + "duration": "19.0", "name": "rendering.mobile/no_op_touch_handler" }, { - "duration": "23.0", + "duration": "25.0", "name": "rendering.mobile/nvidia_vertex_buffer_object" }, { - "duration": "24.0", + "duration": "28.0", "name": "rendering.mobile/nyc_gov_scroll_2018" }, { - "duration": "26.0", + "duration": "29.0", "name": "rendering.mobile/nytimes_mobile_2018" }, { - "duration": "24.0", + "duration": "27.0", "name": "rendering.mobile/nytimes_scroll_2018" }, { - "duration": "19.0", + "duration": "21.0", "name": "rendering.mobile/off_screen_main_60fps" }, { - "duration": "19.0", + "duration": "22.0", "name": "rendering.mobile/off_screen_main_60fps_jank" }, { - "duration": "19.0", + "duration": "22.0", "name": "rendering.mobile/overlay_background_color_css_transitions_page" }, { - "duration": "3.0", + "duration": "5.0", "name": "rendering.mobile/paper_button" }, { @@ -2992,19 +2992,19 @@ "name": "rendering.mobile/paper_calculator" }, { - "duration": "3.0", + "duration": "5.0", "name": "rendering.mobile/paper_calculator_hit_test" }, { - "duration": "3.0", + "duration": "5.0", "name": "rendering.mobile/paper_checkbox" }, { - "duration": "3.0", + "duration": "5.0", "name": "rendering.mobile/paper_fab" }, { - "duration": "3.0", + "duration": "5.0", "name": "rendering.mobile/paper_icon_button" }, { @@ -3012,35 +3012,35 @@ "name": "rendering.mobile/paper_shadow" }, { - "duration": "3.0", + "duration": "5.0", "name": "rendering.mobile/paper_tabs" }, { - "duration": "3.0", + "duration": "5.0", "name": "rendering.mobile/paper_toggle_button" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.mobile/parallax_effect" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/particles" }, { - "duration": "16.0", + "duration": "18.0", "name": "rendering.mobile/pbs_pathological_2018" }, { - "duration": "13.0", + "duration": "15.0", "name": "rendering.mobile/physical_simulation" }, { - "duration": "26.0", + "duration": "24.0", "name": "rendering.mobile/pinterest_2018" }, { - "duration": "21.0", + "duration": "12.0", "name": "rendering.mobile/pinterest_mobile_2018" }, { @@ -3048,7 +3048,7 @@ "name": "rendering.mobile/polymer_topeka" }, { - "duration": "26.0", + "duration": "23.0", "name": "rendering.mobile/put_and_create_imagebitmap_from_imagedata" }, { @@ -3056,7 +3056,7 @@ "name": "rendering.mobile/put_get_image_data" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.mobile/put_image_data.html" }, { @@ -3076,31 +3076,31 @@ "name": "rendering.mobile/raf_touch_animation" }, { - "duration": "23.0", + "duration": "20.0", "name": "rendering.mobile/recode_pathological_2018" }, { - "duration": "21.0", + "duration": "20.0", "name": "rendering.mobile/reddit_mobile_2018" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/runway_2019" }, { - "duration": "26.0", + "duration": "28.0", "name": "rendering.mobile/san_angeles" }, { - "duration": "12.0", + "duration": "16.0", "name": "rendering.mobile/second_batch_js_heavy" }, { - "duration": "12.0", + "duration": "16.0", "name": "rendering.mobile/second_batch_js_light" }, { - "duration": "12.0", + "duration": "16.0", "name": "rendering.mobile/second_batch_js_medium" }, { @@ -3108,375 +3108,375 @@ "name": "rendering.mobile/sfgate_mobile_2018" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/sheets_render.html" }, { - "duration": "24.0", + "duration": "27.0", "name": "rendering.mobile/silk_finance" }, { - "duration": "19.0", + "duration": "21.0", "name": "rendering.mobile/simple_text_page" }, { - "duration": "15.0", + "duration": "20.0", "name": "rendering.mobile/simple_touch_drag" }, { - "duration": "64.0", + "duration": "63.0", "name": "rendering.mobile/skelebuddies_wasm_2020" }, { - "duration": "18.0", + "duration": "28.0", "name": "rendering.mobile/slashdot_mobile_2018" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.mobile/slide_drawer" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/small_texture_uploads" }, { - "duration": "5.0", + "duration": "9.0", "name": "rendering.mobile/smash_cat" }, { - "duration": "25.0", + "duration": "28.0", "name": "rendering.mobile/spielzeugz" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/static_canvas_to_hw_accelerated_canvas.html" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/static_webgl_to_hw_accelerated_canvas.html" }, { - "duration": "14.0", + "duration": "16.0", "name": "rendering.mobile/sticky_using_webkit" }, { - "duration": "20.0", + "duration": "22.0", "name": "rendering.mobile/stress_hidey_bars" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/stroke_shapes" }, { - "duration": "27.0", + "duration": "26.0", "name": "rendering.mobile/svg_icon_raster" }, { - "duration": "12.0", + "duration": "14.0", "name": "rendering.mobile/swipe_action" }, { - "duration": "14.0", + "duration": "16.0", "name": "rendering.mobile/swipe_to_dismiss" }, { - "duration": "18.0", + "duration": "25.0", "name": "rendering.mobile/sync_scroll_offset" }, { - "duration": "22.0", + "duration": "31.0", "name": "rendering.mobile/techcrunch_2018" }, { - "duration": "21.0", + "duration": "33.0", "name": "rendering.mobile/techcrunch_mobile_2018" }, { - "duration": "32.0", + "duration": "35.0", "name": "rendering.mobile/text_05000_pixels_per_second" }, { - "duration": "32.0", + "duration": "35.0", "name": "rendering.mobile/text_10000_pixels_per_second" }, { - "duration": "30.0", + "duration": "34.0", "name": "rendering.mobile/text_20000_pixels_per_second" }, { - "duration": "27.0", + "duration": "31.0", "name": "rendering.mobile/text_40000_pixels_per_second" }, { - "duration": "27.0", + "duration": "31.0", "name": "rendering.mobile/text_60000_pixels_per_second" }, { - "duration": "28.0", + "duration": "31.0", "name": "rendering.mobile/text_75000_pixels_per_second" }, { - "duration": "27.0", + "duration": "31.0", "name": "rendering.mobile/text_90000_pixels_per_second" }, { - "duration": "33.0", + "duration": "37.0", "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second" }, { - "duration": "33.0", + "duration": "37.0", "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second" }, { - "duration": "28.0", + "duration": "32.0", "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second" }, { - "duration": "28.0", + "duration": "31.0", "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second" }, { - "duration": "28.0", + "duration": "31.0", "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second" }, { - "duration": "27.0", + "duration": "31.0", "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second" }, { - "duration": "27.0", + "duration": "31.0", "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second" }, { - "duration": "31.0", + "duration": "35.0", "name": "rendering.mobile/text_hover_05000_pixels_per_second" }, { - "duration": "32.0", + "duration": "35.0", "name": "rendering.mobile/text_hover_10000_pixels_per_second" }, { - "duration": "31.0", + "duration": "34.0", "name": "rendering.mobile/text_hover_20000_pixels_per_second" }, { - "duration": "27.0", + "duration": "31.0", "name": "rendering.mobile/text_hover_40000_pixels_per_second" }, { - "duration": "27.0", + "duration": "31.0", "name": "rendering.mobile/text_hover_60000_pixels_per_second" }, { - "duration": "28.0", + "duration": "31.0", "name": "rendering.mobile/text_hover_75000_pixels_per_second" }, { - "duration": "28.0", + "duration": "31.0", "name": "rendering.mobile/text_hover_90000_pixels_per_second" }, { - "duration": "22.0", + "duration": "26.0", "name": "rendering.mobile/theverge_article_mobile_2018" }, { - "duration": "30.0", + "duration": "25.0", "name": "rendering.mobile/theverge_mobile_2018" }, { - "duration": "28.0", + "duration": "30.0", "name": "rendering.mobile/throughput_scrolling_active_handler" }, { - "duration": "26.0", + "duration": "30.0", "name": "rendering.mobile/throughput_scrolling_composited" }, { - "duration": "28.0", + "duration": "33.0", "name": "rendering.mobile/throughput_scrolling_passive_handler" }, { - "duration": "26.0", + "duration": "30.0", "name": "rendering.mobile/throughput_scrolling_uncomposited" }, { - "duration": "61.0", + "duration": "65.0", "name": "rendering.mobile/tiny_racing_v3_wasm_2020" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/toBlob_duration.html" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/toBlob_duration_jpeg.html" }, { - "duration": "23.0", + "duration": "28.0", "name": "rendering.mobile/toBlob_small_canvas_in_worker.html" }, { - "duration": "19.0", + "duration": "22.0", "name": "rendering.mobile/toggle_drawer" }, { - "duration": "19.0", + "duration": "23.0", "name": "rendering.mobile/touch_handler_scrolling" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/transfer_from_imageBitmap.html" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/transform_transitions" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/transform_transitions_js_block" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/twitch_2018" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/twitch_mobile_pinch_2018" }, { - "duration": "21.0", + "duration": "26.0", "name": "rendering.mobile/twitter_2018" }, { - "duration": "15.0", + "duration": "19.0", "name": "rendering.mobile/twitter_mobile_2018" }, { - "duration": "19.0", + "duration": "24.0", "name": "rendering.mobile/update_history_state" }, { - "duration": "16.0", + "duration": "20.0", "name": "rendering.mobile/usatoday_mobile_2018" }, { - "duration": "16.0", + "duration": "18.0", "name": "rendering.mobile/vertical_expansion" }, { - "duration": "22.0", + "duration": "28.0", "name": "rendering.mobile/video_to_hw_accelerated_canvas" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/video_to_sub_texture" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/video_to_sub_texture_flip_and_premultiply" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/video_to_sub_texture_flip_y" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/video_to_sub_texture_premultiply" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/video_to_texture" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/web_animation_value_type_color" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/web_animation_value_type_length_3d" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/web_animation_value_type_length_complex" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/web_animation_value_type_length_simple" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/web_animation_value_type_path" }, { - "duration": "24.0", + "duration": "27.0", "name": "rendering.mobile/web_animation_value_type_shadow" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/web_animation_value_type_transform_complex" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/web_animation_value_type_transform_simple" }, { - "duration": "25.0", + "duration": "30.0", "name": "rendering.mobile/web_animations_many_keyframes" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/web_animations_set_current_time" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/web_animations_simultaneous" }, { - "duration": "23.0", + "duration": "28.0", "name": "rendering.mobile/web_animations_staggered_chaining" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/web_animations_staggered_infinite_iterations" }, { - "duration": "23.0", + "duration": "28.0", "name": "rendering.mobile/web_animations_staggered_triggering_page" }, { - "duration": "6.0", + "duration": "11.0", "name": "rendering.mobile/webgl_to_texture" }, { - "duration": "17.0", + "duration": "21.0", "name": "rendering.mobile/webp_decoding_rgb_and_gpu_rasterization" }, { - "duration": "17.0", + "duration": "21.0", "name": "rendering.mobile/webp_decoding_yuv_and_gpu_rasterization" }, { - "duration": "22.0", + "duration": "27.0", "name": "rendering.mobile/wikipedia_2018" }, { - "duration": "21.0", + "duration": "27.0", "name": "rendering.mobile/wikipedia_delayed_scroll_start_2018" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/wikipedia_mobile_2018" }, { - "duration": "21.0", + "duration": "26.0", "name": "rendering.mobile/wordpress_2018" }, { - "duration": "21.0", + "duration": "25.0", "name": "rendering.mobile/wordpress_mobile_2018" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/worldjournal_mobile_2018" }, { @@ -3484,23 +3484,23 @@ "name": "rendering.mobile/wow_wiki_pathological_2018" }, { - "duration": "33.0", + "duration": "38.0", "name": "rendering.mobile/wowwiki_mobile_2018" }, { - "duration": "25.0", + "duration": "28.0", "name": "rendering.mobile/wsj_mobile_2018" }, { - "duration": "15.0", + "duration": "22.0", "name": "rendering.mobile/yahoo_answers_2018" }, { - "duration": "6.0", + "duration": "7.0", "name": "rendering.mobile/yahoo_answers_mobile_2018" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.mobile/yahoo_news_2018" }, { @@ -3512,27 +3512,27 @@ "name": "rendering.mobile/yahoo_sports_2018" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.mobile/yahoo_sports_pathological_2018" }, { - "duration": "6.0", + "duration": "7.0", "name": "rendering.mobile/youtube_2018" }, { - "duration": "14.0", + "duration": "15.0", "name": "rendering.mobile/youtube_mobile_2018" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.mobile/zdnet_pathological_2018" }, { - "duration": "14.0", + "duration": "16.0", "name": "rendering.mobile/zoom_in_animation" }, { - "duration": "32.0", + "duration": "34.0", "name": "speedometer-future/http://browserbench.org/Speedometer/" }, { @@ -3540,43 +3540,47 @@ "name": "speedometer/http://browserbench.org/Speedometer/" }, { - "duration": "56.0", + "duration": "57.0", "name": "speedometer2-future/Speedometer2" }, { + "duration": "56.0", + "name": "speedometer2-pcscan/Speedometer2" + }, + { "duration": "55.0", "name": "speedometer2/Speedometer2" }, { - "duration": "22.0", + "duration": "21.0", "name": "system_health.common_mobile/background:media:imgur:2019" }, { - "duration": "43.0", + "duration": "41.0", "name": "system_health.common_mobile/background:news:nytimes:2019" }, { - "duration": "22.0", + "duration": "21.0", "name": "system_health.common_mobile/background:search:google:2019" }, { - "duration": "21.0", + "duration": "20.0", "name": "system_health.common_mobile/background:social:facebook:2019" }, { - "duration": "5.0", + "duration": "4.0", "name": "system_health.common_mobile/background:tools:gmail:2019" }, { - "duration": "8.0", + "duration": "12.0", "name": "system_health.common_mobile/browse:chrome:newtab:2019" }, { - "duration": "4.0", + "duration": "8.0", "name": "system_health.common_mobile/browse:chrome:omnibox:2019" }, { - "duration": "70.0", + "duration": "69.0", "name": "system_health.common_mobile/browse:media:facebook_photos:2019" }, { @@ -3584,15 +3588,15 @@ "name": "system_health.common_mobile/browse:media:flickr_infinite_scroll:2019" }, { - "duration": "40.0", + "duration": "39.0", "name": "system_health.common_mobile/browse:media:googleplaystore:2019" }, { - "duration": "67.0", + "duration": "70.0", "name": "system_health.common_mobile/browse:media:imgur:2019" }, { - "duration": "53.0", + "duration": "57.0", "name": "system_health.common_mobile/browse:media:youtube:2019" }, { @@ -3600,47 +3604,47 @@ "name": "system_health.common_mobile/browse:news:cnn:2020" }, { - "duration": "5.0", + "duration": "4.0", "name": "system_health.common_mobile/browse:news:cricbuzz:2019" }, { - "duration": "40.0", + "duration": "39.0", "name": "system_health.common_mobile/browse:news:globo:2019" }, { - "duration": "59.0", + "duration": "61.0", "name": "system_health.common_mobile/browse:news:nytimes:2019" }, { - "duration": "34.0", + "duration": "38.0", "name": "system_health.common_mobile/browse:news:qq:2019" }, { - "duration": "49.0", + "duration": "53.0", "name": "system_health.common_mobile/browse:news:reddit:2019" }, { - "duration": "48.0", + "duration": "47.0", "name": "system_health.common_mobile/browse:news:toi:2019" }, { - "duration": "53.0", + "duration": "57.0", "name": "system_health.common_mobile/browse:news:washingtonpost:2019" }, { - "duration": "23.0", + "duration": "22.0", "name": "system_health.common_mobile/browse:search:amp:2018" }, { - "duration": "25.0", + "duration": "24.0", "name": "system_health.common_mobile/browse:search:amp:sxg:2019" }, { - "duration": "50.0", + "duration": "49.0", "name": "system_health.common_mobile/browse:shopping:amazon:2019" }, { - "duration": "50.0", + "duration": "47.0", "name": "system_health.common_mobile/browse:shopping:avito:2019" }, { @@ -3648,203 +3652,207 @@ "name": "system_health.common_mobile/browse:shopping:flipkart:2019" }, { - "duration": "5.0", + "duration": "4.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": "69.0", + "duration": "68.0", "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "5.0", + "duration": "8.0", "name": "system_health.common_mobile/browse:social:instagram:2019" }, { - "duration": "4.0", + "duration": "8.0", "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "61.0", + "duration": "65.0", "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "72.0", + "duration": "78.0", "name": "system_health.common_mobile/browse:social:twitter:2019" }, { - "duration": "65.0", + "duration": "64.0", "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "41.0", + "duration": "40.0", "name": "system_health.common_mobile/browse:tools:maps:2019" }, { - "duration": "21.0", + "duration": "20.0", "name": "system_health.common_mobile/load:chrome:blank" }, { - "duration": "20.0", + "duration": "23.0", "name": "system_health.common_mobile/load:games:bubbles:2020" }, { - "duration": "21.0", + "duration": "26.0", "name": "system_health.common_mobile/load:games:lazors" }, { - "duration": "24.0", + "duration": "28.0", "name": "system_health.common_mobile/load:games:spychase:2018" }, { - "duration": "22.0", + "duration": "27.0", "name": "system_health.common_mobile/load:media:dailymotion:2019" }, { - "duration": "20.0", + "duration": "24.0", "name": "system_health.common_mobile/load:media:facebook_feed:mobile:2020" }, { - "duration": "19.0", + "duration": "23.0", "name": "system_health.common_mobile/load:media:facebook_photos:2019" }, { - "duration": "20.0", + "duration": "24.0", "name": "system_health.common_mobile/load:media:facebook_photos:mobile:2020" }, { - "duration": "21.0", + "duration": "26.0", "name": "system_health.common_mobile/load:media:flickr:2018" }, { - "duration": "20.0", + "duration": "24.0", "name": "system_health.common_mobile/load:media:google_images:2018" }, { - "duration": "24.0", + "duration": "32.0", "name": "system_health.common_mobile/load:media:imgur:2018" }, { - "duration": "4.0", + "duration": "8.0", "name": "system_health.common_mobile/load:media:soundcloud:2018" }, { - "duration": "20.0", + "duration": "24.0", "name": "system_health.common_mobile/load:media:youtube:2018" }, { - "duration": "21.0", + "duration": "24.0", "name": "system_health.common_mobile/load:news:bbc:2019" }, { - "duration": "20.0", - "name": "system_health.common_mobile/load:news:irctc:2019" + "duration": "33.0", + "name": "system_health.common_mobile/load:news:cnn:2020" }, { "duration": "25.0", + "name": "system_health.common_mobile/load:news:irctc:2019" + }, + { + "duration": "29.0", "name": "system_health.common_mobile/load:news:nytimes:2019" }, { - "duration": "20.0", + "duration": "24.0", "name": "system_health.common_mobile/load:news:qq:2019" }, { - "duration": "20.0", + "duration": "24.0", "name": "system_health.common_mobile/load:news:reddit:2019" }, { - "duration": "20.0", + "duration": "26.0", "name": "system_health.common_mobile/load:news:washingtonpost:2019" }, { - "duration": "19.0", + "duration": "24.0", "name": "system_health.common_mobile/load:news:wikipedia:2018" }, { - "duration": "21.0", + "duration": "25.0", "name": "system_health.common_mobile/load:search:amazon:2019" }, { - "duration": "22.0", + "duration": "25.0", "name": "system_health.common_mobile/load:search:baidu:2018" }, { - "duration": "20.0", + "duration": "24.0", "name": "system_health.common_mobile/load:search:ebay:2018" }, { - "duration": "20.0", + "duration": "24.0", "name": "system_health.common_mobile/load:search:google:2018" }, { - "duration": "20.0", + "duration": "24.0", "name": "system_health.common_mobile/load:search:taobao:2019" }, { - "duration": "19.0", + "duration": "23.0", "name": "system_health.common_mobile/load:search:yahoo:2018" }, { - "duration": "20.0", + "duration": "24.0", "name": "system_health.common_mobile/load:search:yandex:2018" }, { - "duration": "20.0", + "duration": "24.0", "name": "system_health.common_mobile/load:social:instagram:2019" }, { - "duration": "21.0", + "duration": "25.0", "name": "system_health.common_mobile/load:social:pinterest:2019" }, { - "duration": "20.0", + "duration": "24.0", "name": "system_health.common_mobile/load:social:twitter:2019" }, { - "duration": "20.0", + "duration": "23.0", "name": "system_health.common_mobile/load:tools:docs:2019" }, { - "duration": "20.0", + "duration": "24.0", "name": "system_health.common_mobile/load:tools:drive:2019" }, { - "duration": "33.0", + "duration": "36.0", "name": "system_health.common_mobile/load:tools:dropbox:2019" }, { - "duration": "28.0", + "duration": "32.0", "name": "system_health.common_mobile/load:tools:gmail:2019" }, { - "duration": "20.0", + "duration": "27.0", "name": "system_health.common_mobile/load:tools:stackoverflow:2018" }, { - "duration": "20.0", + "duration": "24.0", "name": "system_health.common_mobile/load:tools:weather:2019" }, { - "duration": "4.0", + "duration": "8.0", "name": "system_health.common_mobile/long_running:tools:gmail-background" }, { - "duration": "4.0", + "duration": "8.0", "name": "system_health.common_mobile/long_running:tools:gmail-foreground" }, { - "duration": "28.0", + "duration": "26.0", "name": "system_health.memory_mobile/background:media:imgur:2019" }, { - "duration": "43.0", + "duration": "45.0", "name": "system_health.memory_mobile/background:news:nytimes:2019" }, { - "duration": "26.0", + "duration": "27.0", "name": "system_health.memory_mobile/background:search:google:2019" }, { @@ -3856,43 +3864,43 @@ "name": "system_health.memory_mobile/background:tools:gmail:2019" }, { - "duration": "9.0", + "duration": "10.0", "name": "system_health.memory_mobile/browse:chrome:newtab:2019" }, { - "duration": "3.0", + "duration": "4.0", "name": "system_health.memory_mobile/browse:chrome:omnibox:2019" }, { - "duration": "72.0", + "duration": "74.0", "name": "system_health.memory_mobile/browse:media:facebook_photos:2019" }, { - "duration": "47.0", + "duration": "48.0", "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll:2019" }, { - "duration": "42.0", + "duration": "44.0", "name": "system_health.memory_mobile/browse:media:googleplaystore:2019" }, { - "duration": "67.0", + "duration": "70.0", "name": "system_health.memory_mobile/browse:media:imgur:2019" }, { - "duration": "56.0", + "duration": "55.0", "name": "system_health.memory_mobile/browse:media:youtube:2019" }, { - "duration": "51.0", + "duration": "54.0", "name": "system_health.memory_mobile/browse:news:cnn:2020" }, { - "duration": "2.0", + "duration": "4.0", "name": "system_health.memory_mobile/browse:news:cricbuzz:2019" }, { - "duration": "41.0", + "duration": "43.0", "name": "system_health.memory_mobile/browse:news:globo:2019" }, { @@ -3900,415 +3908,443 @@ "name": "system_health.memory_mobile/browse:news:nytimes:2019" }, { - "duration": "37.0", + "duration": "38.0", "name": "system_health.memory_mobile/browse:news:qq:2019" }, { - "duration": "52.0", + "duration": "54.0", "name": "system_health.memory_mobile/browse:news:reddit:2019" }, { - "duration": "49.0", + "duration": "51.0", "name": "system_health.memory_mobile/browse:news:toi:2019" }, { - "duration": "57.0", + "duration": "55.0", "name": "system_health.memory_mobile/browse:news:washingtonpost:2019" }, { - "duration": "25.0", + "duration": "26.0", "name": "system_health.memory_mobile/browse:search:amp:2018" }, { - "duration": "27.0", + "duration": "29.0", "name": "system_health.memory_mobile/browse:search:amp:sxg:2019" }, { - "duration": "51.0", + "duration": "53.0", "name": "system_health.memory_mobile/browse:shopping:amazon:2019" }, { - "duration": "50.0", + "duration": "53.0", "name": "system_health.memory_mobile/browse:shopping:avito:2019" }, { - "duration": "54.0", + "duration": "57.0", "name": "system_health.memory_mobile/browse:shopping:flipkart:2019" }, { - "duration": "2.0", + "duration": "4.0", "name": "system_health.memory_mobile/browse:shopping:lazada:2019" }, { - "duration": "2.0", + "duration": "4.0", "name": "system_health.memory_mobile/browse:social:facebook:2019" }, { - "duration": "71.0", + "duration": "72.0", "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "78.0", + "duration": "80.0", "name": "system_health.memory_mobile/browse:social:instagram:2019" }, { - "duration": "3.0", + "duration": "4.0", "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "63.0", + "duration": "64.0", "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "77.0", + "duration": "79.0", "name": "system_health.memory_mobile/browse:social:twitter:2019" }, { - "duration": "2.0", + "duration": "4.0", "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "43.0", + "duration": "45.0", "name": "system_health.memory_mobile/browse:tools:maps:2019" }, { - "duration": "22.0", + "duration": "24.0", "name": "system_health.memory_mobile/load:chrome:blank" }, { - "duration": "23.0", + "duration": "24.0", "name": "system_health.memory_mobile/load:games:bubbles:2020" }, { - "duration": "23.0", + "duration": "25.0", "name": "system_health.memory_mobile/load:games:lazors" }, { - "duration": "27.0", + "duration": "29.0", "name": "system_health.memory_mobile/load:games:spychase:2018" }, { - "duration": "24.0", + "duration": "27.0", "name": "system_health.memory_mobile/load:media:dailymotion:2019" }, { - "duration": "24.0", + "duration": "25.0", "name": "system_health.memory_mobile/load:media:facebook_feed:mobile:2020" }, { - "duration": "23.0", + "duration": "24.0", "name": "system_health.memory_mobile/load:media:facebook_photos:2019" }, { - "duration": "24.0", + "duration": "25.0", "name": "system_health.memory_mobile/load:media:facebook_photos:mobile:2020" }, { - "duration": "25.0", + "duration": "27.0", "name": "system_health.memory_mobile/load:media:flickr:2018" }, { - "duration": "23.0", + "duration": "25.0", "name": "system_health.memory_mobile/load:media:google_images:2018" }, { - "duration": "26.0", + "duration": "29.0", "name": "system_health.memory_mobile/load:media:imgur:2018" }, { - "duration": "3.0", + "duration": "5.0", "name": "system_health.memory_mobile/load:media:soundcloud:2018" }, { - "duration": "22.0", + "duration": "24.0", "name": "system_health.memory_mobile/load:media:youtube:2018" }, { - "duration": "24.0", + "duration": "26.0", "name": "system_health.memory_mobile/load:news:bbc:2019" }, { - "duration": "24.0", + "duration": "32.0", + "name": "system_health.memory_mobile/load:news:cnn:2020" + }, + { + "duration": "26.0", "name": "system_health.memory_mobile/load:news:irctc:2019" }, { - "duration": "28.0", + "duration": "30.0", "name": "system_health.memory_mobile/load:news:nytimes:2019" }, { - "duration": "23.0", + "duration": "26.0", "name": "system_health.memory_mobile/load:news:qq:2019" }, { - "duration": "23.0", + "duration": "25.0", "name": "system_health.memory_mobile/load:news:reddit:2019" }, { - "duration": "23.0", + "duration": "24.0", "name": "system_health.memory_mobile/load:news:washingtonpost:2019" }, { - "duration": "22.0", + "duration": "24.0", "name": "system_health.memory_mobile/load:news:wikipedia:2018" }, { - "duration": "24.0", + "duration": "26.0", "name": "system_health.memory_mobile/load:search:amazon:2019" }, { - "duration": "26.0", + "duration": "27.0", "name": "system_health.memory_mobile/load:search:baidu:2018" }, { - "duration": "23.0", + "duration": "25.0", "name": "system_health.memory_mobile/load:search:ebay:2018" }, { - "duration": "23.0", + "duration": "25.0", "name": "system_health.memory_mobile/load:search:google:2018" }, { - "duration": "23.0", + "duration": "25.0", "name": "system_health.memory_mobile/load:search:taobao:2019" }, { - "duration": "22.0", + "duration": "23.0", "name": "system_health.memory_mobile/load:search:yahoo:2018" }, { - "duration": "23.0", + "duration": "24.0", "name": "system_health.memory_mobile/load:search:yandex:2018" }, { - "duration": "23.0", + "duration": "25.0", "name": "system_health.memory_mobile/load:social:instagram:2019" }, { - "duration": "24.0", + "duration": "26.0", "name": "system_health.memory_mobile/load:social:pinterest:2019" }, { - "duration": "23.0", + "duration": "24.0", "name": "system_health.memory_mobile/load:social:twitter:2019" }, { - "duration": "23.0", + "duration": "24.0", "name": "system_health.memory_mobile/load:tools:docs:2019" }, { - "duration": "23.0", + "duration": "25.0", "name": "system_health.memory_mobile/load:tools:drive:2019" }, { - "duration": "35.0", + "duration": "37.0", "name": "system_health.memory_mobile/load:tools:dropbox:2019" }, { - "duration": "30.0", + "duration": "33.0", "name": "system_health.memory_mobile/load:tools:gmail:2019" }, { - "duration": "23.0", + "duration": "26.0", "name": "system_health.memory_mobile/load:tools:stackoverflow:2018" }, { - "duration": "23.0", + "duration": "24.0", "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": "23.0", + "duration": "28.0", "name": "system_health.webview_startup/load:chrome:blank" }, { - "duration": "14.0", + "duration": "11.0", "name": "tracing.tracing_with_background_memory_infra/Facebook" }, { - "duration": "13.0", + "duration": "10.0", "name": "tracing.tracing_with_background_memory_infra/Wikipedia" }, { - "duration": "11.0", + "duration": "9.0", "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com" }, { - "duration": "11.0", + "duration": "9.0", "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/" }, { - "duration": "11.0", + "duration": "9.0", "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/" }, { - "duration": "12.0", + "duration": "9.0", "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/" }, { - "duration": "13.0", + "duration": "11.0", "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com" }, { - "duration": "14.0", + "duration": "12.0", "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama" }, { - "duration": "14.0", + "duration": "12.0", "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/" }, { - "duration": "12.0", + "duration": "22.0", "name": "v8.browsing_mobile/browse:chrome:newtab:2019" }, { - "duration": "7.0", + "duration": "18.0", "name": "v8.browsing_mobile/browse:chrome:omnibox:2019" }, { - "duration": "75.0", + "duration": "86.0", "name": "v8.browsing_mobile/browse:media:facebook_photos:2019" }, { - "duration": "51.0", + "duration": "62.0", "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll:2019" }, { - "duration": "44.0", + "duration": "54.0", "name": "v8.browsing_mobile/browse:media:googleplaystore:2019" }, { - "duration": "7.0", + "duration": "18.0", "name": "v8.browsing_mobile/browse:media:imgur:2019" }, { - "duration": "58.0", + "duration": "68.0", "name": "v8.browsing_mobile/browse:media:youtube:2019" }, { - "duration": "66.0", + "duration": "72.0", "name": "v8.browsing_mobile/browse:news:cnn:2020" }, { - "duration": "10.0", + "duration": "11.0", "name": "v8.browsing_mobile/browse:news:cricbuzz:2019" }, { - "duration": "48.0", + "duration": "56.0", "name": "v8.browsing_mobile/browse:news:globo:2019" }, { - "duration": "80.0", + "duration": "87.0", "name": "v8.browsing_mobile/browse:news:nytimes:2019" }, { - "duration": "39.0", + "duration": "50.0", "name": "v8.browsing_mobile/browse:news:qq:2019" }, { - "duration": "57.0", + "duration": "68.0", "name": "v8.browsing_mobile/browse:news:reddit:2019" }, { - "duration": "60.0", + "duration": "68.0", "name": "v8.browsing_mobile/browse:news:toi:2019" }, { - "duration": "63.0", + "duration": "73.0", "name": "v8.browsing_mobile/browse:news:washingtonpost:2019" }, { - "duration": "26.0", + "duration": "37.0", "name": "v8.browsing_mobile/browse:search:amp:2018" }, { - "duration": "28.0", + "duration": "38.0", "name": "v8.browsing_mobile/browse:search:amp:sxg:2019" }, { - "duration": "57.0", + "duration": "62.0", "name": "v8.browsing_mobile/browse:shopping:amazon:2019" }, { - "duration": "57.0", + "duration": "58.0", "name": "v8.browsing_mobile/browse:shopping:avito:2019" }, { - "duration": "64.0", + "duration": "66.0", "name": "v8.browsing_mobile/browse:shopping:flipkart:2019" }, { - "duration": "10.0", + "duration": "18.0", "name": "v8.browsing_mobile/browse:shopping:lazada:2019" }, { - "duration": "7.0", + "duration": "18.0", "name": "v8.browsing_mobile/browse:social:facebook:2019" }, { - "duration": "76.0", + "duration": "87.0", "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "7.0", + "duration": "18.0", "name": "v8.browsing_mobile/browse:social:instagram:2019" }, { - "duration": "7.0", + "duration": "18.0", "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "67.0", + "duration": "77.0", "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "71.0", + "duration": "83.0", "name": "v8.browsing_mobile/browse:social:twitter:2019" }, { - "duration": "73.0", + "duration": "80.0", "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "45.0", + "duration": "56.0", "name": "v8.browsing_mobile/browse:tools:maps:2019" }, { - "duration": "19.0", + "duration": "17.0", "name": "webrtc/10s_datachannel_transfer" }, { - "duration": "19.0", + "duration": "17.0", "name": "webrtc/canvas_capture_peer_connection" }, { - "duration": "29.0", + "duration": "27.0", "name": "webrtc/codec_constraints_h264" }, { - "duration": "29.0", + "duration": "27.0", "name": "webrtc/codec_constraints_vp8" }, { - "duration": "29.0", + "duration": "27.0", "name": "webrtc/codec_constraints_vp9" }, { - "duration": "19.0", + "duration": "17.0", "name": "webrtc/hd_local_stream_10s" }, { - "duration": "30.0", + "duration": "17.0", + "name": "webrtc/insertable_streams_video_processing_camera_canvas2d_video" + }, + { + "duration": "17.0", + "name": "webrtc/insertable_streams_video_processing_camera_drop_video" + }, + { + "duration": "17.0", + "name": "webrtc/insertable_streams_video_processing_camera_webgl_pc" + }, + { + "duration": "17.0", + "name": "webrtc/insertable_streams_video_processing_camera_webgl_video" + }, + { + "duration": "17.0", + "name": "webrtc/insertable_streams_video_processing_pc_webgl_video" + }, + { + "duration": "17.0", + "name": "webrtc/insertable_streams_video_processing_video_webgl_video" + }, + { + "duration": "28.0", "name": "webrtc/multiple_peerconnections" }, { - "duration": "35.0", + "duration": "33.0", "name": "webrtc/pause_play_peerconnections" } ] \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/android-pixel4a_power-perf_timing.json b/tools/perf/core/shard_maps/timing_data/android-pixel4a_power-perf_timing.json index cd2f263..b8821d9d 100644 --- a/tools/perf/core/shard_maps/timing_data/android-pixel4a_power-perf_timing.json +++ b/tools/perf/core/shard_maps/timing_data/android-pixel4a_power-perf_timing.json
@@ -1,18 +1,18 @@ [ { - "duration": "46.0", + "duration": "75.0", "name": "power.mobile/browse:media:flickr_infinite_scroll:2019" }, { - "duration": "78.0", + "duration": "27.0", "name": "power.mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "62.0", + "duration": "112.0", "name": "power.mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "67.0", + "duration": "104.0", "name": "power.mobile/browse:tech:discourse_infinite_scroll:2018" } ] \ 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 7d5bb91..1ea365e8 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,66 +1,66 @@ [ { - "duration": "29.0", + "duration": "30.0", "name": "loading.mobile/Dramaq" }, { - "duration": "26.0", + "duration": "27.0", "name": "loading.mobile/Facebook" }, { - "duration": "21.0", + "duration": "22.0", "name": "loading.mobile/FranceTVInfo" }, { - "duration": "27.0", + "duration": "28.0", "name": "loading.mobile/GoogleIndia" }, { - "duration": "23.0", + "duration": "25.0", "name": "loading.mobile/Hongkiat" }, { - "duration": "24.0", + "duration": "25.0", "name": "loading.mobile/LocalMoxie" }, { - "duration": "161.0", + "duration": "168.0", "name": "startup.mobile/cct:coldish:bbc" }, { - "duration": "185.0", + "duration": "191.0", "name": "startup.mobile/intent:coldish:bbc" }, { - "duration": "150.0", + "duration": "138.0", "name": "startup.mobile/intent:warm:bbc" }, { - "duration": "14.0", + "duration": "0.0", "name": "startup.mobile/maps_pwa:with_http_cache" }, { - "duration": "34.0", + "duration": "38.0", "name": "system_health.common_mobile/background:social:facebook:2019" }, { - "duration": "49.0", + "duration": "54.0", "name": "system_health.common_mobile/background:tools:gmail:2019" }, { - "duration": "142.0", + "duration": "139.0", "name": "system_health.common_mobile/browse:news:cnn:2020" }, { - "duration": "108.0", + "duration": "112.0", "name": "system_health.common_mobile/browse:news:reddit:2019" }, { - "duration": "6.0", + "duration": "8.0", "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "116.0", + "duration": "105.0", "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018" }, { @@ -68,19 +68,23 @@ "name": "system_health.common_mobile/browse:social:twitter:2019" }, { - "duration": "66.0", + "duration": "61.0", "name": "system_health.common_mobile/browse:tools:maps:2019" }, { - "duration": "31.0", + "duration": "35.0", "name": "system_health.common_mobile/load:media:youtube:2018" }, { - "duration": "48.0", + "duration": "46.0", + "name": "system_health.common_mobile/load:news:cnn:2020" + }, + { + "duration": "50.0", "name": "system_health.common_mobile/load:tools:gmail:2019" }, { - "duration": "30.0", + "duration": "35.0", "name": "system_health.common_mobile/load:tools:weather:2019" }, {
diff --git a/tools/perf/core/shard_maps/timing_data/android_nexus5x_webview_perf_timing.json b/tools/perf/core/shard_maps/timing_data/android_nexus5x_webview_perf_timing.json index e2101a2a..c2b9874 100644 --- a/tools/perf/core/shard_maps/timing_data/android_nexus5x_webview_perf_timing.json +++ b/tools/perf/core/shard_maps/timing_data/android_nexus5x_webview_perf_timing.json
@@ -1,34 +1,34 @@ [ { - "duration": "3.0", + "duration": "2.0", "name": "blink_perf.accessibility/build-table.html" }, { - "duration": "31.0", + "duration": "24.0", "name": "blink_perf.accessibility/focus-links.html" }, { - "duration": "41.0", + "duration": "57.0", "name": "blink_perf.accessibility/line-breaks.html" }, { - "duration": "35.0", + "duration": "33.0", "name": "blink_perf.accessibility/many-text-changes-deep-block-subtree.html" }, { - "duration": "35.0", + "duration": "33.0", "name": "blink_perf.accessibility/many-text-changes-deep-hidden-subtree.html" }, { - "duration": "47.0", + "duration": "38.0", "name": "blink_perf.accessibility/many-text-changes-deep-inline-subtree.html" }, { - "duration": "36.0", + "duration": "33.0", "name": "blink_perf.accessibility/many-text-changes-small-wait-between.html" }, { - "duration": "19.0", + "duration": "18.0", "name": "blink_perf.accessibility/textarea-append.html" }, { @@ -52,19 +52,19 @@ "name": "blink_perf.bindings/first-child.html" }, { - "duration": "20.0", + "duration": "18.0", "name": "blink_perf.bindings/gc-forest.html" }, { - "duration": "25.0", + "duration": "23.0", "name": "blink_perf.bindings/gc-mini-tree.html" }, { - "duration": "62.0", + "duration": "49.0", "name": "blink_perf.bindings/gc-tree.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.bindings/get-attribute-rare.html" }, { @@ -72,7 +72,7 @@ "name": "blink_perf.bindings/get-attribute.html" }, { - "duration": "11.0", + "duration": "12.0", "name": "blink_perf.bindings/get-element-by-id.html" }, { @@ -80,7 +80,7 @@ "name": "blink_perf.bindings/get-elements-by-tag-name.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.bindings/id-getter.html" }, { @@ -92,7 +92,7 @@ "name": "blink_perf.bindings/indexed-getter.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.bindings/insert-before.html" }, { @@ -100,7 +100,7 @@ "name": "blink_perf.bindings/named-property-enumerator.html" }, { - "duration": "68.0", + "duration": "61.0", "name": "blink_perf.bindings/node-list-access.html" }, { @@ -108,7 +108,7 @@ "name": "blink_perf.bindings/node-type.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.bindings/post-message.html" }, { @@ -120,19 +120,19 @@ "name": "blink_perf.bindings/sequence-conversion-custom-iterator.html" }, { - "duration": "9.0", + "duration": "6.0", "name": "blink_perf.bindings/serialize-array.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.bindings/serialize-long-string.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.bindings/serialize-map.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.bindings/serialize-nested-array.html" }, { @@ -140,7 +140,7 @@ "name": "blink_perf.bindings/set-attribute-rare.html" }, { - "duration": "14.0", + "duration": "11.0", "name": "blink_perf.bindings/set-attribute.html" }, { @@ -164,23 +164,23 @@ "name": "blink_perf.bindings/typed-array-construct-from-array.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.bindings/typed-array-construct-from-same-type.html" }, { - "duration": "17.0", + "duration": "11.0", "name": "blink_perf.bindings/typed-array-construct-from-typed.html" }, { - "duration": "17.0", + "duration": "12.0", "name": "blink_perf.bindings/typed-array-set-from-typed.html" }, { - "duration": "25.0", + "duration": "12.0", "name": "blink_perf.bindings/undefined-first-child.html" }, { - "duration": "17.0", + "duration": "16.0", "name": "blink_perf.bindings/undefined-get-element-by-id.html" }, { @@ -204,35 +204,35 @@ "name": "blink_perf.bindings/worker-structured-clone-json-to-worker.html" }, { - "duration": "13.0", + "duration": "9.0", "name": "blink_perf.bindings/worker-structured-clone-workerDOM-DBMon-from-worker.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.bindings/worker-structured-clone-workerDOM-Map-from-worker.html" }, { - "duration": "23.0", + "duration": "20.0", "name": "blink_perf.bindings/worker-text-encoded-transferable-from-worker.html" }, { - "duration": "32.0", + "duration": "20.0", "name": "blink_perf.bindings/worker-text-encoded-transferable-roundtrip.html" }, { - "duration": "31.0", + "duration": "20.0", "name": "blink_perf.bindings/worker-text-encoded-transferable-to-worker.html" }, { - "duration": "22.0", + "duration": "18.0", "name": "blink_perf.bindings/worker-transferable-from-worker.html" }, { - "duration": "27.0", + "duration": "18.0", "name": "blink_perf.bindings/worker-transferable-roundtrip.html" }, { - "duration": "30.0", + "duration": "18.0", "name": "blink_perf.bindings/worker-transferable-to-worker.html" }, { @@ -244,123 +244,123 @@ "name": "blink_perf.css/CSSLogicalDirection.html" }, { - "duration": "14.0", + "duration": "13.0", "name": "blink_perf.css/CSSPropertySetterGetter.html" }, { - "duration": "15.0", + "duration": "14.0", "name": "blink_perf.css/CSSPropertySetterGetterMethods.html" }, { - "duration": "15.0", + "duration": "13.0", "name": "blink_perf.css/CSSPropertyUpdateValue.html" }, { - "duration": "17.0", + "duration": "16.0", "name": "blink_perf.css/ChangeStyleCSSVariableRecalc.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.css/ChangeStyleChildClassSelector.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.css/ChangeStyleChildElementSelectors.html" }, { - "duration": "17.0", + "duration": "16.0", "name": "blink_perf.css/ChangeStyleCustomPropertyDeclaration.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.css/ChangeStyleElementSelector.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html" }, { - "duration": "11.0", + "duration": "9.0", "name": "blink_perf.css/ChangeStyleShallowTree.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.css/ChangeStyleSingleClassSelector.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.css/ChangeStyleUniversalSelector.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html" }, { - "duration": "24.0", + "duration": "26.0", "name": "blink_perf.css/ClassDescendantSelector.html" }, { - "duration": "17.0", + "duration": "16.0", "name": "blink_perf.css/ClassInvalidation.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.css/CustomPropertiesCascade.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.css/CustomPropertiesDependency.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.css/CustomPropertiesNonRootInheritance.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.css/CustomPropertiesPendingSubstitution.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.css/CustomPropertiesRootInheritance.html" }, { @@ -368,35 +368,35 @@ "name": "blink_perf.css/CustomPropertiesVarAlias.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.css/ExplicitInheritance.html" }, { - "duration": "22.0", + "duration": "21.0", "name": "blink_perf.css/FocusUpdate.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.css/LoadBootstrapBlog.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.css/LoadMaterializeStarterPage.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.css/LoadSemanticPageExample.html" }, { - "duration": "15.0", + "duration": "14.0", "name": "blink_perf.css/PseudoClassSelectors.html" }, { - "duration": "67.0", + "duration": "66.0", "name": "blink_perf.css/SelectorCountScaling.html" }, { - "duration": "17.0", + "duration": "18.0", "name": "blink_perf.dom/custom-element-default-style-with-shadow.html" }, { @@ -404,11 +404,11 @@ "name": "blink_perf.dom/custom-element-default-style.html" }, { - "duration": "27.0", + "duration": "28.0", "name": "blink_perf.dom/long-sibling-list.html" }, { - "duration": "10.0", + "duration": "14.0", "name": "blink_perf.dom/modify-element-classname.html" }, { @@ -416,7 +416,7 @@ "name": "blink_perf.dom/modify-element-id.html" }, { - "duration": "8.0", + "duration": "11.0", "name": "blink_perf.dom/modify-element-title.html" }, { @@ -424,15 +424,15 @@ "name": "blink_perf.dom/select-multiple-add.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.dom/select-single-add.html" }, { - "duration": "11.0", + "duration": "12.0", "name": "blink_perf.dom/select-single-remove.html" }, { - "duration": "19.0", + "duration": "29.0", "name": "blink_perf.events/EventsDispatching.html" }, { @@ -444,23 +444,23 @@ "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html" }, { - "duration": "63.0", + "duration": "54.0", "name": "blink_perf.events/hit-test-lots-of-layers.html" }, { - "duration": "13.0", + "duration": "14.0", "name": "blink_perf.events/is-input-pending-default-events.html" }, { - "duration": "13.0", + "duration": "14.0", "name": "blink_perf.events/is-input-pending-include-continuous-events.html" }, { - "duration": "54.0", + "duration": "46.0", "name": "blink_perf.image_decoder/decode-gif.html" }, { - "duration": "23.0", + "duration": "19.0", "name": "blink_perf.image_decoder/decode-jpeg-h1v1.html" }, { @@ -480,11 +480,11 @@ "name": "blink_perf.image_decoder/decode-lossless-webp.html" }, { - "duration": "12.0", + "duration": "15.0", "name": "blink_perf.image_decoder/decode-lossy-webp.html" }, { - "duration": "31.0", + "duration": "36.0", "name": "blink_perf.image_decoder/decode-png-palette-opaque.html" }, { @@ -492,11 +492,11 @@ "name": "blink_perf.image_decoder/decode-png-palette.html" }, { - "duration": "52.0", + "duration": "53.0", "name": "blink_perf.image_decoder/decode-png.html" }, { - "duration": "44.0", + "duration": "15.0", "name": "blink_perf.layout/ArabicLineLayout.html" }, { @@ -508,7 +508,7 @@ "name": "blink_perf.layout/SimpleTextPathLineLayout.html" }, { - "duration": "50.0", + "duration": "48.0", "name": "blink_perf.layout/abspos.html" }, { @@ -516,7 +516,7 @@ "name": "blink_perf.layout/add-remove-inline-floats.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.layout/animate-abspos-deep.html" }, { @@ -524,7 +524,7 @@ "name": "blink_perf.layout/attach-inlines-2.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.layout/attach-inlines.html" }, { @@ -540,19 +540,19 @@ "name": "blink_perf.layout/change-text-css-contain.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.layout/chapter-reflow-once-random.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.layout/chapter-reflow-once.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.layout/chapter-reflow-thrice.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.layout/chapter-reflow-twice.html" }, { @@ -560,19 +560,19 @@ "name": "blink_perf.layout/chapter-reflow.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.layout/character_fallback.html" }, { - "duration": "20.0", + "duration": "21.0", "name": "blink_perf.layout/contain-content-style-change.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.layout/culled-inline-bounding-rects.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.layout/culled-inline-hittest.html" }, { @@ -580,7 +580,7 @@ "name": "blink_perf.layout/deeply-nested-grid.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.layout/editing_append.html" }, { @@ -588,7 +588,7 @@ "name": "blink_perf.layout/editing_append_single_line.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.layout/editing_delete.html" }, { @@ -596,7 +596,7 @@ "name": "blink_perf.layout/editing_insert.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.layout/editing_prepend.html" }, { @@ -644,7 +644,7 @@ "name": "blink_perf.layout/flexbox-row-nowrap.html" }, { - "duration": "18.0", + "duration": "19.0", "name": "blink_perf.layout/flexbox-row-stretch-height-definite.html" }, { @@ -664,11 +664,11 @@ "name": "blink_perf.layout/flexbox_with_list_item.html" }, { - "duration": "32.0", + "duration": "39.0", "name": "blink_perf.layout/floats_100_100.html" }, { - "duration": "32.0", + "duration": "39.0", "name": "blink_perf.layout/floats_100_100_nested.html" }, { @@ -676,15 +676,15 @@ "name": "blink_perf.layout/floats_10_1000.html" }, { - "duration": "12.0", + "duration": "14.0", "name": "blink_perf.layout/floats_20_100.html" }, { - "duration": "12.0", + "duration": "14.0", "name": "blink_perf.layout/floats_20_100_nested.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.layout/floats_2_100.html" }, { @@ -692,11 +692,11 @@ "name": "blink_perf.layout/floats_2_100_nested.html" }, { - "duration": "13.0", + "duration": "14.0", "name": "blink_perf.layout/floats_50_100.html" }, { - "duration": "13.0", + "duration": "14.0", "name": "blink_perf.layout/floats_50_100_nested.html" }, { @@ -704,35 +704,35 @@ "name": "blink_perf.layout/floats_show_hide.html" }, { - "duration": "13.0", + "duration": "15.0", "name": "blink_perf.layout/hindi-line-layout.html" }, { - "duration": "9.0", + "duration": "10.0", "name": "blink_perf.layout/hittest-block-children.html" }, { - "duration": "51.0", + "duration": "50.0", "name": "blink_perf.layout/japanese-kokoro-insert.html" }, { - "duration": "26.0", + "duration": "27.0", "name": "blink_perf.layout/large-grid.html" }, { - "duration": "11.0", + "duration": "12.0", "name": "blink_perf.layout/large-spanning-grid-item.html" }, { - "duration": "40.0", + "duration": "38.0", "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html" }, { - "duration": "40.0", + "duration": "37.0", "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html" }, { - "duration": "39.0", + "duration": "37.0", "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html" }, { @@ -764,7 +764,7 @@ "name": "blink_perf.layout/line-layout-line-height.html" }, { - "duration": "11.0", + "duration": "12.0", "name": "blink_perf.layout/line-layout-repeat-append-select.html" }, { @@ -772,7 +772,7 @@ "name": "blink_perf.layout/line-layout-repeat-append.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.layout/line-layout.html" }, { @@ -784,11 +784,11 @@ "name": "blink_perf.layout/long-line-nowrap-spans-collapse.html" }, { - "duration": "20.0", + "duration": "21.0", "name": "blink_perf.layout/long-line-nowrap.html" }, { - "duration": "11.0", + "duration": "12.0", "name": "blink_perf.layout/many-block-children-auto-inline-size.html" }, { @@ -812,7 +812,7 @@ "name": "blink_perf.layout/multicol/lots-of-small-nested-unbreakable-blocks-autofill.html" }, { - "duration": "11.0", + "duration": "12.0", "name": "blink_perf.layout/multicol/lots-of-small-unbreakable-blocks-autofill.html" }, { @@ -828,7 +828,7 @@ "name": "blink_perf.layout/multicol/lots-of-text-balanced.html" }, { - "duration": "91.0", + "duration": "86.0", "name": "blink_perf.layout/multicol/nested-forced-breaks.html" }, { @@ -840,11 +840,11 @@ "name": "blink_perf.layout/multicol/tall-content-short-columns.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.layout/nested-grid-lots-of-tracks.html" }, { @@ -856,7 +856,7 @@ "name": "blink_perf.layout/nested-percent-height-tables.html" }, { - "duration": "29.0", + "duration": "13.0", "name": "blink_perf.layout/ruby.html" }, { @@ -864,7 +864,7 @@ "name": "blink_perf.layout/subtree-detaching.html" }, { - "duration": "51.0", + "duration": "52.0", "name": "blink_perf.layout/vertical-japanese-kokoro-insert.html" }, { @@ -880,31 +880,31 @@ "name": "blink_perf.layout/word-wrap-break-word.html" }, { - "duration": "17.0", + "duration": "35.0", "name": "blink_perf.owp_storage/blob-perf-files.html" }, { - "duration": "14.0", + "duration": "16.0", "name": "blink_perf.owp_storage/blob-perf-ipc.html" }, { - "duration": "10.0", + "duration": "12.0", "name": "blink_perf.owp_storage/blob-perf-shm.html" }, { - "duration": "14.0", + "duration": "16.0", "name": "blink_perf.owp_storage/blob-perf-tiny.html" }, { - "duration": "16.0", + "duration": "17.0", "name": "blink_perf.owp_storage/idb-load-docs.html" }, { - "duration": "44.0", + "duration": "50.0", "name": "blink_perf.owp_storage/idb-put-all.html" }, { - "duration": "50.0", + "duration": "56.0", "name": "blink_perf.owp_storage/idb-put.html" }, { @@ -960,15 +960,15 @@ "name": "blink_perf.paint/transform-changes.html" }, { - "duration": "15.0", + "duration": "16.0", "name": "blink_perf.parser/css-parser-yui.html" }, { - "duration": "29.0", + "duration": "25.0", "name": "blink_perf.parser/declarative-shadow-dom-cloning.html" }, { - "duration": "22.0", + "duration": "15.0", "name": "blink_perf.parser/declarative-shadow-dom.html" }, { @@ -976,15 +976,15 @@ "name": "blink_perf.parser/html-parser-threaded.html" }, { - "duration": "46.0", + "duration": "50.0", "name": "blink_perf.parser/html-parser.html" }, { - "duration": "178.0", + "duration": "176.0", "name": "blink_perf.parser/html5-full-render.html" }, { - "duration": "22.0", + "duration": "25.0", "name": "blink_perf.parser/iframe-append-remove.html" }, { @@ -1012,7 +1012,7 @@ "name": "blink_perf.parser/query-selector-all-class-first.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.parser/query-selector-all-class-last.html" }, { @@ -1024,7 +1024,7 @@ "name": "blink_perf.parser/query-selector-all-deep.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.parser/query-selector-all-first.html" }, { @@ -1036,31 +1036,31 @@ "name": "blink_perf.parser/query-selector-all-id-first.html" }, { - "duration": "14.0", + "duration": "13.0", "name": "blink_perf.parser/query-selector-all-id-last.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.parser/query-selector-all-last.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.parser/query-selector-deep.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.parser/query-selector-first.html" }, { - "duration": "14.0", + "duration": "13.0", "name": "blink_perf.parser/query-selector-id-deep.html" }, { - "duration": "15.0", + "duration": "13.0", "name": "blink_perf.parser/query-selector-id-last.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.parser/query-selector-last.html" }, { @@ -1068,11 +1068,11 @@ "name": "blink_perf.parser/simple-url.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.parser/textarea-parsing.html" }, { - "duration": "16.0", + "duration": "15.0", "name": "blink_perf.parser/tiny-innerHTML.html" }, { @@ -1228,11 +1228,11 @@ "name": "blink_perf.shadow_dom/v1-small-shallow-layout.html" }, { - "duration": "12.0", + "duration": "22.0", "name": "blink_perf.svg/AzLizardBenjiPark.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.svg/Bamboo.html" }, { @@ -1288,7 +1288,7 @@ "name": "blink_perf.svg/HereGear.html" }, { - "duration": "15.0", + "duration": "14.0", "name": "blink_perf.svg/MtSaintHelens.html" }, { @@ -1324,27 +1324,27 @@ "name": "blink_perf.svg/Worldcup.html" }, { - "duration": "16.0", + "duration": "20.0", "name": "blink_perf.webaudio/audio-buffer-source-node.html" }, { - "duration": "52.0", + "duration": "122.0", "name": "blink_perf.webaudio/audio-worklet-node.html" }, { - "duration": "49.0", + "duration": "119.0", "name": "blink_perf.webaudio/biquad-filter-node.html" }, { - "duration": "48.0", + "duration": "118.0", "name": "blink_perf.webaudio/gain-node.html" }, { - "duration": "58.0", + "duration": "59.0", "name": "blink_perf.webaudio/panner-node.html" }, { - "duration": "41.0", + "duration": "40.0", "name": "dromaeo/http://dromaeo.com?dom-attr" }, { @@ -1352,7 +1352,7 @@ "name": "dromaeo/http://dromaeo.com?dom-modify" }, { - "duration": "54.0", + "duration": "53.0", "name": "dromaeo/http://dromaeo.com?dom-query" }, { @@ -1360,7 +1360,7 @@ "name": "dromaeo/http://dromaeo.com?dom-traverse" }, { - "duration": "8.0", + "duration": "10.0", "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html" }, { @@ -1372,23 +1372,23 @@ "name": "jetstream/JetStream" }, { - "duration": "84.0", + "duration": "79.0", "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html" }, { - "duration": "13.0", + "duration": "15.0", "name": "loading.mobile/58Pic" }, { - "duration": "23.0", + "duration": "27.0", "name": "loading.mobile/58Pic_3g" }, { - "duration": "15.0", + "duration": "14.0", "name": "loading.mobile/Amazon" }, { - "duration": "30.0", + "duration": "29.0", "name": "loading.mobile/Amazon_3g" }, { @@ -1404,75 +1404,75 @@ "name": "loading.mobile/Baidu" }, { - "duration": "21.0", + "duration": "20.0", "name": "loading.mobile/Baidu_3g" }, { - "duration": "14.0", + "duration": "17.0", "name": "loading.mobile/Bradesco" }, { - "duration": "3.0", + "duration": "6.0", "name": "loading.mobile/Bradesco_3g" }, { - "duration": "15.0", + "duration": "12.0", "name": "loading.mobile/Dailymotion" }, { - "duration": "3.0", + "duration": "2.0", "name": "loading.mobile/Dailymotion_3g" }, { - "duration": "17.0", + "duration": "19.0", "name": "loading.mobile/Dawn" }, { - "duration": "3.0", + "duration": "6.0", "name": "loading.mobile/Dawn_3g" }, { - "duration": "13.0", + "duration": "15.0", "name": "loading.mobile/DevOpera_cold" }, { - "duration": "18.0", + "duration": "21.0", "name": "loading.mobile/DevOpera_cold_3g" }, { - "duration": "18.0", + "duration": "21.0", "name": "loading.mobile/DevOpera_hot" }, { - "duration": "22.0", + "duration": "25.0", "name": "loading.mobile/DevOpera_hot_3g" }, { - "duration": "15.0", + "duration": "20.0", "name": "loading.mobile/DevOpera_warm" }, { - "duration": "19.0", + "duration": "22.0", "name": "loading.mobile/DevOpera_warm_3g" }, { - "duration": "3.0", + "duration": "6.0", "name": "loading.mobile/Dramaq" }, { - "duration": "50.0", + "duration": "53.0", "name": "loading.mobile/Dramaq_3g" }, { - "duration": "11.0", + "duration": "14.0", "name": "loading.mobile/EnquiryIndianRail" }, { - "duration": "15.0", + "duration": "18.0", "name": "loading.mobile/EnquiryIndianRail_3g" }, { - "duration": "12.0", + "duration": "10.0", "name": "loading.mobile/Facebook" }, { @@ -1480,59 +1480,59 @@ "name": "loading.mobile/Facebook_3g" }, { - "duration": "15.0", + "duration": "17.0", "name": "loading.mobile/FlipBoard_cold" }, { - "duration": "3.0", + "duration": "6.0", "name": "loading.mobile/FlipBoard_cold_3g" }, { - "duration": "22.0", + "duration": "24.0", "name": "loading.mobile/FlipBoard_hot" }, { - "duration": "24.0", + "duration": "25.0", "name": "loading.mobile/FlipBoard_hot_3g" }, { - "duration": "17.0", + "duration": "20.0", "name": "loading.mobile/FlipBoard_warm" }, { - "duration": "3.0", + "duration": "6.0", "name": "loading.mobile/FlipBoard_warm_3g" }, { - "duration": "16.0", + "duration": "20.0", "name": "loading.mobile/FlipKart_cold" }, { - "duration": "3.0", + "duration": "6.0", "name": "loading.mobile/FlipKart_cold_3g" }, { - "duration": "25.0", + "duration": "26.0", "name": "loading.mobile/FlipKart_hot" }, { - "duration": "25.0", + "duration": "31.0", "name": "loading.mobile/FlipKart_hot_3g" }, { - "duration": "18.0", + "duration": "21.0", "name": "loading.mobile/FlipKart_warm" }, { - "duration": "33.0", + "duration": "37.0", "name": "loading.mobile/FlipKart_warm_3g" }, { - "duration": "13.0", + "duration": "16.0", "name": "loading.mobile/FranceTVInfo" }, { - "duration": "20.0", + "duration": "23.0", "name": "loading.mobile/FranceTVInfo_3g" }, { @@ -1544,15 +1544,15 @@ "name": "loading.mobile/G1_3g" }, { - "duration": "17.0", + "duration": "19.0", "name": "loading.mobile/GSShop" }, { - "duration": "3.0", + "duration": "6.0", "name": "loading.mobile/GSShop_3g" }, { - "duration": "11.0", + "duration": "10.0", "name": "loading.mobile/GoogleBrazil" }, { @@ -1576,7 +1576,7 @@ "name": "loading.mobile/GoogleIndonesia_3g" }, { - "duration": "14.0", + "duration": "13.0", "name": "loading.mobile/GoogleRedirectToGoogleJapan" }, { @@ -1584,151 +1584,151 @@ "name": "loading.mobile/GoogleRedirectToGoogleJapan_3g" }, { - "duration": "3.0", + "duration": "6.0", "name": "loading.mobile/Hongkiat" }, { - "duration": "3.0", + "duration": "6.0", "name": "loading.mobile/Hongkiat_3g" }, { - "duration": "15.0", + "duration": "14.0", "name": "loading.mobile/KapanLagi" }, { - "duration": "3.0", + "duration": "2.0", "name": "loading.mobile/KapanLagi_3g" }, { - "duration": "18.0", + "duration": "16.0", "name": "loading.mobile/Kaskus" }, { - "duration": "3.0", + "duration": "2.0", "name": "loading.mobile/Kaskus_3g" }, { - "duration": "13.0", + "duration": "16.0", "name": "loading.mobile/LocalMoxie" }, { - "duration": "3.0", + "duration": "6.0", "name": "loading.mobile/LocalMoxie_3g" }, { - "duration": "13.0", + "duration": "15.0", "name": "loading.mobile/Locanto" }, { - "duration": "13.0", + "duration": "16.0", "name": "loading.mobile/Locanto_3g" }, { - "duration": "13.0", + "duration": "19.0", "name": "loading.mobile/OLX" }, { - "duration": "3.0", + "duration": "6.0", "name": "loading.mobile/OLX_3g" }, { - "duration": "12.0", + "duration": "10.0", "name": "loading.mobile/QQNews" }, { - "duration": "3.0", + "duration": "2.0", "name": "loading.mobile/QQNews_3g" }, { - "duration": "12.0", + "duration": "15.0", "name": "loading.mobile/SlideShare" }, { - "duration": "23.0", + "duration": "28.0", "name": "loading.mobile/SlideShare_3g" }, { - "duration": "16.0", + "duration": "22.0", "name": "loading.mobile/Suumo_cold" }, { - "duration": "13.0", + "duration": "18.0", "name": "loading.mobile/Suumo_cold_3g" }, { - "duration": "17.0", + "duration": "19.0", "name": "loading.mobile/Suumo_hot" }, { - "duration": "17.0", + "duration": "19.0", "name": "loading.mobile/Suumo_hot_3g" }, { - "duration": "16.0", + "duration": "17.0", "name": "loading.mobile/Suumo_warm" }, { - "duration": "14.0", + "duration": "17.0", "name": "loading.mobile/Suumo_warm_3g" }, { - "duration": "15.0", + "duration": "16.0", "name": "loading.mobile/Thairath" }, { - "duration": "3.0", + "duration": "6.0", "name": "loading.mobile/Thairath_3g" }, { - "duration": "21.0", + "duration": "23.0", "name": "loading.mobile/TheStar" }, { - "duration": "3.0", + "duration": "6.0", "name": "loading.mobile/TheStar_3g" }, { - "duration": "19.0", + "duration": "15.0", "name": "loading.mobile/TribunNews" }, { - "duration": "3.0", + "duration": "2.0", "name": "loading.mobile/TribunNews_3g" }, { - "duration": "12.0", + "duration": "10.0", "name": "loading.mobile/Twitter" }, { - "duration": "15.0", + "duration": "14.0", "name": "loading.mobile/Twitter_3g" }, { - "duration": "13.0", + "duration": "16.0", "name": "loading.mobile/VoiceMemos_cold" }, { - "duration": "17.0", + "duration": "19.0", "name": "loading.mobile/VoiceMemos_cold_3g" }, { - "duration": "3.0", + "duration": "6.0", "name": "loading.mobile/VoiceMemos_hot" }, { - "duration": "3.0", + "duration": "6.0", "name": "loading.mobile/VoiceMemos_hot_3g" }, { - "duration": "3.0", + "duration": "6.0", "name": "loading.mobile/VoiceMemos_warm" }, { - "duration": "3.0", + "duration": "6.0", "name": "loading.mobile/VoiceMemos_warm_3g" }, { - "duration": "11.0", + "duration": "10.0", "name": "loading.mobile/Wikipedia" }, { @@ -1736,7 +1736,7 @@ "name": "loading.mobile/Wikipedia_3g" }, { - "duration": "16.0", + "duration": "15.0", "name": "loading.mobile/YahooNews" }, { @@ -1744,7 +1744,7 @@ "name": "loading.mobile/YahooNews_3g" }, { - "duration": "11.0", + "duration": "10.0", "name": "loading.mobile/Youtube" }, { @@ -1752,7 +1752,7 @@ "name": "loading.mobile/Youtube_3g" }, { - "duration": "71.0", + "duration": "73.0", "name": "octane/Octane" }, { @@ -1768,15 +1768,15 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/booking.html" }, { - "duration": "16.0", + "duration": "17.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/cnn.html" }, { - "duration": "13.0", + "duration": "19.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/ebay.html" }, { - "duration": "32.0", + "duration": "30.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html" }, { @@ -1784,7 +1784,7 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/facebook.html" }, { - "duration": "42.0", + "duration": "41.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/gmail.html" }, { @@ -1792,7 +1792,7 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/google.html" }, { - "duration": "29.0", + "duration": "28.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/googlecalendar.html" }, { @@ -1800,11 +1800,11 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/googledocs.html" }, { - "duration": "33.0", + "duration": "32.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleimagesearch.html" }, { - "duration": "27.0", + "duration": "26.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleplus.html" }, { @@ -1816,11 +1816,11 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html" }, { - "duration": "22.0", + "duration": "21.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html" }, { - "duration": "44.0", + "duration": "42.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/twitter.html" }, { @@ -1832,7 +1832,7 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/wikipedia.html" }, { - "duration": "14.0", + "duration": "13.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/wordpress.html" }, { @@ -1848,99 +1848,99 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html" }, { - "duration": "27.0", + "duration": "26.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html" }, { - "duration": "45.0", + "duration": "44.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html" }, { - "duration": "36.0", + "duration": "31.0", "name": "rendering.mobile/accu_weather_2018" }, { - "duration": "31.0", + "duration": "39.0", "name": "rendering.mobile/accu_weather_mobile_pinch_2018" }, { - "duration": "25.0", + "duration": "24.0", "name": "rendering.mobile/amazon_2018" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.mobile/amazon_mobile_2018" }, { - "duration": "25.0", + "duration": "24.0", "name": "rendering.mobile/analog_clock_svg" }, { - "duration": "28.0", + "duration": "31.0", "name": "rendering.mobile/androidpolice_mobile_2018" }, { - "duration": "34.0", + "duration": "31.0", "name": "rendering.mobile/animometer_webgl" }, { - "duration": "32.0", + "duration": "30.0", "name": "rendering.mobile/animometer_webgl_attrib_arrays" }, { - "duration": "40.0", + "duration": "33.0", "name": "rendering.mobile/animometer_webgl_multi_draw" }, { - "duration": "31.0", + "duration": "32.0", "name": "rendering.mobile/aquarium" }, { - "duration": "4.0", + "duration": "6.0", "name": "rendering.mobile/aquarium_20k" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/background_color_animation" }, { - "duration": "25.0", + "duration": "24.0", "name": "rendering.mobile/background_color_animation_with_gradient" }, { - "duration": "20.0", + "duration": "18.0", "name": "rendering.mobile/baidu_mobile_2018" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.mobile/balls_css_key_frame_animations" }, { - "duration": "4.0", + "duration": "6.0", "name": "rendering.mobile/balls_css_key_frame_animations_composited_transform" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/balls_css_transition_2_properties" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/balls_css_transition_40_properties" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/balls_css_transition_all_properties" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/balls_javascript_canvas" }, { - "duration": "23.0", + "duration": "25.0", "name": "rendering.mobile/balls_javascript_css" }, { - "duration": "36.0", + "duration": "33.0", "name": "rendering.mobile/balls_svg_animations" }, { @@ -1948,123 +1948,123 @@ "name": "rendering.mobile/basic_stream" }, { - "duration": "19.0", + "duration": "26.0", "name": "rendering.mobile/bing_mobile_2018" }, { - "duration": "29.0", + "duration": "31.0", "name": "rendering.mobile/blob" }, { - "duration": "24.0", + "duration": "18.0", "name": "rendering.mobile/blogspot_2018" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.mobile/blogspot_mobile_2018" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/blur_rotating_background" }, { - "duration": "18.0", + "duration": "21.0", "name": "rendering.mobile/boingboing_mobile_2018" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.mobile/booking.com_2018" }, { - "duration": "14.0", + "duration": "16.0", "name": "rendering.mobile/booking.com_mobile_2018" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/bouncing_balls_15" }, { - "duration": "4.0", + "duration": "6.0", "name": "rendering.mobile/bouncing_balls_shadow" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/bouncing_clipped_rectangles" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/bouncing_gradient_circles" }, { - "duration": "21.0", + "duration": "23.0", "name": "rendering.mobile/bouncing_png_images" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.mobile/bouncing_svg_images" }, { - "duration": "28.0", + "duration": "29.0", "name": "rendering.mobile/camera_to_webgl" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/canvas2d_to_texture.html" }, { - "duration": "35.0", + "duration": "40.0", "name": "rendering.mobile/canvas_05000_pixels_per_second" }, { - "duration": "4.0", + "duration": "6.0", "name": "rendering.mobile/canvas_10000_pixels_per_second" }, { - "duration": "4.0", + "duration": "6.0", "name": "rendering.mobile/canvas_20000_pixels_per_second" }, { - "duration": "4.0", + "duration": "6.0", "name": "rendering.mobile/canvas_40000_pixels_per_second" }, { - "duration": "4.0", + "duration": "6.0", "name": "rendering.mobile/canvas_60000_pixels_per_second" }, { - "duration": "4.0", + "duration": "6.0", "name": "rendering.mobile/canvas_75000_pixels_per_second" }, { - "duration": "4.0", + "duration": "6.0", "name": "rendering.mobile/canvas_90000_pixels_per_second" }, { - "duration": "25.0", + "duration": "23.0", "name": "rendering.mobile/canvas_animation_no_clear" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/canvas_arcs" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/canvas_font_cycler" }, { - "duration": "21.0", + "duration": "23.0", "name": "rendering.mobile/canvas_lines" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/canvas_to_blob" }, { - "duration": "25.0", + "duration": "24.0", "name": "rendering.mobile/canvas_to_canvas_draw" }, { - "duration": "25.0", + "duration": "27.0", "name": "rendering.mobile/capitolvolkswagen_mobile_2018" }, { @@ -2076,7 +2076,7 @@ "name": "rendering.mobile/card_expansion_animated" }, { - "duration": "18.0", + "duration": "17.0", "name": "rendering.mobile/card_expansion_images_text" }, { @@ -2084,47 +2084,47 @@ "name": "rendering.mobile/card_flying" }, { - "duration": "13.0", + "duration": "14.0", "name": "rendering.mobile/cats_unscaled" }, { - "duration": "11.0", + "duration": "13.0", "name": "rendering.mobile/cats_viewport_width" }, { - "duration": "32.0", + "duration": "27.0", "name": "rendering.mobile/cc_poster_circle" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.mobile/cc_scroll_text_only" }, { - "duration": "31.0", + "duration": "26.0", "name": "rendering.mobile/chip_tune" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.mobile/cnn_2018" }, { - "duration": "31.0", + "duration": "34.0", "name": "rendering.mobile/cnn_article_mobile_2018" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.mobile/cnn_mobile_2018" }, { - "duration": "4.0", + "duration": "6.0", "name": "rendering.mobile/cnn_mobile_pinch_2018" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/cnn_pathological_2018" }, { - "duration": "29.0", + "duration": "24.0", "name": "rendering.mobile/compositor_heavy_animation" }, { @@ -2132,39 +2132,39 @@ "name": "rendering.mobile/coordinated_animation" }, { - "duration": "4.0", + "duration": "5.0", "name": "rendering.mobile/core_scroll_header_panel" }, { - "duration": "23.0", + "duration": "26.0", "name": "rendering.mobile/crafty_mind" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.mobile/css_animations_many_keyframes" }, { - "duration": "21.0", + "duration": "23.0", "name": "rendering.mobile/css_animations_simultaneous_inline_style" }, { - "duration": "21.0", + "duration": "23.0", "name": "rendering.mobile/css_animations_simultaneous_new_element" }, { - "duration": "21.0", + "duration": "23.0", "name": "rendering.mobile/css_animations_simultaneous_style_element" }, { - "duration": "21.0", + "duration": "23.0", "name": "rendering.mobile/css_animations_simultaneous_updating_class" }, { - "duration": "21.0", + "duration": "23.0", "name": "rendering.mobile/css_animations_staggered_infinite_iterations" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/css_animations_staggered_inline_style" }, { @@ -2172,75 +2172,75 @@ "name": "rendering.mobile/css_animations_staggered_new_element" }, { - "duration": "44.0", + "duration": "25.0", "name": "rendering.mobile/css_animations_staggered_style_element" }, { - "duration": "27.0", + "duration": "24.0", "name": "rendering.mobile/css_animations_staggered_updating_class" }, { - "duration": "27.0", + "duration": "24.0", "name": "rendering.mobile/css_animations_triggered_inline_style" }, { - "duration": "24.0", + "duration": "25.0", "name": "rendering.mobile/css_animations_triggered_new_element" }, { - "duration": "48.0", + "duration": "23.0", "name": "rendering.mobile/css_animations_triggered_style_element" }, { - "duration": "27.0", + "duration": "24.0", "name": "rendering.mobile/css_animations_triggered_updating_class" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.mobile/css_opacity_plus_n_layers_0" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.mobile/css_opacity_plus_n_layers_75" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.mobile/css_opacity_plus_n_layers_99" }, { - "duration": "21.0", + "duration": "23.0", "name": "rendering.mobile/css_transitions_inline_style" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/css_transitions_new_element" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/css_transitions_staggered_inline_style" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/css_transitions_staggered_new_element" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/css_transitions_staggered_style_element" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/css_transitions_staggered_updating_class" }, { - "duration": "21.0", + "duration": "23.0", "name": "rendering.mobile/css_transitions_style_element" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/css_transitions_triggered_inline_style" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/css_transitions_triggered_new_element" }, { @@ -2248,23 +2248,23 @@ "name": "rendering.mobile/css_transitions_triggered_style_element" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/css_transitions_triggered_updating_class" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/css_transitions_updating_class" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/css_value_type_color" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/css_value_type_filter" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/css_value_type_length" }, { @@ -2272,7 +2272,7 @@ "name": "rendering.mobile/css_value_type_length_complex" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/css_value_type_length_simple" }, { @@ -2280,27 +2280,27 @@ "name": "rendering.mobile/css_value_type_path" }, { - "duration": "39.0", + "duration": "28.0", "name": "rendering.mobile/css_value_type_shadow" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/css_value_type_transform_complex" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/css_value_type_transform_simple" }, { - "duration": "29.0", + "duration": "31.0", "name": "rendering.mobile/deviantart_mobile_2018" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.mobile/digg_mobile_2018" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/docs_paper.html" }, { @@ -2312,15 +2312,15 @@ "name": "rendering.mobile/docs_table.html" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/draw_image" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/draw_image_not_pixel_aligned" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/dynamic_canvas_to_hw_accelerated_canvas.html" }, { @@ -2328,67 +2328,67 @@ "name": "rendering.mobile/dynamic_cube_map" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/dynamic_webgl_to_hw_accelerated_canvas.html" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.mobile/earth" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.mobile/ebay_2018" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.mobile/ebay_mobile_2018" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.mobile/ebay_mobile_pinch_2018" }, { - "duration": "26.0", + "duration": "28.0", "name": "rendering.mobile/ebay_scroll_2018" }, { - "duration": "4.0", + "duration": "5.0", "name": "rendering.mobile/effect_games" }, { - "duration": "29.0", + "duration": "32.0", "name": "rendering.mobile/espn_2018" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.mobile/espn_mobile_2018" }, { - "duration": "20.0", + "duration": "22.0", "name": "rendering.mobile/espn_pathological_2018" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/extra_large_texture_uploads" }, { - "duration": "23.0", + "duration": "25.0", "name": "rendering.mobile/facebook_2018" }, { - "duration": "27.0", + "duration": "26.0", "name": "rendering.mobile/facebook_mobile_2018" }, { - "duration": "35.0", + "duration": "23.0", "name": "rendering.mobile/falling_particle_simulation_cpu.html" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/falling_particle_simulation_gpu.html" }, { - "duration": "4.0", + "duration": "3.0", "name": "rendering.mobile/famo_us_twitter_demo" }, { @@ -2396,55 +2396,55 @@ "name": "rendering.mobile/fill_clear_rect.html" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/fill_shapes" }, { - "duration": "27.0", + "duration": "26.0", "name": "rendering.mobile/filter_terrain_svg" }, { - "duration": "26.0", + "duration": "28.0", "name": "rendering.mobile/flickr_scroll_2018" }, { - "duration": "18.0", + "duration": "17.0", "name": "rendering.mobile/font_wipe" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.mobile/forecast.io_mobile_2018" }, { - "duration": "4.0", + "duration": "5.0", "name": "rendering.mobile/geo_apis" }, { - "duration": "29.0", + "duration": "23.0", "name": "rendering.mobile/get_image_data_cpu.html" }, { - "duration": "32.0", + "duration": "23.0", "name": "rendering.mobile/get_image_data_gpu.html" }, { - "duration": "27.0", + "duration": "30.0", "name": "rendering.mobile/gmail_2018" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.mobile/google_calendar_2018" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.mobile/google_docs_2018" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.mobile/google_image_search_2018" }, { - "duration": "21.0", + "duration": "23.0", "name": "rendering.mobile/google_image_search_mobile_2018" }, { @@ -2452,39 +2452,39 @@ "name": "rendering.mobile/google_news_ios" }, { - "duration": "4.0", + "duration": "5.0", "name": "rendering.mobile/google_news_mobile_2018" }, { - "duration": "20.0", + "duration": "22.0", "name": "rendering.mobile/google_plus_2018" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/google_plus_mobile_2018" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.mobile/google_search_mobile_pinch_2018" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.mobile/google_web_search_2018" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.mobile/google_web_search_mobile_2018" }, { - "duration": "32.0", + "duration": "29.0", "name": "rendering.mobile/gpu_bound_shader.html" }, { - "duration": "23.0", + "duration": "25.0", "name": "rendering.mobile/gsp.ro_mobile_2018" }, { - "duration": "22.0", + "duration": "29.0", "name": "rendering.mobile/guardian_pathological_2018" }, { @@ -2492,15 +2492,15 @@ "name": "rendering.mobile/guimark_vector_chart" }, { - "duration": "19.0", + "duration": "27.0", "name": "rendering.mobile/gws_boogie_expansion" }, { - "duration": "19.0", + "duration": "24.0", "name": "rendering.mobile/gws_google_expansion" }, { - "duration": "25.0", + "duration": "30.0", "name": "rendering.mobile/hakim" }, { @@ -2508,7 +2508,7 @@ "name": "rendering.mobile/horizontal_vertical_expansion" }, { - "duration": "22.0", + "duration": "26.0", "name": "rendering.mobile/hw_accelerated_canvas_to_sw_canvas.html" }, { @@ -2516,11 +2516,11 @@ "name": "rendering.mobile/idle_power_animated_gif" }, { - "duration": "33.0", + "duration": "35.0", "name": "rendering.mobile/idle_power_blank" }, { - "duration": "50.0", + "duration": "44.0", "name": "rendering.mobile/idle_power_css_animation" }, { @@ -2528,55 +2528,55 @@ "name": "rendering.mobile/idle_power_request_animation_frame" }, { - "duration": "111.0", + "duration": "113.0", "name": "rendering.mobile/idle_power_set_timeout_long" }, { - "duration": "38.0", + "duration": "43.0", "name": "rendering.mobile/idle_power_set_timetout" }, { - "duration": "36.0", + "duration": "35.0", "name": "rendering.mobile/ie_chalkboard" }, { - "duration": "27.0", + "duration": "26.0", "name": "rendering.mobile/ie_pirate_mark" }, { - "duration": "23.0", + "duration": "28.0", "name": "rendering.mobile/infinite_scroll_element_n_layers_0" }, { - "duration": "23.0", + "duration": "28.0", "name": "rendering.mobile/infinite_scroll_element_n_layers_75" }, { - "duration": "24.0", + "duration": "29.0", "name": "rendering.mobile/infinite_scroll_element_n_layers_99" }, { - "duration": "23.0", + "duration": "28.0", "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_0" }, { - "duration": "23.0", + "duration": "28.0", "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_75" }, { - "duration": "24.0", + "duration": "29.0", "name": "rendering.mobile/infinite_scroll_root_fixed_n_layers_99" }, { - "duration": "23.0", + "duration": "28.0", "name": "rendering.mobile/infinite_scroll_root_n_layers_0" }, { - "duration": "27.0", + "duration": "28.0", "name": "rendering.mobile/infinite_scroll_root_n_layers_75" }, { - "duration": "25.0", + "duration": "29.0", "name": "rendering.mobile/infinite_scroll_root_n_layers_99" }, { @@ -2584,83 +2584,83 @@ "name": "rendering.mobile/infinite_scrolling" }, { - "duration": "36.0", + "duration": "32.0", "name": "rendering.mobile/jarro_doverson" }, { - "duration": "17.0", + "duration": "20.0", "name": "rendering.mobile/jpeg_decoding_rgb_and_gpu_rasterization" }, { - "duration": "17.0", + "duration": "20.0", "name": "rendering.mobile/jpeg_decoding_yuv_and_gpu_rasterization" }, { - "duration": "30.0", + "duration": "35.0", "name": "rendering.mobile/js_full_screen_invalidation" }, { - "duration": "26.0", + "duration": "30.0", "name": "rendering.mobile/js_opacity_plus_n_layers_0" }, { - "duration": "26.0", + "duration": "30.0", "name": "rendering.mobile/js_opacity_plus_n_layers_75" }, { - "duration": "27.0", + "duration": "30.0", "name": "rendering.mobile/js_opacity_plus_n_layers_99" }, { - "duration": "27.0", + "duration": "30.0", "name": "rendering.mobile/js_paint_plus_n_layers_0" }, { - "duration": "27.0", + "duration": "33.0", "name": "rendering.mobile/js_paint_plus_n_layers_75" }, { - "duration": "27.0", + "duration": "30.0", "name": "rendering.mobile/js_paint_plus_n_layers_99" }, { - "duration": "43.0", + "duration": "36.0", "name": "rendering.mobile/js_poster_circle" }, { - "duration": "23.0", + "duration": "26.0", "name": "rendering.mobile/js_scroll_text_only" }, { - "duration": "5.0", + "duration": "8.0", "name": "rendering.mobile/kevs_3d" }, { - "duration": "23.0", + "duration": "26.0", "name": "rendering.mobile/keyframed_animations" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.mobile/large_texture_uploads" }, { - "duration": "32.0", + "duration": "39.0", "name": "rendering.mobile/latimes_pathological_2018" }, { - "duration": "27.0", + "duration": "31.0", "name": "rendering.mobile/linkedin_2018" }, { - "duration": "59.0", + "duration": "58.0", "name": "rendering.mobile/linkedin_mobile_2018" }, { - "duration": "58.0", + "duration": "54.0", "name": "rendering.mobile/linkedin_mobile_pinch_2018" }, { - "duration": "50.0", + "duration": "58.0", "name": "rendering.mobile/linkedin_pathological_2018" }, { @@ -2668,11 +2668,11 @@ "name": "rendering.mobile/list_animation_simple" }, { - "duration": "24.0", + "duration": "21.0", "name": "rendering.mobile/list_recycle_transform" }, { - "duration": "77.0", + "duration": "73.0", "name": "rendering.mobile/lost_crypt" }, { @@ -2680,159 +2680,159 @@ "name": "rendering.mobile/main_0fps_impl_60fps" }, { - "duration": "23.0", + "duration": "26.0", "name": "rendering.mobile/main_0fps_impl_60fps_no_update" }, { - "duration": "23.0", + "duration": "26.0", "name": "rendering.mobile/main_0fps_impl_60fps_no_update_jank" }, { - "duration": "23.0", + "duration": "26.0", "name": "rendering.mobile/main_0fps_with_jank_impl_0fps" }, { - "duration": "23.0", + "duration": "29.0", "name": "rendering.mobile/main_15fps_impl_0fps" }, { - "duration": "23.0", + "duration": "26.0", "name": "rendering.mobile/main_15fps_with_jank_impl_0fps" }, { - "duration": "23.0", + "duration": "29.0", "name": "rendering.mobile/main_30fps_impl_0fps" }, { - "duration": "31.0", + "duration": "52.0", "name": "rendering.mobile/main_30fps_impl_60fps" }, { - "duration": "26.0", + "duration": "38.0", "name": "rendering.mobile/main_60fps_impl_0fps" }, { - "duration": "23.0", + "duration": "27.0", "name": "rendering.mobile/main_60fps_impl_60fps" }, { - "duration": "23.0", + "duration": "29.0", "name": "rendering.mobile/main_60fps_impl_60fps_no_update" }, { - "duration": "23.0", + "duration": "26.0", "name": "rendering.mobile/main_60fps_impl_60fps_no_update_jank" }, { - "duration": "43.0", + "duration": "46.0", "name": "rendering.mobile/main_60fps_with_extreme_jank_impl_0fps" }, { - "duration": "23.0", + "duration": "29.0", "name": "rendering.mobile/main_60fps_with_jank_and_delay_impl_60fps" }, { - "duration": "23.0", + "duration": "32.0", "name": "rendering.mobile/main_60fps_with_jank_impl_0fps" }, { - "duration": "24.0", + "duration": "29.0", "name": "rendering.mobile/main_animations_half_presented" }, { - "duration": "32.0", + "duration": "27.0", "name": "rendering.mobile/man_in_blue" }, { - "duration": "62.0", + "duration": "34.0", "name": "rendering.mobile/many_images" }, { - "duration": "30.0", + "duration": "34.0", "name": "rendering.mobile/many_planets_deep" }, { - "duration": "5.0", + "duration": "8.0", "name": "rendering.mobile/maps_perf_test" }, { - "duration": "18.0", + "duration": "17.0", "name": "rendering.mobile/mask_transition_animation" }, { - "duration": "35.0", + "duration": "36.0", "name": "rendering.mobile/masonry" }, { - "duration": "24.0", + "duration": "29.0", "name": "rendering.mobile/medium_texture_uploads" }, { - "duration": "29.0", + "duration": "33.0", "name": "rendering.mobile/megi_dish" }, { - "duration": "99.0", + "duration": "8.0", "name": "rendering.mobile/microgame_fps" }, { - "duration": "26.0", + "duration": "29.0", "name": "rendering.mobile/microsoft_asteroid_belt" }, { - "duration": "5.0", + "duration": "8.0", "name": "rendering.mobile/microsoft_fireflies" }, { - "duration": "39.0", + "duration": "28.0", "name": "rendering.mobile/microsoft_fish_ie_tank" }, { - "duration": "24.0", + "duration": "41.0", "name": "rendering.mobile/microsoft_performance" }, { - "duration": "36.0", + "duration": "25.0", "name": "rendering.mobile/microsoft_snow" }, { - "duration": "40.0", + "duration": "21.0", "name": "rendering.mobile/microsoft_speed_reading" }, { - "duration": "28.0", + "duration": "22.0", "name": "rendering.mobile/microsoft_tweet_map" }, { - "duration": "5.0", + "duration": "3.0", "name": "rendering.mobile/microsoft_video_city" }, { - "duration": "24.0", + "duration": "22.0", "name": "rendering.mobile/microsoft_worker_fountains" }, { - "duration": "35.0", + "duration": "22.0", "name": "rendering.mobile/mix_10k" }, { - "duration": "33.0", + "duration": "21.0", "name": "rendering.mobile/mix_blend_mode_animation_difference" }, { - "duration": "31.0", + "duration": "21.0", "name": "rendering.mobile/mix_blend_mode_animation_hue" }, { - "duration": "30.0", + "duration": "24.0", "name": "rendering.mobile/mix_blend_mode_animation_propagating_isolation" }, { - "duration": "27.0", + "duration": "21.0", "name": "rendering.mobile/mix_blend_mode_animation_screen" }, { - "duration": "34.0", + "duration": "37.0", "name": "rendering.mobile/mlb_mobile_2018" }, { @@ -2840,23 +2840,23 @@ "name": "rendering.mobile/mobile_news_sandbox" }, { - "duration": "25.0", + "duration": "22.0", "name": "rendering.mobile/motion_mark_canvas_fill_shapes" }, { - "duration": "29.0", + "duration": "21.0", "name": "rendering.mobile/motion_mark_canvas_stroke_shapes" }, { - "duration": "28.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_anim_design_15" }, { - "duration": "25.0", + "duration": "19.0", "name": "rendering.mobile/motionmark_anim_focus_25" }, { - "duration": "27.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_anim_images_50" }, { @@ -2864,7 +2864,7 @@ "name": "rendering.mobile/motionmark_anim_leaves_250" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_anim_multiply_175" }, { @@ -2872,27 +2872,27 @@ "name": "rendering.mobile/motionmark_anim_suits_125" }, { - "duration": "30.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_html_composited_transforms_125" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_html_css_bouncing_blend_circles_25" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_html_css_bouncing_circles_250" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_html_css_bouncing_clipped_rects_100" }, { - "duration": "23.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_html_css_bouncing_filter_circles_15" }, { - "duration": "23.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_html_css_bouncing_gradient_circles_250" }, { @@ -2916,7 +2916,7 @@ "name": "rendering.mobile/motionmark_html_leaves_20_50" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_svg_bouncing_circles_250" }, { @@ -2924,7 +2924,7 @@ "name": "rendering.mobile/motionmark_svg_bouncing_clipped_rects_100" }, { - "duration": "23.0", + "duration": "20.0", "name": "rendering.mobile/motionmark_svg_bouncing_gradient_circles_200" }, { @@ -2936,11 +2936,11 @@ "name": "rendering.mobile/motionmark_svg_bouncing_svg_images_50" }, { - "duration": "26.0", + "duration": "25.0", "name": "rendering.mobile/new_tilings" }, { - "duration": "25.0", + "duration": "21.0", "name": "rendering.mobile/no_op_raf" }, { @@ -2952,15 +2952,15 @@ "name": "rendering.mobile/no_op_settimeout" }, { - "duration": "19.0", + "duration": "18.0", "name": "rendering.mobile/no_op_touch_handler" }, { - "duration": "26.0", + "duration": "25.0", "name": "rendering.mobile/nvidia_vertex_buffer_object" }, { - "duration": "26.0", + "duration": "28.0", "name": "rendering.mobile/nyc_gov_scroll_2018" }, { @@ -2968,7 +2968,7 @@ "name": "rendering.mobile/nytimes_mobile_2018" }, { - "duration": "26.0", + "duration": "28.0", "name": "rendering.mobile/nytimes_scroll_2018" }, { @@ -2984,39 +2984,39 @@ "name": "rendering.mobile/overlay_background_color_css_transitions_page" }, { - "duration": "4.0", + "duration": "3.0", "name": "rendering.mobile/paper_button" }, { - "duration": "4.0", + "duration": "3.0", "name": "rendering.mobile/paper_calculator" }, { - "duration": "4.0", + "duration": "3.0", "name": "rendering.mobile/paper_calculator_hit_test" }, { - "duration": "4.0", + "duration": "3.0", "name": "rendering.mobile/paper_checkbox" }, { - "duration": "4.0", + "duration": "3.0", "name": "rendering.mobile/paper_fab" }, { - "duration": "4.0", + "duration": "3.0", "name": "rendering.mobile/paper_icon_button" }, { - "duration": "4.0", + "duration": "3.0", "name": "rendering.mobile/paper_shadow" }, { - "duration": "4.0", + "duration": "3.0", "name": "rendering.mobile/paper_tabs" }, { - "duration": "4.0", + "duration": "3.0", "name": "rendering.mobile/paper_toggle_button" }, { @@ -3024,11 +3024,11 @@ "name": "rendering.mobile/parallax_effect" }, { - "duration": "26.0", + "duration": "25.0", "name": "rendering.mobile/particles" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.mobile/pbs_pathological_2018" }, { @@ -3044,11 +3044,11 @@ "name": "rendering.mobile/pinterest_mobile_2018" }, { - "duration": "4.0", + "duration": "3.0", "name": "rendering.mobile/polymer_topeka" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/put_and_create_imagebitmap_from_imagedata" }, { @@ -3080,27 +3080,27 @@ "name": "rendering.mobile/recode_pathological_2018" }, { - "duration": "24.0", + "duration": "23.0", "name": "rendering.mobile/reddit_mobile_2018" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/runway_2019" }, { - "duration": "26.0", + "duration": "28.0", "name": "rendering.mobile/san_angeles" }, { - "duration": "13.0", + "duration": "15.0", "name": "rendering.mobile/second_batch_js_heavy" }, { - "duration": "13.0", + "duration": "14.0", "name": "rendering.mobile/second_batch_js_light" }, { - "duration": "13.0", + "duration": "14.0", "name": "rendering.mobile/second_batch_js_medium" }, { @@ -3108,51 +3108,51 @@ "name": "rendering.mobile/sfgate_mobile_2018" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/sheets_render.html" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.mobile/silk_finance" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.mobile/simple_text_page" }, { - "duration": "14.0", + "duration": "16.0", "name": "rendering.mobile/simple_touch_drag" }, { - "duration": "70.0", + "duration": "64.0", "name": "rendering.mobile/skelebuddies_wasm_2020" }, { - "duration": "27.0", + "duration": "29.0", "name": "rendering.mobile/slashdot_mobile_2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "rendering.mobile/slide_drawer" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/small_texture_uploads" }, { - "duration": "4.0", + "duration": "6.0", "name": "rendering.mobile/smash_cat" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.mobile/spielzeugz" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/static_canvas_to_hw_accelerated_canvas.html" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/static_webgl_to_hw_accelerated_canvas.html" }, { @@ -3160,19 +3160,19 @@ "name": "rendering.mobile/sticky_using_webkit" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/stress_hidey_bars" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/stroke_shapes" }, { - "duration": "26.0", + "duration": "29.0", "name": "rendering.mobile/svg_icon_raster" }, { - "duration": "14.0", + "duration": "13.0", "name": "rendering.mobile/swipe_action" }, { @@ -3180,139 +3180,139 @@ "name": "rendering.mobile/swipe_to_dismiss" }, { - "duration": "17.0", + "duration": "19.0", "name": "rendering.mobile/sync_scroll_offset" }, { - "duration": "28.0", + "duration": "30.0", "name": "rendering.mobile/techcrunch_2018" }, { - "duration": "23.0", + "duration": "25.0", "name": "rendering.mobile/techcrunch_mobile_2018" }, { - "duration": "33.0", + "duration": "36.0", "name": "rendering.mobile/text_05000_pixels_per_second" }, { - "duration": "33.0", + "duration": "36.0", "name": "rendering.mobile/text_10000_pixels_per_second" }, { - "duration": "28.0", + "duration": "31.0", "name": "rendering.mobile/text_20000_pixels_per_second" }, { - "duration": "29.0", + "duration": "31.0", "name": "rendering.mobile/text_40000_pixels_per_second" }, { - "duration": "29.0", + "duration": "31.0", "name": "rendering.mobile/text_60000_pixels_per_second" }, { - "duration": "28.0", + "duration": "31.0", "name": "rendering.mobile/text_75000_pixels_per_second" }, { - "duration": "28.0", + "duration": "30.0", "name": "rendering.mobile/text_90000_pixels_per_second" }, { - "duration": "31.0", + "duration": "34.0", "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second" }, { - "duration": "32.0", + "duration": "34.0", "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second" }, { - "duration": "31.0", + "duration": "33.0", "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second" }, { - "duration": "29.0", + "duration": "31.0", "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second" }, { - "duration": "29.0", + "duration": "31.0", "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second" }, { - "duration": "29.0", + "duration": "31.0", "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second" }, { - "duration": "29.0", + "duration": "31.0", "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second" }, { - "duration": "34.0", + "duration": "36.0", "name": "rendering.mobile/text_hover_05000_pixels_per_second" }, { - "duration": "34.0", + "duration": "36.0", "name": "rendering.mobile/text_hover_10000_pixels_per_second" }, { - "duration": "31.0", + "duration": "33.0", "name": "rendering.mobile/text_hover_20000_pixels_per_second" }, { - "duration": "30.0", + "duration": "32.0", "name": "rendering.mobile/text_hover_40000_pixels_per_second" }, { - "duration": "32.0", + "duration": "31.0", "name": "rendering.mobile/text_hover_60000_pixels_per_second" }, { - "duration": "29.0", + "duration": "31.0", "name": "rendering.mobile/text_hover_75000_pixels_per_second" }, { - "duration": "29.0", + "duration": "31.0", "name": "rendering.mobile/text_hover_90000_pixels_per_second" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/theverge_article_mobile_2018" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.mobile/theverge_mobile_2018" }, { - "duration": "25.0", + "duration": "27.0", "name": "rendering.mobile/throughput_scrolling_active_handler" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.mobile/throughput_scrolling_composited" }, { - "duration": "28.0", + "duration": "30.0", "name": "rendering.mobile/throughput_scrolling_passive_handler" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.mobile/throughput_scrolling_uncomposited" }, { - "duration": "58.0", + "duration": "59.0", "name": "rendering.mobile/tiny_racing_v3_wasm_2020" }, { - "duration": "4.0", + "duration": "6.0", "name": "rendering.mobile/toBlob_duration.html" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/toBlob_duration_jpeg.html" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.mobile/toBlob_small_canvas_in_worker.html" }, { @@ -3320,43 +3320,43 @@ "name": "rendering.mobile/toggle_drawer" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.mobile/touch_handler_scrolling" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/transfer_from_imageBitmap.html" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/transform_transitions" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/transform_transitions_js_block" }, { - "duration": "21.0", + "duration": "24.0", "name": "rendering.mobile/twitch_2018" }, { - "duration": "23.0", + "duration": "26.0", "name": "rendering.mobile/twitch_mobile_pinch_2018" }, { - "duration": "23.0", + "duration": "26.0", "name": "rendering.mobile/twitter_2018" }, { - "duration": "16.0", + "duration": "20.0", "name": "rendering.mobile/twitter_mobile_2018" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.mobile/update_history_state" }, { - "duration": "16.0", + "duration": "19.0", "name": "rendering.mobile/usatoday_mobile_2018" }, { @@ -3364,11 +3364,11 @@ "name": "rendering.mobile/vertical_expansion" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.mobile/video_to_hw_accelerated_canvas" }, { - "duration": "30.0", + "duration": "22.0", "name": "rendering.mobile/video_to_sub_texture" }, { @@ -3392,7 +3392,7 @@ "name": "rendering.mobile/web_animation_value_type_color" }, { - "duration": "26.0", + "duration": "22.0", "name": "rendering.mobile/web_animation_value_type_length_3d" }, { @@ -3400,15 +3400,15 @@ "name": "rendering.mobile/web_animation_value_type_length_complex" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/web_animation_value_type_length_simple" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.mobile/web_animation_value_type_path" }, { - "duration": "33.0", + "duration": "23.0", "name": "rendering.mobile/web_animation_value_type_shadow" }, { @@ -3432,11 +3432,11 @@ "name": "rendering.mobile/web_animations_simultaneous" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/web_animations_staggered_chaining" }, { - "duration": "44.0", + "duration": "22.0", "name": "rendering.mobile/web_animations_staggered_infinite_iterations" }, { @@ -3456,43 +3456,43 @@ "name": "rendering.mobile/webp_decoding_yuv_and_gpu_rasterization" }, { - "duration": "25.0", + "duration": "29.0", "name": "rendering.mobile/wikipedia_2018" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/wikipedia_delayed_scroll_start_2018" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.mobile/wikipedia_mobile_2018" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.mobile/wordpress_2018" }, { - "duration": "28.0", + "duration": "23.0", "name": "rendering.mobile/wordpress_mobile_2018" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.mobile/worldjournal_mobile_2018" }, { - "duration": "26.0", + "duration": "28.0", "name": "rendering.mobile/wow_wiki_pathological_2018" }, { - "duration": "35.0", + "duration": "43.0", "name": "rendering.mobile/wowwiki_mobile_2018" }, { - "duration": "25.0", + "duration": "33.0", "name": "rendering.mobile/wsj_mobile_2018" }, { - "duration": "21.0", + "duration": "16.0", "name": "rendering.mobile/yahoo_answers_2018" }, { @@ -3504,15 +3504,15 @@ "name": "rendering.mobile/yahoo_news_2018" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.mobile/yahoo_news_mobile_2018" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.mobile/yahoo_sports_2018" }, { - "duration": "16.0", + "duration": "18.0", "name": "rendering.mobile/yahoo_sports_pathological_2018" }, { @@ -3520,11 +3520,11 @@ "name": "rendering.mobile/youtube_2018" }, { - "duration": "14.0", + "duration": "15.0", "name": "rendering.mobile/youtube_mobile_2018" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.mobile/zdnet_pathological_2018" }, { @@ -3532,27 +3532,31 @@ "name": "rendering.mobile/zoom_in_animation" }, { - "duration": "61.0", + "duration": "66.0", "name": "speedometer-future/http://browserbench.org/Speedometer/" }, { - "duration": "61.0", + "duration": "65.0", "name": "speedometer/http://browserbench.org/Speedometer/" }, { - "duration": "101.0", + "duration": "109.0", "name": "speedometer2-future/Speedometer2" }, { - "duration": "99.0", + "duration": "113.0", + "name": "speedometer2-pcscan/Speedometer2" + }, + { + "duration": "110.0", "name": "speedometer2/Speedometer2" }, { - "duration": "29.0", + "duration": "28.0", "name": "system_health.common_mobile/background:media:imgur:2019" }, { - "duration": "61.0", + "duration": "63.0", "name": "system_health.common_mobile/background:news:nytimes:2019" }, { @@ -3560,11 +3564,11 @@ "name": "system_health.common_mobile/background:search:google:2019" }, { - "duration": "22.0", + "duration": "23.0", "name": "system_health.common_mobile/background:social:facebook:2019" }, { - "duration": "33.0", + "duration": "35.0", "name": "system_health.common_mobile/background:tools:gmail:2019" }, { @@ -3572,23 +3576,23 @@ "name": "system_health.common_mobile/browse:chrome:newtab:2019" }, { - "duration": "8.0", + "duration": "9.0", "name": "system_health.common_mobile/browse:chrome:omnibox:2019" }, { - "duration": "74.0", + "duration": "73.0", "name": "system_health.common_mobile/browse:media:facebook_photos:2019" }, { - "duration": "48.0", + "duration": "46.0", "name": "system_health.common_mobile/browse:media:flickr_infinite_scroll:2019" }, { - "duration": "43.0", + "duration": "42.0", "name": "system_health.common_mobile/browse:media:googleplaystore:2019" }, { - "duration": "77.0", + "duration": "75.0", "name": "system_health.common_mobile/browse:media:imgur:2019" }, { @@ -3596,7 +3600,7 @@ "name": "system_health.common_mobile/browse:media:youtube:2019" }, { - "duration": "71.0", + "duration": "75.0", "name": "system_health.common_mobile/browse:news:cnn:2020" }, { @@ -3604,11 +3608,11 @@ "name": "system_health.common_mobile/browse:news:cricbuzz:2019" }, { - "duration": "52.0", + "duration": "54.0", "name": "system_health.common_mobile/browse:news:globo:2019" }, { - "duration": "90.0", + "duration": "87.0", "name": "system_health.common_mobile/browse:news:nytimes:2019" }, { @@ -3620,7 +3624,7 @@ "name": "system_health.common_mobile/browse:news:reddit:2019" }, { - "duration": "72.0", + "duration": "74.0", "name": "system_health.common_mobile/browse:news:toi:2019" }, { @@ -3628,23 +3632,23 @@ "name": "system_health.common_mobile/browse:news:washingtonpost:2019" }, { - "duration": "25.0", + "duration": "24.0", "name": "system_health.common_mobile/browse:search:amp:2018" }, { - "duration": "26.0", + "duration": "25.0", "name": "system_health.common_mobile/browse:search:amp:sxg:2019" }, { - "duration": "56.0", + "duration": "57.0", "name": "system_health.common_mobile/browse:shopping:amazon:2019" }, { - "duration": "55.0", + "duration": "57.0", "name": "system_health.common_mobile/browse:shopping:avito:2019" }, { - "duration": "61.0", + "duration": "63.0", "name": "system_health.common_mobile/browse:shopping:flipkart:2019" }, { @@ -3656,11 +3660,11 @@ "name": "system_health.common_mobile/browse:social:facebook:2019" }, { - "duration": "77.0", + "duration": "75.0", "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "4.0", + "duration": "3.0", "name": "system_health.common_mobile/browse:social:instagram:2019" }, { @@ -3672,27 +3676,27 @@ "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "70.0", + "duration": "69.0", "name": "system_health.common_mobile/browse:social:twitter:2019" }, { - "duration": "70.0", + "duration": "71.0", "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "44.0", + "duration": "42.0", "name": "system_health.common_mobile/browse:tools:maps:2019" }, { - "duration": "21.0", + "duration": "22.0", "name": "system_health.common_mobile/load:chrome:blank" }, { - "duration": "21.0", + "duration": "20.0", "name": "system_health.common_mobile/load:games:bubbles:2020" }, { - "duration": "23.0", + "duration": "22.0", "name": "system_health.common_mobile/load:games:lazors" }, { @@ -3700,15 +3704,15 @@ "name": "system_health.common_mobile/load:games:spychase:2018" }, { - "duration": "24.0", + "duration": "23.0", "name": "system_health.common_mobile/load:media:dailymotion:2019" }, { - "duration": "22.0", + "duration": "21.0", "name": "system_health.common_mobile/load:media:facebook_feed:mobile:2020" }, { - "duration": "21.0", + "duration": "20.0", "name": "system_health.common_mobile/load:media:facebook_photos:2019" }, { @@ -3716,11 +3720,11 @@ "name": "system_health.common_mobile/load:media:facebook_photos:mobile:2020" }, { - "duration": "23.0", + "duration": "24.0", "name": "system_health.common_mobile/load:media:flickr:2018" }, { - "duration": "20.0", + "duration": "21.0", "name": "system_health.common_mobile/load:media:google_images:2018" }, { @@ -3736,19 +3740,23 @@ "name": "system_health.common_mobile/load:media:youtube:2018" }, { - "duration": "23.0", + "duration": "22.0", "name": "system_health.common_mobile/load:news:bbc:2019" }, { - "duration": "22.0", + "duration": "27.0", + "name": "system_health.common_mobile/load:news:cnn:2020" + }, + { + "duration": "23.0", "name": "system_health.common_mobile/load:news:irctc:2019" }, { - "duration": "30.0", + "duration": "31.0", "name": "system_health.common_mobile/load:news:nytimes:2019" }, { - "duration": "21.0", + "duration": "22.0", "name": "system_health.common_mobile/load:news:qq:2019" }, { @@ -3756,7 +3764,7 @@ "name": "system_health.common_mobile/load:news:reddit:2019" }, { - "duration": "20.0", + "duration": "21.0", "name": "system_health.common_mobile/load:news:washingtonpost:2019" }, { @@ -3764,15 +3772,15 @@ "name": "system_health.common_mobile/load:news:wikipedia:2018" }, { - "duration": "24.0", + "duration": "22.0", "name": "system_health.common_mobile/load:search:amazon:2019" }, { - "duration": "25.0", + "duration": "23.0", "name": "system_health.common_mobile/load:search:baidu:2018" }, { - "duration": "22.0", + "duration": "21.0", "name": "system_health.common_mobile/load:search:ebay:2018" }, { @@ -3788,7 +3796,7 @@ "name": "system_health.common_mobile/load:search:yahoo:2018" }, { - "duration": "20.0", + "duration": "21.0", "name": "system_health.common_mobile/load:search:yandex:2018" }, { @@ -3804,23 +3812,23 @@ "name": "system_health.common_mobile/load:social:twitter:2019" }, { - "duration": "21.0", + "duration": "19.0", "name": "system_health.common_mobile/load:tools:docs:2019" }, { - "duration": "22.0", + "duration": "20.0", "name": "system_health.common_mobile/load:tools:drive:2019" }, { - "duration": "38.0", + "duration": "36.0", "name": "system_health.common_mobile/load:tools:dropbox:2019" }, { - "duration": "30.0", + "duration": "31.0", "name": "system_health.common_mobile/load:tools:gmail:2019" }, { - "duration": "20.0", + "duration": "21.0", "name": "system_health.common_mobile/load:tools:stackoverflow:2018" }, { @@ -3836,15 +3844,15 @@ "name": "system_health.common_mobile/long_running:tools:gmail-foreground" }, { - "duration": "32.0", + "duration": "44.0", "name": "system_health.memory_mobile/background:media:imgur:2019" }, { - "duration": "63.0", + "duration": "67.0", "name": "system_health.memory_mobile/background:news:nytimes:2019" }, { - "duration": "29.0", + "duration": "35.0", "name": "system_health.memory_mobile/background:search:google:2019" }, { @@ -3852,23 +3860,23 @@ "name": "system_health.memory_mobile/background:social:facebook:2019" }, { - "duration": "37.0", + "duration": "36.0", "name": "system_health.memory_mobile/background:tools:gmail:2019" }, { - "duration": "11.0", + "duration": "13.0", "name": "system_health.memory_mobile/browse:chrome:newtab:2019" }, { - "duration": "20.0", + "duration": "12.0", "name": "system_health.memory_mobile/browse:chrome:omnibox:2019" }, { - "duration": "88.0", + "duration": "80.0", "name": "system_health.memory_mobile/browse:media:facebook_photos:2019" }, { - "duration": "50.0", + "duration": "49.0", "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll:2019" }, { @@ -3876,19 +3884,19 @@ "name": "system_health.memory_mobile/browse:media:googleplaystore:2019" }, { - "duration": "73.0", + "duration": "74.0", "name": "system_health.memory_mobile/browse:media:imgur:2019" }, { - "duration": "58.0", + "duration": "78.0", "name": "system_health.memory_mobile/browse:media:youtube:2019" }, { - "duration": "69.0", + "duration": "70.0", "name": "system_health.memory_mobile/browse:news:cnn:2020" }, { - "duration": "3.0", + "duration": "5.0", "name": "system_health.memory_mobile/browse:news:cricbuzz:2019" }, { @@ -3896,95 +3904,95 @@ "name": "system_health.memory_mobile/browse:news:globo:2019" }, { - "duration": "84.0", + "duration": "87.0", "name": "system_health.memory_mobile/browse:news:nytimes:2019" }, { - "duration": "40.0", + "duration": "42.0", "name": "system_health.memory_mobile/browse:news:qq:2019" }, { - "duration": "62.0", + "duration": "64.0", "name": "system_health.memory_mobile/browse:news:reddit:2019" }, { - "duration": "69.0", + "duration": "75.0", "name": "system_health.memory_mobile/browse:news:toi:2019" }, { - "duration": "62.0", + "duration": "63.0", "name": "system_health.memory_mobile/browse:news:washingtonpost:2019" }, { - "duration": "29.0", + "duration": "28.0", "name": "system_health.memory_mobile/browse:search:amp:2018" }, { - "duration": "29.0", + "duration": "28.0", "name": "system_health.memory_mobile/browse:search:amp:sxg:2019" }, { - "duration": "57.0", + "duration": "61.0", "name": "system_health.memory_mobile/browse:shopping:amazon:2019" }, { - "duration": "57.0", + "duration": "61.0", "name": "system_health.memory_mobile/browse:shopping:avito:2019" }, { - "duration": "65.0", + "duration": "66.0", "name": "system_health.memory_mobile/browse:shopping:flipkart:2019" }, { - "duration": "3.0", + "duration": "5.0", "name": "system_health.memory_mobile/browse:shopping:lazada:2019" }, { - "duration": "3.0", + "duration": "5.0", "name": "system_health.memory_mobile/browse:social:facebook:2019" }, { - "duration": "3.0", + "duration": "5.0", "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "3.0", + "duration": "2.0", "name": "system_health.memory_mobile/browse:social:instagram:2019" }, { - "duration": "2.0", + "duration": "4.0", "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "67.0", + "duration": "68.0", "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "72.0", + "duration": "73.0", "name": "system_health.memory_mobile/browse:social:twitter:2019" }, { - "duration": "3.0", + "duration": "5.0", "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "46.0", + "duration": "45.0", "name": "system_health.memory_mobile/browse:tools:maps:2019" }, { - "duration": "24.0", + "duration": "26.0", "name": "system_health.memory_mobile/load:chrome:blank" }, { - "duration": "24.0", + "duration": "23.0", "name": "system_health.memory_mobile/load:games:bubbles:2020" }, { - "duration": "25.0", + "duration": "28.0", "name": "system_health.memory_mobile/load:games:lazors" }, { - "duration": "30.0", + "duration": "33.0", "name": "system_health.memory_mobile/load:games:spychase:2018" }, { @@ -3996,7 +4004,7 @@ "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" }, { @@ -4004,51 +4012,55 @@ "name": "system_health.memory_mobile/load:media:facebook_photos:mobile:2020" }, { - "duration": "28.0", + "duration": "30.0", "name": "system_health.memory_mobile/load:media:flickr:2018" }, { - "duration": "25.0", + "duration": "28.0", "name": "system_health.memory_mobile/load:media:google_images:2018" }, { - "duration": "31.0", + "duration": "35.0", "name": "system_health.memory_mobile/load:media:imgur:2018" }, { - "duration": "4.0", + "duration": "6.0", "name": "system_health.memory_mobile/load:media:soundcloud:2018" }, { - "duration": "25.0", + "duration": "28.0", "name": "system_health.memory_mobile/load:media:youtube:2018" }, { - "duration": "26.0", + "duration": "25.0", "name": "system_health.memory_mobile/load:news:bbc:2019" }, { - "duration": "27.0", + "duration": "31.0", + "name": "system_health.memory_mobile/load:news:cnn:2020" + }, + { + "duration": "30.0", "name": "system_health.memory_mobile/load:news:irctc:2019" }, { - "duration": "33.0", + "duration": "36.0", "name": "system_health.memory_mobile/load:news:nytimes:2019" }, { - "duration": "26.0", + "duration": "29.0", "name": "system_health.memory_mobile/load:news:qq:2019" }, { - "duration": "26.0", + "duration": "28.0", "name": "system_health.memory_mobile/load:news:reddit:2019" }, { - "duration": "26.0", + "duration": "28.0", "name": "system_health.memory_mobile/load:news:washingtonpost:2019" }, { - "duration": "26.0", + "duration": "28.0", "name": "system_health.memory_mobile/load:news:wikipedia:2018" }, { @@ -4060,35 +4072,35 @@ "name": "system_health.memory_mobile/load:search:baidu:2018" }, { - "duration": "25.0", + "duration": "24.0", "name": "system_health.memory_mobile/load:search:ebay:2018" }, { - "duration": "26.0", + "duration": "28.0", "name": "system_health.memory_mobile/load:search:google:2018" }, { - "duration": "25.0", + "duration": "27.0", "name": "system_health.memory_mobile/load:search:taobao:2019" }, { - "duration": "24.0", + "duration": "26.0", "name": "system_health.memory_mobile/load:search:yahoo:2018" }, { - "duration": "26.0", + "duration": "28.0", "name": "system_health.memory_mobile/load:search:yandex:2018" }, { - "duration": "26.0", + "duration": "28.0", "name": "system_health.memory_mobile/load:social:instagram:2019" }, { - "duration": "28.0", + "duration": "30.0", "name": "system_health.memory_mobile/load:social:pinterest:2019" }, { - "duration": "25.0", + "duration": "28.0", "name": "system_health.memory_mobile/load:social:twitter:2019" }, { @@ -4096,35 +4108,35 @@ "name": "system_health.memory_mobile/load:tools:docs:2019" }, { - "duration": "25.0", + "duration": "24.0", "name": "system_health.memory_mobile/load:tools:drive:2019" }, { - "duration": "39.0", + "duration": "40.0", "name": "system_health.memory_mobile/load:tools:dropbox:2019" }, { - "duration": "34.0", + "duration": "38.0", "name": "system_health.memory_mobile/load:tools:gmail:2019" }, { - "duration": "26.0", + "duration": "29.0", "name": "system_health.memory_mobile/load:tools:stackoverflow:2018" }, { - "duration": "26.0", + "duration": "28.0", "name": "system_health.memory_mobile/load:tools:weather:2019" }, { - "duration": "4.0", + "duration": "6.0", "name": "system_health.memory_mobile/long_running:tools:gmail-background" }, { - "duration": "4.0", + "duration": "6.0", "name": "system_health.memory_mobile/long_running:tools:gmail-foreground" }, { - "duration": "26.0", + "duration": "31.0", "name": "system_health.webview_startup/load:chrome:blank" }, { @@ -4132,23 +4144,23 @@ "name": "tracing.tracing_with_background_memory_infra/Facebook" }, { - "duration": "15.0", + "duration": "14.0", "name": "tracing.tracing_with_background_memory_infra/Wikipedia" }, { - "duration": "9.0", + "duration": "12.0", "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com" }, { - "duration": "10.0", + "duration": "12.0", "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/" }, { - "duration": "10.0", + "duration": "12.0", "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/" }, { - "duration": "10.0", + "duration": "13.0", "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/" }, { @@ -4164,119 +4176,119 @@ "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/" }, { - "duration": "22.0", + "duration": "47.0", "name": "v8.browsing_mobile/browse:chrome:newtab:2019" }, { - "duration": "17.0", + "duration": "31.0", "name": "v8.browsing_mobile/browse:chrome:omnibox:2019" }, { - "duration": "85.0", + "duration": "115.0", "name": "v8.browsing_mobile/browse:media:facebook_photos:2019" }, { - "duration": "58.0", + "duration": "69.0", "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll:2019" }, { - "duration": "54.0", + "duration": "67.0", "name": "v8.browsing_mobile/browse:media:googleplaystore:2019" }, { - "duration": "9.0", + "duration": "19.0", "name": "v8.browsing_mobile/browse:media:imgur:2019" }, { - "duration": "70.0", + "duration": "80.0", "name": "v8.browsing_mobile/browse:media:youtube:2019" }, { - "duration": "91.0", + "duration": "103.0", "name": "v8.browsing_mobile/browse:news:cnn:2020" }, { - "duration": "9.0", + "duration": "19.0", "name": "v8.browsing_mobile/browse:news:cricbuzz:2019" }, { - "duration": "62.0", + "duration": "75.0", "name": "v8.browsing_mobile/browse:news:globo:2019" }, { - "duration": "132.0", + "duration": "148.0", "name": "v8.browsing_mobile/browse:news:nytimes:2019" }, { - "duration": "46.0", + "duration": "57.0", "name": "v8.browsing_mobile/browse:news:qq:2019" }, { - "duration": "71.0", + "duration": "83.0", "name": "v8.browsing_mobile/browse:news:reddit:2019" }, { - "duration": "91.0", + "duration": "105.0", "name": "v8.browsing_mobile/browse:news:toi:2019" }, { - "duration": "76.0", + "duration": "95.0", "name": "v8.browsing_mobile/browse:news:washingtonpost:2019" }, { - "duration": "32.0", + "duration": "43.0", "name": "v8.browsing_mobile/browse:search:amp:2018" }, { - "duration": "31.0", + "duration": "42.0", "name": "v8.browsing_mobile/browse:search:amp:sxg:2019" }, { - "duration": "66.0", + "duration": "80.0", "name": "v8.browsing_mobile/browse:shopping:amazon:2019" }, { - "duration": "65.0", + "duration": "80.0", "name": "v8.browsing_mobile/browse:shopping:avito:2019" }, { - "duration": "72.0", + "duration": "87.0", "name": "v8.browsing_mobile/browse:shopping:flipkart:2019" }, { - "duration": "9.0", + "duration": "19.0", "name": "v8.browsing_mobile/browse:shopping:lazada:2019" }, { - "duration": "9.0", + "duration": "19.0", "name": "v8.browsing_mobile/browse:social:facebook:2019" }, { - "duration": "91.0", + "duration": "103.0", "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "9.0", + "duration": "19.0", "name": "v8.browsing_mobile/browse:social:instagram:2019" }, { - "duration": "9.0", + "duration": "19.0", "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll:2019" }, { - "duration": "80.0", + "duration": "93.0", "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "91.0", + "duration": "102.0", "name": "v8.browsing_mobile/browse:social:twitter:2019" }, { - "duration": "84.0", + "duration": "94.0", "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "52.0", + "duration": "83.0", "name": "v8.browsing_mobile/browse:tools:maps:2019" }, { @@ -4284,19 +4296,19 @@ "name": "webrtc/10s_datachannel_transfer" }, { - "duration": "20.0", + "duration": "19.0", "name": "webrtc/canvas_capture_peer_connection" }, { - "duration": "30.0", + "duration": "29.0", "name": "webrtc/codec_constraints_h264" }, { - "duration": "30.0", + "duration": "29.0", "name": "webrtc/codec_constraints_vp8" }, { - "duration": "30.0", + "duration": "29.0", "name": "webrtc/codec_constraints_vp9" }, { @@ -4304,11 +4316,35 @@ "name": "webrtc/hd_local_stream_10s" }, { - "duration": "31.0", + "duration": "20.0", + "name": "webrtc/insertable_streams_video_processing_camera_canvas2d_video" + }, + { + "duration": "19.0", + "name": "webrtc/insertable_streams_video_processing_camera_drop_video" + }, + { + "duration": "20.0", + "name": "webrtc/insertable_streams_video_processing_camera_webgl_pc" + }, + { + "duration": "19.0", + "name": "webrtc/insertable_streams_video_processing_camera_webgl_video" + }, + { + "duration": "19.0", + "name": "webrtc/insertable_streams_video_processing_pc_webgl_video" + }, + { + "duration": "20.0", + "name": "webrtc/insertable_streams_video_processing_video_webgl_video" + }, + { + "duration": "30.0", "name": "webrtc/multiple_peerconnections" }, { - "duration": "33.0", + "duration": "32.0", "name": "webrtc/pause_play_peerconnections" } ] \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/linux-perf_timing.json b/tools/perf/core/shard_maps/timing_data/linux-perf_timing.json index 5f741862..3b619a8 100644 --- a/tools/perf/core/shard_maps/timing_data/linux-perf_timing.json +++ b/tools/perf/core/shard_maps/timing_data/linux-perf_timing.json
@@ -1,10 +1,10 @@ [ { - "duration": "31.0", + "duration": "17.0", "name": "blink_perf.accessibility/build-table.html" }, { - "duration": "15.0", + "duration": "13.0", "name": "blink_perf.accessibility/focus-links.html" }, { @@ -16,7 +16,7 @@ "name": "blink_perf.accessibility/many-text-changes-deep-block-subtree.html" }, { - "duration": "17.0", + "duration": "16.0", "name": "blink_perf.accessibility/many-text-changes-deep-hidden-subtree.html" }, { @@ -28,7 +28,7 @@ "name": "blink_perf.accessibility/many-text-changes-small-wait-between.html" }, { - "duration": "15.0", + "duration": "14.0", "name": "blink_perf.accessibility/textarea-append.html" }, { @@ -60,7 +60,7 @@ "name": "blink_perf.bindings/gc-mini-tree.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.bindings/gc-tree.html" }, { @@ -236,7 +236,7 @@ "name": "blink_perf.bindings/worker-transferable-to-worker.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.css/AttributeDescendantSelector.html" }, { @@ -260,7 +260,7 @@ "name": "blink_perf.css/ChangeStyleCSSVariableRecalc.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.css/ChangeStyleChildClassSelector.html" }, { @@ -272,7 +272,7 @@ "name": "blink_perf.css/ChangeStyleCustomPropertyDeclaration.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.css/ChangeStyleElementSelector.html" }, { @@ -280,7 +280,7 @@ "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html" }, { @@ -296,7 +296,7 @@ "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html" }, { @@ -320,7 +320,7 @@ "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html" }, { @@ -376,11 +376,11 @@ "name": "blink_perf.css/FocusUpdate.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.css/LoadBootstrapBlog.html" }, { - "duration": "6.0", + "duration": "7.0", "name": "blink_perf.css/LoadMaterializeStarterPage.html" }, { @@ -400,7 +400,7 @@ "name": "blink_perf.dom/custom-element-default-style-with-shadow.html" }, { - "duration": "6.0", + "duration": "9.0", "name": "blink_perf.dom/custom-element-default-style.html" }, { @@ -416,7 +416,7 @@ "name": "blink_perf.dom/modify-element-id.html" }, { - "duration": "1.0", + "duration": "2.0", "name": "blink_perf.dom/modify-element-title.html" }, { @@ -440,7 +440,7 @@ "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html" }, { @@ -528,7 +528,7 @@ "name": "blink_perf.layout/attach-inlines.html" }, { - "duration": "6.0", + "duration": "7.0", "name": "blink_perf.layout/auto-grid-lots-of-data.html" }, { @@ -612,7 +612,7 @@ "name": "blink_perf.layout/fixed-grid-lots-of-data.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.layout/fixed-grid-lots-of-stretched-data.html" }, { @@ -656,7 +656,7 @@ "name": "blink_perf.layout/flexbox-row-wrap.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.layout/flexbox-with-stretch-layout.html" }, { @@ -700,7 +700,7 @@ "name": "blink_perf.layout/floats_50_100_nested.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.layout/floats_show_hide.html" }, { @@ -716,7 +716,7 @@ "name": "blink_perf.layout/japanese-kokoro-insert.html" }, { - "duration": "8.0", + "duration": "9.0", "name": "blink_perf.layout/large-grid.html" }, { @@ -764,7 +764,7 @@ "name": "blink_perf.layout/line-layout-line-height.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.layout/line-layout-repeat-append-select.html" }, { @@ -828,7 +828,7 @@ "name": "blink_perf.layout/multicol/lots-of-text-balanced.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.layout/multicol/nested-forced-breaks.html" }, { @@ -844,7 +844,7 @@ "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html" }, { - "duration": "9.0", + "duration": "6.0", "name": "blink_perf.layout/nested-grid-lots-of-tracks.html" }, { @@ -884,11 +884,11 @@ "name": "blink_perf.owp_storage/blob-perf-files.html" }, { - "duration": "7.0", + "duration": "8.0", "name": "blink_perf.owp_storage/blob-perf-ipc.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.owp_storage/blob-perf-shm.html" }, { @@ -896,27 +896,27 @@ "name": "blink_perf.owp_storage/blob-perf-tiny.html" }, { - "duration": "8.0", + "duration": "9.0", "name": "blink_perf.owp_storage/idb-load-docs.html" }, { - "duration": "8.0", + "duration": "10.0", "name": "blink_perf.owp_storage/idb-put-all.html" }, { - "duration": "10.0", + "duration": "12.0", "name": "blink_perf.owp_storage/idb-put.html" }, { - "duration": "8.0", + "duration": "9.0", "name": "blink_perf.paint/appending-text.html" }, { - "duration": "8.0", + "duration": "9.0", "name": "blink_perf.paint/color-changes.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.paint/complex-content-slow-scroll.html" }, { @@ -924,7 +924,7 @@ "name": "blink_perf.paint/complex-iframe-filtered.html" }, { - "duration": "16.0", + "duration": "17.0", "name": "blink_perf.paint/contain-update-layer-tree.html" }, { @@ -944,7 +944,7 @@ "name": "blink_perf.paint/large-table-collapsed-border-change.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.paint/modify-selection.html" }, { @@ -964,11 +964,11 @@ "name": "blink_perf.parser/css-parser-yui.html" }, { - "duration": "27.0", + "duration": "14.0", "name": "blink_perf.parser/declarative-shadow-dom-cloning.html" }, { - "duration": "12.0", + "duration": "9.0", "name": "blink_perf.parser/declarative-shadow-dom.html" }, { @@ -984,7 +984,7 @@ "name": "blink_perf.parser/html5-full-render.html" }, { - "duration": "24.0", + "duration": "22.0", "name": "blink_perf.parser/iframe-append-remove.html" }, { @@ -1072,7 +1072,7 @@ "name": "blink_perf.parser/textarea-parsing.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.parser/tiny-innerHTML.html" }, { @@ -1080,7 +1080,7 @@ "name": "blink_perf.parser/url-parser.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.parser/xml-parser.html" }, { @@ -1148,7 +1148,7 @@ "name": "blink_perf.shadow_dom/style-sheet-insert.html" }, { - "duration": "4.0", + "duration": "3.0", "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html" }, { @@ -1296,7 +1296,7 @@ "name": "blink_perf.svg/Samurai.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.svg/SierpinskiCarpet.html" }, { @@ -1324,23 +1324,23 @@ "name": "blink_perf.svg/Worldcup.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.webaudio/audio-buffer-source-node.html" }, { - "duration": "22.0", + "duration": "60.0", "name": "blink_perf.webaudio/audio-worklet-node.html" }, { - "duration": "23.0", + "duration": "61.0", "name": "blink_perf.webaudio/biquad-filter-node.html" }, { - "duration": "21.0", + "duration": "60.0", "name": "blink_perf.webaudio/gain-node.html" }, { - "duration": "23.0", + "duration": "24.0", "name": "blink_perf.webaudio/panner-node.html" }, { @@ -1372,7 +1372,7 @@ "name": "jetstream/JetStream" }, { - "duration": "138.0", + "duration": "136.0", "name": "jetstream2/JetStream2" }, { @@ -1380,11 +1380,11 @@ "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html" }, { - "duration": "12.0", + "duration": "14.0", "name": "loading.desktop/24h_cold" }, { - "duration": "15.0", + "duration": "17.0", "name": "loading.desktop/24h_warm" }, { @@ -1392,15 +1392,15 @@ "name": "loading.desktop/AirBnB_cold" }, { - "duration": "27.0", + "duration": "28.0", "name": "loading.desktop/AirBnB_warm" }, { - "duration": "11.0", + "duration": "12.0", "name": "loading.desktop/Aljayyash_cold" }, { - "duration": "13.0", + "duration": "14.0", "name": "loading.desktop/Aljayyash_warm" }, { @@ -1408,7 +1408,7 @@ "name": "loading.desktop/AllRecipes_cold" }, { - "duration": "24.0", + "duration": "25.0", "name": "loading.desktop/AllRecipes_warm" }, { @@ -1416,15 +1416,15 @@ "name": "loading.desktop/ArsTechnica_cold" }, { - "duration": "35.0", + "duration": "29.0", "name": "loading.desktop/ArsTechnica_warm" }, { - "duration": "12.0", + "duration": "13.0", "name": "loading.desktop/Baidu_cold" }, { - "duration": "14.0", + "duration": "16.0", "name": "loading.desktop/Baidu_warm" }, { @@ -1448,11 +1448,11 @@ "name": "loading.desktop/Colorado.edu_cold" }, { - "duration": "16.0", + "duration": "17.0", "name": "loading.desktop/Colorado.edu_warm" }, { - "duration": "14.0", + "duration": "13.0", "name": "loading.desktop/Danawa_cold" }, { @@ -1460,7 +1460,7 @@ "name": "loading.desktop/Danawa_warm" }, { - "duration": "14.0", + "duration": "13.0", "name": "loading.desktop/Daum_cold" }, { @@ -1488,15 +1488,15 @@ "name": "loading.desktop/Elmundo_cold" }, { - "duration": "3.0", + "duration": "4.0", "name": "loading.desktop/Elmundo_warm" }, { - "duration": "13.0", + "duration": "22.0", "name": "loading.desktop/FC2Blog_cold" }, { - "duration": "16.0", + "duration": "17.0", "name": "loading.desktop/FC2Blog_warm" }, { @@ -1524,11 +1524,11 @@ "name": "loading.desktop/Flickr_warm" }, { - "duration": "19.0", + "duration": "12.0", "name": "loading.desktop/FlipKart_cold" }, { - "duration": "15.0", + "duration": "14.0", "name": "loading.desktop/FlipKart_warm" }, { @@ -1536,15 +1536,15 @@ "name": "loading.desktop/Free.fr_cold" }, { - "duration": "13.0", + "duration": "14.0", "name": "loading.desktop/Free.fr_warm" }, { - "duration": "12.0", + "duration": "13.0", "name": "loading.desktop/HTML5Rocks_cold" }, { - "duration": "15.0", + "duration": "22.0", "name": "loading.desktop/HTML5Rocks_warm" }, { @@ -1556,31 +1556,31 @@ "name": "loading.desktop/Haraj_warm" }, { - "duration": "13.0", + "duration": "12.0", "name": "loading.desktop/HatenaBookmark_cold" }, { - "duration": "16.0", + "duration": "15.0", "name": "loading.desktop/HatenaBookmark_warm" }, { - "duration": "13.0", + "duration": "14.0", "name": "loading.desktop/IGN_cold" }, { - "duration": "16.0", + "duration": "17.0", "name": "loading.desktop/IGN_warm" }, { - "duration": "13.0", + "duration": "14.0", "name": "loading.desktop/IMDB_cold" }, { - "duration": "16.0", + "duration": "17.0", "name": "loading.desktop/IMDB_warm" }, { - "duration": "12.0", + "duration": "13.0", "name": "loading.desktop/IndiaTimes_cold" }, { @@ -1588,11 +1588,11 @@ "name": "loading.desktop/IndiaTimes_warm" }, { - "duration": "13.0", + "duration": "15.0", "name": "loading.desktop/Kakaku_cold" }, { - "duration": "16.0", + "duration": "18.0", "name": "loading.desktop/Kakaku_warm" }, { @@ -1600,11 +1600,11 @@ "name": "loading.desktop/Kenh14_cold" }, { - "duration": "25.0", + "duration": "26.0", "name": "loading.desktop/Kenh14_warm" }, { - "duration": "11.0", + "duration": "12.0", "name": "loading.desktop/Mercadolivre_cold" }, { @@ -1612,23 +1612,23 @@ "name": "loading.desktop/Mercadolivre_warm" }, { - "duration": "13.0", + "duration": "14.0", "name": "loading.desktop/Naver_cold" }, { - "duration": "15.0", + "duration": "23.0", "name": "loading.desktop/Naver_warm" }, { - "duration": "11.0", + "duration": "12.0", "name": "loading.desktop/Orange_cold" }, { - "duration": "13.0", + "duration": "14.0", "name": "loading.desktop/Orange_warm" }, { - "duration": "13.0", + "duration": "14.0", "name": "loading.desktop/Pantip_cold" }, { @@ -1640,15 +1640,15 @@ "name": "loading.desktop/PremierLeague_cold" }, { - "duration": "16.0", + "duration": "17.0", "name": "loading.desktop/PremierLeague_warm" }, { - "duration": "14.0", + "duration": "16.0", "name": "loading.desktop/QQ_cold" }, { - "duration": "19.0", + "duration": "20.0", "name": "loading.desktop/QQ_warm" }, { @@ -1660,27 +1660,27 @@ "name": "loading.desktop/REI_warm" }, { - "duration": "12.0", + "duration": "14.0", "name": "loading.desktop/Ruten_cold" }, { - "duration": "15.0", + "duration": "16.0", "name": "loading.desktop/Ruten_warm" }, { - "duration": "18.0", + "duration": "20.0", "name": "loading.desktop/Sina_cold" }, { - "duration": "26.0", + "duration": "28.0", "name": "loading.desktop/Sina_warm" }, { - "duration": "15.0", + "duration": "17.0", "name": "loading.desktop/Taobao_cold" }, { - "duration": "21.0", + "duration": "23.0", "name": "loading.desktop/Taobao_warm" }, { @@ -1688,7 +1688,7 @@ "name": "loading.desktop/TheOnion_cold" }, { - "duration": "19.0", + "duration": "18.0", "name": "loading.desktop/TheOnion_warm" }, { @@ -1700,7 +1700,7 @@ "name": "loading.desktop/TheVerge_warm" }, { - "duration": "15.0", + "duration": "16.0", "name": "loading.desktop/TicketMaster_cold" }, { @@ -1708,7 +1708,7 @@ "name": "loading.desktop/TicketMaster_warm" }, { - "duration": "16.0", + "duration": "17.0", "name": "loading.desktop/Vietnamnet_cold" }, { @@ -1716,11 +1716,11 @@ "name": "loading.desktop/Vietnamnet_warm" }, { - "duration": "13.0", + "duration": "15.0", "name": "loading.desktop/Vnexpress_cold" }, { - "duration": "26.0", + "duration": "19.0", "name": "loading.desktop/Vnexpress_warm" }, { @@ -1736,7 +1736,7 @@ "name": "loading.desktop/Yandex_cold" }, { - "duration": "15.0", + "duration": "16.0", "name": "loading.desktop/Yandex_warm" }, { @@ -1744,19 +1744,19 @@ "name": "loading.desktop/amazon.co.jp_cold" }, { - "duration": "19.0", + "duration": "18.0", "name": "loading.desktop/amazon.co.jp_warm" }, { - "duration": "14.0", + "duration": "15.0", "name": "loading.desktop/ja.wikipedia_cold" }, { - "duration": "17.0", + "duration": "18.0", "name": "loading.desktop/ja.wikipedia_warm" }, { - "duration": "15.0", + "duration": "16.0", "name": "loading.desktop/money.cnn_cold" }, { @@ -1772,11 +1772,11 @@ "name": "loading.desktop/ru.wikipedia_warm" }, { - "duration": "3.0", + "duration": "4.0", "name": "loading.desktop/uol.com.br_cold" }, { - "duration": "3.0", + "duration": "4.0", "name": "loading.desktop/uol.com.br_warm" }, { @@ -1788,31 +1788,35 @@ "name": "loading.desktop/yahoo.co.jp_warm" }, { - "duration": "9.0", + "duration": "10.0", "name": "media.desktop/mse.html?media=aac_audio.mp4" }, { - "duration": "9.0", + "duration": "10.0", "name": "media.desktop/mse.html?media=aac_audio.mp4,h264_video.mp4" }, { - "duration": "9.0", + "duration": "10.0", "name": "media.desktop/mse.html?media=h264_video.mp4" }, { - "duration": "9.0", + "duration": "10.0", "name": "media.desktop/mse.html?media=tulip0.av1.mp4" }, { - "duration": "9.0", + "duration": "10.0", "name": "media.desktop/mse.html?media=tulip2.vp9.webm" }, { - "duration": "19.0", + "duration": "127.0", + "name": "media.desktop/video.html?src=boat_1080p60fps_vp9.webm" + }, + { + "duration": "15.0", "name": "media.desktop/video.html?src=crowd1080.mp4" }, { - "duration": "20.0", + "duration": "17.0", "name": "media.desktop/video.html?src=crowd1080.webm" }, { @@ -1820,23 +1824,27 @@ "name": "media.desktop/video.html?src=crowd1080_vp9.webm" }, { - "duration": "9.0", + "duration": "128.0", + "name": "media.desktop/video.html?src=foodmarket_720p30fps.mp4" + }, + { + "duration": "10.0", "name": "media.desktop/video.html?src=garden2_10s.mp4&seek" }, { - "duration": "9.0", + "duration": "10.0", "name": "media.desktop/video.html?src=garden2_10s.webm&seek" }, { - "duration": "9.0", + "duration": "10.0", "name": "media.desktop/video.html?src=smpte_3840x2160_60fps_vp9.webm&seek" }, { - "duration": "15.0", + "duration": "16.0", "name": "media.desktop/video.html?src=tulip0.av1.mp4" }, { - "duration": "9.0", + "duration": "10.0", "name": "media.desktop/video.html?src=tulip0.av1.mp4&seek" }, { @@ -1848,11 +1856,11 @@ "name": "media.desktop/video.html?src=tulip2.mp3&type=audio" }, { - "duration": "8.0", + "duration": "10.0", "name": "media.desktop/video.html?src=tulip2.mp3&type=audio&seek" }, { - "duration": "22.0", + "duration": "23.0", "name": "media.desktop/video.html?src=tulip2.mp4" }, { @@ -1868,19 +1876,19 @@ "name": "media.desktop/video.html?src=tulip2.ogg&type=audio&seek" }, { - "duration": "22.0", + "duration": "23.0", "name": "media.desktop/video.html?src=tulip2.vp9.webm" }, { - "duration": "15.0", + "duration": "16.0", "name": "media.desktop/video.html?src=tulip2.vp9.webm&background" }, { - "duration": "23.0", + "duration": "26.0", "name": "media.desktop/video.html?src=tulip2.vp9.webm_WiFi" }, { - "duration": "16.0", + "duration": "14.0", "name": "memory.desktop/TrivialAnimationPageSharedPageState" }, { @@ -1888,7 +1896,7 @@ "name": "memory.desktop/TrivialBlinkingCursorPageSharedPageState" }, { - "duration": "15.0", + "duration": "14.0", "name": "memory.desktop/TrivialBlurAnimationPageSharedPageState" }, { @@ -1920,63 +1928,63 @@ "name": "octane/Octane" }, { - "duration": "43.0", + "duration": "39.0", "name": "power.desktop/TrivialAnimationPageSharedPageState" }, { - "duration": "42.0", + "duration": "39.0", "name": "power.desktop/TrivialBlinkingCursorPageSharedPageState" }, { - "duration": "43.0", + "duration": "39.0", "name": "power.desktop/TrivialBlurAnimationPageSharedPageState" }, { - "duration": "42.0", + "duration": "39.0", "name": "power.desktop/TrivialCanvasPageSharedPageState" }, { - "duration": "43.0", + "duration": "39.0", "name": "power.desktop/TrivialFullscreenVideoPageSharedPageState" }, { - "duration": "42.0", + "duration": "39.0", "name": "power.desktop/TrivialGifPageSharedPageState" }, { - "duration": "44.0", + "duration": "41.0", "name": "power.desktop/TrivialScrollingPageSharedPageState" }, { - "duration": "43.0", + "duration": "39.0", "name": "power.desktop/TrivialWebGLPageSharedPageState" }, { - "duration": "50.0", + "duration": "46.0", "name": "power.desktop/abcnews" }, { - "duration": "38.0", + "duration": "39.0", "name": "power.desktop/indiatimes" }, { - "duration": "43.0", + "duration": "39.0", "name": "power.desktop/instagram" }, { - "duration": "38.0", + "duration": "39.0", "name": "power.desktop/microsoft" }, { - "duration": "43.0", + "duration": "40.0", "name": "power.desktop/sina" }, { - "duration": "43.0", + "duration": "39.0", "name": "power.desktop/slideshare" }, { - "duration": "38.0", + "duration": "40.0", "name": "power.desktop/uol" }, { @@ -2036,7 +2044,7 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html" }, { @@ -2080,7 +2088,7 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.desktop/accu_weather_2018" }, { @@ -2100,7 +2108,7 @@ "name": "rendering.desktop/analog_clock_svg" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/animometer_webgl" }, { @@ -2109,10 +2117,18 @@ }, { "duration": "19.0", + "name": "rendering.desktop/animometer_webgl_fast_call" + }, + { + "duration": "20.0", "name": "rendering.desktop/animometer_webgl_indexed" }, { "duration": "19.0", + "name": "rendering.desktop/animometer_webgl_indexed_fast_call" + }, + { + "duration": "19.0", "name": "rendering.desktop/animometer_webgl_indexed_multi_draw" }, { @@ -2124,14 +2140,18 @@ "name": "rendering.desktop/animometer_webgl_multi_draw" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/aquarium" }, { - "duration": "21.0", + "duration": "20.0", "name": "rendering.desktop/aquarium_20k" }, { + "duration": "20.0", + "name": "rendering.desktop/aquarium_20k_fast_call" + }, + { "duration": "18.0", "name": "rendering.desktop/background_color_animation" }, @@ -2148,15 +2168,15 @@ "name": "rendering.desktop/balls_css_key_frame_animations_composited_transform" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/balls_css_transition_2_properties" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/balls_css_transition_40_properties" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/balls_css_transition_all_properties" }, { @@ -2168,19 +2188,19 @@ "name": "rendering.desktop/balls_javascript_css" }, { - "duration": "19.0", + "duration": "17.0", "name": "rendering.desktop/balls_svg_animations" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/blob" }, { - "duration": "20.0", + "duration": "15.0", "name": "rendering.desktop/blogspot_2018" }, { - "duration": "16.0", + "duration": "13.0", "name": "rendering.desktop/blogspot_pinch_2018" }, { @@ -2188,7 +2208,7 @@ "name": "rendering.desktop/blur_rotating_background" }, { - "duration": "12.0", + "duration": "13.0", "name": "rendering.desktop/booking.com_2018" }, { @@ -2200,7 +2220,7 @@ "name": "rendering.desktop/bouncing_balls_15" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.desktop/bouncing_balls_shadow" }, { @@ -2220,11 +2240,11 @@ "name": "rendering.desktop/bouncing_svg_images" }, { - "duration": "20.0", + "duration": "22.0", "name": "rendering.desktop/camera_to_webgl" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/canvas2d_to_texture.html" }, { @@ -2236,11 +2256,11 @@ "name": "rendering.desktop/canvas_10000_pixels_per_second" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.desktop/canvas_20000_pixels_per_second" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.desktop/canvas_40000_pixels_per_second" }, { @@ -2256,7 +2276,7 @@ "name": "rendering.desktop/canvas_90000_pixels_per_second" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/canvas_animation_no_clear" }, { @@ -2264,27 +2284,27 @@ "name": "rendering.desktop/canvas_arcs" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/canvas_font_cycler" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/canvas_lines" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/canvas_to_blob" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/canvas_to_canvas_draw" }, { - "duration": "11.0", + "duration": "12.0", "name": "rendering.desktop/cats_unscaled" }, { - "duration": "10.0", + "duration": "11.0", "name": "rendering.desktop/cats_viewport_width" }, { @@ -2292,7 +2312,7 @@ "name": "rendering.desktop/cc_poster_circle" }, { - "duration": "14.0", + "duration": "15.0", "name": "rendering.desktop/cc_scroll_text_only" }, { @@ -2300,11 +2320,11 @@ "name": "rendering.desktop/chip_tune" }, { - "duration": "14.0", + "duration": "19.0", "name": "rendering.desktop/cnn_2018" }, { - "duration": "14.0", + "duration": "17.0", "name": "rendering.desktop/cnn_pinch_2018" }, { @@ -2312,7 +2332,7 @@ "name": "rendering.desktop/compositor_heavy_animation" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/crafty_mind" }, { @@ -2320,91 +2340,91 @@ "name": "rendering.desktop/css_animations_many_keyframes" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/css_animations_simultaneous_inline_style" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/css_animations_simultaneous_new_element" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/css_animations_simultaneous_style_element" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/css_animations_simultaneous_updating_class" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/css_animations_staggered_infinite_iterations" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.desktop/css_animations_staggered_inline_style" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.desktop/css_animations_staggered_new_element" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.desktop/css_animations_staggered_style_element" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.desktop/css_animations_staggered_updating_class" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.desktop/css_animations_triggered_inline_style" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.desktop/css_animations_triggered_new_element" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/css_animations_triggered_style_element" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.desktop/css_animations_triggered_updating_class" }, { - "duration": "19.0", + "duration": "22.0", "name": "rendering.desktop/css_opacity_plus_n_layers_99" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/css_transitions_inline_style" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/css_transitions_new_element" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/css_transitions_staggered_inline_style" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/css_transitions_staggered_new_element" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/css_transitions_staggered_style_element" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/css_transitions_staggered_updating_class" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/css_transitions_style_element" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/css_transitions_triggered_inline_style" }, { @@ -2412,59 +2432,59 @@ "name": "rendering.desktop/css_transitions_triggered_new_element" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.desktop/css_transitions_triggered_style_element" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.desktop/css_transitions_triggered_updating_class" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.desktop/css_transitions_updating_class" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.desktop/css_value_type_color" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.desktop/css_value_type_filter" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.desktop/css_value_type_length" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.desktop/css_value_type_length_complex" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.desktop/css_value_type_length_simple" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.desktop/css_value_type_path" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.desktop/css_value_type_shadow" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.desktop/css_value_type_transform_complex" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.desktop/css_value_type_transform_simple" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.desktop/docs_paper.html" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.desktop/docs_resume.html" }, { @@ -2484,7 +2504,7 @@ "name": "rendering.desktop/dynamic_canvas_to_hw_accelerated_canvas.html" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/dynamic_cube_map" }, { @@ -2492,7 +2512,7 @@ "name": "rendering.desktop/dynamic_webgl_to_hw_accelerated_canvas.html" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.desktop/earth" }, { @@ -2500,11 +2520,11 @@ "name": "rendering.desktop/ebay_2018" }, { - "duration": "14.0", + "duration": "15.0", "name": "rendering.desktop/ebay_pinch_2018" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.desktop/effect_games" }, { @@ -2512,15 +2532,15 @@ "name": "rendering.desktop/espn_2018" }, { - "duration": "12.0", + "duration": "13.0", "name": "rendering.desktop/espn_pinch_2018" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/extra_large_texture_uploads" }, { - "duration": "11.0", + "duration": "12.0", "name": "rendering.desktop/facebook_2018" }, { @@ -2576,7 +2596,7 @@ "name": "rendering.desktop/google_calendar_2018" }, { - "duration": "11.0", + "duration": "12.0", "name": "rendering.desktop/google_calendar_pinch_2018" }, { @@ -2584,19 +2604,19 @@ "name": "rendering.desktop/google_docs_2018" }, { - "duration": "11.0", + "duration": "12.0", "name": "rendering.desktop/google_image_pinch_2018" }, { - "duration": "11.0", + "duration": "12.0", "name": "rendering.desktop/google_image_search_2018" }, { - "duration": "11.0", + "duration": "12.0", "name": "rendering.desktop/google_plus_2018" }, { - "duration": "11.0", + "duration": "12.0", "name": "rendering.desktop/google_search_pinch_2018" }, { @@ -2604,11 +2624,11 @@ "name": "rendering.desktop/google_web_search_2018" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/gpu_bound_shader.html" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/guimark_vector_chart" }, { @@ -2640,11 +2660,11 @@ "name": "rendering.desktop/infinite_scroll_root_n_layers_99" }, { - "duration": "18.0", + "duration": "16.0", "name": "rendering.desktop/jarro_doverson" }, { - "duration": "11.0", + "duration": "12.0", "name": "rendering.desktop/jpeg_decoding_rgb_and_gpu_rasterization" }, { @@ -2652,11 +2672,11 @@ "name": "rendering.desktop/jpeg_decoding_yuv_and_gpu_rasterization" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/js_full_screen_invalidation" }, { - "duration": "20.0", + "duration": "18.0", "name": "rendering.desktop/js_opacity_plus_n_layers_99" }, { @@ -2664,11 +2684,11 @@ "name": "rendering.desktop/js_paint_plus_n_layers_99" }, { - "duration": "19.0", + "duration": "18.0", "name": "rendering.desktop/js_poster_circle" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.desktop/js_scroll_text_only" }, { @@ -2680,7 +2700,7 @@ "name": "rendering.desktop/keyframed_animations" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/large_texture_uploads" }, { @@ -2696,83 +2716,87 @@ "name": "rendering.desktop/lost_crypt" }, { - "duration": "15.0", - "name": "rendering.desktop/main_0fps_impl_60fps" - }, - { - "duration": "15.0", - "name": "rendering.desktop/main_0fps_impl_60fps_no_update" - }, - { - "duration": "15.0", - "name": "rendering.desktop/main_0fps_impl_60fps_no_update_jank" - }, - { - "duration": "15.0", - "name": "rendering.desktop/main_0fps_with_jank_impl_0fps" - }, - { - "duration": "15.0", - "name": "rendering.desktop/main_15fps_impl_0fps" - }, - { - "duration": "15.0", - "name": "rendering.desktop/main_15fps_with_jank_impl_0fps" - }, - { - "duration": "15.0", - "name": "rendering.desktop/main_30fps_impl_0fps" - }, - { - "duration": "15.0", - "name": "rendering.desktop/main_30fps_impl_60fps" - }, - { - "duration": "15.0", - "name": "rendering.desktop/main_60fps_impl_0fps" - }, - { - "duration": "15.0", - "name": "rendering.desktop/main_60fps_impl_60fps" - }, - { - "duration": "15.0", - "name": "rendering.desktop/main_60fps_impl_60fps_no_update" - }, - { - "duration": "15.0", - "name": "rendering.desktop/main_60fps_impl_60fps_no_update_jank" - }, - { - "duration": "30.0", - "name": "rendering.desktop/main_60fps_with_extreme_jank_impl_0fps" - }, - { - "duration": "15.0", - "name": "rendering.desktop/main_60fps_with_jank_and_delay_impl_60fps" - }, - { - "duration": "15.0", - "name": "rendering.desktop/main_60fps_with_jank_impl_0fps" + "duration": "48.0", + "name": "rendering.desktop/lost_crypt_fast_call" }, { "duration": "16.0", + "name": "rendering.desktop/main_0fps_impl_60fps" + }, + { + "duration": "16.0", + "name": "rendering.desktop/main_0fps_impl_60fps_no_update" + }, + { + "duration": "16.0", + "name": "rendering.desktop/main_0fps_impl_60fps_no_update_jank" + }, + { + "duration": "16.0", + "name": "rendering.desktop/main_0fps_with_jank_impl_0fps" + }, + { + "duration": "16.0", + "name": "rendering.desktop/main_15fps_impl_0fps" + }, + { + "duration": "16.0", + "name": "rendering.desktop/main_15fps_with_jank_impl_0fps" + }, + { + "duration": "16.0", + "name": "rendering.desktop/main_30fps_impl_0fps" + }, + { + "duration": "16.0", + "name": "rendering.desktop/main_30fps_impl_60fps" + }, + { + "duration": "16.0", + "name": "rendering.desktop/main_60fps_impl_0fps" + }, + { + "duration": "16.0", + "name": "rendering.desktop/main_60fps_impl_60fps" + }, + { + "duration": "16.0", + "name": "rendering.desktop/main_60fps_impl_60fps_no_update" + }, + { + "duration": "16.0", + "name": "rendering.desktop/main_60fps_impl_60fps_no_update_jank" + }, + { + "duration": "31.0", + "name": "rendering.desktop/main_60fps_with_extreme_jank_impl_0fps" + }, + { + "duration": "16.0", + "name": "rendering.desktop/main_60fps_with_jank_and_delay_impl_60fps" + }, + { + "duration": "16.0", + "name": "rendering.desktop/main_60fps_with_jank_impl_0fps" + }, + { + "duration": "18.0", "name": "rendering.desktop/main_animations_half_presented" }, { - "duration": "15.0", + "duration": "18.0", "name": "rendering.desktop/man_in_blue" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/many_images" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/many_planets_deep" }, { - "duration": "13.0", + "duration": "14.0", "name": "rendering.desktop/maps_move_2018" }, { @@ -2780,11 +2804,11 @@ "name": "rendering.desktop/maps_perf_test" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/medium_texture_uploads" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/megi_dish" }, { @@ -2792,15 +2816,19 @@ "name": "rendering.desktop/microgame_fps" }, { - "duration": "15.0", + "duration": "48.0", + "name": "rendering.desktop/microgame_fps_fast_call" + }, + { + "duration": "16.0", "name": "rendering.desktop/microsoft_asteroid_belt" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/microsoft_fireflies" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/microsoft_fish_ie_tank" }, { @@ -2808,51 +2836,51 @@ "name": "rendering.desktop/microsoft_performance" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/microsoft_snow" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/microsoft_speed_reading" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/microsoft_tweet_map" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/microsoft_video_city" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.desktop/microsoft_worker_fountains" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/mix_10k" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/mix_blend_mode_animation_difference" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/mix_blend_mode_animation_hue" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/mix_blend_mode_animation_propagating_isolation" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/mix_blend_mode_animation_screen" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.desktop/motion_mark_canvas_fill_shapes" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/motion_mark_canvas_stroke_shapes" }, { @@ -2860,11 +2888,11 @@ "name": "rendering.desktop/new_tilings" }, { - "duration": "19.0", + "duration": "18.0", "name": "rendering.desktop/nvidia_vertex_buffer_object" }, { - "duration": "18.0", + "duration": "16.0", "name": "rendering.desktop/off_screen_main_60fps" }, { @@ -2884,59 +2912,59 @@ "name": "rendering.desktop/pinterest_2018" }, { - "duration": "16.0", + "duration": "19.0", "name": "rendering.desktop/put_and_create_imagebitmap_from_imagedata" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/put_get_image_data" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/put_image_data.html" }, { - "duration": "13.0", + "duration": "14.0", "name": "rendering.desktop/raf" }, { - "duration": "13.0", + "duration": "14.0", "name": "rendering.desktop/raf_animation" }, { - "duration": "13.0", + "duration": "14.0", "name": "rendering.desktop/raf_canvas" }, { - "duration": "13.0", + "duration": "14.0", "name": "rendering.desktop/raf_touch_animation" }, { - "duration": "13.0", + "duration": "14.0", "name": "rendering.desktop/repaint_amazon_2018" }, { - "duration": "12.0", + "duration": "13.0", "name": "rendering.desktop/repaint_cnn_2018" }, { - "duration": "12.0", + "duration": "13.0", "name": "rendering.desktop/repaint_facebook_2018" }, { - "duration": "12.0", + "duration": "13.0", "name": "rendering.desktop/repaint_google_search_2018" }, { - "duration": "12.0", + "duration": "13.0", "name": "rendering.desktop/repaint_instagram_2018" }, { - "duration": "12.0", + "duration": "13.0", "name": "rendering.desktop/repaint_reddit_2018" }, { - "duration": "12.0", + "duration": "13.0", "name": "rendering.desktop/repaint_theverge_2018" }, { @@ -2944,19 +2972,19 @@ "name": "rendering.desktop/repaint_twitter_2018" }, { - "duration": "12.0", + "duration": "13.0", "name": "rendering.desktop/repaint_wikipedia_2018" }, { - "duration": "12.0", + "duration": "13.0", "name": "rendering.desktop/repaint_yahoo_homepage_2018" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/runway_2019" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/san_angeles" }, { @@ -2980,7 +3008,7 @@ "name": "rendering.desktop/simple_text_page" }, { - "duration": "10.0", + "duration": "12.0", "name": "rendering.desktop/simple_touch_drag" }, { @@ -2988,11 +3016,15 @@ "name": "rendering.desktop/skelebuddies_wasm_2020" }, { + "duration": "49.0", + "name": "rendering.desktop/skelebuddies_wasm_2020_fast_call" + }, + { "duration": "16.0", "name": "rendering.desktop/small_texture_uploads" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/smash_cat" }, { @@ -3008,19 +3040,19 @@ "name": "rendering.desktop/static_webgl_to_hw_accelerated_canvas.html" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/stroke_shapes" }, { - "duration": "12.0", + "duration": "13.0", "name": "rendering.desktop/sync_scroll_offset" }, { - "duration": "14.0", + "duration": "20.0", "name": "rendering.desktop/techcrunch_2018" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/text_05000_pixels_per_second" }, { @@ -3032,7 +3064,7 @@ "name": "rendering.desktop/text_20000_pixels_per_second" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.desktop/text_40000_pixels_per_second" }, { @@ -3044,11 +3076,11 @@ "name": "rendering.desktop/text_75000_pixels_per_second" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/text_90000_pixels_per_second" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/text_constant_full_page_raster_05000_pixels_per_second" }, { @@ -3056,7 +3088,7 @@ "name": "rendering.desktop/text_constant_full_page_raster_10000_pixels_per_second" }, { - "duration": "23.0", + "duration": "26.0", "name": "rendering.desktop/text_constant_full_page_raster_20000_pixels_per_second" }, { @@ -3076,7 +3108,7 @@ "name": "rendering.desktop/text_constant_full_page_raster_90000_pixels_per_second" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/text_hover_05000_pixels_per_second" }, { @@ -3088,7 +3120,7 @@ "name": "rendering.desktop/text_hover_20000_pixels_per_second" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.desktop/text_hover_40000_pixels_per_second" }, { @@ -3100,7 +3132,7 @@ "name": "rendering.desktop/text_hover_75000_pixels_per_second" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/text_hover_90000_pixels_per_second" }, { @@ -3108,99 +3140,103 @@ "name": "rendering.desktop/throughput_scrolling_active_handler" }, { - "duration": "21.0", + "duration": "20.0", "name": "rendering.desktop/throughput_scrolling_composited" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/throughput_scrolling_passive_handler" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/throughput_scrolling_uncomposited" }, { - "duration": "53.0", + "duration": "49.0", "name": "rendering.desktop/tiny_racing_v3_wasm_2020" }, { - "duration": "15.0", - "name": "rendering.desktop/toBlob_duration.html" - }, - { - "duration": "15.0", - "name": "rendering.desktop/toBlob_duration_jpeg.html" - }, - { - "duration": "15.0", - "name": "rendering.desktop/toBlob_small_canvas_in_worker.html" - }, - { - "duration": "12.0", - "name": "rendering.desktop/touch_handler_scrolling" - }, - { - "duration": "15.0", - "name": "rendering.desktop/transfer_from_imageBitmap.html" - }, - { - "duration": "15.0", - "name": "rendering.desktop/transform_transitions" - }, - { - "duration": "15.0", - "name": "rendering.desktop/transform_transitions_js_block" - }, - { - "duration": "15.0", - "name": "rendering.desktop/twitch_2018" - }, - { - "duration": "15.0", - "name": "rendering.desktop/twitch_pinch_2018" - }, - { - "duration": "14.0", - "name": "rendering.desktop/twitter_2018" - }, - { - "duration": "12.0", - "name": "rendering.desktop/twitter_pinch_2018" - }, - { - "duration": "15.0", - "name": "rendering.desktop/video_to_hw_accelerated_canvas" - }, - { - "duration": "15.0", - "name": "rendering.desktop/video_to_sub_texture" - }, - { - "duration": "15.0", - "name": "rendering.desktop/video_to_sub_texture_flip_and_premultiply" - }, - { - "duration": "15.0", - "name": "rendering.desktop/video_to_sub_texture_flip_y" - }, - { - "duration": "15.0", - "name": "rendering.desktop/video_to_sub_texture_premultiply" + "duration": "49.0", + "name": "rendering.desktop/tiny_racing_v3_wasm_2020_fast_call" }, { "duration": "16.0", + "name": "rendering.desktop/toBlob_duration.html" + }, + { + "duration": "16.0", + "name": "rendering.desktop/toBlob_duration_jpeg.html" + }, + { + "duration": "17.0", + "name": "rendering.desktop/toBlob_small_canvas_in_worker.html" + }, + { + "duration": "14.0", + "name": "rendering.desktop/touch_handler_scrolling" + }, + { + "duration": "16.0", + "name": "rendering.desktop/transfer_from_imageBitmap.html" + }, + { + "duration": "16.0", + "name": "rendering.desktop/transform_transitions" + }, + { + "duration": "16.0", + "name": "rendering.desktop/transform_transitions_js_block" + }, + { + "duration": "12.0", + "name": "rendering.desktop/twitch_2018" + }, + { + "duration": "16.0", + "name": "rendering.desktop/twitch_pinch_2018" + }, + { + "duration": "15.0", + "name": "rendering.desktop/twitter_2018" + }, + { + "duration": "13.0", + "name": "rendering.desktop/twitter_pinch_2018" + }, + { + "duration": "16.0", + "name": "rendering.desktop/video_to_hw_accelerated_canvas" + }, + { + "duration": "17.0", + "name": "rendering.desktop/video_to_sub_texture" + }, + { + "duration": "17.0", + "name": "rendering.desktop/video_to_sub_texture_flip_and_premultiply" + }, + { + "duration": "17.0", + "name": "rendering.desktop/video_to_sub_texture_flip_y" + }, + { + "duration": "17.0", + "name": "rendering.desktop/video_to_sub_texture_premultiply" + }, + { + "duration": "17.0", "name": "rendering.desktop/video_to_texture" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/web_animation_value_type_color" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/web_animation_value_type_length_3d" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.desktop/web_animation_value_type_length_complex" }, { @@ -3240,7 +3276,7 @@ "name": "rendering.desktop/web_animations_staggered_chaining" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/web_animations_staggered_infinite_iterations" }, { @@ -3260,7 +3296,7 @@ "name": "rendering.desktop/webp_decoding_yuv_and_gpu_rasterization" }, { - "duration": "14.0", + "duration": "19.0", "name": "rendering.desktop/wikipedia_2018" }, { @@ -3276,7 +3312,7 @@ "name": "rendering.desktop/yahoo_news_2018" }, { - "duration": "12.0", + "duration": "15.0", "name": "rendering.desktop/yahoo_news_pinch_2018" }, { @@ -3296,7 +3332,7 @@ "name": "rendering.desktop/youtube_pinch_2018" }, { - "duration": "30.0", + "duration": "29.0", "name": "speedometer-future/http://browserbench.org/Speedometer/" }, { @@ -3304,39 +3340,43 @@ "name": "speedometer/http://browserbench.org/Speedometer/" }, { - "duration": "58.0", + "duration": "54.0", "name": "speedometer2-future/Speedometer2" }, { "duration": "52.0", + "name": "speedometer2-pcscan/Speedometer2" + }, + { + "duration": "51.0", "name": "speedometer2/Speedometer2" }, { - "duration": "40.0", + "duration": "38.0", "name": "system_health.common_desktop/browse:media:googleplaystore:2018" }, { - "duration": "68.0", + "duration": "66.0", "name": "system_health.common_desktop/browse:media:imgur" }, { - "duration": "85.0", + "duration": "84.0", "name": "system_health.common_desktop/browse:media:pinterest:2018" }, { - "duration": "57.0", + "duration": "54.0", "name": "system_health.common_desktop/browse:media:tumblr:2018" }, { - "duration": "7.0", + "duration": "4.0", "name": "system_health.common_desktop/browse:media:youtube:2019" }, { - "duration": "64.0", + "duration": "61.0", "name": "system_health.common_desktop/browse:media:youtubetv:2019" }, { - "duration": "72.0", + "duration": "84.0", "name": "system_health.common_desktop/browse:media:youtubetv_watch:2020" }, { @@ -3348,10 +3388,22 @@ "name": "system_health.common_desktop/browse:news:flipboard:2018" }, { - "duration": "56.0", + "duration": "4.0", + "name": "system_health.common_desktop/browse:news:hackernews:2020" + }, + { + "duration": "55.0", "name": "system_health.common_desktop/browse:news:nytimes:2020" }, { + "duration": "45.0", + "name": "system_health.common_desktop/browse:news:reddit:2020" + }, + { + "duration": "46.0", + "name": "system_health.common_desktop/browse:search:google:2020" + }, + { "duration": "32.0", "name": "system_health.common_desktop/browse:search:google_india:2018" }, @@ -3360,15 +3412,15 @@ "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "57.0", + "duration": "53.0", "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "45.0", + "duration": "42.0", "name": "system_health.common_desktop/browse:social:twitter:2018" }, { - "duration": "59.0", + "duration": "56.0", "name": "system_health.common_desktop/browse:social:twitter_infinite_scroll:2018" }, { @@ -3400,35 +3452,35 @@ "name": "system_health.common_desktop/browse:tools:gmail-search:2020" }, { - "duration": "65.0", + "duration": "64.0", "name": "system_health.common_desktop/browse:tools:maps:2019" }, { - "duration": "29.0", + "duration": "28.0", "name": "system_health.common_desktop/browse:tools:sheets:2019" }, { - "duration": "3.0", + "duration": "6.0", "name": "system_health.common_desktop/browse_accessibility:media:youtube" }, { - "duration": "23.0", + "duration": "26.0", "name": "system_health.common_desktop/browse_accessibility:tech:codesearch:2018" }, { - "duration": "15.0", + "duration": "18.0", "name": "system_health.common_desktop/load:chrome:blank" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.common_desktop/load:games:alphabetty:2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.common_desktop/load:games:bubbles:2020" }, { - "duration": "20.0", + "duration": "16.0", "name": "system_health.common_desktop/load:games:lazors" }, { @@ -3436,19 +3488,19 @@ "name": "system_health.common_desktop/load:games:miniclip:2018" }, { - "duration": "21.0", + "duration": "20.0", "name": "system_health.common_desktop/load:games:spychase:2018" }, { - "duration": "21.0", + "duration": "20.0", "name": "system_health.common_desktop/load:media:9gag" }, { - "duration": "18.0", + "duration": "16.0", "name": "system_health.common_desktop/load:media:dailymotion:2019" }, { - "duration": "18.0", + "duration": "17.0", "name": "system_health.common_desktop/load:media:facebook_feed:desktop:2020" }, { @@ -3460,7 +3512,7 @@ "name": "system_health.common_desktop/load:media:facebook_photos:desktop:2020" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.common_desktop/load:media:flickr:2018" }, { @@ -3468,7 +3520,7 @@ "name": "system_health.common_desktop/load:media:google_images:2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.common_desktop/load:media:imgur:2018" }, { @@ -3476,19 +3528,23 @@ "name": "system_health.common_desktop/load:media:soundcloud:2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.common_desktop/load:media:youtube:2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.common_desktop/load:media:youtubelivingroom:2020" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.common_desktop/load:news:bbc:2018" }, { - "duration": "17.0", + "duration": "16.0", + "name": "system_health.common_desktop/load:news:cnn:2020" + }, + { + "duration": "16.0", "name": "system_health.common_desktop/load:news:flipboard" }, { @@ -3500,71 +3556,71 @@ "name": "system_health.common_desktop/load:news:nytimes:2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.common_desktop/load:news:qq:2018" }, { - "duration": "18.0", + "duration": "17.0", "name": "system_health.common_desktop/load:news:reddit:2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.common_desktop/load:news:wikipedia:2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.common_desktop/load:search:amazon:2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.common_desktop/load:search:baidu:2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.common_desktop/load:search:ebay:2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.common_desktop/load:search:flipkart:2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.common_desktop/load:search:google:2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.common_desktop/load:search:taobao:2018" }, { - "duration": "16.0", + "duration": "15.0", "name": "system_health.common_desktop/load:search:yahoo:2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.common_desktop/load:search:yandex:2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.common_desktop/load:social:instagram:2018" }, { - "duration": "18.0", + "duration": "17.0", "name": "system_health.common_desktop/load:social:pinterest:2019" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.common_desktop/load:social:vk:2018" }, { - "duration": "25.0", + "duration": "23.0", "name": "system_health.common_desktop/load:tools:chat:2020" }, { - "duration": "19.0", + "duration": "18.0", "name": "system_health.common_desktop/load:tools:docs:2019" }, { - "duration": "18.0", + "duration": "16.0", "name": "system_health.common_desktop/load:tools:drive:2019" }, { @@ -3572,43 +3628,43 @@ "name": "system_health.common_desktop/load:tools:gmail:2019" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.common_desktop/load:tools:stackoverflow:2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.common_desktop/load:tools:weather:2019" }, { - "duration": "14.0", + "duration": "17.0", "name": "system_health.common_desktop/load_accessibility:media:wikipedia:2018" }, { - "duration": "14.0", + "duration": "17.0", "name": "system_health.common_desktop/load_accessibility:shopping:amazon:2018" }, { - "duration": "120.0", + "duration": "4.0", "name": "system_health.common_desktop/long_running:tools:gmail-background" }, { - "duration": "5.0", + "duration": "4.0", "name": "system_health.common_desktop/long_running:tools:gmail-foreground" }, { - "duration": "5.0", + "duration": "4.0", "name": "system_health.common_desktop/multitab:misc:typical24" }, { - "duration": "5.0", + "duration": "4.0", "name": "system_health.common_desktop/multitab:misc:typical24:2018" }, { - "duration": "41.0", + "duration": "39.0", "name": "system_health.common_desktop/play:media:google_play_music" }, { - "duration": "43.0", + "duration": "40.0", "name": "system_health.common_desktop/play:media:soundcloud:2018" }, { @@ -3636,7 +3692,7 @@ "name": "system_health.memory_desktop/browse:media:youtubetv:2019" }, { - "duration": "65.0", + "duration": "66.0", "name": "system_health.memory_desktop/browse:media:youtubetv_watch:2020" }, { @@ -3648,10 +3704,22 @@ "name": "system_health.memory_desktop/browse:news:flipboard:2018" }, { + "duration": "44.0", + "name": "system_health.memory_desktop/browse:news:hackernews:2020" + }, + { "duration": "46.0", "name": "system_health.memory_desktop/browse:news:nytimes:2020" }, { + "duration": "39.0", + "name": "system_health.memory_desktop/browse:news:reddit:2020" + }, + { + "duration": "40.0", + "name": "system_health.memory_desktop/browse:search:google:2020" + }, + { "duration": "1.0", "name": "system_health.memory_desktop/browse:search:google_india:2018" }, @@ -3664,7 +3732,7 @@ "name": "system_health.memory_desktop/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "40.0", + "duration": "37.0", "name": "system_health.memory_desktop/browse:social:twitter:2018" }, { @@ -3704,7 +3772,7 @@ "name": "system_health.memory_desktop/browse:tools:maps:2019" }, { - "duration": "23.0", + "duration": "24.0", "name": "system_health.memory_desktop/browse:tools:sheets:2019" }, { @@ -3736,11 +3804,11 @@ "name": "system_health.memory_desktop/load:games:miniclip:2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.memory_desktop/load:games:spychase:2018" }, { - "duration": "15.0", + "duration": "14.0", "name": "system_health.memory_desktop/load:media:9gag" }, { @@ -3772,7 +3840,7 @@ "name": "system_health.memory_desktop/load:media:imgur:2018" }, { - "duration": "13.0", + "duration": "14.0", "name": "system_health.memory_desktop/load:media:soundcloud:2018" }, { @@ -3789,6 +3857,10 @@ }, { "duration": "13.0", + "name": "system_health.memory_desktop/load:news:cnn:2020" + }, + { + "duration": "13.0", "name": "system_health.memory_desktop/load:news:flipboard" }, { @@ -3832,7 +3904,7 @@ "name": "system_health.memory_desktop/load:search:google:2018" }, { - "duration": "13.0", + "duration": "12.0", "name": "system_health.memory_desktop/load:search:taobao:2018" }, { @@ -3840,7 +3912,7 @@ "name": "system_health.memory_desktop/load:search:yahoo:2018" }, { - "duration": "13.0", + "duration": "12.0", "name": "system_health.memory_desktop/load:search:yandex:2018" }, { @@ -3852,7 +3924,7 @@ "name": "system_health.memory_desktop/load:social:pinterest:2019" }, { - "duration": "2.0", + "duration": "1.0", "name": "system_health.memory_desktop/load:social:vk:2018" }, { @@ -3872,11 +3944,11 @@ "name": "system_health.memory_desktop/load:tools:gmail:2019" }, { - "duration": "13.0", + "duration": "12.0", "name": "system_health.memory_desktop/load:tools:stackoverflow:2018" }, { - "duration": "13.0", + "duration": "12.0", "name": "system_health.memory_desktop/load:tools:weather:2019" }, { @@ -3884,7 +3956,7 @@ "name": "system_health.memory_desktop/load_accessibility:media:wikipedia:2018" }, { - "duration": "12.0", + "duration": "11.0", "name": "system_health.memory_desktop/load_accessibility:shopping:amazon:2018" }, { @@ -3912,6 +3984,38 @@ "name": "system_health.memory_desktop/play:media:soundcloud:2018" }, { + "duration": "28.0", + "name": "tab_search/tab_search:close_and_open:2020" + }, + { + "duration": "80.0", + "name": "tab_search/tab_search:scroll_up_and_down:2020" + }, + { + "duration": "84.0", + "name": "tab_search/tab_search:top100:2020" + }, + { + "duration": "69.0", + "name": "tab_search/tab_search:top100:loading:2020" + }, + { + "duration": "51.0", + "name": "tab_search/tab_search:top10:2020" + }, + { + "duration": "22.0", + "name": "tab_search/tab_search:top10:loading:2020" + }, + { + "duration": "55.0", + "name": "tab_search/tab_search:top50:2020" + }, + { + "duration": "40.0", + "name": "tab_search/tab_search:top50:loading:2020" + }, + { "duration": "0.0", "name": "tab_switching.typical_25/multitab:misc:typical24" }, @@ -3932,7 +4036,7 @@ "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/" }, { @@ -3940,7 +4044,7 @@ "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/" }, { - "duration": "8.0", + "duration": "9.0", "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com" }, { @@ -3948,103 +4052,115 @@ "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama" }, { - "duration": "8.0", + "duration": "9.0", "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/" }, { - "duration": "45.0", + "duration": "47.0", "name": "v8.browsing_desktop-future/browse:media:googleplaystore:2018" }, { - "duration": "13.0", + "duration": "14.0", "name": "v8.browsing_desktop-future/browse:media:imgur" }, { - "duration": "93.0", + "duration": "94.0", "name": "v8.browsing_desktop-future/browse:media:pinterest:2018" }, { - "duration": "64.0", + "duration": "65.0", "name": "v8.browsing_desktop-future/browse:media:tumblr:2018" }, { - "duration": "13.0", + "duration": "14.0", "name": "v8.browsing_desktop-future/browse:media:youtube:2019" }, { - "duration": "70.0", + "duration": "71.0", "name": "v8.browsing_desktop-future/browse:media:youtubetv:2019" }, { - "duration": "78.0", + "duration": "79.0", "name": "v8.browsing_desktop-future/browse:media:youtubetv_watch:2020" }, { - "duration": "10.0", + "duration": "12.0", "name": "v8.browsing_desktop-future/browse:news:cnn:2020" }, { - "duration": "49.0", + "duration": "56.0", "name": "v8.browsing_desktop-future/browse:news:flipboard:2018" }, { - "duration": "13.0", + "duration": "14.0", + "name": "v8.browsing_desktop-future/browse:news:hackernews:2020" + }, + { + "duration": "14.0", "name": "v8.browsing_desktop-future/browse:news:nytimes:2020" }, { - "duration": "37.0", + "duration": "56.0", + "name": "v8.browsing_desktop-future/browse:news:reddit:2020" + }, + { + "duration": "53.0", + "name": "v8.browsing_desktop-future/browse:search:google:2020" + }, + { + "duration": "39.0", "name": "v8.browsing_desktop-future/browse:search:google_india:2018" }, { - "duration": "68.0", + "duration": "70.0", "name": "v8.browsing_desktop-future/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "63.0", + "duration": "64.0", "name": "v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "51.0", + "duration": "52.0", "name": "v8.browsing_desktop-future/browse:social:twitter:2018" }, { - "duration": "65.0", + "duration": "66.0", "name": "v8.browsing_desktop-future/browse:social:twitter_infinite_scroll:2018" }, { - "duration": "59.0", + "duration": "61.0", "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "36.0", + "duration": "40.0", "name": "v8.browsing_desktop-future/browse:tools:docs_scrolling" }, { - "duration": "72.0", + "duration": "75.0", "name": "v8.browsing_desktop-future/browse:tools:earth:2020" }, { - "duration": "10.0", + "duration": "12.0", "name": "v8.browsing_desktop-future/browse:tools:gmail-compose:2020" }, { - "duration": "10.0", + "duration": "12.0", "name": "v8.browsing_desktop-future/browse:tools:gmail-labelclick:2020" }, { - "duration": "10.0", + "duration": "12.0", "name": "v8.browsing_desktop-future/browse:tools:gmail-openconversation:2020" }, { - "duration": "10.0", + "duration": "12.0", "name": "v8.browsing_desktop-future/browse:tools:gmail-search:2020" }, { - "duration": "69.0", + "duration": "73.0", "name": "v8.browsing_desktop-future/browse:tools:maps:2019" }, { - "duration": "37.0", + "duration": "38.0", "name": "v8.browsing_desktop-future/browse:tools:sheets:2019" }, { @@ -4052,31 +4168,31 @@ "name": "v8.browsing_desktop/browse:media:googleplaystore:2018" }, { - "duration": "12.0", + "duration": "11.0", "name": "v8.browsing_desktop/browse:media:imgur" }, { - "duration": "12.0", + "duration": "11.0", "name": "v8.browsing_desktop/browse:media:pinterest:2018" }, { - "duration": "63.0", + "duration": "62.0", "name": "v8.browsing_desktop/browse:media:tumblr:2018" }, { - "duration": "12.0", + "duration": "13.0", "name": "v8.browsing_desktop/browse:media:youtube:2019" }, { - "duration": "69.0", + "duration": "70.0", "name": "v8.browsing_desktop/browse:media:youtubetv:2019" }, { - "duration": "77.0", + "duration": "78.0", "name": "v8.browsing_desktop/browse:media:youtubetv_watch:2020" }, { - "duration": "0.0", + "duration": "11.0", "name": "v8.browsing_desktop/browse:news:cnn:2020" }, { @@ -4084,10 +4200,22 @@ "name": "v8.browsing_desktop/browse:news:flipboard:2018" }, { - "duration": "12.0", + "duration": "11.0", + "name": "v8.browsing_desktop/browse:news:hackernews:2020" + }, + { + "duration": "11.0", "name": "v8.browsing_desktop/browse:news:nytimes:2020" }, { + "duration": "53.0", + "name": "v8.browsing_desktop/browse:news:reddit:2020" + }, + { + "duration": "52.0", + "name": "v8.browsing_desktop/browse:search:google:2020" + }, + { "duration": "38.0", "name": "v8.browsing_desktop/browse:search:google_india:2018" }, @@ -4100,11 +4228,11 @@ "name": "v8.browsing_desktop/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "52.0", + "duration": "54.0", "name": "v8.browsing_desktop/browse:social:twitter:2018" }, { - "duration": "64.0", + "duration": "65.0", "name": "v8.browsing_desktop/browse:social:twitter_infinite_scroll:2018" }, { @@ -4120,19 +4248,19 @@ "name": "v8.browsing_desktop/browse:tools:earth:2020" }, { - "duration": "12.0", + "duration": "11.0", "name": "v8.browsing_desktop/browse:tools:gmail-compose:2020" }, { - "duration": "12.0", + "duration": "11.0", "name": "v8.browsing_desktop/browse:tools:gmail-labelclick:2020" }, { - "duration": "12.0", + "duration": "11.0", "name": "v8.browsing_desktop/browse:tools:gmail-openconversation:2020" }, { - "duration": "12.0", + "duration": "11.0", "name": "v8.browsing_desktop/browse:tools:gmail-search:2020" }, { @@ -4148,7 +4276,7 @@ "name": "webrtc/10s_datachannel_transfer" }, { - "duration": "18.0", + "duration": "17.0", "name": "webrtc/canvas_capture_peer_connection" }, { @@ -4164,35 +4292,59 @@ "name": "webrtc/codec_constraints_vp9" }, { - "duration": "18.0", + "duration": "17.0", "name": "webrtc/hd_local_stream_10s" }, { - "duration": "29.0", + "duration": "18.0", + "name": "webrtc/insertable_streams_video_processing_camera_canvas2d_video" + }, + { + "duration": "18.0", + "name": "webrtc/insertable_streams_video_processing_camera_drop_video" + }, + { + "duration": "18.0", + "name": "webrtc/insertable_streams_video_processing_camera_webgl_pc" + }, + { + "duration": "18.0", + "name": "webrtc/insertable_streams_video_processing_camera_webgl_video" + }, + { + "duration": "18.0", + "name": "webrtc/insertable_streams_video_processing_pc_webgl_video" + }, + { + "duration": "18.0", + "name": "webrtc/insertable_streams_video_processing_video_webgl_video" + }, + { + "duration": "28.0", "name": "webrtc/multiple_peerconnections" }, { - "duration": "31.0", + "duration": "30.0", "name": "webrtc/pause_play_peerconnections" }, { - "duration": "16.0", - "name": "media_perftests/_gtest_" + "duration": "200.0", + "name": "base_perftests/_gtest_" }, { "duration": "3.0", "name": "load_library_perf_tests/_gtest_" }, { - "duration": "165.0", - "name": "performance_browser_tests/_gtest_" - }, - { "duration": "5.0", "name": "tracing_perftests/_gtest_" }, { - "duration": "200.0", - "name": "base_perftests/_gtest_" + "duration": "16.0", + "name": "media_perftests/_gtest_" + }, + { + "duration": "165.0", + "name": "performance_browser_tests/_gtest_" } ] \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/mac-10_12_laptop_low_end-perf_timing.json b/tools/perf/core/shard_maps/timing_data/mac-10_12_laptop_low_end-perf_timing.json index f385c47..8e08522f 100644 --- a/tools/perf/core/shard_maps/timing_data/mac-10_12_laptop_low_end-perf_timing.json +++ b/tools/perf/core/shard_maps/timing_data/mac-10_12_laptop_low_end-perf_timing.json
@@ -1,22 +1,22 @@ [ { - "duration": "81.0", + "duration": "24.0", "name": "blink_perf.accessibility/build-table.html" }, { - "duration": "23.0", + "duration": "19.0", "name": "blink_perf.accessibility/focus-links.html" }, { - "duration": "26.0", + "duration": "24.0", "name": "blink_perf.accessibility/line-breaks.html" }, { - "duration": "35.0", + "duration": "34.0", "name": "blink_perf.accessibility/many-text-changes-deep-block-subtree.html" }, { - "duration": "29.0", + "duration": "30.0", "name": "blink_perf.accessibility/many-text-changes-deep-hidden-subtree.html" }, { @@ -44,7 +44,7 @@ "name": "blink_perf.bindings/document-implementation.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.bindings/dom-attribute-on-prototoype.html" }, { @@ -96,7 +96,7 @@ "name": "blink_perf.bindings/insert-before.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.bindings/named-property-enumerator.html" }, { @@ -152,11 +152,11 @@ "name": "blink_perf.bindings/structured-clone-json-serialize.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.bindings/structured-clone-long-string-deserialize.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.bindings/structured-clone-long-string-serialize.html" }, { @@ -176,7 +176,7 @@ "name": "blink_perf.bindings/typed-array-set-from-typed.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.bindings/undefined-first-child.html" }, { @@ -184,7 +184,7 @@ "name": "blink_perf.bindings/undefined-get-element-by-id.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.bindings/undefined-id-getter.html" }, { @@ -192,15 +192,15 @@ "name": "blink_perf.bindings/worker-structured-clone-different-payloads.html" }, { - "duration": "15.0", + "duration": "14.0", "name": "blink_perf.bindings/worker-structured-clone-json-from-worker.html" }, { - "duration": "15.0", + "duration": "14.0", "name": "blink_perf.bindings/worker-structured-clone-json-roundtrip.html" }, { - "duration": "15.0", + "duration": "14.0", "name": "blink_perf.bindings/worker-structured-clone-json-to-worker.html" }, { @@ -272,7 +272,7 @@ "name": "blink_perf.css/ChangeStyleCustomPropertyDeclaration.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.css/ChangeStyleElementSelector.html" }, { @@ -280,7 +280,7 @@ "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html" }, { @@ -296,7 +296,7 @@ "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html" }, { @@ -304,7 +304,7 @@ "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html" }, { @@ -312,7 +312,7 @@ "name": "blink_perf.css/ChangeStyleShallowTree.html" }, { - "duration": "9.0", + "duration": "10.0", "name": "blink_perf.css/ChangeStyleSingleClassSelector.html" }, { @@ -324,11 +324,11 @@ "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.css/ChangeStyleUniversalSelector.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html" }, { @@ -384,7 +384,7 @@ "name": "blink_perf.css/LoadMaterializeStarterPage.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.css/LoadSemanticPageExample.html" }, { @@ -424,7 +424,7 @@ "name": "blink_perf.display_locking/outer_sizes_change_activatable.html" }, { - "duration": "22.0", + "duration": "21.0", "name": "blink_perf.display_locking/outer_sizes_change_iframe.html" }, { @@ -436,23 +436,23 @@ "name": "blink_perf.display_locking/unlock_top_items_nested.html" }, { - "duration": "26.0", + "duration": "14.0", "name": "blink_perf.dom/custom-element-default-style-with-shadow.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.dom/custom-element-default-style.html" }, { - "duration": "26.0", + "duration": "12.0", "name": "blink_perf.dom/long-sibling-list.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.dom/modify-element-classname.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.dom/modify-element-id.html" }, { @@ -472,27 +472,27 @@ "name": "blink_perf.dom/select-single-remove.html" }, { - "duration": "13.0", + "duration": "18.0", "name": "blink_perf.events/EventsDispatching.html" }, { - "duration": "9.0", + "duration": "10.0", "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html" }, { - "duration": "17.0", + "duration": "27.0", "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html" }, { - "duration": "11.0", + "duration": "12.0", "name": "blink_perf.events/hit-test-lots-of-layers.html" }, { - "duration": "9.0", + "duration": "10.0", "name": "blink_perf.events/is-input-pending-default-events.html" }, { - "duration": "9.0", + "duration": "10.0", "name": "blink_perf.events/is-input-pending-include-continuous-events.html" }, { @@ -500,7 +500,7 @@ "name": "blink_perf.image_decoder/decode-gif.html" }, { - "duration": "15.0", + "duration": "16.0", "name": "blink_perf.image_decoder/decode-jpeg-h1v1.html" }, { @@ -516,7 +516,7 @@ "name": "blink_perf.image_decoder/decode-jpeg-h2v2.html" }, { - "duration": "26.0", + "duration": "25.0", "name": "blink_perf.image_decoder/decode-lossless-webp.html" }, { @@ -536,7 +536,7 @@ "name": "blink_perf.image_decoder/decode-png.html" }, { - "duration": "28.0", + "duration": "29.0", "name": "blink_perf.layout/ArabicLineLayout.html" }, { @@ -624,7 +624,7 @@ "name": "blink_perf.layout/editing_append.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.layout/editing_append_single_line.html" }, { @@ -644,7 +644,7 @@ "name": "blink_perf.layout/fit-content-change-available-size-blocks.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.layout/fit-content-change-available-size-text.html" }, { @@ -704,11 +704,11 @@ "name": "blink_perf.layout/flexbox_with_list_item.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.layout/floats_100_100.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.layout/floats_100_100_nested.html" }, { @@ -740,11 +740,11 @@ "name": "blink_perf.layout/floats_50_100_nested.html" }, { - "duration": "8.0", + "duration": "9.0", "name": "blink_perf.layout/floats_show_hide.html" }, { - "duration": "55.0", + "duration": "54.0", "name": "blink_perf.layout/hindi-line-layout.html" }, { @@ -804,7 +804,7 @@ "name": "blink_perf.layout/line-layout-line-height.html" }, { - "duration": "8.0", + "duration": "9.0", "name": "blink_perf.layout/line-layout-repeat-append-select.html" }, { @@ -852,7 +852,7 @@ "name": "blink_perf.layout/multicol/lots-of-small-nested-unbreakable-blocks-autofill.html" }, { - "duration": "8.0", + "duration": "9.0", "name": "blink_perf.layout/multicol/lots-of-small-unbreakable-blocks-autofill.html" }, { @@ -900,7 +900,7 @@ "name": "blink_perf.layout/ruby.html" }, { - "duration": "41.0", + "duration": "40.0", "name": "blink_perf.layout/subtree-detaching.html" }, { @@ -920,31 +920,31 @@ "name": "blink_perf.layout/word-wrap-break-word.html" }, { - "duration": "18.0", + "duration": "17.0", "name": "blink_perf.owp_storage/blob-perf-files.html" }, { - "duration": "15.0", + "duration": "14.0", "name": "blink_perf.owp_storage/blob-perf-ipc.html" }, { - "duration": "14.0", + "duration": "12.0", "name": "blink_perf.owp_storage/blob-perf-shm.html" }, { - "duration": "17.0", + "duration": "14.0", "name": "blink_perf.owp_storage/blob-perf-tiny.html" }, { - "duration": "14.0", + "duration": "15.0", "name": "blink_perf.owp_storage/idb-load-docs.html" }, { - "duration": "31.0", + "duration": "35.0", "name": "blink_perf.owp_storage/idb-put-all.html" }, { - "duration": "34.0", + "duration": "38.0", "name": "blink_perf.owp_storage/idb-put.html" }, { @@ -960,31 +960,31 @@ "name": "blink_perf.paint/complex-content-slow-scroll.html" }, { - "duration": "15.0", + "duration": "14.0", "name": "blink_perf.paint/complex-iframe-filtered.html" }, { - "duration": "31.0", + "duration": "37.0", "name": "blink_perf.paint/contain-update-layer-tree.html" }, { - "duration": "16.0", + "duration": "17.0", "name": "blink_perf.paint/containment-resize.html" }, { - "duration": "13.0", + "duration": "14.0", "name": "blink_perf.paint/fixed-and-many-layers-scroll.html" }, { - "duration": "14.0", + "duration": "15.0", "name": "blink_perf.paint/large-table-background-change.html" }, { - "duration": "13.0", + "duration": "14.0", "name": "blink_perf.paint/large-table-collapsed-border-change.html" }, { - "duration": "13.0", + "duration": "14.0", "name": "blink_perf.paint/modify-selection.html" }, { @@ -1004,11 +1004,11 @@ "name": "blink_perf.parser/css-parser-yui.html" }, { - "duration": "26.0", + "duration": "15.0", "name": "blink_perf.parser/declarative-shadow-dom-cloning.html" }, { - "duration": "11.0", + "duration": "9.0", "name": "blink_perf.parser/declarative-shadow-dom.html" }, { @@ -1016,7 +1016,7 @@ "name": "blink_perf.parser/html-parser-threaded.html" }, { - "duration": "5.0", + "duration": "6.0", "name": "blink_perf.parser/html-parser.html" }, { @@ -1024,7 +1024,7 @@ "name": "blink_perf.parser/html5-full-render.html" }, { - "duration": "16.0", + "duration": "17.0", "name": "blink_perf.parser/iframe-append-remove.html" }, { @@ -1036,11 +1036,11 @@ "name": "blink_perf.parser/innerHTML-setter.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.parser/query-selector-all-attribute-complex.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.parser/query-selector-all-attribute.html" }, { @@ -1068,7 +1068,7 @@ "name": "blink_perf.parser/query-selector-all-first.html" }, { - "duration": "9.0", + "duration": "10.0", "name": "blink_perf.parser/query-selector-all-id-deep.html" }, { @@ -1076,7 +1076,7 @@ "name": "blink_perf.parser/query-selector-all-id-first.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.parser/query-selector-all-id-last.html" }, { @@ -1120,11 +1120,11 @@ "name": "blink_perf.parser/url-parser.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.parser/xml-parser.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.shadow_dom/declarative-api.html" }, { @@ -1188,7 +1188,7 @@ "name": "blink_perf.shadow_dom/style-sheet-insert.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html" }, { @@ -1200,11 +1200,11 @@ "name": "blink_perf.shadow_dom/v1-host-child-append.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.shadow_dom/v1-large-deep-layout.html" }, { @@ -1256,7 +1256,7 @@ "name": "blink_perf.shadow_dom/v1-small-deep-distribution.html" }, { - "duration": "4.0", + "duration": "3.0", "name": "blink_perf.shadow_dom/v1-small-deep-layout.html" }, { @@ -1268,7 +1268,7 @@ "name": "blink_perf.shadow_dom/v1-small-shallow-layout.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.svg/AzLizardBenjiPark.html" }, { @@ -1364,23 +1364,23 @@ "name": "blink_perf.svg/Worldcup.html" }, { - "duration": "18.0", + "duration": "21.0", "name": "blink_perf.webaudio/audio-buffer-source-node.html" }, { - "duration": "45.0", + "duration": "116.0", "name": "blink_perf.webaudio/audio-worklet-node.html" }, { - "duration": "44.0", + "duration": "117.0", "name": "blink_perf.webaudio/biquad-filter-node.html" }, { - "duration": "44.0", + "duration": "116.0", "name": "blink_perf.webaudio/gain-node.html" }, { - "duration": "45.0", + "duration": "47.0", "name": "blink_perf.webaudio/panner-node.html" }, { @@ -1400,7 +1400,7 @@ "name": "dromaeo/http://dromaeo.com?dom-traverse" }, { - "duration": "9.0", + "duration": "8.0", "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html" }, { @@ -1408,155 +1408,155 @@ "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html" }, { - "duration": "199.0", + "duration": "201.0", "name": "jetstream/JetStream" }, { - "duration": "35.0", + "duration": "30.0", "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html" }, { - "duration": "26.0", + "duration": "25.0", "name": "loading.desktop/24h_cold" }, { - "duration": "30.0", + "duration": "28.0", "name": "loading.desktop/24h_warm" }, { - "duration": "33.0", + "duration": "35.0", "name": "loading.desktop/AirBnB_cold" }, { - "duration": "43.0", + "duration": "46.0", "name": "loading.desktop/AirBnB_warm" }, { - "duration": "21.0", + "duration": "22.0", "name": "loading.desktop/Aljayyash_cold" }, { - "duration": "23.0", + "duration": "25.0", "name": "loading.desktop/Aljayyash_warm" }, { - "duration": "13.0", + "duration": "14.0", "name": "loading.desktop/AllRecipes_cold" }, { - "duration": "38.0", + "duration": "40.0", "name": "loading.desktop/AllRecipes_warm" }, { - "duration": "31.0", + "duration": "33.0", "name": "loading.desktop/ArsTechnica_cold" }, { - "duration": "42.0", + "duration": "44.0", "name": "loading.desktop/ArsTechnica_warm" }, { - "duration": "22.0", + "duration": "23.0", "name": "loading.desktop/Baidu_cold" }, { - "duration": "24.0", + "duration": "26.0", "name": "loading.desktop/Baidu_warm" }, { - "duration": "24.0", + "duration": "26.0", "name": "loading.desktop/Bhaskar_cold" }, { - "duration": "44.0", + "duration": "32.0", "name": "loading.desktop/Bhaskar_warm" }, { - "duration": "26.0", + "duration": "28.0", "name": "loading.desktop/Chosun_cold" }, { - "duration": "30.0", + "duration": "32.0", "name": "loading.desktop/Chosun_warm" }, { - "duration": "24.0", + "duration": "25.0", "name": "loading.desktop/Colorado.edu_cold" }, { - "duration": "28.0", + "duration": "29.0", "name": "loading.desktop/Colorado.edu_warm" }, { - "duration": "26.0", + "duration": "28.0", "name": "loading.desktop/Danawa_cold" }, { - "duration": "29.0", + "duration": "32.0", "name": "loading.desktop/Danawa_warm" }, { - "duration": "26.0", + "duration": "28.0", "name": "loading.desktop/Daum_cold" }, { - "duration": "29.0", + "duration": "31.0", "name": "loading.desktop/Daum_warm" }, { - "duration": "26.0", + "duration": "28.0", "name": "loading.desktop/Donga_cold" }, { - "duration": "30.0", + "duration": "32.0", "name": "loading.desktop/Donga_warm" }, { - "duration": "28.0", + "duration": "33.0", "name": "loading.desktop/Economist_cold" }, { - "duration": "37.0", + "duration": "52.0", "name": "loading.desktop/Economist_warm" }, { - "duration": "26.0", + "duration": "28.0", "name": "loading.desktop/Elmundo_cold" }, { - "duration": "11.0", + "duration": "12.0", "name": "loading.desktop/Elmundo_warm" }, { - "duration": "23.0", + "duration": "25.0", "name": "loading.desktop/FC2Blog_cold" }, { - "duration": "27.0", + "duration": "28.0", "name": "loading.desktop/FC2Blog_warm" }, { - "duration": "27.0", + "duration": "29.0", "name": "loading.desktop/FIFA_cold" }, { - "duration": "44.0", + "duration": "35.0", "name": "loading.desktop/FIFA_warm" }, { - "duration": "32.0", + "duration": "36.0", "name": "loading.desktop/FarsNews_cold" }, { - "duration": "24.0", + "duration": "26.0", "name": "loading.desktop/FarsNews_warm" }, { - "duration": "24.0", + "duration": "26.0", "name": "loading.desktop/Flickr_cold" }, { - "duration": "29.0", + "duration": "30.0", "name": "loading.desktop/Flickr_warm" }, { @@ -1564,215 +1564,215 @@ "name": "loading.desktop/FlipKart_cold" }, { - "duration": "25.0", + "duration": "26.0", "name": "loading.desktop/FlipKart_warm" }, { - "duration": "21.0", + "duration": "22.0", "name": "loading.desktop/Free.fr_cold" }, { - "duration": "23.0", + "duration": "25.0", "name": "loading.desktop/Free.fr_warm" }, { - "duration": "23.0", + "duration": "24.0", "name": "loading.desktop/HTML5Rocks_cold" }, { - "duration": "25.0", + "duration": "26.0", "name": "loading.desktop/HTML5Rocks_warm" }, { - "duration": "20.0", + "duration": "21.0", "name": "loading.desktop/Haraj_cold" }, { - "duration": "23.0", + "duration": "24.0", "name": "loading.desktop/Haraj_warm" }, { - "duration": "23.0", + "duration": "25.0", "name": "loading.desktop/HatenaBookmark_cold" }, { - "duration": "27.0", + "duration": "29.0", "name": "loading.desktop/HatenaBookmark_warm" }, { - "duration": "27.0", + "duration": "29.0", "name": "loading.desktop/IGN_cold" }, { - "duration": "31.0", + "duration": "33.0", "name": "loading.desktop/IGN_warm" }, { - "duration": "25.0", + "duration": "26.0", "name": "loading.desktop/IMDB_cold" }, { - "duration": "46.0", + "duration": "31.0", "name": "loading.desktop/IMDB_warm" }, { - "duration": "22.0", + "duration": "24.0", "name": "loading.desktop/IndiaTimes_cold" }, { - "duration": "27.0", + "duration": "28.0", "name": "loading.desktop/IndiaTimes_warm" }, { - "duration": "25.0", + "duration": "26.0", "name": "loading.desktop/Kakaku_cold" }, { - "duration": "29.0", + "duration": "30.0", "name": "loading.desktop/Kakaku_warm" }, { - "duration": "32.0", + "duration": "34.0", "name": "loading.desktop/Kenh14_cold" }, { - "duration": "41.0", + "duration": "45.0", "name": "loading.desktop/Kenh14_warm" }, { - "duration": "21.0", + "duration": "22.0", "name": "loading.desktop/Mercadolivre_cold" }, { - "duration": "24.0", + "duration": "26.0", "name": "loading.desktop/Mercadolivre_warm" }, { - "duration": "25.0", + "duration": "27.0", "name": "loading.desktop/Naver_cold" }, { - "duration": "27.0", + "duration": "30.0", "name": "loading.desktop/Naver_warm" }, { - "duration": "21.0", + "duration": "23.0", "name": "loading.desktop/Orange_cold" }, { - "duration": "24.0", + "duration": "25.0", "name": "loading.desktop/Orange_warm" }, { - "duration": "26.0", + "duration": "28.0", "name": "loading.desktop/Pantip_cold" }, { - "duration": "29.0", + "duration": "32.0", "name": "loading.desktop/Pantip_warm" }, { - "duration": "25.0", + "duration": "26.0", "name": "loading.desktop/PremierLeague_cold" }, { - "duration": "30.0", + "duration": "31.0", "name": "loading.desktop/PremierLeague_warm" }, { - "duration": "25.0", + "duration": "26.0", "name": "loading.desktop/QQ_cold" }, { - "duration": "30.0", + "duration": "32.0", "name": "loading.desktop/QQ_warm" }, { - "duration": "26.0", + "duration": "28.0", "name": "loading.desktop/REI_cold" }, { - "duration": "30.0", + "duration": "32.0", "name": "loading.desktop/REI_warm" }, { - "duration": "22.0", + "duration": "24.0", "name": "loading.desktop/Ruten_cold" }, { - "duration": "41.0", + "duration": "27.0", "name": "loading.desktop/Ruten_warm" }, { - "duration": "25.0", + "duration": "26.0", "name": "loading.desktop/Sina_cold" }, { - "duration": "31.0", + "duration": "33.0", "name": "loading.desktop/Sina_warm" }, { - "duration": "26.0", + "duration": "27.0", "name": "loading.desktop/Taobao_cold" }, { - "duration": "32.0", + "duration": "33.0", "name": "loading.desktop/Taobao_warm" }, { - "duration": "26.0", + "duration": "28.0", "name": "loading.desktop/TheOnion_cold" }, { - "duration": "32.0", + "duration": "34.0", "name": "loading.desktop/TheOnion_warm" }, { - "duration": "30.0", + "duration": "32.0", "name": "loading.desktop/TheVerge_cold" }, { - "duration": "35.0", + "duration": "38.0", "name": "loading.desktop/TheVerge_warm" }, { - "duration": "41.0", + "duration": "29.0", "name": "loading.desktop/TicketMaster_cold" }, { - "duration": "36.0", + "duration": "49.0", "name": "loading.desktop/TicketMaster_warm" }, { - "duration": "30.0", + "duration": "32.0", "name": "loading.desktop/Vietnamnet_cold" }, { - "duration": "38.0", + "duration": "40.0", "name": "loading.desktop/Vietnamnet_warm" }, { - "duration": "28.0", + "duration": "27.0", "name": "loading.desktop/Vnexpress_cold" }, { - "duration": "34.0", + "duration": "50.0", "name": "loading.desktop/Vnexpress_warm" }, { - "duration": "13.0", + "duration": "14.0", "name": "loading.desktop/Walgreens_cold" }, { - "duration": "13.0", + "duration": "14.0", "name": "loading.desktop/Walgreens_warm" }, { - "duration": "22.0", + "duration": "23.0", "name": "loading.desktop/Yandex_cold" }, { - "duration": "25.0", + "duration": "27.0", "name": "loading.desktop/Yandex_warm" }, { @@ -1780,47 +1780,47 @@ "name": "loading.desktop/amazon.co.jp_cold" }, { - "duration": "32.0", + "duration": "46.0", "name": "loading.desktop/amazon.co.jp_warm" }, { - "duration": "23.0", + "duration": "24.0", "name": "loading.desktop/ja.wikipedia_cold" }, { - "duration": "27.0", + "duration": "28.0", "name": "loading.desktop/ja.wikipedia_warm" }, { - "duration": "29.0", + "duration": "31.0", "name": "loading.desktop/money.cnn_cold" }, { - "duration": "37.0", + "duration": "40.0", "name": "loading.desktop/money.cnn_warm" }, { - "duration": "22.0", + "duration": "24.0", "name": "loading.desktop/ru.wikipedia_cold" }, { - "duration": "25.0", + "duration": "26.0", "name": "loading.desktop/ru.wikipedia_warm" }, { - "duration": "25.0", + "duration": "26.0", "name": "loading.desktop/uol.com.br_cold" }, { - "duration": "32.0", + "duration": "34.0", "name": "loading.desktop/uol.com.br_warm" }, { - "duration": "23.0", + "duration": "25.0", "name": "loading.desktop/yahoo.co.jp_cold" }, { - "duration": "28.0", + "duration": "29.0", "name": "loading.desktop/yahoo.co.jp_warm" }, { @@ -1828,59 +1828,67 @@ "name": "media.desktop/mse.html?media=aac_audio.mp4" }, { - "duration": "17.0", + "duration": "18.0", "name": "media.desktop/mse.html?media=aac_audio.mp4,h264_video.mp4" }, { - "duration": "17.0", + "duration": "18.0", "name": "media.desktop/mse.html?media=h264_video.mp4" }, { - "duration": "17.0", + "duration": "18.0", "name": "media.desktop/mse.html?media=tulip0.av1.mp4" }, { - "duration": "17.0", + "duration": "19.0", "name": "media.desktop/mse.html?media=tulip2.vp9.webm" }, { - "duration": "23.0", + "duration": "137.0", + "name": "media.desktop/video.html?src=boat_1080p60fps_vp9.webm" + }, + { + "duration": "24.0", "name": "media.desktop/video.html?src=crowd1080.mp4" }, { - "duration": "25.0", + "duration": "26.0", "name": "media.desktop/video.html?src=crowd1080.webm" }, { - "duration": "22.0", + "duration": "23.0", "name": "media.desktop/video.html?src=crowd1080_vp9.webm" }, { - "duration": "17.0", + "duration": "138.0", + "name": "media.desktop/video.html?src=foodmarket_720p30fps.mp4" + }, + { + "duration": "18.0", "name": "media.desktop/video.html?src=garden2_10s.mp4&seek" }, { - "duration": "17.0", + "duration": "18.0", "name": "media.desktop/video.html?src=garden2_10s.webm&seek" }, { - "duration": "19.0", + "duration": "20.0", "name": "media.desktop/video.html?src=smpte_3840x2160_60fps_vp9.webm&seek" }, { - "duration": "23.0", + "duration": "24.0", "name": "media.desktop/video.html?src=tulip0.av1.mp4" }, { - "duration": "16.0", + "duration": "17.0", "name": "media.desktop/video.html?src=tulip0.av1.mp4&seek" }, { - "duration": "29.0", + "duration": "30.0", "name": "media.desktop/video.html?src=tulip2.m4a&type=audio" }, { - "duration": "29.0", + "duration": "30.0", "name": "media.desktop/video.html?src=tulip2.mp3&type=audio" }, { @@ -1888,15 +1896,15 @@ "name": "media.desktop/video.html?src=tulip2.mp3&type=audio&seek" }, { - "duration": "30.0", + "duration": "31.0", "name": "media.desktop/video.html?src=tulip2.mp4" }, { - "duration": "30.0", + "duration": "31.0", "name": "media.desktop/video.html?src=tulip2.mp4&busyjs" }, { - "duration": "29.0", + "duration": "30.0", "name": "media.desktop/video.html?src=tulip2.ogg&type=audio" }, { @@ -1904,19 +1912,19 @@ "name": "media.desktop/video.html?src=tulip2.ogg&type=audio&seek" }, { - "duration": "29.0", + "duration": "31.0", "name": "media.desktop/video.html?src=tulip2.vp9.webm" }, { - "duration": "23.0", + "duration": "24.0", "name": "media.desktop/video.html?src=tulip2.vp9.webm&background" }, { - "duration": "31.0", + "duration": "32.0", "name": "media.desktop/video.html?src=tulip2.vp9.webm_WiFi" }, { - "duration": "19.0", + "duration": "18.0", "name": "memory.desktop/TrivialAnimationPageSharedPageState" }, { @@ -1924,7 +1932,7 @@ "name": "memory.desktop/TrivialBlinkingCursorPageSharedPageState" }, { - "duration": "19.0", + "duration": "18.0", "name": "memory.desktop/TrivialBlurAnimationPageSharedPageState" }, { @@ -1932,11 +1940,11 @@ "name": "memory.desktop/TrivialCanvasPageSharedPageState" }, { - "duration": "20.0", + "duration": "19.0", "name": "memory.desktop/TrivialFullscreenVideoPageSharedPageState" }, { - "duration": "19.0", + "duration": "18.0", "name": "memory.desktop/TrivialGifPageSharedPageState" }, { @@ -1956,7 +1964,7 @@ "name": "octane/Octane" }, { - "duration": "45.0", + "duration": "48.0", "name": "power.desktop/TrivialAnimationPageSharedPageState" }, { @@ -1964,35 +1972,35 @@ "name": "power.desktop/TrivialBlinkingCursorPageSharedPageState" }, { - "duration": "42.0", + "duration": "43.0", "name": "power.desktop/TrivialBlurAnimationPageSharedPageState" }, { - "duration": "42.0", + "duration": "43.0", "name": "power.desktop/TrivialCanvasPageSharedPageState" }, { - "duration": "43.0", + "duration": "44.0", "name": "power.desktop/TrivialFullscreenVideoPageSharedPageState" }, { - "duration": "47.0", + "duration": "43.0", "name": "power.desktop/TrivialGifPageSharedPageState" }, { - "duration": "44.0", + "duration": "45.0", "name": "power.desktop/TrivialScrollingPageSharedPageState" }, { - "duration": "42.0", + "duration": "43.0", "name": "power.desktop/TrivialWebGLPageSharedPageState" }, { - "duration": "56.0", + "duration": "57.0", "name": "power.desktop/abcnews" }, { - "duration": "46.0", + "duration": "47.0", "name": "power.desktop/indiatimes" }, { @@ -2000,7 +2008,7 @@ "name": "power.desktop/instagram" }, { - "duration": "46.0", + "duration": "47.0", "name": "power.desktop/microsoft" }, { @@ -2008,15 +2016,15 @@ "name": "power.desktop/sina" }, { - "duration": "46.0", + "duration": "47.0", "name": "power.desktop/slideshare" }, { - "duration": "47.0", + "duration": "48.0", "name": "power.desktop/uol" }, { - "duration": "15.0", + "duration": "14.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html" }, { @@ -2036,7 +2044,7 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/ebay.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html" }, { @@ -2068,7 +2076,7 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleplus.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html" }, { @@ -2116,75 +2124,87 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html" }, { - "duration": "32.0", + "duration": "35.0", "name": "rendering.desktop/accu_weather_2018" }, { - "duration": "38.0", + "duration": "41.0", "name": "rendering.desktop/accu_weather_pinch_2018" }, { - "duration": "26.0", + "duration": "29.0", "name": "rendering.desktop/amazon_2018" }, { - "duration": "24.0", + "duration": "27.0", "name": "rendering.desktop/amazon_pinch_2018" }, { - "duration": "28.0", + "duration": "30.0", "name": "rendering.desktop/analog_clock_svg" }, { - "duration": "29.0", + "duration": "34.0", "name": "rendering.desktop/animometer_webgl" }, { - "duration": "32.0", + "duration": "33.0", "name": "rendering.desktop/animometer_webgl_attrib_arrays" }, { - "duration": "37.0", + "duration": "33.0", + "name": "rendering.desktop/animometer_webgl_fast_call" + }, + { + "duration": "40.0", "name": "rendering.desktop/animometer_webgl_indexed" }, { - "duration": "30.0", - "name": "rendering.desktop/animometer_webgl_indexed_multi_draw" - }, - { - "duration": "30.0", - "name": "rendering.desktop/animometer_webgl_indexed_multi_draw_base_vertex_base_instance" - }, - { - "duration": "57.0", - "name": "rendering.desktop/animometer_webgl_multi_draw" + "duration": "39.0", + "name": "rendering.desktop/animometer_webgl_indexed_fast_call" }, { "duration": "33.0", + "name": "rendering.desktop/animometer_webgl_indexed_multi_draw" + }, + { + "duration": "33.0", + "name": "rendering.desktop/animometer_webgl_indexed_multi_draw_base_vertex_base_instance" + }, + { + "duration": "60.0", + "name": "rendering.desktop/animometer_webgl_multi_draw" + }, + { + "duration": "34.0", "name": "rendering.desktop/aquarium" }, { - "duration": "35.0", + "duration": "38.0", "name": "rendering.desktop/aquarium_20k" }, { - "duration": "30.0", + "duration": "36.0", + "name": "rendering.desktop/aquarium_20k_fast_call" + }, + { + "duration": "33.0", "name": "rendering.desktop/background_color_animation" }, { - "duration": "27.0", + "duration": "29.0", "name": "rendering.desktop/background_color_animation_with_gradient" }, { - "duration": "28.0", + "duration": "30.0", "name": "rendering.desktop/balls_css_key_frame_animations" }, { - "duration": "30.0", + "duration": "33.0", "name": "rendering.desktop/balls_css_key_frame_animations_composited_transform" }, { - "duration": "27.0", + "duration": "30.0", "name": "rendering.desktop/balls_css_transition_2_properties" }, { @@ -2192,47 +2212,47 @@ "name": "rendering.desktop/balls_css_transition_40_properties" }, { - "duration": "25.0", + "duration": "30.0", "name": "rendering.desktop/balls_css_transition_all_properties" }, { - "duration": "26.0", + "duration": "31.0", "name": "rendering.desktop/balls_javascript_canvas" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/balls_javascript_css" }, { - "duration": "26.0", + "duration": "28.0", "name": "rendering.desktop/balls_svg_animations" }, { - "duration": "29.0", + "duration": "30.0", "name": "rendering.desktop/blob" }, { - "duration": "35.0", + "duration": "36.0", "name": "rendering.desktop/blogspot_2018" }, { - "duration": "30.0", + "duration": "29.0", "name": "rendering.desktop/blogspot_pinch_2018" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/blur_rotating_background" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.desktop/booking.com_2018" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.desktop/booking_pinch_2018" }, { - "duration": "25.0", + "duration": "27.0", "name": "rendering.desktop/bouncing_balls_15" }, { @@ -2240,11 +2260,11 @@ "name": "rendering.desktop/bouncing_balls_shadow" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/bouncing_clipped_rectangles" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/bouncing_gradient_circles" }, { @@ -2252,15 +2272,15 @@ "name": "rendering.desktop/bouncing_png_images" }, { - "duration": "27.0", + "duration": "28.0", "name": "rendering.desktop/bouncing_svg_images" }, { - "duration": "33.0", + "duration": "31.0", "name": "rendering.desktop/camera_to_webgl" }, { - "duration": "25.0", + "duration": "27.0", "name": "rendering.desktop/canvas2d_to_texture.html" }, { @@ -2280,383 +2300,383 @@ "name": "rendering.desktop/canvas_40000_pixels_per_second" }, { - "duration": "31.0", + "duration": "32.0", "name": "rendering.desktop/canvas_60000_pixels_per_second" }, { - "duration": "31.0", + "duration": "40.0", "name": "rendering.desktop/canvas_75000_pixels_per_second" }, { - "duration": "31.0", + "duration": "35.0", "name": "rendering.desktop/canvas_90000_pixels_per_second" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/canvas_animation_no_clear" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/canvas_arcs" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/canvas_font_cycler" }, { - "duration": "25.0", + "duration": "27.0", "name": "rendering.desktop/canvas_lines" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/canvas_to_blob" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/canvas_to_canvas_draw" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.desktop/cats_unscaled" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/cats_viewport_width" }, { - "duration": "29.0", + "duration": "30.0", "name": "rendering.desktop/cc_poster_circle" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.desktop/cc_scroll_text_only" }, { - "duration": "29.0", + "duration": "30.0", "name": "rendering.desktop/chip_tune" }, { - "duration": "24.0", + "duration": "25.0", "name": "rendering.desktop/cnn_2018" }, { - "duration": "29.0", + "duration": "31.0", "name": "rendering.desktop/cnn_pinch_2018" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/compositor_heavy_animation" }, { - "duration": "25.0", + "duration": "27.0", "name": "rendering.desktop/crafty_mind" }, { - "duration": "28.0", + "duration": "29.0", "name": "rendering.desktop/css_animations_many_keyframes" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/css_animations_simultaneous_inline_style" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/css_animations_simultaneous_new_element" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/css_animations_simultaneous_style_element" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/css_animations_simultaneous_updating_class" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/css_animations_staggered_infinite_iterations" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/css_animations_staggered_inline_style" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/css_animations_staggered_new_element" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/css_animations_staggered_style_element" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/css_animations_staggered_updating_class" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/css_animations_triggered_inline_style" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/css_animations_triggered_new_element" }, { - "duration": "25.0", + "duration": "27.0", "name": "rendering.desktop/css_animations_triggered_style_element" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/css_animations_triggered_updating_class" }, { - "duration": "28.0", + "duration": "30.0", "name": "rendering.desktop/css_opacity_plus_n_layers_99" }, { - "duration": "29.0", + "duration": "26.0", "name": "rendering.desktop/css_transitions_inline_style" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/css_transitions_new_element" }, { - "duration": "24.0", + "duration": "27.0", "name": "rendering.desktop/css_transitions_staggered_inline_style" }, { - "duration": "25.0", + "duration": "31.0", "name": "rendering.desktop/css_transitions_staggered_new_element" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/css_transitions_staggered_style_element" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/css_transitions_staggered_updating_class" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/css_transitions_style_element" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/css_transitions_triggered_inline_style" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/css_transitions_triggered_new_element" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/css_transitions_triggered_style_element" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/css_transitions_triggered_updating_class" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/css_transitions_updating_class" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/css_value_type_color" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/css_value_type_filter" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/css_value_type_length" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/css_value_type_length_complex" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/css_value_type_length_simple" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/css_value_type_path" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/css_value_type_shadow" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/css_value_type_transform_complex" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/css_value_type_transform_simple" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/docs_paper.html" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/docs_resume.html" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/docs_table.html" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/draw_image" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/draw_image_not_pixel_aligned" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/dynamic_canvas_to_hw_accelerated_canvas.html" }, { - "duration": "29.0", + "duration": "30.0", "name": "rendering.desktop/dynamic_cube_map" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/dynamic_webgl_to_hw_accelerated_canvas.html" }, { - "duration": "27.0", + "duration": "28.0", "name": "rendering.desktop/earth" }, { - "duration": "21.0", + "duration": "23.0", "name": "rendering.desktop/ebay_2018" }, { - "duration": "27.0", + "duration": "29.0", "name": "rendering.desktop/ebay_pinch_2018" }, { - "duration": "28.0", + "duration": "30.0", "name": "rendering.desktop/effect_games" }, { - "duration": "33.0", + "duration": "34.0", "name": "rendering.desktop/espn_2018" }, { - "duration": "25.0", + "duration": "27.0", "name": "rendering.desktop/espn_pinch_2018" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/extra_large_texture_uploads" }, { - "duration": "21.0", + "duration": "23.0", "name": "rendering.desktop/facebook_2018" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.desktop/facebook_pinch_2018" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/falling_particle_simulation_cpu.html" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/falling_particle_simulation_gpu.html" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/fill_clear_rect.html" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/fill_shapes" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/filter_terrain_svg" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/geo_apis" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/get_image_data_cpu.html" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/get_image_data_gpu.html" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.desktop/gmail_2018" }, { - "duration": "36.0", + "duration": "38.0", "name": "rendering.desktop/gmail_move_2018" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.desktop/gmail_pinch_2018" }, { - "duration": "19.0", + "duration": "21.0", "name": "rendering.desktop/google_calendar_2018" }, { - "duration": "26.0", + "duration": "23.0", "name": "rendering.desktop/google_calendar_pinch_2018" }, { - "duration": "33.0", + "duration": "25.0", "name": "rendering.desktop/google_docs_2018" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/google_image_pinch_2018" }, { - "duration": "21.0", + "duration": "23.0", "name": "rendering.desktop/google_image_search_2018" }, { - "duration": "22.0", + "duration": "33.0", "name": "rendering.desktop/google_plus_2018" }, { - "duration": "21.0", + "duration": "27.0", "name": "rendering.desktop/google_search_pinch_2018" }, { - "duration": "20.0", + "duration": "22.0", "name": "rendering.desktop/google_web_search_2018" }, { - "duration": "29.0", + "duration": "31.0", "name": "rendering.desktop/gpu_bound_shader.html" }, { - "duration": "25.0", + "duration": "27.0", "name": "rendering.desktop/guimark_vector_chart" }, { - "duration": "28.0", + "duration": "30.0", "name": "rendering.desktop/hakim" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/hw_accelerated_canvas_to_sw_canvas.html" }, { - "duration": "36.0", + "duration": "38.0", "name": "rendering.desktop/ie_chalkboard" }, { @@ -2664,175 +2684,183 @@ "name": "rendering.desktop/ie_pirate_mark" }, { - "duration": "26.0", + "duration": "28.0", "name": "rendering.desktop/infinite_scroll_element_n_layers_99" }, { - "duration": "26.0", + "duration": "28.0", "name": "rendering.desktop/infinite_scroll_root_fixed_n_layers_99" }, { - "duration": "26.0", + "duration": "28.0", "name": "rendering.desktop/infinite_scroll_root_n_layers_99" }, { - "duration": "25.0", + "duration": "27.0", "name": "rendering.desktop/jarro_doverson" }, { - "duration": "20.0", + "duration": "22.0", "name": "rendering.desktop/jpeg_decoding_rgb_and_gpu_rasterization" }, { - "duration": "20.0", + "duration": "22.0", "name": "rendering.desktop/jpeg_decoding_yuv_and_gpu_rasterization" }, { - "duration": "28.0", + "duration": "30.0", "name": "rendering.desktop/js_full_screen_invalidation" }, { - "duration": "27.0", + "duration": "29.0", "name": "rendering.desktop/js_opacity_plus_n_layers_99" }, { - "duration": "28.0", + "duration": "29.0", "name": "rendering.desktop/js_paint_plus_n_layers_99" }, { - "duration": "27.0", + "duration": "29.0", "name": "rendering.desktop/js_poster_circle" }, { - "duration": "27.0", + "duration": "29.0", "name": "rendering.desktop/js_scroll_text_only" }, { - "duration": "25.0", + "duration": "27.0", "name": "rendering.desktop/kevs_3d" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/keyframed_animations" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/large_texture_uploads" }, { - "duration": "21.0", + "duration": "24.0", "name": "rendering.desktop/linkedin_2018" }, { - "duration": "23.0", + "duration": "25.0", "name": "rendering.desktop/linkedin_pinch_2018" }, { - "duration": "68.0", + "duration": "69.0", "name": "rendering.desktop/lost_crypt" }, { - "duration": "25.0", + "duration": "63.0", + "name": "rendering.desktop/lost_crypt_fast_call" + }, + { + "duration": "26.0", "name": "rendering.desktop/main_0fps_impl_60fps" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/main_0fps_impl_60fps_no_update" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/main_0fps_impl_60fps_no_update_jank" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/main_0fps_with_jank_impl_0fps" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/main_15fps_impl_0fps" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/main_15fps_with_jank_impl_0fps" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/main_30fps_impl_0fps" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/main_30fps_impl_60fps" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/main_60fps_impl_0fps" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/main_60fps_impl_60fps" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/main_60fps_impl_60fps_no_update" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/main_60fps_impl_60fps_no_update_jank" }, { - "duration": "40.0", + "duration": "42.0", "name": "rendering.desktop/main_60fps_with_extreme_jank_impl_0fps" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/main_60fps_with_jank_and_delay_impl_60fps" }, { - "duration": "25.0", + "duration": "27.0", "name": "rendering.desktop/main_60fps_with_jank_impl_0fps" }, { - "duration": "25.0", + "duration": "27.0", "name": "rendering.desktop/main_animations_half_presented" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/man_in_blue" }, { - "duration": "27.0", + "duration": "29.0", "name": "rendering.desktop/many_images" }, { - "duration": "27.0", + "duration": "30.0", "name": "rendering.desktop/many_planets_deep" }, { - "duration": "25.0", + "duration": "27.0", "name": "rendering.desktop/maps_move_2018" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/maps_perf_test" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/medium_texture_uploads" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/megi_dish" }, { - "duration": "61.0", + "duration": "62.0", "name": "rendering.desktop/microgame_fps" }, { - "duration": "25.0", + "duration": "67.0", + "name": "rendering.desktop/microgame_fps_fast_call" + }, + { + "duration": "29.0", "name": "rendering.desktop/microsoft_asteroid_belt" }, { - "duration": "30.0", + "duration": "26.0", "name": "rendering.desktop/microsoft_fireflies" }, { @@ -2864,7 +2892,7 @@ "name": "rendering.desktop/microsoft_worker_fountains" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/mix_10k" }, { @@ -2904,11 +2932,11 @@ "name": "rendering.desktop/off_screen_main_60fps" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/off_screen_main_60fps_jank" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/overlay_background_color_css_transitions_page" }, { @@ -2916,7 +2944,7 @@ "name": "rendering.desktop/particles" }, { - "duration": "32.0", + "duration": "31.0", "name": "rendering.desktop/pinterest_2018" }, { @@ -2928,7 +2956,7 @@ "name": "rendering.desktop/put_get_image_data" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/put_image_data.html" }, { @@ -2940,15 +2968,15 @@ "name": "rendering.desktop/raf_animation" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.desktop/raf_canvas" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.desktop/raf_touch_animation" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/repaint_amazon_2018" }, { @@ -2960,7 +2988,7 @@ "name": "rendering.desktop/repaint_facebook_2018" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/repaint_google_search_2018" }, { @@ -2980,7 +3008,7 @@ "name": "rendering.desktop/repaint_twitter_2018" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/repaint_wikipedia_2018" }, { @@ -2996,23 +3024,23 @@ "name": "rendering.desktop/san_angeles" }, { - "duration": "20.0", + "duration": "24.0", "name": "rendering.desktop/second_batch_js_heavy" }, { - "duration": "20.0", + "duration": "23.0", "name": "rendering.desktop/second_batch_js_light" }, { - "duration": "19.0", + "duration": "23.0", "name": "rendering.desktop/second_batch_js_medium" }, { - "duration": "25.0", + "duration": "29.0", "name": "rendering.desktop/sheets_render.html" }, { - "duration": "22.0", + "duration": "26.0", "name": "rendering.desktop/simple_text_page" }, { @@ -3020,151 +3048,159 @@ "name": "rendering.desktop/simple_touch_drag" }, { - "duration": "68.0", + "duration": "71.0", "name": "rendering.desktop/skelebuddies_wasm_2020" }, { - "duration": "25.0", - "name": "rendering.desktop/small_texture_uploads" + "duration": "64.0", + "name": "rendering.desktop/skelebuddies_wasm_2020_fast_call" }, { "duration": "29.0", - "name": "rendering.desktop/smash_cat" - }, - { - "duration": "25.0", - "name": "rendering.desktop/spielzeugz" - }, - { - "duration": "25.0", - "name": "rendering.desktop/static_canvas_to_hw_accelerated_canvas.html" - }, - { - "duration": "25.0", - "name": "rendering.desktop/static_webgl_to_hw_accelerated_canvas.html" - }, - { - "duration": "25.0", - "name": "rendering.desktop/stroke_shapes" - }, - { - "duration": "19.0", - "name": "rendering.desktop/sync_scroll_offset" - }, - { - "duration": "34.0", - "name": "rendering.desktop/techcrunch_2018" - }, - { - "duration": "36.0", - "name": "rendering.desktop/text_05000_pixels_per_second" + "name": "rendering.desktop/small_texture_uploads" }, { "duration": "33.0", + "name": "rendering.desktop/smash_cat" + }, + { + "duration": "29.0", + "name": "rendering.desktop/spielzeugz" + }, + { + "duration": "29.0", + "name": "rendering.desktop/static_canvas_to_hw_accelerated_canvas.html" + }, + { + "duration": "29.0", + "name": "rendering.desktop/static_webgl_to_hw_accelerated_canvas.html" + }, + { + "duration": "29.0", + "name": "rendering.desktop/stroke_shapes" + }, + { + "duration": "23.0", + "name": "rendering.desktop/sync_scroll_offset" + }, + { + "duration": "38.0", + "name": "rendering.desktop/techcrunch_2018" + }, + { + "duration": "39.0", + "name": "rendering.desktop/text_05000_pixels_per_second" + }, + { + "duration": "37.0", "name": "rendering.desktop/text_10000_pixels_per_second" }, { - "duration": "32.0", + "duration": "35.0", "name": "rendering.desktop/text_20000_pixels_per_second" }, { - "duration": "31.0", + "duration": "35.0", "name": "rendering.desktop/text_40000_pixels_per_second" }, { - "duration": "31.0", + "duration": "35.0", "name": "rendering.desktop/text_60000_pixels_per_second" }, { - "duration": "31.0", + "duration": "35.0", "name": "rendering.desktop/text_75000_pixels_per_second" }, { - "duration": "31.0", + "duration": "34.0", "name": "rendering.desktop/text_90000_pixels_per_second" }, { - "duration": "36.0", + "duration": "40.0", "name": "rendering.desktop/text_constant_full_page_raster_05000_pixels_per_second" }, { - "duration": "34.0", + "duration": "38.0", "name": "rendering.desktop/text_constant_full_page_raster_10000_pixels_per_second" }, { - "duration": "31.0", + "duration": "35.0", "name": "rendering.desktop/text_constant_full_page_raster_20000_pixels_per_second" }, { - "duration": "32.0", + "duration": "35.0", "name": "rendering.desktop/text_constant_full_page_raster_40000_pixels_per_second" }, { - "duration": "31.0", + "duration": "35.0", "name": "rendering.desktop/text_constant_full_page_raster_60000_pixels_per_second" }, { - "duration": "31.0", + "duration": "35.0", "name": "rendering.desktop/text_constant_full_page_raster_75000_pixels_per_second" }, { - "duration": "31.0", + "duration": "35.0", "name": "rendering.desktop/text_constant_full_page_raster_90000_pixels_per_second" }, { - "duration": "36.0", + "duration": "39.0", "name": "rendering.desktop/text_hover_05000_pixels_per_second" }, { - "duration": "34.0", + "duration": "37.0", "name": "rendering.desktop/text_hover_10000_pixels_per_second" }, { - "duration": "31.0", + "duration": "35.0", "name": "rendering.desktop/text_hover_20000_pixels_per_second" }, { - "duration": "31.0", + "duration": "35.0", "name": "rendering.desktop/text_hover_40000_pixels_per_second" }, { - "duration": "31.0", + "duration": "35.0", "name": "rendering.desktop/text_hover_60000_pixels_per_second" }, { - "duration": "36.0", + "duration": "35.0", "name": "rendering.desktop/text_hover_75000_pixels_per_second" }, { - "duration": "31.0", + "duration": "34.0", "name": "rendering.desktop/text_hover_90000_pixels_per_second" }, { - "duration": "28.0", + "duration": "32.0", "name": "rendering.desktop/throughput_scrolling_active_handler" }, { - "duration": "28.0", + "duration": "32.0", "name": "rendering.desktop/throughput_scrolling_composited" }, { - "duration": "28.0", + "duration": "32.0", "name": "rendering.desktop/throughput_scrolling_passive_handler" }, { - "duration": "28.0", + "duration": "32.0", "name": "rendering.desktop/throughput_scrolling_uncomposited" }, { - "duration": "62.0", + "duration": "64.0", "name": "rendering.desktop/tiny_racing_v3_wasm_2020" }, { - "duration": "25.0", + "duration": "64.0", + "name": "rendering.desktop/tiny_racing_v3_wasm_2020_fast_call" + }, + { + "duration": "30.0", "name": "rendering.desktop/toBlob_duration.html" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/toBlob_duration_jpeg.html" }, { @@ -3188,7 +3224,7 @@ "name": "rendering.desktop/transform_transitions_js_block" }, { - "duration": "22.0", + "duration": "32.0", "name": "rendering.desktop/twitch_2018" }, { @@ -3204,7 +3240,7 @@ "name": "rendering.desktop/twitter_pinch_2018" }, { - "duration": "27.0", + "duration": "26.0", "name": "rendering.desktop/video_to_hw_accelerated_canvas" }, { @@ -3224,11 +3260,11 @@ "name": "rendering.desktop/video_to_sub_texture_premultiply" }, { - "duration": "28.0", + "duration": "26.0", "name": "rendering.desktop/video_to_texture" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/web_animation_value_type_color" }, { @@ -3264,15 +3300,15 @@ "name": "rendering.desktop/web_animations_many_keyframes" }, { - "duration": "27.0", + "duration": "25.0", "name": "rendering.desktop/web_animations_set_current_time" }, { - "duration": "24.0", + "duration": "25.0", "name": "rendering.desktop/web_animations_simultaneous" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/web_animations_staggered_chaining" }, { @@ -3280,71 +3316,75 @@ "name": "rendering.desktop/web_animations_staggered_infinite_iterations" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/web_animations_staggered_triggering_page" }, { - "duration": "24.0", + "duration": "25.0", "name": "rendering.desktop/webgl_to_texture" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/webp_decoding_rgb_and_gpu_rasterization" }, { - "duration": "19.0", + "duration": "21.0", "name": "rendering.desktop/webp_decoding_yuv_and_gpu_rasterization" }, { - "duration": "29.0", + "duration": "25.0", "name": "rendering.desktop/wikipedia_2018" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.desktop/wordpress_2018" }, { - "duration": "19.0", + "duration": "21.0", "name": "rendering.desktop/yahoo_answers_2018" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.desktop/yahoo_news_2018" }, { - "duration": "26.0", + "duration": "23.0", "name": "rendering.desktop/yahoo_news_pinch_2018" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.desktop/yahoo_sports_2018" }, { - "duration": "22.0", + "duration": "24.0", "name": "rendering.desktop/yahoo_sports_pinch_2018" }, { - "duration": "11.0", + "duration": "13.0", "name": "rendering.desktop/youtube_2018" }, { - "duration": "11.0", + "duration": "13.0", "name": "rendering.desktop/youtube_pinch_2018" }, { - "duration": "54.0", + "duration": "51.0", "name": "speedometer-future/http://browserbench.org/Speedometer/" }, { - "duration": "51.0", + "duration": "50.0", "name": "speedometer/http://browserbench.org/Speedometer/" }, { - "duration": "100.0", + "duration": "91.0", "name": "speedometer2-future/Speedometer2" }, { - "duration": "89.0", + "duration": "90.0", + "name": "speedometer2-pcscan/Speedometer2" + }, + { + "duration": "88.0", "name": "speedometer2/Speedometer2" }, { @@ -3356,39 +3396,51 @@ "name": "system_health.common_desktop/browse:media:imgur" }, { - "duration": "103.0", + "duration": "98.0", "name": "system_health.common_desktop/browse:media:pinterest:2018" }, { - "duration": "74.0", + "duration": "69.0", "name": "system_health.common_desktop/browse:media:tumblr:2018" }, { - "duration": "16.0", + "duration": "14.0", "name": "system_health.common_desktop/browse:media:youtube:2019" }, { - "duration": "79.0", + "duration": "77.0", "name": "system_health.common_desktop/browse:media:youtubetv:2019" }, { - "duration": "86.0", + "duration": "90.0", "name": "system_health.common_desktop/browse:media:youtubetv_watch:2020" }, { - "duration": "62.0", + "duration": "61.0", "name": "system_health.common_desktop/browse:news:cnn:2020" }, { - "duration": "53.0", + "duration": "54.0", "name": "system_health.common_desktop/browse:news:flipboard:2018" }, { - "duration": "85.0", + "duration": "11.0", + "name": "system_health.common_desktop/browse:news:hackernews:2020" + }, + { + "duration": "11.0", "name": "system_health.common_desktop/browse:news:nytimes:2020" }, { - "duration": "40.0", + "duration": "60.0", + "name": "system_health.common_desktop/browse:news:reddit:2020" + }, + { + "duration": "56.0", + "name": "system_health.common_desktop/browse:search:google:2020" + }, + { + "duration": "41.0", "name": "system_health.common_desktop/browse:search:google_india:2018" }, { @@ -3396,15 +3448,15 @@ "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "71.0", + "duration": "66.0", "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "57.0", + "duration": "52.0", "name": "system_health.common_desktop/browse:social:twitter:2018" }, { - "duration": "75.0", + "duration": "72.0", "name": "system_health.common_desktop/browse:social:twitter_infinite_scroll:2018" }, { @@ -3412,47 +3464,47 @@ "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "40.0", + "duration": "41.0", "name": "system_health.common_desktop/browse:tools:docs_scrolling" }, { - "duration": "78.0", + "duration": "79.0", "name": "system_health.common_desktop/browse:tools:earth:2020" }, { - "duration": "10.0", + "duration": "11.0", "name": "system_health.common_desktop/browse:tools:gmail-compose:2020" }, { - "duration": "10.0", + "duration": "11.0", "name": "system_health.common_desktop/browse:tools:gmail-labelclick:2020" }, { - "duration": "10.0", + "duration": "11.0", "name": "system_health.common_desktop/browse:tools:gmail-openconversation:2020" }, { - "duration": "10.0", + "duration": "11.0", "name": "system_health.common_desktop/browse:tools:gmail-search:2020" }, { - "duration": "10.0", + "duration": "11.0", "name": "system_health.common_desktop/browse:tools:maps:2019" }, { - "duration": "44.0", + "duration": "45.0", "name": "system_health.common_desktop/browse:tools:sheets:2019" }, { - "duration": "10.0", + "duration": "11.0", "name": "system_health.common_desktop/browse_accessibility:media:youtube" }, { - "duration": "35.0", + "duration": "38.0", "name": "system_health.common_desktop/browse_accessibility:tech:codesearch:2018" }, { - "duration": "24.0", + "duration": "26.0", "name": "system_health.common_desktop/load:chrome:blank" }, { @@ -3464,19 +3516,19 @@ "name": "system_health.common_desktop/load:games:bubbles:2020" }, { - "duration": "24.0", + "duration": "31.0", "name": "system_health.common_desktop/load:games:lazors" }, { - "duration": "27.0", + "duration": "28.0", "name": "system_health.common_desktop/load:games:miniclip:2018" }, { - "duration": "30.0", + "duration": "31.0", "name": "system_health.common_desktop/load:games:spychase:2018" }, { - "duration": "34.0", + "duration": "30.0", "name": "system_health.common_desktop/load:media:9gag" }, { @@ -3484,7 +3536,7 @@ "name": "system_health.common_desktop/load:media:dailymotion:2019" }, { - "duration": "26.0", + "duration": "27.0", "name": "system_health.common_desktop/load:media:facebook_feed:desktop:2020" }, { @@ -3500,7 +3552,7 @@ "name": "system_health.common_desktop/load:media:flickr:2018" }, { - "duration": "24.0", + "duration": "25.0", "name": "system_health.common_desktop/load:media:google_images:2018" }, { @@ -3524,6 +3576,10 @@ "name": "system_health.common_desktop/load:news:bbc:2018" }, { + "duration": "26.0", + "name": "system_health.common_desktop/load:news:cnn:2020" + }, + { "duration": "25.0", "name": "system_health.common_desktop/load:news:flipboard" }, @@ -3532,7 +3588,7 @@ "name": "system_health.common_desktop/load:news:hackernews:2018" }, { - "duration": "28.0", + "duration": "29.0", "name": "system_health.common_desktop/load:news:nytimes:2018" }, { @@ -3544,15 +3600,15 @@ "name": "system_health.common_desktop/load:news:reddit:2018" }, { - "duration": "25.0", + "duration": "26.0", "name": "system_health.common_desktop/load:news:wikipedia:2018" }, { - "duration": "24.0", + "duration": "25.0", "name": "system_health.common_desktop/load:search:amazon:2018" }, { - "duration": "24.0", + "duration": "25.0", "name": "system_health.common_desktop/load:search:baidu:2018" }, { @@ -3580,11 +3636,11 @@ "name": "system_health.common_desktop/load:search:yandex:2018" }, { - "duration": "24.0", + "duration": "25.0", "name": "system_health.common_desktop/load:social:instagram:2018" }, { - "duration": "26.0", + "duration": "27.0", "name": "system_health.common_desktop/load:social:pinterest:2019" }, { @@ -3600,7 +3656,7 @@ "name": "system_health.common_desktop/load:tools:docs:2019" }, { - "duration": "25.0", + "duration": "26.0", "name": "system_health.common_desktop/load:tools:drive:2019" }, { @@ -3616,47 +3672,47 @@ "name": "system_health.common_desktop/load:tools:weather:2019" }, { - "duration": "25.0", + "duration": "26.0", "name": "system_health.common_desktop/load_accessibility:media:wikipedia:2018" }, { - "duration": "24.0", + "duration": "26.0", "name": "system_health.common_desktop/load_accessibility:shopping:amazon:2018" }, { - "duration": "150.0", + "duration": "140.0", "name": "system_health.common_desktop/long_running:tools:gmail-background" }, { - "duration": "16.0", + "duration": "11.0", "name": "system_health.common_desktop/long_running:tools:gmail-foreground" }, { - "duration": "16.0", + "duration": "11.0", "name": "system_health.common_desktop/multitab:misc:typical24" }, { - "duration": "16.0", + "duration": "11.0", "name": "system_health.common_desktop/multitab:misc:typical24:2018" }, { - "duration": "54.0", + "duration": "55.0", "name": "system_health.common_desktop/play:media:google_play_music" }, { - "duration": "57.0", + "duration": "52.0", "name": "system_health.common_desktop/play:media:soundcloud:2018" }, { - "duration": "38.0", + "duration": "40.0", "name": "system_health.memory_desktop/browse:media:googleplaystore:2018" }, { - "duration": "75.0", + "duration": "74.0", "name": "system_health.memory_desktop/browse:media:imgur" }, { - "duration": "90.0", + "duration": "92.0", "name": "system_health.memory_desktop/browse:media:pinterest:2018" }, { @@ -3668,35 +3724,47 @@ "name": "system_health.memory_desktop/browse:media:youtube:2019" }, { - "duration": "68.0", + "duration": "69.0", "name": "system_health.memory_desktop/browse:media:youtubetv:2019" }, { - "duration": "77.0", + "duration": "76.0", "name": "system_health.memory_desktop/browse:media:youtubetv_watch:2020" }, { - "duration": "52.0", + "duration": "51.0", "name": "system_health.memory_desktop/browse:news:cnn:2020" }, { - "duration": "45.0", + "duration": "46.0", "name": "system_health.memory_desktop/browse:news:flipboard:2018" }, { - "duration": "70.0", + "duration": "52.0", + "name": "system_health.memory_desktop/browse:news:hackernews:2020" + }, + { + "duration": "5.0", "name": "system_health.memory_desktop/browse:news:nytimes:2020" }, { - "duration": "33.0", + "duration": "55.0", + "name": "system_health.memory_desktop/browse:news:reddit:2020" + }, + { + "duration": "50.0", + "name": "system_health.memory_desktop/browse:search:google:2020" + }, + { + "duration": "35.0", "name": "system_health.memory_desktop/browse:search:google_india:2018" }, { - "duration": "70.0", + "duration": "67.0", "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "62.0", + "duration": "61.0", "name": "system_health.memory_desktop/browse:social:tumblr_infinite_scroll:2018" }, { @@ -3712,7 +3780,7 @@ "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "33.0", + "duration": "35.0", "name": "system_health.memory_desktop/browse:tools:docs_scrolling" }, { @@ -3736,39 +3804,39 @@ "name": "system_health.memory_desktop/browse:tools:gmail-search:2020" }, { - "duration": "4.0", + "duration": "6.0", "name": "system_health.memory_desktop/browse:tools:maps:2019" }, { - "duration": "39.0", + "duration": "38.0", "name": "system_health.memory_desktop/browse:tools:sheets:2019" }, { - "duration": "6.0", + "duration": "4.0", "name": "system_health.memory_desktop/browse_accessibility:media:youtube" }, { - "duration": "29.0", + "duration": "27.0", "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch:2018" }, { - "duration": "18.0", + "duration": "16.0", "name": "system_health.memory_desktop/load:chrome:blank" }, { - "duration": "20.0", + "duration": "19.0", "name": "system_health.memory_desktop/load:games:alphabetty:2018" }, { - "duration": "20.0", + "duration": "19.0", "name": "system_health.memory_desktop/load:games:bubbles:2020" }, { - "duration": "22.0", + "duration": "21.0", "name": "system_health.memory_desktop/load:games:lazors" }, { - "duration": "23.0", + "duration": "21.0", "name": "system_health.memory_desktop/load:games:miniclip:2018" }, { @@ -3776,11 +3844,11 @@ "name": "system_health.memory_desktop/load:games:spychase:2018" }, { - "duration": "24.0", + "duration": "23.0", "name": "system_health.memory_desktop/load:media:9gag" }, { - "duration": "21.0", + "duration": "20.0", "name": "system_health.memory_desktop/load:media:dailymotion:2019" }, { @@ -3792,7 +3860,7 @@ "name": "system_health.memory_desktop/load:media:facebook_photos:2018" }, { - "duration": "22.0", + "duration": "21.0", "name": "system_health.memory_desktop/load:media:facebook_photos:desktop:2020" }, { @@ -3808,7 +3876,7 @@ "name": "system_health.memory_desktop/load:media:imgur:2018" }, { - "duration": "21.0", + "duration": "20.0", "name": "system_health.memory_desktop/load:media:soundcloud:2018" }, { @@ -3816,14 +3884,18 @@ "name": "system_health.memory_desktop/load:media:youtube:2018" }, { - "duration": "19.0", + "duration": "18.0", "name": "system_health.memory_desktop/load:media:youtubelivingroom:2020" }, { - "duration": "20.0", + "duration": "19.0", "name": "system_health.memory_desktop/load:news:bbc:2018" }, { + "duration": "21.0", + "name": "system_health.memory_desktop/load:news:cnn:2020" + }, + { "duration": "20.0", "name": "system_health.memory_desktop/load:news:flipboard" }, @@ -3832,15 +3904,15 @@ "name": "system_health.memory_desktop/load:news:hackernews:2018" }, { - "duration": "23.0", + "duration": "22.0", "name": "system_health.memory_desktop/load:news:nytimes:2018" }, { - "duration": "21.0", + "duration": "19.0", "name": "system_health.memory_desktop/load:news:qq:2018" }, { - "duration": "21.0", + "duration": "20.0", "name": "system_health.memory_desktop/load:news:reddit:2018" }, { @@ -3848,11 +3920,11 @@ "name": "system_health.memory_desktop/load:news:wikipedia:2018" }, { - "duration": "20.0", + "duration": "19.0", "name": "system_health.memory_desktop/load:search:amazon:2018" }, { - "duration": "20.0", + "duration": "19.0", "name": "system_health.memory_desktop/load:search:baidu:2018" }, { @@ -3868,7 +3940,7 @@ "name": "system_health.memory_desktop/load:search:google:2018" }, { - "duration": "19.0", + "duration": "18.0", "name": "system_health.memory_desktop/load:search:taobao:2018" }, { @@ -3884,7 +3956,7 @@ "name": "system_health.memory_desktop/load:social:instagram:2018" }, { - "duration": "22.0", + "duration": "20.0", "name": "system_health.memory_desktop/load:social:pinterest:2019" }, { @@ -3892,7 +3964,7 @@ "name": "system_health.memory_desktop/load:social:vk:2018" }, { - "duration": "31.0", + "duration": "30.0", "name": "system_health.memory_desktop/load:tools:chat:2020" }, { @@ -3904,7 +3976,7 @@ "name": "system_health.memory_desktop/load:tools:drive:2019" }, { - "duration": "34.0", + "duration": "33.0", "name": "system_health.memory_desktop/load:tools:gmail:2019" }, { @@ -3916,31 +3988,31 @@ "name": "system_health.memory_desktop/load:tools:weather:2019" }, { - "duration": "19.0", + "duration": "17.0", "name": "system_health.memory_desktop/load_accessibility:media:wikipedia:2018" }, { - "duration": "19.0", + "duration": "17.0", "name": "system_health.memory_desktop/load_accessibility:shopping:amazon:2018" }, { - "duration": "6.0", + "duration": "5.0", "name": "system_health.memory_desktop/long_running:tools:gmail-background" }, { - "duration": "6.0", + "duration": "5.0", "name": "system_health.memory_desktop/long_running:tools:gmail-foreground" }, { - "duration": "6.0", + "duration": "5.0", "name": "system_health.memory_desktop/multitab:misc:typical24" }, { - "duration": "6.0", + "duration": "5.0", "name": "system_health.memory_desktop/multitab:misc:typical24:2018" }, { - "duration": "4.0", + "duration": "6.0", "name": "system_health.memory_desktop/play:media:google_play_music" }, { @@ -3948,6 +4020,42 @@ "name": "system_health.memory_desktop/play:media:soundcloud:2018" }, { + "duration": "60.0", + "name": "tab_search/tab_search:close_and_open:2020" + }, + { + "duration": "56.0", + "name": "tab_search/tab_search:close_and_open:loading:2020" + }, + { + "duration": "250.0", + "name": "tab_search/tab_search:scroll_up_and_down:2020" + }, + { + "duration": "256.0", + "name": "tab_search/tab_search:top100:2020" + }, + { + "duration": "240.0", + "name": "tab_search/tab_search:top100:loading:2020" + }, + { + "duration": "96.0", + "name": "tab_search/tab_search:top10:2020" + }, + { + "duration": "49.0", + "name": "tab_search/tab_search:top10:loading:2020" + }, + { + "duration": "142.0", + "name": "tab_search/tab_search:top50:2020" + }, + { + "duration": "132.0", + "name": "tab_search/tab_search:top50:loading:2020" + }, + { "duration": "0.0", "name": "tab_switching.typical_25/multitab:misc:typical24" }, @@ -3964,7 +4072,7 @@ "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com" }, { - "duration": "15.0", + "duration": "14.0", "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/" }, { @@ -3972,7 +4080,7 @@ "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/" }, { - "duration": "14.0", + "duration": "16.0", "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/" }, { @@ -3980,7 +4088,7 @@ "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com" }, { - "duration": "17.0", + "duration": "16.0", "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama" }, { @@ -3992,7 +4100,7 @@ "name": "v8.browsing_desktop-future/browse:media:googleplaystore:2018" }, { - "duration": "21.0", + "duration": "22.0", "name": "v8.browsing_desktop-future/browse:media:imgur" }, { @@ -4000,39 +4108,51 @@ "name": "v8.browsing_desktop-future/browse:media:pinterest:2018" }, { - "duration": "80.0", + "duration": "81.0", "name": "v8.browsing_desktop-future/browse:media:tumblr:2018" }, { - "duration": "21.0", + "duration": "22.0", "name": "v8.browsing_desktop-future/browse:media:youtube:2019" }, { - "duration": "84.0", + "duration": "85.0", "name": "v8.browsing_desktop-future/browse:media:youtubetv:2019" }, { - "duration": "91.0", + "duration": "92.0", "name": "v8.browsing_desktop-future/browse:media:youtubetv_watch:2020" }, { - "duration": "21.0", + "duration": "24.0", "name": "v8.browsing_desktop-future/browse:news:cnn:2020" }, { - "duration": "65.0", + "duration": "68.0", "name": "v8.browsing_desktop-future/browse:news:flipboard:2018" }, { - "duration": "21.0", + "duration": "22.0", + "name": "v8.browsing_desktop-future/browse:news:hackernews:2020" + }, + { + "duration": "22.0", "name": "v8.browsing_desktop-future/browse:news:nytimes:2020" }, { - "duration": "51.0", + "duration": "73.0", + "name": "v8.browsing_desktop-future/browse:news:reddit:2020" + }, + { + "duration": "71.0", + "name": "v8.browsing_desktop-future/browse:search:google:2020" + }, + { + "duration": "52.0", "name": "v8.browsing_desktop-future/browse:search:google_india:2018" }, { - "duration": "91.0", + "duration": "94.0", "name": "v8.browsing_desktop-future/browse:social:facebook_infinite_scroll:2018" }, { @@ -4040,7 +4160,7 @@ "name": "v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "63.0", + "duration": "64.0", "name": "v8.browsing_desktop-future/browse:social:twitter:2018" }, { @@ -4048,167 +4168,203 @@ "name": "v8.browsing_desktop-future/browse:social:twitter_infinite_scroll:2018" }, { - "duration": "77.0", + "duration": "80.0", "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "51.0", + "duration": "52.0", "name": "v8.browsing_desktop-future/browse:tools:docs_scrolling" }, { - "duration": "91.0", + "duration": "94.0", "name": "v8.browsing_desktop-future/browse:tools:earth:2020" }, { - "duration": "21.0", + "duration": "24.0", "name": "v8.browsing_desktop-future/browse:tools:gmail-compose:2020" }, { - "duration": "21.0", + "duration": "24.0", "name": "v8.browsing_desktop-future/browse:tools:gmail-labelclick:2020" }, { - "duration": "21.0", + "duration": "24.0", "name": "v8.browsing_desktop-future/browse:tools:gmail-openconversation:2020" }, { - "duration": "21.0", + "duration": "24.0", "name": "v8.browsing_desktop-future/browse:tools:gmail-search:2020" }, { - "duration": "21.0", + "duration": "22.0", "name": "v8.browsing_desktop-future/browse:tools:maps:2019" }, { - "duration": "57.0", + "duration": "58.0", "name": "v8.browsing_desktop-future/browse:tools:sheets:2019" }, { - "duration": "55.0", + "duration": "61.0", "name": "v8.browsing_desktop/browse:media:googleplaystore:2018" }, { - "duration": "19.0", + "duration": "24.0", "name": "v8.browsing_desktop/browse:media:imgur" }, { - "duration": "118.0", + "duration": "112.0", "name": "v8.browsing_desktop/browse:media:pinterest:2018" }, { - "duration": "90.0", + "duration": "84.0", "name": "v8.browsing_desktop/browse:media:tumblr:2018" }, { - "duration": "30.0", + "duration": "24.0", "name": "v8.browsing_desktop/browse:media:youtube:2019" }, { - "duration": "94.0", + "duration": "88.0", "name": "v8.browsing_desktop/browse:media:youtubetv:2019" }, { - "duration": "100.0", + "duration": "94.0", "name": "v8.browsing_desktop/browse:media:youtubetv_watch:2020" }, { - "duration": "75.0", + "duration": "80.0", "name": "v8.browsing_desktop/browse:news:cnn:2020" }, { - "duration": "62.0", + "duration": "69.0", "name": "v8.browsing_desktop/browse:news:flipboard:2018" }, { - "duration": "19.0", + "duration": "24.0", + "name": "v8.browsing_desktop/browse:news:hackernews:2020" + }, + { + "duration": "24.0", "name": "v8.browsing_desktop/browse:news:nytimes:2020" }, { - "duration": "49.0", + "duration": "76.0", + "name": "v8.browsing_desktop/browse:news:reddit:2020" + }, + { + "duration": "71.0", + "name": "v8.browsing_desktop/browse:search:google:2020" + }, + { + "duration": "55.0", "name": "v8.browsing_desktop/browse:search:google_india:2018" }, { - "duration": "93.0", + "duration": "100.0", "name": "v8.browsing_desktop/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "93.0", + "duration": "86.0", "name": "v8.browsing_desktop/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "72.0", + "duration": "66.0", "name": "v8.browsing_desktop/browse:social:twitter:2018" }, { - "duration": "90.0", + "duration": "84.0", "name": "v8.browsing_desktop/browse:social:twitter_infinite_scroll:2018" }, { - "duration": "75.0", + "duration": "81.0", "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "49.0", + "duration": "55.0", "name": "v8.browsing_desktop/browse:tools:docs_scrolling" }, { - "duration": "88.0", + "duration": "95.0", "name": "v8.browsing_desktop/browse:tools:earth:2020" }, { - "duration": "19.0", + "duration": "25.0", "name": "v8.browsing_desktop/browse:tools:gmail-compose:2020" }, { - "duration": "19.0", + "duration": "25.0", "name": "v8.browsing_desktop/browse:tools:gmail-labelclick:2020" }, { - "duration": "19.0", + "duration": "25.0", "name": "v8.browsing_desktop/browse:tools:gmail-openconversation:2020" }, { - "duration": "19.0", + "duration": "25.0", "name": "v8.browsing_desktop/browse:tools:gmail-search:2020" }, { - "duration": "19.0", + "duration": "25.0", "name": "v8.browsing_desktop/browse:tools:maps:2019" }, { - "duration": "54.0", + "duration": "61.0", "name": "v8.browsing_desktop/browse:tools:sheets:2019" }, { - "duration": "33.0", + "duration": "30.0", "name": "webrtc/10s_datachannel_transfer" }, { - "duration": "31.0", + "duration": "28.0", "name": "webrtc/canvas_capture_peer_connection" }, { - "duration": "41.0", + "duration": "38.0", "name": "webrtc/codec_constraints_h264" }, { - "duration": "41.0", + "duration": "38.0", "name": "webrtc/codec_constraints_vp8" }, { - "duration": "41.0", + "duration": "38.0", "name": "webrtc/codec_constraints_vp9" }, { - "duration": "31.0", + "duration": "28.0", "name": "webrtc/hd_local_stream_10s" }, { - "duration": "43.0", + "duration": "28.0", + "name": "webrtc/insertable_streams_video_processing_camera_canvas2d_video" + }, + { + "duration": "28.0", + "name": "webrtc/insertable_streams_video_processing_camera_drop_video" + }, + { + "duration": "28.0", + "name": "webrtc/insertable_streams_video_processing_camera_webgl_pc" + }, + { + "duration": "28.0", + "name": "webrtc/insertable_streams_video_processing_camera_webgl_video" + }, + { + "duration": "28.0", + "name": "webrtc/insertable_streams_video_processing_pc_webgl_video" + }, + { + "duration": "28.0", + "name": "webrtc/insertable_streams_video_processing_video_webgl_video" + }, + { + "duration": "40.0", "name": "webrtc/multiple_peerconnections" }, { - "duration": "46.0", + "duration": "43.0", "name": "webrtc/pause_play_peerconnections" }, {
diff --git a/tools/perf/core/shard_maps/timing_data/mac-10_13_laptop_high_end-perf_timing.json b/tools/perf/core/shard_maps/timing_data/mac-10_13_laptop_high_end-perf_timing.json index 0f278753..71aae14 100644 --- a/tools/perf/core/shard_maps/timing_data/mac-10_13_laptop_high_end-perf_timing.json +++ b/tools/perf/core/shard_maps/timing_data/mac-10_13_laptop_high_end-perf_timing.json
@@ -1,18 +1,18 @@ [ { - "duration": "65.0", + "duration": "20.0", "name": "blink_perf.accessibility/build-table.html" }, { - "duration": "19.0", + "duration": "16.0", "name": "blink_perf.accessibility/focus-links.html" }, { - "duration": "21.0", + "duration": "20.0", "name": "blink_perf.accessibility/line-breaks.html" }, { - "duration": "28.0", + "duration": "27.0", "name": "blink_perf.accessibility/many-text-changes-deep-block-subtree.html" }, { @@ -28,11 +28,11 @@ "name": "blink_perf.accessibility/many-text-changes-small-wait-between.html" }, { - "duration": "19.0", + "duration": "18.0", "name": "blink_perf.accessibility/textarea-append.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.bindings/append-child.html" }, { @@ -44,7 +44,7 @@ "name": "blink_perf.bindings/document-implementation.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.bindings/dom-attribute-on-prototoype.html" }, { @@ -64,7 +64,7 @@ "name": "blink_perf.bindings/gc-tree.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.bindings/get-attribute-rare.html" }, { @@ -76,7 +76,7 @@ "name": "blink_perf.bindings/get-element-by-id.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.bindings/get-elements-by-tag-name.html" }, { @@ -96,11 +96,11 @@ "name": "blink_perf.bindings/insert-before.html" }, { - "duration": "7.0", + "duration": "8.0", "name": "blink_perf.bindings/named-property-enumerator.html" }, { - "duration": "14.0", + "duration": "13.0", "name": "blink_perf.bindings/node-list-access.html" }, { @@ -112,11 +112,11 @@ "name": "blink_perf.bindings/post-message.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.bindings/sequence-conversion-array.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.bindings/sequence-conversion-custom-iterator.html" }, { @@ -176,11 +176,11 @@ "name": "blink_perf.bindings/typed-array-set-from-typed.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.bindings/undefined-first-child.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.bindings/undefined-get-element-by-id.html" }, { @@ -192,15 +192,15 @@ "name": "blink_perf.bindings/worker-structured-clone-different-payloads.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.bindings/worker-structured-clone-json-from-worker.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.bindings/worker-structured-clone-json-roundtrip.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.bindings/worker-structured-clone-json-to-worker.html" }, { @@ -252,7 +252,7 @@ "name": "blink_perf.css/CSSPropertySetterGetterMethods.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.css/CSSPropertyUpdateValue.html" }, { @@ -272,7 +272,7 @@ "name": "blink_perf.css/ChangeStyleCustomPropertyDeclaration.html" }, { - "duration": "8.0", + "duration": "9.0", "name": "blink_perf.css/ChangeStyleElementSelector.html" }, { @@ -280,7 +280,7 @@ "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html" }, { - "duration": "7.0", + "duration": "8.0", "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html" }, { @@ -292,23 +292,23 @@ "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html" }, { - "duration": "7.0", + "duration": "8.0", "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html" }, { - "duration": "8.0", + "duration": "9.0", "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html" }, { - "duration": "8.0", + "duration": "9.0", "name": "blink_perf.css/ChangeStyleShallowTree.html" }, { @@ -320,7 +320,7 @@ "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html" }, { - "duration": "7.0", + "duration": "8.0", "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html" }, { @@ -328,11 +328,11 @@ "name": "blink_perf.css/ChangeStyleUniversalSelector.html" }, { - "duration": "7.0", + "duration": "8.0", "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html" }, { @@ -348,7 +348,7 @@ "name": "blink_perf.css/CustomPropertiesCascade.html" }, { - "duration": "4.0", + "duration": "3.0", "name": "blink_perf.css/CustomPropertiesDependency.html" }, { @@ -380,7 +380,7 @@ "name": "blink_perf.css/LoadBootstrapBlog.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.css/LoadMaterializeStarterPage.html" }, { @@ -408,7 +408,7 @@ "name": "blink_perf.dom/long-sibling-list.html" }, { - "duration": "3.0", + "duration": "4.0", "name": "blink_perf.dom/modify-element-classname.html" }, { @@ -440,7 +440,7 @@ "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html" }, { - "duration": "14.0", + "duration": "15.0", "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html" }, { @@ -456,7 +456,7 @@ "name": "blink_perf.events/is-input-pending-include-continuous-events.html" }, { - "duration": "18.0", + "duration": "17.0", "name": "blink_perf.image_decoder/decode-gif.html" }, { @@ -496,7 +496,7 @@ "name": "blink_perf.image_decoder/decode-png.html" }, { - "duration": "28.0", + "duration": "29.0", "name": "blink_perf.layout/ArabicLineLayout.html" }, { @@ -516,7 +516,7 @@ "name": "blink_perf.layout/add-remove-inline-floats.html" }, { - "duration": "3.0", + "duration": "2.0", "name": "blink_perf.layout/animate-abspos-deep.html" }, { @@ -528,11 +528,11 @@ "name": "blink_perf.layout/attach-inlines.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.layout/auto-grid-lots-of-data.html" }, { - "duration": "8.0", + "duration": "9.0", "name": "blink_perf.layout/auto-grid-lots-of-spanning-data.html" }, { @@ -540,7 +540,7 @@ "name": "blink_perf.layout/change-text-css-contain.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.layout/chapter-reflow-once-random.html" }, { @@ -564,7 +564,7 @@ "name": "blink_perf.layout/character_fallback.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.layout/contain-content-style-change.html" }, { @@ -604,7 +604,7 @@ "name": "blink_perf.layout/fit-content-change-available-size-blocks.html" }, { - "duration": "7.0", + "duration": "8.0", "name": "blink_perf.layout/fit-content-change-available-size-text.html" }, { @@ -612,7 +612,7 @@ "name": "blink_perf.layout/fixed-grid-lots-of-data.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.layout/fixed-grid-lots-of-stretched-data.html" }, { @@ -628,7 +628,7 @@ "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html" }, { - "duration": "8.0", + "duration": "9.0", "name": "blink_perf.layout/flexbox-hittest.html" }, { @@ -700,11 +700,11 @@ "name": "blink_perf.layout/floats_50_100_nested.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.layout/floats_show_hide.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.layout/hindi-line-layout.html" }, { @@ -740,7 +740,7 @@ "name": "blink_perf.layout/latin-ebook-resize.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.layout/latin-ebook.html" }, { @@ -764,7 +764,7 @@ "name": "blink_perf.layout/line-layout-line-height.html" }, { - "duration": "7.0", + "duration": "8.0", "name": "blink_perf.layout/line-layout-repeat-append-select.html" }, { @@ -792,7 +792,7 @@ "name": "blink_perf.layout/many-block-children-auto-inline-size.html" }, { - "duration": "13.0", + "duration": "8.0", "name": "blink_perf.layout/many-block-children-fixed-inline-size.html" }, { @@ -836,7 +836,7 @@ "name": "blink_perf.layout/multicol/tall-content-short-columns-realistic.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.layout/multicol/tall-content-short-columns.html" }, { @@ -844,11 +844,11 @@ "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.layout/nested-grid-lots-of-tracks.html" }, { - "duration": "8.0", + "duration": "12.0", "name": "blink_perf.layout/nested-grid.html" }, { @@ -888,7 +888,7 @@ "name": "blink_perf.owp_storage/blob-perf-ipc.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.owp_storage/blob-perf-shm.html" }, { @@ -896,15 +896,15 @@ "name": "blink_perf.owp_storage/blob-perf-tiny.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.owp_storage/idb-load-docs.html" }, { - "duration": "19.0", + "duration": "23.0", "name": "blink_perf.owp_storage/idb-put-all.html" }, { - "duration": "22.0", + "duration": "26.0", "name": "blink_perf.owp_storage/idb-put.html" }, { @@ -924,7 +924,7 @@ "name": "blink_perf.paint/complex-iframe-filtered.html" }, { - "duration": "24.0", + "duration": "25.0", "name": "blink_perf.paint/contain-update-layer-tree.html" }, { @@ -956,7 +956,7 @@ "name": "blink_perf.paint/paint-offset-changes.html" }, { - "duration": "15.0", + "duration": "14.0", "name": "blink_perf.paint/transform-changes.html" }, { @@ -964,11 +964,11 @@ "name": "blink_perf.parser/css-parser-yui.html" }, { - "duration": "27.0", + "duration": "15.0", "name": "blink_perf.parser/declarative-shadow-dom-cloning.html" }, { - "duration": "12.0", + "duration": "9.0", "name": "blink_perf.parser/declarative-shadow-dom.html" }, { @@ -976,15 +976,15 @@ "name": "blink_perf.parser/html-parser-threaded.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.parser/html-parser.html" }, { - "duration": "21.0", + "duration": "22.0", "name": "blink_perf.parser/html5-full-render.html" }, { - "duration": "21.0", + "duration": "25.0", "name": "blink_perf.parser/iframe-append-remove.html" }, { @@ -1036,7 +1036,7 @@ "name": "blink_perf.parser/query-selector-all-id-first.html" }, { - "duration": "8.0", + "duration": "9.0", "name": "blink_perf.parser/query-selector-all-id-last.html" }, { @@ -1064,11 +1064,11 @@ "name": "blink_perf.parser/query-selector-last.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.parser/simple-url.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.parser/textarea-parsing.html" }, { @@ -1148,7 +1148,7 @@ "name": "blink_perf.shadow_dom/style-sheet-insert.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html" }, { @@ -1160,11 +1160,11 @@ "name": "blink_perf.shadow_dom/v1-host-child-append.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.shadow_dom/v1-large-deep-layout.html" }, { @@ -1324,23 +1324,23 @@ "name": "blink_perf.svg/Worldcup.html" }, { - "duration": "14.0", + "duration": "16.0", "name": "blink_perf.webaudio/audio-buffer-source-node.html" }, { - "duration": "35.0", + "duration": "93.0", "name": "blink_perf.webaudio/audio-worklet-node.html" }, { - "duration": "34.0", + "duration": "94.0", "name": "blink_perf.webaudio/biquad-filter-node.html" }, { - "duration": "35.0", + "duration": "94.0", "name": "blink_perf.webaudio/gain-node.html" }, { - "duration": "35.0", + "duration": "36.0", "name": "blink_perf.webaudio/panner-node.html" }, { @@ -1368,11 +1368,11 @@ "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html" }, { - "duration": "184.0", + "duration": "185.0", "name": "jetstream/JetStream" }, { - "duration": "156.0", + "duration": "169.0", "name": "jetstream2/JetStream2" }, { @@ -1384,15 +1384,15 @@ "name": "loading.desktop/24h_cold" }, { - "duration": "19.0", + "duration": "20.0", "name": "loading.desktop/24h_warm" }, { - "duration": "22.0", + "duration": "23.0", "name": "loading.desktop/AirBnB_cold" }, { - "duration": "31.0", + "duration": "32.0", "name": "loading.desktop/AirBnB_warm" }, { @@ -1400,15 +1400,15 @@ "name": "loading.desktop/Aljayyash_cold" }, { - "duration": "16.0", + "duration": "17.0", "name": "loading.desktop/Aljayyash_warm" }, { - "duration": "22.0", + "duration": "23.0", "name": "loading.desktop/AllRecipes_cold" }, { - "duration": "28.0", + "duration": "29.0", "name": "loading.desktop/AllRecipes_warm" }, { @@ -1416,7 +1416,7 @@ "name": "loading.desktop/ArsTechnica_cold" }, { - "duration": "35.0", + "duration": "36.0", "name": "loading.desktop/ArsTechnica_warm" }, { @@ -1424,19 +1424,19 @@ "name": "loading.desktop/Baidu_cold" }, { - "duration": "18.0", + "duration": "19.0", "name": "loading.desktop/Baidu_warm" }, { - "duration": "18.0", + "duration": "17.0", "name": "loading.desktop/Bhaskar_cold" }, { - "duration": "21.0", + "duration": "22.0", "name": "loading.desktop/Bhaskar_warm" }, { - "duration": "18.0", + "duration": "17.0", "name": "loading.desktop/Chosun_cold" }, { @@ -1448,15 +1448,15 @@ "name": "loading.desktop/Colorado.edu_cold" }, { - "duration": "19.0", + "duration": "20.0", "name": "loading.desktop/Colorado.edu_warm" }, { - "duration": "18.0", + "duration": "17.0", "name": "loading.desktop/Danawa_cold" }, { - "duration": "19.0", + "duration": "20.0", "name": "loading.desktop/Danawa_warm" }, { @@ -1464,15 +1464,15 @@ "name": "loading.desktop/Daum_cold" }, { - "duration": "19.0", + "duration": "30.0", "name": "loading.desktop/Daum_warm" }, { - "duration": "18.0", + "duration": "17.0", "name": "loading.desktop/Donga_cold" }, { - "duration": "29.0", + "duration": "20.0", "name": "loading.desktop/Donga_warm" }, { @@ -1492,11 +1492,11 @@ "name": "loading.desktop/Elmundo_warm" }, { - "duration": "17.0", + "duration": "16.0", "name": "loading.desktop/FC2Blog_cold" }, { - "duration": "19.0", + "duration": "20.0", "name": "loading.desktop/FC2Blog_warm" }, { @@ -1512,7 +1512,7 @@ "name": "loading.desktop/FarsNews_cold" }, { - "duration": "17.0", + "duration": "18.0", "name": "loading.desktop/FarsNews_warm" }, { @@ -1528,7 +1528,7 @@ "name": "loading.desktop/FlipKart_cold" }, { - "duration": "18.0", + "duration": "19.0", "name": "loading.desktop/FlipKart_warm" }, { @@ -1536,31 +1536,31 @@ "name": "loading.desktop/Free.fr_cold" }, { - "duration": "17.0", + "duration": "18.0", "name": "loading.desktop/Free.fr_warm" }, { - "duration": "17.0", + "duration": "16.0", "name": "loading.desktop/HTML5Rocks_cold" }, { - "duration": "18.0", + "duration": "19.0", "name": "loading.desktop/HTML5Rocks_warm" }, { - "duration": "15.0", + "duration": "14.0", "name": "loading.desktop/Haraj_cold" }, { - "duration": "26.0", + "duration": "27.0", "name": "loading.desktop/Haraj_warm" }, { - "duration": "17.0", + "duration": "16.0", "name": "loading.desktop/HatenaBookmark_cold" }, { - "duration": "18.0", + "duration": "20.0", "name": "loading.desktop/HatenaBookmark_warm" }, { @@ -1568,15 +1568,15 @@ "name": "loading.desktop/IGN_cold" }, { - "duration": "19.0", + "duration": "21.0", "name": "loading.desktop/IGN_warm" }, { - "duration": "18.0", + "duration": "17.0", "name": "loading.desktop/IMDB_cold" }, { - "duration": "20.0", + "duration": "30.0", "name": "loading.desktop/IMDB_warm" }, { @@ -1584,23 +1584,23 @@ "name": "loading.desktop/IndiaTimes_cold" }, { - "duration": "20.0", + "duration": "21.0", "name": "loading.desktop/IndiaTimes_warm" }, { - "duration": "17.0", + "duration": "27.0", "name": "loading.desktop/Kakaku_cold" }, { - "duration": "30.0", + "duration": "22.0", "name": "loading.desktop/Kakaku_warm" }, { - "duration": "22.0", + "duration": "23.0", "name": "loading.desktop/Kenh14_cold" }, { - "duration": "29.0", + "duration": "30.0", "name": "loading.desktop/Kenh14_warm" }, { @@ -1608,7 +1608,7 @@ "name": "loading.desktop/Mercadolivre_cold" }, { - "duration": "18.0", + "duration": "19.0", "name": "loading.desktop/Mercadolivre_warm" }, { @@ -1616,7 +1616,7 @@ "name": "loading.desktop/Naver_cold" }, { - "duration": "18.0", + "duration": "20.0", "name": "loading.desktop/Naver_warm" }, { @@ -1628,7 +1628,7 @@ "name": "loading.desktop/Orange_warm" }, { - "duration": "18.0", + "duration": "17.0", "name": "loading.desktop/Pantip_cold" }, { @@ -1636,19 +1636,19 @@ "name": "loading.desktop/Pantip_warm" }, { - "duration": "17.0", + "duration": "18.0", "name": "loading.desktop/PremierLeague_cold" }, { - "duration": "20.0", + "duration": "21.0", "name": "loading.desktop/PremierLeague_warm" }, { - "duration": "19.0", + "duration": "20.0", "name": "loading.desktop/QQ_cold" }, { - "duration": "23.0", + "duration": "24.0", "name": "loading.desktop/QQ_warm" }, { @@ -1656,7 +1656,7 @@ "name": "loading.desktop/REI_cold" }, { - "duration": "20.0", + "duration": "21.0", "name": "loading.desktop/REI_warm" }, { @@ -1664,7 +1664,7 @@ "name": "loading.desktop/Ruten_cold" }, { - "duration": "18.0", + "duration": "19.0", "name": "loading.desktop/Ruten_warm" }, { @@ -1672,19 +1672,19 @@ "name": "loading.desktop/Sina_cold" }, { - "duration": "26.0", + "duration": "27.0", "name": "loading.desktop/Sina_warm" }, { - "duration": "20.0", + "duration": "21.0", "name": "loading.desktop/Taobao_cold" }, { - "duration": "25.0", + "duration": "27.0", "name": "loading.desktop/Taobao_warm" }, { - "duration": "19.0", + "duration": "18.0", "name": "loading.desktop/TheOnion_cold" }, { @@ -1696,7 +1696,7 @@ "name": "loading.desktop/TheVerge_cold" }, { - "duration": "21.0", + "duration": "22.0", "name": "loading.desktop/TheVerge_warm" }, { @@ -1704,31 +1704,31 @@ "name": "loading.desktop/TicketMaster_cold" }, { - "duration": "23.0", + "duration": "24.0", "name": "loading.desktop/TicketMaster_warm" }, { - "duration": "20.0", + "duration": "21.0", "name": "loading.desktop/Vietnamnet_cold" }, { - "duration": "26.0", + "duration": "27.0", "name": "loading.desktop/Vietnamnet_warm" }, { - "duration": "18.0", + "duration": "19.0", "name": "loading.desktop/Vnexpress_cold" }, { - "duration": "22.0", + "duration": "24.0", "name": "loading.desktop/Vnexpress_warm" }, { - "duration": "6.0", + "duration": "7.0", "name": "loading.desktop/Walgreens_cold" }, { - "duration": "6.0", + "duration": "7.0", "name": "loading.desktop/Walgreens_warm" }, { @@ -1736,11 +1736,11 @@ "name": "loading.desktop/Yandex_cold" }, { - "duration": "19.0", + "duration": "20.0", "name": "loading.desktop/Yandex_warm" }, { - "duration": "18.0", + "duration": "19.0", "name": "loading.desktop/amazon.co.jp_cold" }, { @@ -1760,7 +1760,7 @@ "name": "loading.desktop/money.cnn_cold" }, { - "duration": "34.0", + "duration": "26.0", "name": "loading.desktop/money.cnn_warm" }, { @@ -1768,11 +1768,11 @@ "name": "loading.desktop/ru.wikipedia_cold" }, { - "duration": "18.0", + "duration": "19.0", "name": "loading.desktop/ru.wikipedia_warm" }, { - "duration": "18.0", + "duration": "19.0", "name": "loading.desktop/uol.com.br_cold" }, { @@ -1804,31 +1804,39 @@ "name": "media.desktop/mse.html?media=tulip0.av1.mp4" }, { - "duration": "12.0", + "duration": "13.0", "name": "media.desktop/mse.html?media=tulip2.vp9.webm" }, { - "duration": "18.0", + "duration": "131.0", + "name": "media.desktop/video.html?src=boat_1080p60fps_vp9.webm" + }, + { + "duration": "19.0", "name": "media.desktop/video.html?src=crowd1080.mp4" }, { - "duration": "20.0", + "duration": "21.0", "name": "media.desktop/video.html?src=crowd1080.webm" }, { - "duration": "17.0", + "duration": "18.0", "name": "media.desktop/video.html?src=crowd1080_vp9.webm" }, { - "duration": "12.0", + "duration": "133.0", + "name": "media.desktop/video.html?src=foodmarket_720p30fps.mp4" + }, + { + "duration": "13.0", "name": "media.desktop/video.html?src=garden2_10s.mp4&seek" }, { - "duration": "12.0", + "duration": "13.0", "name": "media.desktop/video.html?src=garden2_10s.webm&seek" }, { - "duration": "12.0", + "duration": "13.0", "name": "media.desktop/video.html?src=smpte_3840x2160_60fps_vp9.webm&seek" }, { @@ -1836,31 +1844,31 @@ "name": "media.desktop/video.html?src=tulip0.av1.mp4" }, { - "duration": "11.0", + "duration": "12.0", "name": "media.desktop/video.html?src=tulip0.av1.mp4&seek" }, { - "duration": "24.0", + "duration": "26.0", "name": "media.desktop/video.html?src=tulip2.m4a&type=audio" }, { - "duration": "24.0", + "duration": "26.0", "name": "media.desktop/video.html?src=tulip2.mp3&type=audio" }, { - "duration": "11.0", + "duration": "13.0", "name": "media.desktop/video.html?src=tulip2.mp3&type=audio&seek" }, { - "duration": "25.0", + "duration": "26.0", "name": "media.desktop/video.html?src=tulip2.mp4" }, { - "duration": "25.0", + "duration": "26.0", "name": "media.desktop/video.html?src=tulip2.mp4&busyjs" }, { - "duration": "24.0", + "duration": "26.0", "name": "media.desktop/video.html?src=tulip2.ogg&type=audio" }, { @@ -1868,7 +1876,7 @@ "name": "media.desktop/video.html?src=tulip2.ogg&type=audio&seek" }, { - "duration": "25.0", + "duration": "26.0", "name": "media.desktop/video.html?src=tulip2.vp9.webm" }, { @@ -1876,7 +1884,7 @@ "name": "media.desktop/video.html?src=tulip2.vp9.webm&background" }, { - "duration": "26.0", + "duration": "27.0", "name": "media.desktop/video.html?src=tulip2.vp9.webm_WiFi" }, { @@ -1884,7 +1892,7 @@ "name": "memory.desktop/TrivialAnimationPageSharedPageState" }, { - "duration": "15.0", + "duration": "14.0", "name": "memory.desktop/TrivialBlinkingCursorPageSharedPageState" }, { @@ -1904,7 +1912,7 @@ "name": "memory.desktop/TrivialGifPageSharedPageState" }, { - "duration": "16.0", + "duration": "15.0", "name": "memory.desktop/TrivialScrollingPageSharedPageState" }, { @@ -1924,7 +1932,7 @@ "name": "power.desktop/TrivialAnimationPageSharedPageState" }, { - "duration": "41.0", + "duration": "40.0", "name": "power.desktop/TrivialBlinkingCursorPageSharedPageState" }, { @@ -1944,7 +1952,7 @@ "name": "power.desktop/TrivialGifPageSharedPageState" }, { - "duration": "48.0", + "duration": "42.0", "name": "power.desktop/TrivialScrollingPageSharedPageState" }, { @@ -1952,11 +1960,11 @@ "name": "power.desktop/TrivialWebGLPageSharedPageState" }, { - "duration": "49.0", + "duration": "50.0", "name": "power.desktop/abcnews" }, { - "duration": "40.0", + "duration": "41.0", "name": "power.desktop/indiatimes" }, { @@ -1964,15 +1972,15 @@ "name": "power.desktop/instagram" }, { - "duration": "40.0", + "duration": "41.0", "name": "power.desktop/microsoft" }, { - "duration": "41.0", + "duration": "42.0", "name": "power.desktop/sina" }, { - "duration": "40.0", + "duration": "41.0", "name": "power.desktop/slideshare" }, { @@ -2080,51 +2088,59 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html" }, { - "duration": "25.0", + "duration": "28.0", "name": "rendering.desktop/accu_weather_2018" }, { - "duration": "25.0", + "duration": "28.0", "name": "rendering.desktop/accu_weather_pinch_2018" }, { - "duration": "20.0", + "duration": "23.0", "name": "rendering.desktop/amazon_2018" }, { - "duration": "19.0", + "duration": "21.0", "name": "rendering.desktop/amazon_pinch_2018" }, { - "duration": "22.0", + "duration": "25.0", "name": "rendering.desktop/analog_clock_svg" }, { - "duration": "22.0", + "duration": "28.0", "name": "rendering.desktop/animometer_webgl" }, { - "duration": "24.0", + "duration": "27.0", "name": "rendering.desktop/animometer_webgl_attrib_arrays" }, { - "duration": "26.0", + "duration": "27.0", + "name": "rendering.desktop/animometer_webgl_fast_call" + }, + { + "duration": "29.0", "name": "rendering.desktop/animometer_webgl_indexed" }, { + "duration": "26.0", + "name": "rendering.desktop/animometer_webgl_indexed_fast_call" + }, + { "duration": "23.0", "name": "rendering.desktop/animometer_webgl_indexed_multi_draw" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/animometer_webgl_indexed_multi_draw_base_vertex_base_instance" }, { - "duration": "41.0", + "duration": "42.0", "name": "rendering.desktop/animometer_webgl_multi_draw" }, { - "duration": "23.0", + "duration": "25.0", "name": "rendering.desktop/aquarium" }, { @@ -2132,7 +2148,11 @@ "name": "rendering.desktop/aquarium_20k" }, { - "duration": "22.0", + "duration": "25.0", + "name": "rendering.desktop/aquarium_20k_fast_call" + }, + { + "duration": "23.0", "name": "rendering.desktop/background_color_animation" }, { @@ -2140,55 +2160,55 @@ "name": "rendering.desktop/background_color_animation_with_gradient" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/balls_css_key_frame_animations" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/balls_css_key_frame_animations_composited_transform" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/balls_css_transition_2_properties" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/balls_css_transition_40_properties" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/balls_css_transition_all_properties" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/balls_javascript_canvas" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/balls_javascript_css" }, { - "duration": "20.0", + "duration": "22.0", "name": "rendering.desktop/balls_svg_animations" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.desktop/blob" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/blogspot_2018" }, { - "duration": "20.0", + "duration": "22.0", "name": "rendering.desktop/blogspot_pinch_2018" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/blur_rotating_background" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/booking.com_2018" }, { @@ -2196,11 +2216,11 @@ "name": "rendering.desktop/booking_pinch_2018" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/bouncing_balls_15" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/bouncing_balls_shadow" }, { @@ -2208,15 +2228,15 @@ "name": "rendering.desktop/bouncing_clipped_rectangles" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/bouncing_gradient_circles" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/bouncing_png_images" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/bouncing_svg_images" }, { @@ -2224,19 +2244,19 @@ "name": "rendering.desktop/camera_to_webgl" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/canvas2d_to_texture.html" }, { - "duration": "29.0", + "duration": "30.0", "name": "rendering.desktop/canvas_05000_pixels_per_second" }, { - "duration": "27.0", + "duration": "28.0", "name": "rendering.desktop/canvas_10000_pixels_per_second" }, { - "duration": "24.0", + "duration": "25.0", "name": "rendering.desktop/canvas_20000_pixels_per_second" }, { @@ -2244,103 +2264,103 @@ "name": "rendering.desktop/canvas_40000_pixels_per_second" }, { - "duration": "24.0", + "duration": "25.0", "name": "rendering.desktop/canvas_60000_pixels_per_second" }, { - "duration": "24.0", + "duration": "25.0", "name": "rendering.desktop/canvas_75000_pixels_per_second" }, { - "duration": "24.0", + "duration": "25.0", "name": "rendering.desktop/canvas_90000_pixels_per_second" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/canvas_animation_no_clear" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/canvas_arcs" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/canvas_font_cycler" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/canvas_lines" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/canvas_to_blob" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/canvas_to_canvas_draw" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.desktop/cats_unscaled" }, { - "duration": "12.0", + "duration": "14.0", "name": "rendering.desktop/cats_viewport_width" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.desktop/cc_poster_circle" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.desktop/cc_scroll_text_only" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.desktop/chip_tune" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.desktop/cnn_2018" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/cnn_pinch_2018" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/compositor_heavy_animation" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/crafty_mind" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/css_animations_many_keyframes" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/css_animations_simultaneous_inline_style" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/css_animations_simultaneous_new_element" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/css_animations_simultaneous_style_element" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/css_animations_simultaneous_updating_class" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/css_animations_staggered_infinite_iterations" }, { - "duration": "21.0", + "duration": "19.0", "name": "rendering.desktop/css_animations_staggered_inline_style" }, { @@ -2364,7 +2384,7 @@ "name": "rendering.desktop/css_animations_triggered_new_element" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_animations_triggered_style_element" }, { @@ -2372,11 +2392,11 @@ "name": "rendering.desktop/css_animations_triggered_updating_class" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.desktop/css_opacity_plus_n_layers_99" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_transitions_inline_style" }, { @@ -2384,43 +2404,43 @@ "name": "rendering.desktop/css_transitions_new_element" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_transitions_staggered_inline_style" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_transitions_staggered_new_element" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_transitions_staggered_style_element" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_transitions_staggered_updating_class" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_transitions_style_element" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_transitions_triggered_inline_style" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_transitions_triggered_new_element" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_transitions_triggered_style_element" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_transitions_triggered_updating_class" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_transitions_updating_class" }, { @@ -2428,23 +2448,23 @@ "name": "rendering.desktop/css_value_type_color" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_value_type_filter" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_value_type_length" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_value_type_length_complex" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_value_type_length_simple" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_value_type_path" }, { @@ -2452,15 +2472,15 @@ "name": "rendering.desktop/css_value_type_shadow" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_value_type_transform_complex" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_value_type_transform_simple" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/docs_paper.html" }, { @@ -2484,15 +2504,15 @@ "name": "rendering.desktop/dynamic_canvas_to_hw_accelerated_canvas.html" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/dynamic_cube_map" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/dynamic_webgl_to_hw_accelerated_canvas.html" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/earth" }, { @@ -2504,7 +2524,7 @@ "name": "rendering.desktop/ebay_pinch_2018" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/effect_games" }, { @@ -2516,23 +2536,23 @@ "name": "rendering.desktop/espn_pinch_2018" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/extra_large_texture_uploads" }, { - "duration": "14.0", + "duration": "15.0", "name": "rendering.desktop/facebook_2018" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/facebook_pinch_2018" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/falling_particle_simulation_cpu.html" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/falling_particle_simulation_gpu.html" }, { @@ -2540,7 +2560,7 @@ "name": "rendering.desktop/fill_clear_rect.html" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/fill_shapes" }, { @@ -2552,35 +2572,35 @@ "name": "rendering.desktop/geo_apis" }, { - "duration": "21.0", + "duration": "19.0", "name": "rendering.desktop/get_image_data_cpu.html" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/get_image_data_gpu.html" }, { - "duration": "21.0", + "duration": "15.0", "name": "rendering.desktop/gmail_2018" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/gmail_move_2018" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/gmail_pinch_2018" }, { - "duration": "13.0", + "duration": "20.0", "name": "rendering.desktop/google_calendar_2018" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/google_calendar_pinch_2018" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/google_docs_2018" }, { @@ -2592,7 +2612,7 @@ "name": "rendering.desktop/google_image_search_2018" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/google_plus_2018" }, { @@ -2600,71 +2620,71 @@ "name": "rendering.desktop/google_search_pinch_2018" }, { - "duration": "13.0", + "duration": "14.0", "name": "rendering.desktop/google_web_search_2018" }, { - "duration": "18.0", + "duration": "21.0", "name": "rendering.desktop/gpu_bound_shader.html" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/guimark_vector_chart" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/hakim" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/hw_accelerated_canvas_to_sw_canvas.html" }, { - "duration": "30.0", + "duration": "31.0", "name": "rendering.desktop/ie_chalkboard" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.desktop/ie_pirate_mark" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/infinite_scroll_element_n_layers_99" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/infinite_scroll_root_fixed_n_layers_99" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/infinite_scroll_root_n_layers_99" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/jarro_doverson" }, { - "duration": "14.0", + "duration": "15.0", "name": "rendering.desktop/jpeg_decoding_rgb_and_gpu_rasterization" }, { - "duration": "14.0", + "duration": "15.0", "name": "rendering.desktop/jpeg_decoding_yuv_and_gpu_rasterization" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.desktop/js_full_screen_invalidation" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/js_opacity_plus_n_layers_99" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/js_paint_plus_n_layers_99" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/js_poster_circle" }, { @@ -2672,15 +2692,15 @@ "name": "rendering.desktop/js_scroll_text_only" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/kevs_3d" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/keyframed_animations" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/large_texture_uploads" }, { @@ -2688,123 +2708,131 @@ "name": "rendering.desktop/linkedin_2018" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/linkedin_pinch_2018" }, { - "duration": "57.0", + "duration": "58.0", "name": "rendering.desktop/lost_crypt" }, { - "duration": "18.0", + "duration": "53.0", + "name": "rendering.desktop/lost_crypt_fast_call" + }, + { + "duration": "19.0", "name": "rendering.desktop/main_0fps_impl_60fps" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/main_0fps_impl_60fps_no_update" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/main_0fps_impl_60fps_no_update_jank" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/main_0fps_with_jank_impl_0fps" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/main_15fps_impl_0fps" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/main_15fps_with_jank_impl_0fps" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/main_30fps_impl_0fps" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/main_30fps_impl_60fps" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/main_60fps_impl_0fps" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/main_60fps_impl_60fps" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/main_60fps_impl_60fps_no_update" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/main_60fps_impl_60fps_no_update_jank" }, { - "duration": "33.0", + "duration": "34.0", "name": "rendering.desktop/main_60fps_with_extreme_jank_impl_0fps" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/main_60fps_with_jank_and_delay_impl_60fps" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/main_60fps_with_jank_impl_0fps" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/main_animations_half_presented" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/man_in_blue" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/many_images" }, { - "duration": "20.0", + "duration": "22.0", "name": "rendering.desktop/many_planets_deep" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.desktop/maps_move_2018" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/maps_perf_test" }, { - "duration": "18.0", + "duration": "22.0", "name": "rendering.desktop/medium_texture_uploads" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/megi_dish" }, { - "duration": "57.0", + "duration": "60.0", "name": "rendering.desktop/microgame_fps" }, { + "duration": "52.0", + "name": "rendering.desktop/microgame_fps_fast_call" + }, + { "duration": "19.0", "name": "rendering.desktop/microsoft_asteroid_belt" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/microsoft_fireflies" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/microsoft_fish_ie_tank" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/microsoft_performance" }, { @@ -2812,7 +2840,7 @@ "name": "rendering.desktop/microsoft_snow" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/microsoft_speed_reading" }, { @@ -2820,15 +2848,15 @@ "name": "rendering.desktop/microsoft_tweet_map" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/microsoft_video_city" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/microsoft_worker_fountains" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/mix_10k" }, { @@ -2840,15 +2868,15 @@ "name": "rendering.desktop/mix_blend_mode_animation_hue" }, { - "duration": "21.0", + "duration": "19.0", "name": "rendering.desktop/mix_blend_mode_animation_propagating_isolation" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/mix_blend_mode_animation_screen" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/motion_mark_canvas_fill_shapes" }, { @@ -2856,11 +2884,11 @@ "name": "rendering.desktop/motion_mark_canvas_stroke_shapes" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.desktop/new_tilings" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.desktop/nvidia_vertex_buffer_object" }, { @@ -2872,11 +2900,11 @@ "name": "rendering.desktop/off_screen_main_60fps_jank" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/overlay_background_color_css_transitions_page" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/particles" }, { @@ -2884,7 +2912,7 @@ "name": "rendering.desktop/pinterest_2018" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/put_and_create_imagebitmap_from_imagedata" }, { @@ -2892,7 +2920,7 @@ "name": "rendering.desktop/put_get_image_data" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/put_image_data.html" }, { @@ -2912,35 +2940,35 @@ "name": "rendering.desktop/raf_touch_animation" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.desktop/repaint_amazon_2018" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/repaint_cnn_2018" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/repaint_facebook_2018" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/repaint_google_search_2018" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/repaint_instagram_2018" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/repaint_reddit_2018" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/repaint_theverge_2018" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/repaint_twitter_2018" }, { @@ -2948,323 +2976,331 @@ "name": "rendering.desktop/repaint_wikipedia_2018" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/repaint_yahoo_homepage_2018" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/runway_2019" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/san_angeles" }, { - "duration": "13.0", + "duration": "15.0", "name": "rendering.desktop/second_batch_js_heavy" }, { - "duration": "13.0", + "duration": "14.0", "name": "rendering.desktop/second_batch_js_light" }, { - "duration": "13.0", + "duration": "15.0", "name": "rendering.desktop/second_batch_js_medium" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/sheets_render.html" }, { - "duration": "15.0", + "duration": "17.0", "name": "rendering.desktop/simple_text_page" }, { - "duration": "13.0", + "duration": "15.0", "name": "rendering.desktop/simple_touch_drag" }, { - "duration": "57.0", + "duration": "60.0", "name": "rendering.desktop/skelebuddies_wasm_2020" }, { - "duration": "18.0", + "duration": "54.0", + "name": "rendering.desktop/skelebuddies_wasm_2020_fast_call" + }, + { + "duration": "20.0", "name": "rendering.desktop/small_texture_uploads" }, { - "duration": "21.0", + "duration": "23.0", "name": "rendering.desktop/smash_cat" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/spielzeugz" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/static_canvas_to_hw_accelerated_canvas.html" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/static_webgl_to_hw_accelerated_canvas.html" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/stroke_shapes" }, { - "duration": "13.0", + "duration": "14.0", "name": "rendering.desktop/sync_scroll_offset" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/techcrunch_2018" }, { - "duration": "29.0", + "duration": "31.0", "name": "rendering.desktop/text_05000_pixels_per_second" }, { - "duration": "27.0", + "duration": "31.0", "name": "rendering.desktop/text_10000_pixels_per_second" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/text_20000_pixels_per_second" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/text_40000_pixels_per_second" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/text_60000_pixels_per_second" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/text_75000_pixels_per_second" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/text_90000_pixels_per_second" }, { - "duration": "29.0", + "duration": "31.0", "name": "rendering.desktop/text_constant_full_page_raster_05000_pixels_per_second" }, { - "duration": "27.0", + "duration": "29.0", "name": "rendering.desktop/text_constant_full_page_raster_10000_pixels_per_second" }, { - "duration": "27.0", + "duration": "26.0", "name": "rendering.desktop/text_constant_full_page_raster_20000_pixels_per_second" }, { - "duration": "25.0", + "duration": "27.0", "name": "rendering.desktop/text_constant_full_page_raster_40000_pixels_per_second" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/text_constant_full_page_raster_60000_pixels_per_second" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/text_constant_full_page_raster_75000_pixels_per_second" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/text_constant_full_page_raster_90000_pixels_per_second" }, { - "duration": "29.0", + "duration": "31.0", "name": "rendering.desktop/text_hover_05000_pixels_per_second" }, { - "duration": "27.0", + "duration": "29.0", "name": "rendering.desktop/text_hover_10000_pixels_per_second" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/text_hover_20000_pixels_per_second" }, { - "duration": "25.0", + "duration": "26.0", "name": "rendering.desktop/text_hover_40000_pixels_per_second" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/text_hover_60000_pixels_per_second" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/text_hover_75000_pixels_per_second" }, { - "duration": "24.0", + "duration": "26.0", "name": "rendering.desktop/text_hover_90000_pixels_per_second" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.desktop/throughput_scrolling_active_handler" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.desktop/throughput_scrolling_composited" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.desktop/throughput_scrolling_passive_handler" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.desktop/throughput_scrolling_uncomposited" }, { - "duration": "52.0", + "duration": "54.0", "name": "rendering.desktop/tiny_racing_v3_wasm_2020" }, { - "duration": "18.0", + "duration": "54.0", + "name": "rendering.desktop/tiny_racing_v3_wasm_2020_fast_call" + }, + { + "duration": "20.0", "name": "rendering.desktop/toBlob_duration.html" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/toBlob_duration_jpeg.html" }, { - "duration": "19.0", + "duration": "21.0", "name": "rendering.desktop/toBlob_small_canvas_in_worker.html" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/touch_handler_scrolling" }, { - "duration": "18.0", + "duration": "22.0", "name": "rendering.desktop/transfer_from_imageBitmap.html" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/transform_transitions" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/transform_transitions_js_block" }, { - "duration": "15.0", + "duration": "21.0", "name": "rendering.desktop/twitch_2018" }, { - "duration": "20.0", + "duration": "22.0", "name": "rendering.desktop/twitch_pinch_2018" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.desktop/twitter_2018" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/twitter_pinch_2018" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/video_to_hw_accelerated_canvas" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/video_to_sub_texture" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/video_to_sub_texture_flip_and_premultiply" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/video_to_sub_texture_flip_y" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/video_to_sub_texture_premultiply" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/video_to_texture" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/web_animation_value_type_color" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/web_animation_value_type_length_3d" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/web_animation_value_type_length_complex" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/web_animation_value_type_length_simple" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/web_animation_value_type_path" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/web_animation_value_type_shadow" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/web_animation_value_type_transform_complex" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/web_animation_value_type_transform_simple" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/web_animations_many_keyframes" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/web_animations_set_current_time" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/web_animations_simultaneous" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/web_animations_staggered_chaining" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/web_animations_staggered_infinite_iterations" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/web_animations_staggered_triggering_page" }, { - "duration": "22.0", + "duration": "20.0", "name": "rendering.desktop/webgl_to_texture" }, { - "duration": "14.0", + "duration": "16.0", "name": "rendering.desktop/webp_decoding_rgb_and_gpu_rasterization" }, { - "duration": "14.0", + "duration": "16.0", "name": "rendering.desktop/webp_decoding_yuv_and_gpu_rasterization" }, { - "duration": "24.0", + "duration": "18.0", "name": "rendering.desktop/wikipedia_2018" }, { - "duration": "19.0", + "duration": "18.0", "name": "rendering.desktop/wordpress_2018" }, { @@ -3272,11 +3308,11 @@ "name": "rendering.desktop/yahoo_answers_2018" }, { - "duration": "18.0", + "duration": "17.0", "name": "rendering.desktop/yahoo_news_2018" }, { - "duration": "23.0", + "duration": "17.0", "name": "rendering.desktop/yahoo_news_pinch_2018" }, { @@ -3284,7 +3320,7 @@ "name": "rendering.desktop/yahoo_sports_2018" }, { - "duration": "18.0", + "duration": "17.0", "name": "rendering.desktop/yahoo_sports_pinch_2018" }, { @@ -3300,83 +3336,99 @@ "name": "speedometer-future/http://browserbench.org/Speedometer/" }, { - "duration": "39.0", + "duration": "38.0", "name": "speedometer/http://browserbench.org/Speedometer/" }, { - "duration": "74.0", + "duration": "73.0", "name": "speedometer2-future/Speedometer2" }, { "duration": "69.0", + "name": "speedometer2-pcscan/Speedometer2" + }, + { + "duration": "69.0", "name": "speedometer2/Speedometer2" }, { - "duration": "41.0", + "duration": "40.0", "name": "system_health.common_desktop/browse:media:googleplaystore:2018" }, { - "duration": "74.0", + "duration": "72.0", "name": "system_health.common_desktop/browse:media:imgur" }, { - "duration": "92.0", + "duration": "89.0", "name": "system_health.common_desktop/browse:media:pinterest:2018" }, { - "duration": "60.0", + "duration": "58.0", "name": "system_health.common_desktop/browse:media:tumblr:2018" }, { - "duration": "8.0", + "duration": "5.0", "name": "system_health.common_desktop/browse:media:youtube:2019" }, { - "duration": "69.0", + "duration": "67.0", "name": "system_health.common_desktop/browse:media:youtubetv:2019" }, { - "duration": "76.0", + "duration": "74.0", "name": "system_health.common_desktop/browse:media:youtubetv_watch:2020" }, { - "duration": "47.0", + "duration": "46.0", "name": "system_health.common_desktop/browse:news:cnn:2020" }, { - "duration": "47.0", + "duration": "46.0", "name": "system_health.common_desktop/browse:news:flipboard:2018" }, { - "duration": "60.0", - "name": "system_health.common_desktop/browse:news:nytimes:2020" - }, - { - "duration": "36.0", - "name": "system_health.common_desktop/browse:search:google_india:2018" - }, - { - "duration": "68.0", - "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll:2018" - }, - { - "duration": "63.0", - "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll:2018" - }, - { - "duration": "47.0", - "name": "system_health.common_desktop/browse:social:twitter:2018" - }, - { - "duration": "65.0", - "name": "system_health.common_desktop/browse:social:twitter_infinite_scroll:2018" + "duration": "6.0", + "name": "system_health.common_desktop/browse:news:hackernews:2020" }, { "duration": "61.0", + "name": "system_health.common_desktop/browse:news:nytimes:2020" + }, + { + "duration": "49.0", + "name": "system_health.common_desktop/browse:news:reddit:2020" + }, + { + "duration": "50.0", + "name": "system_health.common_desktop/browse:search:google:2020" + }, + { + "duration": "35.0", + "name": "system_health.common_desktop/browse:search:google_india:2018" + }, + { + "duration": "67.0", + "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll:2018" + }, + { + "duration": "57.0", + "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll:2018" + }, + { + "duration": "45.0", + "name": "system_health.common_desktop/browse:social:twitter:2018" + }, + { + "duration": "63.0", + "name": "system_health.common_desktop/browse:social:twitter_infinite_scroll:2018" + }, + { + "duration": "60.0", "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "36.0", + "duration": "35.0", "name": "system_health.common_desktop/browse:tools:docs_scrolling" }, { @@ -3384,27 +3436,27 @@ "name": "system_health.common_desktop/browse:tools:earth:2020" }, { - "duration": "7.0", + "duration": "6.0", "name": "system_health.common_desktop/browse:tools:gmail-compose:2020" }, { - "duration": "7.0", + "duration": "6.0", "name": "system_health.common_desktop/browse:tools:gmail-labelclick:2020" }, { - "duration": "7.0", + "duration": "6.0", "name": "system_health.common_desktop/browse:tools:gmail-openconversation:2020" }, { - "duration": "7.0", + "duration": "6.0", "name": "system_health.common_desktop/browse:tools:gmail-search:2020" }, { - "duration": "7.0", + "duration": "6.0", "name": "system_health.common_desktop/browse:tools:maps:2019" }, { - "duration": "33.0", + "duration": "32.0", "name": "system_health.common_desktop/browse:tools:sheets:2019" }, { @@ -3412,7 +3464,7 @@ "name": "system_health.common_desktop/browse_accessibility:media:youtube" }, { - "duration": "31.0", + "duration": "30.0", "name": "system_health.common_desktop/browse_accessibility:tech:codesearch:2018" }, { @@ -3420,19 +3472,19 @@ "name": "system_health.common_desktop/load:chrome:blank" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:games:alphabetty:2018" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:games:bubbles:2020" }, { - "duration": "17.0", + "duration": "18.0", "name": "system_health.common_desktop/load:games:lazors" }, { - "duration": "19.0", + "duration": "20.0", "name": "system_health.common_desktop/load:games:miniclip:2018" }, { @@ -3440,147 +3492,151 @@ "name": "system_health.common_desktop/load:games:spychase:2018" }, { - "duration": "23.0", + "duration": "24.0", "name": "system_health.common_desktop/load:media:9gag" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:media:dailymotion:2019" }, { - "duration": "19.0", + "duration": "20.0", "name": "system_health.common_desktop/load:media:facebook_feed:desktop:2020" }, { - "duration": "18.0", + "duration": "20.0", "name": "system_health.common_desktop/load:media:facebook_photos:2018" }, { - "duration": "19.0", + "duration": "20.0", "name": "system_health.common_desktop/load:media:facebook_photos:desktop:2020" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:media:flickr:2018" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:media:google_images:2018" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:media:imgur:2018" }, { - "duration": "19.0", + "duration": "20.0", "name": "system_health.common_desktop/load:media:soundcloud:2018" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:media:youtube:2018" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:media:youtubelivingroom:2020" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:news:bbc:2018" }, { - "duration": "18.0", + "duration": "20.0", + "name": "system_health.common_desktop/load:news:cnn:2020" + }, + { + "duration": "19.0", "name": "system_health.common_desktop/load:news:flipboard" }, { - "duration": "17.0", + "duration": "18.0", "name": "system_health.common_desktop/load:news:hackernews:2018" }, { - "duration": "20.0", + "duration": "21.0", "name": "system_health.common_desktop/load:news:nytimes:2018" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:news:qq:2018" }, { - "duration": "19.0", + "duration": "20.0", "name": "system_health.common_desktop/load:news:reddit:2018" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:news:wikipedia:2018" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:search:amazon:2018" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:search:baidu:2018" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:search:ebay:2018" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:search:flipkart:2018" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:search:google:2018" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:search:taobao:2018" }, { - "duration": "17.0", + "duration": "18.0", "name": "system_health.common_desktop/load:search:yahoo:2018" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:search:yandex:2018" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:social:instagram:2018" }, { - "duration": "19.0", + "duration": "20.0", "name": "system_health.common_desktop/load:social:pinterest:2019" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:social:vk:2018" }, { - "duration": "27.0", + "duration": "28.0", "name": "system_health.common_desktop/load:tools:chat:2020" }, { - "duration": "21.0", + "duration": "22.0", "name": "system_health.common_desktop/load:tools:docs:2019" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:tools:drive:2019" }, { - "duration": "29.0", + "duration": "30.0", "name": "system_health.common_desktop/load:tools:gmail:2019" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:tools:stackoverflow:2018" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.common_desktop/load:tools:weather:2019" }, { - "duration": "21.0", + "duration": "20.0", "name": "system_health.common_desktop/load_accessibility:media:wikipedia:2018" }, { @@ -3588,7 +3644,7 @@ "name": "system_health.common_desktop/load_accessibility:shopping:amazon:2018" }, { - "duration": "126.0", + "duration": "131.0", "name": "system_health.common_desktop/long_running:tools:gmail-background" }, { @@ -3604,15 +3660,15 @@ "name": "system_health.common_desktop/multitab:misc:typical24:2018" }, { - "duration": "49.0", + "duration": "48.0", "name": "system_health.common_desktop/play:media:google_play_music" }, { - "duration": "47.0", + "duration": "44.0", "name": "system_health.common_desktop/play:media:soundcloud:2018" }, { - "duration": "35.0", + "duration": "36.0", "name": "system_health.memory_desktop/browse:media:googleplaystore:2018" }, { @@ -3644,19 +3700,31 @@ "name": "system_health.memory_desktop/browse:news:cnn:2020" }, { - "duration": "41.0", + "duration": "42.0", "name": "system_health.memory_desktop/browse:news:flipboard:2018" }, { + "duration": "46.0", + "name": "system_health.memory_desktop/browse:news:hackernews:2020" + }, + { "duration": "56.0", "name": "system_health.memory_desktop/browse:news:nytimes:2020" }, { - "duration": "30.0", + "duration": "47.0", + "name": "system_health.memory_desktop/browse:news:reddit:2020" + }, + { + "duration": "45.0", + "name": "system_health.memory_desktop/browse:search:google:2020" + }, + { + "duration": "31.0", "name": "system_health.memory_desktop/browse:search:google_india:2018" }, { - "duration": "63.0", + "duration": "62.0", "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll:2018" }, { @@ -3664,7 +3732,7 @@ "name": "system_health.memory_desktop/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "41.0", + "duration": "42.0", "name": "system_health.memory_desktop/browse:social:twitter:2018" }, { @@ -3672,7 +3740,7 @@ "name": "system_health.memory_desktop/browse:social:twitter_infinite_scroll:2018" }, { - "duration": "54.0", + "duration": "55.0", "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll:2018" }, { @@ -3700,15 +3768,15 @@ "name": "system_health.memory_desktop/browse:tools:gmail-search:2020" }, { - "duration": "2.0", + "duration": "3.0", "name": "system_health.memory_desktop/browse:tools:maps:2019" }, { - "duration": "27.0", + "duration": "28.0", "name": "system_health.memory_desktop/browse:tools:sheets:2019" }, { - "duration": "3.0", + "duration": "2.0", "name": "system_health.memory_desktop/browse_accessibility:media:youtube" }, { @@ -3720,7 +3788,7 @@ "name": "system_health.memory_desktop/load:chrome:blank" }, { - "duration": "16.0", + "duration": "15.0", "name": "system_health.memory_desktop/load:games:alphabetty:2018" }, { @@ -3740,7 +3808,7 @@ "name": "system_health.memory_desktop/load:games:spychase:2018" }, { - "duration": "18.0", + "duration": "17.0", "name": "system_health.memory_desktop/load:media:9gag" }, { @@ -3772,7 +3840,7 @@ "name": "system_health.memory_desktop/load:media:imgur:2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.memory_desktop/load:media:soundcloud:2018" }, { @@ -3784,11 +3852,15 @@ "name": "system_health.memory_desktop/load:media:youtubelivingroom:2020" }, { - "duration": "16.0", + "duration": "15.0", "name": "system_health.memory_desktop/load:news:bbc:2018" }, { "duration": "16.0", + "name": "system_health.memory_desktop/load:news:cnn:2020" + }, + { + "duration": "16.0", "name": "system_health.memory_desktop/load:news:flipboard" }, { @@ -3800,11 +3872,11 @@ "name": "system_health.memory_desktop/load:news:nytimes:2018" }, { - "duration": "16.0", + "duration": "15.0", "name": "system_health.memory_desktop/load:news:qq:2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.memory_desktop/load:news:reddit:2018" }, { @@ -3812,7 +3884,7 @@ "name": "system_health.memory_desktop/load:news:wikipedia:2018" }, { - "duration": "16.0", + "duration": "15.0", "name": "system_health.memory_desktop/load:search:amazon:2018" }, { @@ -3836,7 +3908,7 @@ "name": "system_health.memory_desktop/load:search:taobao:2018" }, { - "duration": "14.0", + "duration": "15.0", "name": "system_health.memory_desktop/load:search:yahoo:2018" }, { @@ -3856,7 +3928,7 @@ "name": "system_health.memory_desktop/load:social:vk:2018" }, { - "duration": "25.0", + "duration": "24.0", "name": "system_health.memory_desktop/load:tools:chat:2020" }, { @@ -3880,11 +3952,11 @@ "name": "system_health.memory_desktop/load:tools:weather:2019" }, { - "duration": "16.0", + "duration": "15.0", "name": "system_health.memory_desktop/load_accessibility:media:wikipedia:2018" }, { - "duration": "15.0", + "duration": "14.0", "name": "system_health.memory_desktop/load_accessibility:shopping:amazon:2018" }, { @@ -3904,7 +3976,7 @@ "name": "system_health.memory_desktop/multitab:misc:typical24:2018" }, { - "duration": "2.0", + "duration": "3.0", "name": "system_health.memory_desktop/play:media:google_play_music" }, { @@ -3912,6 +3984,42 @@ "name": "system_health.memory_desktop/play:media:soundcloud:2018" }, { + "duration": "39.0", + "name": "tab_search/tab_search:close_and_open:2020" + }, + { + "duration": "33.0", + "name": "tab_search/tab_search:close_and_open:loading:2020" + }, + { + "duration": "141.0", + "name": "tab_search/tab_search:scroll_up_and_down:2020" + }, + { + "duration": "142.0", + "name": "tab_search/tab_search:top100:2020" + }, + { + "duration": "130.0", + "name": "tab_search/tab_search:top100:loading:2020" + }, + { + "duration": "70.0", + "name": "tab_search/tab_search:top10:2020" + }, + { + "duration": "32.0", + "name": "tab_search/tab_search:top10:loading:2020" + }, + { + "duration": "82.0", + "name": "tab_search/tab_search:top50:2020" + }, + { + "duration": "75.0", + "name": "tab_search/tab_search:top50:loading:2020" + }, + { "duration": "0.0", "name": "tab_switching.typical_25/multitab:misc:typical24" }, @@ -3920,23 +4028,23 @@ "name": "tracing.tracing_with_background_memory_infra/Facebook" }, { - "duration": "11.0", + "duration": "10.0", "name": "tracing.tracing_with_background_memory_infra/Wikipedia" }, { - "duration": "11.0", + "duration": "10.0", "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com" }, { - "duration": "10.0", + "duration": "11.0", "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/" }, { - "duration": "10.0", + "duration": "11.0", "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/" }, { - "duration": "11.0", + "duration": "10.0", "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/" }, { @@ -3948,7 +4056,7 @@ "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama" }, { - "duration": "11.0", + "duration": "10.0", "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/" }, { @@ -3980,63 +4088,75 @@ "name": "v8.browsing_desktop-future/browse:media:youtubetv_watch:2020" }, { - "duration": "12.0", + "duration": "15.0", "name": "v8.browsing_desktop-future/browse:news:cnn:2020" }, { - "duration": "52.0", + "duration": "56.0", "name": "v8.browsing_desktop-future/browse:news:flipboard:2018" }, { "duration": "12.0", + "name": "v8.browsing_desktop-future/browse:news:hackernews:2020" + }, + { + "duration": "12.0", "name": "v8.browsing_desktop-future/browse:news:nytimes:2020" }, { - "duration": "40.0", - "name": "v8.browsing_desktop-future/browse:search:google_india:2018" + "duration": "57.0", + "name": "v8.browsing_desktop-future/browse:news:reddit:2020" }, { - "duration": "76.0", - "name": "v8.browsing_desktop-future/browse:social:facebook_infinite_scroll:2018" - }, - { - "duration": "63.0", - "name": "v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll:2018" - }, - { - "duration": "51.0", - "name": "v8.browsing_desktop-future/browse:social:twitter:2018" - }, - { - "duration": "69.0", - "name": "v8.browsing_desktop-future/browse:social:twitter_infinite_scroll:2018" - }, - { - "duration": "66.0", - "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll:2018" + "duration": "59.0", + "name": "v8.browsing_desktop-future/browse:search:google:2020" }, { "duration": "41.0", + "name": "v8.browsing_desktop-future/browse:search:google_india:2018" + }, + { + "duration": "79.0", + "name": "v8.browsing_desktop-future/browse:social:facebook_infinite_scroll:2018" + }, + { + "duration": "68.0", + "name": "v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll:2018" + }, + { + "duration": "52.0", + "name": "v8.browsing_desktop-future/browse:social:twitter:2018" + }, + { + "duration": "70.0", + "name": "v8.browsing_desktop-future/browse:social:twitter_infinite_scroll:2018" + }, + { + "duration": "69.0", + "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll:2018" + }, + { + "duration": "44.0", "name": "v8.browsing_desktop-future/browse:tools:docs_scrolling" }, { - "duration": "75.0", + "duration": "79.0", "name": "v8.browsing_desktop-future/browse:tools:earth:2020" }, { - "duration": "12.0", + "duration": "15.0", "name": "v8.browsing_desktop-future/browse:tools:gmail-compose:2020" }, { - "duration": "12.0", + "duration": "15.0", "name": "v8.browsing_desktop-future/browse:tools:gmail-labelclick:2020" }, { - "duration": "12.0", + "duration": "15.0", "name": "v8.browsing_desktop-future/browse:tools:gmail-openconversation:2020" }, { - "duration": "12.0", + "duration": "15.0", "name": "v8.browsing_desktop-future/browse:tools:gmail-search:2020" }, { @@ -4048,142 +4168,170 @@ "name": "v8.browsing_desktop-future/browse:tools:sheets:2019" }, { - "duration": "47.0", + "duration": "48.0", "name": "v8.browsing_desktop/browse:media:googleplaystore:2018" }, { - "duration": "12.0", + "duration": "13.0", "name": "v8.browsing_desktop/browse:media:imgur" }, { - "duration": "98.0", + "duration": "99.0", "name": "v8.browsing_desktop/browse:media:pinterest:2018" }, { - "duration": "67.0", + "duration": "68.0", "name": "v8.browsing_desktop/browse:media:tumblr:2018" }, { - "duration": "14.0", + "duration": "15.0", "name": "v8.browsing_desktop/browse:media:youtube:2019" }, { - "duration": "75.0", + "duration": "77.0", "name": "v8.browsing_desktop/browse:media:youtubetv:2019" }, { - "duration": "82.0", + "duration": "83.0", "name": "v8.browsing_desktop/browse:media:youtubetv_watch:2020" }, { - "duration": "55.0", + "duration": "56.0", "name": "v8.browsing_desktop/browse:news:cnn:2020" }, { - "duration": "53.0", + "duration": "54.0", "name": "v8.browsing_desktop/browse:news:flipboard:2018" }, { - "duration": "14.0", + "duration": "13.0", + "name": "v8.browsing_desktop/browse:news:hackernews:2020" + }, + { + "duration": "13.0", "name": "v8.browsing_desktop/browse:news:nytimes:2020" }, { - "duration": "41.0", + "duration": "60.0", + "name": "v8.browsing_desktop/browse:news:reddit:2020" + }, + { + "duration": "58.0", + "name": "v8.browsing_desktop/browse:search:google:2020" + }, + { + "duration": "42.0", "name": "v8.browsing_desktop/browse:search:google_india:2018" }, { - "duration": "79.0", + "duration": "80.0", "name": "v8.browsing_desktop/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "70.0", + "duration": "71.0", "name": "v8.browsing_desktop/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "54.0", + "duration": "55.0", "name": "v8.browsing_desktop/browse:social:twitter:2018" }, { - "duration": "72.0", + "duration": "73.0", "name": "v8.browsing_desktop/browse:social:twitter_infinite_scroll:2018" }, { - "duration": "66.0", + "duration": "67.0", "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "41.0", + "duration": "42.0", "name": "v8.browsing_desktop/browse:tools:docs_scrolling" }, { - "duration": "76.0", + "duration": "77.0", "name": "v8.browsing_desktop/browse:tools:earth:2020" }, { - "duration": "12.0", + "duration": "13.0", "name": "v8.browsing_desktop/browse:tools:gmail-compose:2020" }, { - "duration": "12.0", + "duration": "13.0", "name": "v8.browsing_desktop/browse:tools:gmail-labelclick:2020" }, { - "duration": "12.0", + "duration": "13.0", "name": "v8.browsing_desktop/browse:tools:gmail-openconversation:2020" }, { - "duration": "12.0", + "duration": "13.0", "name": "v8.browsing_desktop/browse:tools:gmail-search:2020" }, { - "duration": "12.0", + "duration": "13.0", "name": "v8.browsing_desktop/browse:tools:maps:2019" }, { - "duration": "39.0", + "duration": "41.0", "name": "v8.browsing_desktop/browse:tools:sheets:2019" }, { - "duration": "25.0", + "duration": "22.0", "name": "webrtc/10s_datachannel_transfer" }, { - "duration": "24.0", + "duration": "20.0", "name": "webrtc/canvas_capture_peer_connection" }, { - "duration": "34.0", + "duration": "31.0", "name": "webrtc/codec_constraints_h264" }, { - "duration": "34.0", + "duration": "31.0", "name": "webrtc/codec_constraints_vp8" }, { - "duration": "34.0", + "duration": "31.0", "name": "webrtc/codec_constraints_vp9" }, { - "duration": "23.0", + "duration": "20.0", "name": "webrtc/hd_local_stream_10s" }, { - "duration": "35.0", + "duration": "21.0", + "name": "webrtc/insertable_streams_video_processing_camera_canvas2d_video" + }, + { + "duration": "21.0", + "name": "webrtc/insertable_streams_video_processing_camera_drop_video" + }, + { + "duration": "21.0", + "name": "webrtc/insertable_streams_video_processing_camera_webgl_pc" + }, + { + "duration": "21.0", + "name": "webrtc/insertable_streams_video_processing_camera_webgl_video" + }, + { + "duration": "21.0", + "name": "webrtc/insertable_streams_video_processing_pc_webgl_video" + }, + { + "duration": "21.0", + "name": "webrtc/insertable_streams_video_processing_video_webgl_video" + }, + { + "duration": "32.0", "name": "webrtc/multiple_peerconnections" }, { - "duration": "37.0", + "duration": "34.0", "name": "webrtc/pause_play_peerconnections" }, { - "duration": "300.0", - "name": "base_perftests/_gtest_" - }, - { - "duration": "190.0", - "name": "performance_browser_tests/_gtest_" - }, - { "duration": "16.0", "name": "media_perftests/_gtest_" }, @@ -4192,6 +4340,14 @@ "name": "dawn_perf_tests/_gtest_" }, { + "duration": "190.0", + "name": "performance_browser_tests/_gtest_" + }, + { + "duration": "300.0", + "name": "base_perftests/_gtest_" + }, + { "duration": "7.0", "name": "views_perftests/_gtest_" }
diff --git a/tools/perf/core/shard_maps/timing_data/mac-arm_dtk_arm-perf_timing.json b/tools/perf/core/shard_maps/timing_data/mac-arm_dtk_arm-perf_timing.json index 7429693..aa6fafe 100644 --- a/tools/perf/core/shard_maps/timing_data/mac-arm_dtk_arm-perf_timing.json +++ b/tools/perf/core/shard_maps/timing_data/mac-arm_dtk_arm-perf_timing.json
@@ -1,62 +1,4350 @@ [ { + "duration": "23.0", + "name": "blink_perf.accessibility/build-table.html" + }, + { + "duration": "18.0", + "name": "blink_perf.accessibility/focus-links.html" + }, + { + "duration": "22.0", + "name": "blink_perf.accessibility/line-breaks.html" + }, + { + "duration": "28.0", + "name": "blink_perf.accessibility/many-text-changes-deep-block-subtree.html" + }, + { + "duration": "26.0", + "name": "blink_perf.accessibility/many-text-changes-deep-hidden-subtree.html" + }, + { + "duration": "24.0", + "name": "blink_perf.accessibility/many-text-changes-deep-inline-subtree.html" + }, + { + "duration": "32.0", + "name": "blink_perf.accessibility/many-text-changes-small-wait-between.html" + }, + { + "duration": "20.0", + "name": "blink_perf.accessibility/textarea-append.html" + }, + { + "duration": "12.0", + "name": "blink_perf.bindings/append-child.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/create-element.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/document-implementation.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/dom-attribute-on-prototoype.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/first-child.html" + }, + { + "duration": "4.0", + "name": "blink_perf.bindings/gc-forest.html" + }, + { + "duration": "5.0", + "name": "blink_perf.bindings/gc-mini-tree.html" + }, + { + "duration": "7.0", + "name": "blink_perf.bindings/gc-tree.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/get-attribute-rare.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/get-attribute.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/get-element-by-id.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/get-elements-by-tag-name.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/id-getter.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/id-setter.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/indexed-getter.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/insert-before.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/named-property-enumerator.html" + }, + { + "duration": "12.0", + "name": "blink_perf.bindings/node-list-access.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/node-type.html" + }, + { + "duration": "3.0", + "name": "blink_perf.bindings/post-message.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/sequence-conversion-array.html" + }, + { + "duration": "10.0", + "name": "blink_perf.bindings/sequence-conversion-custom-iterator.html" + }, + { + "duration": "3.0", + "name": "blink_perf.bindings/serialize-array.html" + }, + { + "duration": "3.0", + "name": "blink_perf.bindings/serialize-long-string.html" + }, + { + "duration": "4.0", + "name": "blink_perf.bindings/serialize-map.html" + }, + { + "duration": "3.0", + "name": "blink_perf.bindings/serialize-nested-array.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/set-attribute-rare.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/set-attribute.html" + }, + { + "duration": "6.0", + "name": "blink_perf.bindings/structured-clone-json-deserialize.html" + }, + { + "duration": "6.0", + "name": "blink_perf.bindings/structured-clone-json-serialize.html" + }, + { + "duration": "4.0", + "name": "blink_perf.bindings/structured-clone-long-string-deserialize.html" + }, + { + "duration": "4.0", + "name": "blink_perf.bindings/structured-clone-long-string-serialize.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/typed-array-construct-from-array.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/typed-array-construct-from-same-type.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/typed-array-construct-from-typed.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/typed-array-set-from-typed.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/undefined-first-child.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/undefined-get-element-by-id.html" + }, + { + "duration": "8.0", + "name": "blink_perf.bindings/undefined-id-getter.html" + }, + { + "duration": "3.0", + "name": "blink_perf.bindings/worker-structured-clone-different-payloads.html" + }, + { + "duration": "9.0", + "name": "blink_perf.bindings/worker-structured-clone-json-from-worker.html" + }, + { + "duration": "9.0", + "name": "blink_perf.bindings/worker-structured-clone-json-roundtrip.html" + }, + { + "duration": "9.0", + "name": "blink_perf.bindings/worker-structured-clone-json-to-worker.html" + }, + { + "duration": "3.0", + "name": "blink_perf.bindings/worker-structured-clone-workerDOM-DBMon-from-worker.html" + }, + { + "duration": "3.0", + "name": "blink_perf.bindings/worker-structured-clone-workerDOM-Map-from-worker.html" + }, + { + "duration": "7.0", + "name": "blink_perf.bindings/worker-text-encoded-transferable-from-worker.html" + }, + { + "duration": "7.0", + "name": "blink_perf.bindings/worker-text-encoded-transferable-roundtrip.html" + }, + { + "duration": "7.0", + "name": "blink_perf.bindings/worker-text-encoded-transferable-to-worker.html" + }, + { + "duration": "5.0", + "name": "blink_perf.bindings/worker-transferable-from-worker.html" + }, + { + "duration": "5.0", + "name": "blink_perf.bindings/worker-transferable-roundtrip.html" + }, + { + "duration": "5.0", + "name": "blink_perf.bindings/worker-transferable-to-worker.html" + }, + { + "duration": "16.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": "5.0", + "name": "blink_perf.css/ChangeStyleCSSVariableRecalc.html" + }, + { + "duration": "9.0", + "name": "blink_perf.css/ChangeStyleChildClassSelector.html" + }, + { + "duration": "10.0", + "name": "blink_perf.css/ChangeStyleChildElementSelectors.html" + }, + { + "duration": "6.0", + "name": "blink_perf.css/ChangeStyleCustomPropertyDeclaration.html" + }, + { + "duration": "9.0", + "name": "blink_perf.css/ChangeStyleElementSelector.html" + }, + { + "duration": "10.0", + "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html" + }, + { + "duration": "11.0", + "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html" + }, + { + "duration": "9.0", + "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html" + }, + { + "duration": "9.0", + "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html" + }, + { + "duration": "9.0", + "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html" + }, + { + "duration": "10.0", + "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html" + }, + { + "duration": "9.0", + "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html" + }, + { + "duration": "10.0", + "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html" + }, + { + "duration": "10.0", + "name": "blink_perf.css/ChangeStyleShallowTree.html" + }, + { + "duration": "9.0", + "name": "blink_perf.css/ChangeStyleSingleClassSelector.html" + }, + { + "duration": "9.0", + "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html" + }, + { + "duration": "9.0", + "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html" + }, + { + "duration": "9.0", + "name": "blink_perf.css/ChangeStyleUniversalSelector.html" + }, + { + "duration": "8.0", + "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html" + }, + { + "duration": "9.0", + "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html" + }, + { + "duration": "11.0", + "name": "blink_perf.css/ClassDescendantSelector.html" + }, + { + "duration": "10.0", + "name": "blink_perf.css/ClassInvalidation.html" + }, + { + "duration": "5.0", + "name": "blink_perf.css/CustomPropertiesCascade.html" + }, + { + "duration": "5.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": "5.0", + "name": "blink_perf.css/ExplicitInheritance.html" + }, + { + "duration": "11.0", + "name": "blink_perf.css/FocusUpdate.html" + }, + { + "duration": "9.0", + "name": "blink_perf.css/LoadBootstrapBlog.html" + }, + { + "duration": "11.0", + "name": "blink_perf.css/LoadMaterializeStarterPage.html" + }, + { + "duration": "9.0", + "name": "blink_perf.css/LoadSemanticPageExample.html" + }, + { + "duration": "10.0", + "name": "blink_perf.css/PseudoClassSelectors.html" + }, + { + "duration": "11.0", + "name": "blink_perf.css/SelectorCountScaling.html" + }, + { + "duration": "14.0", + "name": "blink_perf.dom/custom-element-default-style-with-shadow.html" + }, + { + "duration": "8.0", + "name": "blink_perf.dom/custom-element-default-style.html" + }, + { + "duration": "12.0", + "name": "blink_perf.dom/long-sibling-list.html" + }, + { + "duration": "4.0", + "name": "blink_perf.dom/modify-element-classname.html" + }, + { + "duration": "4.0", + "name": "blink_perf.dom/modify-element-id.html" + }, + { + "duration": "4.0", + "name": "blink_perf.dom/modify-element-title.html" + }, + { + "duration": "8.0", + "name": "blink_perf.dom/select-multiple-add.html" + }, + { + "duration": "8.0", + "name": "blink_perf.dom/select-single-add.html" + }, + { + "duration": "8.0", + "name": "blink_perf.dom/select-single-remove.html" + }, + { + "duration": "15.0", + "name": "blink_perf.events/EventsDispatching.html" + }, + { + "duration": "9.0", + "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html" + }, + { + "duration": "12.0", + "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html" + }, + { + "duration": "11.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": "17.0", + "name": "blink_perf.image_decoder/decode-gif.html" + }, + { + "duration": "12.0", + "name": "blink_perf.image_decoder/decode-jpeg-h1v1.html" + }, + { + "duration": "13.0", + "name": "blink_perf.image_decoder/decode-jpeg-h1v2.html" + }, + { + "duration": "14.0", + "name": "blink_perf.image_decoder/decode-jpeg-h2v1.html" + }, + { + "duration": "15.0", + "name": "blink_perf.image_decoder/decode-jpeg-h2v2.html" + }, + { + "duration": "13.0", + "name": "blink_perf.image_decoder/decode-lossless-webp.html" + }, + { + "duration": "12.0", + "name": "blink_perf.image_decoder/decode-lossy-webp.html" + }, + { + "duration": "12.0", + "name": "blink_perf.image_decoder/decode-png-palette-opaque.html" + }, + { + "duration": "14.0", + "name": "blink_perf.image_decoder/decode-png-palette.html" + }, + { + "duration": "14.0", + "name": "blink_perf.image_decoder/decode-png.html" + }, + { + "duration": "28.0", + "name": "blink_perf.layout/ArabicLineLayout.html" + }, + { + "duration": "3.0", + "name": "blink_perf.layout/Shapes/MultipleShapes.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/SimpleTextPathLineLayout.html" + }, + { + "duration": "7.0", + "name": "blink_perf.layout/abspos.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/add-remove-inline-floats.html" + }, + { + "duration": "3.0", + "name": "blink_perf.layout/animate-abspos-deep.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/attach-inlines-2.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/attach-inlines.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/auto-grid-lots-of-data.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/auto-grid-lots-of-spanning-data.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/change-text-css-contain.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/chapter-reflow-once-random.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/chapter-reflow-once.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/chapter-reflow-thrice.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/chapter-reflow-twice.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/chapter-reflow.html" + }, + { + "duration": "4.0", + "name": "blink_perf.layout/character_fallback.html" + }, + { + "duration": "5.0", + "name": "blink_perf.layout/contain-content-style-change.html" + }, + { + "duration": "3.0", + "name": "blink_perf.layout/culled-inline-bounding-rects.html" + }, + { + "duration": "3.0", + "name": "blink_perf.layout/culled-inline-hittest.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/deeply-nested-grid.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/editing_append.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/editing_append_single_line.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/editing_delete.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/editing_insert.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/editing_prepend.html" + }, + { + "duration": "12.0", + "name": "blink_perf.layout/fit-content-change-available-size-blocks.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/fit-content-change-available-size-text.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/fixed-grid-lots-of-data.html" + }, + { + "duration": "9.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": "8.0", + "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/flexbox-hittest.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/flexbox-input.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/flexbox-lots-of-data.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/flexbox-row-nowrap.html" + }, + { + "duration": "12.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": "8.0", + "name": "blink_perf.layout/flexbox-with-stretch-layout.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/flexbox_with_list_item.html" + }, + { + "duration": "6.0", + "name": "blink_perf.layout/floats_100_100.html" + }, + { + "duration": "6.0", + "name": "blink_perf.layout/floats_100_100_nested.html" + }, + { + "duration": "4.0", + "name": "blink_perf.layout/floats_10_1000.html" + }, + { + "duration": "4.0", + "name": "blink_perf.layout/floats_20_100.html" + }, + { + "duration": "4.0", + "name": "blink_perf.layout/floats_20_100_nested.html" + }, + { + "duration": "3.0", + "name": "blink_perf.layout/floats_2_100.html" + }, + { + "duration": "3.0", + "name": "blink_perf.layout/floats_2_100_nested.html" + }, + { + "duration": "4.0", + "name": "blink_perf.layout/floats_50_100.html" + }, + { + "duration": "4.0", + "name": "blink_perf.layout/floats_50_100_nested.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/floats_show_hide.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/hindi-line-layout.html" + }, + { + "duration": "3.0", + "name": "blink_perf.layout/hittest-block-children.html" + }, + { + "duration": "4.0", + "name": "blink_perf.layout/japanese-kokoro-insert.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/large-grid.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/large-spanning-grid-item.html" + }, + { + "duration": "6.0", + "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html" + }, + { + "duration": "6.0", + "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html" + }, + { + "duration": "6.0", + "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html" + }, + { + "duration": "6.0", + "name": "blink_perf.layout/latin-ebook-resize.html" + }, + { + "duration": "5.0", + "name": "blink_perf.layout/latin-ebook.html" + }, + { + "duration": "3.0", + "name": "blink_perf.layout/layers_overlap_2d.html" + }, + { + "duration": "3.0", + "name": "blink_perf.layout/layers_overlap_3d.html" + }, + { + "duration": "4.0", + "name": "blink_perf.layout/line-layout-fit-content-break-word.html" + }, + { + "duration": "6.0", + "name": "blink_perf.layout/line-layout-fit-content.html" + }, + { + "duration": "6.0", + "name": "blink_perf.layout/line-layout-line-height.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/line-layout-repeat-append-select.html" + }, + { + "duration": "9.0", + "name": "blink_perf.layout/line-layout-repeat-append.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/line-layout.html" + }, + { + "duration": "3.0", + "name": "blink_perf.layout/long-line-nowrap-collapse.html" + }, + { + "duration": "3.0", + "name": "blink_perf.layout/long-line-nowrap-spans-collapse.html" + }, + { + "duration": "6.0", + "name": "blink_perf.layout/long-line-nowrap.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/many-block-children-auto-inline-size.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/many-block-children-fixed-inline-size.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/multicol/balance-forced-breaks.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/multicol/deeply-nested-tables.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/multicol/fixed-height-with-spanner-and-nested-tables.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/multicol/lots-of-small-nested-unbreakable-blocks-autofill.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/multicol/lots-of-small-unbreakable-blocks-autofill.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/multicol/lots-of-text-autofill.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/multicol/lots-of-text-balanced-orphans-widows.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/multicol/lots-of-text-balanced.html" + }, + { + "duration": "10.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": "10.0", + "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html" + }, + { + "duration": "11.0", + "name": "blink_perf.layout/nested-grid-lots-of-tracks.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/nested-grid.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/nested-percent-height-tables.html" + }, + { + "duration": "8.0", + "name": "blink_perf.layout/ruby.html" + }, + { + "duration": "21.0", + "name": "blink_perf.layout/subtree-detaching.html" + }, + { + "duration": "4.0", + "name": "blink_perf.layout/vertical-japanese-kokoro-insert.html" + }, + { + "duration": "3.0", + "name": "blink_perf.layout/word-break-break-all.html" + }, + { + "duration": "3.0", + "name": "blink_perf.layout/word-break-break-word.html" + }, + { + "duration": "3.0", + "name": "blink_perf.layout/word-wrap-break-word.html" + }, + { + "duration": "20.0", + "name": "blink_perf.owp_storage/blob-perf-files.html" + }, + { + "duration": "12.0", + "name": "blink_perf.owp_storage/blob-perf-ipc.html" + }, + { + "duration": "12.0", + "name": "blink_perf.owp_storage/blob-perf-shm.html" + }, + { + "duration": "14.0", + "name": "blink_perf.owp_storage/blob-perf-tiny.html" + }, + { + "duration": "14.0", + "name": "blink_perf.owp_storage/idb-load-docs.html" + }, + { + "duration": "56.0", + "name": "blink_perf.owp_storage/idb-put-all.html" + }, + { + "duration": "59.0", + "name": "blink_perf.owp_storage/idb-put.html" + }, + { + "duration": "14.0", + "name": "blink_perf.paint/appending-text.html" + }, + { + "duration": "13.0", + "name": "blink_perf.paint/color-changes.html" + }, + { + "duration": "12.0", + "name": "blink_perf.paint/complex-content-slow-scroll.html" + }, + { + "duration": "13.0", + "name": "blink_perf.paint/complex-iframe-filtered.html" + }, + { + "duration": "18.0", + "name": "blink_perf.paint/contain-update-layer-tree.html" + }, + { + "duration": "13.0", + "name": "blink_perf.paint/containment-resize.html" + }, + { + "duration": "13.0", + "name": "blink_perf.paint/fixed-and-many-layers-scroll.html" + }, + { + "duration": "12.0", + "name": "blink_perf.paint/large-table-background-change.html" + }, + { + "duration": "12.0", + "name": "blink_perf.paint/large-table-collapsed-border-change.html" + }, + { + "duration": "12.0", + "name": "blink_perf.paint/modify-selection.html" + }, + { + "duration": "11.0", + "name": "blink_perf.paint/move-text-with-mask.html" + }, + { + "duration": "13.0", + "name": "blink_perf.paint/paint-offset-changes.html" + }, + { + "duration": "12.0", + "name": "blink_perf.paint/transform-changes.html" + }, + { + "duration": "13.0", + "name": "blink_perf.parser/css-parser-yui.html" + }, + { + "duration": "15.0", + "name": "blink_perf.parser/declarative-shadow-dom-cloning.html" + }, + { + "duration": "10.0", + "name": "blink_perf.parser/declarative-shadow-dom.html" + }, + { + "duration": "4.0", + "name": "blink_perf.parser/html-parser-threaded.html" + }, + { + "duration": "4.0", + "name": "blink_perf.parser/html-parser.html" + }, + { + "duration": "15.0", + "name": "blink_perf.parser/html5-full-render.html" + }, + { + "duration": "25.0", + "name": "blink_perf.parser/iframe-append-remove.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/innerHTML-setter-siblings.html" + }, + { + "duration": "8.0", + "name": "blink_perf.parser/innerHTML-setter.html" + }, + { + "duration": "8.0", + "name": "blink_perf.parser/query-selector-all-attribute-complex.html" + }, + { + "duration": "8.0", + "name": "blink_perf.parser/query-selector-all-attribute.html" + }, + { + "duration": "8.0", + "name": "blink_perf.parser/query-selector-all-class-deep.html" + }, + { + "duration": "8.0", + "name": "blink_perf.parser/query-selector-all-class-first.html" + }, + { + "duration": "8.0", + "name": "blink_perf.parser/query-selector-all-class-last.html" + }, + { + "duration": "8.0", + "name": "blink_perf.parser/query-selector-all-class.html" + }, + { + "duration": "8.0", + "name": "blink_perf.parser/query-selector-all-deep.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/query-selector-all-first.html" + }, + { + "duration": "8.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": "9.0", + "name": "blink_perf.parser/query-selector-all-id-last.html" + }, + { + "duration": "8.0", + "name": "blink_perf.parser/query-selector-all-last.html" + }, + { + "duration": "8.0", + "name": "blink_perf.parser/query-selector-deep.html" + }, + { + "duration": "8.0", + "name": "blink_perf.parser/query-selector-first.html" + }, + { + "duration": "8.0", + "name": "blink_perf.parser/query-selector-id-deep.html" + }, + { + "duration": "8.0", + "name": "blink_perf.parser/query-selector-id-last.html" + }, + { + "duration": "8.0", + "name": "blink_perf.parser/query-selector-last.html" + }, + { + "duration": "13.0", + "name": "blink_perf.parser/simple-url.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/textarea-parsing.html" + }, + { + "duration": "9.0", + "name": "blink_perf.parser/tiny-innerHTML.html" + }, + { + "duration": "10.0", + "name": "blink_perf.parser/url-parser.html" + }, + { + "duration": "11.0", + "name": "blink_perf.parser/xml-parser.html" + }, + { + "duration": "7.0", + "name": "blink_perf.shadow_dom/declarative-api.html" + }, + { + "duration": "0.0", + "name": "blink_perf.shadow_dom/imperative-api-appendchild.html" + }, + { + "duration": "3.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": "3.0", + "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary-large.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/imperative-api-detail-summary-large.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/imperative-api-detail-summary.html" + }, + { + "duration": "0.0", + "name": "blink_perf.shadow_dom/imperative-api-insertbefore.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/imperative-api.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/shadow-style-share-attr-selectors.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/shadow-style-share-media-query.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/shadow-style-share-with-distribution.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/shadow-style-share.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/style-sheet-insert.html" + }, + { + "duration": "5.0", + "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/v1-distribution.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/v1-host-child-append.html" + }, + { + "duration": "5.0", + "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html" + }, + { + "duration": "6.0", + "name": "blink_perf.shadow_dom/v1-large-deep-layout.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/v1-large-shallow-append-layout.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/v1-large-shallow-distribution.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/v1-large-shallow-layout.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/v1-large-shallow-prepend-layout.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-re-layout.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-assigned-nodes.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-flatten.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-re-layout.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-assigned-nodes.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-flatten.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/v1-slot-append.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/v1-small-deep-distribution.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/v1-small-deep-layout.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/v1-small-shallow-distribution.html" + }, + { + "duration": "3.0", + "name": "blink_perf.shadow_dom/v1-small-shallow-layout.html" + }, + { + "duration": "7.0", + "name": "blink_perf.svg/AzLizardBenjiPark.html" + }, + { + "duration": "3.0", + "name": "blink_perf.svg/Bamboo.html" + }, + { + "duration": "3.0", + "name": "blink_perf.svg/Cactus.html" + }, + { + "duration": "3.0", + "name": "blink_perf.svg/Cowboy.html" + }, + { + "duration": "0.0", + "name": "blink_perf.svg/Cowboy_transform.html" + }, + { + "duration": "3.0", + "name": "blink_perf.svg/CrawFishGanson.html" + }, + { + "duration": "3.0", + "name": "blink_perf.svg/Debian.html" + }, + { + "duration": "3.0", + "name": "blink_perf.svg/DropsOnABlade.html" + }, + { + "duration": "3.0", + "name": "blink_perf.svg/FlowerFromMyGarden.html" + }, + { + "duration": "3.0", + "name": "blink_perf.svg/FoodLeifLodahl.html" + }, + { + "duration": "3.0", + "name": "blink_perf.svg/France.html" + }, + { + "duration": "3.0", + "name": "blink_perf.svg/FrancoBolloGnomeEzechi.html" + }, + { + "duration": "3.0", + "name": "blink_perf.svg/GearFlowers.html" + }, + { + "duration": "3.0", + "name": "blink_perf.svg/HarveyRayner.html" + }, + { + "duration": "3.0", + "name": "blink_perf.svg/HereGear.html" + }, + { + "duration": "4.0", + "name": "blink_perf.svg/MtSaintHelens.html" + }, + { + "duration": "3.0", + "name": "blink_perf.svg/Samurai.html" + }, + { + "duration": "0.0", + "name": "blink_perf.svg/SierpinskiCarpet.html" + }, + { + "duration": "3.0", + "name": "blink_perf.svg/SvgCubics.html" + }, + { + "duration": "3.0", + "name": "blink_perf.svg/SvgHitTesting.html" + }, + { + "duration": "8.0", + "name": "blink_perf.svg/SvgNestedUse.html" + }, + { + "duration": "3.0", + "name": "blink_perf.svg/UnderTheSee.html" + }, + { + "duration": "3.0", + "name": "blink_perf.svg/WorldIso.html" + }, + { + "duration": "4.0", + "name": "blink_perf.svg/Worldcup.html" + }, + { + "duration": "18.0", + "name": "blink_perf.webaudio/audio-buffer-source-node.html" + }, + { + "duration": "90.0", + "name": "blink_perf.webaudio/audio-worklet-node.html" + }, + { + "duration": "92.0", + "name": "blink_perf.webaudio/biquad-filter-node.html" + }, + { + "duration": "92.0", + "name": "blink_perf.webaudio/gain-node.html" + }, + { + "duration": "33.0", + "name": "blink_perf.webaudio/panner-node.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": "29.0", + "name": "dromaeo/http://dromaeo.com?dom-traverse" + }, + { + "duration": "9.0", + "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html" + }, + { + "duration": "6.0", + "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html" + }, + { + "duration": "186.0", + "name": "jetstream/JetStream" + }, + { + "duration": "142.0", + "name": "jetstream2/JetStream2" + }, + { + "duration": "27.0", + "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html" + }, + { + "duration": "22.0", + "name": "loading.desktop/24h_cold" + }, + { + "duration": "24.0", + "name": "loading.desktop/24h_warm" + }, + { + "duration": "27.0", + "name": "loading.desktop/AirBnB_cold" + }, + { "duration": "35.0", "name": "loading.desktop/AirBnB_warm" }, { - "duration": "33.0", + "duration": "20.0", "name": "loading.desktop/Aljayyash_cold" }, { - "duration": "26.0", + "duration": "22.0", + "name": "loading.desktop/Aljayyash_warm" + }, + { + "duration": "27.0", "name": "loading.desktop/AllRecipes_cold" }, { + "duration": "33.0", + "name": "loading.desktop/AllRecipes_warm" + }, + { + "duration": "28.0", + "name": "loading.desktop/ArsTechnica_cold" + }, + { + "duration": "40.0", + "name": "loading.desktop/ArsTechnica_warm" + }, + { "duration": "22.0", + "name": "loading.desktop/Baidu_cold" + }, + { + "duration": "23.0", "name": "loading.desktop/Baidu_warm" }, { + "duration": "23.0", + "name": "loading.desktop/Bhaskar_cold" + }, + { + "duration": "27.0", + "name": "loading.desktop/Bhaskar_warm" + }, + { "duration": "22.0", + "name": "loading.desktop/Chosun_cold" + }, + { + "duration": "25.0", + "name": "loading.desktop/Chosun_warm" + }, + { + "duration": "22.0", + "name": "loading.desktop/Colorado.edu_cold" + }, + { + "duration": "25.0", + "name": "loading.desktop/Colorado.edu_warm" + }, + { + "duration": "22.0", + "name": "loading.desktop/Danawa_cold" + }, + { + "duration": "24.0", + "name": "loading.desktop/Danawa_warm" + }, + { + "duration": "23.0", + "name": "loading.desktop/Daum_cold" + }, + { + "duration": "24.0", + "name": "loading.desktop/Daum_warm" + }, + { + "duration": "22.0", + "name": "loading.desktop/Donga_cold" + }, + { + "duration": "25.0", + "name": "loading.desktop/Donga_warm" + }, + { + "duration": "25.0", + "name": "loading.desktop/Economist_cold" + }, + { + "duration": "32.0", + "name": "loading.desktop/Economist_warm" + }, + { + "duration": "22.0", + "name": "loading.desktop/Elmundo_cold" + }, + { + "duration": "9.0", + "name": "loading.desktop/Elmundo_warm" + }, + { + "duration": "22.0", + "name": "loading.desktop/FC2Blog_cold" + }, + { + "duration": "25.0", + "name": "loading.desktop/FC2Blog_warm" + }, + { + "duration": "23.0", + "name": "loading.desktop/FIFA_cold" + }, + { + "duration": "28.0", + "name": "loading.desktop/FIFA_warm" + }, + { + "duration": "30.0", + "name": "loading.desktop/FarsNews_cold" + }, + { + "duration": "23.0", + "name": "loading.desktop/FarsNews_warm" + }, + { + "duration": "23.0", + "name": "loading.desktop/Flickr_cold" + }, + { + "duration": "26.0", + "name": "loading.desktop/Flickr_warm" + }, + { + "duration": "22.0", + "name": "loading.desktop/FlipKart_cold" + }, + { + "duration": "23.0", + "name": "loading.desktop/FlipKart_warm" + }, + { + "duration": "20.0", + "name": "loading.desktop/Free.fr_cold" + }, + { + "duration": "22.0", + "name": "loading.desktop/Free.fr_warm" + }, + { + "duration": "22.0", + "name": "loading.desktop/HTML5Rocks_cold" + }, + { + "duration": "23.0", + "name": "loading.desktop/HTML5Rocks_warm" + }, + { + "duration": "20.0", + "name": "loading.desktop/Haraj_cold" + }, + { + "duration": "20.0", + "name": "loading.desktop/Haraj_warm" + }, + { + "duration": "22.0", + "name": "loading.desktop/HatenaBookmark_cold" + }, + { + "duration": "24.0", + "name": "loading.desktop/HatenaBookmark_warm" + }, + { + "duration": "23.0", + "name": "loading.desktop/IGN_cold" + }, + { + "duration": "24.0", + "name": "loading.desktop/IGN_warm" + }, + { + "duration": "23.0", + "name": "loading.desktop/IMDB_cold" + }, + { + "duration": "23.0", + "name": "loading.desktop/IMDB_warm" + }, + { + "duration": "33.0", + "name": "loading.desktop/IndiaTimes_cold" + }, + { + "duration": "26.0", + "name": "loading.desktop/IndiaTimes_warm" + }, + { + "duration": "22.0", + "name": "loading.desktop/Kakaku_cold" + }, + { + "duration": "25.0", + "name": "loading.desktop/Kakaku_warm" + }, + { + "duration": "26.0", + "name": "loading.desktop/Kenh14_cold" + }, + { + "duration": "34.0", + "name": "loading.desktop/Kenh14_warm" + }, + { + "duration": "19.0", + "name": "loading.desktop/Mercadolivre_cold" + }, + { + "duration": "22.0", + "name": "loading.desktop/Mercadolivre_warm" + }, + { + "duration": "21.0", "name": "loading.desktop/Naver_cold" }, { - "duration": "22.0", + "duration": "23.0", + "name": "loading.desktop/Naver_warm" + }, + { + "duration": "20.0", "name": "loading.desktop/Orange_cold" }, { - "duration": "22.0", + "duration": "21.0", "name": "loading.desktop/Orange_warm" }, { + "duration": "22.0", + "name": "loading.desktop/Pantip_cold" + }, + { + "duration": "26.0", + "name": "loading.desktop/Pantip_warm" + }, + { + "duration": "23.0", + "name": "loading.desktop/PremierLeague_cold" + }, + { + "duration": "24.0", + "name": "loading.desktop/PremierLeague_warm" + }, + { + "duration": "23.0", + "name": "loading.desktop/QQ_cold" + }, + { + "duration": "29.0", + "name": "loading.desktop/QQ_warm" + }, + { + "duration": "23.0", + "name": "loading.desktop/REI_cold" + }, + { + "duration": "25.0", + "name": "loading.desktop/REI_warm" + }, + { + "duration": "22.0", + "name": "loading.desktop/Ruten_cold" + }, + { + "duration": "24.0", + "name": "loading.desktop/Ruten_warm" + }, + { + "duration": "25.0", + "name": "loading.desktop/Sina_cold" + }, + { + "duration": "33.0", + "name": "loading.desktop/Sina_warm" + }, + { + "duration": "25.0", + "name": "loading.desktop/Taobao_cold" + }, + { "duration": "29.0", "name": "loading.desktop/Taobao_warm" }, { - "duration": "22.0", + "duration": "24.0", "name": "loading.desktop/TheOnion_cold" }, { + "duration": "26.0", + "name": "loading.desktop/TheOnion_warm" + }, + { + "duration": "23.0", + "name": "loading.desktop/TheVerge_cold" + }, + { + "duration": "26.0", + "name": "loading.desktop/TheVerge_warm" + }, + { "duration": "24.0", + "name": "loading.desktop/TicketMaster_cold" + }, + { + "duration": "27.0", + "name": "loading.desktop/TicketMaster_warm" + }, + { + "duration": "25.0", + "name": "loading.desktop/Vietnamnet_cold" + }, + { + "duration": "30.0", + "name": "loading.desktop/Vietnamnet_warm" + }, + { + "duration": "24.0", + "name": "loading.desktop/Vnexpress_cold" + }, + { + "duration": "27.0", + "name": "loading.desktop/Vnexpress_warm" + }, + { + "duration": "11.0", + "name": "loading.desktop/Walgreens_cold" + }, + { + "duration": "11.0", + "name": "loading.desktop/Walgreens_warm" + }, + { + "duration": "21.0", + "name": "loading.desktop/Yandex_cold" + }, + { + "duration": "23.0", + "name": "loading.desktop/Yandex_warm" + }, + { + "duration": "24.0", + "name": "loading.desktop/amazon.co.jp_cold" + }, + { + "duration": "28.0", + "name": "loading.desktop/amazon.co.jp_warm" + }, + { + "duration": "22.0", + "name": "loading.desktop/ja.wikipedia_cold" + }, + { + "duration": "25.0", + "name": "loading.desktop/ja.wikipedia_warm" + }, + { + "duration": "24.0", + "name": "loading.desktop/money.cnn_cold" + }, + { + "duration": "29.0", + "name": "loading.desktop/money.cnn_warm" + }, + { + "duration": "20.0", + "name": "loading.desktop/ru.wikipedia_cold" + }, + { + "duration": "22.0", "name": "loading.desktop/ru.wikipedia_warm" }, { + "duration": "22.0", + "name": "loading.desktop/uol.com.br_cold" + }, + { + "duration": "27.0", + "name": "loading.desktop/uol.com.br_warm" + }, + { + "duration": "23.0", + "name": "loading.desktop/yahoo.co.jp_cold" + }, + { + "duration": "25.0", + "name": "loading.desktop/yahoo.co.jp_warm" + }, + { + "duration": "18.0", + "name": "media.desktop/mse.html?media=aac_audio.mp4" + }, + { + "duration": "17.0", + "name": "media.desktop/mse.html?media=aac_audio.mp4,h264_video.mp4" + }, + { + "duration": "17.0", + "name": "media.desktop/mse.html?media=h264_video.mp4" + }, + { + "duration": "17.0", + "name": "media.desktop/mse.html?media=tulip0.av1.mp4" + }, + { + "duration": "17.0", + "name": "media.desktop/mse.html?media=tulip2.vp9.webm" + }, + { + "duration": "134.0", + "name": "media.desktop/video.html?src=boat_1080p60fps_vp9.webm" + }, + { + "duration": "22.0", + "name": "media.desktop/video.html?src=crowd1080.mp4" + }, + { + "duration": "25.0", + "name": "media.desktop/video.html?src=crowd1080.webm" + }, + { + "duration": "22.0", + "name": "media.desktop/video.html?src=crowd1080_vp9.webm" + }, + { + "duration": "136.0", + "name": "media.desktop/video.html?src=foodmarket_720p30fps.mp4" + }, + { + "duration": "17.0", + "name": "media.desktop/video.html?src=garden2_10s.mp4&seek" + }, + { + "duration": "17.0", + "name": "media.desktop/video.html?src=garden2_10s.webm&seek" + }, + { + "duration": "18.0", + "name": "media.desktop/video.html?src=smpte_3840x2160_60fps_vp9.webm&seek" + }, + { + "duration": "23.0", + "name": "media.desktop/video.html?src=tulip0.av1.mp4" + }, + { + "duration": "18.0", + "name": "media.desktop/video.html?src=tulip0.av1.mp4&seek" + }, + { + "duration": "29.0", + "name": "media.desktop/video.html?src=tulip2.m4a&type=audio" + }, + { + "duration": "29.0", + "name": "media.desktop/video.html?src=tulip2.mp3&type=audio" + }, + { + "duration": "16.0", + "name": "media.desktop/video.html?src=tulip2.mp3&type=audio&seek" + }, + { + "duration": "29.0", + "name": "media.desktop/video.html?src=tulip2.mp4" + }, + { + "duration": "29.0", + "name": "media.desktop/video.html?src=tulip2.mp4&busyjs" + }, + { + "duration": "29.0", + "name": "media.desktop/video.html?src=tulip2.ogg&type=audio" + }, + { + "duration": "16.0", + "name": "media.desktop/video.html?src=tulip2.ogg&type=audio&seek" + }, + { + "duration": "29.0", + "name": "media.desktop/video.html?src=tulip2.vp9.webm" + }, + { + "duration": "23.0", + "name": "media.desktop/video.html?src=tulip2.vp9.webm&background" + }, + { + "duration": "31.0", + "name": "media.desktop/video.html?src=tulip2.vp9.webm_WiFi" + }, + { + "duration": "18.0", + "name": "memory.desktop/TrivialAnimationPageSharedPageState" + }, + { + "duration": "18.0", + "name": "memory.desktop/TrivialBlinkingCursorPageSharedPageState" + }, + { + "duration": "18.0", + "name": "memory.desktop/TrivialBlurAnimationPageSharedPageState" + }, + { + "duration": "18.0", + "name": "memory.desktop/TrivialCanvasPageSharedPageState" + }, + { + "duration": "19.0", + "name": "memory.desktop/TrivialFullscreenVideoPageSharedPageState" + }, + { + "duration": "18.0", + "name": "memory.desktop/TrivialGifPageSharedPageState" + }, + { + "duration": "19.0", + "name": "memory.desktop/TrivialScrollingPageSharedPageState" + }, + { + "duration": "18.0", + "name": "memory.desktop/TrivialWebGLPageSharedPageState" + }, + { + "duration": "40.0", + "name": "memory.desktop/WebWorker" + }, + { + "duration": "45.0", + "name": "octane/Octane" + }, + { + "duration": "43.0", + "name": "power.desktop/TrivialAnimationPageSharedPageState" + }, + { + "duration": "43.0", + "name": "power.desktop/TrivialBlinkingCursorPageSharedPageState" + }, + { + "duration": "43.0", + "name": "power.desktop/TrivialBlurAnimationPageSharedPageState" + }, + { + "duration": "43.0", + "name": "power.desktop/TrivialCanvasPageSharedPageState" + }, + { + "duration": "44.0", + "name": "power.desktop/TrivialFullscreenVideoPageSharedPageState" + }, + { + "duration": "43.0", + "name": "power.desktop/TrivialGifPageSharedPageState" + }, + { + "duration": "45.0", + "name": "power.desktop/TrivialScrollingPageSharedPageState" + }, + { + "duration": "43.0", + "name": "power.desktop/TrivialWebGLPageSharedPageState" + }, + { + "duration": "51.0", + "name": "power.desktop/abcnews" + }, + { + "duration": "43.0", + "name": "power.desktop/indiatimes" + }, + { + "duration": "43.0", + "name": "power.desktop/instagram" + }, + { + "duration": "43.0", + "name": "power.desktop/microsoft" + }, + { + "duration": "44.0", + "name": "power.desktop/sina" + }, + { + "duration": "43.0", + "name": "power.desktop/slideshare" + }, + { + "duration": "44.0", + "name": "power.desktop/uol" + }, + { + "duration": "15.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html" + }, + { + "duration": "7.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/blogger.html" + }, + { + "duration": "7.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/booking.html" + }, + { + "duration": "7.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/cnn.html" + }, + { + "duration": "6.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/ebay.html" + }, + { + "duration": "8.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html" + }, + { + "duration": "6.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/facebook.html" + }, + { + "duration": "7.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/gmail.html" + }, + { + "duration": "7.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/google.html" + }, + { + "duration": "6.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/googlecalendar.html" + }, + { + "duration": "7.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/googledocs.html" + }, + { + "duration": "7.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleimagesearch.html" + }, + { + "duration": "8.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleplus.html" + }, + { + "duration": "6.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html" + }, + { + "duration": "6.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html" + }, + { + "duration": "7.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html" + }, + { + "duration": "7.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/twitter.html" + }, + { + "duration": "6.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html" + }, + { + "duration": "1.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/wikipedia.html" + }, + { + "duration": "6.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/wordpress.html" + }, + { + "duration": "7.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahooanswers.html" + }, + { + "duration": "6.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html" + }, + { + "duration": "8.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html" + }, + { + "duration": "7.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html" + }, + { + "duration": "7.0", + "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html" + }, + { + "duration": "28.0", + "name": "rendering.desktop/accu_weather_2018" + }, + { + "duration": "27.0", + "name": "rendering.desktop/accu_weather_pinch_2018" + }, + { + "duration": "23.0", + "name": "rendering.desktop/amazon_2018" + }, + { + "duration": "21.0", + "name": "rendering.desktop/amazon_pinch_2018" + }, + { + "duration": "25.0", + "name": "rendering.desktop/analog_clock_svg" + }, + { + "duration": "29.0", + "name": "rendering.desktop/animometer_webgl" + }, + { + "duration": "28.0", + "name": "rendering.desktop/animometer_webgl_attrib_arrays" + }, + { + "duration": "27.0", + "name": "rendering.desktop/animometer_webgl_fast_call" + }, + { + "duration": "52.0", + "name": "rendering.desktop/animometer_webgl_indexed" + }, + { + "duration": "51.0", + "name": "rendering.desktop/animometer_webgl_indexed_fast_call" + }, + { + "duration": "27.0", + "name": "rendering.desktop/animometer_webgl_indexed_multi_draw" + }, + { + "duration": "27.0", + "name": "rendering.desktop/animometer_webgl_indexed_multi_draw_base_vertex_base_instance" + }, + { + "duration": "37.0", + "name": "rendering.desktop/animometer_webgl_multi_draw" + }, + { + "duration": "27.0", + "name": "rendering.desktop/aquarium" + }, + { + "duration": "28.0", + "name": "rendering.desktop/aquarium_20k" + }, + { + "duration": "28.0", + "name": "rendering.desktop/aquarium_20k_fast_call" + }, + { + "duration": "27.0", + "name": "rendering.desktop/background_color_animation" + }, + { + "duration": "24.0", + "name": "rendering.desktop/background_color_animation_with_gradient" + }, + { + "duration": "25.0", + "name": "rendering.desktop/balls_css_key_frame_animations" + }, + { + "duration": "26.0", + "name": "rendering.desktop/balls_css_key_frame_animations_composited_transform" + }, + { + "duration": "25.0", + "name": "rendering.desktop/balls_css_transition_2_properties" + }, + { + "duration": "25.0", + "name": "rendering.desktop/balls_css_transition_40_properties" + }, + { + "duration": "25.0", + "name": "rendering.desktop/balls_css_transition_all_properties" + }, + { + "duration": "25.0", + "name": "rendering.desktop/balls_javascript_canvas" + }, + { + "duration": "25.0", + "name": "rendering.desktop/balls_javascript_css" + }, + { + "duration": "25.0", + "name": "rendering.desktop/balls_svg_animations" + }, + { + "duration": "27.0", + "name": "rendering.desktop/blob" + }, + { + "duration": "23.0", + "name": "rendering.desktop/blogspot_2018" + }, + { + "duration": "22.0", + "name": "rendering.desktop/blogspot_pinch_2018" + }, + { + "duration": "20.0", + "name": "rendering.desktop/blur_rotating_background" + }, + { + "duration": "21.0", + "name": "rendering.desktop/booking.com_2018" + }, + { + "duration": "22.0", + "name": "rendering.desktop/booking_pinch_2018" + }, + { + "duration": "25.0", + "name": "rendering.desktop/bouncing_balls_15" + }, + { + "duration": "26.0", + "name": "rendering.desktop/bouncing_balls_shadow" + }, + { + "duration": "25.0", + "name": "rendering.desktop/bouncing_clipped_rectangles" + }, + { + "duration": "25.0", + "name": "rendering.desktop/bouncing_gradient_circles" + }, + { + "duration": "25.0", + "name": "rendering.desktop/bouncing_png_images" + }, + { + "duration": "25.0", + "name": "rendering.desktop/bouncing_svg_images" + }, + { + "duration": "29.0", + "name": "rendering.desktop/camera_to_webgl" + }, + { + "duration": "25.0", + "name": "rendering.desktop/canvas2d_to_texture.html" + }, + { + "duration": "34.0", + "name": "rendering.desktop/canvas_05000_pixels_per_second" + }, + { + "duration": "32.0", + "name": "rendering.desktop/canvas_10000_pixels_per_second" + }, + { + "duration": "29.0", + "name": "rendering.desktop/canvas_20000_pixels_per_second" + }, + { + "duration": "30.0", + "name": "rendering.desktop/canvas_40000_pixels_per_second" + }, + { + "duration": "29.0", + "name": "rendering.desktop/canvas_60000_pixels_per_second" + }, + { + "duration": "29.0", + "name": "rendering.desktop/canvas_75000_pixels_per_second" + }, + { + "duration": "29.0", + "name": "rendering.desktop/canvas_90000_pixels_per_second" + }, + { + "duration": "25.0", + "name": "rendering.desktop/canvas_animation_no_clear" + }, + { + "duration": "25.0", + "name": "rendering.desktop/canvas_arcs" + }, + { + "duration": "25.0", + "name": "rendering.desktop/canvas_font_cycler" + }, + { + "duration": "25.0", + "name": "rendering.desktop/canvas_lines" + }, + { + "duration": "25.0", + "name": "rendering.desktop/canvas_to_blob" + }, + { + "duration": "25.0", + "name": "rendering.desktop/canvas_to_canvas_draw" + }, + { + "duration": "21.0", + "name": "rendering.desktop/cats_unscaled" + }, + { + "duration": "19.0", + "name": "rendering.desktop/cats_viewport_width" + }, + { + "duration": "29.0", + "name": "rendering.desktop/cc_poster_circle" + }, + { + "duration": "22.0", + "name": "rendering.desktop/cc_scroll_text_only" + }, + { + "duration": "28.0", + "name": "rendering.desktop/chip_tune" + }, + { + "duration": "22.0", + "name": "rendering.desktop/cnn_2018" + }, + { + "duration": "22.0", + "name": "rendering.desktop/cnn_pinch_2018" + }, + { + "duration": "25.0", + "name": "rendering.desktop/compositor_heavy_animation" + }, + { + "duration": "25.0", + "name": "rendering.desktop/crafty_mind" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_animations_many_keyframes" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_animations_simultaneous_inline_style" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_animations_simultaneous_new_element" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_animations_simultaneous_style_element" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_animations_simultaneous_updating_class" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_animations_staggered_infinite_iterations" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_animations_staggered_inline_style" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_animations_staggered_new_element" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_animations_staggered_style_element" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_animations_staggered_updating_class" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_animations_triggered_inline_style" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_animations_triggered_new_element" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_animations_triggered_style_element" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_animations_triggered_updating_class" + }, + { + "duration": "28.0", + "name": "rendering.desktop/css_opacity_plus_n_layers_99" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_transitions_inline_style" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_transitions_new_element" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_transitions_staggered_inline_style" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_transitions_staggered_new_element" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_transitions_staggered_style_element" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_transitions_staggered_updating_class" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_transitions_style_element" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_transitions_triggered_inline_style" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_transitions_triggered_new_element" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_transitions_triggered_style_element" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_transitions_triggered_updating_class" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_transitions_updating_class" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_value_type_color" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_value_type_filter" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_value_type_length" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_value_type_length_complex" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_value_type_length_simple" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_value_type_path" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_value_type_shadow" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_value_type_transform_complex" + }, + { + "duration": "25.0", + "name": "rendering.desktop/css_value_type_transform_simple" + }, + { + "duration": "28.0", + "name": "rendering.desktop/docs_paper.html" + }, + { + "duration": "24.0", + "name": "rendering.desktop/docs_resume.html" + }, + { + "duration": "23.0", + "name": "rendering.desktop/docs_table.html" + }, + { + "duration": "24.0", + "name": "rendering.desktop/draw_image" + }, + { + "duration": "24.0", + "name": "rendering.desktop/draw_image_not_pixel_aligned" + }, + { + "duration": "24.0", + "name": "rendering.desktop/dynamic_canvas_to_hw_accelerated_canvas.html" + }, + { + "duration": "27.0", + "name": "rendering.desktop/dynamic_cube_map" + }, + { + "duration": "24.0", + "name": "rendering.desktop/dynamic_webgl_to_hw_accelerated_canvas.html" + }, + { + "duration": "26.0", + "name": "rendering.desktop/earth" + }, + { + "duration": "20.0", + "name": "rendering.desktop/ebay_2018" + }, + { + "duration": "25.0", + "name": "rendering.desktop/ebay_pinch_2018" + }, + { + "duration": "27.0", + "name": "rendering.desktop/effect_games" + }, + { + "duration": "30.0", + "name": "rendering.desktop/espn_2018" + }, + { + "duration": "21.0", + "name": "rendering.desktop/espn_pinch_2018" + }, + { + "duration": "24.0", + "name": "rendering.desktop/extra_large_texture_uploads" + }, + { + "duration": "19.0", + "name": "rendering.desktop/facebook_2018" + }, + { + "duration": "21.0", + "name": "rendering.desktop/facebook_pinch_2018" + }, + { + "duration": "24.0", + "name": "rendering.desktop/falling_particle_simulation_cpu.html" + }, + { + "duration": "24.0", + "name": "rendering.desktop/falling_particle_simulation_gpu.html" + }, + { + "duration": "24.0", + "name": "rendering.desktop/fill_clear_rect.html" + }, + { + "duration": "24.0", + "name": "rendering.desktop/fill_shapes" + }, + { + "duration": "24.0", + "name": "rendering.desktop/filter_terrain_svg" + }, + { + "duration": "23.0", + "name": "rendering.desktop/geo_apis" + }, + { + "duration": "23.0", + "name": "rendering.desktop/get_image_data_cpu.html" + }, + { + "duration": "24.0", + "name": "rendering.desktop/get_image_data_gpu.html" + }, + { + "duration": "19.0", + "name": "rendering.desktop/gmail_2018" + }, + { + "duration": "33.0", + "name": "rendering.desktop/gmail_move_2018" + }, + { + "duration": "21.0", + "name": "rendering.desktop/gmail_pinch_2018" + }, + { + "duration": "19.0", + "name": "rendering.desktop/google_calendar_2018" + }, + { + "duration": "20.0", + "name": "rendering.desktop/google_calendar_pinch_2018" + }, + { + "duration": "21.0", + "name": "rendering.desktop/google_docs_2018" + }, + { + "duration": "20.0", + "name": "rendering.desktop/google_image_pinch_2018" + }, + { + "duration": "20.0", + "name": "rendering.desktop/google_image_search_2018" + }, + { + "duration": "20.0", + "name": "rendering.desktop/google_plus_2018" + }, + { + "duration": "20.0", + "name": "rendering.desktop/google_search_pinch_2018" + }, + { + "duration": "19.0", + "name": "rendering.desktop/google_web_search_2018" + }, + { + "duration": "24.0", + "name": "rendering.desktop/gpu_bound_shader.html" + }, + { + "duration": "24.0", + "name": "rendering.desktop/guimark_vector_chart" + }, + { + "duration": "24.0", + "name": "rendering.desktop/hakim" + }, + { + "duration": "24.0", + "name": "rendering.desktop/hw_accelerated_canvas_to_sw_canvas.html" + }, + { + "duration": "36.0", + "name": "rendering.desktop/ie_chalkboard" + }, + { + "duration": "26.0", + "name": "rendering.desktop/ie_pirate_mark" + }, + { + "duration": "25.0", + "name": "rendering.desktop/infinite_scroll_element_n_layers_99" + }, + { + "duration": "26.0", + "name": "rendering.desktop/infinite_scroll_root_fixed_n_layers_99" + }, + { + "duration": "25.0", + "name": "rendering.desktop/infinite_scroll_root_n_layers_99" + }, + { + "duration": "24.0", + "name": "rendering.desktop/jarro_doverson" + }, + { + "duration": "19.0", + "name": "rendering.desktop/jpeg_decoding_rgb_and_gpu_rasterization" + }, + { + "duration": "20.0", + "name": "rendering.desktop/jpeg_decoding_yuv_and_gpu_rasterization" + }, + { + "duration": "28.0", + "name": "rendering.desktop/js_full_screen_invalidation" + }, + { + "duration": "27.0", + "name": "rendering.desktop/js_opacity_plus_n_layers_99" + }, + { + "duration": "27.0", + "name": "rendering.desktop/js_paint_plus_n_layers_99" + }, + { + "duration": "27.0", + "name": "rendering.desktop/js_poster_circle" + }, + { + "duration": "26.0", + "name": "rendering.desktop/js_scroll_text_only" + }, + { + "duration": "24.0", + "name": "rendering.desktop/kevs_3d" + }, + { + "duration": "23.0", + "name": "rendering.desktop/keyframed_animations" + }, + { + "duration": "24.0", + "name": "rendering.desktop/large_texture_uploads" + }, + { + "duration": "20.0", + "name": "rendering.desktop/linkedin_2018" + }, + { + "duration": "21.0", + "name": "rendering.desktop/linkedin_pinch_2018" + }, + { + "duration": "63.0", + "name": "rendering.desktop/lost_crypt" + }, + { + "duration": "56.0", + "name": "rendering.desktop/lost_crypt_fast_call" + }, + { + "duration": "24.0", + "name": "rendering.desktop/main_0fps_impl_60fps" + }, + { + "duration": "24.0", + "name": "rendering.desktop/main_0fps_impl_60fps_no_update" + }, + { + "duration": "24.0", + "name": "rendering.desktop/main_0fps_impl_60fps_no_update_jank" + }, + { + "duration": "24.0", + "name": "rendering.desktop/main_0fps_with_jank_impl_0fps" + }, + { + "duration": "24.0", + "name": "rendering.desktop/main_15fps_impl_0fps" + }, + { + "duration": "24.0", + "name": "rendering.desktop/main_15fps_with_jank_impl_0fps" + }, + { + "duration": "24.0", + "name": "rendering.desktop/main_30fps_impl_0fps" + }, + { + "duration": "24.0", + "name": "rendering.desktop/main_30fps_impl_60fps" + }, + { + "duration": "24.0", + "name": "rendering.desktop/main_60fps_impl_0fps" + }, + { + "duration": "24.0", + "name": "rendering.desktop/main_60fps_impl_60fps" + }, + { + "duration": "24.0", + "name": "rendering.desktop/main_60fps_impl_60fps_no_update" + }, + { + "duration": "24.0", + "name": "rendering.desktop/main_60fps_impl_60fps_no_update_jank" + }, + { + "duration": "41.0", + "name": "rendering.desktop/main_60fps_with_extreme_jank_impl_0fps" + }, + { + "duration": "24.0", + "name": "rendering.desktop/main_60fps_with_jank_and_delay_impl_60fps" + }, + { + "duration": "24.0", + "name": "rendering.desktop/main_60fps_with_jank_impl_0fps" + }, + { + "duration": "24.0", + "name": "rendering.desktop/main_animations_half_presented" + }, + { + "duration": "23.0", + "name": "rendering.desktop/man_in_blue" + }, + { + "duration": "24.0", + "name": "rendering.desktop/many_images" + }, + { + "duration": "26.0", + "name": "rendering.desktop/many_planets_deep" + }, + { + "duration": "23.0", + "name": "rendering.desktop/maps_move_2018" + }, + { + "duration": "23.0", + "name": "rendering.desktop/maps_perf_test" + }, + { + "duration": "23.0", + "name": "rendering.desktop/medium_texture_uploads" + }, + { + "duration": "24.0", + "name": "rendering.desktop/megi_dish" + }, + { + "duration": "56.0", + "name": "rendering.desktop/microgame_fps" + }, + { + "duration": "56.0", + "name": "rendering.desktop/microgame_fps_fast_call" + }, + { + "duration": "24.0", + "name": "rendering.desktop/microsoft_asteroid_belt" + }, + { + "duration": "24.0", + "name": "rendering.desktop/microsoft_fireflies" + }, + { + "duration": "24.0", + "name": "rendering.desktop/microsoft_fish_ie_tank" + }, + { + "duration": "25.0", + "name": "rendering.desktop/microsoft_performance" + }, + { + "duration": "24.0", + "name": "rendering.desktop/microsoft_snow" + }, + { + "duration": "24.0", + "name": "rendering.desktop/microsoft_speed_reading" + }, + { + "duration": "24.0", + "name": "rendering.desktop/microsoft_tweet_map" + }, + { + "duration": "24.0", + "name": "rendering.desktop/microsoft_video_city" + }, + { + "duration": "24.0", + "name": "rendering.desktop/microsoft_worker_fountains" + }, + { + "duration": "24.0", + "name": "rendering.desktop/mix_10k" + }, + { + "duration": "11.0", + "name": "rendering.desktop/mix_blend_mode_animation_difference" + }, + { + "duration": "11.0", + "name": "rendering.desktop/mix_blend_mode_animation_hue" + }, + { + "duration": "23.0", + "name": "rendering.desktop/mix_blend_mode_animation_propagating_isolation" + }, + { + "duration": "23.0", + "name": "rendering.desktop/mix_blend_mode_animation_screen" + }, + { + "duration": "24.0", + "name": "rendering.desktop/motion_mark_canvas_fill_shapes" + }, + { + "duration": "24.0", + "name": "rendering.desktop/motion_mark_canvas_stroke_shapes" + }, + { + "duration": "27.0", + "name": "rendering.desktop/new_tilings" + }, + { + "duration": "26.0", + "name": "rendering.desktop/nvidia_vertex_buffer_object" + }, + { + "duration": "24.0", + "name": "rendering.desktop/off_screen_main_60fps" + }, + { + "duration": "24.0", + "name": "rendering.desktop/off_screen_main_60fps_jank" + }, + { + "duration": "24.0", + "name": "rendering.desktop/overlay_background_color_css_transitions_page" + }, + { + "duration": "26.0", + "name": "rendering.desktop/particles" + }, + { + "duration": "22.0", + "name": "rendering.desktop/pinterest_2018" + }, + { + "duration": "24.0", + "name": "rendering.desktop/put_and_create_imagebitmap_from_imagedata" + }, + { + "duration": "24.0", + "name": "rendering.desktop/put_get_image_data" + }, + { + "duration": "24.0", + "name": "rendering.desktop/put_image_data.html" + }, + { + "duration": "21.0", + "name": "rendering.desktop/raf" + }, + { + "duration": "21.0", + "name": "rendering.desktop/raf_animation" + }, + { + "duration": "20.0", + "name": "rendering.desktop/raf_canvas" + }, + { + "duration": "21.0", + "name": "rendering.desktop/raf_touch_animation" + }, + { + "duration": "22.0", + "name": "rendering.desktop/repaint_amazon_2018" + }, + { + "duration": "20.0", + "name": "rendering.desktop/repaint_cnn_2018" + }, + { + "duration": "21.0", + "name": "rendering.desktop/repaint_facebook_2018" + }, + { + "duration": "20.0", + "name": "rendering.desktop/repaint_google_search_2018" + }, + { + "duration": "20.0", + "name": "rendering.desktop/repaint_instagram_2018" + }, + { + "duration": "20.0", + "name": "rendering.desktop/repaint_reddit_2018" + }, + { + "duration": "20.0", + "name": "rendering.desktop/repaint_theverge_2018" + }, + { + "duration": "20.0", + "name": "rendering.desktop/repaint_twitter_2018" + }, + { + "duration": "19.0", + "name": "rendering.desktop/repaint_wikipedia_2018" + }, + { + "duration": "20.0", + "name": "rendering.desktop/repaint_yahoo_homepage_2018" + }, + { + "duration": "24.0", + "name": "rendering.desktop/runway_2019" + }, + { + "duration": "26.0", + "name": "rendering.desktop/san_angeles" + }, + { + "duration": "19.0", + "name": "rendering.desktop/second_batch_js_heavy" + }, + { + "duration": "19.0", + "name": "rendering.desktop/second_batch_js_light" + }, + { + "duration": "19.0", + "name": "rendering.desktop/second_batch_js_medium" + }, + { + "duration": "24.0", + "name": "rendering.desktop/sheets_render.html" + }, + { + "duration": "21.0", + "name": "rendering.desktop/simple_text_page" + }, + { + "duration": "17.0", + "name": "rendering.desktop/simple_touch_drag" + }, + { + "duration": "64.0", + "name": "rendering.desktop/skelebuddies_wasm_2020" + }, + { + "duration": "57.0", + "name": "rendering.desktop/skelebuddies_wasm_2020_fast_call" + }, + { + "duration": "24.0", + "name": "rendering.desktop/small_texture_uploads" + }, + { + "duration": "27.0", + "name": "rendering.desktop/smash_cat" + }, + { + "duration": "24.0", + "name": "rendering.desktop/spielzeugz" + }, + { + "duration": "24.0", + "name": "rendering.desktop/static_canvas_to_hw_accelerated_canvas.html" + }, + { + "duration": "24.0", + "name": "rendering.desktop/static_webgl_to_hw_accelerated_canvas.html" + }, + { + "duration": "24.0", + "name": "rendering.desktop/stroke_shapes" + }, + { + "duration": "17.0", + "name": "rendering.desktop/sync_scroll_offset" + }, + { + "duration": "28.0", + "name": "rendering.desktop/techcrunch_2018" + }, + { + "duration": "34.0", + "name": "rendering.desktop/text_05000_pixels_per_second" + }, + { + "duration": "32.0", + "name": "rendering.desktop/text_10000_pixels_per_second" + }, + { + "duration": "30.0", + "name": "rendering.desktop/text_20000_pixels_per_second" + }, + { + "duration": "29.0", + "name": "rendering.desktop/text_40000_pixels_per_second" + }, + { + "duration": "29.0", + "name": "rendering.desktop/text_60000_pixels_per_second" + }, + { + "duration": "29.0", + "name": "rendering.desktop/text_75000_pixels_per_second" + }, + { + "duration": "29.0", + "name": "rendering.desktop/text_90000_pixels_per_second" + }, + { + "duration": "37.0", + "name": "rendering.desktop/text_constant_full_page_raster_05000_pixels_per_second" + }, + { + "duration": "32.0", + "name": "rendering.desktop/text_constant_full_page_raster_10000_pixels_per_second" + }, + { + "duration": "29.0", + "name": "rendering.desktop/text_constant_full_page_raster_20000_pixels_per_second" + }, + { + "duration": "30.0", + "name": "rendering.desktop/text_constant_full_page_raster_40000_pixels_per_second" + }, + { + "duration": "30.0", + "name": "rendering.desktop/text_constant_full_page_raster_60000_pixels_per_second" + }, + { + "duration": "29.0", + "name": "rendering.desktop/text_constant_full_page_raster_75000_pixels_per_second" + }, + { + "duration": "29.0", + "name": "rendering.desktop/text_constant_full_page_raster_90000_pixels_per_second" + }, + { + "duration": "34.0", + "name": "rendering.desktop/text_hover_05000_pixels_per_second" + }, + { + "duration": "32.0", + "name": "rendering.desktop/text_hover_10000_pixels_per_second" + }, + { + "duration": "30.0", + "name": "rendering.desktop/text_hover_20000_pixels_per_second" + }, + { + "duration": "29.0", + "name": "rendering.desktop/text_hover_40000_pixels_per_second" + }, + { + "duration": "29.0", + "name": "rendering.desktop/text_hover_60000_pixels_per_second" + }, + { + "duration": "29.0", + "name": "rendering.desktop/text_hover_75000_pixels_per_second" + }, + { + "duration": "29.0", + "name": "rendering.desktop/text_hover_90000_pixels_per_second" + }, + { + "duration": "27.0", + "name": "rendering.desktop/throughput_scrolling_active_handler" + }, + { + "duration": "27.0", + "name": "rendering.desktop/throughput_scrolling_composited" + }, + { + "duration": "27.0", + "name": "rendering.desktop/throughput_scrolling_passive_handler" + }, + { + "duration": "27.0", + "name": "rendering.desktop/throughput_scrolling_uncomposited" + }, + { + "duration": "57.0", + "name": "rendering.desktop/tiny_racing_v3_wasm_2020" + }, + { + "duration": "57.0", + "name": "rendering.desktop/tiny_racing_v3_wasm_2020_fast_call" + }, + { + "duration": "24.0", + "name": "rendering.desktop/toBlob_duration.html" + }, + { + "duration": "24.0", + "name": "rendering.desktop/toBlob_duration_jpeg.html" + }, + { + "duration": "24.0", + "name": "rendering.desktop/toBlob_small_canvas_in_worker.html" + }, + { + "duration": "21.0", + "name": "rendering.desktop/touch_handler_scrolling" + }, + { + "duration": "24.0", + "name": "rendering.desktop/transfer_from_imageBitmap.html" + }, + { + "duration": "24.0", + "name": "rendering.desktop/transform_transitions" + }, + { + "duration": "24.0", + "name": "rendering.desktop/transform_transitions_js_block" + }, + { + "duration": "20.0", + "name": "rendering.desktop/twitch_2018" + }, + { + "duration": "25.0", + "name": "rendering.desktop/twitch_pinch_2018" + }, + { + "duration": "22.0", + "name": "rendering.desktop/twitter_2018" + }, + { + "duration": "20.0", + "name": "rendering.desktop/twitter_pinch_2018" + }, + { + "duration": "24.0", + "name": "rendering.desktop/video_to_hw_accelerated_canvas" + }, + { + "duration": "24.0", + "name": "rendering.desktop/video_to_sub_texture" + }, + { + "duration": "24.0", + "name": "rendering.desktop/video_to_sub_texture_flip_and_premultiply" + }, + { + "duration": "24.0", + "name": "rendering.desktop/video_to_sub_texture_flip_y" + }, + { + "duration": "24.0", + "name": "rendering.desktop/video_to_sub_texture_premultiply" + }, + { + "duration": "24.0", + "name": "rendering.desktop/video_to_texture" + }, + { + "duration": "24.0", + "name": "rendering.desktop/web_animation_value_type_color" + }, + { + "duration": "24.0", + "name": "rendering.desktop/web_animation_value_type_length_3d" + }, + { + "duration": "24.0", + "name": "rendering.desktop/web_animation_value_type_length_complex" + }, + { + "duration": "24.0", + "name": "rendering.desktop/web_animation_value_type_length_simple" + }, + { + "duration": "24.0", + "name": "rendering.desktop/web_animation_value_type_path" + }, + { + "duration": "24.0", + "name": "rendering.desktop/web_animation_value_type_shadow" + }, + { + "duration": "24.0", + "name": "rendering.desktop/web_animation_value_type_transform_complex" + }, + { + "duration": "24.0", + "name": "rendering.desktop/web_animation_value_type_transform_simple" + }, + { + "duration": "24.0", + "name": "rendering.desktop/web_animations_many_keyframes" + }, + { + "duration": "24.0", + "name": "rendering.desktop/web_animations_set_current_time" + }, + { + "duration": "24.0", + "name": "rendering.desktop/web_animations_simultaneous" + }, + { + "duration": "25.0", + "name": "rendering.desktop/web_animations_staggered_chaining" + }, + { + "duration": "24.0", + "name": "rendering.desktop/web_animations_staggered_infinite_iterations" + }, + { + "duration": "25.0", + "name": "rendering.desktop/web_animations_staggered_triggering_page" + }, + { + "duration": "24.0", + "name": "rendering.desktop/webgl_to_texture" + }, + { + "duration": "20.0", + "name": "rendering.desktop/webp_decoding_rgb_and_gpu_rasterization" + }, + { + "duration": "20.0", + "name": "rendering.desktop/webp_decoding_yuv_and_gpu_rasterization" + }, + { + "duration": "22.0", + "name": "rendering.desktop/wikipedia_2018" + }, + { + "duration": "22.0", + "name": "rendering.desktop/wordpress_2018" + }, + { + "duration": "19.0", + "name": "rendering.desktop/yahoo_answers_2018" + }, + { + "duration": "20.0", + "name": "rendering.desktop/yahoo_news_2018" + }, + { + "duration": "21.0", + "name": "rendering.desktop/yahoo_news_pinch_2018" + }, + { + "duration": "21.0", + "name": "rendering.desktop/yahoo_sports_2018" + }, + { + "duration": "20.0", + "name": "rendering.desktop/yahoo_sports_pinch_2018" + }, + { + "duration": "11.0", + "name": "rendering.desktop/youtube_2018" + }, + { + "duration": "11.0", + "name": "rendering.desktop/youtube_pinch_2018" + }, + { + "duration": "34.0", + "name": "speedometer-future/http://browserbench.org/Speedometer/" + }, + { + "duration": "32.0", + "name": "speedometer/http://browserbench.org/Speedometer/" + }, + { + "duration": "69.0", + "name": "speedometer2-future/Speedometer2" + }, + { + "duration": "62.0", + "name": "speedometer2-pcscan/Speedometer2" + }, + { + "duration": "63.0", + "name": "speedometer2/Speedometer2" + }, + { + "duration": "44.0", + "name": "system_health.common_desktop/browse:media:googleplaystore:2018" + }, + { + "duration": "75.0", + "name": "system_health.common_desktop/browse:media:imgur" + }, + { + "duration": "96.0", + "name": "system_health.common_desktop/browse:media:pinterest:2018" + }, + { + "duration": "65.0", + "name": "system_health.common_desktop/browse:media:tumblr:2018" + }, + { + "duration": "9.0", + "name": "system_health.common_desktop/browse:media:youtube:2019" + }, + { + "duration": "72.0", + "name": "system_health.common_desktop/browse:media:youtubetv:2019" + }, + { + "duration": "78.0", + "name": "system_health.common_desktop/browse:media:youtubetv_watch:2020" + }, + { + "duration": "47.0", + "name": "system_health.common_desktop/browse:news:cnn:2020" + }, + { + "duration": "55.0", + "name": "system_health.common_desktop/browse:news:flipboard:2018" + }, + { + "duration": "9.0", + "name": "system_health.common_desktop/browse:news:hackernews:2020" + }, + { + "duration": "68.0", + "name": "system_health.common_desktop/browse:news:nytimes:2020" + }, + { + "duration": "55.0", + "name": "system_health.common_desktop/browse:news:reddit:2020" + }, + { + "duration": "54.0", + "name": "system_health.common_desktop/browse:search:google:2020" + }, + { + "duration": "39.0", + "name": "system_health.common_desktop/browse:search:google_india:2018" + }, + { + "duration": "74.0", + "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll:2018" + }, + { + "duration": "64.0", + "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll:2018" + }, + { + "duration": "53.0", + "name": "system_health.common_desktop/browse:social:twitter:2018" + }, + { + "duration": "70.0", + "name": "system_health.common_desktop/browse:social:twitter_infinite_scroll:2018" + }, + { + "duration": "67.0", + "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll:2018" + }, + { + "duration": "40.0", + "name": "system_health.common_desktop/browse:tools:docs_scrolling" + }, + { + "duration": "72.0", + "name": "system_health.common_desktop/browse:tools:earth:2020" + }, + { + "duration": "9.0", + "name": "system_health.common_desktop/browse:tools:gmail-compose:2020" + }, + { + "duration": "9.0", + "name": "system_health.common_desktop/browse:tools:gmail-labelclick:2020" + }, + { + "duration": "9.0", + "name": "system_health.common_desktop/browse:tools:gmail-openconversation:2020" + }, + { + "duration": "9.0", + "name": "system_health.common_desktop/browse:tools:gmail-search:2020" + }, + { + "duration": "9.0", + "name": "system_health.common_desktop/browse:tools:maps:2019" + }, + { + "duration": "33.0", + "name": "system_health.common_desktop/browse:tools:sheets:2019" + }, + { + "duration": "9.0", + "name": "system_health.common_desktop/browse_accessibility:media:youtube" + }, + { + "duration": "33.0", + "name": "system_health.common_desktop/browse_accessibility:tech:codesearch:2018" + }, + { + "duration": "23.0", + "name": "system_health.common_desktop/load:chrome:blank" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:games:alphabetty:2018" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:games:bubbles:2020" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:games:lazors" + }, + { + "duration": "23.0", + "name": "system_health.common_desktop/load:games:miniclip:2018" + }, + { + "duration": "31.0", + "name": "system_health.common_desktop/load:games:spychase:2018" + }, + { + "duration": "24.0", + "name": "system_health.common_desktop/load:media:9gag" + }, + { + "duration": "23.0", + "name": "system_health.common_desktop/load:media:dailymotion:2019" + }, + { + "duration": "23.0", + "name": "system_health.common_desktop/load:media:facebook_feed:desktop:2020" + }, + { + "duration": "23.0", + "name": "system_health.common_desktop/load:media:facebook_photos:2018" + }, + { + "duration": "23.0", + "name": "system_health.common_desktop/load:media:facebook_photos:desktop:2020" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:media:flickr:2018" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:media:google_images:2018" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:media:imgur:2018" + }, + { + "duration": "23.0", + "name": "system_health.common_desktop/load:media:soundcloud:2018" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:media:youtube:2018" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:media:youtubelivingroom:2020" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:news:bbc:2018" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:news:cnn:2020" + }, + { + "duration": "23.0", + "name": "system_health.common_desktop/load:news:flipboard" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:news:hackernews:2018" + }, + { + "duration": "24.0", + "name": "system_health.common_desktop/load:news:nytimes:2018" + }, + { + "duration": "23.0", + "name": "system_health.common_desktop/load:news:qq:2018" + }, + { + "duration": "23.0", + "name": "system_health.common_desktop/load:news:reddit:2018" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:news:wikipedia:2018" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:search:amazon:2018" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:search:baidu:2018" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:search:ebay:2018" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:search:flipkart:2018" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:search:google:2018" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:search:taobao:2018" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:search:yahoo:2018" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:search:yandex:2018" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:social:instagram:2018" + }, + { + "duration": "23.0", + "name": "system_health.common_desktop/load:social:pinterest:2019" + }, + { + "duration": "23.0", + "name": "system_health.common_desktop/load:social:vk:2018" + }, + { + "duration": "33.0", + "name": "system_health.common_desktop/load:tools:chat:2020" + }, + { + "duration": "24.0", + "name": "system_health.common_desktop/load:tools:docs:2019" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:tools:drive:2019" + }, + { + "duration": "34.0", + "name": "system_health.common_desktop/load:tools:gmail:2019" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:tools:stackoverflow:2018" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load:tools:weather:2019" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load_accessibility:media:wikipedia:2018" + }, + { + "duration": "22.0", + "name": "system_health.common_desktop/load_accessibility:shopping:amazon:2018" + }, + { + "duration": "134.0", + "name": "system_health.common_desktop/long_running:tools:gmail-background" + }, + { + "duration": "9.0", + "name": "system_health.common_desktop/long_running:tools:gmail-foreground" + }, + { + "duration": "9.0", + "name": "system_health.common_desktop/multitab:misc:typical24" + }, + { + "duration": "9.0", + "name": "system_health.common_desktop/multitab:misc:typical24:2018" + }, + { + "duration": "51.0", + "name": "system_health.common_desktop/play:media:google_play_music" + }, + { + "duration": "48.0", + "name": "system_health.common_desktop/play:media:soundcloud:2018" + }, + { + "duration": "39.0", + "name": "system_health.memory_desktop/browse:media:googleplaystore:2018" + }, + { + "duration": "70.0", + "name": "system_health.memory_desktop/browse:media:imgur" + }, + { + "duration": "92.0", + "name": "system_health.memory_desktop/browse:media:pinterest:2018" + }, + { + "duration": "60.0", + "name": "system_health.memory_desktop/browse:media:tumblr:2018" + }, + { + "duration": "5.0", + "name": "system_health.memory_desktop/browse:media:youtube:2019" + }, + { + "duration": "67.0", + "name": "system_health.memory_desktop/browse:media:youtubetv:2019" + }, + { + "duration": "74.0", + "name": "system_health.memory_desktop/browse:media:youtubetv_watch:2020" + }, + { + "duration": "42.0", + "name": "system_health.memory_desktop/browse:news:cnn:2020" + }, + { + "duration": "49.0", + "name": "system_health.memory_desktop/browse:news:flipboard:2018" + }, + { + "duration": "53.0", + "name": "system_health.memory_desktop/browse:news:hackernews:2020" + }, + { + "duration": "61.0", + "name": "system_health.memory_desktop/browse:news:nytimes:2020" + }, + { + "duration": "51.0", + "name": "system_health.memory_desktop/browse:news:reddit:2020" + }, + { + "duration": "49.0", + "name": "system_health.memory_desktop/browse:search:google:2020" + }, + { + "duration": "35.0", + "name": "system_health.memory_desktop/browse:search:google_india:2018" + }, + { + "duration": "68.0", + "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll:2018" + }, + { + "duration": "59.0", + "name": "system_health.memory_desktop/browse:social:tumblr_infinite_scroll:2018" + }, + { + "duration": "48.0", + "name": "system_health.memory_desktop/browse:social:twitter:2018" + }, + { + "duration": "65.0", + "name": "system_health.memory_desktop/browse:social:twitter_infinite_scroll:2018" + }, + { + "duration": "62.0", + "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll:2018" + }, + { + "duration": "36.0", + "name": "system_health.memory_desktop/browse:tools:docs_scrolling" + }, + { + "duration": "5.0", + "name": "system_health.memory_desktop/browse:tools:earth:2020" + }, + { + "duration": "5.0", + "name": "system_health.memory_desktop/browse:tools:gmail-compose:2020" + }, + { + "duration": "5.0", + "name": "system_health.memory_desktop/browse:tools:gmail-labelclick:2020" + }, + { + "duration": "5.0", + "name": "system_health.memory_desktop/browse:tools:gmail-openconversation:2020" + }, + { + "duration": "5.0", + "name": "system_health.memory_desktop/browse:tools:gmail-search:2020" + }, + { + "duration": "5.0", + "name": "system_health.memory_desktop/browse:tools:maps:2019" + }, + { + "duration": "29.0", + "name": "system_health.memory_desktop/browse:tools:sheets:2019" + }, + { + "duration": "5.0", + "name": "system_health.memory_desktop/browse_accessibility:media:youtube" + }, + { + "duration": "32.0", + "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch:2018" + }, + { + "duration": "18.0", + "name": "system_health.memory_desktop/load:chrome:blank" + }, + { + "duration": "18.0", + "name": "system_health.memory_desktop/load:games:alphabetty:2018" + }, + { + "duration": "18.0", + "name": "system_health.memory_desktop/load:games:bubbles:2020" + }, + { + "duration": "18.0", + "name": "system_health.memory_desktop/load:games:lazors" + }, + { + "duration": "19.0", + "name": "system_health.memory_desktop/load:games:miniclip:2018" + }, + { + "duration": "25.0", + "name": "system_health.memory_desktop/load:games:spychase:2018" + }, + { + "duration": "19.0", + "name": "system_health.memory_desktop/load:media:9gag" + }, + { + "duration": "19.0", + "name": "system_health.memory_desktop/load:media:dailymotion:2019" + }, + { + "duration": "19.0", + "name": "system_health.memory_desktop/load:media:facebook_feed:desktop:2020" + }, + { + "duration": "19.0", + "name": "system_health.memory_desktop/load:media:facebook_photos:2018" + }, + { + "duration": "19.0", + "name": "system_health.memory_desktop/load:media:facebook_photos:desktop:2020" + }, + { + "duration": "19.0", + "name": "system_health.memory_desktop/load:media:flickr:2018" + }, + { + "duration": "18.0", + "name": "system_health.memory_desktop/load:media:google_images:2018" + }, + { + "duration": "19.0", + "name": "system_health.memory_desktop/load:media:imgur:2018" + }, + { + "duration": "19.0", + "name": "system_health.memory_desktop/load:media:soundcloud:2018" + }, + { + "duration": "18.0", + "name": "system_health.memory_desktop/load:media:youtube:2018" + }, + { + "duration": "18.0", + "name": "system_health.memory_desktop/load:media:youtubelivingroom:2020" + }, + { + "duration": "18.0", + "name": "system_health.memory_desktop/load:news:bbc:2018" + }, + { + "duration": "19.0", + "name": "system_health.memory_desktop/load:news:cnn:2020" + }, + { + "duration": "19.0", + "name": "system_health.memory_desktop/load:news:flipboard" + }, + { + "duration": "18.0", + "name": "system_health.memory_desktop/load:news:hackernews:2018" + }, + { + "duration": "20.0", + "name": "system_health.memory_desktop/load:news:nytimes:2018" + }, + { + "duration": "19.0", + "name": "system_health.memory_desktop/load:news:qq:2018" + }, + { + "duration": "19.0", + "name": "system_health.memory_desktop/load:news:reddit:2018" + }, + { + "duration": "19.0", + "name": "system_health.memory_desktop/load:news:wikipedia:2018" + }, + { + "duration": "18.0", + "name": "system_health.memory_desktop/load:search:amazon:2018" + }, + { + "duration": "18.0", + "name": "system_health.memory_desktop/load:search:baidu:2018" + }, + { + "duration": "18.0", + "name": "system_health.memory_desktop/load:search:ebay:2018" + }, + { + "duration": "19.0", + "name": "system_health.memory_desktop/load:search:flipkart:2018" + }, + { + "duration": "18.0", + "name": "system_health.memory_desktop/load:search:google:2018" + }, + { + "duration": "18.0", + "name": "system_health.memory_desktop/load:search:taobao:2018" + }, + { + "duration": "18.0", + "name": "system_health.memory_desktop/load:search:yahoo:2018" + }, + { + "duration": "18.0", + "name": "system_health.memory_desktop/load:search:yandex:2018" + }, + { + "duration": "18.0", + "name": "system_health.memory_desktop/load:social:instagram:2018" + }, + { + "duration": "19.0", + "name": "system_health.memory_desktop/load:social:pinterest:2019" + }, + { + "duration": "18.0", + "name": "system_health.memory_desktop/load:social:vk:2018" + }, + { + "duration": "29.0", + "name": "system_health.memory_desktop/load:tools:chat:2020" + }, + { + "duration": "20.0", + "name": "system_health.memory_desktop/load:tools:docs:2019" + }, + { + "duration": "18.0", + "name": "system_health.memory_desktop/load:tools:drive:2019" + }, + { + "duration": "29.0", + "name": "system_health.memory_desktop/load:tools:gmail:2019" + }, + { + "duration": "18.0", + "name": "system_health.memory_desktop/load:tools:stackoverflow:2018" + }, + { + "duration": "18.0", + "name": "system_health.memory_desktop/load:tools:weather:2019" + }, + { + "duration": "18.0", + "name": "system_health.memory_desktop/load_accessibility:media:wikipedia:2018" + }, + { + "duration": "20.0", + "name": "system_health.memory_desktop/load_accessibility:shopping:amazon:2018" + }, + { + "duration": "5.0", + "name": "system_health.memory_desktop/long_running:tools:gmail-background" + }, + { + "duration": "5.0", + "name": "system_health.memory_desktop/long_running:tools:gmail-foreground" + }, + { + "duration": "5.0", + "name": "system_health.memory_desktop/multitab:misc:typical24" + }, + { + "duration": "5.0", + "name": "system_health.memory_desktop/multitab:misc:typical24:2018" + }, + { + "duration": "5.0", + "name": "system_health.memory_desktop/play:media:google_play_music" + }, + { + "duration": "43.0", + "name": "system_health.memory_desktop/play:media:soundcloud:2018" + }, + { + "duration": "46.0", + "name": "tab_search/tab_search:close_and_open:2020" + }, + { + "duration": "120.0", + "name": "tab_search/tab_search:scroll_up_and_down:2020" + }, + { + "duration": "118.0", + "name": "tab_search/tab_search:top100:2020" + }, + { + "duration": "104.0", + "name": "tab_search/tab_search:top100:loading:2020" + }, + { + "duration": "78.0", + "name": "tab_search/tab_search:top10:2020" + }, + { + "duration": "40.0", + "name": "tab_search/tab_search:top10:loading:2020" + }, + { + "duration": "79.0", + "name": "tab_search/tab_search:top50:2020" + }, + { + "duration": "67.0", + "name": "tab_search/tab_search:top50:loading:2020" + }, + { + "duration": "0.0", + "name": "tab_switching.typical_25/multitab:misc:typical24" + }, + { + "duration": "14.0", + "name": "tracing.tracing_with_background_memory_infra/Facebook" + }, + { + "duration": "15.0", + "name": "tracing.tracing_with_background_memory_infra/Wikipedia" + }, + { + "duration": "13.0", + "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com" + }, + { + "duration": "14.0", + "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/" + }, + { + "duration": "14.0", + "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/" + }, + { + "duration": "14.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": "17.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": "51.0", + "name": "v8.browsing_desktop-future/browse:media:googleplaystore:2018" + }, + { + "duration": "16.0", + "name": "v8.browsing_desktop-future/browse:media:imgur" + }, + { + "duration": "104.0", + "name": "v8.browsing_desktop-future/browse:media:pinterest:2018" + }, + { + "duration": "72.0", + "name": "v8.browsing_desktop-future/browse:media:tumblr:2018" + }, + { + "duration": "16.0", + "name": "v8.browsing_desktop-future/browse:media:youtube:2019" + }, + { + "duration": "79.0", + "name": "v8.browsing_desktop-future/browse:media:youtubetv:2019" + }, + { + "duration": "85.0", + "name": "v8.browsing_desktop-future/browse:media:youtubetv_watch:2020" + }, + { + "duration": "16.0", + "name": "v8.browsing_desktop-future/browse:news:cnn:2020" + }, + { + "duration": "61.0", + "name": "v8.browsing_desktop-future/browse:news:flipboard:2018" + }, + { + "duration": "16.0", + "name": "v8.browsing_desktop-future/browse:news:hackernews:2020" + }, + { + "duration": "16.0", + "name": "v8.browsing_desktop-future/browse:news:nytimes:2020" + }, + { + "duration": "63.0", + "name": "v8.browsing_desktop-future/browse:news:reddit:2020" + }, + { + "duration": "61.0", + "name": "v8.browsing_desktop-future/browse:search:google:2020" + }, + { + "duration": "46.0", + "name": "v8.browsing_desktop-future/browse:search:google_india:2018" + }, + { + "duration": "83.0", + "name": "v8.browsing_desktop-future/browse:social:facebook_infinite_scroll:2018" + }, + { + "duration": "71.0", + "name": "v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll:2018" + }, + { + "duration": "60.0", + "name": "v8.browsing_desktop-future/browse:social:twitter:2018" + }, + { + "duration": "77.0", + "name": "v8.browsing_desktop-future/browse:social:twitter_infinite_scroll:2018" + }, + { + "duration": "74.0", + "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll:2018" + }, + { + "duration": "47.0", + "name": "v8.browsing_desktop-future/browse:tools:docs_scrolling" + }, + { + "duration": "80.0", + "name": "v8.browsing_desktop-future/browse:tools:earth:2020" + }, + { + "duration": "16.0", + "name": "v8.browsing_desktop-future/browse:tools:gmail-compose:2020" + }, + { + "duration": "16.0", + "name": "v8.browsing_desktop-future/browse:tools:gmail-labelclick:2020" + }, + { + "duration": "16.0", + "name": "v8.browsing_desktop-future/browse:tools:gmail-openconversation:2020" + }, + { + "duration": "16.0", + "name": "v8.browsing_desktop-future/browse:tools:gmail-search:2020" + }, + { + "duration": "16.0", + "name": "v8.browsing_desktop-future/browse:tools:maps:2019" + }, + { + "duration": "41.0", + "name": "v8.browsing_desktop-future/browse:tools:sheets:2019" + }, + { + "duration": "53.0", + "name": "v8.browsing_desktop/browse:media:googleplaystore:2018" + }, + { + "duration": "17.0", + "name": "v8.browsing_desktop/browse:media:imgur" + }, + { + "duration": "106.0", + "name": "v8.browsing_desktop/browse:media:pinterest:2018" + }, + { + "duration": "74.0", + "name": "v8.browsing_desktop/browse:media:tumblr:2018" + }, + { + "duration": "17.0", + "name": "v8.browsing_desktop/browse:media:youtube:2019" + }, + { + "duration": "80.0", + "name": "v8.browsing_desktop/browse:media:youtubetv:2019" + }, + { + "duration": "87.0", + "name": "v8.browsing_desktop/browse:media:youtubetv_watch:2020" + }, + { + "duration": "59.0", + "name": "v8.browsing_desktop/browse:news:cnn:2020" + }, + { + "duration": "63.0", + "name": "v8.browsing_desktop/browse:news:flipboard:2018" + }, + { + "duration": "17.0", + "name": "v8.browsing_desktop/browse:news:hackernews:2020" + }, + { + "duration": "17.0", + "name": "v8.browsing_desktop/browse:news:nytimes:2020" + }, + { + "duration": "65.0", + "name": "v8.browsing_desktop/browse:news:reddit:2020" + }, + { + "duration": "63.0", + "name": "v8.browsing_desktop/browse:search:google:2020" + }, + { + "duration": "48.0", + "name": "v8.browsing_desktop/browse:search:google_india:2018" + }, + { + "duration": "85.0", + "name": "v8.browsing_desktop/browse:social:facebook_infinite_scroll:2018" + }, + { + "duration": "73.0", + "name": "v8.browsing_desktop/browse:social:tumblr_infinite_scroll:2018" + }, + { + "duration": "62.0", + "name": "v8.browsing_desktop/browse:social:twitter:2018" + }, + { + "duration": "79.0", + "name": "v8.browsing_desktop/browse:social:twitter_infinite_scroll:2018" + }, + { + "duration": "76.0", + "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll:2018" + }, + { + "duration": "49.0", + "name": "v8.browsing_desktop/browse:tools:docs_scrolling" + }, + { + "duration": "82.0", + "name": "v8.browsing_desktop/browse:tools:earth:2020" + }, + { + "duration": "17.0", + "name": "v8.browsing_desktop/browse:tools:gmail-compose:2020" + }, + { + "duration": "17.0", + "name": "v8.browsing_desktop/browse:tools:gmail-labelclick:2020" + }, + { + "duration": "17.0", + "name": "v8.browsing_desktop/browse:tools:gmail-openconversation:2020" + }, + { + "duration": "17.0", + "name": "v8.browsing_desktop/browse:tools:gmail-search:2020" + }, + { + "duration": "17.0", + "name": "v8.browsing_desktop/browse:tools:maps:2019" + }, + { + "duration": "43.0", + "name": "v8.browsing_desktop/browse:tools:sheets:2019" + }, + { + "duration": "27.0", + "name": "webrtc/10s_datachannel_transfer" + }, + { + "duration": "26.0", + "name": "webrtc/canvas_capture_peer_connection" + }, + { + "duration": "36.0", + "name": "webrtc/codec_constraints_h264" + }, + { + "duration": "36.0", + "name": "webrtc/codec_constraints_vp8" + }, + { + "duration": "36.0", + "name": "webrtc/codec_constraints_vp9" + }, + { + "duration": "26.0", + "name": "webrtc/hd_local_stream_10s" + }, + { + "duration": "26.0", + "name": "webrtc/insertable_streams_video_processing_camera_canvas2d_video" + }, + { + "duration": "26.0", + "name": "webrtc/insertable_streams_video_processing_camera_drop_video" + }, + { + "duration": "26.0", + "name": "webrtc/insertable_streams_video_processing_camera_webgl_pc" + }, + { + "duration": "26.0", + "name": "webrtc/insertable_streams_video_processing_camera_webgl_video" + }, + { + "duration": "26.0", + "name": "webrtc/insertable_streams_video_processing_pc_webgl_video" + }, + { + "duration": "26.0", + "name": "webrtc/insertable_streams_video_processing_video_webgl_video" + }, + { + "duration": "37.0", + "name": "webrtc/multiple_peerconnections" + }, + { + "duration": "39.0", + "name": "webrtc/pause_play_peerconnections" + }, + { "duration": "300.0", "name": "base_perftests/_gtest_" }, { - "duration": "330.0", - "name": "dawn_perf_tests/_gtest_" - }, - { "duration": "16.0", "name": "media_perftests/_gtest_" }, { - "duration": "190.0", - "name": "performance_browser_tests/_gtest_" + "duration": "330.0", + "name": "dawn_perf_tests/_gtest_" }, { "duration": "7.0", "name": "views_perftests/_gtest_" + }, + { + "duration": "190.0", + "name": "performance_browser_tests/_gtest_" } ] \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/mac-m1_mini_2020-perf_timing.json b/tools/perf/core/shard_maps/timing_data/mac-m1_mini_2020-perf_timing.json index 0637a08..b9f44c8 100644 --- a/tools/perf/core/shard_maps/timing_data/mac-m1_mini_2020-perf_timing.json +++ b/tools/perf/core/shard_maps/timing_data/mac-m1_mini_2020-perf_timing.json
@@ -1 +1,42 @@ -[] \ No newline at end of file +[ + { + "duration": "28.0", + "name": "loading.desktop/AirBnB_warm" + }, + { + "duration": "22.0", + "name": "loading.desktop/Aljayyash_cold" + }, + { + "duration": "20.0", + "name": "loading.desktop/AllRecipes_cold" + }, + { + "duration": "16.0", + "name": "loading.desktop/Baidu_warm" + }, + { + "duration": "16.0", + "name": "loading.desktop/Naver_cold" + }, + { + "duration": "15.0", + "name": "loading.desktop/Orange_cold" + }, + { + "duration": "16.0", + "name": "loading.desktop/Orange_warm" + }, + { + "duration": "31.0", + "name": "loading.desktop/Taobao_warm" + }, + { + "duration": "17.0", + "name": "loading.desktop/TheOnion_cold" + }, + { + "duration": "16.0", + "name": "loading.desktop/ru.wikipedia_warm" + } +] \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/win-10-perf_timing.json b/tools/perf/core/shard_maps/timing_data/win-10-perf_timing.json index 423c1ed..2bb18979 100644 --- a/tools/perf/core/shard_maps/timing_data/win-10-perf_timing.json +++ b/tools/perf/core/shard_maps/timing_data/win-10-perf_timing.json
@@ -1,34 +1,34 @@ [ { - "duration": "35.0", + "duration": "18.0", "name": "blink_perf.accessibility/build-table.html" }, { - "duration": "19.0", + "duration": "16.0", "name": "blink_perf.accessibility/focus-links.html" }, { - "duration": "18.0", + "duration": "17.0", "name": "blink_perf.accessibility/line-breaks.html" }, { - "duration": "22.0", + "duration": "20.0", "name": "blink_perf.accessibility/many-text-changes-deep-block-subtree.html" }, { - "duration": "20.0", + "duration": "19.0", "name": "blink_perf.accessibility/many-text-changes-deep-hidden-subtree.html" }, { - "duration": "20.0", + "duration": "18.0", "name": "blink_perf.accessibility/many-text-changes-deep-inline-subtree.html" }, { - "duration": "22.0", + "duration": "21.0", "name": "blink_perf.accessibility/many-text-changes-small-wait-between.html" }, { - "duration": "18.0", + "duration": "16.0", "name": "blink_perf.accessibility/textarea-append.html" }, { @@ -40,7 +40,7 @@ "name": "blink_perf.bindings/create-element.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.bindings/document-implementation.html" }, { @@ -60,7 +60,7 @@ "name": "blink_perf.bindings/gc-mini-tree.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.bindings/gc-tree.html" }, { @@ -100,7 +100,7 @@ "name": "blink_perf.bindings/named-property-enumerator.html" }, { - "duration": "15.0", + "duration": "14.0", "name": "blink_perf.bindings/node-list-access.html" }, { @@ -192,15 +192,15 @@ "name": "blink_perf.bindings/worker-structured-clone-different-payloads.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.bindings/worker-structured-clone-json-from-worker.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.bindings/worker-structured-clone-json-roundtrip.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.bindings/worker-structured-clone-json-to-worker.html" }, { @@ -236,7 +236,7 @@ "name": "blink_perf.bindings/worker-transferable-to-worker.html" }, { - "duration": "22.0", + "duration": "20.0", "name": "blink_perf.css/AttributeDescendantSelector.html" }, { @@ -256,7 +256,7 @@ "name": "blink_perf.css/CSSPropertyUpdateValue.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.css/ChangeStyleCSSVariableRecalc.html" }, { @@ -276,27 +276,27 @@ "name": "blink_perf.css/ChangeStyleElementSelector.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html" }, { @@ -312,11 +312,11 @@ "name": "blink_perf.css/ChangeStyleShallowTree.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.css/ChangeStyleSingleClassSelector.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html" }, { @@ -324,19 +324,19 @@ "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.css/ChangeStyleUniversalSelector.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html" }, { - "duration": "14.0", + "duration": "13.0", "name": "blink_perf.css/ClassDescendantSelector.html" }, { @@ -352,7 +352,7 @@ "name": "blink_perf.css/CustomPropertiesDependency.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.css/CustomPropertiesNonRootInheritance.html" }, { @@ -388,59 +388,59 @@ "name": "blink_perf.css/LoadSemanticPageExample.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.css/PseudoClassSelectors.html" }, { - "duration": "12.0", + "duration": "10.0", "name": "blink_perf.css/SelectorCountScaling.html" }, { - "duration": "27.0", + "duration": "10.0", "name": "blink_perf.dom/custom-element-default-style-with-shadow.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.dom/custom-element-default-style.html" }, { - "duration": "14.0", + "duration": "10.0", "name": "blink_perf.dom/long-sibling-list.html" }, { - "duration": "5.0", + "duration": "6.0", "name": "blink_perf.dom/modify-element-classname.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.dom/modify-element-id.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.dom/modify-element-title.html" }, { - "duration": "11.0", + "duration": "9.0", "name": "blink_perf.dom/select-multiple-add.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.dom/select-single-add.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.dom/select-single-remove.html" }, { - "duration": "10.0", + "duration": "15.0", "name": "blink_perf.events/EventsDispatching.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html" }, { - "duration": "16.0", + "duration": "17.0", "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html" }, { @@ -456,7 +456,7 @@ "name": "blink_perf.events/is-input-pending-include-continuous-events.html" }, { - "duration": "19.0", + "duration": "18.0", "name": "blink_perf.image_decoder/decode-gif.html" }, { @@ -464,39 +464,39 @@ "name": "blink_perf.image_decoder/decode-jpeg-h1v1.html" }, { - "duration": "14.0", + "duration": "12.0", "name": "blink_perf.image_decoder/decode-jpeg-h1v2.html" }, { - "duration": "14.0", + "duration": "13.0", "name": "blink_perf.image_decoder/decode-jpeg-h2v1.html" }, { - "duration": "14.0", + "duration": "12.0", "name": "blink_perf.image_decoder/decode-jpeg-h2v2.html" }, { - "duration": "19.0", + "duration": "16.0", "name": "blink_perf.image_decoder/decode-lossless-webp.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.image_decoder/decode-lossy-webp.html" }, { - "duration": "17.0", + "duration": "15.0", "name": "blink_perf.image_decoder/decode-png-palette-opaque.html" }, { - "duration": "14.0", + "duration": "12.0", "name": "blink_perf.image_decoder/decode-png-palette.html" }, { - "duration": "21.0", + "duration": "18.0", "name": "blink_perf.image_decoder/decode-png.html" }, { - "duration": "22.0", + "duration": "24.0", "name": "blink_perf.layout/ArabicLineLayout.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" }, { @@ -572,7 +572,7 @@ "name": "blink_perf.layout/culled-inline-bounding-rects.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.layout/culled-inline-hittest.html" }, { @@ -600,7 +600,7 @@ "name": "blink_perf.layout/editing_prepend.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.layout/fit-content-change-available-size-blocks.html" }, { @@ -656,7 +656,7 @@ "name": "blink_perf.layout/flexbox-row-wrap.html" }, { - "duration": "8.0", + "duration": "9.0", "name": "blink_perf.layout/flexbox-with-stretch-layout.html" }, { @@ -672,15 +672,15 @@ "name": "blink_perf.layout/floats_100_100_nested.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.layout/floats_10_1000.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.layout/floats_20_100.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.layout/floats_20_100_nested.html" }, { @@ -700,15 +700,15 @@ "name": "blink_perf.layout/floats_50_100_nested.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/floats_show_hide.html" }, { - "duration": "11.0", + "duration": "9.0", "name": "blink_perf.layout/hindi-line-layout.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.layout/hittest-block-children.html" }, { @@ -716,7 +716,7 @@ "name": "blink_perf.layout/japanese-kokoro-insert.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.layout/large-grid.html" }, { @@ -724,19 +724,19 @@ "name": "blink_perf.layout/large-spanning-grid-item.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.layout/latin-ebook-resize.html" }, { @@ -764,7 +764,7 @@ "name": "blink_perf.layout/line-layout-line-height.html" }, { - "duration": "9.0", + "duration": "10.0", "name": "blink_perf.layout/line-layout-repeat-append-select.html" }, { @@ -784,7 +784,7 @@ "name": "blink_perf.layout/long-line-nowrap-spans-collapse.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.layout/long-line-nowrap.html" }, { @@ -828,7 +828,7 @@ "name": "blink_perf.layout/multicol/lots-of-text-balanced.html" }, { - "duration": "15.0", + "duration": "14.0", "name": "blink_perf.layout/multicol/nested-forced-breaks.html" }, { @@ -844,7 +844,7 @@ "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html" }, { - "duration": "12.0", + "duration": "9.0", "name": "blink_perf.layout/nested-grid-lots-of-tracks.html" }, { @@ -872,7 +872,7 @@ "name": "blink_perf.layout/word-break-break-all.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.layout/word-break-break-word.html" }, { @@ -880,7 +880,7 @@ "name": "blink_perf.layout/word-wrap-break-word.html" }, { - "duration": "21.0", + "duration": "23.0", "name": "blink_perf.owp_storage/blob-perf-files.html" }, { @@ -888,43 +888,43 @@ "name": "blink_perf.owp_storage/blob-perf-ipc.html" }, { - "duration": "14.0", + "duration": "11.0", "name": "blink_perf.owp_storage/blob-perf-shm.html" }, { - "duration": "14.0", + "duration": "12.0", "name": "blink_perf.owp_storage/blob-perf-tiny.html" }, { - "duration": "26.0", + "duration": "23.0", "name": "blink_perf.owp_storage/idb-load-docs.html" }, { - "duration": "139.0", + "duration": "128.0", "name": "blink_perf.owp_storage/idb-put-all.html" }, { - "duration": "129.0", + "duration": "121.0", "name": "blink_perf.owp_storage/idb-put.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.paint/appending-text.html" }, { - "duration": "14.0", + "duration": "13.0", "name": "blink_perf.paint/color-changes.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.paint/complex-content-slow-scroll.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.paint/complex-iframe-filtered.html" }, { - "duration": "23.0", + "duration": "22.0", "name": "blink_perf.paint/contain-update-layer-tree.html" }, { @@ -936,7 +936,7 @@ "name": "blink_perf.paint/fixed-and-many-layers-scroll.html" }, { - "duration": "13.0", + "duration": "11.0", "name": "blink_perf.paint/large-table-background-change.html" }, { @@ -944,19 +944,19 @@ "name": "blink_perf.paint/large-table-collapsed-border-change.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.paint/modify-selection.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.paint/move-text-with-mask.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.paint/paint-offset-changes.html" }, { - "duration": "14.0", + "duration": "13.0", "name": "blink_perf.paint/transform-changes.html" }, { @@ -964,11 +964,11 @@ "name": "blink_perf.parser/css-parser-yui.html" }, { - "duration": "32.0", + "duration": "13.0", "name": "blink_perf.parser/declarative-shadow-dom-cloning.html" }, { - "duration": "17.0", + "duration": "10.0", "name": "blink_perf.parser/declarative-shadow-dom.html" }, { @@ -984,7 +984,7 @@ "name": "blink_perf.parser/html5-full-render.html" }, { - "duration": "25.0", + "duration": "28.0", "name": "blink_perf.parser/iframe-append-remove.html" }, { @@ -996,15 +996,15 @@ "name": "blink_perf.parser/innerHTML-setter.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.parser/query-selector-all-attribute-complex.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.parser/query-selector-all-attribute.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.parser/query-selector-all-class-deep.html" }, { @@ -1012,27 +1012,27 @@ "name": "blink_perf.parser/query-selector-all-class-first.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.parser/query-selector-all-class-last.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.parser/query-selector-all-class.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.parser/query-selector-all-deep.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.parser/query-selector-all-first.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.parser/query-selector-all-id-deep.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.parser/query-selector-all-id-first.html" }, { @@ -1040,7 +1040,7 @@ "name": "blink_perf.parser/query-selector-all-id-last.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.parser/query-selector-all-last.html" }, { @@ -1060,7 +1060,7 @@ "name": "blink_perf.parser/query-selector-id-last.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.parser/query-selector-last.html" }, { @@ -1072,7 +1072,7 @@ "name": "blink_perf.parser/textarea-parsing.html" }, { - "duration": "9.0", + "duration": "10.0", "name": "blink_perf.parser/tiny-innerHTML.html" }, { @@ -1080,7 +1080,7 @@ "name": "blink_perf.parser/url-parser.html" }, { - "duration": "9.0", + "duration": "10.0", "name": "blink_perf.parser/xml-parser.html" }, { @@ -1104,7 +1104,7 @@ "name": "blink_perf.shadow_dom/imperative-api-assigned-slot.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary-large.html" }, { @@ -1116,7 +1116,7 @@ "name": "blink_perf.shadow_dom/imperative-api-detail-summary-large.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/imperative-api-detail-summary.html" }, { @@ -1140,11 +1140,11 @@ "name": "blink_perf.shadow_dom/shadow-style-share-with-distribution.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/shadow-style-share.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/style-sheet-insert.html" }, { @@ -1168,7 +1168,7 @@ "name": "blink_perf.shadow_dom/v1-large-deep-layout.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-large-shallow-append-layout.html" }, { @@ -1176,7 +1176,7 @@ "name": "blink_perf.shadow_dom/v1-large-shallow-distribution.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-large-shallow-layout.html" }, { @@ -1188,11 +1188,11 @@ "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-re-layout.html" }, { - "duration": "5.0", + "duration": "4.0", "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" }, { @@ -1260,15 +1260,15 @@ "name": "blink_perf.svg/DropsOnABlade.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.svg/FlowerFromMyGarden.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.svg/FoodLeifLodahl.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.svg/France.html" }, { @@ -1276,11 +1276,11 @@ "name": "blink_perf.svg/FrancoBolloGnomeEzechi.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.svg/GearFlowers.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.svg/HarveyRayner.html" }, { @@ -1292,7 +1292,7 @@ "name": "blink_perf.svg/MtSaintHelens.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.svg/Samurai.html" }, { @@ -1300,11 +1300,11 @@ "name": "blink_perf.svg/SierpinskiCarpet.html" }, { - "duration": "7.0", + "duration": "5.0", "name": "blink_perf.svg/SvgCubics.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.svg/SvgHitTesting.html" }, { @@ -1312,35 +1312,35 @@ "name": "blink_perf.svg/SvgNestedUse.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.svg/UnderTheSee.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "blink_perf.svg/WorldIso.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.svg/Worldcup.html" }, { - "duration": "13.0", + "duration": "16.0", "name": "blink_perf.webaudio/audio-buffer-source-node.html" }, { - "duration": "27.0", + "duration": "66.0", "name": "blink_perf.webaudio/audio-worklet-node.html" }, { - "duration": "27.0", + "duration": "63.0", "name": "blink_perf.webaudio/biquad-filter-node.html" }, { - "duration": "27.0", + "duration": "64.0", "name": "blink_perf.webaudio/gain-node.html" }, { - "duration": "28.0", + "duration": "27.0", "name": "blink_perf.webaudio/panner-node.html" }, { @@ -1356,7 +1356,7 @@ "name": "dromaeo/http://dromaeo.com?dom-query" }, { - "duration": "29.0", + "duration": "30.0", "name": "dromaeo/http://dromaeo.com?dom-traverse" }, { @@ -1364,7 +1364,7 @@ "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html" }, { @@ -1372,23 +1372,23 @@ "name": "jetstream/JetStream" }, { - "duration": "138.0", + "duration": "169.0", "name": "jetstream2/JetStream2" }, { - "duration": "35.0", + "duration": "30.0", "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html" }, { - "duration": "21.0", + "duration": "20.0", "name": "loading.desktop/24h_cold" }, { - "duration": "24.0", + "duration": "23.0", "name": "loading.desktop/24h_warm" }, { - "duration": "26.0", + "duration": "25.0", "name": "loading.desktop/AirBnB_cold" }, { @@ -1400,7 +1400,7 @@ "name": "loading.desktop/Aljayyash_cold" }, { - "duration": "20.0", + "duration": "19.0", "name": "loading.desktop/Aljayyash_warm" }, { @@ -1408,19 +1408,19 @@ "name": "loading.desktop/AllRecipes_cold" }, { - "duration": "32.0", + "duration": "30.0", "name": "loading.desktop/AllRecipes_warm" }, { - "duration": "24.0", + "duration": "25.0", "name": "loading.desktop/ArsTechnica_cold" }, { - "duration": "33.0", + "duration": "34.0", "name": "loading.desktop/ArsTechnica_warm" }, { - "duration": "20.0", + "duration": "19.0", "name": "loading.desktop/Baidu_cold" }, { @@ -1428,19 +1428,19 @@ "name": "loading.desktop/Baidu_warm" }, { - "duration": "22.0", + "duration": "21.0", "name": "loading.desktop/Bhaskar_cold" }, { - "duration": "25.0", + "duration": "26.0", "name": "loading.desktop/Bhaskar_warm" }, { - "duration": "23.0", + "duration": "25.0", "name": "loading.desktop/Chosun_cold" }, { - "duration": "26.0", + "duration": "27.0", "name": "loading.desktop/Chosun_warm" }, { @@ -1448,43 +1448,43 @@ "name": "loading.desktop/Colorado.edu_cold" }, { - "duration": "24.0", + "duration": "23.0", "name": "loading.desktop/Colorado.edu_warm" }, { - "duration": "21.0", + "duration": "23.0", "name": "loading.desktop/Danawa_cold" }, { - "duration": "24.0", + "duration": "26.0", "name": "loading.desktop/Danawa_warm" }, { - "duration": "19.0", + "duration": "22.0", "name": "loading.desktop/Daum_cold" }, { - "duration": "22.0", + "duration": "24.0", "name": "loading.desktop/Daum_warm" }, { - "duration": "22.0", + "duration": "24.0", "name": "loading.desktop/Donga_cold" }, { - "duration": "24.0", + "duration": "26.0", "name": "loading.desktop/Donga_warm" }, { - "duration": "24.0", + "duration": "26.0", "name": "loading.desktop/Economist_cold" }, { - "duration": "31.0", + "duration": "33.0", "name": "loading.desktop/Economist_warm" }, { - "duration": "24.0", + "duration": "23.0", "name": "loading.desktop/Elmundo_cold" }, { @@ -1492,7 +1492,7 @@ "name": "loading.desktop/Elmundo_warm" }, { - "duration": "22.0", + "duration": "21.0", "name": "loading.desktop/FC2Blog_cold" }, { @@ -1500,27 +1500,27 @@ "name": "loading.desktop/FC2Blog_warm" }, { - "duration": "22.0", + "duration": "24.0", "name": "loading.desktop/FIFA_cold" }, { - "duration": "26.0", + "duration": "28.0", "name": "loading.desktop/FIFA_warm" }, { - "duration": "26.0", + "duration": "25.0", "name": "loading.desktop/FarsNews_cold" }, { - "duration": "23.0", + "duration": "22.0", "name": "loading.desktop/FarsNews_warm" }, { - "duration": "22.0", + "duration": "20.0", "name": "loading.desktop/Flickr_cold" }, { - "duration": "26.0", + "duration": "24.0", "name": "loading.desktop/Flickr_warm" }, { @@ -1528,7 +1528,7 @@ "name": "loading.desktop/FlipKart_cold" }, { - "duration": "22.0", + "duration": "21.0", "name": "loading.desktop/FlipKart_warm" }, { @@ -1544,39 +1544,39 @@ "name": "loading.desktop/HTML5Rocks_cold" }, { - "duration": "33.0", + "duration": "21.0", "name": "loading.desktop/HTML5Rocks_warm" }, { - "duration": "18.0", + "duration": "17.0", "name": "loading.desktop/Haraj_cold" }, { - "duration": "20.0", + "duration": "19.0", "name": "loading.desktop/Haraj_warm" }, { - "duration": "23.0", + "duration": "24.0", "name": "loading.desktop/HatenaBookmark_cold" }, { - "duration": "39.0", + "duration": "26.0", "name": "loading.desktop/HatenaBookmark_warm" }, { - "duration": "21.0", + "duration": "20.0", "name": "loading.desktop/IGN_cold" }, { - "duration": "23.0", + "duration": "40.0", "name": "loading.desktop/IGN_warm" }, { - "duration": "23.0", + "duration": "20.0", "name": "loading.desktop/IMDB_cold" }, { - "duration": "24.0", + "duration": "23.0", "name": "loading.desktop/IMDB_warm" }, { @@ -1584,23 +1584,23 @@ "name": "loading.desktop/IndiaTimes_cold" }, { - "duration": "24.0", + "duration": "23.0", "name": "loading.desktop/IndiaTimes_warm" }, { - "duration": "22.0", + "duration": "21.0", "name": "loading.desktop/Kakaku_cold" }, { - "duration": "25.0", + "duration": "24.0", "name": "loading.desktop/Kakaku_warm" }, { - "duration": "27.0", + "duration": "28.0", "name": "loading.desktop/Kenh14_cold" }, { - "duration": "49.0", + "duration": "34.0", "name": "loading.desktop/Kenh14_warm" }, { @@ -1612,11 +1612,11 @@ "name": "loading.desktop/Mercadolivre_warm" }, { - "duration": "23.0", + "duration": "22.0", "name": "loading.desktop/Naver_cold" }, { - "duration": "23.0", + "duration": "24.0", "name": "loading.desktop/Naver_warm" }, { @@ -1628,19 +1628,19 @@ "name": "loading.desktop/Orange_warm" }, { - "duration": "21.0", + "duration": "22.0", "name": "loading.desktop/Pantip_cold" }, { - "duration": "24.0", + "duration": "25.0", "name": "loading.desktop/Pantip_warm" }, { - "duration": "22.0", + "duration": "21.0", "name": "loading.desktop/PremierLeague_cold" }, { - "duration": "25.0", + "duration": "23.0", "name": "loading.desktop/PremierLeague_warm" }, { @@ -1652,39 +1652,39 @@ "name": "loading.desktop/QQ_warm" }, { - "duration": "22.0", + "duration": "24.0", "name": "loading.desktop/REI_cold" }, { - "duration": "25.0", + "duration": "27.0", "name": "loading.desktop/REI_warm" }, { - "duration": "22.0", + "duration": "21.0", "name": "loading.desktop/Ruten_cold" }, { - "duration": "22.0", + "duration": "21.0", "name": "loading.desktop/Ruten_warm" }, { - "duration": "25.0", + "duration": "24.0", "name": "loading.desktop/Sina_cold" }, { - "duration": "31.0", + "duration": "30.0", "name": "loading.desktop/Sina_warm" }, { - "duration": "27.0", + "duration": "26.0", "name": "loading.desktop/Taobao_cold" }, { - "duration": "34.0", + "duration": "32.0", "name": "loading.desktop/Taobao_warm" }, { - "duration": "21.0", + "duration": "32.0", "name": "loading.desktop/TheOnion_cold" }, { @@ -1708,19 +1708,19 @@ "name": "loading.desktop/TicketMaster_warm" }, { - "duration": "25.0", + "duration": "27.0", "name": "loading.desktop/Vietnamnet_cold" }, { - "duration": "31.0", + "duration": "33.0", "name": "loading.desktop/Vietnamnet_warm" }, { - "duration": "24.0", + "duration": "34.0", "name": "loading.desktop/Vnexpress_cold" }, { - "duration": "27.0", + "duration": "29.0", "name": "loading.desktop/Vnexpress_warm" }, { @@ -1740,27 +1740,27 @@ "name": "loading.desktop/Yandex_warm" }, { - "duration": "23.0", + "duration": "36.0", "name": "loading.desktop/amazon.co.jp_cold" }, { - "duration": "28.0", + "duration": "29.0", "name": "loading.desktop/amazon.co.jp_warm" }, { - "duration": "21.0", + "duration": "20.0", "name": "loading.desktop/ja.wikipedia_cold" }, { - "duration": "23.0", + "duration": "22.0", "name": "loading.desktop/ja.wikipedia_warm" }, { - "duration": "26.0", + "duration": "24.0", "name": "loading.desktop/money.cnn_cold" }, { - "duration": "31.0", + "duration": "30.0", "name": "loading.desktop/money.cnn_warm" }, { @@ -1772,7 +1772,7 @@ "name": "loading.desktop/ru.wikipedia_warm" }, { - "duration": "25.0", + "duration": "24.0", "name": "loading.desktop/uol.com.br_cold" }, { @@ -1792,11 +1792,11 @@ "name": "media.desktop/mse.html?media=aac_audio.mp4" }, { - "duration": "17.0", + "duration": "16.0", "name": "media.desktop/mse.html?media=aac_audio.mp4,h264_video.mp4" }, { - "duration": "17.0", + "duration": "16.0", "name": "media.desktop/mse.html?media=h264_video.mp4" }, { @@ -1808,6 +1808,10 @@ "name": "media.desktop/mse.html?media=tulip2.vp9.webm" }, { + "duration": "131.0", + "name": "media.desktop/video.html?src=boat_1080p60fps_vp9.webm" + }, + { "duration": "20.0", "name": "media.desktop/video.html?src=crowd1080.mp4" }, @@ -1820,6 +1824,10 @@ "name": "media.desktop/video.html?src=crowd1080_vp9.webm" }, { + "duration": "131.0", + "name": "media.desktop/video.html?src=foodmarket_720p30fps.mp4" + }, + { "duration": "15.0", "name": "media.desktop/video.html?src=garden2_10s.mp4&seek" }, @@ -1828,11 +1836,11 @@ "name": "media.desktop/video.html?src=garden2_10s.webm&seek" }, { - "duration": "16.0", + "duration": "15.0", "name": "media.desktop/video.html?src=smpte_3840x2160_60fps_vp9.webm&seek" }, { - "duration": "21.0", + "duration": "20.0", "name": "media.desktop/video.html?src=tulip0.av1.mp4" }, { @@ -1872,7 +1880,7 @@ "name": "media.desktop/video.html?src=tulip2.vp9.webm" }, { - "duration": "21.0", + "duration": "20.0", "name": "media.desktop/video.html?src=tulip2.vp9.webm&background" }, { @@ -1880,11 +1888,11 @@ "name": "media.desktop/video.html?src=tulip2.vp9.webm_WiFi" }, { - "duration": "29.0", + "duration": "27.0", "name": "memory.desktop/TrivialAnimationPageSharedPageState" }, { - "duration": "29.0", + "duration": "28.0", "name": "memory.desktop/TrivialBlinkingCursorPageSharedPageState" }, { @@ -1896,7 +1904,7 @@ "name": "memory.desktop/TrivialCanvasPageSharedPageState" }, { - "duration": "28.0", + "duration": "29.0", "name": "memory.desktop/TrivialFullscreenVideoPageSharedPageState" }, { @@ -1904,7 +1912,7 @@ "name": "memory.desktop/TrivialGifPageSharedPageState" }, { - "duration": "29.0", + "duration": "28.0", "name": "memory.desktop/TrivialScrollingPageSharedPageState" }, { @@ -1912,7 +1920,7 @@ "name": "memory.desktop/TrivialWebGLPageSharedPageState" }, { - "duration": "42.0", + "duration": "41.0", "name": "memory.desktop/WebWorker" }, { @@ -1924,7 +1932,7 @@ "name": "power.desktop/TrivialAnimationPageSharedPageState" }, { - "duration": "38.0", + "duration": "39.0", "name": "power.desktop/TrivialBlinkingCursorPageSharedPageState" }, { @@ -1940,11 +1948,11 @@ "name": "power.desktop/TrivialFullscreenVideoPageSharedPageState" }, { - "duration": "38.0", + "duration": "39.0", "name": "power.desktop/TrivialGifPageSharedPageState" }, { - "duration": "39.0", + "duration": "40.0", "name": "power.desktop/TrivialScrollingPageSharedPageState" }, { @@ -1964,15 +1972,15 @@ "name": "power.desktop/instagram" }, { - "duration": "39.0", + "duration": "58.0", "name": "power.desktop/microsoft" }, { - "duration": "43.0", + "duration": "44.0", "name": "power.desktop/sina" }, { - "duration": "43.0", + "duration": "44.0", "name": "power.desktop/slideshare" }, { @@ -1980,11 +1988,11 @@ "name": "power.desktop/uol" }, { - "duration": "16.0", + "duration": "21.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html" }, { - "duration": "9.0", + "duration": "11.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/blogger.html" }, { @@ -2024,7 +2032,7 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/googledocs.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleimagesearch.html" }, { @@ -2036,7 +2044,7 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html" }, { - "duration": "7.0", + "duration": "8.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html" }, { @@ -2044,11 +2052,11 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html" }, { - "duration": "14.0", + "duration": "15.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/twitter.html" }, { - "duration": "9.0", + "duration": "10.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html" }, { @@ -2068,19 +2076,19 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html" }, { - "duration": "28.0", + "duration": "18.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html" }, { - "duration": "15.0", + "duration": "13.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html" }, { - "duration": "26.0", + "duration": "23.0", "name": "rendering.desktop/accu_weather_2018" }, { @@ -2088,7 +2096,7 @@ "name": "rendering.desktop/accu_weather_pinch_2018" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/amazon_2018" }, { @@ -2096,35 +2104,43 @@ "name": "rendering.desktop/amazon_pinch_2018" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/analog_clock_svg" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.desktop/animometer_webgl" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.desktop/animometer_webgl_attrib_arrays" }, { "duration": "23.0", + "name": "rendering.desktop/animometer_webgl_fast_call" + }, + { + "duration": "23.0", "name": "rendering.desktop/animometer_webgl_indexed" }, { - "duration": "22.0", - "name": "rendering.desktop/animometer_webgl_indexed_multi_draw" - }, - { - "duration": "22.0", - "name": "rendering.desktop/animometer_webgl_indexed_multi_draw_base_vertex_base_instance" - }, - { - "duration": "22.0", - "name": "rendering.desktop/animometer_webgl_multi_draw" + "duration": "23.0", + "name": "rendering.desktop/animometer_webgl_indexed_fast_call" }, { "duration": "23.0", + "name": "rendering.desktop/animometer_webgl_indexed_multi_draw" + }, + { + "duration": "23.0", + "name": "rendering.desktop/animometer_webgl_indexed_multi_draw_base_vertex_base_instance" + }, + { + "duration": "23.0", + "name": "rendering.desktop/animometer_webgl_multi_draw" + }, + { + "duration": "24.0", "name": "rendering.desktop/aquarium" }, { @@ -2132,27 +2148,31 @@ "name": "rendering.desktop/aquarium_20k" }, { - "duration": "22.0", - "name": "rendering.desktop/background_color_animation" - }, - { - "duration": "20.0", - "name": "rendering.desktop/background_color_animation_with_gradient" - }, - { - "duration": "22.0", - "name": "rendering.desktop/balls_css_key_frame_animations" + "duration": "25.0", + "name": "rendering.desktop/aquarium_20k_fast_call" }, { "duration": "21.0", + "name": "rendering.desktop/background_color_animation" + }, + { + "duration": "21.0", + "name": "rendering.desktop/background_color_animation_with_gradient" + }, + { + "duration": "21.0", + "name": "rendering.desktop/balls_css_key_frame_animations" + }, + { + "duration": "22.0", "name": "rendering.desktop/balls_css_key_frame_animations_composited_transform" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.desktop/balls_css_transition_2_properties" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.desktop/balls_css_transition_40_properties" }, { @@ -2164,19 +2184,19 @@ "name": "rendering.desktop/balls_javascript_canvas" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/balls_javascript_css" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/balls_svg_animations" }, { - "duration": "22.0", + "duration": "23.0", "name": "rendering.desktop/blob" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/blogspot_2018" }, { @@ -2188,11 +2208,11 @@ "name": "rendering.desktop/blur_rotating_background" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/booking.com_2018" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/booking_pinch_2018" }, { @@ -2200,7 +2220,7 @@ "name": "rendering.desktop/bouncing_balls_15" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.desktop/bouncing_balls_shadow" }, { @@ -2216,43 +2236,43 @@ "name": "rendering.desktop/bouncing_png_images" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.desktop/bouncing_svg_images" }, { - "duration": "7.0", + "duration": "6.0", "name": "rendering.desktop/camera_to_webgl" }, { - "duration": "20.0", + "duration": "27.0", "name": "rendering.desktop/canvas2d_to_texture.html" }, { - "duration": "69.0", + "duration": "72.0", "name": "rendering.desktop/canvas_05000_pixels_per_second" }, { - "duration": "28.0", + "duration": "78.0", "name": "rendering.desktop/canvas_10000_pixels_per_second" }, { - "duration": "25.0", + "duration": "67.0", "name": "rendering.desktop/canvas_20000_pixels_per_second" }, { - "duration": "71.0", + "duration": "68.0", "name": "rendering.desktop/canvas_40000_pixels_per_second" }, { - "duration": "62.0", + "duration": "67.0", "name": "rendering.desktop/canvas_60000_pixels_per_second" }, { - "duration": "62.0", + "duration": "68.0", "name": "rendering.desktop/canvas_75000_pixels_per_second" }, { - "duration": "63.0", + "duration": "68.0", "name": "rendering.desktop/canvas_90000_pixels_per_second" }, { @@ -2260,31 +2280,31 @@ "name": "rendering.desktop/canvas_animation_no_clear" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/canvas_arcs" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/canvas_font_cycler" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/canvas_lines" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/canvas_to_blob" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/canvas_to_canvas_draw" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/cats_unscaled" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/cats_viewport_width" }, { @@ -2292,11 +2312,11 @@ "name": "rendering.desktop/cc_poster_circle" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.desktop/cc_scroll_text_only" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.desktop/chip_tune" }, { @@ -2304,67 +2324,67 @@ "name": "rendering.desktop/cnn_2018" }, { - "duration": "27.0", + "duration": "28.0", "name": "rendering.desktop/cnn_pinch_2018" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/compositor_heavy_animation" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/crafty_mind" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/css_animations_many_keyframes" }, { - "duration": "20.0", + "duration": "18.0", "name": "rendering.desktop/css_animations_simultaneous_inline_style" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/css_animations_simultaneous_new_element" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/css_animations_simultaneous_style_element" }, { - "duration": "20.0", + "duration": "18.0", "name": "rendering.desktop/css_animations_simultaneous_updating_class" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/css_animations_staggered_infinite_iterations" }, { - "duration": "21.0", + "duration": "19.0", "name": "rendering.desktop/css_animations_staggered_inline_style" }, { - "duration": "21.0", + "duration": "19.0", "name": "rendering.desktop/css_animations_staggered_new_element" }, { - "duration": "28.0", + "duration": "19.0", "name": "rendering.desktop/css_animations_staggered_style_element" }, { - "duration": "21.0", + "duration": "19.0", "name": "rendering.desktop/css_animations_staggered_updating_class" }, { - "duration": "21.0", + "duration": "19.0", "name": "rendering.desktop/css_animations_triggered_inline_style" }, { - "duration": "21.0", + "duration": "19.0", "name": "rendering.desktop/css_animations_triggered_new_element" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/css_animations_triggered_style_element" }, { @@ -2404,15 +2424,15 @@ "name": "rendering.desktop/css_transitions_style_element" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_transitions_triggered_inline_style" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_transitions_triggered_new_element" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_transitions_triggered_style_element" }, { @@ -2424,15 +2444,15 @@ "name": "rendering.desktop/css_transitions_updating_class" }, { - "duration": "19.0", + "duration": "18.0", "name": "rendering.desktop/css_value_type_color" }, { - "duration": "19.0", + "duration": "18.0", "name": "rendering.desktop/css_value_type_filter" }, { - "duration": "20.0", + "duration": "18.0", "name": "rendering.desktop/css_value_type_length" }, { @@ -2456,11 +2476,11 @@ "name": "rendering.desktop/css_value_type_transform_complex" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/css_value_type_transform_simple" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/docs_paper.html" }, { @@ -2496,19 +2516,19 @@ "name": "rendering.desktop/earth" }, { - "duration": "17.0", + "duration": "25.0", "name": "rendering.desktop/ebay_2018" }, { - "duration": "27.0", + "duration": "25.0", "name": "rendering.desktop/ebay_pinch_2018" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/effect_games" }, { - "duration": "26.0", + "duration": "25.0", "name": "rendering.desktop/espn_2018" }, { @@ -2516,7 +2536,7 @@ "name": "rendering.desktop/espn_pinch_2018" }, { - "duration": "18.0", + "duration": "28.0", "name": "rendering.desktop/extra_large_texture_uploads" }, { @@ -2524,27 +2544,27 @@ "name": "rendering.desktop/facebook_2018" }, { - "duration": "19.0", + "duration": "21.0", "name": "rendering.desktop/facebook_pinch_2018" }, { - "duration": "18.0", + "duration": "22.0", "name": "rendering.desktop/falling_particle_simulation_cpu.html" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/falling_particle_simulation_gpu.html" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/fill_clear_rect.html" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/fill_shapes" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/filter_terrain_svg" }, { @@ -2552,31 +2572,31 @@ "name": "rendering.desktop/geo_apis" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/get_image_data_cpu.html" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/get_image_data_gpu.html" }, { - "duration": "21.0", + "duration": "20.0", "name": "rendering.desktop/gmail_2018" }, { - "duration": "34.0", + "duration": "29.0", "name": "rendering.desktop/gmail_move_2018" }, { - "duration": "18.0", + "duration": "19.0", "name": "rendering.desktop/gmail_pinch_2018" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/google_calendar_2018" }, { - "duration": "16.0", + "duration": "18.0", "name": "rendering.desktop/google_calendar_pinch_2018" }, { @@ -2592,35 +2612,35 @@ "name": "rendering.desktop/google_image_search_2018" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.desktop/google_plus_2018" }, { - "duration": "19.0", + "duration": "17.0", "name": "rendering.desktop/google_search_pinch_2018" }, { - "duration": "24.0", + "duration": "17.0", "name": "rendering.desktop/google_web_search_2018" }, { - "duration": "28.0", + "duration": "19.0", "name": "rendering.desktop/gpu_bound_shader.html" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/guimark_vector_chart" }, { - "duration": "22.0", + "duration": "20.0", "name": "rendering.desktop/hakim" }, { - "duration": "22.0", + "duration": "19.0", "name": "rendering.desktop/hw_accelerated_canvas_to_sw_canvas.html" }, { - "duration": "30.0", + "duration": "29.0", "name": "rendering.desktop/ie_chalkboard" }, { @@ -2628,7 +2648,7 @@ "name": "rendering.desktop/ie_pirate_mark" }, { - "duration": "23.0", + "duration": "21.0", "name": "rendering.desktop/infinite_scroll_element_n_layers_99" }, { @@ -2644,11 +2664,11 @@ "name": "rendering.desktop/jarro_doverson" }, { - "duration": "17.0", + "duration": "16.0", "name": "rendering.desktop/jpeg_decoding_rgb_and_gpu_rasterization" }, { - "duration": "17.0", + "duration": "16.0", "name": "rendering.desktop/jpeg_decoding_yuv_and_gpu_rasterization" }, { @@ -2656,7 +2676,7 @@ "name": "rendering.desktop/js_full_screen_invalidation" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.desktop/js_opacity_plus_n_layers_99" }, { @@ -2676,7 +2696,7 @@ "name": "rendering.desktop/kevs_3d" }, { - "duration": "21.0", + "duration": "19.0", "name": "rendering.desktop/keyframed_animations" }, { @@ -2684,7 +2704,7 @@ "name": "rendering.desktop/large_texture_uploads" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.desktop/linkedin_2018" }, { @@ -2692,15 +2712,19 @@ "name": "rendering.desktop/linkedin_pinch_2018" }, { - "duration": "57.0", + "duration": "56.0", "name": "rendering.desktop/lost_crypt" }, { - "duration": "19.0", + "duration": "52.0", + "name": "rendering.desktop/lost_crypt_fast_call" + }, + { + "duration": "21.0", "name": "rendering.desktop/main_0fps_impl_60fps" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/main_0fps_impl_60fps_no_update" }, { @@ -2708,19 +2732,19 @@ "name": "rendering.desktop/main_0fps_impl_60fps_no_update_jank" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/main_0fps_with_jank_impl_0fps" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/main_15fps_impl_0fps" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/main_15fps_with_jank_impl_0fps" }, { - "duration": "19.0", + "duration": "29.0", "name": "rendering.desktop/main_30fps_impl_0fps" }, { @@ -2728,7 +2752,7 @@ "name": "rendering.desktop/main_30fps_impl_60fps" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/main_60fps_impl_0fps" }, { @@ -2736,11 +2760,11 @@ "name": "rendering.desktop/main_60fps_impl_60fps" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/main_60fps_impl_60fps_no_update" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/main_60fps_impl_60fps_no_update_jank" }, { @@ -2748,7 +2772,7 @@ "name": "rendering.desktop/main_60fps_with_extreme_jank_impl_0fps" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/main_60fps_with_jank_and_delay_impl_60fps" }, { @@ -2756,11 +2780,11 @@ "name": "rendering.desktop/main_60fps_with_jank_impl_0fps" }, { - "duration": "21.0", + "duration": "20.0", "name": "rendering.desktop/main_animations_half_presented" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/man_in_blue" }, { @@ -2768,11 +2792,11 @@ "name": "rendering.desktop/many_images" }, { - "duration": "21.0", + "duration": "22.0", "name": "rendering.desktop/many_planets_deep" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/maps_move_2018" }, { @@ -2788,10 +2812,14 @@ "name": "rendering.desktop/megi_dish" }, { - "duration": "52.0", + "duration": "56.0", "name": "rendering.desktop/microgame_fps" }, { + "duration": "52.0", + "name": "rendering.desktop/microgame_fps_fast_call" + }, + { "duration": "20.0", "name": "rendering.desktop/microsoft_asteroid_belt" }, @@ -2820,15 +2848,15 @@ "name": "rendering.desktop/microsoft_tweet_map" }, { - "duration": "21.0", + "duration": "20.0", "name": "rendering.desktop/microsoft_video_city" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/microsoft_worker_fountains" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/mix_10k" }, { @@ -2836,7 +2864,7 @@ "name": "rendering.desktop/mix_blend_mode_animation_difference" }, { - "duration": "27.0", + "duration": "19.0", "name": "rendering.desktop/mix_blend_mode_animation_hue" }, { @@ -2844,7 +2872,7 @@ "name": "rendering.desktop/mix_blend_mode_animation_propagating_isolation" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/mix_blend_mode_animation_screen" }, { @@ -2860,19 +2888,19 @@ "name": "rendering.desktop/new_tilings" }, { - "duration": "22.0", + "duration": "21.0", "name": "rendering.desktop/nvidia_vertex_buffer_object" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/off_screen_main_60fps" }, { - "duration": "20.0", + "duration": "19.0", "name": "rendering.desktop/off_screen_main_60fps_jank" }, { - "duration": "21.0", + "duration": "19.0", "name": "rendering.desktop/overlay_background_color_css_transitions_page" }, { @@ -2880,7 +2908,7 @@ "name": "rendering.desktop/particles" }, { - "duration": "27.0", + "duration": "26.0", "name": "rendering.desktop/pinterest_2018" }, { @@ -2912,7 +2940,7 @@ "name": "rendering.desktop/raf_touch_animation" }, { - "duration": "18.0", + "duration": "17.0", "name": "rendering.desktop/repaint_amazon_2018" }, { @@ -2944,19 +2972,19 @@ "name": "rendering.desktop/repaint_twitter_2018" }, { - "duration": "16.0", + "duration": "17.0", "name": "rendering.desktop/repaint_wikipedia_2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "rendering.desktop/repaint_yahoo_homepage_2018" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/runway_2019" }, { - "duration": "21.0", + "duration": "75.0", "name": "rendering.desktop/san_angeles" }, { @@ -2988,6 +3016,10 @@ "name": "rendering.desktop/skelebuddies_wasm_2020" }, { + "duration": "53.0", + "name": "rendering.desktop/skelebuddies_wasm_2020_fast_call" + }, + { "duration": "20.0", "name": "rendering.desktop/small_texture_uploads" }, @@ -2996,7 +3028,7 @@ "name": "rendering.desktop/smash_cat" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/spielzeugz" }, { @@ -3016,55 +3048,55 @@ "name": "rendering.desktop/sync_scroll_offset" }, { - "duration": "26.0", + "duration": "27.0", "name": "rendering.desktop/techcrunch_2018" }, { - "duration": "65.0", + "duration": "71.0", "name": "rendering.desktop/text_05000_pixels_per_second" }, { - "duration": "63.0", + "duration": "69.0", "name": "rendering.desktop/text_10000_pixels_per_second" }, { - "duration": "61.0", + "duration": "67.0", "name": "rendering.desktop/text_20000_pixels_per_second" }, { - "duration": "62.0", + "duration": "67.0", "name": "rendering.desktop/text_40000_pixels_per_second" }, { - "duration": "62.0", + "duration": "68.0", "name": "rendering.desktop/text_60000_pixels_per_second" }, { - "duration": "61.0", + "duration": "67.0", "name": "rendering.desktop/text_75000_pixels_per_second" }, { - "duration": "61.0", + "duration": "67.0", "name": "rendering.desktop/text_90000_pixels_per_second" }, { - "duration": "68.0", + "duration": "30.0", "name": "rendering.desktop/text_constant_full_page_raster_05000_pixels_per_second" }, { - "duration": "66.0", + "duration": "28.0", "name": "rendering.desktop/text_constant_full_page_raster_10000_pixels_per_second" }, { - "duration": "64.0", + "duration": "26.0", "name": "rendering.desktop/text_constant_full_page_raster_20000_pixels_per_second" }, { - "duration": "62.0", + "duration": "26.0", "name": "rendering.desktop/text_constant_full_page_raster_40000_pixels_per_second" }, { - "duration": "34.0", + "duration": "26.0", "name": "rendering.desktop/text_constant_full_page_raster_60000_pixels_per_second" }, { @@ -3076,47 +3108,47 @@ "name": "rendering.desktop/text_constant_full_page_raster_90000_pixels_per_second" }, { - "duration": "65.0", + "duration": "71.0", "name": "rendering.desktop/text_hover_05000_pixels_per_second" }, { - "duration": "64.0", + "duration": "69.0", "name": "rendering.desktop/text_hover_10000_pixels_per_second" }, { - "duration": "61.0", + "duration": "67.0", "name": "rendering.desktop/text_hover_20000_pixels_per_second" }, { - "duration": "62.0", + "duration": "67.0", "name": "rendering.desktop/text_hover_40000_pixels_per_second" }, { - "duration": "61.0", + "duration": "30.0", "name": "rendering.desktop/text_hover_60000_pixels_per_second" }, { - "duration": "61.0", + "duration": "26.0", "name": "rendering.desktop/text_hover_75000_pixels_per_second" }, { - "duration": "61.0", + "duration": "26.0", "name": "rendering.desktop/text_hover_90000_pixels_per_second" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.desktop/throughput_scrolling_active_handler" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.desktop/throughput_scrolling_composited" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.desktop/throughput_scrolling_passive_handler" }, { - "duration": "23.0", + "duration": "24.0", "name": "rendering.desktop/throughput_scrolling_uncomposited" }, { @@ -3124,6 +3156,10 @@ "name": "rendering.desktop/tiny_racing_v3_wasm_2020" }, { + "duration": "53.0", + "name": "rendering.desktop/tiny_racing_v3_wasm_2020_fast_call" + }, + { "duration": "20.0", "name": "rendering.desktop/toBlob_duration.html" }, @@ -3132,11 +3168,11 @@ "name": "rendering.desktop/toBlob_duration_jpeg.html" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/toBlob_small_canvas_in_worker.html" }, { - "duration": "17.0", + "duration": "18.0", "name": "rendering.desktop/touch_handler_scrolling" }, { @@ -3152,7 +3188,7 @@ "name": "rendering.desktop/transform_transitions_js_block" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/twitch_2018" }, { @@ -3164,7 +3200,7 @@ "name": "rendering.desktop/twitter_2018" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/twitter_pinch_2018" }, { @@ -3188,7 +3224,7 @@ "name": "rendering.desktop/video_to_sub_texture_premultiply" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/video_to_texture" }, { @@ -3208,11 +3244,11 @@ "name": "rendering.desktop/web_animation_value_type_length_simple" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/web_animation_value_type_path" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/web_animation_value_type_shadow" }, { @@ -3240,7 +3276,7 @@ "name": "rendering.desktop/web_animations_staggered_chaining" }, { - "duration": "20.0", + "duration": "28.0", "name": "rendering.desktop/web_animations_staggered_infinite_iterations" }, { @@ -3248,23 +3284,23 @@ "name": "rendering.desktop/web_animations_staggered_triggering_page" }, { - "duration": "19.0", + "duration": "20.0", "name": "rendering.desktop/webgl_to_texture" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/webp_decoding_rgb_and_gpu_rasterization" }, { - "duration": "15.0", + "duration": "16.0", "name": "rendering.desktop/webp_decoding_yuv_and_gpu_rasterization" }, { - "duration": "22.0", + "duration": "28.0", "name": "rendering.desktop/wikipedia_2018" }, { - "duration": "18.0", + "duration": "20.0", "name": "rendering.desktop/wordpress_2018" }, { @@ -3272,11 +3308,11 @@ "name": "rendering.desktop/yahoo_answers_2018" }, { - "duration": "23.0", + "duration": "22.0", "name": "rendering.desktop/yahoo_news_2018" }, { - "duration": "20.0", + "duration": "21.0", "name": "rendering.desktop/yahoo_news_pinch_2018" }, { @@ -3296,19 +3332,23 @@ "name": "rendering.desktop/youtube_pinch_2018" }, { - "duration": "40.0", + "duration": "36.0", "name": "speedometer-future/http://browserbench.org/Speedometer/" }, { - "duration": "36.0", + "duration": "35.0", "name": "speedometer/http://browserbench.org/Speedometer/" }, { - "duration": "81.0", + "duration": "65.0", "name": "speedometer2-future/Speedometer2" }, { - "duration": "63.0", + "duration": "70.0", + "name": "speedometer2-pcscan/Speedometer2" + }, + { + "duration": "61.0", "name": "speedometer2/Speedometer2" }, { @@ -3316,7 +3356,7 @@ "name": "system_health.common_desktop/browse:media:googleplaystore:2018" }, { - "duration": "73.0", + "duration": "72.0", "name": "system_health.common_desktop/browse:media:imgur" }, { @@ -3324,7 +3364,7 @@ "name": "system_health.common_desktop/browse:media:pinterest:2018" }, { - "duration": "63.0", + "duration": "62.0", "name": "system_health.common_desktop/browse:media:tumblr:2018" }, { @@ -3332,39 +3372,51 @@ "name": "system_health.common_desktop/browse:media:youtube:2019" }, { - "duration": "68.0", + "duration": "69.0", "name": "system_health.common_desktop/browse:media:youtubetv:2019" }, { - "duration": "76.0", + "duration": "77.0", "name": "system_health.common_desktop/browse:media:youtubetv_watch:2020" }, { - "duration": "54.0", + "duration": "51.0", "name": "system_health.common_desktop/browse:news:cnn:2020" }, { - "duration": "55.0", + "duration": "54.0", "name": "system_health.common_desktop/browse:news:flipboard:2018" }, { + "duration": "5.0", + "name": "system_health.common_desktop/browse:news:hackernews:2020" + }, + { "duration": "68.0", "name": "system_health.common_desktop/browse:news:nytimes:2020" }, { - "duration": "38.0", + "duration": "56.0", + "name": "system_health.common_desktop/browse:news:reddit:2020" + }, + { + "duration": "53.0", + "name": "system_health.common_desktop/browse:search:google:2020" + }, + { + "duration": "37.0", "name": "system_health.common_desktop/browse:search:google_india:2018" }, { - "duration": "75.0", + "duration": "71.0", "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "59.0", + "duration": "77.0", "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "52.0", + "duration": "50.0", "name": "system_health.common_desktop/browse:social:twitter:2018" }, { @@ -3372,63 +3424,63 @@ "name": "system_health.common_desktop/browse:social:twitter_infinite_scroll:2018" }, { - "duration": "61.0", + "duration": "59.0", "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "39.0", + "duration": "38.0", "name": "system_health.common_desktop/browse:tools:docs_scrolling" }, { - "duration": "77.0", + "duration": "75.0", "name": "system_health.common_desktop/browse:tools:earth:2020" }, { - "duration": "8.0", + "duration": "7.0", "name": "system_health.common_desktop/browse:tools:gmail-compose:2020" }, { - "duration": "8.0", + "duration": "7.0", "name": "system_health.common_desktop/browse:tools:gmail-labelclick:2020" }, { - "duration": "8.0", + "duration": "7.0", "name": "system_health.common_desktop/browse:tools:gmail-openconversation:2020" }, { - "duration": "8.0", + "duration": "7.0", "name": "system_health.common_desktop/browse:tools:gmail-search:2020" }, { - "duration": "72.0", + "duration": "73.0", "name": "system_health.common_desktop/browse:tools:maps:2019" }, { - "duration": "6.0", + "duration": "5.0", "name": "system_health.common_desktop/browse:tools:sheets:2019" }, { - "duration": "8.0", + "duration": "7.0", "name": "system_health.common_desktop/browse_accessibility:media:youtube" }, { - "duration": "32.0", + "duration": "31.0", "name": "system_health.common_desktop/browse_accessibility:tech:codesearch:2018" }, { - "duration": "24.0", + "duration": "22.0", "name": "system_health.common_desktop/load:chrome:blank" }, { - "duration": "22.0", + "duration": "21.0", "name": "system_health.common_desktop/load:games:alphabetty:2018" }, { - "duration": "21.0", + "duration": "20.0", "name": "system_health.common_desktop/load:games:bubbles:2020" }, { - "duration": "22.0", + "duration": "21.0", "name": "system_health.common_desktop/load:games:lazors" }, { @@ -3436,7 +3488,7 @@ "name": "system_health.common_desktop/load:games:miniclip:2018" }, { - "duration": "25.0", + "duration": "24.0", "name": "system_health.common_desktop/load:games:spychase:2018" }, { @@ -3444,11 +3496,11 @@ "name": "system_health.common_desktop/load:media:9gag" }, { - "duration": "22.0", + "duration": "21.0", "name": "system_health.common_desktop/load:media:dailymotion:2019" }, { - "duration": "24.0", + "duration": "22.0", "name": "system_health.common_desktop/load:media:facebook_feed:desktop:2020" }, { @@ -3456,15 +3508,15 @@ "name": "system_health.common_desktop/load:media:facebook_photos:2018" }, { - "duration": "23.0", + "duration": "21.0", "name": "system_health.common_desktop/load:media:facebook_photos:desktop:2020" }, { - "duration": "22.0", + "duration": "21.0", "name": "system_health.common_desktop/load:media:flickr:2018" }, { - "duration": "22.0", + "duration": "20.0", "name": "system_health.common_desktop/load:media:google_images:2018" }, { @@ -3488,7 +3540,11 @@ "name": "system_health.common_desktop/load:news:bbc:2018" }, { - "duration": "23.0", + "duration": "22.0", + "name": "system_health.common_desktop/load:news:cnn:2020" + }, + { + "duration": "22.0", "name": "system_health.common_desktop/load:news:flipboard" }, { @@ -3496,11 +3552,11 @@ "name": "system_health.common_desktop/load:news:hackernews:2018" }, { - "duration": "24.0", + "duration": "23.0", "name": "system_health.common_desktop/load:news:nytimes:2018" }, { - "duration": "25.0", + "duration": "24.0", "name": "system_health.common_desktop/load:news:qq:2018" }, { @@ -3508,11 +3564,11 @@ "name": "system_health.common_desktop/load:news:reddit:2018" }, { - "duration": "25.0", + "duration": "22.0", "name": "system_health.common_desktop/load:news:wikipedia:2018" }, { - "duration": "21.0", + "duration": "20.0", "name": "system_health.common_desktop/load:search:amazon:2018" }, { @@ -3524,15 +3580,15 @@ "name": "system_health.common_desktop/load:search:ebay:2018" }, { - "duration": "22.0", + "duration": "21.0", "name": "system_health.common_desktop/load:search:flipkart:2018" }, { - "duration": "21.0", + "duration": "20.0", "name": "system_health.common_desktop/load:search:google:2018" }, { - "duration": "23.0", + "duration": "22.0", "name": "system_health.common_desktop/load:search:taobao:2018" }, { @@ -3540,19 +3596,19 @@ "name": "system_health.common_desktop/load:search:yahoo:2018" }, { - "duration": "21.0", + "duration": "20.0", "name": "system_health.common_desktop/load:search:yandex:2018" }, { - "duration": "22.0", + "duration": "20.0", "name": "system_health.common_desktop/load:social:instagram:2018" }, { - "duration": "23.0", + "duration": "24.0", "name": "system_health.common_desktop/load:social:pinterest:2019" }, { - "duration": "21.0", + "duration": "20.0", "name": "system_health.common_desktop/load:social:vk:2018" }, { @@ -3560,7 +3616,7 @@ "name": "system_health.common_desktop/load:tools:chat:2020" }, { - "duration": "24.0", + "duration": "23.0", "name": "system_health.common_desktop/load:tools:docs:2019" }, { @@ -3568,27 +3624,27 @@ "name": "system_health.common_desktop/load:tools:drive:2019" }, { - "duration": "6.0", + "duration": "5.0", "name": "system_health.common_desktop/load:tools:gmail:2019" }, { - "duration": "21.0", + "duration": "20.0", "name": "system_health.common_desktop/load:tools:stackoverflow:2018" }, { - "duration": "22.0", + "duration": "21.0", "name": "system_health.common_desktop/load:tools:weather:2019" }, { - "duration": "23.0", + "duration": "22.0", "name": "system_health.common_desktop/load_accessibility:media:wikipedia:2018" }, { - "duration": "23.0", + "duration": "22.0", "name": "system_health.common_desktop/load_accessibility:shopping:amazon:2018" }, { - "duration": "139.0", + "duration": "124.0", "name": "system_health.common_desktop/long_running:tools:gmail-background" }, { @@ -3604,19 +3660,19 @@ "name": "system_health.common_desktop/multitab:misc:typical24:2018" }, { - "duration": "51.0", + "duration": "50.0", "name": "system_health.common_desktop/play:media:google_play_music" }, { - "duration": "50.0", + "duration": "48.0", "name": "system_health.common_desktop/play:media:soundcloud:2018" }, { - "duration": "38.0", + "duration": "37.0", "name": "system_health.memory_desktop/browse:media:googleplaystore:2018" }, { - "duration": "66.0", + "duration": "65.0", "name": "system_health.memory_desktop/browse:media:imgur" }, { @@ -3624,7 +3680,7 @@ "name": "system_health.memory_desktop/browse:media:pinterest:2018" }, { - "duration": "53.0", + "duration": "54.0", "name": "system_health.memory_desktop/browse:media:tumblr:2018" }, { @@ -3640,23 +3696,35 @@ "name": "system_health.memory_desktop/browse:media:youtubetv_watch:2020" }, { - "duration": "44.0", + "duration": "43.0", "name": "system_health.memory_desktop/browse:news:cnn:2020" }, { - "duration": "47.0", + "duration": "46.0", "name": "system_health.memory_desktop/browse:news:flipboard:2018" }, { - "duration": "60.0", + "duration": "49.0", + "name": "system_health.memory_desktop/browse:news:hackernews:2020" + }, + { + "duration": "58.0", "name": "system_health.memory_desktop/browse:news:nytimes:2020" }, { - "duration": "30.0", + "duration": "49.0", + "name": "system_health.memory_desktop/browse:news:reddit:2020" + }, + { + "duration": "45.0", + "name": "system_health.memory_desktop/browse:search:google:2020" + }, + { + "duration": "29.0", "name": "system_health.memory_desktop/browse:search:google_india:2018" }, { - "duration": "70.0", + "duration": "68.0", "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll:2018" }, { @@ -3672,11 +3740,11 @@ "name": "system_health.memory_desktop/browse:social:twitter_infinite_scroll:2018" }, { - "duration": "52.0", + "duration": "53.0", "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "32.0", + "duration": "31.0", "name": "system_health.memory_desktop/browse:tools:docs_scrolling" }, { @@ -3700,7 +3768,7 @@ "name": "system_health.memory_desktop/browse:tools:gmail-search:2020" }, { - "duration": "65.0", + "duration": "64.0", "name": "system_health.memory_desktop/browse:tools:maps:2019" }, { @@ -3708,11 +3776,11 @@ "name": "system_health.memory_desktop/browse:tools:sheets:2019" }, { - "duration": "3.0", + "duration": "2.0", "name": "system_health.memory_desktop/browse_accessibility:media:youtube" }, { - "duration": "25.0", + "duration": "24.0", "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch:2018" }, { @@ -3724,15 +3792,15 @@ "name": "system_health.memory_desktop/load:games:alphabetty:2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.memory_desktop/load:games:bubbles:2020" }, { - "duration": "21.0", + "duration": "19.0", "name": "system_health.memory_desktop/load:games:lazors" }, { - "duration": "21.0", + "duration": "20.0", "name": "system_health.memory_desktop/load:games:miniclip:2018" }, { @@ -3740,15 +3808,15 @@ "name": "system_health.memory_desktop/load:games:spychase:2018" }, { - "duration": "22.0", + "duration": "21.0", "name": "system_health.memory_desktop/load:media:9gag" }, { - "duration": "18.0", + "duration": "17.0", "name": "system_health.memory_desktop/load:media:dailymotion:2019" }, { - "duration": "18.0", + "duration": "17.0", "name": "system_health.memory_desktop/load:media:facebook_feed:desktop:2020" }, { @@ -3756,11 +3824,11 @@ "name": "system_health.memory_desktop/load:media:facebook_photos:2018" }, { - "duration": "18.0", + "duration": "17.0", "name": "system_health.memory_desktop/load:media:facebook_photos:desktop:2020" }, { - "duration": "18.0", + "duration": "17.0", "name": "system_health.memory_desktop/load:media:flickr:2018" }, { @@ -3768,11 +3836,11 @@ "name": "system_health.memory_desktop/load:media:google_images:2018" }, { - "duration": "18.0", + "duration": "17.0", "name": "system_health.memory_desktop/load:media:imgur:2018" }, { - "duration": "20.0", + "duration": "19.0", "name": "system_health.memory_desktop/load:media:soundcloud:2018" }, { @@ -3780,7 +3848,7 @@ "name": "system_health.memory_desktop/load:media:youtube:2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.memory_desktop/load:media:youtubelivingroom:2020" }, { @@ -3789,6 +3857,10 @@ }, { "duration": "18.0", + "name": "system_health.memory_desktop/load:news:cnn:2020" + }, + { + "duration": "17.0", "name": "system_health.memory_desktop/load:news:flipboard" }, { @@ -3796,15 +3868,15 @@ "name": "system_health.memory_desktop/load:news:hackernews:2018" }, { - "duration": "20.0", + "duration": "19.0", "name": "system_health.memory_desktop/load:news:nytimes:2018" }, { - "duration": "20.0", + "duration": "19.0", "name": "system_health.memory_desktop/load:news:qq:2018" }, { - "duration": "18.0", + "duration": "17.0", "name": "system_health.memory_desktop/load:news:reddit:2018" }, { @@ -3820,15 +3892,15 @@ "name": "system_health.memory_desktop/load:search:baidu:2018" }, { - "duration": "18.0", + "duration": "17.0", "name": "system_health.memory_desktop/load:search:ebay:2018" }, { - "duration": "18.0", + "duration": "17.0", "name": "system_health.memory_desktop/load:search:flipkart:2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.memory_desktop/load:search:google:2018" }, { @@ -3836,7 +3908,7 @@ "name": "system_health.memory_desktop/load:search:taobao:2018" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.memory_desktop/load:search:yahoo:2018" }, { @@ -3848,11 +3920,11 @@ "name": "system_health.memory_desktop/load:social:instagram:2018" }, { - "duration": "19.0", + "duration": "20.0", "name": "system_health.memory_desktop/load:social:pinterest:2019" }, { - "duration": "17.0", + "duration": "16.0", "name": "system_health.memory_desktop/load:social:vk:2018" }, { @@ -3860,11 +3932,11 @@ "name": "system_health.memory_desktop/load:tools:chat:2020" }, { - "duration": "20.0", + "duration": "19.0", "name": "system_health.memory_desktop/load:tools:docs:2019" }, { - "duration": "18.0", + "duration": "19.0", "name": "system_health.memory_desktop/load:tools:drive:2019" }, { @@ -3892,7 +3964,7 @@ "name": "system_health.memory_desktop/long_running:tools:gmail-background" }, { - "duration": "131.0", + "duration": "128.0", "name": "system_health.memory_desktop/long_running:tools:gmail-foreground" }, { @@ -3908,10 +3980,42 @@ "name": "system_health.memory_desktop/play:media:google_play_music" }, { - "duration": "41.0", + "duration": "40.0", "name": "system_health.memory_desktop/play:media:soundcloud:2018" }, { + "duration": "82.0", + "name": "tab_search/tab_search:close_and_open:2020" + }, + { + "duration": "287.0", + "name": "tab_search/tab_search:scroll_up_and_down:2020" + }, + { + "duration": "314.0", + "name": "tab_search/tab_search:top100:2020" + }, + { + "duration": "309.0", + "name": "tab_search/tab_search:top100:loading:2020" + }, + { + "duration": "90.0", + "name": "tab_search/tab_search:top10:2020" + }, + { + "duration": "78.0", + "name": "tab_search/tab_search:top10:loading:2020" + }, + { + "duration": "171.0", + "name": "tab_search/tab_search:top50:2020" + }, + { + "duration": "167.0", + "name": "tab_search/tab_search:top50:loading:2020" + }, + { "duration": "0.0", "name": "tab_switching.typical_25/multitab:misc:typical24" }, @@ -3920,15 +4024,15 @@ "name": "tracing.tracing_with_background_memory_infra/Facebook" }, { - "duration": "15.0", + "duration": "14.0", "name": "tracing.tracing_with_background_memory_infra/Wikipedia" }, { - "duration": "14.0", + "duration": "13.0", "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com" }, { - "duration": "13.0", + "duration": "14.0", "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/" }, { @@ -3952,143 +4056,167 @@ "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/" }, { - "duration": "48.0", + "duration": "49.0", "name": "v8.browsing_desktop-future/browse:media:googleplaystore:2018" }, { - "duration": "10.0", + "duration": "12.0", "name": "v8.browsing_desktop-future/browse:media:imgur" }, { - "duration": "94.0", + "duration": "98.0", "name": "v8.browsing_desktop-future/browse:media:pinterest:2018" }, { - "duration": "63.0", + "duration": "66.0", "name": "v8.browsing_desktop-future/browse:media:tumblr:2018" }, { - "duration": "10.0", + "duration": "12.0", "name": "v8.browsing_desktop-future/browse:media:youtube:2019" }, { - "duration": "69.0", + "duration": "71.0", "name": "v8.browsing_desktop-future/browse:media:youtubetv:2019" }, { - "duration": "79.0", + "duration": "80.0", "name": "v8.browsing_desktop-future/browse:media:youtubetv_watch:2020" }, { - "duration": "34.0", + "duration": "31.0", "name": "v8.browsing_desktop-future/browse:news:cnn:2020" }, { - "duration": "57.0", + "duration": "78.0", "name": "v8.browsing_desktop-future/browse:news:flipboard:2018" }, { - "duration": "10.0", + "duration": "12.0", + "name": "v8.browsing_desktop-future/browse:news:hackernews:2020" + }, + { + "duration": "12.0", "name": "v8.browsing_desktop-future/browse:news:nytimes:2020" }, { - "duration": "40.0", - "name": "v8.browsing_desktop-future/browse:search:google_india:2018" - }, - { - "duration": "100.0", - "name": "v8.browsing_desktop-future/browse:social:facebook_infinite_scroll:2018" + "duration": "61.0", + "name": "v8.browsing_desktop-future/browse:news:reddit:2020" }, { "duration": "60.0", - "name": "v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll:2018" - }, - { - "duration": "52.0", - "name": "v8.browsing_desktop-future/browse:social:twitter:2018" - }, - { - "duration": "66.0", - "name": "v8.browsing_desktop-future/browse:social:twitter_infinite_scroll:2018" - }, - { - "duration": "86.0", - "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll:2018" + "name": "v8.browsing_desktop-future/browse:search:google:2020" }, { "duration": "41.0", - "name": "v8.browsing_desktop-future/browse:tools:docs_scrolling" + "name": "v8.browsing_desktop-future/browse:search:google_india:2018" }, { - "duration": "103.0", - "name": "v8.browsing_desktop-future/browse:tools:earth:2020" - }, - { - "duration": "10.0", - "name": "v8.browsing_desktop-future/browse:tools:gmail-compose:2020" - }, - { - "duration": "10.0", - "name": "v8.browsing_desktop-future/browse:tools:gmail-labelclick:2020" - }, - { - "duration": "10.0", - "name": "v8.browsing_desktop-future/browse:tools:gmail-openconversation:2020" - }, - { - "duration": "10.0", - "name": "v8.browsing_desktop-future/browse:tools:gmail-search:2020" - }, - { - "duration": "76.0", - "name": "v8.browsing_desktop-future/browse:tools:maps:2019" - }, - { - "duration": "10.0", - "name": "v8.browsing_desktop-future/browse:tools:sheets:2019" - }, - { - "duration": "51.0", - "name": "v8.browsing_desktop/browse:media:googleplaystore:2018" - }, - { - "duration": "14.0", - "name": "v8.browsing_desktop/browse:media:imgur" - }, - { - "duration": "98.0", - "name": "v8.browsing_desktop/browse:media:pinterest:2018" - }, - { - "duration": "67.0", - "name": "v8.browsing_desktop/browse:media:tumblr:2018" - }, - { - "duration": "14.0", - "name": "v8.browsing_desktop/browse:media:youtube:2019" - }, - { - "duration": "73.0", - "name": "v8.browsing_desktop/browse:media:youtubetv:2019" + "duration": "97.0", + "name": "v8.browsing_desktop-future/browse:social:facebook_infinite_scroll:2018" }, { "duration": "82.0", + "name": "v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll:2018" + }, + { + "duration": "54.0", + "name": "v8.browsing_desktop-future/browse:social:twitter:2018" + }, + { + "duration": "69.0", + "name": "v8.browsing_desktop-future/browse:social:twitter_infinite_scroll:2018" + }, + { + "duration": "84.0", + "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll:2018" + }, + { + "duration": "42.0", + "name": "v8.browsing_desktop-future/browse:tools:docs_scrolling" + }, + { + "duration": "99.0", + "name": "v8.browsing_desktop-future/browse:tools:earth:2020" + }, + { + "duration": "12.0", + "name": "v8.browsing_desktop-future/browse:tools:gmail-compose:2020" + }, + { + "duration": "12.0", + "name": "v8.browsing_desktop-future/browse:tools:gmail-labelclick:2020" + }, + { + "duration": "12.0", + "name": "v8.browsing_desktop-future/browse:tools:gmail-openconversation:2020" + }, + { + "duration": "12.0", + "name": "v8.browsing_desktop-future/browse:tools:gmail-search:2020" + }, + { + "duration": "78.0", + "name": "v8.browsing_desktop-future/browse:tools:maps:2019" + }, + { + "duration": "12.0", + "name": "v8.browsing_desktop-future/browse:tools:sheets:2019" + }, + { + "duration": "52.0", + "name": "v8.browsing_desktop/browse:media:googleplaystore:2018" + }, + { + "duration": "15.0", + "name": "v8.browsing_desktop/browse:media:imgur" + }, + { + "duration": "99.0", + "name": "v8.browsing_desktop/browse:media:pinterest:2018" + }, + { + "duration": "68.0", + "name": "v8.browsing_desktop/browse:media:tumblr:2018" + }, + { + "duration": "15.0", + "name": "v8.browsing_desktop/browse:media:youtube:2019" + }, + { + "duration": "74.0", + "name": "v8.browsing_desktop/browse:media:youtubetv:2019" + }, + { + "duration": "83.0", "name": "v8.browsing_desktop/browse:media:youtubetv_watch:2020" }, { - "duration": "16.0", + "duration": "19.0", "name": "v8.browsing_desktop/browse:news:cnn:2020" }, { - "duration": "64.0", + "duration": "66.0", "name": "v8.browsing_desktop/browse:news:flipboard:2018" }, { - "duration": "14.0", + "duration": "15.0", + "name": "v8.browsing_desktop/browse:news:hackernews:2020" + }, + { + "duration": "15.0", "name": "v8.browsing_desktop/browse:news:nytimes:2020" }, { - "duration": "43.0", + "duration": "64.0", + "name": "v8.browsing_desktop/browse:news:reddit:2020" + }, + { + "duration": "66.0", + "name": "v8.browsing_desktop/browse:search:google:2020" + }, + { + "duration": "44.0", "name": "v8.browsing_desktop/browse:search:google_india:2018" }, { @@ -4096,43 +4224,43 @@ "name": "v8.browsing_desktop/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "64.0", + "duration": "74.0", "name": "v8.browsing_desktop/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "56.0", + "duration": "57.0", "name": "v8.browsing_desktop/browse:social:twitter:2018" }, { - "duration": "69.0", + "duration": "70.0", "name": "v8.browsing_desktop/browse:social:twitter_infinite_scroll:2018" }, { - "duration": "68.0", + "duration": "71.0", "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "45.0", + "duration": "50.0", "name": "v8.browsing_desktop/browse:tools:docs_scrolling" }, { - "duration": "86.0", + "duration": "88.0", "name": "v8.browsing_desktop/browse:tools:earth:2020" }, { - "duration": "16.0", + "duration": "19.0", "name": "v8.browsing_desktop/browse:tools:gmail-compose:2020" }, { - "duration": "16.0", + "duration": "19.0", "name": "v8.browsing_desktop/browse:tools:gmail-labelclick:2020" }, { - "duration": "16.0", + "duration": "19.0", "name": "v8.browsing_desktop/browse:tools:gmail-openconversation:2020" }, { - "duration": "16.0", + "duration": "19.0", "name": "v8.browsing_desktop/browse:tools:gmail-search:2020" }, { @@ -4140,59 +4268,83 @@ "name": "v8.browsing_desktop/browse:tools:maps:2019" }, { - "duration": "14.0", + "duration": "15.0", "name": "v8.browsing_desktop/browse:tools:sheets:2019" }, { - "duration": "28.0", + "duration": "24.0", "name": "webrtc/10s_datachannel_transfer" }, { - "duration": "26.0", + "duration": "22.0", "name": "webrtc/canvas_capture_peer_connection" }, { - "duration": "36.0", + "duration": "32.0", "name": "webrtc/codec_constraints_h264" }, { - "duration": "36.0", + "duration": "32.0", "name": "webrtc/codec_constraints_vp8" }, { - "duration": "35.0", + "duration": "32.0", "name": "webrtc/codec_constraints_vp9" }, { - "duration": "26.0", + "duration": "22.0", "name": "webrtc/hd_local_stream_10s" }, { - "duration": "37.0", + "duration": "23.0", + "name": "webrtc/insertable_streams_video_processing_camera_canvas2d_video" + }, + { + "duration": "22.0", + "name": "webrtc/insertable_streams_video_processing_camera_drop_video" + }, + { + "duration": "23.0", + "name": "webrtc/insertable_streams_video_processing_camera_webgl_pc" + }, + { + "duration": "22.0", + "name": "webrtc/insertable_streams_video_processing_camera_webgl_video" + }, + { + "duration": "22.0", + "name": "webrtc/insertable_streams_video_processing_pc_webgl_video" + }, + { + "duration": "23.0", + "name": "webrtc/insertable_streams_video_processing_video_webgl_video" + }, + { + "duration": "34.0", "name": "webrtc/multiple_peerconnections" }, { - "duration": "13.0", + "duration": "9.0", "name": "webrtc/pause_play_peerconnections" }, { - "duration": "125.0", - "name": "components_perftests/_gtest_" - }, - { "duration": "7.0", "name": "views_perftests/_gtest_" }, { + "duration": "16.0", + "name": "media_perftests/_gtest_" + }, + { "duration": "600.0", "name": "dawn_perf_tests/_gtest_" }, { - "duration": "200.0", - "name": "base_perftests/_gtest_" + "duration": "125.0", + "name": "components_perftests/_gtest_" }, { - "duration": "16.0", - "name": "media_perftests/_gtest_" + "duration": "200.0", + "name": "base_perftests/_gtest_" } ] \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/win-10_laptop_low_end-perf_timing.json b/tools/perf/core/shard_maps/timing_data/win-10_laptop_low_end-perf_timing.json index 5c46018..e8a108e 100644 --- a/tools/perf/core/shard_maps/timing_data/win-10_laptop_low_end-perf_timing.json +++ b/tools/perf/core/shard_maps/timing_data/win-10_laptop_low_end-perf_timing.json
@@ -1,18 +1,18 @@ [ { - "duration": "67.0", + "duration": "30.0", "name": "blink_perf.accessibility/build-table.html" }, { - "duration": "30.0", + "duration": "24.0", "name": "blink_perf.accessibility/focus-links.html" }, { - "duration": "28.0", + "duration": "27.0", "name": "blink_perf.accessibility/line-breaks.html" }, { - "duration": "38.0", + "duration": "36.0", "name": "blink_perf.accessibility/many-text-changes-deep-block-subtree.html" }, { @@ -20,15 +20,15 @@ "name": "blink_perf.accessibility/many-text-changes-deep-hidden-subtree.html" }, { - "duration": "33.0", + "duration": "30.0", "name": "blink_perf.accessibility/many-text-changes-deep-inline-subtree.html" }, { - "duration": "39.0", + "duration": "37.0", "name": "blink_perf.accessibility/many-text-changes-small-wait-between.html" }, { - "duration": "26.0", + "duration": "25.0", "name": "blink_perf.accessibility/textarea-append.html" }, { @@ -36,7 +36,7 @@ "name": "blink_perf.bindings/append-child.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.bindings/create-element.html" }, { @@ -52,15 +52,15 @@ "name": "blink_perf.bindings/first-child.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.bindings/gc-forest.html" }, { - "duration": "14.0", + "duration": "12.0", "name": "blink_perf.bindings/gc-mini-tree.html" }, { - "duration": "21.0", + "duration": "18.0", "name": "blink_perf.bindings/gc-tree.html" }, { @@ -96,7 +96,7 @@ "name": "blink_perf.bindings/insert-before.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.bindings/named-property-enumerator.html" }, { @@ -112,7 +112,7 @@ "name": "blink_perf.bindings/post-message.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.bindings/sequence-conversion-array.html" }, { @@ -144,11 +144,11 @@ "name": "blink_perf.bindings/set-attribute.html" }, { - "duration": "17.0", + "duration": "15.0", "name": "blink_perf.bindings/structured-clone-json-deserialize.html" }, { - "duration": "17.0", + "duration": "15.0", "name": "blink_perf.bindings/structured-clone-json-serialize.html" }, { @@ -180,7 +180,7 @@ "name": "blink_perf.bindings/undefined-first-child.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.bindings/undefined-get-element-by-id.html" }, { @@ -192,19 +192,19 @@ "name": "blink_perf.bindings/worker-structured-clone-different-payloads.html" }, { - "duration": "29.0", + "duration": "27.0", "name": "blink_perf.bindings/worker-structured-clone-json-from-worker.html" }, { - "duration": "29.0", + "duration": "26.0", "name": "blink_perf.bindings/worker-structured-clone-json-roundtrip.html" }, { - "duration": "29.0", + "duration": "26.0", "name": "blink_perf.bindings/worker-structured-clone-json-to-worker.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.bindings/worker-structured-clone-workerDOM-DBMon-from-worker.html" }, { @@ -212,27 +212,27 @@ "name": "blink_perf.bindings/worker-structured-clone-workerDOM-Map-from-worker.html" }, { - "duration": "17.0", + "duration": "16.0", "name": "blink_perf.bindings/worker-text-encoded-transferable-from-worker.html" }, { - "duration": "17.0", + "duration": "16.0", "name": "blink_perf.bindings/worker-text-encoded-transferable-roundtrip.html" }, { - "duration": "17.0", + "duration": "16.0", "name": "blink_perf.bindings/worker-text-encoded-transferable-to-worker.html" }, { - "duration": "16.0", + "duration": "15.0", "name": "blink_perf.bindings/worker-transferable-from-worker.html" }, { - "duration": "16.0", + "duration": "15.0", "name": "blink_perf.bindings/worker-transferable-roundtrip.html" }, { - "duration": "16.0", + "duration": "15.0", "name": "blink_perf.bindings/worker-transferable-to-worker.html" }, { @@ -256,7 +256,7 @@ "name": "blink_perf.css/CSSPropertyUpdateValue.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "blink_perf.css/ChangeStyleCSSVariableRecalc.html" }, { @@ -276,15 +276,15 @@ "name": "blink_perf.css/ChangeStyleElementSelector.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html" }, { @@ -296,11 +296,11 @@ "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html" }, { @@ -308,11 +308,11 @@ "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html" }, { - "duration": "14.0", + "duration": "15.0", "name": "blink_perf.css/ChangeStyleShallowTree.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.css/ChangeStyleSingleClassSelector.html" }, { @@ -320,19 +320,19 @@ "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.css/ChangeStyleUniversalSelector.html" }, { - "duration": "13.0", + "duration": "12.0", "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html" }, { @@ -364,11 +364,11 @@ "name": "blink_perf.css/CustomPropertiesRootInheritance.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.css/CustomPropertiesVarAlias.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.css/ExplicitInheritance.html" }, { @@ -392,7 +392,7 @@ "name": "blink_perf.css/PseudoClassSelectors.html" }, { - "duration": "23.0", + "duration": "26.0", "name": "blink_perf.css/SelectorCountScaling.html" }, { @@ -408,15 +408,15 @@ "name": "blink_perf.dom/long-sibling-list.html" }, { - "duration": "7.0", + "duration": "9.0", "name": "blink_perf.dom/modify-element-classname.html" }, { - "duration": "8.0", + "duration": "7.0", "name": "blink_perf.dom/modify-element-id.html" }, { - "duration": "5.0", + "duration": "7.0", "name": "blink_perf.dom/modify-element-title.html" }, { @@ -440,15 +440,15 @@ "name": "blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html" }, { - "duration": "27.0", + "duration": "24.0", "name": "blink_perf.events/EventsDispatchingInV1ShadowTrees.html" }, { - "duration": "22.0", + "duration": "23.0", "name": "blink_perf.events/hit-test-lots-of-layers.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.events/is-input-pending-default-events.html" }, { @@ -464,7 +464,7 @@ "name": "blink_perf.image_decoder/decode-jpeg-h1v1.html" }, { - "duration": "21.0", + "duration": "20.0", "name": "blink_perf.image_decoder/decode-jpeg-h1v2.html" }, { @@ -476,7 +476,7 @@ "name": "blink_perf.image_decoder/decode-jpeg-h2v2.html" }, { - "duration": "33.0", + "duration": "36.0", "name": "blink_perf.image_decoder/decode-lossless-webp.html" }, { @@ -484,19 +484,19 @@ "name": "blink_perf.image_decoder/decode-lossy-webp.html" }, { - "duration": "25.0", + "duration": "26.0", "name": "blink_perf.image_decoder/decode-png-palette-opaque.html" }, { - "duration": "20.0", + "duration": "21.0", "name": "blink_perf.image_decoder/decode-png-palette.html" }, { - "duration": "31.0", + "duration": "37.0", "name": "blink_perf.image_decoder/decode-png.html" }, { - "duration": "16.0", + "duration": "18.0", "name": "blink_perf.layout/ArabicLineLayout.html" }, { @@ -504,7 +504,7 @@ "name": "blink_perf.layout/Shapes/MultipleShapes.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.layout/SimpleTextPathLineLayout.html" }, { @@ -512,7 +512,7 @@ "name": "blink_perf.layout/abspos.html" }, { - "duration": "15.0", + "duration": "9.0", "name": "blink_perf.layout/add-remove-inline-floats.html" }, { @@ -524,23 +524,23 @@ "name": "blink_perf.layout/attach-inlines-2.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.layout/attach-inlines.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/auto-grid-lots-of-data.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/auto-grid-lots-of-spanning-data.html" }, { - "duration": "14.0", + "duration": "13.0", "name": "blink_perf.layout/change-text-css-contain.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.layout/chapter-reflow-once-random.html" }, { @@ -548,27 +548,27 @@ "name": "blink_perf.layout/chapter-reflow-once.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/chapter-reflow-thrice.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/chapter-reflow-twice.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/chapter-reflow.html" }, { - "duration": "7.0", + "duration": "6.0", "name": "blink_perf.layout/character_fallback.html" }, { - "duration": "9.0", + "duration": "8.0", "name": "blink_perf.layout/contain-content-style-change.html" }, { - "duration": "7.0", + "duration": "5.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,71 +584,71 @@ "name": "blink_perf.layout/editing_append.html" }, { - "duration": "11.0", + "duration": "9.0", "name": "blink_perf.layout/editing_append_single_line.html" }, { - "duration": "10.0", + "duration": "9.0", "name": "blink_perf.layout/editing_delete.html" }, { - "duration": "11.0", + "duration": "9.0", "name": "blink_perf.layout/editing_insert.html" }, { - "duration": "11.0", + "duration": "9.0", "name": "blink_perf.layout/editing_prepend.html" }, { - "duration": "21.0", + "duration": "18.0", "name": "blink_perf.layout/fit-content-change-available-size-blocks.html" }, { - "duration": "12.0", + "duration": "10.0", "name": "blink_perf.layout/fit-content-change-available-size-text.html" }, { - "duration": "14.0", + "duration": "18.0", "name": "blink_perf.layout/fixed-grid-lots-of-data.html" }, { - "duration": "14.0", + "duration": "12.0", "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": "12.0", + "duration": "10.0", "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html" }, { - "duration": "12.0", + "duration": "10.0", "name": "blink_perf.layout/flexbox-hittest.html" }, { - "duration": "13.0", + "duration": "11.0", "name": "blink_perf.layout/flexbox-input.html" }, { - "duration": "12.0", + "duration": "10.0", "name": "blink_perf.layout/flexbox-lots-of-data.html" }, { - "duration": "12.0", + "duration": "10.0", "name": "blink_perf.layout/flexbox-row-nowrap.html" }, { - "duration": "18.0", + "duration": "14.0", "name": "blink_perf.layout/flexbox-row-stretch-height-definite.html" }, { - "duration": "12.0", + "duration": "10.0", "name": "blink_perf.layout/flexbox-row-stretch-height-indefinite.html" }, { @@ -668,47 +668,47 @@ "name": "blink_perf.layout/floats_100_100.html" }, { - "duration": "16.0", + "duration": "17.0", "name": "blink_perf.layout/floats_100_100_nested.html" }, { - "duration": "16.0", + "duration": "18.0", "name": "blink_perf.layout/floats_10_1000.html" }, { - "duration": "7.0", + "duration": "10.0", "name": "blink_perf.layout/floats_20_100.html" }, { - "duration": "9.0", + "duration": "10.0", "name": "blink_perf.layout/floats_20_100_nested.html" }, { - "duration": "7.0", + "duration": "8.0", "name": "blink_perf.layout/floats_2_100.html" }, { - "duration": "6.0", + "duration": "8.0", "name": "blink_perf.layout/floats_2_100_nested.html" }, { - "duration": "11.0", + "duration": "10.0", "name": "blink_perf.layout/floats_50_100.html" }, { - "duration": "8.0", + "duration": "11.0", "name": "blink_perf.layout/floats_50_100_nested.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.layout/floats_show_hide.html" }, { - "duration": "19.0", + "duration": "33.0", "name": "blink_perf.layout/hindi-line-layout.html" }, { - "duration": "7.0", + "duration": "9.0", "name": "blink_perf.layout/hittest-block-children.html" }, { @@ -716,27 +716,27 @@ "name": "blink_perf.layout/japanese-kokoro-insert.html" }, { - "duration": "16.0", + "duration": "18.0", "name": "blink_perf.layout/large-grid.html" }, { - "duration": "11.0", + "duration": "13.0", "name": "blink_perf.layout/large-spanning-grid-item.html" }, { - "duration": "20.0", + "duration": "21.0", "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html" }, { - "duration": "19.0", + "duration": "21.0", "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html" }, { - "duration": "19.0", + "duration": "21.0", "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html" }, { - "duration": "15.0", + "duration": "17.0", "name": "blink_perf.layout/latin-ebook-resize.html" }, { @@ -748,7 +748,7 @@ "name": "blink_perf.layout/layers_overlap_2d.html" }, { - "duration": "6.0", + "duration": "9.0", "name": "blink_perf.layout/layers_overlap_3d.html" }, { @@ -756,7 +756,7 @@ "name": "blink_perf.layout/line-layout-fit-content-break-word.html" }, { - "duration": "13.0", + "duration": "16.0", "name": "blink_perf.layout/line-layout-fit-content.html" }, { @@ -772,19 +772,19 @@ "name": "blink_perf.layout/line-layout-repeat-append.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.layout/line-layout.html" }, { - "duration": "5.0", + "duration": "7.0", "name": "blink_perf.layout/long-line-nowrap-collapse.html" }, { - "duration": "6.0", + "duration": "5.0", "name": "blink_perf.layout/long-line-nowrap-spans-collapse.html" }, { - "duration": "14.0", + "duration": "16.0", "name": "blink_perf.layout/long-line-nowrap.html" }, { @@ -792,7 +792,7 @@ "name": "blink_perf.layout/many-block-children-auto-inline-size.html" }, { - "duration": "12.0", + "duration": "14.0", "name": "blink_perf.layout/many-block-children-fixed-inline-size.html" }, { @@ -800,7 +800,7 @@ "name": "blink_perf.layout/multicol/balance-forced-breaks.html" }, { - "duration": "11.0", + "duration": "14.0", "name": "blink_perf.layout/multicol/deeply-nested-tables.html" }, { @@ -808,7 +808,7 @@ "name": "blink_perf.layout/multicol/fixed-height-with-spanner-and-nested-tables.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.layout/multicol/lots-of-small-nested-unbreakable-blocks-autofill.html" }, { @@ -816,7 +816,7 @@ "name": "blink_perf.layout/multicol/lots-of-small-unbreakable-blocks-autofill.html" }, { - "duration": "11.0", + "duration": "13.0", "name": "blink_perf.layout/multicol/lots-of-text-autofill.html" }, { @@ -824,7 +824,7 @@ "name": "blink_perf.layout/multicol/lots-of-text-balanced-orphans-widows.html" }, { - "duration": "11.0", + "duration": "13.0", "name": "blink_perf.layout/multicol/lots-of-text-balanced.html" }, { @@ -832,115 +832,115 @@ "name": "blink_perf.layout/multicol/nested-forced-breaks.html" }, { - "duration": "9.0", + "duration": "11.0", "name": "blink_perf.layout/multicol/tall-content-short-columns-realistic.html" }, { - "duration": "9.0", + "duration": "12.0", "name": "blink_perf.layout/multicol/tall-content-short-columns.html" }, { - "duration": "11.0", + "duration": "13.0", "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html" }, { - "duration": "10.0", + "duration": "12.0", "name": "blink_perf.layout/nested-grid-lots-of-tracks.html" }, { - "duration": "11.0", + "duration": "13.0", "name": "blink_perf.layout/nested-grid.html" }, { - "duration": "11.0", + "duration": "12.0", "name": "blink_perf.layout/nested-percent-height-tables.html" }, { - "duration": "18.0", + "duration": "19.0", "name": "blink_perf.layout/ruby.html" }, { - "duration": "83.0", + "duration": "82.0", "name": "blink_perf.layout/subtree-detaching.html" }, { - "duration": "10.0", + "duration": "11.0", "name": "blink_perf.layout/vertical-japanese-kokoro-insert.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.layout/word-break-break-all.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.layout/word-break-break-word.html" }, { - "duration": "4.0", + "duration": "6.0", "name": "blink_perf.layout/word-wrap-break-word.html" }, { - "duration": "24.0", + "duration": "26.0", "name": "blink_perf.owp_storage/blob-perf-files.html" }, { - "duration": "22.0", + "duration": "25.0", "name": "blink_perf.owp_storage/blob-perf-ipc.html" }, { - "duration": "19.0", + "duration": "21.0", "name": "blink_perf.owp_storage/blob-perf-shm.html" }, { - "duration": "22.0", + "duration": "25.0", "name": "blink_perf.owp_storage/blob-perf-tiny.html" }, { - "duration": "23.0", + "duration": "26.0", "name": "blink_perf.owp_storage/idb-load-docs.html" }, { - "duration": "36.0", + "duration": "43.0", "name": "blink_perf.owp_storage/idb-put-all.html" }, { - "duration": "40.0", + "duration": "50.0", "name": "blink_perf.owp_storage/idb-put.html" }, { - "duration": "23.0", + "duration": "25.0", "name": "blink_perf.paint/appending-text.html" }, { - "duration": "32.0", + "duration": "36.0", "name": "blink_perf.paint/color-changes.html" }, { - "duration": "27.0", + "duration": "31.0", "name": "blink_perf.paint/complex-content-slow-scroll.html" }, { - "duration": "28.0", + "duration": "30.0", "name": "blink_perf.paint/complex-iframe-filtered.html" }, { - "duration": "63.0", + "duration": "67.0", "name": "blink_perf.paint/contain-update-layer-tree.html" }, { - "duration": "29.0", + "duration": "31.0", "name": "blink_perf.paint/containment-resize.html" }, { - "duration": "26.0", + "duration": "28.0", "name": "blink_perf.paint/fixed-and-many-layers-scroll.html" }, { - "duration": "29.0", + "duration": "32.0", "name": "blink_perf.paint/large-table-background-change.html" }, { - "duration": "25.0", + "duration": "27.0", "name": "blink_perf.paint/large-table-collapsed-border-change.html" }, { @@ -948,35 +948,35 @@ "name": "blink_perf.paint/modify-selection.html" }, { - "duration": "23.0", + "duration": "25.0", "name": "blink_perf.paint/move-text-with-mask.html" }, { - "duration": "28.0", + "duration": "30.0", "name": "blink_perf.paint/paint-offset-changes.html" }, { - "duration": "37.0", + "duration": "40.0", "name": "blink_perf.paint/transform-changes.html" }, { - "duration": "16.0", + "duration": "17.0", "name": "blink_perf.parser/css-parser-yui.html" }, { - "duration": "22.0", + "duration": "12.0", "name": "blink_perf.parser/declarative-shadow-dom-cloning.html" }, { - "duration": "13.0", + "duration": "14.0", "name": "blink_perf.parser/declarative-shadow-dom.html" }, { - "duration": "10.0", + "duration": "13.0", "name": "blink_perf.parser/html-parser-threaded.html" }, { - "duration": "10.0", + "duration": "14.0", "name": "blink_perf.parser/html-parser.html" }, { @@ -984,103 +984,103 @@ "name": "blink_perf.parser/html5-full-render.html" }, { - "duration": "20.0", + "duration": "25.0", "name": "blink_perf.parser/iframe-append-remove.html" }, { - "duration": "10.0", + "duration": "12.0", "name": "blink_perf.parser/innerHTML-setter-siblings.html" }, { - "duration": "10.0", + "duration": "14.0", "name": "blink_perf.parser/innerHTML-setter.html" }, { - "duration": "10.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": "11.0", + "duration": "12.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": "11.0", + "duration": "13.0", "name": "blink_perf.parser/query-selector-all-class.html" }, { - "duration": "11.0", + "duration": "13.0", "name": "blink_perf.parser/query-selector-all-deep.html" }, { - "duration": "11.0", + "duration": "12.0", "name": "blink_perf.parser/query-selector-all-first.html" }, { - "duration": "12.0", + "duration": "13.0", "name": "blink_perf.parser/query-selector-all-id-deep.html" }, { - "duration": "16.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": "10.0", + "duration": "12.0", "name": "blink_perf.parser/query-selector-all-last.html" }, { - "duration": "10.0", + "duration": "14.0", "name": "blink_perf.parser/query-selector-deep.html" }, { - "duration": "10.0", + "duration": "12.0", "name": "blink_perf.parser/query-selector-first.html" }, { - "duration": "10.0", + "duration": "13.0", "name": "blink_perf.parser/query-selector-id-deep.html" }, { - "duration": "11.0", + "duration": "13.0", "name": "blink_perf.parser/query-selector-id-last.html" }, { - "duration": "10.0", + "duration": "13.0", "name": "blink_perf.parser/query-selector-last.html" }, { - "duration": "10.0", + "duration": "12.0", "name": "blink_perf.parser/simple-url.html" }, { - "duration": "11.0", + "duration": "14.0", "name": "blink_perf.parser/textarea-parsing.html" }, { - "duration": "11.0", + "duration": "14.0", "name": "blink_perf.parser/tiny-innerHTML.html" }, { - "duration": "10.0", + "duration": "13.0", "name": "blink_perf.parser/url-parser.html" }, { - "duration": "9.0", + "duration": "13.0", "name": "blink_perf.parser/xml-parser.html" }, { @@ -1112,11 +1112,11 @@ "name": "blink_perf.shadow_dom/imperative-api-custom-detail-summary.html" }, { - "duration": "3.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/imperative-api-detail-summary-large.html" }, { - "duration": "3.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/imperative-api-detail-summary.html" }, { @@ -1136,43 +1136,43 @@ "name": "blink_perf.shadow_dom/shadow-style-share-media-query.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.shadow_dom/shadow-style-share-with-distribution.html" }, { - "duration": "3.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/shadow-style-share.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.shadow_dom/style-sheet-insert.html" }, { - "duration": "12.0", + "duration": "17.0", "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html" }, { - "duration": "3.0", + "duration": "5.0", "name": "blink_perf.shadow_dom/v1-distribution.html" }, { - "duration": "3.0", + "duration": "5.0", "name": "blink_perf.shadow_dom/v1-host-child-append.html" }, { - "duration": "12.0", + "duration": "17.0", "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html" }, { - "duration": "15.0", + "duration": "20.0", "name": "blink_perf.shadow_dom/v1-large-deep-layout.html" }, { - "duration": "3.0", + "duration": "5.0", "name": "blink_perf.shadow_dom/v1-large-shallow-append-layout.html" }, { - "duration": "3.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-large-shallow-distribution.html" }, { @@ -1180,27 +1180,27 @@ "name": "blink_perf.shadow_dom/v1-large-shallow-layout.html" }, { - "duration": "3.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-large-shallow-prepend-layout.html" }, { - "duration": "4.0", + "duration": "6.0", "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-re-layout.html" }, { - "duration": "3.0", + "duration": "7.0", "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-assigned-nodes.html" }, { - "duration": "3.0", + "duration": "5.0", "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-flatten.html" }, { - "duration": "3.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-re-layout.html" }, { - "duration": "3.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-assigned-nodes.html" }, { @@ -1208,39 +1208,39 @@ "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-flatten.html" }, { - "duration": "3.0", + "duration": "5.0", "name": "blink_perf.shadow_dom/v1-slot-append.html" }, { - "duration": "4.0", + "duration": "10.0", "name": "blink_perf.shadow_dom/v1-small-deep-distribution.html" }, { - "duration": "5.0", + "duration": "6.0", "name": "blink_perf.shadow_dom/v1-small-deep-layout.html" }, { - "duration": "3.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-small-shallow-distribution.html" }, { - "duration": "3.0", + "duration": "4.0", "name": "blink_perf.shadow_dom/v1-small-shallow-layout.html" }, { - "duration": "9.0", + "duration": "11.0", "name": "blink_perf.svg/AzLizardBenjiPark.html" }, { - "duration": "6.0", + "duration": "8.0", "name": "blink_perf.svg/Bamboo.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.svg/Cactus.html" }, { - "duration": "4.0", + "duration": "8.0", "name": "blink_perf.svg/Cowboy.html" }, { @@ -1248,51 +1248,51 @@ "name": "blink_perf.svg/Cowboy_transform.html" }, { - "duration": "3.0", + "duration": "5.0", "name": "blink_perf.svg/CrawFishGanson.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.svg/Debian.html" }, { - "duration": "3.0", + "duration": "5.0", "name": "blink_perf.svg/DropsOnABlade.html" }, { - "duration": "3.0", + "duration": "5.0", "name": "blink_perf.svg/FlowerFromMyGarden.html" }, { - "duration": "3.0", + "duration": "6.0", "name": "blink_perf.svg/FoodLeifLodahl.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.svg/France.html" }, { - "duration": "3.0", + "duration": "4.0", "name": "blink_perf.svg/FrancoBolloGnomeEzechi.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.svg/GearFlowers.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.svg/HarveyRayner.html" }, { - "duration": "3.0", + "duration": "6.0", "name": "blink_perf.svg/HereGear.html" }, { - "duration": "7.0", + "duration": "12.0", "name": "blink_perf.svg/MtSaintHelens.html" }, { - "duration": "3.0", + "duration": "5.0", "name": "blink_perf.svg/Samurai.html" }, { @@ -1300,47 +1300,47 @@ "name": "blink_perf.svg/SierpinskiCarpet.html" }, { - "duration": "5.0", + "duration": "8.0", "name": "blink_perf.svg/SvgCubics.html" }, { - "duration": "4.0", + "duration": "7.0", "name": "blink_perf.svg/SvgHitTesting.html" }, { - "duration": "10.0", + "duration": "15.0", "name": "blink_perf.svg/SvgNestedUse.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.svg/UnderTheSee.html" }, { - "duration": "4.0", + "duration": "5.0", "name": "blink_perf.svg/WorldIso.html" }, { - "duration": "7.0", + "duration": "9.0", "name": "blink_perf.svg/Worldcup.html" }, { - "duration": "26.0", + "duration": "38.0", "name": "blink_perf.webaudio/audio-buffer-source-node.html" }, { - "duration": "69.0", + "duration": "145.0", "name": "blink_perf.webaudio/audio-worklet-node.html" }, { - "duration": "67.0", + "duration": "140.0", "name": "blink_perf.webaudio/biquad-filter-node.html" }, { - "duration": "67.0", + "duration": "140.0", "name": "blink_perf.webaudio/gain-node.html" }, { - "duration": "71.0", + "duration": "57.0", "name": "blink_perf.webaudio/panner-node.html" }, { @@ -1348,7 +1348,7 @@ "name": "dromaeo/http://dromaeo.com?dom-attr" }, { - "duration": "35.0", + "duration": "34.0", "name": "dromaeo/http://dromaeo.com?dom-modify" }, { @@ -1356,111 +1356,111 @@ "name": "dromaeo/http://dromaeo.com?dom-query" }, { - "duration": "29.0", + "duration": "28.0", "name": "dromaeo/http://dromaeo.com?dom-traverse" }, { - "duration": "8.0", + "duration": "7.0", "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html" }, { - "duration": "5.0", + "duration": "4.0", "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html" }, { - "duration": "257.0", + "duration": "227.0", "name": "jetstream/JetStream" }, { - "duration": "391.0", + "duration": "315.0", "name": "jetstream2/JetStream2" }, { - "duration": "45.0", + "duration": "36.0", "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html" }, { - "duration": "48.0", + "duration": "56.0", "name": "loading.desktop/24h_cold" }, { - "duration": "52.0", + "duration": "60.0", "name": "loading.desktop/24h_warm" }, { - "duration": "50.0", + "duration": "52.0", "name": "loading.desktop/AirBnB_cold" }, { - "duration": "62.0", + "duration": "65.0", "name": "loading.desktop/AirBnB_warm" }, { - "duration": "35.0", + "duration": "31.0", "name": "loading.desktop/Aljayyash_cold" }, { - "duration": "36.0", + "duration": "32.0", "name": "loading.desktop/Aljayyash_warm" }, { - "duration": "29.0", + "duration": "30.0", "name": "loading.desktop/AllRecipes_cold" }, { - "duration": "61.0", + "duration": "83.0", "name": "loading.desktop/AllRecipes_warm" }, { - "duration": "48.0", + "duration": "47.0", "name": "loading.desktop/ArsTechnica_cold" }, { - "duration": "77.0", + "duration": "56.0", "name": "loading.desktop/ArsTechnica_warm" }, { - "duration": "46.0", + "duration": "54.0", "name": "loading.desktop/Baidu_cold" }, { - "duration": "48.0", + "duration": "55.0", "name": "loading.desktop/Baidu_warm" }, { - "duration": "43.0", + "duration": "50.0", "name": "loading.desktop/Bhaskar_cold" }, { - "duration": "51.0", + "duration": "58.0", "name": "loading.desktop/Bhaskar_warm" }, { - "duration": "46.0", + "duration": "45.0", "name": "loading.desktop/Chosun_cold" }, { - "duration": "50.0", + "duration": "48.0", "name": "loading.desktop/Chosun_warm" }, { - "duration": "43.0", + "duration": "46.0", "name": "loading.desktop/Colorado.edu_cold" }, { - "duration": "45.0", + "duration": "47.0", "name": "loading.desktop/Colorado.edu_warm" }, { - "duration": "45.0", + "duration": "44.0", "name": "loading.desktop/Danawa_cold" }, { - "duration": "49.0", + "duration": "48.0", "name": "loading.desktop/Danawa_warm" }, { - "duration": "45.0", + "duration": "44.0", "name": "loading.desktop/Daum_cold" }, { @@ -1468,191 +1468,191 @@ "name": "loading.desktop/Daum_warm" }, { - "duration": "46.0", + "duration": "45.0", "name": "loading.desktop/Donga_cold" }, { - "duration": "51.0", + "duration": "49.0", "name": "loading.desktop/Donga_warm" }, { - "duration": "50.0", + "duration": "48.0", "name": "loading.desktop/Economist_cold" }, { - "duration": "60.0", + "duration": "58.0", "name": "loading.desktop/Economist_warm" }, { - "duration": "48.0", + "duration": "37.0", "name": "loading.desktop/Elmundo_cold" }, { - "duration": "25.0", + "duration": "19.0", "name": "loading.desktop/Elmundo_warm" }, { - "duration": "40.0", + "duration": "47.0", "name": "loading.desktop/FC2Blog_cold" }, { - "duration": "71.0", + "duration": "49.0", "name": "loading.desktop/FC2Blog_warm" }, { - "duration": "45.0", + "duration": "44.0", "name": "loading.desktop/FIFA_cold" }, { - "duration": "51.0", + "duration": "50.0", "name": "loading.desktop/FIFA_warm" }, { - "duration": "54.0", + "duration": "47.0", "name": "loading.desktop/FarsNews_cold" }, { - "duration": "39.0", + "duration": "35.0", "name": "loading.desktop/FarsNews_warm" }, { - "duration": "43.0", + "duration": "46.0", "name": "loading.desktop/Flickr_cold" }, { - "duration": "47.0", + "duration": "49.0", "name": "loading.desktop/Flickr_warm" }, { - "duration": "39.0", + "duration": "46.0", "name": "loading.desktop/FlipKart_cold" }, { - "duration": "41.0", + "duration": "48.0", "name": "loading.desktop/FlipKart_warm" }, { - "duration": "38.0", + "duration": "31.0", "name": "loading.desktop/Free.fr_cold" }, { - "duration": "39.0", + "duration": "32.0", "name": "loading.desktop/Free.fr_warm" }, { - "duration": "42.0", + "duration": "45.0", "name": "loading.desktop/HTML5Rocks_cold" }, { - "duration": "42.0", + "duration": "45.0", "name": "loading.desktop/HTML5Rocks_warm" }, { - "duration": "35.0", + "duration": "32.0", "name": "loading.desktop/Haraj_cold" }, { - "duration": "59.0", + "duration": "32.0", "name": "loading.desktop/Haraj_warm" }, { - "duration": "41.0", + "duration": "47.0", "name": "loading.desktop/HatenaBookmark_cold" }, { - "duration": "43.0", + "duration": "51.0", "name": "loading.desktop/HatenaBookmark_warm" }, { - "duration": "44.0", + "duration": "47.0", "name": "loading.desktop/IGN_cold" }, { - "duration": "84.0", + "duration": "75.0", "name": "loading.desktop/IGN_warm" }, { - "duration": "44.0", + "duration": "47.0", "name": "loading.desktop/IMDB_cold" }, { - "duration": "49.0", + "duration": "51.0", "name": "loading.desktop/IMDB_warm" }, { - "duration": "40.0", + "duration": "47.0", "name": "loading.desktop/IndiaTimes_cold" }, { - "duration": "44.0", + "duration": "51.0", "name": "loading.desktop/IndiaTimes_warm" }, { - "duration": "50.0", + "duration": "48.0", "name": "loading.desktop/Kakaku_cold" }, { - "duration": "56.0", + "duration": "53.0", "name": "loading.desktop/Kakaku_warm" }, { - "duration": "75.0", + "duration": "64.0", "name": "loading.desktop/Kenh14_cold" }, { - "duration": "68.0", + "duration": "75.0", "name": "loading.desktop/Kenh14_warm" }, { - "duration": "39.0", + "duration": "47.0", "name": "loading.desktop/Mercadolivre_cold" }, { - "duration": "42.0", + "duration": "49.0", "name": "loading.desktop/Mercadolivre_warm" }, { - "duration": "46.0", + "duration": "55.0", "name": "loading.desktop/Naver_cold" }, { - "duration": "47.0", + "duration": "65.0", "name": "loading.desktop/Naver_warm" }, { - "duration": "25.0", + "duration": "19.0", "name": "loading.desktop/Orange_cold" }, { - "duration": "25.0", + "duration": "19.0", "name": "loading.desktop/Orange_warm" }, { - "duration": "46.0", + "duration": "44.0", "name": "loading.desktop/Pantip_cold" }, { - "duration": "48.0", + "duration": "46.0", "name": "loading.desktop/Pantip_warm" }, { - "duration": "45.0", + "duration": "47.0", "name": "loading.desktop/PremierLeague_cold" }, { - "duration": "50.0", + "duration": "53.0", "name": "loading.desktop/PremierLeague_warm" }, { - "duration": "50.0", + "duration": "58.0", "name": "loading.desktop/QQ_cold" }, { - "duration": "58.0", + "duration": "65.0", "name": "loading.desktop/QQ_warm" }, { - "duration": "45.0", + "duration": "44.0", "name": "loading.desktop/REI_cold" }, { @@ -1660,135 +1660,135 @@ "name": "loading.desktop/REI_warm" }, { - "duration": "47.0", + "duration": "54.0", "name": "loading.desktop/Ruten_cold" }, { - "duration": "48.0", + "duration": "56.0", "name": "loading.desktop/Ruten_warm" }, { - "duration": "48.0", + "duration": "56.0", "name": "loading.desktop/Sina_cold" }, { - "duration": "54.0", + "duration": "61.0", "name": "loading.desktop/Sina_warm" }, { - "duration": "53.0", + "duration": "60.0", "name": "loading.desktop/Taobao_cold" }, { - "duration": "63.0", + "duration": "71.0", "name": "loading.desktop/Taobao_warm" }, { - "duration": "48.0", + "duration": "46.0", "name": "loading.desktop/TheOnion_cold" }, { - "duration": "31.0", + "duration": "30.0", "name": "loading.desktop/TheOnion_warm" }, { - "duration": "46.0", + "duration": "48.0", "name": "loading.desktop/TheVerge_cold" }, { - "duration": "54.0", + "duration": "56.0", "name": "loading.desktop/TheVerge_warm" }, { - "duration": "47.0", + "duration": "50.0", "name": "loading.desktop/TicketMaster_cold" }, { - "duration": "54.0", + "duration": "56.0", "name": "loading.desktop/TicketMaster_warm" }, { - "duration": "54.0", + "duration": "61.0", "name": "loading.desktop/Vietnamnet_cold" }, { - "duration": "63.0", + "duration": "70.0", "name": "loading.desktop/Vietnamnet_warm" }, { - "duration": "51.0", + "duration": "58.0", "name": "loading.desktop/Vnexpress_cold" }, { - "duration": "59.0", + "duration": "67.0", "name": "loading.desktop/Vnexpress_warm" }, { - "duration": "29.0", + "duration": "32.0", "name": "loading.desktop/Walgreens_cold" }, { - "duration": "29.0", + "duration": "32.0", "name": "loading.desktop/Walgreens_warm" }, { - "duration": "38.0", + "duration": "46.0", "name": "loading.desktop/Yandex_cold" }, { - "duration": "41.0", + "duration": "48.0", "name": "loading.desktop/Yandex_warm" }, { - "duration": "42.0", + "duration": "48.0", "name": "loading.desktop/amazon.co.jp_cold" }, { - "duration": "48.0", + "duration": "54.0", "name": "loading.desktop/amazon.co.jp_warm" }, { - "duration": "50.0", + "duration": "48.0", "name": "loading.desktop/ja.wikipedia_cold" }, { - "duration": "55.0", + "duration": "81.0", "name": "loading.desktop/ja.wikipedia_warm" }, { - "duration": "49.0", + "duration": "50.0", "name": "loading.desktop/money.cnn_cold" }, { - "duration": "59.0", + "duration": "61.0", "name": "loading.desktop/money.cnn_warm" }, { - "duration": "39.0", + "duration": "47.0", "name": "loading.desktop/ru.wikipedia_cold" }, { - "duration": "43.0", + "duration": "50.0", "name": "loading.desktop/ru.wikipedia_warm" }, { - "duration": "46.0", + "duration": "37.0", "name": "loading.desktop/uol.com.br_cold" }, { - "duration": "58.0", + "duration": "84.0", "name": "loading.desktop/uol.com.br_warm" }, { - "duration": "39.0", + "duration": "46.0", "name": "loading.desktop/yahoo.co.jp_cold" }, { - "duration": "43.0", + "duration": "49.0", "name": "loading.desktop/yahoo.co.jp_warm" }, { - "duration": "27.0", + "duration": "28.0", "name": "media.desktop/mse.html?media=aac_audio.mp4" }, { @@ -1796,11 +1796,11 @@ "name": "media.desktop/mse.html?media=aac_audio.mp4,h264_video.mp4" }, { - "duration": "27.0", + "duration": "28.0", "name": "media.desktop/mse.html?media=h264_video.mp4" }, { - "duration": "27.0", + "duration": "28.0", "name": "media.desktop/mse.html?media=tulip0.av1.mp4" }, { @@ -1808,11 +1808,15 @@ "name": "media.desktop/mse.html?media=tulip2.vp9.webm" }, { + "duration": "147.0", + "name": "media.desktop/video.html?src=boat_1080p60fps_vp9.webm" + }, + { "duration": "34.0", "name": "media.desktop/video.html?src=crowd1080.mp4" }, { - "duration": "37.0", + "duration": "36.0", "name": "media.desktop/video.html?src=crowd1080.webm" }, { @@ -1820,11 +1824,15 @@ "name": "media.desktop/video.html?src=crowd1080_vp9.webm" }, { + "duration": "146.0", + "name": "media.desktop/video.html?src=foodmarket_720p30fps.mp4" + }, + { "duration": "19.0", "name": "media.desktop/video.html?src=garden2_10s.mp4&seek" }, { - "duration": "29.0", + "duration": "28.0", "name": "media.desktop/video.html?src=garden2_10s.webm&seek" }, { @@ -1836,7 +1844,7 @@ "name": "media.desktop/video.html?src=tulip0.av1.mp4" }, { - "duration": "26.0", + "duration": "27.0", "name": "media.desktop/video.html?src=tulip0.av1.mp4&seek" }, { @@ -1868,7 +1876,7 @@ "name": "media.desktop/video.html?src=tulip2.ogg&type=audio&seek" }, { - "duration": "40.0", + "duration": "39.0", "name": "media.desktop/video.html?src=tulip2.vp9.webm" }, { @@ -1880,43 +1888,43 @@ "name": "media.desktop/video.html?src=tulip2.vp9.webm_WiFi" }, { - "duration": "29.0", + "duration": "26.0", "name": "memory.desktop/TrivialAnimationPageSharedPageState" }, { - "duration": "28.0", + "duration": "26.0", "name": "memory.desktop/TrivialBlinkingCursorPageSharedPageState" }, { - "duration": "29.0", + "duration": "27.0", "name": "memory.desktop/TrivialBlurAnimationPageSharedPageState" }, { - "duration": "29.0", + "duration": "27.0", "name": "memory.desktop/TrivialCanvasPageSharedPageState" }, { - "duration": "30.0", + "duration": "27.0", "name": "memory.desktop/TrivialFullscreenVideoPageSharedPageState" }, { - "duration": "28.0", + "duration": "26.0", "name": "memory.desktop/TrivialGifPageSharedPageState" }, { - "duration": "30.0", + "duration": "28.0", "name": "memory.desktop/TrivialScrollingPageSharedPageState" }, { - "duration": "29.0", + "duration": "26.0", "name": "memory.desktop/TrivialWebGLPageSharedPageState" }, { - "duration": "70.0", + "duration": "71.0", "name": "memory.desktop/WebWorker" }, { - "duration": "47.0", + "duration": "48.0", "name": "octane/Octane" }, { @@ -1924,7 +1932,7 @@ "name": "power.desktop/TrivialAnimationPageSharedPageState" }, { - "duration": "53.0", + "duration": "54.0", "name": "power.desktop/TrivialBlinkingCursorPageSharedPageState" }, { @@ -1940,7 +1948,7 @@ "name": "power.desktop/TrivialFullscreenVideoPageSharedPageState" }, { - "duration": "53.0", + "duration": "54.0", "name": "power.desktop/TrivialGifPageSharedPageState" }, { @@ -1968,7 +1976,7 @@ "name": "power.desktop/microsoft" }, { - "duration": "58.0", + "duration": "57.0", "name": "power.desktop/sina" }, { @@ -1980,7 +1988,7 @@ "name": "power.desktop/uol" }, { - "duration": "30.0", + "duration": "29.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html" }, { @@ -1988,11 +1996,11 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/blogger.html" }, { - "duration": "15.0", + "duration": "14.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/booking.html" }, { - "duration": "17.0", + "duration": "16.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/cnn.html" }, { @@ -2004,7 +2012,7 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html" }, { - "duration": "14.0", + "duration": "13.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/facebook.html" }, { @@ -2012,7 +2020,7 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/gmail.html" }, { - "duration": "12.0", + "duration": "11.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/google.html" }, { @@ -2064,7 +2072,7 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahooanswers.html" }, { - "duration": "16.0", + "duration": "15.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html" }, { @@ -2076,159 +2084,171 @@ "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html" }, { - "duration": "21.0", + "duration": "20.0", "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html" }, { - "duration": "50.0", + "duration": "54.0", "name": "rendering.desktop/accu_weather_2018" }, { - "duration": "52.0", + "duration": "56.0", "name": "rendering.desktop/accu_weather_pinch_2018" }, { - "duration": "43.0", + "duration": "47.0", "name": "rendering.desktop/amazon_2018" }, { - "duration": "40.0", + "duration": "45.0", "name": "rendering.desktop/amazon_pinch_2018" }, { - "duration": "43.0", + "duration": "47.0", "name": "rendering.desktop/analog_clock_svg" }, { - "duration": "49.0", + "duration": "51.0", "name": "rendering.desktop/animometer_webgl" }, { - "duration": "44.0", + "duration": "48.0", "name": "rendering.desktop/animometer_webgl_attrib_arrays" }, { - "duration": "48.0", + "duration": "50.0", + "name": "rendering.desktop/animometer_webgl_fast_call" + }, + { + "duration": "50.0", "name": "rendering.desktop/animometer_webgl_indexed" }, { - "duration": "38.0", - "name": "rendering.desktop/animometer_webgl_indexed_multi_draw" - }, - { - "duration": "45.0", - "name": "rendering.desktop/animometer_webgl_indexed_multi_draw_base_vertex_base_instance" - }, - { - "duration": "37.0", - "name": "rendering.desktop/animometer_webgl_multi_draw" - }, - { - "duration": "56.0", - "name": "rendering.desktop/aquarium" - }, - { "duration": "50.0", - "name": "rendering.desktop/aquarium_20k" - }, - { - "duration": "40.0", - "name": "rendering.desktop/background_color_animation" - }, - { - "duration": "49.0", - "name": "rendering.desktop/background_color_animation_with_gradient" - }, - { - "duration": "37.0", - "name": "rendering.desktop/balls_css_key_frame_animations" - }, - { - "duration": "40.0", - "name": "rendering.desktop/balls_css_key_frame_animations_composited_transform" - }, - { - "duration": "36.0", - "name": "rendering.desktop/balls_css_transition_2_properties" - }, - { - "duration": "36.0", - "name": "rendering.desktop/balls_css_transition_40_properties" - }, - { - "duration": "36.0", - "name": "rendering.desktop/balls_css_transition_all_properties" - }, - { - "duration": "37.0", - "name": "rendering.desktop/balls_javascript_canvas" - }, - { - "duration": "36.0", - "name": "rendering.desktop/balls_javascript_css" - }, - { - "duration": "37.0", - "name": "rendering.desktop/balls_svg_animations" - }, - { - "duration": "38.0", - "name": "rendering.desktop/blob" + "name": "rendering.desktop/animometer_webgl_indexed_fast_call" }, { "duration": "48.0", - "name": "rendering.desktop/blogspot_2018" + "name": "rendering.desktop/animometer_webgl_indexed_multi_draw" + }, + { + "duration": "49.0", + "name": "rendering.desktop/animometer_webgl_indexed_multi_draw_base_vertex_base_instance" }, { "duration": "40.0", - "name": "rendering.desktop/blogspot_pinch_2018" + "name": "rendering.desktop/animometer_webgl_multi_draw" }, { - "duration": "32.0", - "name": "rendering.desktop/blur_rotating_background" + "duration": "45.0", + "name": "rendering.desktop/aquarium" }, { - "duration": "32.0", - "name": "rendering.desktop/booking.com_2018" + "duration": "46.0", + "name": "rendering.desktop/aquarium_20k" }, { - "duration": "33.0", - "name": "rendering.desktop/booking_pinch_2018" + "duration": "46.0", + "name": "rendering.desktop/aquarium_20k_fast_call" }, { - "duration": "35.0", - "name": "rendering.desktop/bouncing_balls_15" + "duration": "41.0", + "name": "rendering.desktop/background_color_animation" }, { - "duration": "43.0", - "name": "rendering.desktop/bouncing_balls_shadow" + "duration": "39.0", + "name": "rendering.desktop/background_color_animation_with_gradient" + }, + { + "duration": "39.0", + "name": "rendering.desktop/balls_css_key_frame_animations" + }, + { + "duration": "41.0", + "name": "rendering.desktop/balls_css_key_frame_animations_composited_transform" }, { "duration": "38.0", - "name": "rendering.desktop/bouncing_clipped_rectangles" + "name": "rendering.desktop/balls_css_transition_2_properties" }, { - "duration": "36.0", - "name": "rendering.desktop/bouncing_gradient_circles" + "duration": "38.0", + "name": "rendering.desktop/balls_css_transition_40_properties" }, { - "duration": "34.0", - "name": "rendering.desktop/bouncing_png_images" + "duration": "38.0", + "name": "rendering.desktop/balls_css_transition_all_properties" + }, + { + "duration": "39.0", + "name": "rendering.desktop/balls_javascript_canvas" + }, + { + "duration": "39.0", + "name": "rendering.desktop/balls_javascript_css" }, { "duration": "40.0", - "name": "rendering.desktop/bouncing_svg_images" + "name": "rendering.desktop/balls_svg_animations" }, { - "duration": "22.0", - "name": "rendering.desktop/camera_to_webgl" - }, - { - "duration": "35.0", - "name": "rendering.desktop/canvas2d_to_texture.html" + "duration": "40.0", + "name": "rendering.desktop/blob" }, { "duration": "50.0", + "name": "rendering.desktop/blogspot_2018" + }, + { + "duration": "43.0", + "name": "rendering.desktop/blogspot_pinch_2018" + }, + { + "duration": "35.0", + "name": "rendering.desktop/blur_rotating_background" + }, + { + "duration": "35.0", + "name": "rendering.desktop/booking.com_2018" + }, + { + "duration": "36.0", + "name": "rendering.desktop/booking_pinch_2018" + }, + { + "duration": "38.0", + "name": "rendering.desktop/bouncing_balls_15" + }, + { + "duration": "41.0", + "name": "rendering.desktop/bouncing_balls_shadow" + }, + { + "duration": "40.0", + "name": "rendering.desktop/bouncing_clipped_rectangles" + }, + { + "duration": "39.0", + "name": "rendering.desktop/bouncing_gradient_circles" + }, + { + "duration": "37.0", + "name": "rendering.desktop/bouncing_png_images" + }, + { + "duration": "41.0", + "name": "rendering.desktop/bouncing_svg_images" + }, + { + "duration": "25.0", + "name": "rendering.desktop/camera_to_webgl" + }, + { + "duration": "38.0", + "name": "rendering.desktop/canvas2d_to_texture.html" + }, + { + "duration": "51.0", "name": "rendering.desktop/canvas_05000_pixels_per_second" }, { @@ -2236,7 +2256,7 @@ "name": "rendering.desktop/canvas_10000_pixels_per_second" }, { - "duration": "46.0", + "duration": "47.0", "name": "rendering.desktop/canvas_20000_pixels_per_second" }, { @@ -2248,7 +2268,7 @@ "name": "rendering.desktop/canvas_60000_pixels_per_second" }, { - "duration": "46.0", + "duration": "47.0", "name": "rendering.desktop/canvas_75000_pixels_per_second" }, { @@ -2256,351 +2276,351 @@ "name": "rendering.desktop/canvas_90000_pixels_per_second" }, { - "duration": "41.0", + "duration": "39.0", "name": "rendering.desktop/canvas_animation_no_clear" }, { - "duration": "36.0", + "duration": "39.0", "name": "rendering.desktop/canvas_arcs" }, { - "duration": "35.0", + "duration": "38.0", "name": "rendering.desktop/canvas_font_cycler" }, { - "duration": "35.0", + "duration": "38.0", "name": "rendering.desktop/canvas_lines" }, { - "duration": "35.0", + "duration": "38.0", "name": "rendering.desktop/canvas_to_blob" }, { - "duration": "42.0", + "duration": "39.0", "name": "rendering.desktop/canvas_to_canvas_draw" }, { - "duration": "34.0", + "duration": "35.0", "name": "rendering.desktop/cats_unscaled" }, { - "duration": "32.0", + "duration": "33.0", "name": "rendering.desktop/cats_viewport_width" }, { - "duration": "37.0", + "duration": "40.0", "name": "rendering.desktop/cc_poster_circle" }, { - "duration": "32.0", + "duration": "35.0", "name": "rendering.desktop/cc_scroll_text_only" }, { - "duration": "40.0", + "duration": "42.0", "name": "rendering.desktop/chip_tune" }, { - "duration": "35.0", + "duration": "38.0", "name": "rendering.desktop/cnn_2018" }, { - "duration": "44.0", + "duration": "46.0", "name": "rendering.desktop/cnn_pinch_2018" }, { - "duration": "35.0", + "duration": "40.0", "name": "rendering.desktop/compositor_heavy_animation" }, { - "duration": "35.0", + "duration": "38.0", "name": "rendering.desktop/crafty_mind" }, { - "duration": "37.0", + "duration": "41.0", "name": "rendering.desktop/css_animations_many_keyframes" }, { - "duration": "34.0", + "duration": "38.0", "name": "rendering.desktop/css_animations_simultaneous_inline_style" }, { - "duration": "34.0", + "duration": "38.0", "name": "rendering.desktop/css_animations_simultaneous_new_element" }, { - "duration": "34.0", + "duration": "37.0", "name": "rendering.desktop/css_animations_simultaneous_style_element" }, { - "duration": "34.0", + "duration": "37.0", "name": "rendering.desktop/css_animations_simultaneous_updating_class" }, { - "duration": "34.0", + "duration": "37.0", "name": "rendering.desktop/css_animations_staggered_infinite_iterations" }, { - "duration": "36.0", + "duration": "38.0", "name": "rendering.desktop/css_animations_staggered_inline_style" }, { - "duration": "36.0", + "duration": "39.0", "name": "rendering.desktop/css_animations_staggered_new_element" }, { - "duration": "36.0", + "duration": "39.0", "name": "rendering.desktop/css_animations_staggered_style_element" }, { - "duration": "36.0", + "duration": "39.0", "name": "rendering.desktop/css_animations_staggered_updating_class" }, { - "duration": "36.0", + "duration": "39.0", "name": "rendering.desktop/css_animations_triggered_inline_style" }, { - "duration": "36.0", + "duration": "39.0", "name": "rendering.desktop/css_animations_triggered_new_element" }, { - "duration": "35.0", + "duration": "38.0", "name": "rendering.desktop/css_animations_triggered_style_element" }, { - "duration": "36.0", + "duration": "38.0", "name": "rendering.desktop/css_animations_triggered_updating_class" }, { - "duration": "37.0", + "duration": "40.0", "name": "rendering.desktop/css_opacity_plus_n_layers_99" }, { - "duration": "34.0", + "duration": "37.0", "name": "rendering.desktop/css_transitions_inline_style" }, { - "duration": "35.0", + "duration": "42.0", "name": "rendering.desktop/css_transitions_new_element" }, { - "duration": "41.0", + "duration": "40.0", "name": "rendering.desktop/css_transitions_staggered_inline_style" }, { - "duration": "39.0", + "duration": "40.0", "name": "rendering.desktop/css_transitions_staggered_new_element" }, { - "duration": "38.0", + "duration": "40.0", "name": "rendering.desktop/css_transitions_staggered_style_element" }, { - "duration": "38.0", + "duration": "40.0", "name": "rendering.desktop/css_transitions_staggered_updating_class" }, { - "duration": "38.0", + "duration": "40.0", "name": "rendering.desktop/css_transitions_style_element" }, { - "duration": "39.0", + "duration": "40.0", "name": "rendering.desktop/css_transitions_triggered_inline_style" }, { - "duration": "39.0", + "duration": "40.0", "name": "rendering.desktop/css_transitions_triggered_new_element" }, { - "duration": "39.0", + "duration": "40.0", "name": "rendering.desktop/css_transitions_triggered_style_element" }, { - "duration": "39.0", + "duration": "40.0", "name": "rendering.desktop/css_transitions_triggered_updating_class" }, { - "duration": "37.0", + "duration": "40.0", "name": "rendering.desktop/css_transitions_updating_class" }, { - "duration": "38.0", + "duration": "40.0", "name": "rendering.desktop/css_value_type_color" }, { - "duration": "38.0", + "duration": "40.0", "name": "rendering.desktop/css_value_type_filter" }, { - "duration": "38.0", + "duration": "40.0", "name": "rendering.desktop/css_value_type_length" }, { - "duration": "38.0", + "duration": "40.0", "name": "rendering.desktop/css_value_type_length_complex" }, { - "duration": "38.0", + "duration": "40.0", "name": "rendering.desktop/css_value_type_length_simple" }, { - "duration": "38.0", + "duration": "40.0", "name": "rendering.desktop/css_value_type_path" }, { - "duration": "38.0", + "duration": "40.0", "name": "rendering.desktop/css_value_type_shadow" }, { - "duration": "37.0", + "duration": "40.0", "name": "rendering.desktop/css_value_type_transform_complex" }, { - "duration": "37.0", + "duration": "40.0", "name": "rendering.desktop/css_value_type_transform_simple" }, { - "duration": "38.0", + "duration": "40.0", "name": "rendering.desktop/docs_paper.html" }, { - "duration": "39.0", + "duration": "40.0", "name": "rendering.desktop/docs_resume.html" }, { - "duration": "38.0", + "duration": "40.0", "name": "rendering.desktop/docs_table.html" }, { - "duration": "37.0", + "duration": "40.0", "name": "rendering.desktop/draw_image" }, { - "duration": "37.0", + "duration": "40.0", "name": "rendering.desktop/draw_image_not_pixel_aligned" }, { - "duration": "38.0", + "duration": "40.0", "name": "rendering.desktop/dynamic_canvas_to_hw_accelerated_canvas.html" }, { - "duration": "44.0", + "duration": "45.0", "name": "rendering.desktop/dynamic_cube_map" }, { - "duration": "38.0", + "duration": "40.0", "name": "rendering.desktop/dynamic_webgl_to_hw_accelerated_canvas.html" }, { - "duration": "40.0", + "duration": "42.0", "name": "rendering.desktop/earth" }, { - "duration": "35.0", + "duration": "38.0", "name": "rendering.desktop/ebay_2018" }, { - "duration": "46.0", + "duration": "48.0", "name": "rendering.desktop/ebay_pinch_2018" }, { - "duration": "43.0", + "duration": "45.0", "name": "rendering.desktop/effect_games" }, { - "duration": "56.0", + "duration": "57.0", "name": "rendering.desktop/espn_2018" }, { - "duration": "43.0", + "duration": "45.0", "name": "rendering.desktop/espn_pinch_2018" }, { - "duration": "39.0", + "duration": "41.0", "name": "rendering.desktop/extra_large_texture_uploads" }, { - "duration": "38.0", + "duration": "39.0", "name": "rendering.desktop/facebook_2018" }, { - "duration": "40.0", + "duration": "42.0", "name": "rendering.desktop/facebook_pinch_2018" }, { - "duration": "38.0", + "duration": "40.0", "name": "rendering.desktop/falling_particle_simulation_cpu.html" }, { - "duration": "38.0", + "duration": "40.0", "name": "rendering.desktop/falling_particle_simulation_gpu.html" }, { - "duration": "38.0", + "duration": "40.0", "name": "rendering.desktop/fill_clear_rect.html" }, { - "duration": "39.0", + "duration": "41.0", "name": "rendering.desktop/fill_shapes" }, { - "duration": "42.0", + "duration": "44.0", "name": "rendering.desktop/filter_terrain_svg" }, { - "duration": "37.0", + "duration": "39.0", "name": "rendering.desktop/geo_apis" }, { - "duration": "39.0", + "duration": "40.0", "name": "rendering.desktop/get_image_data_cpu.html" }, { - "duration": "39.0", + "duration": "40.0", "name": "rendering.desktop/get_image_data_gpu.html" }, { - "duration": "40.0", + "duration": "42.0", "name": "rendering.desktop/gmail_2018" }, { - "duration": "71.0", + "duration": "57.0", "name": "rendering.desktop/gmail_move_2018" }, { - "duration": "39.0", + "duration": "42.0", "name": "rendering.desktop/gmail_pinch_2018" }, { - "duration": "33.0", + "duration": "34.0", "name": "rendering.desktop/google_calendar_2018" }, { - "duration": "36.0", + "duration": "38.0", "name": "rendering.desktop/google_calendar_pinch_2018" }, { - "duration": "41.0", + "duration": "42.0", "name": "rendering.desktop/google_docs_2018" }, { - "duration": "35.0", + "duration": "37.0", "name": "rendering.desktop/google_image_pinch_2018" }, { - "duration": "34.0", + "duration": "37.0", "name": "rendering.desktop/google_image_search_2018" }, { - "duration": "50.0", + "duration": "46.0", "name": "rendering.desktop/google_plus_2018" }, { - "duration": "42.0", + "duration": "40.0", "name": "rendering.desktop/google_search_pinch_2018" }, { - "duration": "35.0", + "duration": "33.0", "name": "rendering.desktop/google_web_search_2018" }, { @@ -2608,19 +2628,19 @@ "name": "rendering.desktop/gpu_bound_shader.html" }, { - "duration": "39.0", + "duration": "40.0", "name": "rendering.desktop/guimark_vector_chart" }, { - "duration": "43.0", + "duration": "41.0", "name": "rendering.desktop/hakim" }, { - "duration": "38.0", + "duration": "37.0", "name": "rendering.desktop/hw_accelerated_canvas_to_sw_canvas.html" }, { - "duration": "45.0", + "duration": "48.0", "name": "rendering.desktop/ie_chalkboard" }, { @@ -2640,7 +2660,7 @@ "name": "rendering.desktop/infinite_scroll_root_n_layers_99" }, { - "duration": "42.0", + "duration": "39.0", "name": "rendering.desktop/jarro_doverson" }, { @@ -2652,7 +2672,7 @@ "name": "rendering.desktop/jpeg_decoding_yuv_and_gpu_rasterization" }, { - "duration": "42.0", + "duration": "40.0", "name": "rendering.desktop/js_full_screen_invalidation" }, { @@ -2660,7 +2680,7 @@ "name": "rendering.desktop/js_opacity_plus_n_layers_99" }, { - "duration": "41.0", + "duration": "40.0", "name": "rendering.desktop/js_paint_plus_n_layers_99" }, { @@ -2672,7 +2692,7 @@ "name": "rendering.desktop/js_scroll_text_only" }, { - "duration": "38.0", + "duration": "37.0", "name": "rendering.desktop/kevs_3d" }, { @@ -2680,22 +2700,26 @@ "name": "rendering.desktop/keyframed_animations" }, { - "duration": "40.0", + "duration": "38.0", "name": "rendering.desktop/large_texture_uploads" }, { - "duration": "36.0", + "duration": "35.0", "name": "rendering.desktop/linkedin_2018" }, { - "duration": "39.0", + "duration": "37.0", "name": "rendering.desktop/linkedin_pinch_2018" }, { - "duration": "91.0", + "duration": "82.0", "name": "rendering.desktop/lost_crypt" }, { + "duration": "73.0", + "name": "rendering.desktop/lost_crypt_fast_call" + }, + { "duration": "37.0", "name": "rendering.desktop/main_0fps_impl_60fps" }, @@ -2760,11 +2784,11 @@ "name": "rendering.desktop/main_animations_half_presented" }, { - "duration": "42.0", + "duration": "37.0", "name": "rendering.desktop/man_in_blue" }, { - "duration": "45.0", + "duration": "40.0", "name": "rendering.desktop/many_images" }, { @@ -2772,67 +2796,71 @@ "name": "rendering.desktop/many_planets_deep" }, { - "duration": "41.0", + "duration": "38.0", "name": "rendering.desktop/maps_move_2018" }, { - "duration": "40.0", + "duration": "39.0", "name": "rendering.desktop/maps_perf_test" }, { - "duration": "38.0", + "duration": "37.0", "name": "rendering.desktop/medium_texture_uploads" }, { - "duration": "38.0", + "duration": "37.0", "name": "rendering.desktop/megi_dish" }, { - "duration": "81.0", + "duration": "73.0", "name": "rendering.desktop/microgame_fps" }, { - "duration": "39.0", + "duration": "73.0", + "name": "rendering.desktop/microgame_fps_fast_call" + }, + { + "duration": "38.0", "name": "rendering.desktop/microsoft_asteroid_belt" }, { - "duration": "53.0", + "duration": "39.0", "name": "rendering.desktop/microsoft_fireflies" }, { - "duration": "39.0", + "duration": "38.0", "name": "rendering.desktop/microsoft_fish_ie_tank" }, { - "duration": "38.0", + "duration": "41.0", "name": "rendering.desktop/microsoft_performance" }, { - "duration": "41.0", + "duration": "46.0", "name": "rendering.desktop/microsoft_snow" }, { - "duration": "40.0", + "duration": "42.0", "name": "rendering.desktop/microsoft_speed_reading" }, { - "duration": "39.0", + "duration": "42.0", "name": "rendering.desktop/microsoft_tweet_map" }, { - "duration": "48.0", + "duration": "45.0", "name": "rendering.desktop/microsoft_video_city" }, { - "duration": "39.0", + "duration": "42.0", "name": "rendering.desktop/microsoft_worker_fountains" }, { - "duration": "38.0", + "duration": "41.0", "name": "rendering.desktop/mix_10k" }, { - "duration": "43.0", + "duration": "41.0", "name": "rendering.desktop/mix_blend_mode_animation_difference" }, { @@ -2840,11 +2868,11 @@ "name": "rendering.desktop/mix_blend_mode_animation_hue" }, { - "duration": "38.0", + "duration": "43.0", "name": "rendering.desktop/mix_blend_mode_animation_propagating_isolation" }, { - "duration": "40.0", + "duration": "41.0", "name": "rendering.desktop/mix_blend_mode_animation_screen" }, { @@ -2852,23 +2880,23 @@ "name": "rendering.desktop/motion_mark_canvas_fill_shapes" }, { - "duration": "41.0", + "duration": "42.0", "name": "rendering.desktop/motion_mark_canvas_stroke_shapes" }, { - "duration": "45.0", + "duration": "44.0", "name": "rendering.desktop/new_tilings" }, { - "duration": "48.0", + "duration": "45.0", "name": "rendering.desktop/nvidia_vertex_buffer_object" }, { - "duration": "40.0", + "duration": "41.0", "name": "rendering.desktop/off_screen_main_60fps" }, { - "duration": "40.0", + "duration": "41.0", "name": "rendering.desktop/off_screen_main_60fps_jank" }, { @@ -2884,7 +2912,7 @@ "name": "rendering.desktop/pinterest_2018" }, { - "duration": "42.0", + "duration": "43.0", "name": "rendering.desktop/put_and_create_imagebitmap_from_imagedata" }, { @@ -2912,7 +2940,7 @@ "name": "rendering.desktop/raf_touch_animation" }, { - "duration": "40.0", + "duration": "41.0", "name": "rendering.desktop/repaint_amazon_2018" }, { @@ -2920,7 +2948,7 @@ "name": "rendering.desktop/repaint_cnn_2018" }, { - "duration": "37.0", + "duration": "38.0", "name": "rendering.desktop/repaint_facebook_2018" }, { @@ -2928,7 +2956,7 @@ "name": "rendering.desktop/repaint_google_search_2018" }, { - "duration": "37.0", + "duration": "38.0", "name": "rendering.desktop/repaint_instagram_2018" }, { @@ -2948,7 +2976,7 @@ "name": "rendering.desktop/repaint_wikipedia_2018" }, { - "duration": "37.0", + "duration": "38.0", "name": "rendering.desktop/repaint_yahoo_homepage_2018" }, { @@ -2956,71 +2984,75 @@ "name": "rendering.desktop/runway_2019" }, { - "duration": "44.0", + "duration": "43.0", "name": "rendering.desktop/san_angeles" }, { - "duration": "34.0", + "duration": "37.0", "name": "rendering.desktop/second_batch_js_heavy" }, { - "duration": "34.0", + "duration": "37.0", "name": "rendering.desktop/second_batch_js_light" }, { - "duration": "34.0", + "duration": "37.0", "name": "rendering.desktop/second_batch_js_medium" }, { - "duration": "42.0", + "duration": "43.0", "name": "rendering.desktop/sheets_render.html" }, { - "duration": "36.0", + "duration": "40.0", "name": "rendering.desktop/simple_text_page" }, { - "duration": "32.0", + "duration": "37.0", "name": "rendering.desktop/simple_touch_drag" }, { - "duration": "90.0", + "duration": "86.0", "name": "rendering.desktop/skelebuddies_wasm_2020" }, { - "duration": "37.0", + "duration": "76.0", + "name": "rendering.desktop/skelebuddies_wasm_2020_fast_call" + }, + { + "duration": "42.0", "name": "rendering.desktop/small_texture_uploads" }, { - "duration": "45.0", + "duration": "48.0", "name": "rendering.desktop/smash_cat" }, { - "duration": "38.0", + "duration": "42.0", "name": "rendering.desktop/spielzeugz" }, { - "duration": "38.0", + "duration": "42.0", "name": "rendering.desktop/static_canvas_to_hw_accelerated_canvas.html" }, { - "duration": "38.0", + "duration": "43.0", "name": "rendering.desktop/static_webgl_to_hw_accelerated_canvas.html" }, { - "duration": "38.0", + "duration": "43.0", "name": "rendering.desktop/stroke_shapes" }, { - "duration": "34.0", + "duration": "39.0", "name": "rendering.desktop/sync_scroll_offset" }, { - "duration": "48.0", + "duration": "56.0", "name": "rendering.desktop/techcrunch_2018" }, { - "duration": "50.0", + "duration": "55.0", "name": "rendering.desktop/text_05000_pixels_per_second" }, { @@ -3028,7 +3060,7 @@ "name": "rendering.desktop/text_10000_pixels_per_second" }, { - "duration": "46.0", + "duration": "47.0", "name": "rendering.desktop/text_20000_pixels_per_second" }, { @@ -3036,163 +3068,167 @@ "name": "rendering.desktop/text_40000_pixels_per_second" }, { - "duration": "47.0", + "duration": "49.0", "name": "rendering.desktop/text_60000_pixels_per_second" }, { - "duration": "46.0", + "duration": "48.0", "name": "rendering.desktop/text_75000_pixels_per_second" }, { - "duration": "46.0", + "duration": "48.0", "name": "rendering.desktop/text_90000_pixels_per_second" }, { - "duration": "52.0", + "duration": "54.0", "name": "rendering.desktop/text_constant_full_page_raster_05000_pixels_per_second" }, { - "duration": "50.0", + "duration": "52.0", "name": "rendering.desktop/text_constant_full_page_raster_10000_pixels_per_second" }, { - "duration": "48.0", + "duration": "49.0", "name": "rendering.desktop/text_constant_full_page_raster_20000_pixels_per_second" }, { - "duration": "48.0", + "duration": "49.0", "name": "rendering.desktop/text_constant_full_page_raster_40000_pixels_per_second" }, { - "duration": "47.0", + "duration": "48.0", "name": "rendering.desktop/text_constant_full_page_raster_60000_pixels_per_second" }, { - "duration": "47.0", + "duration": "48.0", "name": "rendering.desktop/text_constant_full_page_raster_75000_pixels_per_second" }, { - "duration": "47.0", + "duration": "48.0", "name": "rendering.desktop/text_constant_full_page_raster_90000_pixels_per_second" }, { - "duration": "50.0", + "duration": "52.0", "name": "rendering.desktop/text_hover_05000_pixels_per_second" }, { - "duration": "48.0", + "duration": "50.0", "name": "rendering.desktop/text_hover_10000_pixels_per_second" }, { - "duration": "46.0", + "duration": "49.0", "name": "rendering.desktop/text_hover_20000_pixels_per_second" }, { - "duration": "46.0", + "duration": "48.0", "name": "rendering.desktop/text_hover_40000_pixels_per_second" }, { - "duration": "46.0", + "duration": "49.0", "name": "rendering.desktop/text_hover_60000_pixels_per_second" }, { - "duration": "46.0", + "duration": "48.0", "name": "rendering.desktop/text_hover_75000_pixels_per_second" }, { - "duration": "46.0", + "duration": "48.0", "name": "rendering.desktop/text_hover_90000_pixels_per_second" }, { - "duration": "41.0", + "duration": "46.0", "name": "rendering.desktop/throughput_scrolling_active_handler" }, { - "duration": "41.0", + "duration": "46.0", "name": "rendering.desktop/throughput_scrolling_composited" }, { - "duration": "41.0", + "duration": "46.0", "name": "rendering.desktop/throughput_scrolling_passive_handler" }, { - "duration": "41.0", + "duration": "46.0", "name": "rendering.desktop/throughput_scrolling_uncomposited" }, { - "duration": "79.0", + "duration": "76.0", "name": "rendering.desktop/tiny_racing_v3_wasm_2020" }, { - "duration": "38.0", + "duration": "76.0", + "name": "rendering.desktop/tiny_racing_v3_wasm_2020_fast_call" + }, + { + "duration": "43.0", "name": "rendering.desktop/toBlob_duration.html" }, { - "duration": "38.0", + "duration": "43.0", "name": "rendering.desktop/toBlob_duration_jpeg.html" }, { - "duration": "40.0", + "duration": "44.0", "name": "rendering.desktop/toBlob_small_canvas_in_worker.html" }, { - "duration": "34.0", + "duration": "39.0", "name": "rendering.desktop/touch_handler_scrolling" }, { - "duration": "37.0", + "duration": "42.0", "name": "rendering.desktop/transfer_from_imageBitmap.html" }, { - "duration": "37.0", + "duration": "43.0", "name": "rendering.desktop/transform_transitions" }, { - "duration": "37.0", + "duration": "42.0", "name": "rendering.desktop/transform_transitions_js_block" }, { - "duration": "37.0", + "duration": "41.0", "name": "rendering.desktop/twitch_2018" }, { - "duration": "47.0", + "duration": "51.0", "name": "rendering.desktop/twitch_pinch_2018" }, { - "duration": "38.0", + "duration": "53.0", "name": "rendering.desktop/twitter_2018" }, { - "duration": "37.0", + "duration": "44.0", "name": "rendering.desktop/twitter_pinch_2018" }, { - "duration": "67.0", + "duration": "42.0", "name": "rendering.desktop/video_to_hw_accelerated_canvas" }, { - "duration": "45.0", + "duration": "39.0", "name": "rendering.desktop/video_to_sub_texture" }, { - "duration": "45.0", + "duration": "39.0", "name": "rendering.desktop/video_to_sub_texture_flip_and_premultiply" }, { - "duration": "45.0", + "duration": "39.0", "name": "rendering.desktop/video_to_sub_texture_flip_y" }, { - "duration": "45.0", + "duration": "39.0", "name": "rendering.desktop/video_to_sub_texture_premultiply" }, { - "duration": "71.0", + "duration": "39.0", "name": "rendering.desktop/video_to_texture" }, { - "duration": "37.0", + "duration": "38.0", "name": "rendering.desktop/web_animation_value_type_color" }, { @@ -3216,15 +3252,15 @@ "name": "rendering.desktop/web_animation_value_type_shadow" }, { - "duration": "37.0", + "duration": "38.0", "name": "rendering.desktop/web_animation_value_type_transform_complex" }, { - "duration": "37.0", + "duration": "38.0", "name": "rendering.desktop/web_animation_value_type_transform_simple" }, { - "duration": "42.0", + "duration": "41.0", "name": "rendering.desktop/web_animations_many_keyframes" }, { @@ -3240,7 +3276,7 @@ "name": "rendering.desktop/web_animations_staggered_chaining" }, { - "duration": "37.0", + "duration": "38.0", "name": "rendering.desktop/web_animations_staggered_infinite_iterations" }, { @@ -3248,23 +3284,23 @@ "name": "rendering.desktop/web_animations_staggered_triggering_page" }, { - "duration": "47.0", + "duration": "39.0", "name": "rendering.desktop/webgl_to_texture" }, { - "duration": "33.0", + "duration": "34.0", "name": "rendering.desktop/webp_decoding_rgb_and_gpu_rasterization" }, { - "duration": "33.0", + "duration": "34.0", "name": "rendering.desktop/webp_decoding_yuv_and_gpu_rasterization" }, { - "duration": "39.0", + "duration": "40.0", "name": "rendering.desktop/wikipedia_2018" }, { - "duration": "38.0", + "duration": "39.0", "name": "rendering.desktop/wordpress_2018" }, { @@ -3272,7 +3308,7 @@ "name": "rendering.desktop/yahoo_answers_2018" }, { - "duration": "38.0", + "duration": "37.0", "name": "rendering.desktop/yahoo_news_2018" }, { @@ -3280,7 +3316,7 @@ "name": "rendering.desktop/yahoo_news_pinch_2018" }, { - "duration": "39.0", + "duration": "38.0", "name": "rendering.desktop/yahoo_sports_2018" }, { @@ -3296,335 +3332,355 @@ "name": "rendering.desktop/youtube_pinch_2018" }, { - "duration": "93.0", + "duration": "78.0", "name": "speedometer-future/http://browserbench.org/Speedometer/" }, { - "duration": "84.0", + "duration": "76.0", "name": "speedometer/http://browserbench.org/Speedometer/" }, { - "duration": "143.0", + "duration": "141.0", "name": "speedometer2-future/Speedometer2" }, { - "duration": "138.0", + "duration": "170.0", + "name": "speedometer2-pcscan/Speedometer2" + }, + { + "duration": "134.0", "name": "speedometer2/Speedometer2" }, { - "duration": "66.0", + "duration": "58.0", "name": "system_health.common_desktop/browse:media:googleplaystore:2018" }, { - "duration": "109.0", + "duration": "97.0", "name": "system_health.common_desktop/browse:media:imgur" }, { - "duration": "110.0", + "duration": "120.0", "name": "system_health.common_desktop/browse:media:pinterest:2018" }, { - "duration": "87.0", + "duration": "95.0", "name": "system_health.common_desktop/browse:media:tumblr:2018" }, { - "duration": "38.0", + "duration": "30.0", "name": "system_health.common_desktop/browse:media:youtube:2019" }, { - "duration": "101.0", + "duration": "92.0", "name": "system_health.common_desktop/browse:media:youtubetv:2019" }, { - "duration": "110.0", + "duration": "101.0", "name": "system_health.common_desktop/browse:media:youtubetv_watch:2020" }, { - "duration": "98.0", + "duration": "105.0", "name": "system_health.common_desktop/browse:news:cnn:2020" }, { - "duration": "78.0", + "duration": "69.0", "name": "system_health.common_desktop/browse:news:flipboard:2018" }, { - "duration": "107.0", + "duration": "20.0", + "name": "system_health.common_desktop/browse:news:hackernews:2020" + }, + { + "duration": "116.0", "name": "system_health.common_desktop/browse:news:nytimes:2020" }, { - "duration": "58.0", + "duration": "91.0", + "name": "system_health.common_desktop/browse:news:reddit:2020" + }, + { + "duration": "66.0", + "name": "system_health.common_desktop/browse:search:google:2020" + }, + { + "duration": "50.0", "name": "system_health.common_desktop/browse:search:google_india:2018" }, { - "duration": "98.0", + "duration": "111.0", "name": "system_health.common_desktop/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "103.0", + "duration": "87.0", "name": "system_health.common_desktop/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "83.0", + "duration": "73.0", "name": "system_health.common_desktop/browse:social:twitter:2018" }, { - "duration": "98.0", + "duration": "89.0", "name": "system_health.common_desktop/browse:social:twitter_infinite_scroll:2018" }, { - "duration": "81.0", + "duration": "94.0", "name": "system_health.common_desktop/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "60.0", + "duration": "52.0", "name": "system_health.common_desktop/browse:tools:docs_scrolling" }, { - "duration": "127.0", + "duration": "140.0", "name": "system_health.common_desktop/browse:tools:earth:2020" }, { - "duration": "27.0", + "duration": "20.0", "name": "system_health.common_desktop/browse:tools:gmail-compose:2020" }, { - "duration": "27.0", + "duration": "20.0", "name": "system_health.common_desktop/browse:tools:gmail-labelclick:2020" }, { - "duration": "27.0", + "duration": "20.0", "name": "system_health.common_desktop/browse:tools:gmail-openconversation:2020" }, { - "duration": "27.0", + "duration": "20.0", "name": "system_health.common_desktop/browse:tools:gmail-search:2020" }, { - "duration": "101.0", + "duration": "90.0", "name": "system_health.common_desktop/browse:tools:maps:2019" }, { - "duration": "27.0", + "duration": "20.0", "name": "system_health.common_desktop/browse:tools:sheets:2019" }, { - "duration": "27.0", + "duration": "39.0", "name": "system_health.common_desktop/browse_accessibility:media:youtube" }, { - "duration": "53.0", + "duration": "65.0", "name": "system_health.common_desktop/browse_accessibility:tech:codesearch:2018" }, { - "duration": "41.0", + "duration": "52.0", "name": "system_health.common_desktop/load:chrome:blank" }, { - "duration": "43.0", + "duration": "35.0", "name": "system_health.common_desktop/load:games:alphabetty:2018" }, { - "duration": "41.0", + "duration": "33.0", "name": "system_health.common_desktop/load:games:bubbles:2020" }, { - "duration": "42.0", + "duration": "33.0", "name": "system_health.common_desktop/load:games:lazors" }, { - "duration": "41.0", + "duration": "39.0", "name": "system_health.common_desktop/load:games:miniclip:2018" }, { - "duration": "41.0", + "duration": "38.0", "name": "system_health.common_desktop/load:games:spychase:2018" }, { - "duration": "50.0", + "duration": "42.0", "name": "system_health.common_desktop/load:media:9gag" }, { - "duration": "37.0", + "duration": "35.0", "name": "system_health.common_desktop/load:media:dailymotion:2019" }, { - "duration": "40.0", + "duration": "37.0", "name": "system_health.common_desktop/load:media:facebook_feed:desktop:2020" }, { - "duration": "39.0", + "duration": "36.0", "name": "system_health.common_desktop/load:media:facebook_photos:2018" }, { - "duration": "40.0", + "duration": "37.0", "name": "system_health.common_desktop/load:media:facebook_photos:desktop:2020" }, { - "duration": "38.0", + "duration": "36.0", "name": "system_health.common_desktop/load:media:flickr:2018" }, { - "duration": "37.0", + "duration": "34.0", "name": "system_health.common_desktop/load:media:google_images:2018" }, { - "duration": "38.0", + "duration": "36.0", "name": "system_health.common_desktop/load:media:imgur:2018" }, { - "duration": "41.0", + "duration": "38.0", "name": "system_health.common_desktop/load:media:soundcloud:2018" }, { - "duration": "37.0", + "duration": "46.0", "name": "system_health.common_desktop/load:media:youtube:2018" }, { - "duration": "36.0", + "duration": "45.0", "name": "system_health.common_desktop/load:media:youtubelivingroom:2020" }, { - "duration": "43.0", + "duration": "35.0", "name": "system_health.common_desktop/load:news:bbc:2018" }, { - "duration": "39.0", + "duration": "36.0", + "name": "system_health.common_desktop/load:news:cnn:2020" + }, + { + "duration": "35.0", "name": "system_health.common_desktop/load:news:flipboard" }, { - "duration": "35.0", + "duration": "33.0", "name": "system_health.common_desktop/load:news:hackernews:2018" }, { - "duration": "43.0", + "duration": "40.0", "name": "system_health.common_desktop/load:news:nytimes:2018" }, { - "duration": "38.0", + "duration": "36.0", "name": "system_health.common_desktop/load:news:qq:2018" }, { - "duration": "40.0", + "duration": "37.0", "name": "system_health.common_desktop/load:news:reddit:2018" }, { - "duration": "38.0", + "duration": "47.0", "name": "system_health.common_desktop/load:news:wikipedia:2018" }, { - "duration": "42.0", + "duration": "34.0", "name": "system_health.common_desktop/load:search:amazon:2018" }, { - "duration": "41.0", + "duration": "33.0", "name": "system_health.common_desktop/load:search:baidu:2018" }, { - "duration": "38.0", + "duration": "35.0", "name": "system_health.common_desktop/load:search:ebay:2018" }, { - "duration": "38.0", + "duration": "35.0", "name": "system_health.common_desktop/load:search:flipkart:2018" }, { - "duration": "37.0", + "duration": "35.0", "name": "system_health.common_desktop/load:search:google:2018" }, { - "duration": "36.0", + "duration": "34.0", "name": "system_health.common_desktop/load:search:taobao:2018" }, { - "duration": "35.0", + "duration": "44.0", "name": "system_health.common_desktop/load:search:yahoo:2018" }, { - "duration": "37.0", + "duration": "46.0", "name": "system_health.common_desktop/load:search:yandex:2018" }, { - "duration": "37.0", + "duration": "34.0", "name": "system_health.common_desktop/load:social:instagram:2018" }, { - "duration": "39.0", + "duration": "37.0", "name": "system_health.common_desktop/load:social:pinterest:2019" }, { - "duration": "37.0", + "duration": "46.0", "name": "system_health.common_desktop/load:social:vk:2018" }, { - "duration": "56.0", + "duration": "46.0", "name": "system_health.common_desktop/load:tools:chat:2020" }, { - "duration": "45.0", + "duration": "42.0", "name": "system_health.common_desktop/load:tools:docs:2019" }, { - "duration": "38.0", + "duration": "35.0", "name": "system_health.common_desktop/load:tools:drive:2019" }, { - "duration": "22.0", + "duration": "20.0", "name": "system_health.common_desktop/load:tools:gmail:2019" }, { - "duration": "37.0", + "duration": "35.0", "name": "system_health.common_desktop/load:tools:stackoverflow:2018" }, { - "duration": "37.0", + "duration": "46.0", "name": "system_health.common_desktop/load:tools:weather:2019" }, { - "duration": "43.0", + "duration": "55.0", "name": "system_health.common_desktop/load_accessibility:media:wikipedia:2018" }, { - "duration": "43.0", + "duration": "55.0", "name": "system_health.common_desktop/load_accessibility:shopping:amazon:2018" }, { - "duration": "148.0", + "duration": "160.0", "name": "system_health.common_desktop/long_running:tools:gmail-background" }, { - "duration": "22.0", + "duration": "30.0", "name": "system_health.common_desktop/long_running:tools:gmail-foreground" }, { - "duration": "22.0", + "duration": "30.0", "name": "system_health.common_desktop/multitab:misc:typical24" }, { - "duration": "22.0", + "duration": "30.0", "name": "system_health.common_desktop/multitab:misc:typical24:2018" }, { - "duration": "71.0", + "duration": "62.0", "name": "system_health.common_desktop/play:media:google_play_music" }, { - "duration": "64.0", + "duration": "72.0", "name": "system_health.common_desktop/play:media:soundcloud:2018" }, { - "duration": "50.0", + "duration": "44.0", "name": "system_health.memory_desktop/browse:media:googleplaystore:2018" }, { - "duration": "87.0", + "duration": "80.0", "name": "system_health.memory_desktop/browse:media:imgur" }, { - "duration": "97.0", + "duration": "98.0", "name": "system_health.memory_desktop/browse:media:pinterest:2018" }, { - "duration": "67.0", + "duration": "68.0", "name": "system_health.memory_desktop/browse:media:tumblr:2018" }, { @@ -3632,31 +3688,43 @@ "name": "system_health.memory_desktop/browse:media:youtube:2019" }, { - "duration": "66.0", + "duration": "67.0", "name": "system_health.memory_desktop/browse:media:youtubetv:2019" }, { - "duration": "74.0", + "duration": "75.0", "name": "system_health.memory_desktop/browse:media:youtubetv_watch:2020" }, { - "duration": "73.0", + "duration": "68.0", "name": "system_health.memory_desktop/browse:news:cnn:2020" }, { - "duration": "56.0", + "duration": "54.0", "name": "system_health.memory_desktop/browse:news:flipboard:2018" }, { - "duration": "86.0", + "duration": "55.0", + "name": "system_health.memory_desktop/browse:news:hackernews:2020" + }, + { + "duration": "88.0", "name": "system_health.memory_desktop/browse:news:nytimes:2020" }, { - "duration": "41.0", + "duration": "62.0", + "name": "system_health.memory_desktop/browse:news:reddit:2020" + }, + { + "duration": "52.0", + "name": "system_health.memory_desktop/browse:search:google:2020" + }, + { + "duration": "36.0", "name": "system_health.memory_desktop/browse:search:google_india:2018" }, { - "duration": "76.0", + "duration": "73.0", "name": "system_health.memory_desktop/browse:social:facebook_infinite_scroll:2018" }, { @@ -3672,107 +3740,107 @@ "name": "system_health.memory_desktop/browse:social:twitter_infinite_scroll:2018" }, { - "duration": "61.0", + "duration": "62.0", "name": "system_health.memory_desktop/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "40.0", + "duration": "38.0", "name": "system_health.memory_desktop/browse:tools:docs_scrolling" }, { - "duration": "9.0", + "duration": "8.0", "name": "system_health.memory_desktop/browse:tools:earth:2020" }, { - "duration": "9.0", + "duration": "8.0", "name": "system_health.memory_desktop/browse:tools:gmail-compose:2020" }, { - "duration": "9.0", + "duration": "8.0", "name": "system_health.memory_desktop/browse:tools:gmail-labelclick:2020" }, { - "duration": "9.0", + "duration": "8.0", "name": "system_health.memory_desktop/browse:tools:gmail-openconversation:2020" }, { - "duration": "9.0", + "duration": "8.0", "name": "system_health.memory_desktop/browse:tools:gmail-search:2020" }, { - "duration": "83.0", + "duration": "76.0", "name": "system_health.memory_desktop/browse:tools:maps:2019" }, { - "duration": "13.0", + "duration": "8.0", "name": "system_health.memory_desktop/browse:tools:sheets:2019" }, { - "duration": "9.0", + "duration": "11.0", "name": "system_health.memory_desktop/browse_accessibility:media:youtube" }, { - "duration": "33.0", + "duration": "34.0", "name": "system_health.memory_desktop/browse_accessibility:tech:codesearch:2018" }, { - "duration": "21.0", + "duration": "22.0", "name": "system_health.memory_desktop/load:chrome:blank" }, { - "duration": "28.0", + "duration": "22.0", "name": "system_health.memory_desktop/load:games:alphabetty:2018" }, { - "duration": "25.0", + "duration": "24.0", "name": "system_health.memory_desktop/load:games:bubbles:2020" }, { - "duration": "28.0", + "duration": "26.0", "name": "system_health.memory_desktop/load:games:lazors" }, { - "duration": "32.0", + "duration": "29.0", "name": "system_health.memory_desktop/load:games:miniclip:2018" }, { - "duration": "31.0", + "duration": "28.0", "name": "system_health.memory_desktop/load:games:spychase:2018" }, { - "duration": "31.0", + "duration": "25.0", "name": "system_health.memory_desktop/load:media:9gag" }, { - "duration": "28.0", + "duration": "27.0", "name": "system_health.memory_desktop/load:media:dailymotion:2019" }, { - "duration": "31.0", + "duration": "28.0", "name": "system_health.memory_desktop/load:media:facebook_feed:desktop:2020" }, { - "duration": "30.0", + "duration": "28.0", "name": "system_health.memory_desktop/load:media:facebook_photos:2018" }, { - "duration": "31.0", + "duration": "28.0", "name": "system_health.memory_desktop/load:media:facebook_photos:desktop:2020" }, { - "duration": "29.0", + "duration": "27.0", "name": "system_health.memory_desktop/load:media:flickr:2018" }, { - "duration": "27.0", + "duration": "25.0", "name": "system_health.memory_desktop/load:media:google_images:2018" }, { - "duration": "29.0", + "duration": "27.0", "name": "system_health.memory_desktop/load:media:imgur:2018" }, { - "duration": "31.0", + "duration": "28.0", "name": "system_health.memory_desktop/load:media:soundcloud:2018" }, { @@ -3784,27 +3852,31 @@ "name": "system_health.memory_desktop/load:media:youtubelivingroom:2020" }, { - "duration": "27.0", + "duration": "26.0", "name": "system_health.memory_desktop/load:news:bbc:2018" }, { - "duration": "30.0", + "duration": "27.0", + "name": "system_health.memory_desktop/load:news:cnn:2020" + }, + { + "duration": "27.0", "name": "system_health.memory_desktop/load:news:flipboard" }, { - "duration": "26.0", + "duration": "24.0", "name": "system_health.memory_desktop/load:news:hackernews:2018" }, { - "duration": "33.0", + "duration": "30.0", "name": "system_health.memory_desktop/load:news:nytimes:2018" }, { - "duration": "29.0", + "duration": "26.0", "name": "system_health.memory_desktop/load:news:qq:2018" }, { - "duration": "31.0", + "duration": "28.0", "name": "system_health.memory_desktop/load:news:reddit:2018" }, { @@ -3812,27 +3884,27 @@ "name": "system_health.memory_desktop/load:news:wikipedia:2018" }, { - "duration": "27.0", + "duration": "21.0", "name": "system_health.memory_desktop/load:search:amazon:2018" }, { - "duration": "26.0", + "duration": "25.0", "name": "system_health.memory_desktop/load:search:baidu:2018" }, { - "duration": "28.0", + "duration": "26.0", "name": "system_health.memory_desktop/load:search:ebay:2018" }, { - "duration": "29.0", + "duration": "26.0", "name": "system_health.memory_desktop/load:search:flipkart:2018" }, { - "duration": "28.0", + "duration": "26.0", "name": "system_health.memory_desktop/load:search:google:2018" }, { - "duration": "27.0", + "duration": "25.0", "name": "system_health.memory_desktop/load:search:taobao:2018" }, { @@ -3844,11 +3916,11 @@ "name": "system_health.memory_desktop/load:search:yandex:2018" }, { - "duration": "28.0", + "duration": "26.0", "name": "system_health.memory_desktop/load:social:instagram:2018" }, { - "duration": "31.0", + "duration": "28.0", "name": "system_health.memory_desktop/load:social:pinterest:2019" }, { @@ -3856,35 +3928,35 @@ "name": "system_health.memory_desktop/load:social:vk:2018" }, { - "duration": "37.0", + "duration": "35.0", "name": "system_health.memory_desktop/load:tools:chat:2020" }, { - "duration": "34.0", + "duration": "32.0", "name": "system_health.memory_desktop/load:tools:docs:2019" }, { - "duration": "28.0", + "duration": "27.0", "name": "system_health.memory_desktop/load:tools:drive:2019" }, { - "duration": "14.0", + "duration": "12.0", "name": "system_health.memory_desktop/load:tools:gmail:2019" }, { - "duration": "28.0", + "duration": "25.0", "name": "system_health.memory_desktop/load:tools:stackoverflow:2018" }, { - "duration": "25.0", + "duration": "26.0", "name": "system_health.memory_desktop/load:tools:weather:2019" }, { - "duration": "23.0", + "duration": "24.0", "name": "system_health.memory_desktop/load_accessibility:media:wikipedia:2018" }, { - "duration": "24.0", + "duration": "25.0", "name": "system_health.memory_desktop/load_accessibility:shopping:amazon:2018" }, { @@ -3892,7 +3964,7 @@ "name": "system_health.memory_desktop/long_running:tools:gmail-background" }, { - "duration": "149.0", + "duration": "147.0", "name": "system_health.memory_desktop/long_running:tools:gmail-foreground" }, { @@ -3904,14 +3976,46 @@ "name": "system_health.memory_desktop/multitab:misc:typical24:2018" }, { - "duration": "13.0", + "duration": "8.0", "name": "system_health.memory_desktop/play:media:google_play_music" }, { - "duration": "51.0", + "duration": "47.0", "name": "system_health.memory_desktop/play:media:soundcloud:2018" }, { + "duration": "106.0", + "name": "tab_search/tab_search:close_and_open:2020" + }, + { + "duration": "187.0", + "name": "tab_search/tab_search:scroll_up_and_down:2020" + }, + { + "duration": "483.0", + "name": "tab_search/tab_search:top100:2020" + }, + { + "duration": "189.0", + "name": "tab_search/tab_search:top100:loading:2020" + }, + { + "duration": "157.0", + "name": "tab_search/tab_search:top10:2020" + }, + { + "duration": "73.0", + "name": "tab_search/tab_search:top10:loading:2020" + }, + { + "duration": "270.0", + "name": "tab_search/tab_search:top50:2020" + }, + { + "duration": "112.0", + "name": "tab_search/tab_search:top50:loading:2020" + }, + { "duration": "0.0", "name": "tab_switching.typical_25/multitab:misc:typical24" }, @@ -3920,7 +4024,7 @@ "name": "tracing.tracing_with_background_memory_infra/Facebook" }, { - "duration": "20.0", + "duration": "21.0", "name": "tracing.tracing_with_background_memory_infra/Wikipedia" }, { @@ -3928,11 +4032,11 @@ "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com" }, { - "duration": "20.0", + "duration": "21.0", "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/" }, { - "duration": "21.0", + "duration": "20.0", "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/" }, { @@ -3944,7 +4048,7 @@ "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com" }, { - "duration": "21.0", + "duration": "22.0", "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama" }, { @@ -3952,27 +4056,27 @@ "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/" }, { - "duration": "98.0", + "duration": "102.0", "name": "v8.browsing_desktop-future/browse:media:googleplaystore:2018" }, { - "duration": "56.0", + "duration": "60.0", "name": "v8.browsing_desktop-future/browse:media:imgur" }, { - "duration": "156.0", + "duration": "154.0", "name": "v8.browsing_desktop-future/browse:media:pinterest:2018" }, { - "duration": "140.0", + "duration": "126.0", "name": "v8.browsing_desktop-future/browse:media:tumblr:2018" }, { - "duration": "56.0", + "duration": "60.0", "name": "v8.browsing_desktop-future/browse:media:youtube:2019" }, { - "duration": "125.0", + "duration": "126.0", "name": "v8.browsing_desktop-future/browse:media:youtubetv:2019" }, { @@ -3980,215 +4084,239 @@ "name": "v8.browsing_desktop-future/browse:media:youtubetv_watch:2020" }, { - "duration": "42.0", + "duration": "54.0", "name": "v8.browsing_desktop-future/browse:news:cnn:2020" }, { - "duration": "93.0", + "duration": "104.0", "name": "v8.browsing_desktop-future/browse:news:flipboard:2018" }, { - "duration": "56.0", + "duration": "60.0", + "name": "v8.browsing_desktop-future/browse:news:hackernews:2020" + }, + { + "duration": "60.0", "name": "v8.browsing_desktop-future/browse:news:nytimes:2020" }, { - "duration": "73.0", + "duration": "140.0", + "name": "v8.browsing_desktop-future/browse:news:reddit:2020" + }, + { + "duration": "101.0", + "name": "v8.browsing_desktop-future/browse:search:google:2020" + }, + { + "duration": "92.0", "name": "v8.browsing_desktop-future/browse:search:google_india:2018" }, { - "duration": "116.0", + "duration": "127.0", "name": "v8.browsing_desktop-future/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "133.0", + "duration": "123.0", "name": "v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "107.0", + "duration": "106.0", "name": "v8.browsing_desktop-future/browse:social:twitter:2018" }, { - "duration": "121.0", + "duration": "124.0", "name": "v8.browsing_desktop-future/browse:social:twitter_infinite_scroll:2018" }, { - "duration": "98.0", + "duration": "109.0", "name": "v8.browsing_desktop-future/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "75.0", + "duration": "95.0", "name": "v8.browsing_desktop-future/browse:tools:docs_scrolling" }, { - "duration": "139.0", + "duration": "152.0", "name": "v8.browsing_desktop-future/browse:tools:earth:2020" }, { - "duration": "42.0", + "duration": "54.0", "name": "v8.browsing_desktop-future/browse:tools:gmail-compose:2020" }, { - "duration": "42.0", + "duration": "54.0", "name": "v8.browsing_desktop-future/browse:tools:gmail-labelclick:2020" }, { - "duration": "42.0", + "duration": "54.0", "name": "v8.browsing_desktop-future/browse:tools:gmail-openconversation:2020" }, { - "duration": "42.0", + "duration": "54.0", "name": "v8.browsing_desktop-future/browse:tools:gmail-search:2020" }, { - "duration": "116.0", + "duration": "60.0", "name": "v8.browsing_desktop-future/browse:tools:maps:2019" }, { - "duration": "56.0", + "duration": "60.0", "name": "v8.browsing_desktop-future/browse:tools:sheets:2019" }, { - "duration": "81.0", + "duration": "85.0", "name": "v8.browsing_desktop/browse:media:googleplaystore:2018" }, { - "duration": "42.0", + "duration": "47.0", "name": "v8.browsing_desktop/browse:media:imgur" }, { - "duration": "132.0", + "duration": "135.0", "name": "v8.browsing_desktop/browse:media:pinterest:2018" }, { - "duration": "109.0", + "duration": "111.0", "name": "v8.browsing_desktop/browse:media:tumblr:2018" }, { - "duration": "42.0", + "duration": "47.0", "name": "v8.browsing_desktop/browse:media:youtube:2019" }, { - "duration": "105.0", + "duration": "108.0", "name": "v8.browsing_desktop/browse:media:youtubetv:2019" }, { - "duration": "114.0", + "duration": "118.0", "name": "v8.browsing_desktop/browse:media:youtubetv_watch:2020" }, { - "duration": "48.0", + "duration": "54.0", "name": "v8.browsing_desktop/browse:news:cnn:2020" }, { - "duration": "99.0", + "duration": "104.0", "name": "v8.browsing_desktop/browse:news:flipboard:2018" }, { - "duration": "42.0", + "duration": "47.0", + "name": "v8.browsing_desktop/browse:news:hackernews:2020" + }, + { + "duration": "47.0", "name": "v8.browsing_desktop/browse:news:nytimes:2020" }, { - "duration": "79.0", + "duration": "105.0", + "name": "v8.browsing_desktop/browse:news:reddit:2020" + }, + { + "duration": "101.0", + "name": "v8.browsing_desktop/browse:search:google:2020" + }, + { + "duration": "76.0", "name": "v8.browsing_desktop/browse:search:google_india:2018" }, { - "duration": "128.0", + "duration": "132.0", "name": "v8.browsing_desktop/browse:social:facebook_infinite_scroll:2018" }, { - "duration": "106.0", + "duration": "110.0", "name": "v8.browsing_desktop/browse:social:tumblr_infinite_scroll:2018" }, { - "duration": "85.0", + "duration": "89.0", "name": "v8.browsing_desktop/browse:social:twitter:2018" }, { - "duration": "102.0", + "duration": "105.0", "name": "v8.browsing_desktop/browse:social:twitter_infinite_scroll:2018" }, { - "duration": "104.0", + "duration": "109.0", "name": "v8.browsing_desktop/browse:tech:discourse_infinite_scroll:2018" }, { - "duration": "82.0", + "duration": "79.0", "name": "v8.browsing_desktop/browse:tools:docs_scrolling" }, { - "duration": "150.0", + "duration": "153.0", "name": "v8.browsing_desktop/browse:tools:earth:2020" }, { - "duration": "48.0", + "duration": "54.0", "name": "v8.browsing_desktop/browse:tools:gmail-compose:2020" }, { - "duration": "48.0", + "duration": "54.0", "name": "v8.browsing_desktop/browse:tools:gmail-labelclick:2020" }, { - "duration": "48.0", + "duration": "54.0", "name": "v8.browsing_desktop/browse:tools:gmail-openconversation:2020" }, { - "duration": "48.0", + "duration": "54.0", "name": "v8.browsing_desktop/browse:tools:gmail-search:2020" }, { - "duration": "124.0", + "duration": "119.0", "name": "v8.browsing_desktop/browse:tools:maps:2019" }, { - "duration": "42.0", + "duration": "47.0", "name": "v8.browsing_desktop/browse:tools:sheets:2019" }, { - "duration": "44.0", + "duration": "45.0", "name": "v8.runtime_stats.top_25/AdsAMPAds_cold" }, { - "duration": "49.0", + "duration": "50.0", "name": "v8.runtime_stats.top_25/AdsAMPAds_hot" }, { - "duration": "47.0", + "duration": "48.0", "name": "v8.runtime_stats.top_25/AdsAMPAds_warm" }, { - "duration": "44.0", + "duration": "45.0", "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_cold" }, { - "duration": "50.0", + "duration": "51.0", "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_hot" }, { - "duration": "49.0", + "duration": "48.0", "name": "v8.runtime_stats.top_25/AdsAdSenseAsyncAds_warm" }, { - "duration": "43.0", + "duration": "45.0", "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_cold" }, { - "duration": "48.0", + "duration": "50.0", "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_hot" }, { - "duration": "46.0", + "duration": "47.0", "name": "v8.runtime_stats.top_25/AdsAsyncAdSenseImage_warm" }, { - "duration": "44.0", + "duration": "45.0", "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_cold" }, { - "duration": "49.0", + "duration": "51.0", "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_hot" }, { - "duration": "47.0", + "duration": "48.0", "name": "v8.runtime_stats.top_25/AdsDoubleClickAsyncAds_warm" }, { @@ -4196,15 +4324,15 @@ "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_cold" }, { - "duration": "48.0", + "duration": "50.0", "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_hot" }, { - "duration": "46.0", + "duration": "47.0", "name": "v8.runtime_stats.top_25/AdsMultipleAdSlots_warm" }, { - "duration": "44.0", + "duration": "45.0", "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_cold" }, { @@ -4212,35 +4340,35 @@ "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_hot" }, { - "duration": "46.0", + "duration": "48.0", "name": "v8.runtime_stats.top_25/AdsOnScreenDetection_warm" }, { - "duration": "45.0", + "duration": "46.0", "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_cold" }, { - "duration": "52.0", + "duration": "50.0", "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_hot" }, { - "duration": "47.0", + "duration": "48.0", "name": "v8.runtime_stats.top_25/AdsSyncAdSenseImage_warm" }, { - "duration": "44.0", + "duration": "45.0", "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_cold" }, { - "duration": "49.0", + "duration": "51.0", "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_hot" }, { - "duration": "47.0", + "duration": "48.0", "name": "v8.runtime_stats.top_25/AdsSyncLoadAsyncRenderAdSenseImage_warm" }, { - "duration": "51.0", + "duration": "53.0", "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_cold" }, { @@ -4248,119 +4376,119 @@ "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_hot" }, { - "duration": "62.0", + "duration": "63.0", "name": "v8.runtime_stats.top_25/AdsViewOptimizedRendering_warm" }, { - "duration": "49.0", + "duration": "48.0", "name": "v8.runtime_stats.top_25/http://edition.cnn.com_cold" }, { - "duration": "59.0", + "duration": "58.0", "name": "v8.runtime_stats.top_25/http://edition.cnn.com_hot" }, { - "duration": "54.0", + "duration": "53.0", "name": "v8.runtime_stats.top_25/http://edition.cnn.com_warm" }, { - "duration": "47.0", + "duration": "46.0", "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_cold" }, { - "duration": "54.0", + "duration": "53.0", "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_hot" }, { - "duration": "51.0", + "duration": "49.0", "name": "v8.runtime_stats.top_25/http://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0_warm" }, { - "duration": "48.0", + "duration": "46.0", "name": "v8.runtime_stats.top_25/http://inbox.google.com_cold" }, { - "duration": "54.0", + "duration": "52.0", "name": "v8.runtime_stats.top_25/http://inbox.google.com_hot" }, { - "duration": "51.0", + "duration": "50.0", "name": "v8.runtime_stats.top_25/http://inbox.google.com_warm" }, { - "duration": "47.0", + "duration": "46.0", "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_cold" }, { - "duration": "54.0", + "duration": "52.0", "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_hot" }, { - "duration": "50.0", + "duration": "49.0", "name": "v8.runtime_stats.top_25/http://maps.google.co.jp/maps/search/restaurant+tokyo_warm" }, { - "duration": "48.0", + "duration": "46.0", "name": "v8.runtime_stats.top_25/http://meta.discourse.org_cold" }, { - "duration": "56.0", + "duration": "54.0", "name": "v8.runtime_stats.top_25/http://meta.discourse.org_hot" }, { - "duration": "53.0", + "duration": "51.0", "name": "v8.runtime_stats.top_25/http://meta.discourse.org_warm" }, { - "duration": "46.0", + "duration": "45.0", "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_cold" }, { - "duration": "51.0", + "duration": "50.0", "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_hot" }, { - "duration": "49.0", + "duration": "48.0", "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?angular_warm" }, { - "duration": "47.0", + "duration": "44.0", "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_cold" }, { - "duration": "51.0", + "duration": "64.0", "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_hot" }, { - "duration": "49.0", + "duration": "47.0", "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?backbone_warm" }, { - "duration": "47.0", + "duration": "44.0", "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_cold" }, { - "duration": "52.0", + "duration": "50.0", "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_hot" }, { - "duration": "49.0", + "duration": "47.0", "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?ember_warm" }, { - "duration": "45.0", + "duration": "44.0", "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_cold" }, { - "duration": "52.0", + "duration": "50.0", "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_hot" }, { - "duration": "49.0", + "duration": "47.0", "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?jquery_warm" }, { - "duration": "53.0", + "duration": "45.0", "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_cold" }, { @@ -4372,39 +4500,39 @@ "name": "v8.runtime_stats.top_25/http://pollouer.muc/Speedometer/CustomRunner.html?vanilla_warm" }, { - "duration": "48.0", + "duration": "46.0", "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_cold" }, { - "duration": "54.0", + "duration": "52.0", "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_hot" }, { - "duration": "51.0", + "duration": "49.0", "name": "v8.runtime_stats.top_25/http://reddit.musicplayer.io_warm" }, { - "duration": "48.0", + "duration": "45.0", "name": "v8.runtime_stats.top_25/http://weibo.com_cold" }, { - "duration": "54.0", + "duration": "52.0", "name": "v8.runtime_stats.top_25/http://weibo.com_hot" }, { - "duration": "52.0", + "duration": "50.0", "name": "v8.runtime_stats.top_25/http://weibo.com_warm" }, { - "duration": "47.0", + "duration": "46.0", "name": "v8.runtime_stats.top_25/http://world.taobao.com_cold" }, { - "duration": "53.0", + "duration": "52.0", "name": "v8.runtime_stats.top_25/http://world.taobao.com_hot" }, { - "duration": "50.0", + "duration": "49.0", "name": "v8.runtime_stats.top_25/http://world.taobao.com_warm" }, { @@ -4412,31 +4540,31 @@ "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_cold" }, { - "duration": "52.0", + "duration": "51.0", "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_hot" }, { - "duration": "50.0", + "duration": "48.0", "name": "v8.runtime_stats.top_25/http://www.amazon.com/s/?field-keywords=v8_warm" }, { - "duration": "50.0", + "duration": "45.0", "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_cold" }, { - "duration": "55.0", + "duration": "52.0", "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_hot" }, { - "duration": "53.0", + "duration": "49.0", "name": "v8.runtime_stats.top_25/http://www.baidu.com/s?wd=v8_warm" }, { - "duration": "46.0", + "duration": "45.0", "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_cold" }, { - "duration": "65.0", + "duration": "51.0", "name": "v8.runtime_stats.top_25/http://www.bing.com/search?q=v8+engine_hot" }, { @@ -4448,11 +4576,11 @@ "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_cold" }, { - "duration": "56.0", + "duration": "54.0", "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_hot" }, { - "duration": "55.0", + "duration": "51.0", "name": "v8.runtime_stats.top_25/http://www.ebay.fr/sch/i.html?_nkw=v8_warm" }, { @@ -4468,7 +4596,7 @@ "name": "v8.runtime_stats.top_25/http://www.instagram.com/archdigest_warm" }, { - "duration": "47.0", + "duration": "59.0", "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_cold" }, { @@ -4476,39 +4604,39 @@ "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_hot" }, { - "duration": "51.0", + "duration": "50.0", "name": "v8.runtime_stats.top_25/http://www.msn.com/ar-ae_warm" }, { - "duration": "48.0", + "duration": "47.0", "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_cold" }, { - "duration": "57.0", + "duration": "55.0", "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_hot" }, { - "duration": "53.0", + "duration": "51.0", "name": "v8.runtime_stats.top_25/http://www.pinterest.com/categories/popular_warm" }, { - "duration": "53.0", + "duration": "49.0", "name": "v8.runtime_stats.top_25/http://www.qq.com_cold" }, { - "duration": "61.0", + "duration": "58.0", "name": "v8.runtime_stats.top_25/http://www.qq.com_hot" }, { - "duration": "57.0", + "duration": "54.0", "name": "v8.runtime_stats.top_25/http://www.qq.com_warm" }, { - "duration": "47.0", + "duration": "46.0", "name": "v8.runtime_stats.top_25/http://www.reddit.com_cold" }, { - "duration": "53.0", + "duration": "52.0", "name": "v8.runtime_stats.top_25/http://www.reddit.com_hot" }, { @@ -4516,7 +4644,7 @@ "name": "v8.runtime_stats.top_25/http://www.reddit.com_warm" }, { - "duration": "48.0", + "duration": "47.0", "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_cold" }, { @@ -4524,27 +4652,27 @@ "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_hot" }, { - "duration": "52.0", + "duration": "51.0", "name": "v8.runtime_stats.top_25/http://www.twitter.com/taylorswift13_warm" }, { - "duration": "48.0", + "duration": "46.0", "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_cold" }, { - "duration": "55.0", + "duration": "53.0", "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_hot" }, { - "duration": "52.0", + "duration": "51.0", "name": "v8.runtime_stats.top_25/http://www.wikiwand.com/en/hill_warm" }, { - "duration": "60.0", + "duration": "46.0", "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_cold" }, { - "duration": "52.0", + "duration": "51.0", "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_hot" }, { @@ -4552,35 +4680,35 @@ "name": "v8.runtime_stats.top_25/http://www.yahoo.co.jp_warm" }, { - "duration": "47.0", + "duration": "46.0", "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_cold" }, { - "duration": "54.0", + "duration": "51.0", "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_hot" }, { - "duration": "50.0", + "duration": "49.0", "name": "v8.runtime_stats.top_25/http://yandex.ru/search/?text=v8_warm" }, { - "duration": "53.0", + "duration": "50.0", "name": "v8.runtime_stats.top_25/https://adwords.google.com_cold" }, { - "duration": "67.0", + "duration": "63.0", "name": "v8.runtime_stats.top_25/https://adwords.google.com_hot" }, { - "duration": "62.0", + "duration": "60.0", "name": "v8.runtime_stats.top_25/https://adwords.google.com_warm" }, { - "duration": "44.0", + "duration": "45.0", "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_cold" }, { - "duration": "49.0", + "duration": "50.0", "name": "v8.runtime_stats.top_25/https://cdn.ampproject.org/c/www.bbc.co.uk/news/amp/37344292#log=3_hot" }, { @@ -4600,95 +4728,119 @@ "name": "v8.runtime_stats.top_25/https://en.wikipedia.org/w/index.php?title=Barack_Obama&veaction=edit_warm" }, { - "duration": "51.0", + "duration": "46.0", "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_cold" }, { - "duration": "58.0", + "duration": "55.0", "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_hot" }, { - "duration": "54.0", + "duration": "50.0", "name": "v8.runtime_stats.top_25/https://www.facebook.com/shakira_warm" }, { - "duration": "57.0", + "duration": "61.0", "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_cold" }, { - "duration": "56.0", + "duration": "60.0", "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_hot" }, { - "duration": "55.0", + "duration": "57.0", "name": "v8.runtime_stats.top_25/https://www.google.de/search?q=v8_warm" }, { - "duration": "46.0", + "duration": "47.0", "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_cold" }, { - "duration": "53.0", + "duration": "52.0", "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_hot" }, { - "duration": "49.0", + "duration": "50.0", "name": "v8.runtime_stats.top_25/https://www.linkedin.com/m/_warm" }, { - "duration": "50.0", + "duration": "53.0", "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_cold" }, { - "duration": "55.0", + "duration": "63.0", "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_hot" }, { - "duration": "53.0", + "duration": "57.0", "name": "v8.runtime_stats.top_25/https://www.youtube.com/watch?v=_kZsOISarzg_warm" }, { - "duration": "51.0", + "duration": "55.0", "name": "v8.runtime_stats.top_25/https://www.youtube.com_cold" }, { - "duration": "62.0", + "duration": "66.0", "name": "v8.runtime_stats.top_25/https://www.youtube.com_hot" }, { - "duration": "58.0", + "duration": "60.0", "name": "v8.runtime_stats.top_25/https://www.youtube.com_warm" }, { - "duration": "49.0", + "duration": "40.0", "name": "webrtc/10s_datachannel_transfer" }, { - "duration": "36.0", + "duration": "33.0", "name": "webrtc/canvas_capture_peer_connection" }, { - "duration": "46.0", + "duration": "44.0", "name": "webrtc/codec_constraints_h264" }, { - "duration": "46.0", + "duration": "44.0", "name": "webrtc/codec_constraints_vp8" }, { - "duration": "46.0", + "duration": "44.0", "name": "webrtc/codec_constraints_vp9" }, { - "duration": "36.0", + "duration": "33.0", "name": "webrtc/hd_local_stream_10s" }, { - "duration": "23.0", + "duration": "34.0", + "name": "webrtc/insertable_streams_video_processing_camera_canvas2d_video" + }, + { + "duration": "34.0", + "name": "webrtc/insertable_streams_video_processing_camera_drop_video" + }, + { + "duration": "34.0", + "name": "webrtc/insertable_streams_video_processing_camera_webgl_pc" + }, + { + "duration": "34.0", + "name": "webrtc/insertable_streams_video_processing_camera_webgl_video" + }, + { + "duration": "34.0", + "name": "webrtc/insertable_streams_video_processing_pc_webgl_video" + }, + { + "duration": "34.0", + "name": "webrtc/insertable_streams_video_processing_video_webgl_video" + }, + { + "duration": "21.0", "name": "webrtc/multiple_peerconnections" }, { - "duration": "23.0", + "duration": "21.0", "name": "webrtc/pause_play_peerconnections" } ] \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/win_7_nvidia_gpu_perf_timing.json b/tools/perf/core/shard_maps/timing_data/win_7_nvidia_gpu_perf_timing.json index 3cf2666..d0258f1 100644 --- a/tools/perf/core/shard_maps/timing_data/win_7_nvidia_gpu_perf_timing.json +++ b/tools/perf/core/shard_maps/timing_data/win_7_nvidia_gpu_perf_timing.json
@@ -1,10 +1,10 @@ [ { - "duration": "27.0", + "duration": "39.0", "name": "rendering.desktop/css_value_type_shadow" }, { - "duration": "31.0", + "duration": "26.0", "name": "rendering.desktop/main_30fps_impl_60fps" } ] \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/win_7_perf_timing.json b/tools/perf/core/shard_maps/timing_data/win_7_perf_timing.json index 990a6d2..6632a94 100644 --- a/tools/perf/core/shard_maps/timing_data/win_7_perf_timing.json +++ b/tools/perf/core/shard_maps/timing_data/win_7_perf_timing.json
@@ -1,42 +1,42 @@ [ { - "duration": "49.0", + "duration": "47.0", "name": "loading.desktop/AirBnB_warm" }, { - "duration": "38.0", + "duration": "41.0", "name": "loading.desktop/Aljayyash_cold" }, { - "duration": "21.0", + "duration": "20.0", "name": "loading.desktop/AllRecipes_cold" }, { - "duration": "24.0", + "duration": "28.0", "name": "loading.desktop/Baidu_warm" }, { - "duration": "34.0", + "duration": "48.0", "name": "loading.desktop/Naver_cold" }, { - "duration": "10.0", + "duration": "13.0", "name": "loading.desktop/Orange_cold" }, { - "duration": "10.0", + "duration": "13.0", "name": "loading.desktop/Orange_warm" }, { - "duration": "60.0", + "duration": "36.0", "name": "loading.desktop/Taobao_warm" }, { - "duration": "51.0", + "duration": "35.0", "name": "loading.desktop/TheOnion_cold" }, { - "duration": "27.0", + "duration": "30.0", "name": "loading.desktop/ru.wikipedia_warm" } ] \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/win-10-perf_map.json b/tools/perf/core/shard_maps/win-10-perf_map.json index 236bd483..61ff225 100644 --- a/tools/perf/core/shard_maps/win-10-perf_map.json +++ b/tools/perf/core/shard_maps/win-10-perf_map.json
@@ -8,7 +8,13 @@ "abridged": false }, "blink_perf.css": { - "end": 38, + "abridged": false + }, + "blink_perf.dom": { + "abridged": false + }, + "blink_perf.events": { + "end": 3, "abridged": false } }, @@ -24,14 +30,8 @@ }, "1": { "benchmarks": { - "blink_perf.css": { - "begin": 38, - "abridged": false - }, - "blink_perf.dom": { - "abridged": false - }, "blink_perf.events": { + "begin": 3, "abridged": false }, "blink_perf.image_decoder": { @@ -41,17 +41,12 @@ "abridged": false }, "blink_perf.owp_storage": { - "end": 1, "abridged": false } } }, "2": { "benchmarks": { - "blink_perf.owp_storage": { - "begin": 1, - "abridged": false - }, "blink_perf.paint": { "abridged": false }, @@ -65,17 +60,20 @@ "abridged": false }, "blink_perf.webaudio": { - "end": 2, "abridged": false } + }, + "executables": { + "components_perftests": { + "path": "components_perftests", + "arguments": [ + "--xvfb" + ] + } } }, "3": { "benchmarks": { - "blink_perf.webaudio": { - "begin": 2, - "abridged": false - }, "dromaeo": { "abridged": false }, @@ -87,15 +85,19 @@ }, "jetstream": { "abridged": false + }, + "jetstream2": { + "abridged": false + }, + "kraken": { + "abridged": false + }, + "loading.desktop": { + "end": 4, + "abridged": false } }, "executables": { - "components_perftests": { - "path": "components_perftests", - "arguments": [ - "--xvfb" - ] - }, "dawn_perf_tests": { "path": "dawn_perf_tests", "arguments": [ @@ -107,14 +109,9 @@ }, "4": { "benchmarks": { - "jetstream2": { - "abridged": false - }, - "kraken": { - "abridged": false - }, "loading.desktop": { - "end": 26, + "begin": 4, + "end": 35, "abridged": false } } @@ -122,8 +119,8 @@ "5": { "benchmarks": { "loading.desktop": { - "begin": 26, - "end": 50, + "begin": 35, + "end": 60, "abridged": false } } @@ -131,8 +128,8 @@ "6": { "benchmarks": { "loading.desktop": { - "begin": 50, - "end": 74, + "begin": 60, + "end": 87, "abridged": false } } @@ -140,23 +137,23 @@ "7": { "benchmarks": { "loading.desktop": { - "begin": 74, - "end": 101, + "begin": 87, + "abridged": false + }, + "media.desktop": { + "end": 18, "abridged": false } } }, "8": { "benchmarks": { - "loading.desktop": { - "begin": 101, - "abridged": false - }, "media.desktop": { + "begin": 18, "abridged": false }, "memory.desktop": { - "end": 5, + "end": 8, "abridged": false } }, @@ -174,29 +171,29 @@ "9": { "benchmarks": { "memory.desktop": { - "begin": 5, + "begin": 8, "abridged": false }, "octane": { "abridged": false }, "power.desktop": { - "end": 14, - "abridged": false - } - } - }, - "10": { - "benchmarks": { - "power.desktop": { - "begin": 14, "abridged": false }, "rasterize_and_record_micro.top_25": { "abridged": false }, "rendering.desktop": { - "end": 42, + "end": 8, + "abridged": false + } + } + }, + "10": { + "benchmarks": { + "rendering.desktop": { + "begin": 8, + "end": 71, "abridged": false } } @@ -204,8 +201,8 @@ "11": { "benchmarks": { "rendering.desktop": { - "begin": 42, - "end": 102, + "begin": 71, + "end": 136, "abridged": false } } @@ -213,8 +210,8 @@ "12": { "benchmarks": { "rendering.desktop": { - "begin": 102, - "end": 160, + "begin": 136, + "end": 193, "abridged": false } } @@ -222,8 +219,8 @@ "13": { "benchmarks": { "rendering.desktop": { - "begin": 160, - "end": 215, + "begin": 193, + "end": 228, "abridged": false } } @@ -231,8 +228,8 @@ "14": { "benchmarks": { "rendering.desktop": { - "begin": 215, - "end": 234, + "begin": 228, + "end": 267, "abridged": false } } @@ -240,16 +237,7 @@ "15": { "benchmarks": { "rendering.desktop": { - "begin": 234, - "end": 285, - "abridged": false - } - } - }, - "16": { - "benchmarks": { - "rendering.desktop": { - "begin": 285, + "begin": 267, "abridged": false }, "speedometer": { @@ -268,7 +256,16 @@ "abridged": false }, "system_health.common_desktop": { - "end": 18, + "end": 6, + "abridged": false + } + } + }, + "16": { + "benchmarks": { + "system_health.common_desktop": { + "begin": 6, + "end": 51, "abridged": false } } @@ -276,20 +273,20 @@ "17": { "benchmarks": { "system_health.common_desktop": { - "begin": 18, - "end": 65, + "begin": 51, + "abridged": false + }, + "system_health.memory_desktop": { + "end": 4, "abridged": false } } }, "18": { "benchmarks": { - "system_health.common_desktop": { - "begin": 65, - "abridged": false - }, "system_health.memory_desktop": { - "end": 8, + "begin": 4, + "end": 20, "abridged": false } } @@ -297,8 +294,8 @@ "19": { "benchmarks": { "system_health.memory_desktop": { - "begin": 8, - "end": 22, + "begin": 20, + "end": 40, "abridged": false } } @@ -306,8 +303,8 @@ "20": { "benchmarks": { "system_health.memory_desktop": { - "begin": 22, - "end": 41, + "begin": 40, + "end": 65, "abridged": false } } @@ -315,8 +312,8 @@ "21": { "benchmarks": { "system_health.memory_desktop": { - "begin": 41, - "end": 64, + "begin": 65, + "end": 74, "abridged": false } } @@ -324,16 +321,19 @@ "22": { "benchmarks": { "system_health.memory_desktop": { - "begin": 64, - "end": 73, + "begin": 74, + "abridged": false + }, + "tab_search": { + "end": 5, "abridged": false } } }, "23": { "benchmarks": { - "system_health.memory_desktop": { - "begin": 73, + "tab_search": { + "begin": 5, "abridged": false }, "tab_switching.typical_25": { @@ -343,7 +343,7 @@ "abridged": false }, "v8.browsing_desktop": { - "end": 11, + "end": 10, "abridged": false } } @@ -351,22 +351,19 @@ "24": { "benchmarks": { "v8.browsing_desktop": { - "begin": 11, + "begin": 10, "abridged": false }, "v8.browsing_desktop-future": { - "end": 5, + "end": 6, "abridged": false } } }, "25": { "benchmarks": { - "tab_search": { - "abridged": false - }, "v8.browsing_desktop-future": { - "begin": 5, + "begin": 6, "abridged": false }, "webrtc": { @@ -383,36 +380,36 @@ } }, "extra_infos": { - "num_stories": 1064, - "predicted_min_shard_time": 1141.0, - "predicted_min_shard_index": 3, - "predicted_max_shard_time": 1266.0, + "num_stories": 1088, + "predicted_min_shard_time": 1119.0, + "predicted_min_shard_index": 2, + "predicted_max_shard_time": 1339.0, "predicted_max_shard_index": 22, - "shard #0": 1197.0, - "shard #1": 1197.0, - "shard #2": 1197.0, - "shard #3": 1141.0, - "shard #4": 1197.0, - "shard #5": 1186.0, - "shard #6": 1210.0, - "shard #7": 1220.0, - "shard #8": 1234.0, - "shard #9": 1187.0, - "shard #10": 1203.0, - "shard #11": 1201.0, - "shard #12": 1209.0, - "shard #13": 1219.0, - "shard #14": 1187.0, - "shard #15": 1193.0, - "shard #16": 1236.0, - "shard #17": 1241.0, - "shard #18": 1189.0, - "shard #19": 1170.0, - "shard #20": 1191.0, - "shard #21": 1212.0, - "shard #22": 1266.0, - "shard #23": 1166.0, - "shard #24": 1193.0, - "shard #25": 1142.0 + "shard #0": 1281.0, + "shard #1": 1318.0, + "shard #2": 1119.0, + "shard #3": 1301.0, + "shard #4": 1288.0, + "shard #5": 1264.0, + "shard #6": 1292.0, + "shard #7": 1295.0, + "shard #8": 1247.0, + "shard #9": 1294.0, + "shard #10": 1296.0, + "shard #11": 1284.0, + "shard #12": 1283.0, + "shard #13": 1305.0, + "shard #14": 1283.0, + "shard #15": 1274.0, + "shard #16": 1275.0, + "shard #17": 1273.0, + "shard #18": 1323.0, + "shard #19": 1260.0, + "shard #20": 1239.0, + "shard #21": 1263.0, + "shard #22": 1339.0, + "shard #23": 1303.0, + "shard #24": 1291.0, + "shard #25": 1296.0 } } \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/win-10_laptop_low_end-perf_map.json b/tools/perf/core/shard_maps/win-10_laptop_low_end-perf_map.json index 19bf541..55ac68a 100644 --- a/tools/perf/core/shard_maps/win-10_laptop_low_end-perf_map.json +++ b/tools/perf/core/shard_maps/win-10_laptop_low_end-perf_map.json
@@ -20,7 +20,7 @@ "abridged": false }, "blink_perf.layout": { - "end": 28, + "end": 46, "abridged": false } } @@ -28,7 +28,7 @@ "1": { "benchmarks": { "blink_perf.layout": { - "begin": 28, + "begin": 46, "abridged": false }, "blink_perf.owp_storage": { @@ -77,7 +77,7 @@ "abridged": false }, "loading.desktop": { - "end": 13, + "end": 15, "abridged": false } } @@ -85,8 +85,8 @@ "3": { "benchmarks": { "loading.desktop": { - "begin": 13, - "end": 37, + "begin": 15, + "end": 38, "abridged": false } } @@ -94,7 +94,7 @@ "4": { "benchmarks": { "loading.desktop": { - "begin": 37, + "begin": 38, "end": 57, "abridged": false } @@ -104,7 +104,7 @@ "benchmarks": { "loading.desktop": { "begin": 57, - "end": 79, + "end": 80, "abridged": false } } @@ -112,33 +112,28 @@ "6": { "benchmarks": { "loading.desktop": { - "begin": 79, - "end": 101, + "begin": 80, + "abridged": false + }, + "media.desktop": { + "end": 2, "abridged": false } } }, "7": { "benchmarks": { - "loading.desktop": { - "begin": 101, - "abridged": false - }, "media.desktop": { + "begin": 2, "abridged": false }, "memory.desktop": { - "end": 8, "abridged": false } } }, "8": { "benchmarks": { - "memory.desktop": { - "begin": 8, - "abridged": false - }, "octane": { "abridged": false }, @@ -149,7 +144,7 @@ "abridged": false }, "rendering.desktop": { - "end": 12, + "end": 22, "abridged": false } } @@ -157,8 +152,8 @@ "9": { "benchmarks": { "rendering.desktop": { - "begin": 12, - "end": 70, + "begin": 22, + "end": 80, "abridged": false } } @@ -166,8 +161,8 @@ "10": { "benchmarks": { "rendering.desktop": { - "begin": 70, - "end": 124, + "begin": 80, + "end": 135, "abridged": false } } @@ -175,8 +170,8 @@ "11": { "benchmarks": { "rendering.desktop": { - "begin": 124, - "end": 176, + "begin": 135, + "end": 189, "abridged": false } } @@ -184,8 +179,8 @@ "12": { "benchmarks": { "rendering.desktop": { - "begin": 176, - "end": 226, + "begin": 189, + "end": 240, "abridged": false } } @@ -193,8 +188,8 @@ "13": { "benchmarks": { "rendering.desktop": { - "begin": 226, - "end": 275, + "begin": 240, + "end": 290, "abridged": false } } @@ -202,7 +197,7 @@ "14": { "benchmarks": { "rendering.desktop": { - "begin": 275, + "begin": 290, "abridged": false }, "speedometer": { @@ -221,7 +216,7 @@ "abridged": false }, "system_health.common_desktop": { - "end": 9, + "end": 14, "abridged": false } } @@ -229,8 +224,8 @@ "15": { "benchmarks": { "system_health.common_desktop": { - "begin": 9, - "end": 57, + "begin": 14, + "end": 66, "abridged": false } } @@ -238,11 +233,11 @@ "16": { "benchmarks": { "system_health.common_desktop": { - "begin": 57, + "begin": 66, "abridged": false }, "system_health.memory_desktop": { - "end": 7, + "end": 13, "abridged": false } } @@ -250,8 +245,8 @@ "17": { "benchmarks": { "system_health.memory_desktop": { - "begin": 7, - "end": 26, + "begin": 13, + "end": 36, "abridged": false } } @@ -259,8 +254,8 @@ "18": { "benchmarks": { "system_health.memory_desktop": { - "begin": 26, - "end": 51, + "begin": 36, + "end": 65, "abridged": false } } @@ -268,16 +263,14 @@ "19": { "benchmarks": { "system_health.memory_desktop": { - "begin": 51, - "end": 70, + "begin": 65, "abridged": false } } }, "20": { "benchmarks": { - "system_health.memory_desktop": { - "begin": 70, + "tab_search": { "abridged": false }, "tab_switching.typical_25": { @@ -287,7 +280,7 @@ "abridged": false }, "v8.browsing_desktop": { - "end": 10, + "end": 4, "abridged": false } } @@ -295,11 +288,11 @@ "21": { "benchmarks": { "v8.browsing_desktop": { - "begin": 10, + "begin": 4, "abridged": false }, "v8.browsing_desktop-future": { - "end": 10, + "end": 3, "abridged": false } } @@ -307,11 +300,11 @@ "22": { "benchmarks": { "v8.browsing_desktop-future": { - "begin": 10, + "begin": 3, "abridged": false }, "v8.runtime_stats.top_25": { - "end": 8, + "end": 1, "abridged": false } } @@ -319,8 +312,8 @@ "23": { "benchmarks": { "v8.runtime_stats.top_25": { - "begin": 8, - "end": 51, + "begin": 1, + "end": 47, "abridged": false } } @@ -328,7 +321,7 @@ "24": { "benchmarks": { "v8.runtime_stats.top_25": { - "begin": 51, + "begin": 47, "end": 92, "abridged": false } @@ -336,9 +329,6 @@ }, "25": { "benchmarks": { - "tab_search": { - "abridged": false - }, "v8.runtime_stats.top_25": { "begin": 92, "abridged": false @@ -349,36 +339,36 @@ } }, "extra_infos": { - "num_stories": 1188, - "predicted_min_shard_time": 2057.0, - "predicted_min_shard_index": 7, - "predicted_max_shard_time": 2190.0, - "predicted_max_shard_index": 14, - "shard #0": 2129.0, - "shard #1": 2132.0, - "shard #2": 2136.0, - "shard #3": 2162.0, - "shard #4": 2172.0, - "shard #5": 2102.0, - "shard #6": 2068.0, - "shard #7": 2057.0, - "shard #8": 2145.0, - "shard #9": 2135.0, - "shard #10": 2144.0, - "shard #11": 2147.0, - "shard #12": 2120.0, - "shard #13": 2136.0, - "shard #14": 2190.0, - "shard #15": 2130.0, - "shard #16": 2174.0, - "shard #17": 2124.0, - "shard #18": 2157.0, - "shard #19": 2166.0, - "shard #20": 2151.0, - "shard #21": 2164.0, - "shard #22": 2121.0, - "shard #23": 2132.0, - "shard #24": 2113.0, - "shard #25": 2101.0 + "num_stories": 1212, + "predicted_min_shard_time": 2195.0, + "predicted_min_shard_index": 1, + "predicted_max_shard_time": 2373.0, + "predicted_max_shard_index": 7, + "shard #0": 2258.0, + "shard #1": 2195.0, + "shard #2": 2285.0, + "shard #3": 2322.0, + "shard #4": 2312.0, + "shard #5": 2216.0, + "shard #6": 2270.0, + "shard #7": 2373.0, + "shard #8": 2252.0, + "shard #9": 2268.0, + "shard #10": 2247.0, + "shard #11": 2251.0, + "shard #12": 2261.0, + "shard #13": 2262.0, + "shard #14": 2234.0, + "shard #15": 2241.0, + "shard #16": 2241.0, + "shard #17": 2250.0, + "shard #18": 2217.0, + "shard #19": 2241.0, + "shard #20": 2222.0, + "shard #21": 2211.0, + "shard #22": 2290.0, + "shard #23": 2276.0, + "shard #24": 2245.0, + "shard #25": 2306.0 } } \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/win_7_nvidia_gpu_perf_map.json b/tools/perf/core/shard_maps/win_7_nvidia_gpu_perf_map.json index fe0e31d..9c158cd 100644 --- a/tools/perf/core/shard_maps/win_7_nvidia_gpu_perf_map.json +++ b/tools/perf/core/shard_maps/win_7_nvidia_gpu_perf_map.json
@@ -28,10 +28,10 @@ "num_stories": 12, "predicted_min_shard_time": 40, "predicted_min_shard_index": 0, - "predicted_max_shard_time": 68.0, + "predicted_max_shard_time": 75.0, "predicted_max_shard_index": 1, "shard #0": 40, - "shard #1": 68.0, + "shard #1": 75.0, "shard #2": 50 } } \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/win_7_perf_map.json b/tools/perf/core/shard_maps/win_7_perf_map.json index c6d1935..d9a4193 100644 --- a/tools/perf/core/shard_maps/win_7_perf_map.json +++ b/tools/perf/core/shard_maps/win_7_perf_map.json
@@ -17,11 +17,11 @@ }, "extra_infos": { "num_stories": 10, - "predicted_min_shard_time": 310.0, + "predicted_min_shard_time": 300.0, "predicted_min_shard_index": 1, - "predicted_max_shard_time": 338.0, + "predicted_max_shard_time": 322.0, "predicted_max_shard_index": 0, - "shard #0": 338.0, - "shard #1": 310.0 + "shard #0": 322.0, + "shard #1": 300.0 } } \ No newline at end of file
diff --git a/ui/accessibility/extensions/chromevoxclassic/BUILD.gn b/ui/accessibility/extensions/chromevoxclassic/BUILD.gn index 21cded3..6820dca 100644 --- a/ui/accessibility/extensions/chromevoxclassic/BUILD.gn +++ b/ui/accessibility/extensions/chromevoxclassic/BUILD.gn
@@ -315,6 +315,7 @@ "chromevox/injected/api_util.js", "chromevox/injected/mathjax.js", "chromevox/injected/mathjax_external_util.js", + "chromevox/injected/shadydom_loader.js", "cvox2/background/background.html", "cvox2/background/earcons/control.wav", "cvox2/background/earcons/selection.wav",
diff --git a/ui/accessibility/extensions/chromevoxclassic/README b/ui/accessibility/extensions/chromevoxclassic/README index 4210be7..baf5f73 100644 --- a/ui/accessibility/extensions/chromevoxclassic/README +++ b/ui/accessibility/extensions/chromevoxclassic/README
@@ -52,6 +52,18 @@ Once confirmed, the entire directory can be uploaded once zipped to the Chrome webstore. +### Third party files + +The extension currently depends on a shim to polyfill shadow DOM. This file is located at: +./shadydom.js. + +It is not checked into the repository, but can be obtained by building: +https://github.com/webcomponents/polyfills/ +(packages/shadydom). + +You can test things work by visiting any polymer app e.g. +chrome://settings + ## A final note on branding In order to further differentiate ChromeVox from ChromeVox Classic, the Classic
diff --git a/ui/accessibility/extensions/chromevoxclassic/chromevox/injected/shadydom_loader.js b/ui/accessibility/extensions/chromevoxclassic/chromevox/injected/shadydom_loader.js new file mode 100644 index 0000000..15a1c8ab --- /dev/null +++ b/ui/accessibility/extensions/chromevoxclassic/chromevox/injected/shadydom_loader.js
@@ -0,0 +1,22 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Load the Shady DOM polyfill as soon as possible. +(function() { + function loadScripts() { + if (!document.head) { + setTimeout(loadScripts, 0); + return; + } + var script1 = document.createElement('script'); + script1.innerHTML = ` + window.ShadyDOM = {force: true, noPatch: true}; + `; + var script2 = document.createElement('script'); + script2.src = chrome.extension.getURL('/shadydom.js'); + document.head.prepend(script1); + document.head.prepend(script2); + } + loadScripts(); +}());
diff --git a/ui/accessibility/extensions/chromevoxclassic/manifest.json.jinja2 b/ui/accessibility/extensions/chromevoxclassic/manifest.json.jinja2 index ebf6d3b..3bbbfa0 100644 --- a/ui/accessibility/extensions/chromevoxclassic/manifest.json.jinja2 +++ b/ui/accessibility/extensions/chromevoxclassic/manifest.json.jinja2
@@ -7,8 +7,9 @@ }, "content_scripts": [ { "all_frames": true, - "exclude_globs": [ ], - "js": [ "chromeVoxChromePageScript.js" ], + "exclude_globs": [ "devtools://*" ], + "run_at": "document_start", + "js": [ "chromevox/injected/shadydom_loader.js", "chromeVoxChromePageScript.js" ], "matches": [ "<all_urls>" ] } ], "default_locale": "en", @@ -24,6 +25,6 @@ "options_page": "chromevox/background/options.html", "permissions": [ "accessibilityPrivate", "bookmarks", "history", "notifications", "storage", "tabs", "tts", "<all_urls>" ], "update_url": "https://clients2.google.com/service/update2/crx", - "version": "53.0.2784.8", - "web_accessible_resources": [ "chromevox/background/keymaps/next_keymap.json", "chromevox/injected/api.js", "chromevox/injected/api_util.js", "chromevox/injected/mathjax.js", "chromevox/injected/mathjax_external_util.js" ] + "version": "53.0.2784.11", + "web_accessible_resources": [ "chromevox/background/keymaps/next_keymap.json", "chromevox/injected/api.js", "chromevox/injected/api_util.js", "chromevox/injected/mathjax.js", "chromevox/injected/mathjax_external_util.js", "shadydom.js" ] }
diff --git a/ui/file_manager/file_manager/background/js/BUILD.gn b/ui/file_manager/file_manager/background/js/BUILD.gn index 56fb50cf..4dfc030 100644 --- a/ui/file_manager/file_manager/background/js/BUILD.gn +++ b/ui/file_manager/file_manager/background/js/BUILD.gn
@@ -80,6 +80,8 @@ ":drive_sync_handler.m", ":duplicate_finder.m", ":entry_location_impl.m", + ":file_operation_handler.m", + ":file_operation_manager.m", ":file_operation_util.m", ":import_history.m", ":media_import_handler.m", @@ -91,6 +93,7 @@ ":mount_metrics.m", ":task_queue.m", ":test_util_base.m", + ":trash.m", ":volume_info_impl.m", ":volume_info_list_impl.m", ":volume_manager_factory.m", @@ -447,12 +450,29 @@ ] } -js_unittest("file_operation_handler_unittest") { +js_library("file_operation_handler.m") { + sources = [ "$root_gen_dir/ui/file_manager/file_manager/background/js/file_operation_handler.m.js" ] deps = [ - ":file_operation_handler", - ":mock_file_operation_manager", - ":mock_progress_center", - "//ui/file_manager/base/js:test_error_reporting", + "//ui/file_manager/externs/background:file_operation_manager.m", + "//ui/file_manager/externs/background:progress_center.m", + "//ui/file_manager/file_manager/common/js:file_operation_common.m", + "//ui/file_manager/file_manager/common/js:progress_center_common.m", + "//ui/file_manager/file_manager/common/js:util.m", + ] + + extra_deps = [ ":modulize" ] +} + +js_unittest("file_operation_handler_unittest.m") { + deps = [ + ":file_operation_handler.m", + ":file_operation_util.m", + ":mock_file_operation_manager.m", + ":mock_progress_center.m", + "//chrome/test/data/webui:chai_assert", + "//ui/file_manager/file_manager/common/js:file_operation_common.m", + "//ui/file_manager/file_manager/common/js:progress_center_common.m", + "//ui/file_manager/file_manager/common/js:util.m", ] } @@ -490,13 +510,42 @@ [ "//ui/file_manager/externs/background/file_operation_manager.js" ] } -js_unittest("file_operation_manager_unittest") { +js_library("file_operation_manager.m") { + sources = [ "$root_gen_dir/ui/file_manager/file_manager/background/js/file_operation_manager.m.js" ] deps = [ - ":file_operation_manager", - ":metadata_proxy", - "//ui/file_manager/base/js:mock_chrome", - "//ui/file_manager/base/js:test_error_reporting", - "//ui/file_manager/file_manager/common/js:mock_entry", + ":file_operation_util.m", + ":metadata_proxy.m", + ":trash.m", + ":volume_manager_factory.m", + "//ui/file_manager/externs:entry_location.m", + "//ui/file_manager/externs:files_app_entry_interfaces.m", + "//ui/file_manager/externs:volume_manager.m", + "//ui/file_manager/externs/background:file_operation_manager.m", + "//ui/file_manager/file_manager/common/js:async_util.m", + "//ui/file_manager/file_manager/common/js:file_operation_common.m", + "//ui/file_manager/file_manager/common/js:mock_entry.m", + "//ui/file_manager/file_manager/common/js:trash.m", + "//ui/file_manager/file_manager/common/js:util.m", + "//ui/webui/resources/js:assert.m", + ] + + extra_deps = [ ":modulize" ] +} + +js_unittest("file_operation_manager_unittest.m") { + deps = [ + ":file_operation_manager.m", + ":file_operation_util.m", + ":volume_manager_factory.m", + "//chrome/test/data/webui:chai_assert", + "//ui/file_manager/base/js:mock_chrome.m", + "//ui/file_manager/base/js:test_error_reporting.m", + "//ui/file_manager/externs:entry_location.m", + "//ui/file_manager/externs/background:file_operation_manager.m", + "//ui/file_manager/file_manager/common/js:file_operation_common.m", + "//ui/file_manager/file_manager/common/js:mock_entry.m", + "//ui/file_manager/file_manager/common/js:util.m", + "//ui/webui/resources/js:load_time_data.m", ] } @@ -908,12 +957,30 @@ ] } -js_unittest("trash_unittest") { +js_library("trash.m") { + sources = + [ "$root_gen_dir/ui/file_manager/file_manager/background/js/trash.m.js" ] deps = [ - ":mock_volume_manager", - ":trash", - "//ui/file_manager/file_manager/common/js:mock_entry", - "//ui/webui/resources/js:webui_resource_test", + ":file_operation_util.m", + "//ui/file_manager/externs:volume_manager.m", + "//ui/file_manager/file_manager/common/js:trash.m", + "//ui/webui/resources/js:assert.m", + "//ui/webui/resources/js:load_time_data.m", + ] + + extra_deps = [ ":modulize" ] +} + +js_unittest("trash_unittest.m") { + deps = [ + ":mock_volume_manager.m", + ":trash.m", + "//chrome/test/data/webui:chai_assert", + "//ui/file_manager/base/js:volume_manager_types.m", + "//ui/file_manager/file_manager/common/js:mock_entry.m", + "//ui/file_manager/file_manager/common/js:trash.m", + "//ui/webui/resources/js:assert.m", + "//ui/webui/resources/js:load_time_data.m", ] } @@ -1038,12 +1105,15 @@ ":crostini_unittest.m", ":drive_sync_handler_unittest.m", ":duplicate_finder_unittest.m", + ":file_operation_handler_unittest.m", + ":file_operation_manager_unittest.m", ":import_history_unittest.m", ":media_import_handler_unittest.m", ":media_scanner_unittest.m", ":metadata_proxy_unittest.m", ":mount_metrics_unittest.m", ":task_queue_unittest.m", + ":trash_unittest.m", ] js_module = true @@ -1059,9 +1129,6 @@ js_test_gen_html("js_test_gen_html") { deps = [ ":device_handler_unittest", - ":file_operation_handler_unittest", - ":file_operation_manager_unittest", - ":trash_unittest", ":volume_manager_unittest", ] } @@ -1095,6 +1162,9 @@ "mock_media_scanner.js", "duplicate_finder.js", "media_import_handler.js", + "file_operation_handler.js", + "file_operation_manager.js", + "trash.js", ] namespace_rewrites = cr_namespace_rewrites
diff --git a/ui/file_manager/file_manager/background/js/file_operation_handler.js b/ui/file_manager/file_manager/background/js/file_operation_handler.js index b817f2d5..c854167 100644 --- a/ui/file_manager/file_manager/background/js/file_operation_handler.js +++ b/ui/file_manager/file_manager/background/js/file_operation_handler.js
@@ -2,10 +2,18 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// clang-format off +// #import {ProgressCenter} from '../../../externs/background/progress_center.m.js'; +// #import {FileOperationManager} from '../../../externs/background/file_operation_manager.m.js'; +// #import {util, strf, str} from '../../common/js/util.m.js'; +// #import {ProgressCenterItem, ProgressItemState, ProgressItemType} from '../../common/js/progress_center_common.m.js'; +// #import {FileOperationProgressEvent} from '../../common/js/file_operation_common.m.js'; +// clang-format on + /** * An event handler of the background page for file operations. */ -class FileOperationHandler { +/* #export */ class FileOperationHandler { /** * @param {!FileOperationManager} fileOperationManager * @param {!ProgressCenter} progressCenter
diff --git a/ui/file_manager/file_manager/background/js/file_operation_handler_unittest.js b/ui/file_manager/file_manager/background/js/file_operation_handler_unittest.m.js similarity index 89% rename from ui/file_manager/file_manager/background/js/file_operation_handler_unittest.js rename to ui/file_manager/file_manager/background/js/file_operation_handler_unittest.m.js index 31a06df0..07b8db9 100644 --- a/ui/file_manager/file_manager/background/js/file_operation_handler_unittest.js +++ b/ui/file_manager/file_manager/background/js/file_operation_handler_unittest.m.js
@@ -2,7 +2,19 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -'use strict'; +// clang-format off +import { assertArrayEquals,assertEquals, assertTrue} from 'chrome://test/chai_assert.js'; + +import {FileOperationProgressEvent} from '../../common/js/file_operation_common.m.js'; +import {ProgressItemState} from '../../common/js/progress_center_common.m.js'; +import {util} from '../../common/js/util.m.js'; + +import {FileOperationHandler} from './file_operation_handler.m.js'; +import {fileOperationUtil} from './file_operation_util.m.js'; +import {MockFileOperationManager} from './mock_file_operation_manager.m.js'; +import {MockProgressCenter} from './mock_progress_center.m.js'; +// clang-format on + /** @type {!MockFileOperationManager} */ let fileOperationManager; @@ -51,7 +63,7 @@ } // Set up the test components. -function setUp() { +export function setUp() { // Mock LoadTimeData strings. window.loadTimeData.data = { COPY_FILE_NAME: 'Copying $1...', @@ -74,7 +86,7 @@ /** * Tests copy success. */ -function testCopySuccess() { +export function testCopySuccess() { // Dispatch copy event. fileOperationManager.dispatchEvent( /** @type {!Event} */ (Object.assign(new Event('copy-progress'), { @@ -121,7 +133,7 @@ /** * Tests copy cancel. */ -function testCopyCancel() { +export function testCopyCancel() { // Dispatch copy event. fileOperationManager.dispatchEvent( /** @type {!Event} */ (Object.assign(new Event('copy-progress'), { @@ -170,7 +182,7 @@ /** * Tests target already exists error. */ -function testCopyTargetExistsError() { +export function testCopyTargetExistsError() { // Dispatch error event. fileOperationManager.dispatchEvent( /** @type {!Event} */ (Object.assign(new Event('copy-progress'), { @@ -199,7 +211,7 @@ /** * Tests file system error. */ -function testCopyFileSystemError() { +export function testCopyFileSystemError() { // Dispatch error event. fileOperationManager.dispatchEvent( /** @type {!Event} */ (Object.assign(new Event('copy-progress'), { @@ -228,7 +240,7 @@ /** * Tests unexpected error. */ -function testCopyUnexpectedError() { +export function testCopyUnexpectedError() { // Dispatch error event. fileOperationManager.dispatchEvent( /** @type {!Event} */ (Object.assign(new Event('copy-progress'), { @@ -257,7 +269,7 @@ /** * Tests Speedometer moving average calculations. */ -function testSpeedometerMovingAverage() { +export function testSpeedometerMovingAverage() { const bufferLength = 20; const speedometer = new fileOperationUtil.Speedometer(bufferLength); const mockDate = new MockDate(); @@ -283,7 +295,7 @@ /** * Tests Speedometer buffer ring rotate and substitute. */ -function testSpeedometerBufferRing() { +export function testSpeedometerBufferRing() { const bufferLength = 20; const speedometer = new fileOperationUtil.Speedometer(bufferLength); const mockDate = new MockDate(); @@ -305,4 +317,4 @@ assertEquals(300, buffer[0]); mockDate.stop(); -} \ No newline at end of file +}
diff --git a/ui/file_manager/file_manager/background/js/file_operation_manager.js b/ui/file_manager/file_manager/background/js/file_operation_manager.js index 86d4360..1755041 100644 --- a/ui/file_manager/file_manager/background/js/file_operation_manager.js +++ b/ui/file_manager/file_manager/background/js/file_operation_manager.js
@@ -2,12 +2,30 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// clang-format off +// #import {TrashEntry} from '../../common/js/trash.m.js'; +// #import {FakeEntry} from '../../../externs/files_app_entry_interfaces.m.js'; +// #import {VolumeManager} from '../../../externs/volume_manager.m.js'; +// #import {EntryLocation} from '../../../externs/entry_location.m.js'; +// #import {MockEntry} from '../../common/js/mock_entry.m.js'; +// #import {FileOperationManager} from '../../../externs/background/file_operation_manager.m.js'; +// #import {assert} from 'chrome://resources/js/assert.m.js'; +// #import {metadataProxy} from './metadata_proxy.m.js'; +// #import {AsyncUtil} from '../../common/js/async_util.m.js'; +// #import {volumeManagerFactory} from './volume_manager_factory.m.js'; +// #import {FileOperationProgressEvent, FileOperationError} from '../../common/js/file_operation_common.m.js'; +// #import {Trash} from './trash.m.js'; + +// #import {util} from '../../common/js/util.m.js'; +// #import {fileOperationUtil} from './file_operation_util.m.js'; +// clang-format on + /** * FileOperationManagerImpl: implementation of {FileOperationManager}. * * @implements {FileOperationManager} */ -class FileOperationManagerImpl { +/* #export */ class FileOperationManagerImpl { constructor() { /** * @private {VolumeManager}
diff --git a/ui/file_manager/file_manager/background/js/file_operation_manager_unittest.js b/ui/file_manager/file_manager/background/js/file_operation_manager_unittest.m.js similarity index 94% rename from ui/file_manager/file_manager/background/js/file_operation_manager_unittest.js rename to ui/file_manager/file_manager/background/js/file_operation_manager_unittest.m.js index 068140d..61607319 100644 --- a/ui/file_manager/file_manager/background/js/file_operation_manager_unittest.js +++ b/ui/file_manager/file_manager/background/js/file_operation_manager_unittest.m.js
@@ -1,7 +1,24 @@ // Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -'use strict'; + +// clang-format off +import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; +import { assertArrayEquals, assertEquals, assertFalse,assertTrue} from 'chrome://test/chai_assert.js'; + +import {installMockChrome} from '../../../base/js/mock_chrome.m.js'; +import {reportPromise, waitUntil} from '../../../base/js/test_error_reporting.m.js'; +import {FileOperationManager} from '../../../externs/background/file_operation_manager.m.js'; +import {EntryLocation} from '../../../externs/entry_location.m.js'; +import {FileOperationProgressEvent} from '../../common/js/file_operation_common.m.js'; +import { joinPath, MockDirectoryEntry, MockEntry, MockFileEntry,MockFileSystem} from '../../common/js/mock_entry.m.js'; +import {util} from '../../common/js/util.m.js'; + +import {FileOperationManagerImpl} from './file_operation_manager.m.js'; +import {fileOperationUtil} from './file_operation_util.m.js'; +import {volumeManagerFactory} from './volume_manager_factory.m.js'; + +// clang-format on /** * Mock chrome APIs. @@ -32,7 +49,8 @@ mockChrome.fileManagerPrivate.onCopyProgress.listener_ = null; }, listener_: null - } + }, + }; /** @@ -261,9 +279,6 @@ */ let volumeManager; -// eslint-disable-next-line no-var -var volumeManagerFactory = volumeManagerFactory || {}; - /** * Provide VolumeManager.getInstance() for FileOperationManager using mocked * volume manager instance. @@ -282,17 +297,15 @@ /** * Initializes the test environment. */ -function setUp() { +export function setUp() { // Mock LoadTimeData strings. - window.loadTimeData = { - data: { - 'FILES_TRASH_ENABLED': true, - }, - getBoolean: function(key) { - return window.loadTimeData.data[key]; - }, - getString: id => id, + loadTimeData.data = { + 'FILES_TRASH_ENABLED': true, }; + loadTimeData.getBoolean = function(key) { + return loadTimeData.data_[key]; + }; + loadTimeData.getString = id => id; // Install mock chrome APIs. installMockChrome(mockChrome); @@ -302,7 +315,7 @@ * Tests the fileOperationUtil.resolvePath function. * @param {function(boolean)} callback Callback to be passed true on error. */ -function testResolvePath(callback) { +export function testResolvePath(callback) { const fileSystem = createTestFileSystem('testVolume', { '/': DIRECTORY_SIZE, '/file': 10, @@ -345,7 +358,7 @@ /** * @param {function(boolean)} callback Callback to be passed true on error. */ -function testFindEntriesRecursively(callback) { +export function testFindEntriesRecursively(callback) { const fileSystem = createTestFileSystem('testVolume', { '/': DIRECTORY_SIZE, '/file.txt': 10, @@ -381,7 +394,7 @@ /** * @param {function(boolean)} callback Callback to be passed true on error. */ -function testFindFilesRecursively(callback) { +export function testFindFilesRecursively(callback) { const fileSystem = createTestFileSystem('testVolume', { '/': DIRECTORY_SIZE, '/file.txt': 10, @@ -420,7 +433,7 @@ /** * @param {function(boolean)} callback Callback to be passed true on error. */ -function testGatherEntriesRecursively(callback) { +export function testGatherEntriesRecursively(callback) { const fileSystem = createTestFileSystem('testVolume', { '/': DIRECTORY_SIZE, '/file.txt': 10, @@ -451,7 +464,7 @@ * Tests the fileOperationUtil.deduplicatePath * @param {function(boolean)} callback Callback to be passed true on error. */ -function testDeduplicatePath(callback) { +export function testDeduplicatePath(callback) { const fileSystem1 = createTestFileSystem('testVolume', {'/': DIRECTORY_SIZE}); const fileSystem2 = createTestFileSystem('testVolume', { '/': DIRECTORY_SIZE, @@ -499,7 +512,7 @@ * Tests fileOperationManager copy. * @param {function(boolean)} callback Callback to be passed true on error. */ -function testCopy(callback) { +export function testCopy(callback) { // Prepare entries and their resolver. const fileSystem = createTestFileSystem('testVolume', { '/': DIRECTORY_SIZE, @@ -573,7 +586,7 @@ * Tests copying files when the destination volumes are same: the copy * operations should be run sequentially. */ -function testCopyInSequential(callback) { +export function testCopyInSequential(callback) { // Prepare entries and their resolver. const fileSystem = createTestFileSystem('testVolume', { '/': DIRECTORY_SIZE, @@ -664,7 +677,7 @@ * Tests copying files when the destination volumes are different: the copy * operations should be run in parallel. */ -function testCopyInParallel(callback) { +export function testCopyInParallel(callback) { // Prepare entries and their resolver. const fileSystemA = createTestFileSystem('volumeA', { '/': DIRECTORY_SIZE, @@ -751,7 +764,7 @@ * Tests that copy operations fail when the destination volume is not * available. */ -function testCopyFails(callback) { +export function testCopyFails(callback) { // Prepare entries. const fileSystem = createTestFileSystem('testVolume', { '/': DIRECTORY_SIZE, @@ -801,7 +814,7 @@ * Tests the fileOperationUtil.paste for move. * @param {function(boolean)} callback Callback to be passed true on error. */ -function testMove(callback) { +export function testMove(callback) { // Prepare entries and their resolver. const fileSystem = createTestFileSystem('testVolume', { '/': DIRECTORY_SIZE, @@ -860,7 +873,7 @@ * Tests fileOperationManager.deleteEntries. * @param {function(boolean)} callback Callback to be passed true on error. */ -function testDelete(callback) { +export function testDelete(callback) { // Prepare entries and their resolver. const fileSystem = createTestFileSystem('testVolume', { '/': DIRECTORY_SIZE, @@ -897,7 +910,7 @@ * Tests fileOperationManager.restore. * @param {function(boolean)} callback Callback to be passed true on error. */ -function testRestore(callback) { +export function testRestore(callback) { // Prepare entries and their resolver. const fileSystem = createTestFileSystem('testVolume', { '/': DIRECTORY_SIZE, @@ -948,7 +961,7 @@ * Tests fileOperationManager.zipSelection. * @param {function(boolean)} callback Callback to be passed true on error. */ -function testZip(callback) { +export function testZip(callback) { // Prepare entries and their resolver. const fileSystem = createTestFileSystem('testVolume', { '/': DIRECTORY_SIZE,
diff --git a/ui/file_manager/file_manager/background/js/trash.js b/ui/file_manager/file_manager/background/js/trash.js index 897aa4a..a3aba5e 100644 --- a/ui/file_manager/file_manager/background/js/trash.js +++ b/ui/file_manager/file_manager/background/js/trash.js
@@ -7,10 +7,18 @@ * https://specifications.freedesktop.org/trash-spec/trashspec-1.0.html */ +// clang-format off +// #import {VolumeManager} from '../../../externs/volume_manager.m.js'; +// #import {fileOperationUtil} from './file_operation_util.m.js'; +// #import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; +// #import {assert} from 'chrome://resources/js/assert.m.js'; +// #import {TrashConfig, TrashDirs, TrashEntry} from '../../common/js/trash.m.js'; +// clang-format on + /** * Implementation of trash. */ -class Trash { +/* #export */ class Trash { constructor() { /** * Store TrashDirs to avoid repeated lookup, keyed by TrashConfig.id.
diff --git a/ui/file_manager/file_manager/background/js/trash_unittest.js b/ui/file_manager/file_manager/background/js/trash_unittest.m.js similarity index 92% rename from ui/file_manager/file_manager/background/js/trash_unittest.js rename to ui/file_manager/file_manager/background/js/trash_unittest.m.js index dd85b1c9..e072466 100644 --- a/ui/file_manager/file_manager/background/js/trash_unittest.js +++ b/ui/file_manager/file_manager/background/js/trash_unittest.m.js
@@ -2,21 +2,34 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import {assert} from 'chrome://resources/js/assert.m.js'; +import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; +import {assertEquals, assertFalse, assertTrue} from 'chrome://test/chai_assert.js'; + +import {VolumeManagerCommon} from '../../../base/js/volume_manager_types.m.js'; +import {MockDirectoryEntry, MockFileEntry, MockFileSystem} from '../../common/js/mock_entry.m.js'; +import {TrashDirs} from '../../common/js/trash.m.js'; + +import {MockVolumeManager} from './mock_volume_manager.m.js'; +import {Trash} from './trash.m.js'; + /** @type {!MockVolumeManager} */ let volumeManager; +/** + * State for the feature flags for faking in loadTimeData. + * @type {Object<string, boolean>} + * */ +let flags = {}; + // Set up the test components. -function setUp() { +export function setUp() { // Mock LoadTimeData strings. - window.loadTimeData = { - data: { - 'FILES_TRASH_ENABLED': true, - }, - getBoolean: function(key) { - return window.loadTimeData.data[key]; - }, - getString: id => id, + flags = { + 'FILES_TRASH_ENABLED': true, }; + loadTimeData.getBoolean = id => flags[id]; + loadTimeData.getString = id => id; volumeManager = new MockVolumeManager(); } @@ -31,7 +44,7 @@ function checkRemoveFileOrDirectory( filesTrashEnabled, rootType, path, deletePermanently, expectPermanentlyDelete) { - window.loadTimeData.data['FILES_TRASH_ENABLED'] = filesTrashEnabled; + flags['FILES_TRASH_ENABLED'] = filesTrashEnabled; const volumeInfo = volumeManager.createVolumeInfo(rootType, 'volumeId', 'label'); const f = MockFileEntry.create(volumeInfo.fileSystem, path); @@ -58,7 +71,7 @@ * Test that removeFileOrDirectory() correctly moves to trash, or permanently * deletes. */ -function testRemoveFileOrDirectory() { +export function testRemoveFileOrDirectory() { // Only use trash if flag is enabled, entry is in 'downloads' volume, but not // in /.Trash. @@ -79,7 +92,7 @@ * * @suppress {accessControls} Access permanentlyDeleteFileOrDirectory_(). */ -async function testPermanentlyDeleteFileOrDirectory(done) { +export async function testPermanentlyDeleteFileOrDirectory(done) { const trash = new Trash(); const fs = new MockFileSystem('volumeId'); const dir = MockDirectoryEntry.create(fs, '/dir'); @@ -108,7 +121,7 @@ /** * Test trash in MyFiles. */ -async function testMyFilesTrash(done) { +export async function testMyFilesTrash(done) { const trash = new Trash(); const deletePermanently = false; const downloads = volumeManager.getCurrentProfileVolumeInfo( @@ -163,7 +176,7 @@ * Test that Downloads has its own /Downloads/.Trash since it is a separate * mount on a device and we don't want move to trash to be a copy operation. */ -async function testDownloadsHasOwnTrash(done) { +export async function testDownloadsHasOwnTrash(done) { const trash = new Trash(); const deletePermanently = false; const downloads = volumeManager.getCurrentProfileVolumeInfo( @@ -224,7 +237,7 @@ /** * Test crostini trash in .local/share/Trash. */ -async function testCrostiniTrash(done) { +export async function testCrostiniTrash(done) { const trash = new Trash(); const deletePermanently = false; const crostini = volumeManager.createVolumeInfo( @@ -277,7 +290,7 @@ /** * Test restore(). */ -async function testRestore(done) { +export async function testRestore(done) { const trash = new Trash(); const deletePermanently = false; const downloads = volumeManager.getCurrentProfileVolumeInfo( @@ -328,7 +341,7 @@ * * @suppress {accessControls} Access removeOldItems_() and inProgress_. */ -async function testRemoveOldItems_(done) { +export async function testRemoveOldItems_(done) { const trash = new Trash(); const deletePermanently = false; const downloads = volumeManager.getCurrentProfileVolumeInfo(
diff --git a/ui/file_manager/file_manager/common/js/mock_entry.js b/ui/file_manager/file_manager/common/js/mock_entry.js index e3fb821..401f424 100644 --- a/ui/file_manager/file_manager/common/js/mock_entry.js +++ b/ui/file_manager/file_manager/common/js/mock_entry.js
@@ -10,7 +10,7 @@ * @param {string} b Path. * @return {string} Joined path. */ -function joinPath(a, b) { +/* #export */ function joinPath(a, b) { return a.replace(/\/+$/, '') + '/' + b.replace(/^\/+/, ''); }
diff --git a/ui/views/layout/layout_manager.h b/ui/views/layout/layout_manager.h index 22a3a60..5ff7e10 100644 --- a/ui/views/layout/layout_manager.h +++ b/ui/views/layout/layout_manager.h
@@ -91,7 +91,7 @@ protected: // Sets the visibility of a view without triggering ViewVisibilitySet(). - // During Layout(), use this method instead of View::SetVisible(). + // During Layout(), use this method instead of View::SetVisibility(). void SetViewVisibility(View* view, bool visible); // Gets the child views of the specified view in paint order (reverse
diff --git a/ui/views/layout/layout_manager_base.cc b/ui/views/layout/layout_manager_base.cc index 95c9c7e..68f1874 100644 --- a/ui/views/layout/layout_manager_base.cc +++ b/ui/views/layout/layout_manager_base.cc
@@ -9,7 +9,6 @@ #include "base/auto_reset.h" #include "base/check_op.h" #include "ui/views/view.h" -#include "ui/views/view_class_properties.h" namespace views { @@ -101,7 +100,9 @@ void LayoutManagerBase::SetChildViewIgnoredByLayout(View* child_view, bool ignored) { - if (child_view->GetProperty(kViewIgnoredByLayoutKey) == ignored) + auto it = child_infos_.find(child_view); + DCHECK(it != child_infos_.end()); + if (it->second.ignored == ignored) return; base::AutoReset<bool> setter(&suppress_invalidate_, true); @@ -111,7 +112,9 @@ bool LayoutManagerBase::IsChildViewIgnoredByLayout( const View* child_view) const { - return child_view->GetProperty(kViewIgnoredByLayoutKey); + auto it = child_infos_.find(child_view); + DCHECK(it != child_infos_.end()); + return it->second.ignored; } LayoutManagerBase::LayoutManagerBase() = default; @@ -124,12 +127,27 @@ bool LayoutManagerBase::IsChildIncludedInLayout(const View* child, bool include_hidden) const { - return !child->GetProperty(kViewIgnoredByLayoutKey) && - (include_hidden || child->GetProperty(kViewCanBeVisibleKey)); + const auto it = child_infos_.find(child); + + // During callbacks when a child is removed we can get in a state where a view + // in the child list of the host view is not in |child_infos_|. In that case, + // the view is being removed and is not part of the layout. + if (it == child_infos_.end()) + return false; + + return !it->second.ignored && (include_hidden || it->second.can_be_visible); } bool LayoutManagerBase::CanBeVisible(const View* child) const { - return child->GetProperty(kViewCanBeVisibleKey); + const auto it = child_infos_.find(child); + + // During callbacks when a child is removed we can get in a state where a view + // in the child list of the host view is not in |child_infos_|. In that case, + // the view is being removed and is not part of the layout. + if (it == child_infos_.end()) + return false; + + return it->second.can_be_visible; } void LayoutManagerBase::LayoutImpl() { @@ -235,6 +253,7 @@ void LayoutManagerBase::Installed(View* host_view) { DCHECK(host_view); DCHECK(!host_view_); + DCHECK(child_infos_.empty()); base::AutoReset<bool> setter(&suppress_invalidate_, true); PropagateInstalled(host_view); @@ -242,6 +261,7 @@ void LayoutManagerBase::ViewAdded(View* host, View* view) { DCHECK_EQ(host_view_, host); + DCHECK(!base::Contains(child_infos_, view)); base::AutoReset<bool> setter(&suppress_invalidate_, true); const bool invalidate = PropagateViewAdded(host, view); @@ -251,8 +271,11 @@ void LayoutManagerBase::ViewRemoved(View* host, View* view) { DCHECK_EQ(host_view_, host); - const bool removed_visible = view->GetProperty(kViewCanBeVisibleKey) && - !view->GetProperty(kViewIgnoredByLayoutKey); + DCHECK(base::Contains(child_infos_, view)); + + auto it = child_infos_.find(view); + DCHECK(it != child_infos_.end()); + const bool removed_visible = it->second.can_be_visible && !it->second.ignored; base::AutoReset<bool> setter(&suppress_invalidate_, true); const bool invalidate = PropagateViewRemoved(host, view); @@ -265,8 +288,10 @@ bool old_visibility, bool new_visibility) { DCHECK_EQ(host_view_, host); - const bool was_ignored = view->GetProperty(kViewIgnoredByLayoutKey); - if (view->GetProperty(kViewCanBeVisibleKey) == new_visibility) + auto it = child_infos_.find(view); + DCHECK(it != child_infos_.end()); + const bool was_ignored = it->second.ignored; + if (it->second.can_be_visible == new_visibility) return; base::AutoReset<bool> setter(&suppress_invalidate_, true); @@ -283,11 +308,11 @@ if (host_view_) { owned_layout->Installed(host_view_); for (View* child_view : host_view_->children()) { - owned_layout->PropagateChildViewIgnoredByLayout( - child_view, child_view->GetProperty(kViewIgnoredByLayoutKey)); - owned_layout->PropagateViewVisibilitySet( - host_view_, child_view, - child_view->GetProperty(kViewCanBeVisibleKey)); + const ChildInfo& child_info = child_infos_.find(child_view)->second; + owned_layout->PropagateChildViewIgnoredByLayout(child_view, + child_info.ignored); + owned_layout->PropagateViewVisibilitySet(host_view_, child_view, + child_info.can_be_visible); } } owned_layout->parent_layout_ = this; @@ -303,7 +328,7 @@ bool LayoutManagerBase::PropagateChildViewIgnoredByLayout(View* child_view, bool ignored) { - child_view->SetProperty(kViewIgnoredByLayoutKey, ignored); + child_infos_[child_view].ignored = ignored; bool result = false; for (auto& owned_layout : owned_layouts_) { @@ -315,7 +340,7 @@ } bool LayoutManagerBase::PropagateViewAdded(View* host, View* view) { - view->SetProperty(kViewCanBeVisibleKey, view->GetVisible()); + child_infos_.emplace(view, ChildInfo{view->GetVisible(), false}); bool result = false; @@ -327,8 +352,7 @@ } bool LayoutManagerBase::PropagateViewRemoved(View* host, View* view) { - view->ClearProperty(kViewCanBeVisibleKey); - view->ClearProperty(kViewIgnoredByLayoutKey); + child_infos_.erase(view); bool result = false; @@ -342,7 +366,7 @@ bool LayoutManagerBase::PropagateViewVisibilitySet(View* host, View* view, bool visible) { - view->SetProperty(kViewCanBeVisibleKey, visible); + child_infos_[view].can_be_visible = visible; bool result = false; @@ -355,8 +379,9 @@ void LayoutManagerBase::PropagateInstalled(View* host) { host_view_ = host; - for (auto* child : host->children()) - child->SetProperty(kViewCanBeVisibleKey, child->GetVisible()); + for (auto* it : host->children()) { + child_infos_.emplace(it, ChildInfo{it->GetVisible(), false}); + } for (auto& owned_layout : owned_layouts_) owned_layout->PropagateInstalled(host);
diff --git a/ui/views/layout/layout_manager_base.h b/ui/views/layout/layout_manager_base.h index 39ca2da..8812cb5 100644 --- a/ui/views/layout/layout_manager_base.h +++ b/ui/views/layout/layout_manager_base.h
@@ -106,7 +106,7 @@ // Returns whether the specified child view can be visible. To be able to be // visible, |child| must be a child of the host view, and must have been - // visible when it was added or most recently had SetVisible(true) called on + // visible when it was added or most recently had GetVisible(true) called on // it by non-layout code. bool CanBeVisible(const View* child) const; @@ -171,6 +171,13 @@ private: friend class LayoutManagerBaseAvailableSizeTest; + // Holds bookkeeping data used to determine inclusion of children in the + // layout. + struct ChildInfo { + bool can_be_visible = true; + bool ignored = false; + }; + // LayoutManager: void InvalidateLayout() final; void Installed(View* host) final; @@ -196,6 +203,7 @@ void PropagateInvalidateLayout(); View* host_view_ = nullptr; + std::map<const View*, ChildInfo> child_infos_; std::vector<std::unique_ptr<LayoutManagerBase>> owned_layouts_; LayoutManagerBase* parent_layout_ = nullptr;
diff --git a/ui/views/view.cc b/ui/views/view.cc index b6dd5a1..2e1850f14 100644 --- a/ui/views/view.cc +++ b/ui/views/view.cc
@@ -56,7 +56,6 @@ #include "ui/views/controls/scroll_view.h" #include "ui/views/drag_controller.h" #include "ui/views/metadata/metadata_impl_macros.h" -#include "ui/views/view_class_properties.h" #include "ui/views/view_observer.h" #include "ui/views/view_tracker.h" #include "ui/views/views_features.h" @@ -3126,18 +3125,14 @@ void View::DefaultFillLayout::Layout(View* host) { const gfx::Rect contents_bounds = host->GetContentsBounds(); - for (auto* child : host->children()) { - if (!child->GetProperty(kViewIgnoredByLayoutKey)) - child->SetBoundsRect(contents_bounds); - } + for (auto* child : host->children()) + child->SetBoundsRect(contents_bounds); } gfx::Size View::DefaultFillLayout::GetPreferredSize(const View* host) const { gfx::Size preferred_size; - for (auto* child : host->children()) { - if (!child->GetProperty(kViewIgnoredByLayoutKey)) - preferred_size.SetToMax(child->GetPreferredSize()); - } + for (auto* child : host->children()) + preferred_size.SetToMax(child->GetPreferredSize()); return preferred_size; } @@ -3145,13 +3140,10 @@ int width) const { const gfx::Insets insets = host->GetInsets(); int preferred_height = 0; - for (auto* child : host->children()) { - if (!child->GetProperty(kViewIgnoredByLayoutKey)) { - preferred_height = std::max( - preferred_height, - child->GetHeightForWidth(width - insets.width()) + insets.height()); - } - } + for (auto* child : host->children()) + preferred_height = std::max( + preferred_height, + child->GetHeightForWidth(width - insets.width()) + insets.height()); return preferred_height; }
diff --git a/ui/views/view_class_properties.cc b/ui/views/view_class_properties.cc index 1e8511f4..a2799b0 100644 --- a/ui/views/view_class_properties.cc +++ b/ui/views/view_class_properties.cc
@@ -41,7 +41,5 @@ DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(LayoutAlignment, kCrossAxisAlignmentKey, nullptr) -DEFINE_UI_CLASS_PROPERTY_KEY(bool, kViewIgnoredByLayoutKey, false) -DEFINE_UI_CLASS_PROPERTY_KEY(bool, kViewCanBeVisibleKey, false) } // namespace views
diff --git a/ui/views/view_class_properties.h b/ui/views/view_class_properties.h index cc9bf2c..bf7abfd 100644 --- a/ui/views/view_class_properties.h +++ b/ui/views/view_class_properties.h
@@ -58,15 +58,6 @@ VIEWS_EXPORT extern const ui::ClassProperty<LayoutAlignment*>* const kCrossAxisAlignmentKey; -// Property indicating whether a view should be ignored by a layout. Supported -// by LayoutManagerBase and View::DefaultFillLayout -VIEWS_EXPORT extern const ui::ClassProperty<bool>* const - kViewIgnoredByLayoutKey; - -// Property indicating whether a view would can be visible based on the criteria -// outlined in LayoutManagerBase::CanBeVisible(). -VIEWS_EXPORT extern const ui::ClassProperty<bool>* const kViewCanBeVisibleKey; - } // namespace views // Declaring the template specialization here to make sure that the
diff --git a/ui/views/widget/root_view.cc b/ui/views/widget/root_view.cc index 6960fd33..c97bf189 100644 --- a/ui/views/widget/root_view.cc +++ b/ui/views/widget/root_view.cc
@@ -22,8 +22,8 @@ #include "ui/events/keycodes/keyboard_codes.h" #include "ui/gfx/canvas.h" #include "ui/views/drag_controller.h" +#include "ui/views/layout/fill_layout.h" #include "ui/views/metadata/metadata_impl_macros.h" -#include "ui/views/view_class_properties.h" #include "ui/views/view_targeter.h" #include "ui/views/widget/root_view_targeter.h" #include "ui/views/widget/widget.h" @@ -210,7 +210,7 @@ << "Can't be called until after the native widget is created!"; // The ContentsView must be set up _after_ the window is created so that its // Widget pointer is valid. - SetUseDefaultFillLayout(true); + SetLayoutManager(std::make_unique<FillLayout>()); if (!children().empty()) RemoveAllChildViews(true); AddChildView(contents_view); @@ -268,7 +268,8 @@ DCHECK(GetContentsView()); if (!announce_view_) { announce_view_ = AddChildView(std::make_unique<AnnounceTextView>()); - announce_view_->SetProperty(kViewIgnoredByLayoutKey, true); + static_cast<FillLayout*>(GetLayoutManager()) + ->SetChildViewIgnoredByLayout(announce_view_, true); } announce_view_->Announce(text); #endif
diff --git a/ui/webui/resources/cr_components/BUILD.gn b/ui/webui/resources/cr_components/BUILD.gn index 23affc3..c2e2d2e4 100644 --- a/ui/webui/resources/cr_components/BUILD.gn +++ b/ui/webui/resources/cr_components/BUILD.gn
@@ -146,6 +146,7 @@ "chromeos/cellular_setup/esim_flow_ui.m.js", "chromeos/cellular_setup/final_page.m.js", "chromeos/cellular_setup/mojo_interface_provider.m.js", + "chromeos/cellular_setup/esim_manager_listener_behavior.m.js", "chromeos/cellular_setup/esim_manager_utils.m.js", "chromeos/cellular_setup/profile_discovery_list_item.m.js", "chromeos/cellular_setup/profile_discovery_list_page.m.js", @@ -264,6 +265,8 @@ "chromeos/cellular_setup/final_page.js", "chromeos/cellular_setup/mojo_interface_provider.html", "chromeos/cellular_setup/mojo_interface_provider.js", + "chromeos/cellular_setup/esim_manager_listener_behavior.html", + "chromeos/cellular_setup/esim_manager_listener_behavior.js", "chromeos/cellular_setup/esim_manager_utils.html", "chromeos/cellular_setup/esim_manager_utils.js", "chromeos/cellular_setup/profile_discovery_list_item.html",
diff --git a/ui/webui/resources/cr_components/chromeos/cellular_setup/BUILD.gn b/ui/webui/resources/cr_components/chromeos/cellular_setup/BUILD.gn index 137e3f89..293475a 100644 --- a/ui/webui/resources/cr_components/chromeos/cellular_setup/BUILD.gn +++ b/ui/webui/resources/cr_components/chromeos/cellular_setup/BUILD.gn
@@ -17,6 +17,7 @@ ":cellular_setup", ":cellular_setup_delegate", ":cellular_types", + ":esim_manager_listener_behavior", ":esim_manager_utils", ":final_page", ":mojo_interface_provider", @@ -166,6 +167,10 @@ deps = [ ":mojo_interface_provider" ] } +js_library("esim_manager_listener_behavior") { + deps = [ ":mojo_interface_provider" ] +} + # Polymer3 files js_type_check("closure_compile_module") { @@ -178,6 +183,7 @@ ":cellular_setup_delegate.m", ":cellular_types.m", ":esim_flow_ui.m", + ":esim_manager_listener_behavior.m", ":esim_manager_utils.m", ":final_page.m", ":mojo_interface_provider.m", @@ -252,6 +258,12 @@ extra_deps = [ ":modulize" ] } +js_library("esim_manager_listener_behavior.m") { + sources = [ "$root_gen_dir/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_listener_behavior.m.js" ] + deps = [ ":mojo_interface_provider.m" ] + extra_deps = [ ":modulize" ] +} + js_library("webview_post_util.m") { sources = [ "$root_gen_dir/ui/webui/resources/cr_components/chromeos/cellular_setup/webview_post_util.m.js" ] deps = [] @@ -502,6 +514,7 @@ "cellular_setup_delegate.js", "mojo_interface_provider.js", "esim_manager_utils.js", + "esim_manager_listener_behavior.js", "subflow_behavior.js", "webview_post_util.js", ]
diff --git a/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_listener_behavior.html b/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_listener_behavior.html new file mode 100644 index 0000000..dff7991 --- /dev/null +++ b/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_listener_behavior.html
@@ -0,0 +1,2 @@ +<link rel="import" href="mojo_interface_provider.html"> +<script src="esim_manager_listener_behavior.js"></script>
diff --git a/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_listener_behavior.js b/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_listener_behavior.js new file mode 100644 index 0000000..e2c9783 --- /dev/null +++ b/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_listener_behavior.js
@@ -0,0 +1,43 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// #import {getESimManagerRemote} from './mojo_interface_provider.m.js'; + +/** + * @fileoverview Polymer behavior for observing ESimManagerObserver + * events. + */ + +/** @polymerBehavior */ +/* #export */ const ESimManagerListenerBehavior = { + /** @private {?chromeos.cellularSetup.mojom.ESimManagerObserver} */ + observer_: null, + + /** @override */ + attached() { + this.observer_ = + new chromeos.cellularSetup.mojom.ESimManagerObserverReceiver(this); + cellular_setup.getESimManagerRemote().addObserver( + this.observer_.$.bindNewPipeAndPassRemote()); + }, + + // ESimManagerObserver methods. Override these in the implementation. + + onAvailableEuiccListChanged() {}, + + /** + * @param {!chromeos.cellularSetup.mojom.EuiccRemote} euicc + */ + onProfileListChanged(euicc) {}, + + /** + * @param {!chromeos.cellularSetup.mojom.EuiccRemote} euicc + */ + onEuiccChanged(euicc) {}, + + /** + * @param {!chromeos.cellularSetup.mojom.ESimProfileRemote} profile + */ + onProfileChanged(profile) {}, +}; \ No newline at end of file
diff --git a/ui/webui/resources/cr_components/chromeos/os_cr_components.gni b/ui/webui/resources/cr_components/chromeos/os_cr_components.gni index cdacaea..ed430a9 100644 --- a/ui/webui/resources/cr_components/chromeos/os_cr_components.gni +++ b/ui/webui/resources/cr_components/chromeos/os_cr_components.gni
@@ -35,6 +35,7 @@ "ui/webui/resources/cr_components/chromeos/cellular_setup/subflow_behavior.html|SubflowBehavior", "ui/webui/resources/cr_components/chromeos/cellular_setup/mojo_interface_provider.html|setCellularSetupRemoteForTesting,getCellularSetupRemote,setESimManagerRemoteForTesting,getESimManagerRemote", "ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_utils.html|getPendingESimProfiles", + "ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_listener_behavior.html|ESimManagerListenerBehavior", "ui/webui/resources/cr_components/chromeos/network/cr_policy_network_behavior_mojo.html|CrPolicyNetworkBehaviorMojo", "ui/webui/resources/cr_components/chromeos/network/onc_mojo.html|OncMojo", "ui/webui/resources/cr_components/chromeos/network/network_config_element_behavior.html|NetworkConfigElementBehavior",
diff --git a/weblayer/browser/browser_impl.cc b/weblayer/browser/browser_impl.cc index f3aae56..40702971 100644 --- a/weblayer/browser/browser_impl.cc +++ b/weblayer/browser/browser_impl.cc
@@ -394,7 +394,7 @@ } base::FilePath BrowserImpl::GetBrowserPersisterDataPath() { - return BuildPathForBrowserPersister( + return BuildBasePathForBrowserPersister( profile_->GetBrowserPersisterDataBaseDir(), GetPersistenceId()); }
diff --git a/weblayer/browser/persistence/browser_persister.cc b/weblayer/browser/persistence/browser_persister.cc index 59a8edc..dafc1238 100644 --- a/weblayer/browser/persistence/browser_persister.cc +++ b/weblayer/browser/persistence/browser_persister.cc
@@ -65,8 +65,8 @@ rebuild_on_next_save_(false), crypto_key_(decryption_key) { browser_->AddObserver(this); - command_storage_manager_->GetCurrentSessionCommands( - base::BindOnce(&BrowserPersister::OnGotCurrentSessionCommands, + command_storage_manager_->GetLastSessionCommands( + base::BindOnce(&BrowserPersister::OnGotLastSessionCommands, weak_factory_.GetWeakPtr()), decryption_key); } @@ -273,7 +273,7 @@ command_storage_manager_->StartSaveTimer(); } -void BrowserPersister::OnGotCurrentSessionCommands( +void BrowserPersister::OnGotLastSessionCommands( std::vector<std::unique_ptr<sessions::SessionCommand>> commands) { ScheduleRebuildOnNextSave();
diff --git a/weblayer/browser/persistence/browser_persister.h b/weblayer/browser/persistence/browser_persister.h index 34183dd..9c7d296 100644 --- a/weblayer/browser/persistence/browser_persister.h +++ b/weblayer/browser/persistence/browser_persister.h
@@ -103,7 +103,7 @@ void ScheduleRebuildOnNextSave(); // Called with the contents of the previous session. - void OnGotCurrentSessionCommands( + void OnGotLastSessionCommands( std::vector<std::unique_ptr<sessions::SessionCommand>> commands); // Schedules commands to recreate the state of the specified tab.
diff --git a/weblayer/browser/persistence/browser_persister_browsertest.cc b/weblayer/browser/persistence/browser_persister_browsertest.cc index 8f26a2d6..f1c5680 100644 --- a/weblayer/browser/persistence/browser_persister_browsertest.cc +++ b/weblayer/browser/persistence/browser_persister_browsertest.cc
@@ -13,7 +13,9 @@ #include "base/test/bind.h" #include "base/threading/thread_restrictions.h" #include "build/build_config.h" +#include "components/sessions/core/command_storage_backend.h" #include "components/sessions/core/command_storage_manager_test_helper.h" +#include "components/sessions/core/session_constants.h" #include "content/public/test/browser_test_utils.h" #include "content/public/test/url_loader_interceptor.h" #include "net/base/filename_util.h" @@ -362,7 +364,7 @@ // Create a file that has the name of a valid persistence file, but has // invalid contents. base::ScopedAllowBlockingForTesting allow_blocking; - base::WriteFile(BuildPathForBrowserPersister( + base::WriteFile(BuildBasePathForBrowserPersister( GetProfile()->GetBrowserPersisterDataBaseDir(), "z"), "a bogus persistence file"); } @@ -380,17 +382,23 @@ EXPECT_TRUE(persistence_ids.contains("y")); } +bool HasSessionFileStartingWith(const base::FilePath& path) { + auto paths = sessions::CommandStorageBackend::GetSessionFilePaths( + path, sessions::CommandStorageManager::kOther); + return paths.size() == 1; +} + IN_PROC_BROWSER_TEST_F(BrowserPersisterTestWithTwoPersistedIds, RemoveBrowserPersistenceStorage) { - base::FilePath file_path1 = BuildPathForBrowserPersister( + base::FilePath file_path1 = BuildBasePathForBrowserPersister( GetProfile()->GetBrowserPersisterDataBaseDir(), "x"); - base::FilePath file_path2 = BuildPathForBrowserPersister( + base::FilePath file_path2 = BuildBasePathForBrowserPersister( GetProfile()->GetBrowserPersisterDataBaseDir(), "y"); { base::ScopedAllowBlockingForTesting allow_blocking; - ASSERT_TRUE(base::PathExists(file_path1)); - ASSERT_TRUE(base::PathExists(file_path2)); + ASSERT_TRUE(HasSessionFileStartingWith(file_path1)); + ASSERT_TRUE(HasSessionFileStartingWith(file_path2)); } base::RunLoop run_loop; base::flat_set<std::string> persistence_ids;
diff --git a/weblayer/browser/persistence/browser_persister_file_utils.cc b/weblayer/browser/persistence/browser_persister_file_utils.cc index 8cec29c7..8a109cd 100644 --- a/weblayer/browser/persistence/browser_persister_file_utils.cc +++ b/weblayer/browser/persistence/browser_persister_file_utils.cc
@@ -12,6 +12,7 @@ #include "base/task/thread_pool.h" #include "components/base32/base32.h" #include "components/sessions/core/command_storage_backend.h" +#include "components/sessions/core/session_constants.h" #include "content/public/browser/browser_thread.h" #include "weblayer/browser/browser_impl.h" #include "weblayer/browser/browser_list.h" @@ -27,9 +28,19 @@ bool all_succeeded = true; for (const std::string& id : ids) { DCHECK(!id.empty()); - base::FilePath persistence_path = BuildPathForBrowserPersister(path, id); + // Original persistence path. + const base::FilePath persistence_path = + BuildBasePathForBrowserPersister(path, id); if (!base::DeleteFile(persistence_path)) all_succeeded = false; + + // Remove persistence paths with timestamps. + auto paths = sessions::CommandStorageBackend::GetSessionFilePaths( + persistence_path, sessions::CommandStorageManager::kOther); + for (const auto& path : paths) { + if (!base::DeleteFile(path)) + all_succeeded = false; + } } return all_succeeded; } @@ -50,10 +61,16 @@ if (base_name.size() <= base::size(BrowserImpl::kPersistenceFilePrefix)) continue; - const std::string encoded_id = + const std::string encoded_id_and_timestamp = base_name.substr(base::size(BrowserImpl::kPersistenceFilePrefix) - 1); + const size_t separator_index = encoded_id_and_timestamp.find( + base::FilePath(sessions::kTimestampSeparator).MaybeAsASCII()); + const std::string encoded_id = + separator_index == std::string::npos + ? encoded_id_and_timestamp + : encoded_id_and_timestamp.substr(0, separator_index); const std::string decoded_id = base32::Base32Decode(encoded_id); - if (!decoded_id.empty() && + if (!decoded_id.empty() && ids.count(decoded_id) == 0 && sessions::CommandStorageBackend::IsValidFile(name)) { ids.insert(decoded_id); } @@ -61,12 +78,13 @@ return ids; } -base::FilePath BuildPathForBrowserPersister(const base::FilePath& base_path, - const std::string& browser_id) { +base::FilePath BuildBasePathForBrowserPersister( + const base::FilePath& profile_path, + const std::string& browser_id) { DCHECK(!browser_id.empty()); const std::string encoded_name = base32::Base32Encode(browser_id); - return base_path.AppendASCII(BrowserImpl::kPersistenceFilePrefix + - encoded_name); + return profile_path.AppendASCII(BrowserImpl::kPersistenceFilePrefix + + encoded_name); } void RemoveBrowserPersistenceStorageImpl(
diff --git a/weblayer/browser/persistence/browser_persister_file_utils.h b/weblayer/browser/persistence/browser_persister_file_utils.h index 66cb58a..742bd7ff 100644 --- a/weblayer/browser/persistence/browser_persister_file_utils.h +++ b/weblayer/browser/persistence/browser_persister_file_utils.h
@@ -22,10 +22,15 @@ base::flat_set<std::string> GetBrowserPersistenceIdsOnBackgroundThread( const base::FilePath& path); -// Returns the path to save persistence information. |base_path| is the base -// path of the profile, and |browser_id| the persistence id. -base::FilePath BuildPathForBrowserPersister(const base::FilePath& base_path, - const std::string& browser_id); +// Returns the base path to save persistence information. `profile_path` is the +// path of the profile, and `browser_id` the persistence id. +// +// WARNING: persistence code writes more than one file. Historically it wrote +// to the value returned by this. Now it writes to the value returned by this +// with the suffix"_TIMESTAMP", where TIMESTAMP is the time stamp. +base::FilePath BuildBasePathForBrowserPersister( + const base::FilePath& profile_path, + const std::string& browser_id); // Implementation of RemoveBrowserPersistenceStorage(). Tries to remove all // the persistence files for the set of browser persistence ids.
diff --git a/weblayer/browser/profile_disk_operations.cc b/weblayer/browser/profile_disk_operations.cc index 4be77074..f5f8e1b1 100644 --- a/weblayer/browser/profile_disk_operations.cc +++ b/weblayer/browser/profile_disk_operations.cc
@@ -109,7 +109,7 @@ CHECK(base::PathService::Get(DIR_USER_DATA, &base_path)); if (info.name.empty()) { // Originally the Android side of WebLayer only supported a single - // incognitoofile with an empty name. + // incognito file with an empty name. std::string file_name = "Incognito Restore Data"; base_path = base_path.AppendASCII(file_name); } else {