diff --git a/BUILD.gn b/BUILD.gn index 291e3be..3bb7c25 100644 --- a/BUILD.gn +++ b/BUILD.gn
@@ -1325,6 +1325,7 @@ "//build/gn_helpers.py", "//build/config/gclient_args.gni", "//components/crash/content/tools/generate_breakpad_symbols.py", + "//testing/unexpected_passes_common/", "//third_party/blink/renderer/bindings/scripts/", "//third_party/blink/renderer/build/scripts/", "//third_party/blink/tools/",
diff --git a/DEPS b/DEPS index 85a95468..1acd0455 100644 --- a/DEPS +++ b/DEPS
@@ -232,7 +232,7 @@ # 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': '016798114a416a357e12b76d00ce57fb45637090', + 'v8_revision': '355f217d9ab248e31bb27796d086a2c8b4b43446', # 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. @@ -244,7 +244,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. - 'swiftshader_revision': 'e4b7794ddbee1c3fa9a8199779ab6e605faa48c3', + 'swiftshader_revision': 'c3dd927e51b730b0ada151218d199c332317ca33', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling PDFium # and whatever else without interference from each other. @@ -307,7 +307,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling devtools-frontend # and whatever else without interference from each other. - 'devtools_frontend_revision': '5ea47df09c1201ff55c15c665a870f26add07553', + 'devtools_frontend_revision': '360520d5d699166b7b2411c3215cddf11979c0d9', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libprotobuf-mutator # and whatever else without interference from each other. @@ -347,11 +347,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'dawn_revision': '1ee777fcd578efeef72cdc06678975eba4e33bd9', + 'dawn_revision': '213ac89edfe717371f7ac55db7d8246a7a22f431', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'quiche_revision': '5cadb6aa589f8a80fa90a17cf3b7a33cbc5e8aa7', + 'quiche_revision': 'ccb7c6bff6f2699bbe147645ea79311ec8cec912', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ios_webkit # and whatever else without interference from each other. @@ -610,7 +610,7 @@ }, 'src/ios/third_party/material_components_ios/src': { - 'url': Var('chromium_git') + '/external/github.com/material-components/material-components-ios.git' + '@' + '6ad84c1a6a29525ab34ce10b19d3ac7a04a399ad', + 'url': Var('chromium_git') + '/external/github.com/material-components/material-components-ios.git' + '@' + 'ece3a925823b3bcf934f325495e6bf8ac3d54f47', 'condition': 'checkout_ios', }, @@ -691,7 +691,7 @@ 'packages': [ { 'package': 'chromium/rts/model/mac-amd64', - 'version': 'Nwz2oX6Motz8k9dxr1WaxdMHTrppvhla2kAME1Yx0XgC', + 'version': '-xRlyurTPdf6aaiwnpegZTEqjJRa9r0RdK2mptMq9JEC', }, ], 'dep_type': 'cipd', @@ -702,7 +702,7 @@ 'packages': [ { 'package': 'chromium/rts/model/windows-amd64', - 'version': 'ZgESCkgvPar2H2l1K1Yxws-O5V1L_xPG78UvzPv2X_MC', + 'version': 'snl7UQlAc88dc0PzdtjPl_JwcK-pilqfxQIh0W_lsKMC', }, ], 'dep_type': 'cipd', @@ -767,7 +767,7 @@ 'packages': [ { 'package': 'chromium/third_party/androidx', - 'version': '6YnvOFZqQbSfmq9Bknb9CSKuND84c-TqnEATwNlvhqwC', + 'version': 'iS9uLbt1ks96lnB9FgzCbsDit0AaQS7PqWyWdVJ3mggC', }, ], 'condition': 'checkout_android', @@ -1003,7 +1003,7 @@ }, 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '0a4dd4181ae2d3f2b77bb9f4ea4451d9209c8159', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'cc487710bb02ca3fc078e0495a12e6445bf80131', 'src/third_party/devtools-frontend/src': Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'), @@ -1389,7 +1389,7 @@ }, 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + '00e6f338d036b5d1ad547b979b612ec008fe3165', + Var('android_git') + '/platform/external/perfetto.git' + '@' + '7d0822e5b1903542d5712673481fc0747ca34bb7', 'src/third_party/perl': { 'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3', @@ -1621,7 +1621,7 @@ Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '26da66e2987afd8fb426c8b83f7b96d500c3fb01', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + '363b1745670c15ee85b952cb63ef94b36deef133', + Var('webrtc_git') + '/src.git' + '@' + 'ba1beba7cdec6708a34a4e1e36cc4f77aead36ba', 'src/third_party/libgifcodec': Var('skia_git') + '/libgifcodec' + '@'+ Var('libgifcodec_revision'), @@ -1682,7 +1682,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@b6a1efa8ab3e84318cb837af17b4b7187afb21b5', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@c7a479b8c6e1230616c024e49689411b920fa285', 'condition': 'checkout_src_internal', },
diff --git a/ash/BUILD.gn b/ash/BUILD.gn index 8ebaac4a0..44709ee 100644 --- a/ash/BUILD.gn +++ b/ash/BUILD.gn
@@ -1971,9 +1971,9 @@ "//ui/base/ime/chromeos", "//ui/base/ime/init", "//ui/chromeos", - "//ui/chromeos/colors:cros_colors_views", "//ui/chromeos/events", "//ui/chromeos/resources", + "//ui/chromeos/styles:cros_styles_views", "//ui/compositor", "//ui/compositor_extra", "//ui/display", @@ -2589,8 +2589,8 @@ "//ui/base/ime", "//ui/base/ime/chromeos", "//ui/chromeos", - "//ui/chromeos/colors:cros_colors_views", "//ui/chromeos/events", + "//ui/chromeos/styles:cros_styles_views", "//ui/compositor", "//ui/compositor:test_support", "//ui/compositor_extra:compositor_extra",
diff --git a/ash/app_list/views/app_list_view.cc b/ash/app_list/views/app_list_view.cc index 4c5db33..58b7c50 100644 --- a/ash/app_list/views/app_list_view.cc +++ b/ash/app_list/views/app_list_view.cc
@@ -644,7 +644,7 @@ a11y_announcer_->Shutdown(); // Remove child views first to ensure no remaining dependencies on delegate_. - RemoveAllChildViews(true); + RemoveAllChildViews(); } // static
diff --git a/ash/app_list/views/apps_grid_view.cc b/ash/app_list/views/apps_grid_view.cc index 78f9b4fe..c20930a 100644 --- a/ash/app_list/views/apps_grid_view.cc +++ b/ash/app_list/views/apps_grid_view.cc
@@ -323,7 +323,7 @@ bounds_animator_->Cancel(); view_model_.Clear(); - RemoveAllChildViews(true); + RemoveAllChildViews(); } void AppsGridView::SetLayout(int cols, int rows_per_page) {
diff --git a/ash/app_list/views/page_switcher.cc b/ash/app_list/views/page_switcher.cc index a9d61a6..a5da5ba 100644 --- a/ash/app_list/views/page_switcher.cc +++ b/ash/app_list/views/page_switcher.cc
@@ -281,7 +281,7 @@ if (!model_) return; - buttons_->RemoveAllChildViews(true); + buttons_->RemoveAllChildViews(); for (int i = 0; i < model_->total_pages(); ++i) { PageSwitcherButton* button = buttons_->AddChildView(std::make_unique<PageSwitcherButton>(
diff --git a/ash/app_list/views/search_result_actions_view.cc b/ash/app_list/views/search_result_actions_view.cc index c4e4361..86a1178 100644 --- a/ash/app_list/views/search_result_actions_view.cc +++ b/ash/app_list/views/search_result_actions_view.cc
@@ -195,7 +195,7 @@ if (selected_action_.has_value()) selected_action_.reset(); subscriptions_.clear(); - RemoveAllChildViews(true); + RemoveAllChildViews(); for (size_t i = 0; i < actions.size(); ++i) CreateImageButton(actions[i], i);
diff --git a/ash/assistant/ui/BUILD.gn b/ash/assistant/ui/BUILD.gn index a85961d..2e99422 100644 --- a/ash/assistant/ui/BUILD.gn +++ b/ash/assistant/ui/BUILD.gn
@@ -103,7 +103,7 @@ "//chromeos/services/libassistant/public/cpp:structs", "//chromeos/ui/vector_icons", "//ui/aura", - "//ui/chromeos/colors:cros_colors_views", + "//ui/chromeos/styles:cros_styles_views", "//ui/compositor", "//ui/gfx", "//ui/views",
diff --git a/ash/assistant/ui/colors/BUILD.gn b/ash/assistant/ui/colors/BUILD.gn index 56985462..68df33c 100644 --- a/ash/assistant/ui/colors/BUILD.gn +++ b/ash/assistant/ui/colors/BUILD.gn
@@ -6,7 +6,7 @@ style_variable_generator("assistant_colors") { sources = [ - "//ui/chromeos/colors/cros_palette.json5", + "//ui/chromeos/styles/cros_palette.json5", "assistant_colors.json5", ] }
diff --git a/ash/assistant/ui/main_stage/animated_container_view.cc b/ash/assistant/ui/main_stage/animated_container_view.cc index 11298d4d..0201e86 100644 --- a/ash/assistant/ui/main_stage/animated_container_view.cc +++ b/ash/assistant/ui/main_stage/animated_container_view.cc
@@ -133,7 +133,7 @@ // We can prevent over-propagation of the PreferredSizeChanged event by // stopping propagation during batched view hierarchy add/remove operations. ScopedDisablePreferredSizeChanged disable_preferred_size_changed(this); - content_view()->RemoveAllChildViews(/*delete_children=*/true); + content_view()->RemoveAllChildViews(); // We inform our derived class all views have been removed. OnAllViewsRemoved();
diff --git a/ash/assistant/ui/main_stage/assistant_query_view.cc b/ash/assistant/ui/main_stage/assistant_query_view.cc index f048ab5..135d700 100644 --- a/ash/assistant/ui/main_stage/assistant_query_view.cc +++ b/ash/assistant/ui/main_stage/assistant_query_view.cc
@@ -18,7 +18,7 @@ #include "net/base/escape.h" #include "third_party/skia/include/core/SkColor.h" #include "ui/accessibility/ax_enums.mojom.h" -#include "ui/chromeos/colors/cros_colors.h" +#include "ui/chromeos/styles/cros_styles.h" #include "ui/views/accessibility/view_accessibility.h" #include "ui/views/background.h" #include "ui/views/layout/flex_layout.h" @@ -79,20 +79,20 @@ // TODO(crbug.com/1176919): We cannot use ScopedLightModeAsDefault from // ash/assistant/ui as it causes a circular dependency. Find a better way to - // resolve cros_colors color. + // resolve cros_styles color. SkColor text_color_primary = features::IsDarkLightModeEnabled() ? ColorProvider::Get()->GetContentLayerColor( ColorProvider::ContentLayerType::kTextColorPrimary) - : cros_colors::ResolveColor(cros_colors::ColorName::kTextColorPrimary, + : cros_styles::ResolveColor(cros_styles::ColorName::kTextColorPrimary, /*is_dark_mode=*/false, /*use_debug_colors=*/false); SkColor text_color_secondary = features::IsDarkLightModeEnabled() ? ColorProvider::Get()->GetContentLayerColor( ColorProvider::ContentLayerType::kTextColorSecondary) - : cros_colors::ResolveColor( - cros_colors::ColorName::kTextColorSecondary, + : cros_styles::ResolveColor( + cros_styles::ColorName::kTextColorSecondary, /*is_dark_mode=*/false, /*use_debug_colors=*/false);
diff --git a/ash/assistant/ui/main_stage/assistant_query_view_unittest.cc b/ash/assistant/ui/main_stage/assistant_query_view_unittest.cc index 040b26e9..c5903a5 100644 --- a/ash/assistant/ui/main_stage/assistant_query_view_unittest.cc +++ b/ash/assistant/ui/main_stage/assistant_query_view_unittest.cc
@@ -16,7 +16,7 @@ #include "base/feature_list.h" #include "base/test/scoped_feature_list.h" #include "third_party/skia/include/core/SkColor.h" -#include "ui/chromeos/colors/cros_colors.h" +#include "ui/chromeos/styles/cros_styles.h" #include "ui/views/background.h" #include "ui/views/controls/label.h" #include "ui/views/view.h" @@ -49,7 +49,7 @@ assistant_colors::ColorName::kBgAssistantPlate, /*is_dark_mode=*/false, /*use_debug_colors=*/false)); EXPECT_EQ(high_confidence_label->GetEnabledColor(), - cros_colors::ResolveColor(cros_colors::ColorName::kTextColorPrimary, + cros_styles::ResolveColor(cros_styles::ColorName::kTextColorPrimary, /*is_dark_mode=*/false, /*use_debug_colors=*/false)); EXPECT_EQ(low_confidence_label->GetBackgroundColor(), @@ -58,7 +58,7 @@ /*is_dark_mode=*/false, /*use_debug_colors=*/false)); EXPECT_EQ( low_confidence_label->GetEnabledColor(), - cros_colors::ResolveColor(cros_colors::ColorName::kTextColorSecondary, + cros_styles::ResolveColor(cros_styles::ColorName::kTextColorSecondary, /*is_dark_mode=*/false, /*use_debug_colors=*/false)); @@ -74,7 +74,7 @@ assistant_colors::ColorName::kBgAssistantPlate, /*is_dark_mode=*/true, /*use_debug_colors=*/false)); EXPECT_EQ(high_confidence_label->GetEnabledColor(), - cros_colors::ResolveColor(cros_colors::ColorName::kTextColorPrimary, + cros_styles::ResolveColor(cros_styles::ColorName::kTextColorPrimary, /*is_dark_mode=*/true, /*use_debug_colors=*/false)); EXPECT_EQ(low_confidence_label->GetBackgroundColor(), @@ -83,7 +83,7 @@ /*is_dark_mode=*/true, /*use_debug_colors=*/false)); EXPECT_EQ( low_confidence_label->GetEnabledColor(), - cros_colors::ResolveColor(cros_colors::ColorName::kTextColorSecondary, + cros_styles::ResolveColor(cros_styles::ColorName::kTextColorSecondary, /*is_dark_mode=*/true, /*use_debug_colors=*/false)); }
diff --git a/ash/assistant/ui/main_stage/assistant_zero_state_view.cc b/ash/assistant/ui/main_stage/assistant_zero_state_view.cc index 48dcadf6..5bb160d7 100644 --- a/ash/assistant/ui/main_stage/assistant_zero_state_view.cc +++ b/ash/assistant/ui/main_stage/assistant_zero_state_view.cc
@@ -21,7 +21,7 @@ #include "chromeos/services/assistant/public/cpp/features.h" #include "third_party/skia/include/core/SkColor.h" #include "ui/base/l10n/l10n_util.h" -#include "ui/chromeos/colors/cros_colors.h" +#include "ui/chromeos/styles/cros_styles.h" #include "ui/views/background.h" #include "ui/views/border.h" #include "ui/views/controls/label.h" @@ -74,12 +74,12 @@ // TODO(crbug.com/1176919): We cannot use ScopedLightModeAsDefault from // ash/assistant/ui as it causes a circular dependency. Find a better way to - // resolve cros_colors color. + // resolve cros_styles color. SkColor text_color_primary = features::IsDarkLightModeEnabled() ? ColorProvider::Get()->GetContentLayerColor( ColorProvider::ContentLayerType::kTextColorPrimary) - : cros_colors::ResolveColor(cros_colors::ColorName::kTextColorPrimary, + : cros_styles::ResolveColor(cros_styles::ColorName::kTextColorPrimary, /*is_dark_mode=*/false, /*use_debug_colors=*/false); greeting_label_->SetEnabledColor(text_color_primary);
diff --git a/ash/assistant/ui/main_stage/assistant_zero_state_view_unittest.cc b/ash/assistant/ui/main_stage/assistant_zero_state_view_unittest.cc index 02a0373..24a7c31 100644 --- a/ash/assistant/ui/main_stage/assistant_zero_state_view_unittest.cc +++ b/ash/assistant/ui/main_stage/assistant_zero_state_view_unittest.cc
@@ -15,7 +15,7 @@ #include "ash/style/ash_color_provider.h" #include "base/test/scoped_feature_list.h" #include "third_party/skia/include/core/SkColor.h" -#include "ui/chromeos/colors/cros_colors.h" +#include "ui/chromeos/styles/cros_styles.h" #include "ui/views/controls/label.h" namespace ash { @@ -50,7 +50,7 @@ assistant_colors::ColorName::kBgAssistantPlate, /*is_dark_mode=*/false, /*use_debug_colors=*/false)); EXPECT_EQ(greeting_label->GetEnabledColor(), - cros_colors::ResolveColor(cros_colors::ColorName::kTextColorPrimary, + cros_styles::ResolveColor(cros_styles::ColorName::kTextColorPrimary, /*is_dark_mode=*/false, /*use_debug_colors=*/false)); @@ -62,7 +62,7 @@ assistant_colors::ColorName::kBgAssistantPlate, /*is_dark_mode=*/true, /*use_debug_colors=*/false)); EXPECT_EQ(greeting_label->GetEnabledColor(), - cros_colors::ResolveColor(cros_colors::ColorName::kTextColorPrimary, + cros_styles::ResolveColor(cros_styles::ColorName::kTextColorPrimary, /*is_dark_mode=*/true, /*use_debug_colors=*/false)); }
diff --git a/ash/login/ui/lock_contents_view.cc b/ash/login/ui/lock_contents_view.cc index 20b27a0..c1a1ef6ea 100644 --- a/ash/login/ui/lock_contents_view.cc +++ b/ash/login/ui/lock_contents_view.cc
@@ -900,7 +900,7 @@ // so there is not stale-pointer usage. See crbug.com/884402. // TODO(crbug.com/1222096): We should figure out a better way of handling // user info changes such as avatar changes. They should not cause view re-layouting. - main_view_->RemoveAllChildViews(true /*delete_children*/); + main_view_->RemoveAllChildViews(); // Build user state list. Preserve previous state if the user already exists. std::vector<UserState> new_users;
diff --git a/ash/quick_answers/ui/quick_answers_view.cc b/ash/quick_answers/ui/quick_answers_view.cc index df2ca48..b1799c7 100644 --- a/ash/quick_answers/ui/quick_answers_view.cc +++ b/ash/quick_answers/ui/quick_answers_view.cc
@@ -551,7 +551,7 @@ } void QuickAnswersView::ResetContentView() { - content_view_->RemoveAllChildViews(true); + content_view_->RemoveAllChildViews(); first_answer_label_ = nullptr; }
diff --git a/ash/quick_pair/pairing/fast_pair/fast_pair_gatt_service_client_impl.cc b/ash/quick_pair/pairing/fast_pair/fast_pair_gatt_service_client_impl.cc index 0f35591..8dd31af 100644 --- a/ash/quick_pair/pairing/fast_pair/fast_pair_gatt_service_client_impl.cc +++ b/ash/quick_pair/pairing/fast_pair/fast_pair_gatt_service_client_impl.cc
@@ -29,6 +29,31 @@ constexpr base::TimeDelta kConnectingTimeout = base::TimeDelta::FromSeconds(5); +constexpr const char* ToString( + device::BluetoothGattService::GattErrorCode error_code) { + switch (error_code) { + case device::BluetoothGattService::GATT_ERROR_UNKNOWN: + return "GATT_ERROR_UNKNOWN"; + case device::BluetoothGattService::GATT_ERROR_FAILED: + return "GATT_ERROR_FAILED"; + case device::BluetoothGattService::GATT_ERROR_IN_PROGRESS: + return "GATT_ERROR_IN_PROGRESS"; + case device::BluetoothGattService::GATT_ERROR_INVALID_LENGTH: + return "GATT_ERROR_INVALID_LENGTH"; + case device::BluetoothGattService::GATT_ERROR_NOT_PERMITTED: + return "GATT_ERROR_NOT_PERMITTED"; + case device::BluetoothGattService::GATT_ERROR_NOT_AUTHORIZED: + return "GATT_ERROR_NOT_AUTHORIZED"; + case device::BluetoothGattService::GATT_ERROR_NOT_PAIRED: + return "GATT_ERROR_NOT_PAIRED"; + case device::BluetoothGattService::GATT_ERROR_NOT_SUPPORTED: + return "GATT_ERROR_NOT_SUPPORTED"; + default: + NOTREACHED(); + return ""; + } +} + } // namespace namespace ash { @@ -235,7 +260,8 @@ void FastPairGattServiceClientImpl::OnGattError( PairFailure failure, device::BluetoothGattService::GattErrorCode error) { - QP_LOG(VERBOSE) << "StartNotifySession failed due to GATT error."; + QP_LOG(VERBOSE) << "StartNotifySession failed due to GATT error: " + << ToString(error); NotifyError(failure); }
diff --git a/ash/shortcut_viewer/views/keyboard_shortcut_view.cc b/ash/shortcut_viewer/views/keyboard_shortcut_view.cc index 3f050ef..214454a 100644 --- a/ash/shortcut_viewer/views/keyboard_shortcut_view.cc +++ b/ash/shortcut_viewer/views/keyboard_shortcut_view.cc
@@ -512,7 +512,7 @@ if (!should_show_search_results) { // Remove all child views, including horizontal separator lines, to prepare // for showing search results next time. - search_results_container_->RemoveAllChildViews(true); + search_results_container_->RemoveAllChildViews(); if (!categories_tabbed_pane_->GetVisible()) { // Repopulate |categories_tabbed_pane_| child views, which were removed // when they were added to |search_results_container_|. @@ -528,7 +528,7 @@ void KeyboardShortcutView::ShowSearchResults( const std::u16string& search_query) { - search_results_container_->RemoveAllChildViews(true); + search_results_container_->RemoveAllChildViews(); auto* search_container_content_view = search_no_result_view_.get(); auto found_items_list_view = std::make_unique<KeyboardShortcutItemListView>(); base::i18n::FixedPatternStringSearchIgnoringCaseAndAccents finder(
diff --git a/ash/style/ash_color_provider.cc b/ash/style/ash_color_provider.cc index 21c8da32..377d263 100644 --- a/ash/style/ash_color_provider.cc +++ b/ash/style/ash_color_provider.cc
@@ -21,7 +21,7 @@ #include "components/prefs/pref_change_registrar.h" #include "components/prefs/pref_registry_simple.h" #include "components/prefs/pref_service.h" -#include "ui/chromeos/colors/cros_colors.h" +#include "ui/chromeos/styles/cros_styles.h" #include "ui/gfx/color_analysis.h" #include "ui/gfx/color_palette.h" #include "ui/gfx/color_utils.h" @@ -34,7 +34,7 @@ namespace ash { -using ColorName = cros_colors::ColorName; +using ColorName = cros_styles::ColorName; namespace { @@ -68,8 +68,8 @@ constexpr int kPillButtonImageLabelSpacingDp = 8; // Get the corresponding ColorName for |type|. ColorName is an enum in -// cros_colors.h file that is generated from cros_colors.json5, which includes -// the color IDs and colors that will be used by ChromeOS WebUI. +// cros_styles.h file that is generated from cros_colors.json5, which +// includes the color IDs and colors that will be used by ChromeOS WebUI. ColorName TypeToColorName(AshColorProvider::ContentLayerType type) { switch (type) { case AshColorProvider::ContentLayerType::kTextColorPrimary: @@ -96,11 +96,11 @@ } } -// Get the color from cros_colors.h header file that is generated from +// Get the color from cros_styles.h header file that is generated from // cros_colors.json5. Colors there will also be used by ChromeOS WebUI. SkColor ResolveColor(AshColorProvider::ContentLayerType type, bool use_dark_color) { - return cros_colors::ResolveColor( + return cros_styles::ResolveColor( TypeToColorName(type), use_dark_color, base::FeatureList::IsEnabled( ash::features::kSemanticColorsDebugOverride));
diff --git a/ash/system/accessibility/select_to_speak/select_to_speak_speed_view.cc b/ash/system/accessibility/select_to_speak/select_to_speak_speed_view.cc index d3fcf02c..5884f04 100644 --- a/ash/system/accessibility/select_to_speak/select_to_speak_speed_view.cc +++ b/ash/system/accessibility/select_to_speak/select_to_speak_speed_view.cc
@@ -37,7 +37,7 @@ } void SelectToSpeakSpeedView::SetInitialSpeechRate(double initial_speech_rate) { - RemoveAllChildViews(true); + RemoveAllChildViews(); for (size_t i = 0; i < base::size(kSelectToSpeakSpeechRates); i++) { double option_speed = kSelectToSpeakSpeechRates[i];
diff --git a/ash/system/accessibility/switch_access/switch_access_menu_view.cc b/ash/system/accessibility/switch_access/switch_access_menu_view.cc index 191720b..0bc0fd0 100644 --- a/ash/system/accessibility/switch_access/switch_access_menu_view.cc +++ b/ash/system/accessibility/switch_access/switch_access_menu_view.cc
@@ -115,7 +115,7 @@ SwitchAccessMenuView::~SwitchAccessMenuView() = default; void SwitchAccessMenuView::SetActions(std::vector<std::string> actions) { - RemoveAllChildViews(/*delete_children=*/true); + RemoveAllChildViews(); views::GridLayout* layout = SetLayoutManager(std::make_unique<views::GridLayout>());
diff --git a/ash/system/audio/audio_detailed_view.cc b/ash/system/audio/audio_detailed_view.cc index f8528d1..90d0b07 100644 --- a/ash/system/audio/audio_detailed_view.cc +++ b/ash/system/audio/audio_detailed_view.cc
@@ -152,7 +152,7 @@ } void AudioDetailedView::UpdateScrollableList() { - scroll_content()->RemoveAllChildViews(true); + scroll_content()->RemoveAllChildViews(); device_map_.clear(); // Add audio output devices.
diff --git a/ash/system/bluetooth/bluetooth_detailed_view_legacy.cc b/ash/system/bluetooth/bluetooth_detailed_view_legacy.cc index 1041fd8..1a29852 100644 --- a/ash/system/bluetooth/bluetooth_detailed_view_legacy.cc +++ b/ash/system/bluetooth/bluetooth_detailed_view_legacy.cc
@@ -157,7 +157,7 @@ paired_devices_heading_ = nullptr; unpaired_devices_heading_ = nullptr; bluetooth_discovering_label_ = nullptr; - scroll_content()->RemoveAllChildViews(true); + scroll_content()->RemoveAllChildViews(); DCHECK(scroller()); if (!disabled_panel_) {
diff --git a/ash/system/cast/tray_cast.cc b/ash/system/cast/tray_cast.cc index d18f1b0..ff03133 100644 --- a/ash/system/cast/tray_cast.cc +++ b/ash/system/cast/tray_cast.cc
@@ -110,7 +110,7 @@ void CastDetailedView::UpdateReceiverListFromCachedData() { // Remove all of the existing views. view_to_sink_map_.clear(); - scroll_content()->RemoveAllChildViews(true); + scroll_content()->RemoveAllChildViews(); // Add a view for each receiver. for (auto& it : sinks_and_routes_) {
diff --git a/ash/system/holding_space/holding_space_item_views_section.cc b/ash/system/holding_space/holding_space_item_views_section.cc index 29f5ea2..996caf4 100644 --- a/ash/system/holding_space/holding_space_item_views_section.cc +++ b/ash/system/holding_space/holding_space_item_views_section.cc
@@ -308,7 +308,7 @@ // not visible to the user. DCHECK(!IsDrawn() || !container_->IsDrawn() || container_->layer()->opacity() == 0.f); - container_->RemoveAllChildViews(/*delete_children=*/true); + container_->RemoveAllChildViews(); views_by_item_id_.clear(); }
diff --git a/ash/system/message_center/stacked_notification_bar.cc b/ash/system/message_center/stacked_notification_bar.cc index a9f9b8c..9538301 100644 --- a/ash/system/message_center/stacked_notification_bar.cc +++ b/ash/system/message_center/stacked_notification_bar.cc
@@ -522,7 +522,7 @@ void StackedNotificationBar::OnNotificationAdded(const std::string& id) { // Reset the stacked icons bar if a notification is added since we don't // know the position where it may have been added. - notification_icons_container_->RemoveAllChildViews(true); + notification_icons_container_->RemoveAllChildViews(); stacked_notification_count_ = 0; UpdateStackedNotifications(message_center_view_->GetStackedNotifications()); }
diff --git a/ash/system/network/vpn_list_view.cc b/ash/system/network/vpn_list_view.cc index 89757362..0b1e7f2 100644 --- a/ash/system/network/vpn_list_view.cc +++ b/ash/system/network/vpn_list_view.cc
@@ -359,7 +359,7 @@ } // Clear the list. - scroll_content()->RemoveAllChildViews(true); + scroll_content()->RemoveAllChildViews(); provider_view_map_.clear(); network_view_guid_map_.clear(); list_empty_ = true;
diff --git a/ash/system/phonehub/phone_hub_recent_apps_view.cc b/ash/system/phonehub/phone_hub_recent_apps_view.cc index ef4ad68..2b0d600 100644 --- a/ash/system/phonehub/phone_hub_recent_apps_view.cc +++ b/ash/system/phonehub/phone_hub_recent_apps_view.cc
@@ -141,7 +141,7 @@ } void PhoneHubRecentAppsView::RecentAppButtonsView::Reset() { - RemoveAllChildViews(true /* delete_children */); + RemoveAllChildViews(); } void PhoneHubRecentAppsView::Update() {
diff --git a/ash/system/phonehub/task_continuation_view.cc b/ash/system/phonehub/task_continuation_view.cc index 6cd2b96..f0d1676 100644 --- a/ash/system/phonehub/task_continuation_view.cc +++ b/ash/system/phonehub/task_continuation_view.cc
@@ -141,7 +141,7 @@ void TaskContinuationView::TaskChipsView::Reset() { task_chips_.Clear(); - RemoveAllChildViews(true /* delete_children */); + RemoveAllChildViews(); } gfx::Point TaskContinuationView::TaskChipsView::GetButtonPosition(int index) {
diff --git a/ash/system/status_area_widget.cc b/ash/system/status_area_widget.cc index 45ae610..9897425b 100644 --- a/ash/system/status_area_widget.cc +++ b/ash/system/status_area_widget.cc
@@ -330,7 +330,7 @@ void StatusAreaWidget::HandleLocaleChange() { // Here we force the layer's bounds to be updated for text direction (if // needed). - status_area_widget_delegate_->RemoveAllChildViews(/*delete_children=*/false); + status_area_widget_delegate_->RemoveAllChildViewsWithoutDeleting(); // The layout manager will be updated when shelf layout gets updated, which is // done by the shelf layout manager after `HandleLocaleChange()` gets called.
diff --git a/ash/system/status_area_widget_delegate.cc b/ash/system/status_area_widget_delegate.cc index e8dc713..9cbf69b 100644 --- a/ash/system/status_area_widget_delegate.cc +++ b/ash/system/status_area_widget_delegate.cc
@@ -117,7 +117,7 @@ // TODO(pbos): Investigate if this is necessary. This is a bit defensive but // it's done to make sure that StatusAreaWidget isn't accessed by the View // hierarchy during its destruction. - RemoveAllChildViews(/*delete=*/true); + RemoveAllChildViews(); // StatusAreaWidgetDelegate uses a GridLayout which unfortunately doesn't // handle child add/removal. Remove the LayoutManager early to prevent UAFs // during Widget destruction.
diff --git a/ash/system/tray/hover_highlight_view.cc b/ash/system/tray/hover_highlight_view.cc index e748974..ed1d550 100644 --- a/ash/system/tray/hover_highlight_view.cc +++ b/ash/system/tray/hover_highlight_view.cc
@@ -164,7 +164,7 @@ } void HoverHighlightView::Reset() { - RemoveAllChildViews(true); + RemoveAllChildViews(); text_label_ = nullptr; sub_text_label_ = nullptr; left_icon_ = nullptr;
diff --git a/ash/system/tray/tray_detailed_view.cc b/ash/system/tray/tray_detailed_view.cc index 76397f4a..b3d3536 100644 --- a/ash/system/tray/tray_detailed_view.cc +++ b/ash/system/tray/tray_detailed_view.cc
@@ -408,7 +408,7 @@ } void TrayDetailedView::Reset() { - RemoveAllChildViews(true); + RemoveAllChildViews(); scroller_ = nullptr; scroll_content_ = nullptr; progress_bar_ = nullptr;
diff --git a/ash/system/unified/page_indicator_view.cc b/ash/system/unified/page_indicator_view.cc index 1a43c46..f31fed27 100644 --- a/ash/system/unified/page_indicator_view.cc +++ b/ash/system/unified/page_indicator_view.cc
@@ -210,7 +210,7 @@ int new_page_count) { DCHECK(model_); - buttons_container_->RemoveAllChildViews(true); + buttons_container_->RemoveAllChildViews(); for (int i = 0; i < model_->total_pages(); ++i) { PageIndicatorButton* button = new PageIndicatorButton(controller_, i); button->SetAccessibleName(l10n_util::GetStringFUTF16(
diff --git a/ash/system/unified/unified_slider_bubble_controller.cc b/ash/system/unified/unified_slider_bubble_controller.cc index ef36bea..ce2a5dab 100644 --- a/ash/system/unified/unified_slider_bubble_controller.cc +++ b/ash/system/unified/unified_slider_bubble_controller.cc
@@ -159,7 +159,7 @@ DCHECK(bubble_view_); if (slider_type_ != slider_type) { - bubble_view_->RemoveAllChildViews(true); + bubble_view_->RemoveAllChildViews(); slider_type_ = slider_type; CreateSliderController();
diff --git a/ash/system/unified/unified_system_tray_bubble.cc b/ash/system/unified/unified_system_tray_bubble.cc index f99ba1f3..815b1d3 100644 --- a/ash/system/unified/unified_system_tray_bubble.cc +++ b/ash/system/unified/unified_system_tray_bubble.cc
@@ -123,7 +123,7 @@ // Unified view children depend on `controller_` which is about to go away. // Remove child views synchronously to ensure they don't try to access // `controller_` after `this` goes out of scope. - bubble_view_->RemoveAllChildViews(true); + bubble_view_->RemoveAllChildViews(); bubble_view_->ResetDelegate(); if (bubble_widget_) {
diff --git a/ash/system/unified/unified_system_tray_view.cc b/ash/system/unified/unified_system_tray_view.cc index 4579972..9fbc5778 100644 --- a/ash/system/unified/unified_system_tray_view.cc +++ b/ash/system/unified/unified_system_tray_view.cc
@@ -285,7 +285,7 @@ auto system_tray_size = system_tray_container_->GetPreferredSize(); system_tray_container_->SetVisible(false); - detailed_view_container_->RemoveAllChildViews(true /* delete_children */); + detailed_view_container_->RemoveAllChildViews(); detailed_view_container_->AddChildView(detailed_view); detailed_view_container_->SetVisible(true); detailed_view_container_->SetPreferredSize(system_tray_size); @@ -294,7 +294,7 @@ } void UnifiedSystemTrayView::ResetDetailedView() { - detailed_view_container_->RemoveAllChildViews(true /* delete_children */); + detailed_view_container_->RemoveAllChildViews(); detailed_view_container_->SetVisible(false); if (media_controls_container_) media_controls_container_->MaybeShowMediaControls();
diff --git a/ash/webui/common/resources/page_toolbar.html b/ash/webui/common/resources/page_toolbar.html index 41e8c06e..6b8bfea 100644 --- a/ash/webui/common/resources/page_toolbar.html +++ b/ash/webui/common/resources/page_toolbar.html
@@ -1,5 +1,5 @@ <link rel="stylesheet" - href="chrome://resources/chromeos/colors/cros_colors.generated.css"> + href="chrome://resources/chromeos/colors/cros_styles.css"> <link rel="stylesheet" href="chrome://resources/css/text_defaults_md.css"> <link rel="stylesheet" href="chrome://resources/css/md_colors.css"> <style cr-shared-style>
diff --git a/ash/webui/diagnostics_ui/resources/diagnostics_shared_css.html b/ash/webui/diagnostics_ui/resources/diagnostics_shared_css.html index 99ee318..9da66b4 100644 --- a/ash/webui/diagnostics_ui/resources/diagnostics_shared_css.html +++ b/ash/webui/diagnostics_ui/resources/diagnostics_shared_css.html
@@ -1,5 +1,5 @@ <link rel="stylesheet" - href="chrome://resources/chromeos/colors/cros_colors.generated.css"> + href="chrome://resources/chromeos/colors/cros_styles.css"> <link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html"> <link rel="stylesheet" href="chrome://resources/css/text_defaults_md.css"> <link rel="stylesheet" href="chrome://resources/css/md_colors.css">
diff --git a/ash/webui/diagnostics_ui/resources/routine_result_entry.html b/ash/webui/diagnostics_ui/resources/routine_result_entry.html index 2923a61c..fdaeac10 100644 --- a/ash/webui/diagnostics_ui/resources/routine_result_entry.html +++ b/ash/webui/diagnostics_ui/resources/routine_result_entry.html
@@ -23,6 +23,7 @@ align-items: center; display: flex; flex-direction: column; + width: 56px; } .entryRow { @@ -50,7 +51,6 @@ .red { border-left: 1px dashed var(--google-red-600); position: relative; - right: 4px; } #routine {
diff --git a/ash/webui/diagnostics_ui/resources/text_badge.html b/ash/webui/diagnostics_ui/resources/text_badge.html index 26ae5de..40dc6d3 100644 --- a/ash/webui/diagnostics_ui/resources/text_badge.html +++ b/ash/webui/diagnostics_ui/resources/text_badge.html
@@ -2,13 +2,11 @@ .error { background-color: var(--google-red-50); color: var(--google-red-600); - margin-right: 14px; } .queued { background-color: var(--google-grey-200); color: var(--google-grey-700); - margin-right: 7px; } .running {
diff --git a/ash/webui/os_feedback_ui/resources/os_feedback_shared_css.html b/ash/webui/os_feedback_ui/resources/os_feedback_shared_css.html index 31913ed..c90d36a 100644 --- a/ash/webui/os_feedback_ui/resources/os_feedback_shared_css.html +++ b/ash/webui/os_feedback_ui/resources/os_feedback_shared_css.html
@@ -1,5 +1,5 @@ <link rel="stylesheet" - href="chrome://resources/chromeos/colors/cros_colors.generated.css"> + href="chrome://resources/chromeos/colors/cros_styles.css"> <link rel="stylesheet" href="chrome://resources/css/text_defaults_md.css"> <link rel="stylesheet" href="chrome://resources/css/md_colors.css"> <template>
diff --git a/ash/webui/scanning/resources/scanning_shared_css.html b/ash/webui/scanning/resources/scanning_shared_css.html index ae6b3a4..9bd9a76 100644 --- a/ash/webui/scanning/resources/scanning_shared_css.html +++ b/ash/webui/scanning/resources/scanning_shared_css.html
@@ -1,5 +1,5 @@ <link rel="stylesheet" - href="chrome://resources/chromeos/colors/cros_colors.generated.css"> + href="chrome://resources/chromeos/colors/cros_styles.css"> <link rel="stylesheet" href="chrome://resources/css/text_defaults_md.css"> <link rel="stylesheet" href="chrome://resources/css/md_colors.css"> <link rel="stylesheet" href="chrome://resources/cr_elements/md_select_css.html">
diff --git a/ash/webui/shimless_rma/resources/shimless_rma_shared_css.html b/ash/webui/shimless_rma/resources/shimless_rma_shared_css.html index 1923305..e729b4a55d 100644 --- a/ash/webui/shimless_rma/resources/shimless_rma_shared_css.html +++ b/ash/webui/shimless_rma/resources/shimless_rma_shared_css.html
@@ -1,5 +1,5 @@ <link rel="stylesheet" - href="chrome://resources/chromeos/colors/cros_colors.generated.css"> + href="chrome://resources/chromeos/colors/cros_styles.css"> <link rel="stylesheet" href="chrome://resources/css/text_defaults_md.css"> <link rel="stylesheet" href="chrome://resources/css/md_colors.css"> <link rel="stylesheet" href="chrome://resources/cr_elements/md_select_css.html">
diff --git a/ash/webui/shortcut_customization_ui/resources/shortcut_customization_shared_css.html b/ash/webui/shortcut_customization_ui/resources/shortcut_customization_shared_css.html index c84301a..e729b4a55d 100644 --- a/ash/webui/shortcut_customization_ui/resources/shortcut_customization_shared_css.html +++ b/ash/webui/shortcut_customization_ui/resources/shortcut_customization_shared_css.html
@@ -1,5 +1,5 @@ <link rel="stylesheet" - href="chrome://resources/chromeos/colors/cros_colors.generated.css"> + href="chrome://resources/chromeos/colors/cros_styles.css"> <link rel="stylesheet" href="chrome://resources/css/text_defaults_md.css"> <link rel="stylesheet" href="chrome://resources/css/md_colors.css"> <link rel="stylesheet" href="chrome://resources/cr_elements/md_select_css.html"> @@ -10,4 +10,4 @@ background-color: var(--cros-bg-color); } </style> -</template> \ No newline at end of file +</template>
diff --git a/ash/wm/window_cycle/window_cycle_list.cc b/ash/wm/window_cycle/window_cycle_list.cc index 34948b4..56e1e90 100644 --- a/ash/wm/window_cycle/window_cycle_list.cc +++ b/ash/wm/window_cycle/window_cycle_list.cc
@@ -578,7 +578,7 @@ target_window_ = nullptr; current_window_ = nullptr; defer_widget_bounds_update_ = false; - RemoveAllChildViews(true); + RemoveAllChildViews(); OnFlingEnd(); }
diff --git a/base/trace_event/common/trace_event_common.h b/base/trace_event/common/trace_event_common.h index e8a0de7..7639198 100644 --- a/base/trace_event/common/trace_event_common.h +++ b/base/trace_event/common/trace_event_common.h
@@ -392,12 +392,15 @@ TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, \ arg2_name, arg2_val) -// Similar to TRACE_EVENT_BEGINx but with a custom |at| timestamp provided. +// Similar to TRACE_EVENT_BEGINx but with a custom |timestamp| provided. // - |id| is used to match the _BEGIN event with the _END event. // Events are considered to match if their category_group, name and id values // all match. |id| must either be a pointer or an integer value up to 64 bits. // If it's a pointer, the bits will be xored with a hash of the process ID so // that the same pointer on two different processes will not collide. +// - |timestamp| must be non-null or it crashes. Use DCHECK(timestamp) before +// calling this to detect an invalid timestamp even when tracing is not +// enabled, as the commit queue doesn't run all tests with tracing enabled. #define TRACE_EVENT_BEGIN_WITH_ID_TID_AND_TIMESTAMP0(category_group, name, id, \ thread_id, timestamp) \ INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP( \ @@ -448,6 +451,10 @@ TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, \ arg2_name, arg2_val) +// Adds a trace event with the given |name| and |timestamp|. |timestamp| must be +// non-null or it crashes. Use DCHECK(timestamp) before calling this to detect +// an invalid timestamp even when tracing is not enabled, as the commit queue +// doesn't run all tests with tracing enabled. #define TRACE_EVENT_MARK_WITH_TIMESTAMP0(category_group, name, timestamp) \ INTERNAL_TRACE_EVENT_ADD_WITH_TIMESTAMP( \ TRACE_EVENT_PHASE_MARK, category_group, name, timestamp, \ @@ -478,12 +485,15 @@ TRACE_EVENT_PHASE_MARK, category_group, name, timestamp, \ TRACE_EVENT_FLAG_COPY) -// Similar to TRACE_EVENT_ENDx but with a custom |at| timestamp provided. +// Similar to TRACE_EVENT_ENDx but with a custom |timestamp| provided. // - |id| is used to match the _BEGIN event with the _END event. // Events are considered to match if their category_group, name and id values // all match. |id| must either be a pointer or an integer value up to 64 bits. // If it's a pointer, the bits will be xored with a hash of the process ID so // that the same pointer on two different processes will not collide. +// - |timestamp| must be non-null or it crashes. Use DCHECK(timestamp) before +// calling this to detect an invalid timestamp even when tracing is not +// enabled, as the commit queue doesn't run all tests with tracing enabled. #define TRACE_EVENT_END_WITH_ID_TID_AND_TIMESTAMP0(category_group, name, id, \ thread_id, timestamp) \ INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP( \ @@ -542,6 +552,9 @@ static_cast<int>(value2_val)) // Similar to TRACE_COUNTERx, but with a custom |timestamp| provided. +// - |timestamp| must be non-null or it crashes. Use DCHECK(timestamp) before +// calling this to detect an invalid timestamp even when tracing is not +// enabled, as the commit queue doesn't run all tests with tracing enabled. #define TRACE_COUNTER_WITH_TIMESTAMP1(category_group, name, timestamp, value) \ INTERNAL_TRACE_EVENT_ADD_WITH_TIMESTAMP( \ TRACE_EVENT_PHASE_COUNTER, category_group, name, timestamp, \
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn index 758d373..11bc5f54 100644 --- a/build/config/compiler/BUILD.gn +++ b/build/config/compiler/BUILD.gn
@@ -314,7 +314,6 @@ # .o files built with different compiler versions harder. if (!is_win || is_clang) { cflags += [ "-fno-ident" ] - asmflags += [ "-fno-ident" ] } # In general, Windows is totally different, but all the other builds share
diff --git a/chrome/OWNERS b/chrome/OWNERS index b51923cc..0749105 100644 --- a/chrome/OWNERS +++ b/chrome/OWNERS
@@ -33,3 +33,6 @@ per-file VERSION=chrome-official-brancher@chops-service-accounts.iam.gserviceaccount.com per-file VERSION=govind@chromium.org per-file VERSION=mmoss@chromium.org + +# Fuchsia integration owners: +per-file *fuchsia*=file://build/fuchsia/OWNERS
diff --git a/chrome/android/expectations/lint-suppressions.xml b/chrome/android/expectations/lint-suppressions.xml index 8563dc91..ff444a3 100644 --- a/chrome/android/expectations/lint-suppressions.xml +++ b/chrome/android/expectations/lint-suppressions.xml
@@ -133,6 +133,9 @@ <!-- The double dash in the following file is a command line flag. --> <ignore regexp="chrome/app/policy/android/values-v21/restriction_values.xml"/> </issue> + <issue id="TypographyEllipsis"> + <ignore regexp="chrome/browser/ui/android/strings/ui_strings_grd.resources.zip/values-uz/android_chrome_strings.xml"/> + </issue> <issue id="UnusedIds" severity="ignore"/> <issue id="UnusedQuantity" severity="ignore"/> <issue id="UnusedResources">
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninCheckerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninCheckerTest.java index 3b07b89..e07bd90 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninCheckerTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninCheckerTest.java
@@ -25,6 +25,7 @@ import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.CriteriaHelper; import org.chromium.base.test.util.DisableIf; +import org.chromium.base.test.util.FlakyTest; import org.chromium.base.test.util.UserActionTester; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeSwitches; @@ -84,6 +85,7 @@ @Test @MediumTest + @FlakyTest(message = "https://crbug.com/1205346") public void signinWhenPrimaryAccountIsRenamedToAKnownAccount() { mActivityTestRule.startMainActivityOnBlankPage(); mAccountManagerTestRule.addAccountAndWaitForSeeding("the.second.account@gmail.com"); @@ -105,6 +107,7 @@ @Test @MediumTest + @FlakyTest(message = "https://crbug.com/1205346") public void signoutWhenPrimaryAccountIsRenamedToAnUnknownAccount() { mActivityTestRule.startMainActivityOnBlankPage(); mAccountManagerTestRule.addAccountAndWaitForSeeding("the.second.account@gmail.com"); @@ -126,6 +129,7 @@ @Test @MediumTest + @FlakyTest(message = "https://crbug.com/1205346") public void signoutWhenPrimaryAccountIsRemoved() { mActivityTestRule.startMainActivityOnBlankPage(); mAccountManagerTestRule.addAccountAndWaitForSeeding("the.second.account@gmail.com"); @@ -144,6 +148,7 @@ @Test @MediumTest + @FlakyTest(message = "https://crbug.com/1205346") public void signoutWhenPrimaryAccountWithoutSyncConsentIsRemoved() { mActivityTestRule.startMainActivityOnBlankPage(); mAccountManagerTestRule.addAccountAndWaitForSeeding("the.second.account@gmail.com");
diff --git a/chrome/android/javatests/src/org/chromium/chrome/test/smoke/ChromeBundleSmokeTest.java b/chrome/android/javatests/src/org/chromium/chrome/test/smoke/ChromeBundleSmokeTest.java index ad40d5922..fd38604 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/test/smoke/ChromeBundleSmokeTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/test/smoke/ChromeBundleSmokeTest.java
@@ -20,6 +20,7 @@ import org.junit.runner.RunWith; import org.chromium.base.test.BaseJUnit4ClassRunner; +import org.chromium.base.test.util.FlakyTest; import org.chromium.chrome.test.pagecontroller.rules.ChromeUiApplicationTestRule; import org.chromium.chrome.test.pagecontroller.rules.ChromeUiAutomatorTestRule; import org.chromium.chrome.test.pagecontroller.utils.IUi2Locator; @@ -71,21 +72,25 @@ } @Test + @FlakyTest(message = "https://crbug.com/1236987, https://crbug.com/1236986") public void testModuleJavaCodeExecution() { runTestActivity(0); // Test case EXECUTE_JAVA. } @Test + @FlakyTest(message = "https://crbug.com/1236987, https://crbug.com/1236986") public void testModuleNativeCodeExecution() { runTestActivity(1); // Test case EXECUTE_NATIVE. } @Test + @FlakyTest(message = "https://crbug.com/1236987, https://crbug.com/1236986") public void testModuleJavaResourceLoading() { runTestActivity(2); // Test case LOAD_JAVA_RESOURCE. } @Test + @FlakyTest(message = "https://crbug.com/1236987, https://crbug.com/1236986") public void testModuleNativeResourceLoading() { runTestActivity(3); // Test case LOAD_NATIVE_RESOURCE. }
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/ui/AppLaunchDrawBlockerUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/ui/AppLaunchDrawBlockerUnitTest.java index 822cfbd..b8b35ee 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/ui/AppLaunchDrawBlockerUnitTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/ui/AppLaunchDrawBlockerUnitTest.java
@@ -75,6 +75,8 @@ public JniMocker mJniMocker = new JniMocker(); @Rule public TestRule mProcessor = new Features.JUnitProcessor(); + @Rule + public TestRule mCommandLineFlagsRule = CommandLineFlags.getTestRule(); @Mock private ActivityLifecycleDispatcher mActivityLifecycleDispatcher;
diff --git a/chrome/android/profiles/newest.txt b/chrome/android/profiles/newest.txt index 1b81701..18aa9cb4 100644 --- a/chrome/android/profiles/newest.txt +++ b/chrome/android/profiles/newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-93.0.4577.25_rc-r1-merged.afdo.bz2 +chromeos-chrome-amd64-93.0.4577.27_rc-r1-merged.afdo.bz2
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index 86cf864..002b0267 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -2479,7 +2479,7 @@ sources += [ "net/net_error_diagnostics_dialog_stub.cc" ] } - if (is_posix) { + if (is_posix || is_fuchsia) { sources += [ "download/trusted_sources_manager_posix.cc", "google/google_update_settings_posix.cc", @@ -5354,7 +5354,7 @@ ] } - if (is_linux || is_win || is_mac) { + if (is_linux || is_win || is_mac || is_fuchsia) { sources += [ "enterprise/connectors/device_trust/attestation_service.cc", "enterprise/connectors/device_trust/attestation_service.h", @@ -5467,10 +5467,17 @@ "first_run/first_run_internal_fuchsia.cc", "first_run/upgrade_util_fuchsia.cc", "icon_loader_fuchsia.cc", + "importer/firefox_profile_lock_fuchsia.cc", "media/webrtc/window_icon_util_fuchsia.cc", "memory_details_fuchsia.cc", "obsolete_system/obsolete_system_stub.cc", + "platform_util_fuchsia.cc", + "policy/browser_dm_token_storage_fuchsia.cc", + "policy/browser_dm_token_storage_fuchsia.h", + "process_singleton_fuchsia.cc", "shell_integration_fuchsia.cc", + "upgrade_detector/get_installed_version_fuchsia.cc", + "upgrade_detector/installed_version_monitor_fuchsia.cc", ] } @@ -5500,12 +5507,14 @@ sources += [ "hang_monitor/hang_crash_dump.cc" ] } - if (is_win || is_linux || is_chromeos) { + if (is_win || is_linux || is_chromeos || is_fuchsia) { sources += [ "renderer_context_menu/spelling_options_submenu_observer.cc", "renderer_context_menu/spelling_options_submenu_observer.h", ] + } + if (is_win || is_linux || is_chromeos) { # TODO(crbug/1229334): Add Mac support for Lens Region Search feature. deps += [ "//chrome/browser/lens/region_search" ] } @@ -5519,7 +5528,7 @@ ] } - if (is_win || is_mac || (is_linux || is_chromeos_lacros)) { + if (is_win || is_mac || (is_linux || is_chromeos_lacros) || is_fuchsia) { sources += [ "browser_switcher/alternative_browser_driver.h", "browser_switcher/browser_switcher_navigation_throttle.cc", @@ -5645,7 +5654,7 @@ ] } - if (is_win || is_mac || is_linux || is_chromeos) { + if (is_win || is_mac || is_linux || is_chromeos || is_fuchsia) { sources += [ "media/cast_mirroring_service_host.cc", "media/cast_mirroring_service_host.h", @@ -6884,6 +6893,7 @@ ] if (enable_plugins) { + assert(!is_fuchsia) if (is_chromeos_ash) { inputs = [ "resources/plugin_metadata/plugins_chromeos.json" ] } @@ -6898,7 +6908,7 @@ } } - if (is_win || is_mac || is_linux || is_chromeos) { + if (is_win || is_mac || is_linux || is_chromeos || is_fuchsia) { deps += [ "//chrome/browser/resources/discards:discards_resources_gen", "//chrome/browser/resources/gaia_auth_host:modulize", @@ -7230,8 +7240,6 @@ "ash/policy/core/device_policy_builder.h", "ash/policy/core/fake_device_cloud_policy_manager.cc", "ash/policy/core/fake_device_cloud_policy_manager.h", - "ash/policy/enrollment/fake_device_cloud_policy_initializer.cc", - "ash/policy/enrollment/fake_device_cloud_policy_initializer.h", "ash/policy/external_data/cloud_external_data_manager_base_test_util.cc", "ash/policy/external_data/cloud_external_data_manager_base_test_util.h", "chromeos/net/network_portal_detector_test_utils.cc",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index c35f6bf..401b764 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -7661,6 +7661,10 @@ kOsAll, FEATURE_VALUE_TYPE(net::features::kSamePartyCookiesConsideredFirstParty)}, + {"partitioned-cookies", flag_descriptions::kPartitionedCookiesName, + flag_descriptions::kPartitionedCookiesDescription, kOsDesktop | kOsAndroid, + FEATURE_VALUE_TYPE(net::features::kPartitionedCookies)}, + #if BUILDFLAG(IS_CHROMEOS_ASH) {kBorealisDiskManagementInternalName, flag_descriptions::kBorealisDiskManagementName,
diff --git a/chrome/browser/app_controller_mac.h b/chrome/browser/app_controller_mac.h index 89b73ab..c7126aa 100644 --- a/chrome/browser/app_controller_mac.h +++ b/chrome/browser/app_controller_mac.h
@@ -188,7 +188,7 @@ // may have changed. This can cause a rebuild of the user-data menus. This is a // no-op if the new profile is the same as the current one. This can be either // the original or the incognito profile. -- (void)windowChangedToProfile:(Profile*)profile; +- (void)setLastProfile:(Profile*)profile; // Certain NSMenuItems [Close Tab and Close Window] have different // keyEquivalents depending on context. This must be invoked in two locations:
diff --git a/chrome/browser/app_controller_mac.mm b/chrome/browser/app_controller_mac.mm index 29661d1..aa9a952c 100644 --- a/chrome/browser/app_controller_mac.mm +++ b/chrome/browser/app_controller_mac.mm
@@ -382,7 +382,6 @@ - (BOOL)shouldQuitWithInProgressDownloads; - (void)profileWasRemoved:(const base::FilePath&)profilePath forIncognito:(bool)isIncognito; -- (void)setLastProfile:(Profile*)profile; // This class cannot open urls until startup has finished. The urls that cannot // be opened are cached in |startupUrls_|. This method must be called exactly @@ -579,11 +578,6 @@ selector:@selector(windowDidBecomeMain:) name:NSWindowDidBecomeMainNotification object:nil]; - [notificationCenter - addObserver:self - selector:@selector(windowDidResignMain:) - name:NSWindowDidResignMainNotification - object:nil]; // Register for space change notifications. [[[NSWorkspace sharedWorkspace] notificationCenter] @@ -734,17 +728,14 @@ // browsers get dealloc'd, it will stop the RunLoop and fall back into main(). _keep_alive.reset(); - // Reset all pref watching, as this object outlives the prefs system. - _profilePrefRegistrar.reset(); + // Reset local state watching, as this object outlives the prefs system. _localPrefRegistrar.RemoveAll(); // It's safe to delete |_lastProfile| now. [self setLastProfile:nullptr]; [self unregisterEventHandlers]; - _appShimMenuController.reset(); - _profileBookmarkMenuBridgeMap.clear(); } @@ -825,14 +816,7 @@ features::kUpdateHistoryEntryPointsInIncognito)) { profile = profile->GetOriginalProfile(); } - [self windowChangedToProfile:profile]; -} - -- (void)windowDidResignMain:(NSNotification*)notify { - if (_lastProfile && chrome::GetTotalBrowserCount() == 0 && - [self isProfileReady]) { - [self windowChangedToProfile:_lastProfile]; - } + [self setLastProfile:profile]; } - (void)activeSpaceDidChange:(NSNotification*)notify { @@ -1113,17 +1097,13 @@ // |lastProfile_| might be null. if (!_lastProfile || (profilePath == _lastProfile->GetPath() && isOffTheRecord == _lastProfile->IsOffTheRecord())) { - // Force windowChangedToProfile: to set the lastProfile_ and also update the - // relevant menuBridge objects. - [self setLastProfile:nullptr]; + Profile* last_used_profile = nullptr; auto* profile_manager = g_browser_process->profile_manager(); if (profile_manager) { // |profile_manager| is null in browser tests during shutdown. - Profile* last_used_profile = - profile_manager->GetLastUsedProfileIfLoaded(); - if (last_used_profile) - [self windowChangedToProfile:last_used_profile]; + last_used_profile = profile_manager->GetLastUsedProfileIfLoaded(); } + [self setLastProfile:last_used_profile]; } _profileBookmarkMenuBridgeMap.erase(profilePath); @@ -1734,33 +1714,14 @@ if (profile == _lastProfile) return; - if (profile == nullptr) { - _lastProfile = nullptr; - _lastProfileKeepAlive.reset(); - return; - } - - _lastProfile = profile; - if (profile->IsOffTheRecord()) { - _lastProfileKeepAlive.reset(); - } else { - _lastProfileKeepAlive = std::make_unique<ScopedProfileKeepAlive>( - _lastProfile, ProfileKeepAliveOrigin::kAppControllerMac); - } -} - -- (void)windowChangedToProfile:(Profile*)profile { - if (_lastProfile == profile) - return; - // Before tearing down the menu controller bridges, return the history menu to // its initial state. if (_historyMenuBridge) _historyMenuBridge->ResetMenu(); + _historyMenuBridge.reset(); - // Clear the profile pref registrar before tearing down. - if (_profilePrefRegistrar) - _profilePrefRegistrar->RemoveAll(); + _profilePrefRegistrar.reset(); + _lastProfileKeepAlive.reset(); // Rebuild the menus with the new profile. The bookmarks submenu is cached to // avoid slowdowns when switching between profiles with large numbers of @@ -1772,7 +1733,16 @@ NSMenuItem* bookmarkItem = [[NSApp mainMenu] itemWithTag:IDC_BOOKMARKS_MENU]; BOOL hidden = [bookmarkItem isHidden]; [bookmarkItem setHidden:NO]; - [self setLastProfile:profile]; + + _lastProfile = profile; + + if (_lastProfile == nullptr) + return; + + if (!profile->IsOffTheRecord()) { + _lastProfileKeepAlive = std::make_unique<ScopedProfileKeepAlive>( + _lastProfile, ProfileKeepAliveOrigin::kAppControllerMac); + } auto& entry = _profileBookmarkMenuBridgeMap[profile->GetPath()]; if (!entry) { @@ -2011,7 +1981,7 @@ if (status == Profile::CREATE_STATUS_INITIALIZED) { AppController* controller = base::mac::ObjCCastStrict<AppController>([NSApp delegate]); - [controller windowChangedToProfile:profile]; + [controller setLastProfile:profile]; } }
diff --git a/chrome/browser/app_controller_mac_browsertest.mm b/chrome/browser/app_controller_mac_browsertest.mm index f7179bd..600bc8c 100644 --- a/chrome/browser/app_controller_mac_browsertest.mm +++ b/chrome/browser/app_controller_mac_browsertest.mm
@@ -244,6 +244,66 @@ // Let the run loop get flushed, during process cleanup and try not to crash. } +// Regression test for https://crbug.com/1236073 +IN_PROC_BROWSER_TEST_F(AppControllerBrowserTest, DeleteEphemeralProfile) { + EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); + Profile* profile = browser()->profile(); + // Activate the first profile. + [[NSNotificationCenter defaultCenter] + postNotificationName:NSWindowDidBecomeMainNotification + object:browser() + ->window() + ->GetNativeWindow() + .GetNativeNSWindow()]; + AppController* ac = base::mac::ObjCCast<AppController>( + [[NSApplication sharedApplication] delegate]); + ASSERT_TRUE(ac); + ASSERT_EQ(profile, [ac lastProfile]); + + // Mark the profile as ephemeral. + profile->GetPrefs()->SetBoolean(prefs::kForceEphemeralProfiles, true); + ProfileManager* profile_manager = g_browser_process->profile_manager(); + ProfileAttributesStorage& storage = + profile_manager->GetProfileAttributesStorage(); + ProfileAttributesEntry* entry = + storage.GetProfileAttributesWithPath(profile->GetPath()); + EXPECT_TRUE(entry->IsEphemeral()); + + // Add sentinel data to observe profile destruction. Ephemeral profiles are + // destroyed immediately upon browser close. + class ProfileDestroyedData : public base::SupportsUserData::Data { + public: + ProfileDestroyedData(base::OnceClosure callback) + : callback_(std::move(callback)) {} + + ~ProfileDestroyedData() override { std::move(callback_).Run(); } + + private: + base::OnceClosure callback_; + }; + base::RunLoop loop; + const char kUserDataKey = 0; + profile->SetUserData(&kUserDataKey, std::make_unique<ProfileDestroyedData>( + loop.QuitClosure())); + + // Close browser and wait for the profile to be deleted. + CloseBrowserSynchronously(browser()); + loop.Run(); + EXPECT_EQ(0u, chrome::GetTotalBrowserCount()); + + // Create a new profile and activate it. + Profile* profile2 = CreateAndWaitForProfile( + profile_manager->user_data_dir().AppendASCII("Profile 2")); + Browser* browser2 = CreateBrowser(profile2); + // This should not crash. + [[NSNotificationCenter defaultCenter] + postNotificationName:NSWindowDidBecomeMainNotification + object:browser2->window() + ->GetNativeWindow() + .GetNativeNSWindow()]; + ASSERT_EQ(profile2, [ac lastProfile]); +} + class AppControllerKeepAliveBrowserTest : public InProcessBrowserTest { protected: AppControllerKeepAliveBrowserTest() { @@ -270,7 +330,7 @@ Profile* profile1 = browser()->profile(); Profile* profile2 = CreateAndWaitForProfile( profile_manager->user_data_dir().AppendASCII("Profile 2")); - [ac windowChangedToProfile:profile1]; + [ac setLastProfile:profile1]; ASSERT_EQ(profile1, [ac lastProfile]); // |profile1| is active. @@ -281,7 +341,7 @@ profile2, ProfileKeepAliveOrigin::kAppControllerMac)); // Make |profile2| active. - [ac windowChangedToProfile:profile2]; + [ac setLastProfile:profile2]; ASSERT_EQ(profile2, [ac lastProfile]); base::RunLoop().RunUntilIdle(); EXPECT_FALSE(profile_manager->HasKeepAliveForTesting( @@ -813,12 +873,12 @@ ASSERT_TRUE(profile2); // Load profile1's History Service backend so it will be assigned to the - // HistoryMenuBridge when windowChangedToProfile is called, or else this test - // will fail flaky. + // HistoryMenuBridge when setLastProfile is called, or else this test will + // fail flaky. ui_test_utils::WaitForHistoryToLoad(HistoryServiceFactory::GetForProfile( profile1, ServiceAccessType::EXPLICIT_ACCESS)); // Switch the controller to profile1. - [ac windowChangedToProfile:profile1]; + [ac setLastProfile:profile1]; base::RunLoop().RunUntilIdle(); // Verify the controller's History Menu corresponds to profile1. @@ -828,13 +888,13 @@ ServiceAccessType::EXPLICIT_ACCESS)); // Load profile2's History Service backend so it will be assigned to the - // HistoryMenuBridge when windowChangedToProfile is called, or else this test - // will fail flaky. + // HistoryMenuBridge when setLastProfile is called, or else this test will + // fail flaky. ui_test_utils::WaitForHistoryToLoad( HistoryServiceFactory::GetForProfile(profile2, ServiceAccessType::EXPLICIT_ACCESS)); // Switch the controller to profile2. - [ac windowChangedToProfile:profile2]; + [ac setLastProfile:profile2]; base::RunLoop().RunUntilIdle(); // Verify the controller's History Menu has changed. @@ -891,7 +951,7 @@ BookmarkModelFactory::GetForBrowserContext(profile2_ptr)); // Switch to profile 1, create bookmark 1 and force the menu to build. - [ac windowChangedToProfile:profile1]; + [ac setLastProfile:profile1]; [ac bookmarkMenuBridge]->GetBookmarkModel()->AddURL( [ac bookmarkMenuBridge]->GetBookmarkModel()->bookmark_bar_node(), 0, title1, url1); @@ -899,7 +959,7 @@ [[profile1_submenu delegate] menuNeedsUpdate:profile1_submenu]; // Switch to profile 2, create bookmark 2 and force the menu to build. - [ac windowChangedToProfile:profile2_ptr]; + [ac setLastProfile:profile2_ptr]; [ac bookmarkMenuBridge]->GetBookmarkModel()->AddURL( [ac bookmarkMenuBridge]->GetBookmarkModel()->bookmark_bar_node(), 0, title2, url2); @@ -914,7 +974,7 @@ SysUTF16ToNSString(title2)]); // Switch *back* to profile 1 and *don't* force the menu to build. - [ac windowChangedToProfile:profile1]; + [ac setLastProfile:profile1]; // Test that only bookmark 1 is shown in the restored menu. EXPECT_TRUE([[ac bookmarkMenuBridge]->BookmarkMenu() itemWithTitle:
diff --git a/chrome/browser/ash/DEPS b/chrome/browser/ash/DEPS index f3adabc..b2aff39 100644 --- a/chrome/browser/ash/DEPS +++ b/chrome/browser/ash/DEPS
@@ -23,6 +23,7 @@ "+media/base/media_switches.h", # For media command line switches. "+media/mojo/mojom", # For platform verification mojom interface. "+remoting/host/it2me", # For CRD host in remote command + "+remoting/protocol", # For CRD host in remote command "+services/device/public", "+services/metrics/public", "+services/network",
diff --git a/chrome/browser/ash/file_manager/file_manager_browsertest.cc b/chrome/browser/ash/file_manager/file_manager_browsertest.cc index 93e2691..820362c 100644 --- a/chrome/browser/ash/file_manager/file_manager_browsertest.cc +++ b/chrome/browser/ash/file_manager/file_manager_browsertest.cc
@@ -895,12 +895,10 @@ TestCase("tabindexOpenDialogDownloads").WithBrowser(), TestCase("tabindexOpenDialogDownloads").WithBrowser().InGuestMode() // TODO(crbug.com/1236842): Remove flakiness and enable this test. -#if !defined(ADDRESS_SANITIZER) && defined(NDEBUG) - , - TestCase("tabindexSaveFileDialogDrive").WithBrowser(), - TestCase("tabindexSaveFileDialogDownloads").WithBrowser(), - TestCase("tabindexSaveFileDialogDownloads").WithBrowser().InGuestMode() -#endif +// , +// TestCase("tabindexSaveFileDialogDrive").WithBrowser(), +// TestCase("tabindexSaveFileDialogDownloads").WithBrowser(), +// TestCase("tabindexSaveFileDialogDownloads").WithBrowser().InGuestMode() )); WRAPPED_INSTANTIATE_TEST_SUITE_P(
diff --git a/chrome/browser/ash/input_method/ui/candidate_window_view.cc b/chrome/browser/ash/input_method/ui/candidate_window_view.cc index 17277b9..c56d791 100644 --- a/chrome/browser/ash/input_method/ui/candidate_window_view.cc +++ b/chrome/browser/ash/input_method/ui/candidate_window_view.cc
@@ -388,7 +388,7 @@ // Reset all candidate_views_ when orientation changes. if (orientation != candidate_window_.orientation()) { - candidate_area_->RemoveAllChildViews(true); + candidate_area_->RemoveAllChildViews(); candidate_views_.clear(); }
diff --git a/chrome/browser/ash/login/demo_mode/demo_setup_test_utils.cc b/chrome/browser/ash/login/demo_mode/demo_setup_test_utils.cc index 6a4f34a3..fa50e544 100644 --- a/chrome/browser/ash/login/demo_mode/demo_setup_test_utils.cc +++ b/chrome/browser/ash/login/demo_mode/demo_setup_test_utils.cc
@@ -6,6 +6,7 @@ #include "base/files/file_path.h" #include "base/files/file_util.h" +#include "base/logging.h" #include "base/threading/thread_restrictions.h" #include "components/policy/proto/device_management_backend.pb.h"
diff --git a/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper.h b/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper.h index 81fb706..de87e49 100644 --- a/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper.h +++ b/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper.h
@@ -11,7 +11,6 @@ #include "base/callback_forward.h" #include "base/macros.h" -#include "chrome/browser/ash/policy/enrollment/device_cloud_policy_initializer.h" #include "components/policy/core/common/cloud/cloud_policy_constants.h" class GoogleServiceAuthError; @@ -30,9 +29,6 @@ // that are not longer needed. class EnterpriseEnrollmentHelper { public: - using EnrollmentCallback = - policy::DeviceCloudPolicyInitializer::EnrollmentCallback; - // Enumeration of the possible errors that can occur during enrollment which // are not covered by GoogleServiceAuthError or EnrollmentStatus. enum OtherError {
diff --git a/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper_mock.h b/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper_mock.h index 198192cd..4765de0 100644 --- a/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper_mock.h +++ b/chrome/browser/ash/login/enrollment/enterprise_enrollment_helper_mock.h
@@ -7,6 +7,8 @@ #include <string> +#include "base/callback.h" +#include "base/callback_forward.h" #include "chrome/browser/ash/login/enrollment/enterprise_enrollment_helper.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/chrome/browser/ash/policy/core/browser_policy_connector_ash.cc b/chrome/browser/ash/policy/core/browser_policy_connector_ash.cc index 5e3afc8..d5b0abb4 100644 --- a/chrome/browser/ash/policy/core/browser_policy_connector_ash.cc +++ b/chrome/browser/ash/policy/core/browser_policy_connector_ash.cc
@@ -484,11 +484,6 @@ return global_user_cloud_policy_provider_; } -void BrowserPolicyConnectorAsh::SetDeviceCloudPolicyInitializerForTesting( - std::unique_ptr<DeviceCloudPolicyInitializer> initializer) { - device_cloud_policy_initializer_ = std::move(initializer); -} - // static void BrowserPolicyConnectorAsh::RegisterPrefs(PrefRegistrySimple* registry) { registry->RegisterIntegerPref(
diff --git a/chrome/browser/ash/policy/core/browser_policy_connector_ash.h b/chrome/browser/ash/policy/core/browser_policy_connector_ash.h index cdfad69..4cf2de5b 100644 --- a/chrome/browser/ash/policy/core/browser_policy_connector_ash.h +++ b/chrome/browser/ash/policy/core/browser_policy_connector_ash.h
@@ -225,10 +225,6 @@ // [2] i.e. g_browser_process->local_state() ProxyPolicyProvider* GetGlobalUserCloudPolicyProvider(); - // Sets the device cloud policy initializer for testing. - void SetDeviceCloudPolicyInitializerForTesting( - std::unique_ptr<DeviceCloudPolicyInitializer> initializer); - // Registers device refresh rate pref. static void RegisterPrefs(PrefRegistrySimple* registry);
diff --git a/chrome/browser/ash/policy/core/device_cloud_policy_client_factory_ash.cc b/chrome/browser/ash/policy/core/device_cloud_policy_client_factory_ash.cc index 00798fe8..59f68e51 100644 --- a/chrome/browser/ash/policy/core/device_cloud_policy_client_factory_ash.cc +++ b/chrome/browser/ash/policy/core/device_cloud_policy_client_factory_ash.cc
@@ -11,7 +11,6 @@ #include "base/memory/weak_ptr.h" #include "base/strings/string_util.h" #include "chromeos/system/statistics_provider.h" -#include "components/policy/core/common/cloud/signing_service.h" #include "services/network/public/cpp/shared_url_loader_factory.h" namespace { @@ -83,7 +82,6 @@ // static std::unique_ptr<CloudPolicyClient> CreateDeviceCloudPolicyClientAsh( chromeos::system::StatisticsProvider* statistics_provider, - SigningService* signing_service, DeviceManagementService* service, scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, CloudPolicyClient::DeviceDMTokenCallback device_dm_token_callback) { @@ -93,8 +91,8 @@ GetAttestedDeviceId(statistics_provider), GetEthernetMacAddress(statistics_provider), GetDockMacAddress(statistics_provider), - GetManufactureDate(statistics_provider), signing_service, service, - url_loader_factory, std::move(device_dm_token_callback)); + GetManufactureDate(statistics_provider), service, url_loader_factory, + std::move(device_dm_token_callback)); } } // namespace policy
diff --git a/chrome/browser/ash/policy/core/device_cloud_policy_client_factory_ash.h b/chrome/browser/ash/policy/core/device_cloud_policy_client_factory_ash.h index bcd105e..ac91300 100644 --- a/chrome/browser/ash/policy/core/device_cloud_policy_client_factory_ash.h +++ b/chrome/browser/ash/policy/core/device_cloud_policy_client_factory_ash.h
@@ -23,16 +23,14 @@ namespace policy { class DeviceManagementService; -class SigningService; // Creates a CloudPolicyClient specific to the device level policies in Ash. // Returned client can be used to connect |DeviceCloudPolicyManagerAsh|. // |statistics_provider| is used to retrieve machine identity (machine id, -// model, brand code etc.). |signing_service|, |service|, |url_loader_factory| -// and |device_dm_token_callback| are passed to the client as are. +// model, brand code etc.). |service|, |url_loader_factory| and +// |device_dm_token_callback| are passed to the client as are. std::unique_ptr<CloudPolicyClient> CreateDeviceCloudPolicyClientAsh( chromeos::system::StatisticsProvider* statistics_provider, - SigningService* signing_service, DeviceManagementService* service, scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, CloudPolicyClient::DeviceDMTokenCallback device_dm_token_callback);
diff --git a/chrome/browser/ash/policy/enrollment/device_cloud_policy_initializer.cc b/chrome/browser/ash/policy/enrollment/device_cloud_policy_initializer.cc index 1a5e6b6..95686bb 100644 --- a/chrome/browser/ash/policy/enrollment/device_cloud_policy_initializer.cc +++ b/chrome/browser/ash/policy/enrollment/device_cloud_policy_initializer.cc
@@ -114,9 +114,10 @@ enrollment_handler_ = std::make_unique<EnrollmentHandler>( policy_store_, install_attributes_, state_keys_broker_, - attestation_flow_.get(), CreateClient(device_management_service), - background_task_runner_, ad_join_delegate, enrollment_config, - std::move(dm_auth), install_attributes_->GetDeviceId(), + attestation_flow_.get(), signing_service_.get(), + CreateClient(device_management_service), background_task_runner_, + ad_join_delegate, enrollment_config, std::move(dm_auth), + install_attributes_->GetDeviceId(), EnrollmentRequisitionManager::GetDeviceRequisition(), EnrollmentRequisitionManager::GetSubOrganization(), base::BindOnce(&DeviceCloudPolicyInitializer::EnrollmentCompleted, @@ -310,7 +311,7 @@ // DeviceDMToken callback is empty here because for device policies this // DMToken is already provided in the policy fetch requests. return CreateDeviceCloudPolicyClientAsh( - statistics_provider_, signing_service_.get(), device_management_service, + statistics_provider_, device_management_service, system_url_loader_factory_for_testing_ ? system_url_loader_factory_for_testing_ : g_browser_process->shared_url_loader_factory(),
diff --git a/chrome/browser/ash/policy/enrollment/enrollment_handler.cc b/chrome/browser/ash/policy/enrollment/enrollment_handler.cc index 6c25ba7..37814f9 100644 --- a/chrome/browser/ash/policy/enrollment/enrollment_handler.cc +++ b/chrome/browser/ash/policy/enrollment/enrollment_handler.cc
@@ -34,6 +34,7 @@ #include "chromeos/dbus/dbus_thread_manager.h" #include "chromeos/dbus/upstart/upstart_client.h" #include "components/policy/core/common/cloud/dm_auth.h" +#include "components/policy/core/common/cloud/signing_service.h" #include "components/policy/proto/chrome_device_policy.pb.h" #include "components/policy/proto/device_management_backend.pb.h" #include "components/prefs/pref_service.h" @@ -221,6 +222,7 @@ chromeos::InstallAttributes* install_attributes, ServerBackedStateKeysBroker* state_keys_broker, chromeos::attestation::AttestationFlow* attestation_flow, + SigningService* signing_service, std::unique_ptr<CloudPolicyClient> client, scoped_refptr<base::SequencedTaskRunner> background_task_runner, ActiveDirectoryJoinDelegate* ad_join_delegate, @@ -234,6 +236,7 @@ install_attributes_(install_attributes), state_keys_broker_(state_keys_broker), attestation_flow_(attestation_flow), + signing_service_(signing_service), client_(std::move(client)), background_task_runner_(background_task_runner), ad_join_delegate_(ad_join_delegate), @@ -485,7 +488,7 @@ if (status == chromeos::attestation::ATTESTATION_SUCCESS) { client_->RegisterWithCertificate(*register_params_, client_id_, dm_auth_.Clone(), pem_certificate_chain, - sub_organization_); + sub_organization_, signing_service_); } else { ReportResult(EnrollmentStatus::ForStatus( EnrollmentStatus::REGISTRATION_CERT_FETCH_FAILED));
diff --git a/chrome/browser/ash/policy/enrollment/enrollment_handler.h b/chrome/browser/ash/policy/enrollment/enrollment_handler.h index 9b1e4d6..ed6842d 100644 --- a/chrome/browser/ash/policy/enrollment/enrollment_handler.h +++ b/chrome/browser/ash/policy/enrollment/enrollment_handler.h
@@ -8,12 +8,13 @@ #include <memory> #include <string> +#include "base/callback.h" +#include "base/callback_forward.h" #include "base/compiler_specific.h" #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "chrome/browser/ash/policy/core/device_cloud_policy_validator.h" -#include "chrome/browser/ash/policy/enrollment/device_cloud_policy_initializer.h" #include "chrome/browser/ash/policy/enrollment/enrollment_config.h" #include "chrome/browser/policy/device_account_initializer.h" #include "chromeos/dbus/authpolicy/authpolicy_client.h" @@ -42,7 +43,9 @@ class ActiveDirectoryJoinDelegate; class DeviceCloudPolicyStoreAsh; class DMTokenStorage; +class EnrollmentStatus; class ServerBackedStateKeysBroker; +class SigningService; // Implements the logic that establishes enterprise enrollment for Chromium OS // devices. The process is as follows: @@ -59,7 +62,7 @@ public CloudPolicyStore::Observer, public DeviceAccountInitializer::Delegate { public: - using EnrollmentCallback = DeviceCloudPolicyInitializer::EnrollmentCallback; + using EnrollmentCallback = base::OnceCallback<void(EnrollmentStatus)>; // |store| and |install_attributes| must remain valid for the life time of the // enrollment handler. @@ -68,6 +71,7 @@ chromeos::InstallAttributes* install_attributes, ServerBackedStateKeysBroker* state_keys_broker, chromeos::attestation::AttestationFlow* attestation_flow, + SigningService* signing_service, std::unique_ptr<CloudPolicyClient> client, scoped_refptr<base::SequencedTaskRunner> background_task_runner, ActiveDirectoryJoinDelegate* ad_join_delegate, @@ -210,6 +214,7 @@ chromeos::InstallAttributes* install_attributes_; ServerBackedStateKeysBroker* state_keys_broker_; chromeos::attestation::AttestationFlow* attestation_flow_; + SigningService* signing_service_; std::unique_ptr<CloudPolicyClient> client_; scoped_refptr<base::SequencedTaskRunner> background_task_runner_; ActiveDirectoryJoinDelegate* ad_join_delegate_ = nullptr;
diff --git a/chrome/browser/ash/policy/enrollment/fake_device_cloud_policy_initializer.cc b/chrome/browser/ash/policy/enrollment/fake_device_cloud_policy_initializer.cc deleted file mode 100644 index 30785759..0000000 --- a/chrome/browser/ash/policy/enrollment/fake_device_cloud_policy_initializer.cc +++ /dev/null
@@ -1,54 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/ash/policy/enrollment/fake_device_cloud_policy_initializer.h" - -#include <memory> - -#include "base/memory/ref_counted.h" -#include "base/sequenced_task_runner.h" -#include "chromeos/attestation/mock_attestation_flow.h" -#include "components/policy/core/common/cloud/device_management_service.h" -#include "components/policy/core/common/cloud/dm_auth.h" - -namespace policy { - -FakeDeviceCloudPolicyInitializer::FakeDeviceCloudPolicyInitializer() - : DeviceCloudPolicyInitializer( - nullptr, // local_state - nullptr, // enterprise_service - // background_task_runner - scoped_refptr<base::SequencedTaskRunner>(nullptr), - nullptr, // install_attributes - nullptr, // state_keys_broker - nullptr, // device_store - nullptr, // policy_manager - std::make_unique<chromeos::attestation::MockAttestationFlow>(), - nullptr), // statistics_provider - was_start_enrollment_called_(false), - enrollment_status_( - EnrollmentStatus::ForStatus(EnrollmentStatus::SUCCESS)) {} - -FakeDeviceCloudPolicyInitializer::~FakeDeviceCloudPolicyInitializer() = default; - -void FakeDeviceCloudPolicyInitializer::Init() {} - -void FakeDeviceCloudPolicyInitializer::Shutdown() {} - -void FakeDeviceCloudPolicyInitializer::PrepareEnrollment( - DeviceManagementService* device_management_service, - ActiveDirectoryJoinDelegate* ad_join_delegate, - const EnrollmentConfig& enrollment_config, - DMAuth auth, - EnrollmentCallback enrollment_callback) { - enrollment_callback_ = std::move(enrollment_callback); -} - -void FakeDeviceCloudPolicyInitializer::StartEnrollment() { - if (enrollment_callback_) - std::move(enrollment_callback_).Run(enrollment_status_); - was_start_enrollment_called_ = true; -} - -} // namespace policy
diff --git a/chrome/browser/ash/policy/enrollment/fake_device_cloud_policy_initializer.h b/chrome/browser/ash/policy/enrollment/fake_device_cloud_policy_initializer.h deleted file mode 100644 index f073122c..0000000 --- a/chrome/browser/ash/policy/enrollment/fake_device_cloud_policy_initializer.h +++ /dev/null
@@ -1,53 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_ASH_POLICY_ENROLLMENT_FAKE_DEVICE_CLOUD_POLICY_INITIALIZER_H_ -#define CHROME_BROWSER_ASH_POLICY_ENROLLMENT_FAKE_DEVICE_CLOUD_POLICY_INITIALIZER_H_ - -#include "base/compiler_specific.h" -#include "base/macros.h" -#include "chrome/browser/ash/policy/enrollment/device_cloud_policy_initializer.h" -#include "chrome/browser/policy/enrollment_status.h" -#include "components/policy/core/common/cloud/cloud_policy_constants.h" -#include "components/policy/core/common/cloud/dm_auth.h" - -namespace policy { - -class DeviceManagementService; - -class FakeDeviceCloudPolicyInitializer : public DeviceCloudPolicyInitializer { - public: - FakeDeviceCloudPolicyInitializer(); - ~FakeDeviceCloudPolicyInitializer() override; - - void Init() override; - void Shutdown() override; - - void PrepareEnrollment(DeviceManagementService* device_management_service, - ActiveDirectoryJoinDelegate* ad_join_delegate, - const EnrollmentConfig& enrollment_config, - DMAuth auth, - EnrollmentCallback enrollment_callback) override; - - void StartEnrollment() override; - - bool was_start_enrollment_called() const { - return was_start_enrollment_called_; - } - - void set_enrollment_status(EnrollmentStatus status) { - enrollment_status_ = status; - } - - private: - bool was_start_enrollment_called_; - EnrollmentStatus enrollment_status_; - EnrollmentCallback enrollment_callback_; - - DISALLOW_COPY_AND_ASSIGN(FakeDeviceCloudPolicyInitializer); -}; - -} // namespace policy - -#endif // CHROME_BROWSER_ASH_POLICY_ENROLLMENT_FAKE_DEVICE_CLOUD_POLICY_INITIALIZER_H_
diff --git a/chrome/browser/ash/policy/remote_commands/crd_connection_observer.h b/chrome/browser/ash/policy/remote_commands/crd_connection_observer.h new file mode 100644 index 0000000..1868c9c --- /dev/null +++ b/chrome/browser/ash/policy/remote_commands/crd_connection_observer.h
@@ -0,0 +1,27 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_ASH_POLICY_REMOTE_COMMANDS_CRD_CONNECTION_OBSERVER_H_ +#define CHROME_BROWSER_ASH_POLICY_REMOTE_COMMANDS_CRD_CONNECTION_OBSERVER_H_ + +#include "base/observer_list_types.h" +namespace policy { + +// Observer that will be informed when a CRD connection is established, or +// fails to be established. +class CrdConnectionObserver : public base::CheckedObserver { + public: + CrdConnectionObserver() = default; + ~CrdConnectionObserver() override = default; + + // Called when the host user rejects the CRD connection. + virtual void OnConnectionRejected() = 0; + + // Called when the CRD connection was successfully opened. + virtual void OnConnectionEstablished() = 0; +}; + +} // namespace policy + +#endif // CHROME_BROWSER_ASH_POLICY_REMOTE_COMMANDS_CRD_CONNECTION_OBSERVER_H_
diff --git a/chrome/browser/ash/policy/remote_commands/crd_host_delegate.cc b/chrome/browser/ash/policy/remote_commands/crd_host_delegate.cc index 970aeed..601166f7 100644 --- a/chrome/browser/ash/policy/remote_commands/crd_host_delegate.cc +++ b/chrome/browser/ash/policy/remote_commands/crd_host_delegate.cc
@@ -4,10 +4,13 @@ #include "chrome/browser/ash/policy/remote_commands/crd_host_delegate.h" +#include <string> + #include "base/bind.h" #include "base/json/json_reader.h" #include "base/json/json_writer.h" #include "base/threading/thread_task_runner_handle.h" +#include "chrome/browser/ash/policy/remote_commands/crd_connection_observer.h" #include "chrome/browser/ash/policy/remote_commands/crd_logging.h" #include "chrome/browser/browser_process.h" #include "content/public/browser/browser_task_traits.h" @@ -16,6 +19,7 @@ #include "google_apis/gaia/gaia_constants.h" #include "remoting/host/it2me/it2me_constants.h" #include "remoting/host/it2me/it2me_native_messaging_host_chromeos.h" +#include "remoting/protocol/errors.h" namespace policy { @@ -40,18 +44,18 @@ } }; -std::string FormatErrorMessage(const std::string& error_state, - const base::Value& message) { - if (error_state == remoting::kHostStateDomainError) { - return "Invalid domain"; - } else { - const std::string* error_code = - message.FindStringKey(remoting::kErrorMessageCode); - if (error_code) - return *error_code; - else - return "Unknown Error"; - } +bool IsConnectionRejected(const std::string& disconnect_reason) { + return (disconnect_reason == + remoting::protocol::ErrorCodeToString( + remoting::protocol::ErrorCode::SESSION_REJECTED)); +} + +std::string FindStringKeyOrDefault( + const base::Value& dictionary, + const std::string& key_name, + const std::string& default_value = "<missing-key>") { + const std::string* result = dictionary.FindStringKey(key_name); + return result ? *result : default_value; } } // namespace @@ -67,6 +71,10 @@ CRDHostDelegate::~CRDHostDelegate() = default; +void CRDHostDelegate::AddConnectionObserver(CrdConnectionObserver* observer) { + connection_observers_.AddObserver(observer); +} + bool CRDHostDelegate::HasActiveSession() const { return host_ != nullptr; } @@ -130,51 +138,57 @@ return; } - const std::string* type_pointer = - message->FindStringKey(remoting::kMessageType); - if (!type_pointer) { + const std::string* type = message->FindStringKey(remoting::kMessageType); + if (!type) { OnProtocolBroken("Message without type"); return; } - const std::string& type = *type_pointer; + HandleNativeHostMessage(*type, *message); +} + +void CRDHostDelegate::HandleNativeHostMessage(const std::string& type, + const base::Value& message) { if (type == remoting::kHelloResponse) { OnHelloResponse(); - return; } else if (type == remoting::kConnectResponse) { // Ok, just ignore. - return; } else if (type == remoting::kDisconnectResponse) { OnDisconnectResponse(); - return; - } else if (type == remoting::kHostStateChangedMessage || - type == remoting::kErrorMessage) { + } else if (type == remoting::kErrorMessage) { + OnConnectionError( + FindStringKeyOrDefault(message, remoting::kErrorMessageCode)); + } else if (type == remoting::kHostStateChangedMessage) { // Handle CRD host state changes - const std::string* state_pointer = message->FindStringKey(remoting::kState); - if (!state_pointer) { + const std::string* state = message.FindStringKey(remoting::kState); + if (!state) { OnProtocolBroken("No state in message"); return; } - const std::string& state = *state_pointer; - - if (state == remoting::kHostStateReceivedAccessCode) { - OnStateReceivedAccessCode(*message); - } else if (state == remoting::kHostStateConnected) { - OnStateRemoteConnected(*message); - } else if (state == remoting::kHostStateDisconnected) { - OnStateRemoteDisconnected(); - } else if (state == remoting::kHostStateError || - state == remoting::kHostStateDomainError) { - OnStateError(state, *message); - } else if (state == remoting::kHostStateStarting || - state == remoting::kHostStateRequestedAccessCode) { - // Just ignore these states. - } else { - CRD_LOG(WARNING) << "Unhandled state :" << type; - } - return; + HandleNativeHostStateChangeMessage(*state, message); + } else { + CRD_LOG(WARNING) << "Unknown message type: " << type; } - CRD_LOG(WARNING) << "Unknown message type: " << type; +} + +void CRDHostDelegate::HandleNativeHostStateChangeMessage( + const std::string& state, + const base::Value& message) { + if (state == remoting::kHostStateReceivedAccessCode) { + OnStateReceivedAccessCode(message); + } else if (state == remoting::kHostStateConnected) { + OnStateRemoteConnected(message); + } else if (state == remoting::kHostStateDisconnected) { + OnStateRemoteDisconnected( + FindStringKeyOrDefault(message, remoting::kDisconnectReason)); + } else if (state == remoting::kHostStateDomainError) { + OnConnectionError(state); + } else if (state == remoting::kHostStateStarting || + state == remoting::kHostStateRequestedAccessCode) { + // Just ignore these states. + } else { + CRD_LOG(WARNING) << "Unhandled state: " << state; + } } void CRDHostDelegate::OnHelloResponse() { @@ -191,14 +205,13 @@ ShutdownHost(); } -void CRDHostDelegate::OnStateError(const std::string& error_state, - const base::Value& message) { +void CRDHostDelegate::OnConnectionError(const std::string& error_reason) { // Notify callback if command is still running. if (command_awaiting_crd_access_code_) { command_awaiting_crd_access_code_ = false; std::move(error_callback_) .Run(DeviceCommandStartCRDSessionJob::FAILURE_CRD_HOST_ERROR, - "CRD State Error: " + FormatErrorMessage(error_state, message)); + "CRD Connection Error: " + error_reason); code_success_callback_.Reset(); } // Shut down host, if any. @@ -206,21 +219,33 @@ } void CRDHostDelegate::OnStateRemoteConnected(const base::Value& message) { + for (auto& observer : connection_observers_) + observer.OnConnectionEstablished(); + remote_connected_ = true; + // TODO(antrim): set up watchdog timer (session duration). const std::string* client = message.FindStringKey(remoting::kClient); if (client) CRD_DVLOG(1) << "Remote connection by " << *client; } -void CRDHostDelegate::OnStateRemoteDisconnected() { +void CRDHostDelegate::OnStateRemoteDisconnected( + const std::string& disconnect_reason) { // There could be a connection attempt that was not successful, we will // receive "disconnected" message without actually receiving "connected". if (!remote_connected_) { - CRD_DVLOG(1) << "Received disconnect out-of-order before connect"; + CRD_DVLOG(1) << "Connection failed with reason: " << disconnect_reason; + + if (IsConnectionRejected(disconnect_reason)) { + for (auto& observer : connection_observers_) + observer.OnConnectionRejected(); + } return; } remote_connected_ = false; + + CRD_DVLOG(1) << "Remote host has disconnected"; // Remote has disconnected, time to send "disconnect" that would result // in shutting down the host. base::Value params(base::Value::Type::DICTIONARY); @@ -230,10 +255,10 @@ void CRDHostDelegate::OnStateReceivedAccessCode(const base::Value& message) { if (!command_awaiting_crd_access_code_) { if (!remote_connected_) { - // We have already sent the access code back to the server which initiated - // this CRD session through a remote command, and we can not send a new - // access code. Assuming that the old access code is no longer valid, we - // can only terminate the current CRD session. + // We have already sent the access code back to the server which + // initiated this CRD session through a remote command, and we can not + // send a new access code. Assuming that the old access code is no + // longer valid, we can only terminate the current CRD session. base::Value params(base::Value::Type::DICTIONARY); SendMessageToHost(remoting::kDisconnectMessage, params); }
diff --git a/chrome/browser/ash/policy/remote_commands/crd_host_delegate.h b/chrome/browser/ash/policy/remote_commands/crd_host_delegate.h index d09364fd..f0d3071 100644 --- a/chrome/browser/ash/policy/remote_commands/crd_host_delegate.h +++ b/chrome/browser/ash/policy/remote_commands/crd_host_delegate.h
@@ -10,6 +10,7 @@ #include "base/callback_forward.h" #include "base/macros.h" +#include "base/observer_list.h" #include "base/time/time.h" #include "base/values.h" #include "chrome/browser/ash/policy/remote_commands/device_command_start_crd_session_job.h" @@ -17,6 +18,8 @@ namespace policy { +class CrdConnectionObserver; + // Delegate that will start a session with the CRD native host. // Will keep the session alive and active as long as this class lives. // Deleting this class object will forcefully interrupt the active CRD session. @@ -43,12 +46,22 @@ DeviceCommandStartCRDSessionJob::AccessCodeCallback success_callback, DeviceCommandStartCRDSessionJob::ErrorCallback error_callback) override; + // Set a connection observer, which will be informed when either: + // - The CRD connection is successfully established, or + // - The CRD connection failed to be established. + void AddConnectionObserver(CrdConnectionObserver* observer); + private: // extensions::NativeMessageHost::Client: // Invoked when native host sends a message void PostMessageFromNativeHost(const std::string& message) override; void CloseChannel(const std::string& error_message) override; + void HandleNativeHostMessage(const std::string& type, + const base::Value& message); + void HandleNativeHostStateChangeMessage(const std::string& state, + const base::Value& message); + // Sends message to host in separate task. void SendMessageToHost(const std::string& type, base::Value& params); // Actually sends message to host. @@ -63,9 +76,9 @@ void OnHelloResponse(); void OnDisconnectResponse(); - void OnStateError(const std::string& error_state, const base::Value& message); + void OnConnectionError(const std::string& error_reason); void OnStateRemoteConnected(const base::Value& message); - void OnStateRemoteDisconnected(); + void OnStateRemoteDisconnected(const std::string& disconnect_reason); void OnStateReceivedAccessCode(const base::Value& message); std::unique_ptr<NativeMessageHostFactory> factory_; @@ -85,6 +98,9 @@ // True if remote session was established. bool remote_connected_; + // Owned by the same |DeviceCommandsFactoryChromeOS| as |this|. + base::ObserverList<CrdConnectionObserver> connection_observers_; + base::WeakPtrFactory<CRDHostDelegate> weak_factory_{this}; DISALLOW_COPY_AND_ASSIGN(CRDHostDelegate);
diff --git a/chrome/browser/ash/policy/remote_commands/crd_host_delegate_unittest.cc b/chrome/browser/ash/policy/remote_commands/crd_host_delegate_unittest.cc index 9bab954..14b001e0 100644 --- a/chrome/browser/ash/policy/remote_commands/crd_host_delegate_unittest.cc +++ b/chrome/browser/ash/policy/remote_commands/crd_host_delegate_unittest.cc
@@ -15,6 +15,7 @@ #include "base/test/task_environment.h" #include "base/test/test_future.h" #include "base/threading/thread_task_runner_handle.h" +#include "chrome/browser/ash/policy/remote_commands/crd_connection_observer.h" #include "remoting/host/it2me/it2me_constants.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -53,6 +54,8 @@ #define EXPECT_TYPE(dictionary, value) \ EXPECT_STRING_KEY(dictionary, remoting::kMessageType, value) +#define EXPECT_NO_CALLS(args...) EXPECT_CALL(args).Times(0); + // Builder class that constructs a message to send to the native host. class Message { public: @@ -62,18 +65,18 @@ ~Message() = default; Message& WithType(const std::string& type) { - return AddString(remoting::kMessageType, type); + return WithString(remoting::kMessageType, type); } Message& WithState(const std::string& state) { - return AddString(remoting::kState, state); + return WithString(remoting::kState, state); } - Message& AddString(const std::string& key, const std::string& value) { + Message& WithString(const std::string& key, const std::string& value) { result.SetStringKey(key, value); return *this; } - Message& AddInt(const std::string& key, int value) { + Message& WithInt(const std::string& key, int value) { result.SetIntKey(key, value); return *this; } @@ -286,6 +289,18 @@ base::WeakPtrFactory<Response> weak_factory_{this}; }; +class ConnectionObserverMock : public CrdConnectionObserver { + public: + ConnectionObserverMock() = default; + ConnectionObserverMock(const ConnectionObserverMock&) = delete; + ConnectionObserverMock& operator=(const ConnectionObserverMock&) = delete; + ~ConnectionObserverMock() override = default; + + // CRDConnectionObserver implementation: + MOCK_METHOD(void, OnConnectionRejected, ()); + MOCK_METHOD(void, OnConnectionEstablished, ()); +}; + } // namespace class CRDHostDelegateTest : public ::testing::Test { @@ -311,10 +326,16 @@ CRDHostDelegate& delegate() { return delegate_; } NativeMessageHostStub& host() { return host_; } + ConnectionObserverMock& InstallConnectionObserverMock() { + delegate_.AddConnectionObserver(&connection_observer_); + return connection_observer_; + } + private: base::test::SingleThreadTaskEnvironment environment_; NativeMessageHostStub host_; + ::testing::StrictMock<ConnectionObserverMock> connection_observer_; CRDHostDelegate delegate_{ std::make_unique<NativeMessageHostFactoryStub>(&host_)}; @@ -460,8 +481,8 @@ host().PostMessage(Message() .WithType(remoting::kHostStateChangedMessage) .WithState(remoting::kHostStateReceivedAccessCode) - .AddString(remoting::kAccessCode, "<the-access-code>") - .AddInt(remoting::kAccessCodeLifetime, 123)); + .WithString(remoting::kAccessCode, "<the-access-code>") + .WithInt(remoting::kAccessCodeLifetime, 123)); RunUntilIdle(); EXPECT_EQ(response().access_code(), "<the-access-code>"); @@ -475,8 +496,8 @@ Message() .WithType(remoting::kHostStateChangedMessage) .WithState(remoting::kHostStateReceivedAccessCode) - .AddString(remoting::kAccessCode, "<the-first-access-code>") - .AddInt(remoting::kAccessCodeLifetime, 123)); + .WithString(remoting::kAccessCode, "<the-first-access-code>") + .WithInt(remoting::kAccessCodeLifetime, 123)); RunUntilIdle(); EXPECT_EQ(response().access_code(), "<the-first-access-code>"); @@ -485,8 +506,8 @@ Message() .WithType(remoting::kHostStateChangedMessage) .WithState(remoting::kHostStateReceivedAccessCode) - .AddString(remoting::kAccessCode, "<the-second-access-code>") - .AddInt(remoting::kAccessCodeLifetime, 123)); + .WithString(remoting::kAccessCode, "<the-second-access-code>") + .WithInt(remoting::kAccessCodeLifetime, 123)); host().WaitForMessageOfType(remoting::kDisconnectMessage); } @@ -508,9 +529,11 @@ .WithType(remoting::kHostStateChangedMessage) .WithState(remoting::kHostStateConnected)); - host().PostMessage(Message() - .WithType(remoting::kHostStateChangedMessage) - .WithState(remoting::kHostStateDisconnected)); + host().PostMessage( + Message() + .WithType(remoting::kHostStateChangedMessage) + .WithState(remoting::kHostStateDisconnected) + .WithString(remoting::kDisconnectReason, "<the-disconnect-reason>")); host().WaitForMessageOfType(remoting::kDisconnectMessage); } @@ -519,9 +542,11 @@ StartCRDHostAndGetCode(); host().HandleHandshake(); - host().PostMessage(Message() - .WithType(remoting::kHostStateChangedMessage) - .WithState(remoting::kHostStateDisconnected)); + host().PostMessage( + Message() + .WithType(remoting::kHostStateChangedMessage) + .WithState(remoting::kHostStateDisconnected) + .WithString(remoting::kDisconnectReason, "<the-disconnect-reason>")); RunUntilIdle(); // The disconnect should be ignored and the host should just keep running. @@ -537,10 +562,13 @@ host().PostMessage(Message() .WithType(remoting::kHostStateChangedMessage) .WithState(remoting::kHostStateReceivedAccessCode) - .AddString(remoting::kAccessCode, "<the-access-code>") - .AddInt(remoting::kAccessCodeLifetime, 123)); + .WithString(remoting::kAccessCode, "<the-access-code>") + .WithInt(remoting::kAccessCodeLifetime, 123)); - host().PostMessage(Message().WithType(remoting::kDisconnectResponse)); + host().PostMessage( + Message() + .WithType(remoting::kDisconnectResponse) + .WithString(remoting::kDisconnectReason, "<the-disconnect-reason>")); RunUntilIdle(); EXPECT_TRUE(host().is_destroyed()); @@ -552,13 +580,12 @@ host().PostMessage( Message() - .WithType(remoting::kHostStateChangedMessage) - .WithState(remoting::kHostStateError) - .AddString(remoting::kErrorMessageCode, "<the-error-code>")); + .WithType(remoting::kErrorMessage) + .WithString(remoting::kErrorMessageCode, "<the-error-code>")); RunUntilIdle(); EXPECT_THAT(response().error_message(), - HasSubstr("CRD State Error: <the-error-code>")); + HasSubstr("CRD Connection Error: <the-error-code>")); EXPECT_TRUE(host().is_destroyed()); } @@ -573,7 +600,7 @@ RunUntilIdle(); EXPECT_THAT(response().error_message(), - HasSubstr("CRD State Error: Invalid domain")); + HasSubstr("CRD Connection Error: INVALID_DOMAIN_ERROR")); EXPECT_TRUE(host().is_destroyed()); } @@ -598,4 +625,51 @@ } } +TEST_F(CRDHostDelegateTest, ShouldReportSuccessfullAttemptsToLockoutStrategy) { + ConnectionObserverMock& connection_observer = InstallConnectionObserverMock(); + + StartCRDHostAndGetCode(); + host().HandleHandshake(); + + EXPECT_CALL(connection_observer, OnConnectionEstablished); + + host().PostMessage(Message() + .WithType(remoting::kHostStateChangedMessage) + .WithState(remoting::kHostStateConnected)); + RunUntilIdle(); +} + +TEST_F(CRDHostDelegateTest, ShouldReportRejectedAttemptsToLockoutStrategy) { + ConnectionObserverMock& connection_observer = InstallConnectionObserverMock(); + + StartCRDHostAndGetCode(); + host().HandleHandshake(); + + EXPECT_CALL(connection_observer, OnConnectionRejected()); + + host().PostMessage( + Message() + .WithType(remoting::kHostStateChangedMessage) + .WithState(remoting::kHostStateDisconnected) + .WithString(remoting::kDisconnectReason, "SESSION_REJECTED")); + RunUntilIdle(); +} + +TEST_F(CRDHostDelegateTest, + ShouldNotReportOtherConnectionFailedReasonsToLockoutStrategy) { + ConnectionObserverMock& connection_observer = InstallConnectionObserverMock(); + + StartCRDHostAndGetCode(); + host().HandleHandshake(); + + EXPECT_NO_CALLS(connection_observer, OnConnectionRejected()); + + host().PostMessage( + Message() + .WithType(remoting::kHostStateChangedMessage) + .WithState(remoting::kHostStateDisconnected) + .WithString(remoting::kDisconnectReason, "other disconnect reason")); + RunUntilIdle(); +} + } // namespace policy
diff --git a/chrome/browser/ash/policy/remote_commands/crd_lockout_strategy.cc b/chrome/browser/ash/policy/remote_commands/crd_lockout_strategy.cc new file mode 100644 index 0000000..26ac623 --- /dev/null +++ b/chrome/browser/ash/policy/remote_commands/crd_lockout_strategy.cc
@@ -0,0 +1,40 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/ash/policy/remote_commands/crd_lockout_strategy.h" +#include "chrome/browser/ash/policy/remote_commands/crd_logging.h" + +namespace policy { + +// constexpr static +const base::TimeDelta CrdFixedTimeoutLockoutStrategy::kLockoutDuration; +const int CrdFixedTimeoutLockoutStrategy::kNumRejectedAttemptsAllowed; + +void CrdFixedTimeoutLockoutStrategy::OnConnectionRejected() { + num_rejected_connections_++; + + CRD_DVLOG(3) << "There are " << num_rejected_connections_ + << " consecutive rejected attempts"; + + DCHECK(num_rejected_connections_ <= kNumRejectedAttemptsAllowed); + + if (num_rejected_connections_ == kNumRejectedAttemptsAllowed) { + time_until_which_attempts_are_blocked_ = + base::Time::Now() + kLockoutDuration; + num_rejected_connections_ = 0; + + CRD_DVLOG(3) << "All further attempts are locked until " + << time_until_which_attempts_are_blocked_; + } +} + +void CrdFixedTimeoutLockoutStrategy::OnConnectionEstablished() { + num_rejected_connections_ = 0; +} + +bool CrdFixedTimeoutLockoutStrategy::CanAttemptConnection() const { + return base::Time::Now() > time_until_which_attempts_are_blocked_; +} + +} // namespace policy
diff --git a/chrome/browser/ash/policy/remote_commands/crd_lockout_strategy.h b/chrome/browser/ash/policy/remote_commands/crd_lockout_strategy.h new file mode 100644 index 0000000..1e87ef7 --- /dev/null +++ b/chrome/browser/ash/policy/remote_commands/crd_lockout_strategy.h
@@ -0,0 +1,57 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_ASH_POLICY_REMOTE_COMMANDS_CRD_LOCKOUT_STRATEGY_H_ +#define CHROME_BROWSER_ASH_POLICY_REMOTE_COMMANDS_CRD_LOCKOUT_STRATEGY_H_ + +#include "base/time/time.h" +#include "chrome/browser/ash/policy/remote_commands/crd_connection_observer.h" +#include "third_party/abseil-cpp/absl/types/optional.h" + +namespace policy { + +// Helper class that decides when the admin is locked out from attempting to +// start a remote CRD session. +// This prevents the admin from spamming the host user. +class CrdLockoutStrategy : public CrdConnectionObserver { + public: + CrdLockoutStrategy() = default; + CrdLockoutStrategy(const CrdLockoutStrategy&) = delete; + CrdLockoutStrategy& operator=(const CrdLockoutStrategy&) = delete; + ~CrdLockoutStrategy() override = default; + + // Returns true if the admin can attempt a CRD command, or false if a timeout + // is in effect. + virtual bool CanAttemptConnection() const = 0; +}; + +// Simple lockout strategy that blocks attempts for a fixed time after a +// given number of rejected attempts. +class CrdFixedTimeoutLockoutStrategy : public CrdLockoutStrategy { + public: + constexpr static base::TimeDelta kLockoutDuration = + base::TimeDelta::FromMinutes(5); + constexpr static int kNumRejectedAttemptsAllowed = 3; + + CrdFixedTimeoutLockoutStrategy() = default; + CrdFixedTimeoutLockoutStrategy(const CrdFixedTimeoutLockoutStrategy&) = + delete; + CrdFixedTimeoutLockoutStrategy& operator=( + const CrdFixedTimeoutLockoutStrategy&) = delete; + ~CrdFixedTimeoutLockoutStrategy() override = default; + + // CrdLockoutStrategy implementation: + void OnConnectionRejected() override; + void OnConnectionEstablished() override; + bool CanAttemptConnection() const override; + + private: + int num_rejected_connections_ = 0; + + base::Time time_until_which_attempts_are_blocked_ = base::Time::Min(); +}; + +} // namespace policy + +#endif // CHROME_BROWSER_ASH_POLICY_REMOTE_COMMANDS_CRD_LOCKOUT_STRATEGY_H_
diff --git a/chrome/browser/ash/policy/remote_commands/crd_lockout_strategy_unittest.cc b/chrome/browser/ash/policy/remote_commands/crd_lockout_strategy_unittest.cc new file mode 100644 index 0000000..72949ca --- /dev/null +++ b/chrome/browser/ash/policy/remote_commands/crd_lockout_strategy_unittest.cc
@@ -0,0 +1,119 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/ash/policy/remote_commands/crd_lockout_strategy.h" + +#include "base/test/task_environment.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace policy { + +using base::TimeDelta; + +class CrdFixedTimeoutLockoutStrategyTest : public ::testing::Test { + public: + CrdFixedTimeoutLockoutStrategyTest() = default; + CrdFixedTimeoutLockoutStrategyTest( + const CrdFixedTimeoutLockoutStrategyTest&) = delete; + CrdFixedTimeoutLockoutStrategyTest& operator=( + const CrdFixedTimeoutLockoutStrategyTest&) = delete; + ~CrdFixedTimeoutLockoutStrategyTest() override = default; + + CrdFixedTimeoutLockoutStrategy& strategy() { return strategy_; } + + void FastForwardBy(TimeDelta delta) { environment_.FastForwardBy(delta); } + + private: + CrdFixedTimeoutLockoutStrategy strategy_; + + base::test::SingleThreadTaskEnvironment environment_{ + base::test::TaskEnvironment::TimeSource::MOCK_TIME}; +}; + +TEST_F(CrdFixedTimeoutLockoutStrategyTest, ShouldAllowConnectionInitially) { + EXPECT_TRUE(strategy().CanAttemptConnection()); +} + +TEST_F(CrdFixedTimeoutLockoutStrategyTest, + ShouldAllowConnectionsAfterLessThan3RejectedAttempts) { + EXPECT_TRUE(strategy().CanAttemptConnection()); + + strategy().OnConnectionRejected(); + EXPECT_TRUE(strategy().CanAttemptConnection()); + + strategy().OnConnectionRejected(); + EXPECT_TRUE(strategy().CanAttemptConnection()); +} + +TEST_F(CrdFixedTimeoutLockoutStrategyTest, + ShouldBlockConnectionsAfter3RejectedAttempts) { + strategy().OnConnectionRejected(); + strategy().OnConnectionRejected(); + strategy().OnConnectionRejected(); + + EXPECT_FALSE(strategy().CanAttemptConnection()); +} + +TEST_F(CrdFixedTimeoutLockoutStrategyTest, + ShouldBlockConnectionsFor5MinutesAfter3RejectedAttempts) { + strategy().OnConnectionRejected(); + strategy().OnConnectionRejected(); + strategy().OnConnectionRejected(); + EXPECT_FALSE(strategy().CanAttemptConnection()); + + // 4:59 later + FastForwardBy(TimeDelta::FromMinutes(5) - TimeDelta::FromSeconds(1)); + EXPECT_FALSE(strategy().CanAttemptConnection()); + + // 5:01 later + FastForwardBy(TimeDelta::FromSeconds(2)); + EXPECT_TRUE(strategy().CanAttemptConnection()); +} + +TEST_F(CrdFixedTimeoutLockoutStrategyTest, + SuccesfullConnectionShouldResetFailedConnectionCount) { + strategy().OnConnectionRejected(); + strategy().OnConnectionRejected(); + strategy().OnConnectionEstablished(); + strategy().OnConnectionRejected(); + strategy().OnConnectionRejected(); + + EXPECT_TRUE(strategy().CanAttemptConnection()); +} + +TEST_F(CrdFixedTimeoutLockoutStrategyTest, ShouldAlsoCountOldRejectedAttempts) { + strategy().OnConnectionRejected(); + FastForwardBy(TimeDelta::FromHours(1)); + + strategy().OnConnectionRejected(); + FastForwardBy(TimeDelta::FromHours(1)); + + strategy().OnConnectionRejected(); + + EXPECT_FALSE(strategy().CanAttemptConnection()); +} + +TEST_F(CrdFixedTimeoutLockoutStrategyTest, + ShouldResetRejectedAttemptCountAfterLockoutExpires) { + // Fail 3 times + strategy().OnConnectionRejected(); + strategy().OnConnectionRejected(); + strategy().OnConnectionRejected(); + + // Wait for timeout + FastForwardBy(TimeDelta::FromMinutes(5) + TimeDelta::FromSeconds(1)); + EXPECT_TRUE(strategy().CanAttemptConnection()); + + // Fail 2 more times + strategy().OnConnectionRejected(); + strategy().OnConnectionRejected(); + + EXPECT_TRUE(strategy().CanAttemptConnection()); + + // Fail 1 more time + strategy().OnConnectionRejected(); + EXPECT_FALSE(strategy().CanAttemptConnection()); +} + +} // namespace policy
diff --git a/chrome/browser/ash/policy/remote_commands/device_command_start_crd_session_job.cc b/chrome/browser/ash/policy/remote_commands/device_command_start_crd_session_job.cc index 19eb920..17822d8 100644 --- a/chrome/browser/ash/policy/remote_commands/device_command_start_crd_session_job.cc +++ b/chrome/browser/ash/policy/remote_commands/device_command_start_crd_session_job.cc
@@ -16,6 +16,7 @@ #include "chrome/browser/ash/app_mode/arc/arc_kiosk_app_manager.h" #include "chrome/browser/ash/app_mode/kiosk_app_manager.h" #include "chrome/browser/ash/app_mode/web_app/web_kiosk_app_manager.h" +#include "chrome/browser/ash/policy/remote_commands/crd_lockout_strategy.h" #include "chrome/browser/ash/policy/remote_commands/crd_logging.h" #include "chrome/browser/device_identity/device_oauth2_token_service.h" #include "chrome/browser/device_identity/device_oauth2_token_service_factory.h" @@ -215,8 +216,12 @@ } DeviceCommandStartCRDSessionJob::DeviceCommandStartCRDSessionJob( - Delegate* crd_host_delegate) - : delegate_(crd_host_delegate) {} + Delegate* crd_host_delegate, + CrdLockoutStrategy* lockout_strategy) + : delegate_(crd_host_delegate), lockout_strategy_(lockout_strategy) { + DCHECK(crd_host_delegate); + DCHECK(lockout_strategy); +} DeviceCommandStartCRDSessionJob::~DeviceCommandStartCRDSessionJob() = default; @@ -383,6 +388,11 @@ return; } + if (!lockout_strategy_->CanAttemptConnection()) { + FinishWithError(ResultCode::FAILURE_TOO_MANY_REJECTED_ATTEMPTS, ""); + return; + } + if (!IsDeviceIdle()) { FinishWithNotIdleError(); return;
diff --git a/chrome/browser/ash/policy/remote_commands/device_command_start_crd_session_job.h b/chrome/browser/ash/policy/remote_commands/device_command_start_crd_session_job.h index ded52cc..47517498 100644 --- a/chrome/browser/ash/policy/remote_commands/device_command_start_crd_session_job.h +++ b/chrome/browser/ash/policy/remote_commands/device_command_start_crd_session_job.h
@@ -17,6 +17,8 @@ namespace policy { +class CrdLockoutStrategy; + // Remote command that would start Chrome Remote Desktop host and return auth // code. This command is usable only for devices running Kiosk sessions. class DeviceCommandStartCRDSessionJob : public RemoteCommandJob { @@ -42,6 +44,10 @@ // Failure during attempt to start CRD host and obtain CRD token. FAILURE_CRD_HOST_ERROR = 6, + + // Failed as the host user declined the connection too many times in a row. + // The |CrdLockoutStrategy| controls when this happens. + FAILURE_TOO_MANY_REJECTED_ATTEMPTS = 7, }; using OAuthTokenCallback = base::OnceCallback<void(const std::string&)>; @@ -74,7 +80,8 @@ ErrorCallback error_callback) = 0; }; - explicit DeviceCommandStartCRDSessionJob(Delegate* crd_host_delegate); + DeviceCommandStartCRDSessionJob(Delegate* crd_host_delegate, + CrdLockoutStrategy* lockout_strategy); ~DeviceCommandStartCRDSessionJob() override; // RemoteCommandJob: @@ -153,7 +160,9 @@ // The Delegate is used to interact with chrome services and CRD host. // Owned by DeviceCommandsFactoryAsh. - Delegate* delegate_; + Delegate* const delegate_; + // Owned by DeviceCommandsFactoryChromeOS. + CrdLockoutStrategy* const lockout_strategy_; bool terminate_session_attempted_ = false;
diff --git a/chrome/browser/ash/policy/remote_commands/device_command_start_crd_session_unittest.cc b/chrome/browser/ash/policy/remote_commands/device_command_start_crd_session_unittest.cc index 7e33b30..a4cc78e 100644 --- a/chrome/browser/ash/policy/remote_commands/device_command_start_crd_session_unittest.cc +++ b/chrome/browser/ash/policy/remote_commands/device_command_start_crd_session_unittest.cc
@@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "chrome/browser/ash/app_mode/kiosk_app_manager.h" #include "chrome/browser/ash/policy/remote_commands/device_command_start_crd_session_job.h" #include <map> @@ -20,8 +21,9 @@ #include "base/time/time.h" #include "base/values.h" #include "chrome/browser/ash/app_mode/arc/arc_kiosk_app_manager.h" -#include "chrome/browser/ash/app_mode/kiosk_app_manager.h" #include "chrome/browser/ash/app_mode/web_app/web_kiosk_app_manager.h" +#include "chrome/browser/ash/policy/remote_commands/crd_connection_observer.h" +#include "chrome/browser/ash/policy/remote_commands/crd_lockout_strategy.h" #include "chrome/browser/ash/settings/device_settings_test_helper.h" #include "chrome/browser/device_identity/device_oauth2_token_service.h" #include "chrome/browser/device_identity/device_oauth2_token_service_factory.h" @@ -141,6 +143,24 @@ std::move(callback).Run(); } +class StubCrdLockoutStrategy : public CrdLockoutStrategy { + public: + explicit StubCrdLockoutStrategy() = default; + StubCrdLockoutStrategy(const StubCrdLockoutStrategy&) = delete; + StubCrdLockoutStrategy& operator=(const StubCrdLockoutStrategy&) = delete; + ~StubCrdLockoutStrategy() override = default; + + void SetCanAttemptConnection(bool value) { can_attempt_connection_ = value; } + + // CrdLockoutStrategy implementation: + bool CanAttemptConnection() const override { return can_attempt_connection_; } + void OnConnectionRejected() override {} + void OnConnectionEstablished() override {} + + private: + bool can_attempt_connection_ = true; +}; + void StubCRDHostDelegate::StartCRDHostAndGetCode( const SessionParameters& parameters, DeviceCommandStartCRDSessionJob::AccessCodeCallback success_callback, @@ -285,6 +305,8 @@ StubCRDHostDelegate& crd_host_delegate() { return crd_host_delegate_; } DeviceCommandStartCRDSessionJob& job() { return job_; } + StubCrdLockoutStrategy& lockout_strategy() { return lockout_strategy_; } + private: ash::FakeChromeUserManager& user_manager() { return *user_manager_; } @@ -336,8 +358,9 @@ network::TestURLLoaderFactory test_url_loader_factory_; TestingPrefServiceSimple local_state_; + StubCrdLockoutStrategy lockout_strategy_; StubCRDHostDelegate crd_host_delegate_; - DeviceCommandStartCRDSessionJob job_{&crd_host_delegate_}; + DeviceCommandStartCRDSessionJob job_{&crd_host_delegate_, &lockout_strategy_}; // Future value that will be populated with the result once the remote command // job is completed. @@ -586,6 +609,32 @@ } TEST_F(DeviceCommandStartCRDSessionJobTest, + ShouldFailIfLockoutStrategyDeclinesAttempt) { + LogInAsAutoLaunchedKioskAppUser(); + SetOAuthToken(kTestOAuthToken); + + lockout_strategy().SetCanAttemptConnection(false); + + Result result = RunJobAndWaitForResult(); + + EXPECT_ERROR( + result, + DeviceCommandStartCRDSessionJob::FAILURE_TOO_MANY_REJECTED_ATTEMPTS, ""); +} + +TEST_F(DeviceCommandStartCRDSessionJobTest, + ShouldSucceedIfLockoutStrategyAcceptsAttempt) { + LogInAsAutoLaunchedKioskAppUser(); + SetOAuthToken(kTestOAuthToken); + + lockout_strategy().SetCanAttemptConnection(true); + + Result result = RunJobAndWaitForResult(); + + EXPECT_SUCCESS(result); +} + +TEST_F(DeviceCommandStartCRDSessionJobTest, ShouldFailIfWeCantFetchTheOAuthToken) { LogInAsAutoLaunchedKioskAppUser(); ClearOAuthToken();
diff --git a/chrome/browser/ash/policy/remote_commands/device_commands_factory_ash.cc b/chrome/browser/ash/policy/remote_commands/device_commands_factory_ash.cc index 27424d1..5216b5f 100644 --- a/chrome/browser/ash/policy/remote_commands/device_commands_factory_ash.cc +++ b/chrome/browser/ash/policy/remote_commands/device_commands_factory_ash.cc
@@ -7,6 +7,7 @@ #include "base/notreached.h" #include "chrome/browser/ash/policy/core/device_cloud_policy_manager_ash.h" #include "chrome/browser/ash/policy/remote_commands/crd_host_delegate.h" +#include "chrome/browser/ash/policy/remote_commands/crd_lockout_strategy.h" #include "chrome/browser/ash/policy/remote_commands/device_command_fetch_status_job.h" #include "chrome/browser/ash/policy/remote_commands/device_command_get_available_routines_job.h" #include "chrome/browser/ash/policy/remote_commands/device_command_get_routine_update_job.h" @@ -47,7 +48,7 @@ return std::make_unique<DeviceCommandSetVolumeJob>(); case em::RemoteCommand_Type_DEVICE_START_CRD_SESSION: return std::make_unique<DeviceCommandStartCRDSessionJob>( - GetCRDHostDelegate()); + GetCRDHostDelegate(), GetCrdLockoutStrategy()); case em::RemoteCommand_Type_DEVICE_FETCH_STATUS: return std::make_unique<DeviceCommandFetchStatusJob>(); case em::RemoteCommand_Type_DEVICE_WIPE_USERS: @@ -74,8 +75,16 @@ CRDHostDelegate* DeviceCommandsFactoryAsh::GetCRDHostDelegate() { if (!crd_host_delegate_) { crd_host_delegate_ = std::make_unique<CRDHostDelegate>(); + crd_host_delegate_->AddConnectionObserver(GetCrdLockoutStrategy()); } return crd_host_delegate_.get(); } +CrdLockoutStrategy* DeviceCommandsFactoryAsh::GetCrdLockoutStrategy() { + if (!crd_lockout_strategy_) + crd_lockout_strategy_ = std::make_unique<CrdFixedTimeoutLockoutStrategy>(); + + return crd_lockout_strategy_.get(); +} + } // namespace policy
diff --git a/chrome/browser/ash/policy/remote_commands/device_commands_factory_ash.h b/chrome/browser/ash/policy/remote_commands/device_commands_factory_ash.h index bd2ec93..b582f60 100644 --- a/chrome/browser/ash/policy/remote_commands/device_commands_factory_ash.h +++ b/chrome/browser/ash/policy/remote_commands/device_commands_factory_ash.h
@@ -13,6 +13,7 @@ namespace policy { class CRDHostDelegate; +class CrdLockoutStrategy; class DeviceCloudPolicyManagerAsh; class DeviceCommandsFactoryAsh : public RemoteCommandsFactory { @@ -28,9 +29,13 @@ private: DeviceCloudPolicyManagerAsh* policy_manager_; + // Note: This is used by |crd_host_delegate_| so it must always outlive + // |crd_host_delegate_|. + std::unique_ptr<CrdLockoutStrategy> crd_lockout_strategy_; std::unique_ptr<CRDHostDelegate> crd_host_delegate_; CRDHostDelegate* GetCRDHostDelegate(); + CrdLockoutStrategy* GetCrdLockoutStrategy(); DISALLOW_COPY_AND_ASSIGN(DeviceCommandsFactoryAsh); };
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc index f0abf1b..c2bfbfb 100644 --- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc +++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
@@ -113,6 +113,7 @@ #include "components/password_manager/core/browser/password_manager_features_util.h" #include "components/password_manager/core/browser/password_store.h" #include "components/password_manager/core/common/password_manager_features.h" +#include "components/payments/content/payment_manifest_web_data_service.h" #include "components/permissions/permission_decision_auto_blocker.h" #include "components/prefs/pref_service.h" #include "components/search_engines/template_url_service.h" @@ -841,6 +842,18 @@ delete_end_.is_null() ? base::Time::Max() : delete_end_, CreateTaskCompletionClosureForMojo( TracingDataType::kHttpAuthCache)); + + scoped_refptr<payments::PaymentManifestWebDataService> web_data_service = + webdata_services::WebDataServiceWrapperFactory:: + GetPaymentManifestWebDataServiceForBrowserContext( + profile_, ServiceAccessType::EXPLICIT_ACCESS); + if (web_data_service) { + web_data_service->ClearSecurePaymentConfirmationInstruments( + delete_begin_, delete_end_, + CreateTaskCompletionClosure( + TracingDataType::kSecurePaymentConfirmationInstruments)); + } + #if BUILDFLAG(IS_CHROMEOS_ASH) if (chromeos::SystemProxyManager::Get()) { // Sends a request to the System-proxy daemon to clear the proxy user
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h index cdc2126..513a64c 100644 --- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h +++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h
@@ -129,7 +129,8 @@ kAccountPasswordsSynced = 38, kAccountCompromisedCredentials = 39, kFaviconCacheExpiration = 40, - kMaxValue = kFaviconCacheExpiration, + kSecurePaymentConfirmationInstruments = 41, + kMaxValue = kSecurePaymentConfirmationInstruments, }; // Called by CreateTaskCompletionClosure().
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn index fb1b92b..97ba0222 100644 --- a/chrome/browser/chromeos/BUILD.gn +++ b/chrome/browser/chromeos/BUILD.gn
@@ -440,6 +440,7 @@ "//printing", "//printing/mojom", "//remoting/host/chromeos:remoting_service", + "//remoting/protocol:errors", "//services/audio/public/cpp", "//services/data_decoder/public/cpp", "//services/device/public/cpp/usb", @@ -2272,8 +2273,11 @@ "../ash/policy/off_hours/off_hours_proto_parser.h", "../ash/policy/remote_commands/affiliated_remote_commands_invalidator.cc", "../ash/policy/remote_commands/affiliated_remote_commands_invalidator.h", + "../ash/policy/remote_commands/crd_connection_observer.h", "../ash/policy/remote_commands/crd_host_delegate.cc", "../ash/policy/remote_commands/crd_host_delegate.h", + "../ash/policy/remote_commands/crd_lockout_strategy.cc", + "../ash/policy/remote_commands/crd_lockout_strategy.h", "../ash/policy/remote_commands/crd_logging.h", "../ash/policy/remote_commands/device_command_fetch_status_job.cc", "../ash/policy/remote_commands/device_command_fetch_status_job.h", @@ -4051,6 +4055,7 @@ "../ash/policy/off_hours/off_hours_policy_applier_unittest.cc", "../ash/policy/off_hours/off_hours_proto_parser_unittest.cc", "../ash/policy/remote_commands/crd_host_delegate_unittest.cc", + "../ash/policy/remote_commands/crd_lockout_strategy_unittest.cc", "../ash/policy/remote_commands/device_command_get_available_routines_job_unittest.cc", "../ash/policy/remote_commands/device_command_get_routine_update_job_unittest.cc", "../ash/policy/remote_commands/device_command_remote_powerwash_job_unittest.cc",
diff --git a/chrome/browser/chromeos/DEPS b/chrome/browser/chromeos/DEPS index 159d282..ce71008e 100644 --- a/chrome/browser/chromeos/DEPS +++ b/chrome/browser/chromeos/DEPS
@@ -23,7 +23,6 @@ "+media/audio/sounds", # For system sounds "+media/base/media_switches.h", # For media command line switches. "+media/mojo/mojom", # For platform verification mojom interface. - "+remoting/host/it2me", # For CRD host in remote command "+services/device/public", "+services/metrics/public", "+services/network",
diff --git a/chrome/browser/content_settings/sound_content_setting_observer.cc b/chrome/browser/content_settings/sound_content_setting_observer.cc index 03389fdd..0c5a817e 100644 --- a/chrome/browser/content_settings/sound_content_setting_observer.cc +++ b/chrome/browser/content_settings/sound_content_setting_observer.cc
@@ -155,12 +155,10 @@ void SoundContentSettingObserver::CheckSoundBlocked(bool is_audible) { if (is_audible && GetCurrentContentSetting() == CONTENT_SETTING_BLOCK) { - // Since this is a page-level event and only primary pages can play audio - // in prerendering, we get `settings` from the main frame of the primary - // page. - // TODO(https://crbug.com/1103176): For other types of FrameTrees(fenced - // frames, portals) than prerendering, we should figure a way of not having - // to use GetMainFrame here. (pass the source frame somehow) + // The tab has tried to play sound, but was muted. + // This is a page level event so it is OK to get the main frame here. + // TODO(https://crbug.com/1103176): We should figure a way of not having to + // use GetMainFrame here. (pass the source frame somehow) content_settings::PageSpecificContentSettings* settings = content_settings::PageSpecificContentSettings::GetForFrame( web_contents()->GetMainFrame());
diff --git a/chrome/browser/content_settings/sound_content_setting_observer_browsertest.cc b/chrome/browser/content_settings/sound_content_setting_observer_browsertest.cc index ad0a798..9562333 100644 --- a/chrome/browser/content_settings/sound_content_setting_observer_browsertest.cc +++ b/chrome/browser/content_settings/sound_content_setting_observer_browsertest.cc
@@ -12,7 +12,6 @@ #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/content_settings/browser/page_specific_content_settings.h" #include "components/content_settings/core/browser/host_content_settings_map.h" #include "content/public/browser/web_contents.h" #include "content/public/common/content_features.h" @@ -51,7 +50,6 @@ audio_state_changed_ = true; } - void set_audio_state_changed(bool value) { audio_state_changed_ = value; } bool audio_state_changed() { return audio_state_changed_; } private: @@ -330,7 +328,7 @@ ASSERT_TRUE(test_server_handle = embedded_test_server()->StartAndReturnHandle()); - // Blocks to play a sound by default. + // Allows to play a sound by default. HostContentSettingsMap* content_settings = HostContentSettingsMapFactory::GetForProfile(browser()->profile()); content_settings->SetDefaultContentSetting(ContentSettingsType::SOUND, @@ -388,100 +386,3 @@ // CONTENT_SETTING_BLOCK. EXPECT_TRUE(observer->HasLoggedSiteMutedUkmForTesting()); } - -// Tests that the page-specific settings for `ContentSettingsType::SOUND` is not -// updated in the prerendered page to make sure that it's fine that -// SoundContentSettingObserver::CheckSoundBlocked() access to the main frame -// from WebContents. -IN_PROC_BROWSER_TEST_F(SoundContentSettingObserverBrowserTest, - NotUpdateCheckSoundBlockedInPrerendering) { - net::test_server::EmbeddedTestServerHandle test_server_handle; - ASSERT_TRUE(test_server_handle = - embedded_test_server()->StartAndReturnHandle()); - - // Load a simple page. - GURL url = embedded_test_server()->GetURL("/simple.html"); - ui_test_utils::NavigateToURL(browser(), url); - - const std::string kPlayingSoundScript( - "var context = new window.AudioContext();" - "var oscillator = context.createOscillator();" - "oscillator.connect(context.destination);" - "oscillator.start();"); - - base::RunLoop run_loop; - TestAudioStartObserver audio_start_observer(web_contents(), - run_loop.QuitClosure()); - ASSERT_TRUE( - content::ExecJs(web_contents()->GetMainFrame(), kPlayingSoundScript)); - run_loop.Run(); - // The page should try to start the audio. - EXPECT_TRUE(audio_start_observer.audio_state_changed()); - - // Since the main frame is playing a sound, WebContents knows it is audible. - EXPECT_TRUE(web_contents()->IsCurrentlyAudible()); - - // Change the profile-wide settings to block sound by default. - HostContentSettingsMap* content_settings = - HostContentSettingsMapFactory::GetForProfile(browser()->profile()); - content_settings->SetDefaultContentSetting(ContentSettingsType::SOUND, - CONTENT_SETTING_BLOCK); - // Check that the primary page's content settings know that sound is blocked. - auto* primary_page_settings = - content_settings::PageSpecificContentSettings::GetForFrame( - web_contents()->GetMainFrame()); - EXPECT_TRUE( - primary_page_settings->IsContentBlocked(ContentSettingsType::SOUND)); - - // Start a prerendered page. - content::test::PrerenderHostRegistryObserver registry_observer( - *web_contents()); - auto prerender_url = embedded_test_server()->GetURL("/empty.html"); - int host_id = prerender_helper()->AddPrerender(prerender_url); - content::test::PrerenderHostObserver host_observer(*web_contents(), host_id); - content::RenderFrameHost* render_frame_host = - prerender_helper()->GetPrerenderedMainFrameHost(host_id); - - // Reset the flag to test if audio state is changed by running the script to - // play a sound on the prerendered page. - audio_start_observer.set_audio_state_changed(false); - // Try to play a sound in the prerendering page. - content::ExecuteScriptAsync(render_frame_host, kPlayingSoundScript); - // The prerendering page should not start the audio. - EXPECT_FALSE(audio_start_observer.audio_state_changed()); - // The main page is still audible as the prerendering doesn't affect playing a - // sound. - EXPECT_TRUE(web_contents()->IsCurrentlyAudible()); - - // Set the profile-wide contents settings to block sound again, to see if this - // updates the page-specific settings for the prerendered page or primary - // page. - content_settings->SetDefaultContentSetting(ContentSettingsType::SOUND, - CONTENT_SETTING_BLOCK); - auto* prerendered_frame_settings = - content_settings::PageSpecificContentSettings::GetForFrame( - render_frame_host); - // Audio is not blocked on the prerendered page since it doesn't play a sound. - EXPECT_FALSE( - prerendered_frame_settings->IsContentBlocked(ContentSettingsType::SOUND)); - // Audio is blocked on the current page since it is playing a sound. - EXPECT_TRUE( - primary_page_settings->IsContentBlocked(ContentSettingsType::SOUND)); - - // Activate the prerendering page. - prerender_helper()->NavigatePrimaryPage(prerender_url); - EXPECT_TRUE(host_observer.was_activated()); - - // Since audio stream status is posted to UI thread, wait until it's idle. - base::RunLoop().RunUntilIdle(); - - auto* activated_page_settings = - content_settings::PageSpecificContentSettings::GetForFrame( - web_contents()->GetMainFrame()); - // It should be false since the page is activated from the prerendering. - // TODO(crbug.com/1228567): If AudioContext activation is handled, the audio - // would be played and the status also would be updated. - EXPECT_FALSE( - activated_page_settings->IsContentBlocked(ContentSettingsType::SOUND)); - EXPECT_FALSE(web_contents()->IsCurrentlyAudible()); -}
diff --git a/chrome/browser/devtools/devtools_browsertest.cc b/chrome/browser/devtools/devtools_browsertest.cc index 92243120..e2b310ef 100644 --- a/chrome/browser/devtools/devtools_browsertest.cc +++ b/chrome/browser/devtools/devtools_browsertest.cc
@@ -2744,7 +2744,9 @@ OpenDevToolsWindow("about:blank", true); const auto result = FetchFromDevToolsWindow("http://www.google.com"); - EXPECT_EQ("a JavaScript error:\nTypeError: Failed to fetch\n", result.error); + EXPECT_THAT(result.error, + ::testing::StartsWith( + "a JavaScript error:\nTypeError: Failed to fetch\n")); CloseDevToolsWindow(); } @@ -2754,5 +2756,7 @@ const auto result = Fetch(GetInspectedTab(), "devtools://devtools/bundled/Images/whatsnew.avif"); - EXPECT_EQ("a JavaScript error:\nTypeError: Failed to fetch\n", result.error); + EXPECT_THAT(result.error, + ::testing::StartsWith( + "a JavaScript error:\nTypeError: Failed to fetch\n")); }
diff --git a/chrome/browser/enterprise/connectors/connectors_service.cc b/chrome/browser/enterprise/connectors/connectors_service.cc index 30c4ef2..5842ff38 100644 --- a/chrome/browser/enterprise/connectors/connectors_service.cc +++ b/chrome/browser/enterprise/connectors/connectors_service.cc
@@ -209,7 +209,7 @@ "token_endpoint": "https://api.box.com/oauth2/token", "max_direct_size": 20971520, "scopes": [], - "disable": [ "box.com" ] + "disable": [ "box.com", "boxcloud.com" ] } } }
diff --git a/chrome/browser/enterprise/connectors/service_provider_config_unittest.cc b/chrome/browser/enterprise/connectors/service_provider_config_unittest.cc index aacead5b..9f71760 100644 --- a/chrome/browser/enterprise/connectors/service_provider_config_unittest.cc +++ b/chrome/browser/enterprise/connectors/service_provider_config_unittest.cc
@@ -97,8 +97,9 @@ service_provider->fs_token_endpoint()); ASSERT_EQ(20u * 1024 * 1024, service_provider->fs_max_direct_size()); ASSERT_TRUE(service_provider->fs_scopes().empty()); - ASSERT_EQ(1u, service_provider->fs_disable().size()); + ASSERT_EQ(2u, service_provider->fs_disable().size()); ASSERT_EQ("box.com", service_provider->fs_disable()[0]); + ASSERT_EQ("boxcloud.com", service_provider->fs_disable()[1]); } } // namespace enterprise_connectors
diff --git a/chrome/browser/enterprise/signals/context_info_fetcher.cc b/chrome/browser/enterprise/signals/context_info_fetcher.cc index ecb52a7..25f3ca9 100644 --- a/chrome/browser/enterprise/signals/context_info_fetcher.cc +++ b/chrome/browser/enterprise/signals/context_info_fetcher.cc
@@ -6,7 +6,9 @@ #include <memory> -#include "base/threading/thread_task_runner_handle.h" +#include "base/files/file_util.h" +#include "base/strings/string_split.h" +#include "base/task/thread_pool.h" #include "build/build_config.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/enterprise/connectors/connectors_service.h" @@ -38,6 +40,37 @@ return state == policy::URLBlocklist::URLBlocklistState::URL_IN_BLOCKLIST; } +#if defined(OS_LINUX) +const char** GetUfwConfigPath() { + static const char* path = "/etc/ufw/ufw.conf"; + return &path; +} + +SettingValue GetUfwStatus() { + base::FilePath path(*GetUfwConfigPath()); + std::string file_content; + base::StringPairs values; + + if (!base::PathExists(path) || !base::PathIsReadable(path) || + !base::ReadFileToString(path, &file_content)) { + return SettingValue::UNKNOWN; + } + base::SplitStringIntoKeyValuePairs(file_content, '=', '\n', &values); + auto is_ufw_enabled = std::find_if(values.begin(), values.end(), [](auto v) { + return v.first == "ENABLED"; + }); + if (is_ufw_enabled == values.end()) + return SettingValue::UNKNOWN; + + if (is_ufw_enabled->second == "yes") + return SettingValue::ENABLED; + else if (is_ufw_enabled->second == "no") + return SettingValue::DISABLED; + else + return SettingValue::UNKNOWN; +} +#endif // defined(OS_LINUX) + } // namespace ContextInfo::ContextInfo() = default; @@ -64,6 +97,12 @@ connectors_service); } +ContextInfo ContextInfoFetcher::FetchAsyncSignals(ContextInfo info) { + // Add other async signals here + info.os_firewall = GetOSFirewall(); + return info; +} + void ContextInfoFetcher::Fetch(ContextInfoCallback callback) { ContextInfo info; @@ -87,9 +126,23 @@ info.chrome_cleanup_enabled = GetChromeCleanupEnabled(); info.chrome_remote_desktop_app_blocked = GetChromeRemoteDesktopAppBlocked(); info.third_party_blocking_enabled = GetThirdPartyBLockingEnabled(); - info.os_firewall = GetOSFirewall(); - base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::BindOnce(std::move(callback), std::move(info))); +#if defined(OS_WIN) + base::ThreadPool::CreateCOMSTATaskRunner({}) + .get() + ->PostTaskAndReplyWithResult( + FROM_HERE, + base::BindOnce(&ContextInfoFetcher::FetchAsyncSignals, + base::Unretained(this), std::move(info)), + std::move(callback)); +#else + base::ThreadPool::CreateTaskRunner({base::MayBlock()}) + .get() + ->PostTaskAndReplyWithResult( + FROM_HERE, + base::BindOnce(&ContextInfoFetcher::FetchAsyncSignals, + base::Unretained(this), std::move(info)), + std::move(callback)); +#endif } std::vector<std::string> ContextInfoFetcher::GetBrowserAffiliationIDs() { @@ -181,7 +234,22 @@ } SettingValue ContextInfoFetcher::GetOSFirewall() { +#if defined(OS_LINUX) + return GetUfwStatus(); +#else return SettingValue::UNKNOWN; +#endif } +#if defined(OS_LINUX) +ScopedUfwConfigPathForTesting::ScopedUfwConfigPathForTesting(const char* path) + : initial_path_(*GetUfwConfigPath()) { + *GetUfwConfigPath() = path; +} + +ScopedUfwConfigPathForTesting::~ScopedUfwConfigPathForTesting() { + *GetUfwConfigPath() = initial_path_; +} +#endif // defined(OS_LINUX) + } // namespace enterprise_signals
diff --git a/chrome/browser/enterprise/signals/context_info_fetcher.h b/chrome/browser/enterprise/signals/context_info_fetcher.h index 5d00513..3850e4929 100644 --- a/chrome/browser/enterprise/signals/context_info_fetcher.h +++ b/chrome/browser/enterprise/signals/context_info_fetcher.h
@@ -9,6 +9,7 @@ #include <vector> #include "base/callback_forward.h" +#include "build/build_config.h" #include "chrome/browser/enterprise/signals/signals_common.h" #include "components/safe_browsing/core/common/safe_browsing_prefs.h" @@ -105,12 +106,29 @@ SettingValue GetOSFirewall(); + ContextInfo FetchAsyncSignals(ContextInfo info); + content::BrowserContext* browser_context_; // |connectors_service| is used to obtain the value of each Connector policy. enterprise_connectors::ConnectorsService* connectors_service_; }; +#if defined(OS_LINUX) +class ScopedUfwConfigPathForTesting { + public: + explicit ScopedUfwConfigPathForTesting(const char* path); + ~ScopedUfwConfigPathForTesting(); + + ScopedUfwConfigPathForTesting& operator=( + const ScopedUfwConfigPathForTesting&) = delete; + ScopedUfwConfigPathForTesting(const ScopedUfwConfigPathForTesting&) = delete; + + private: + const char* initial_path_; +}; +#endif // defined(OS_LINUX) + } // namespace enterprise_signals #endif // CHROME_BROWSER_ENTERPRISE_SIGNALS_CONTEXT_INFO_FETCHER_H_
diff --git a/chrome/browser/extensions/api/automation/automation_apitest.cc b/chrome/browser/extensions/api/automation/automation_apitest.cc index 9450043a..15573122 100644 --- a/chrome/browser/extensions/api/automation/automation_apitest.cc +++ b/chrome/browser/extensions/api/automation/automation_apitest.cc
@@ -239,7 +239,14 @@ << message_; } -IN_PROC_BROWSER_TEST_F(AutomationApiTest, TabsAutomationBooleanActions) { +// Flaky on Mac: crbug.com/1235249 +#if defined(OS_MAC) +#define MAYBE_TabsAutomationBooleanActions \ + DISABLED_TabsAutomationBooleanActions +#else +#define MAYBE_TabsAutomationBooleanActions TabsAutomationBooleanActions +#endif +IN_PROC_BROWSER_TEST_F(AutomationApiTest, MAYBE_TabsAutomationBooleanActions) { StartEmbeddedTestServer(); ASSERT_TRUE(RunExtensionTest("automation/tests/tabs_automation_boolean", {.page_url = "actions.html"}))
diff --git a/chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_unittest.cc b/chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_unittest.cc index 86d637b..b331d117 100644 --- a/chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_unittest.cc +++ b/chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_unittest.cc
@@ -4,6 +4,7 @@ #include <tuple> +#include "base/files/file_util.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/enterprise/signals/device_info_fetcher.h" #include "chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_api.h" @@ -623,6 +624,108 @@ enterprise_reporting_private:: PASSWORD_PROTECTION_TRIGGER_PHISHING_REUSE)); +#if defined(OS_LINUX) +class EnterpriseReportingPrivateGetContextOSFirewallLinuxTest + : public EnterpriseReportingPrivateGetContextInfoTest, + public testing::WithParamInterface< + enterprise_reporting_private::SettingValue> { + public: + void SetUp() override { + ExtensionApiUnittest::SetUp(); + ASSERT_TRUE(fake_appdata_dir_.CreateUniqueTempDir()); + file_path_ = fake_appdata_dir_.GetPath().Append("ufw.conf"); + } + + void ExpectDefaultPolicies( + const enterprise_reporting_private::ContextInfo& info) { + EXPECT_TRUE(info.browser_affiliation_ids.empty()); + EXPECT_TRUE(info.profile_affiliation_ids.empty()); + EXPECT_TRUE(info.on_file_attached_providers.empty()); + EXPECT_TRUE(info.on_file_downloaded_providers.empty()); + EXPECT_TRUE(info.on_bulk_data_entry_providers.empty()); + EXPECT_EQ(enterprise_reporting_private::REALTIME_URL_CHECK_MODE_DISABLED, + info.realtime_url_check_mode); + EXPECT_TRUE(info.on_security_event_providers.empty()); + EXPECT_EQ(version_info::GetVersionNumber(), info.browser_version); + EXPECT_EQ(enterprise_reporting_private::SAFE_BROWSING_LEVEL_STANDARD, + info.safe_browsing_protection_level); + EXPECT_EQ(BuiltInDnsClientPlatformDefault(), + info.built_in_dns_client_enabled); + EXPECT_EQ( + enterprise_reporting_private::PASSWORD_PROTECTION_TRIGGER_POLICY_UNSET, + info.password_protection_warning_trigger); + ExpectDefaultChromeCleanupEnabled(info); + EXPECT_FALSE(info.chrome_remote_desktop_app_blocked); + ExpectDefaultThirdPartyBlockingEnabled(info); + } + + protected: + base::ScopedTempDir fake_appdata_dir_; + base::FilePath file_path_; +}; + +TEST_F(EnterpriseReportingPrivateGetContextOSFirewallLinuxTest, + NoFirewallFile) { + // Refer to a non existent firewall config file + enterprise_signals::ScopedUfwConfigPathForTesting scoped_path( + file_path_.value().c_str()); + enterprise_reporting_private::ContextInfo info = GetContextInfo(); + + ExpectDefaultPolicies(info); + EXPECT_EQ(info.os_firewall, + enterprise_reporting_private::SETTING_VALUE_UNKNOWN); +} + +TEST_F(EnterpriseReportingPrivateGetContextOSFirewallLinuxTest, NoEnabledKey) { + // Refer to a config file without the ENABLED=value key-value pair + base::WriteFile(file_path_, + "#comment1\n#comment2\nLOGLEVEL=yes\nTESTKEY=yes\n"); + enterprise_signals::ScopedUfwConfigPathForTesting scoped_path( + file_path_.value().c_str()); + enterprise_reporting_private::ContextInfo info = GetContextInfo(); + + ExpectDefaultPolicies(info); + EXPECT_EQ(info.os_firewall, + enterprise_reporting_private::SETTING_VALUE_UNKNOWN); +} + +TEST_P(EnterpriseReportingPrivateGetContextOSFirewallLinuxTest, Test) { + enterprise_reporting_private::SettingValue os_firewall_value = GetParam(); + switch (os_firewall_value) { + case enterprise_reporting_private::SETTING_VALUE_ENABLED: + // File format to test if comments, empty lines and strings containing the + // key are ignored + base::WriteFile(file_path_, + "#ENABLED=no\nrandomtextENABLED=no\n \nENABLED=yes\n"); + break; + case enterprise_reporting_private::SETTING_VALUE_DISABLED: + base::WriteFile(file_path_, + "#ENABLED=yes\nENABLEDrandomtext=yes\n \nENABLED=no\n"); + break; + case enterprise_reporting_private::SETTING_VALUE_UNKNOWN: + // File content to test a value that isn't yes or no + base::WriteFile(file_path_, + "#ENABLED=yes\nLOGLEVEL=yes\nENABLED=yesno\n"); + break; + default: + NOTREACHED(); + } + + enterprise_signals::ScopedUfwConfigPathForTesting scoped_path( + file_path_.value().c_str()); + enterprise_reporting_private::ContextInfo info = GetContextInfo(); + ExpectDefaultPolicies(info); + EXPECT_EQ(info.os_firewall, os_firewall_value); +} + +INSTANTIATE_TEST_SUITE_P( + , + EnterpriseReportingPrivateGetContextOSFirewallLinuxTest, + testing::Values(enterprise_reporting_private::SETTING_VALUE_ENABLED, + enterprise_reporting_private::SETTING_VALUE_DISABLED, + enterprise_reporting_private::SETTING_VALUE_UNKNOWN)); +#endif // defined(OS_LINUX) + #if defined(OS_WIN) class EnterpriseReportingPrivateGetContextInfoChromeCleanupTest : public EnterpriseReportingPrivateGetContextInfoTest,
diff --git a/chrome/browser/extensions/api/scripting/scripting_api.cc b/chrome/browser/extensions/api/scripting/scripting_api.cc index 23c02a2..ba78e3b 100644 --- a/chrome/browser/extensions/api/scripting/scripting_api.cc +++ b/chrome/browser/extensions/api/scripting/scripting_api.cc
@@ -888,7 +888,7 @@ api::scripting::GetRegisteredContentScripts::Params::Create(*args_)); EXTENSION_FUNCTION_VALIDATE(params); - std::unique_ptr<api::scripting::ContentScriptFilter>& filter = params->filter; + const api::scripting::ContentScriptFilter* filter = params->filter.get(); std::set<std::string> id_filter; if (filter && filter->ids) { id_filter.insert(std::make_move_iterator(filter->ids->begin()), @@ -912,4 +912,63 @@ script_infos))); } +ScriptingUnregisterContentScriptsFunction:: + ScriptingUnregisterContentScriptsFunction() = default; +ScriptingUnregisterContentScriptsFunction:: + ~ScriptingUnregisterContentScriptsFunction() = default; + +ExtensionFunction::ResponseAction +ScriptingUnregisterContentScriptsFunction::Run() { + auto params(api::scripting::UnregisterContentScripts::Params::Create(*args_)); + EXTENSION_FUNCTION_VALIDATE(params); + + std::unique_ptr<api::scripting::ContentScriptFilter>& filter = params->filter; + std::set<std::string> ids_to_remove; + + ExtensionUserScriptLoader* loader = + ExtensionSystem::Get(browser_context()) + ->user_script_manager() + ->GetUserScriptLoaderForExtension(extension()->id()); + std::set<std::string> existing_script_ids = loader->GetDynamicScriptIDs(); + if (filter && filter->ids) { + for (const auto& id : *filter->ids) { + if (UserScript::IsIDGenerated(id)) { + return RespondNow(Error(base::StringPrintf( + "Content script's ID '%s' must not start with '%c'", id.c_str(), + UserScript::kGeneratedIDPrefix))); + } + + if (!base::Contains(existing_script_ids, id)) { + return RespondNow(Error( + base::StringPrintf("Nonexistent script ID '%s'", id.c_str()))); + } + + ids_to_remove.insert(id); + } + } + + if (ids_to_remove.empty()) { + loader->ClearDynamicScripts( + base::BindOnce(&ScriptingUnregisterContentScriptsFunction:: + OnContentScriptsUnregistered, + this)); + } else { + loader->RemoveDynamicScripts( + std::move(ids_to_remove), + base::BindOnce(&ScriptingUnregisterContentScriptsFunction:: + OnContentScriptsUnregistered, + this)); + } + + return RespondLater(); +} + +void ScriptingUnregisterContentScriptsFunction::OnContentScriptsUnregistered( + const absl::optional<std::string>& error) { + if (error.has_value()) + Respond(Error(*error)); + else + Respond(NoArguments()); +} + } // namespace extensions
diff --git a/chrome/browser/extensions/api/scripting/scripting_api.h b/chrome/browser/extensions/api/scripting/scripting_api.h index ba93a23..73313827 100644 --- a/chrome/browser/extensions/api/scripting/scripting_api.h +++ b/chrome/browser/extensions/api/scripting/scripting_api.h
@@ -153,6 +153,27 @@ ~ScriptingGetRegisteredContentScriptsFunction() override; }; +class ScriptingUnregisterContentScriptsFunction : public ExtensionFunction { + public: + DECLARE_EXTENSION_FUNCTION("scripting.unregisterContentScripts", + SCRIPTING_UNREGISTERCONTENTSCRIPTS) + + ScriptingUnregisterContentScriptsFunction(); + ScriptingUnregisterContentScriptsFunction( + const ScriptingUnregisterContentScriptsFunction&) = delete; + ScriptingUnregisterContentScriptsFunction& operator=( + const ScriptingUnregisterContentScriptsFunction&) = delete; + + // ExtensionFunction: + ResponseAction Run() override; + + private: + ~ScriptingUnregisterContentScriptsFunction() override; + + // Called when content scripts have been unregistered. + void OnContentScriptsUnregistered(const absl::optional<std::string>& error); +}; + } // namespace extensions #endif // CHROME_BROWSER_EXTENSIONS_API_SCRIPTING_SCRIPTING_API_H_
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index a7297fdf..92fd580 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -4483,6 +4483,11 @@ "expiry_milestone": 94 }, { + "name": "partitioned-cookies", + "owners": [ "dylancutler" ], + "expiry_milestone": 100 + }, + { "name": "password-change-in-settings", "owners": [ "kolos" ], "expiry_milestone": 95
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 61af972..ed677d0 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -2310,6 +2310,10 @@ "If enabled, SameParty cookies will not be blocked even if third-party " "cookies are blocked."; +const char kPartitionedCookiesName[] = "Partitioned cookies"; +const char kPartitionedCookiesDescription[] = + "Controls if the Partitioned cookie attribute is enabled."; + const char kSchemefulSameSiteName[] = "Schemeful Same-Site"; const char kSchemefulSameSiteDescription[] = "Modify the same-site computation such that origins with the same "
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index 231731c3..351f8306 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -1319,6 +1319,9 @@ extern const char kSamePartyCookiesConsideredFirstPartyName[]; extern const char kSamePartyCookiesConsideredFirstPartyDescription[]; +extern const char kPartitionedCookiesName[]; +extern const char kPartitionedCookiesDescription[]; + extern const char kSchemefulSameSiteName[]; extern const char kSchemefulSameSiteDescription[];
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc index a4f8bbd..a2ee637f 100644 --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -371,7 +371,7 @@ "FocusOmniboxInIncognitoTabIntents", base::FEATURE_ENABLED_BY_DEFAULT}; const base::Feature kAllowRemoteContextForNotifications{ - "AllowRemoteContextForNotifications", base::FEATURE_ENABLED_BY_DEFAULT}; + "AllowRemoteContextForNotifications", base::FEATURE_DISABLED_BY_DEFAULT}; const base::Feature kAndroidPartnerCustomizationPhenotype{ "AndroidPartnerCustomizationPhenotype", base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/chrome/browser/importer/firefox_profile_lock_fuchsia.cc b/chrome/browser/importer/firefox_profile_lock_fuchsia.cc new file mode 100644 index 0000000..df2d39b7 --- /dev/null +++ b/chrome/browser/importer/firefox_profile_lock_fuchsia.cc
@@ -0,0 +1,20 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/importer/firefox_profile_lock.h" + +// The FirefoxProfileLock is empty on Fuchsia because the filesystem is not +// shared across component, so settings file will have to be imported into the +// Chrome process and will then be accessed read-only. No lock is needed in that +// situation. + +void FirefoxProfileLock::Init() {} + +void FirefoxProfileLock::Lock() {} + +void FirefoxProfileLock::Unlock() {} + +bool FirefoxProfileLock::HasAcquired() { + return true; +}
diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/browser/metrics/chrome_metrics_service_client.cc index bde4ce2..2a077ec70a 100644 --- a/chrome/browser/metrics/chrome_metrics_service_client.cc +++ b/chrome/browser/metrics/chrome_metrics_service_client.cc
@@ -371,6 +371,10 @@ // with no signal being sent. if (kill(pid, 0) == 0 || errno != ESRCH) return true; +#elif defined(OS_FUCHSIA) + // TODO(crbug.com/1235293) + NOTIMPLEMENTED_LOG_ONCE(); + return false; #else #error Unsupported OS. Might be okay to just return false. #endif
diff --git a/chrome/browser/net/profile_network_context_service.cc b/chrome/browser/net/profile_network_context_service.cc index c851880..11426ee2 100644 --- a/chrome/browser/net/profile_network_context_service.cc +++ b/chrome/browser/net/profile_network_context_service.cc
@@ -593,6 +593,10 @@ // cert matching is done by the OS as part of the call to show the cert // selection dialog. return nullptr; +#elif defined(OS_FUCHSIA) + // TODO(crbug.com/1235293) + NOTIMPLEMENTED_LOG_ONCE(); + return nullptr; #else #error Unknown platform. #endif
diff --git a/chrome/browser/performance_monitor/system_monitor.cc b/chrome/browser/performance_monitor/system_monitor.cc index 4b50d80..55b8343 100644 --- a/chrome/browser/performance_monitor/system_monitor.cc +++ b/chrome/browser/performance_monitor/system_monitor.cc
@@ -9,6 +9,7 @@ #include "base/feature_list.h" #include "base/memory/ptr_util.h" +#include "base/notreached.h" #include "base/task/post_task.h" #include "base/task/thread_pool.h" #include "base/task_runner_util.h" @@ -242,13 +243,16 @@ std::unique_ptr<MetricEvaluatorsHelper> SystemMonitor::CreateMetricEvaluatorsHelper() { #if defined(OS_WIN) - MetricEvaluatorsHelper* helper = new MetricEvaluatorsHelperWin(); + return base::WrapUnique(new MetricEvaluatorsHelperWin()); #elif defined(OS_POSIX) - MetricEvaluatorsHelper* helper = new MetricEvaluatorsHelperPosix(); + return std::make_unique<MetricEvaluatorsHelperPosix>(); +#elif defined(OS_FUCHSIA) + // TODO(crbug.com/1235293) + NOTIMPLEMENTED_LOG_ONCE(); + return nullptr; #else #error Unsupported platform #endif - return base::WrapUnique(helper); } SystemMonitor::MetricEvaluator::MetricEvaluator(Type type) : type_(type) {}
diff --git a/chrome/browser/platform_util_fuchsia.cc b/chrome/browser/platform_util_fuchsia.cc new file mode 100644 index 0000000..3b59da0 --- /dev/null +++ b/chrome/browser/platform_util_fuchsia.cc
@@ -0,0 +1,29 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/platform_util.h" + +#include "base/notreached.h" +namespace platform_util { + +void ShowItemInFolder(Profile* profile, const base::FilePath& full_path) { + // TODO(crbug.com/1235293) + NOTIMPLEMENTED_LOG_ONCE(); +} + +namespace internal { + +void PlatformOpenVerifiedItem(const base::FilePath& path, OpenItemType type) { + // TODO(crbug.com/1235293) + NOTIMPLEMENTED_LOG_ONCE(); +} + +} // namespace internal + +void OpenExternal(Profile* profile, const GURL& url) { + // TODO(crbug.com/1235293) + NOTIMPLEMENTED_LOG_ONCE(); +} + +} // namespace platform_util
diff --git a/chrome/browser/policy/browser_dm_token_storage_fuchsia.cc b/chrome/browser/policy/browser_dm_token_storage_fuchsia.cc new file mode 100644 index 0000000..8ae1d17 --- /dev/null +++ b/chrome/browser/policy/browser_dm_token_storage_fuchsia.cc
@@ -0,0 +1,62 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/policy/browser_dm_token_storage_fuchsia.h" + +#include <string> + +#include "base/notreached.h" +#include "base/task/thread_pool.h" + +namespace policy { +namespace { +bool LogAndDoNothing() { + // TODO(crbug.com/1236996) + NOTIMPLEMENTED_LOG_ONCE(); + return false; +} +} // namespace + +BrowserDMTokenStorageFuchsia::BrowserDMTokenStorageFuchsia() + : task_runner_(base::ThreadPool::CreateTaskRunner({base::MayBlock()})) {} + +BrowserDMTokenStorageFuchsia::~BrowserDMTokenStorageFuchsia() {} + +std::string BrowserDMTokenStorageFuchsia::InitClientId() { + // TODO(crbug.com/1236996) + NOTIMPLEMENTED_LOG_ONCE(); + return std::string(); +} + +std::string BrowserDMTokenStorageFuchsia::InitEnrollmentToken() { + // TODO(crbug.com/1236996) + NOTIMPLEMENTED_LOG_ONCE(); + return std::string(); +} + +std::string BrowserDMTokenStorageFuchsia::InitDMToken() { + // TODO(crbug.com/1236996) + NOTIMPLEMENTED_LOG_ONCE(); + return std::string(); +} + +bool BrowserDMTokenStorageFuchsia::InitEnrollmentErrorOption() { + // TODO(crbug.com/1236996) + NOTIMPLEMENTED_LOG_ONCE(); + return false; +} + +BrowserDMTokenStorage::StoreTask BrowserDMTokenStorageFuchsia::SaveDMTokenTask( + const std::string& token, + const std::string& client_id) { + // TODO(crbug.com/1236996) + return base::BindOnce(&LogAndDoNothing); +} + +scoped_refptr<base::TaskRunner> +BrowserDMTokenStorageFuchsia::SaveDMTokenTaskRunner() { + return task_runner_; +} + +} // namespace policy
diff --git a/chrome/browser/policy/browser_dm_token_storage_fuchsia.h b/chrome/browser/policy/browser_dm_token_storage_fuchsia.h new file mode 100644 index 0000000..70b79141 --- /dev/null +++ b/chrome/browser/policy/browser_dm_token_storage_fuchsia.h
@@ -0,0 +1,38 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_POLICY_BROWSER_DM_TOKEN_STORAGE_FUCHSIA_H_ +#define CHROME_BROWSER_POLICY_BROWSER_DM_TOKEN_STORAGE_FUCHSIA_H_ + +#include "components/enterprise/browser/controller/browser_dm_token_storage.h" + +#include <string> + +namespace policy { + +// Implementation of BrowserDMTokenStorage delegate for Fuchsia. +class BrowserDMTokenStorageFuchsia : public BrowserDMTokenStorage::Delegate { + public: + BrowserDMTokenStorageFuchsia(); + BrowserDMTokenStorageFuchsia(const BrowserDMTokenStorageFuchsia&) = delete; + BrowserDMTokenStorageFuchsia& operator=(const BrowserDMTokenStorageFuchsia&) = + delete; + ~BrowserDMTokenStorageFuchsia() override; + + private: + // override BrowserDMTokenStorage::Delegate + std::string InitClientId() override; + std::string InitEnrollmentToken() override; + std::string InitDMToken() override; + bool InitEnrollmentErrorOption() override; + BrowserDMTokenStorage::StoreTask SaveDMTokenTask( + const std::string& token, + const std::string& client_id) override; + scoped_refptr<base::TaskRunner> SaveDMTokenTaskRunner() override; + + scoped_refptr<base::TaskRunner> task_runner_; +}; + +} // namespace policy +#endif // CHROME_BROWSER_POLICY_BROWSER_DM_TOKEN_STORAGE_FUCHSIA_H_
diff --git a/chrome/browser/policy/chrome_browser_cloud_management_controller_desktop.cc b/chrome/browser/policy/chrome_browser_cloud_management_controller_desktop.cc index 4047f4a..8fea0ead 100644 --- a/chrome/browser/policy/chrome_browser_cloud_management_controller_desktop.cc +++ b/chrome/browser/policy/chrome_browser_cloud_management_controller_desktop.cc
@@ -54,9 +54,8 @@ #endif // defined(OS_WIN) #if defined(OS_FUCHSIA) -#include "base/notreached.h" -#include "components/enterprise/browser/controller/browser_dm_token_storage.h" -#endif +#include "chrome/browser/policy/browser_dm_token_storage_fuchsia.h" +#endif // defined(OS_FUCHSIA) namespace policy { @@ -85,6 +84,8 @@ storage_delegate = std::make_unique<BrowserDMTokenStorageLinux>(); #elif defined(OS_WIN) storage_delegate = std::make_unique<BrowserDMTokenStorageWin>(); +#elif defined(OS_FUCHSIA) + storage_delegate = std::make_unique<BrowserDMTokenStorageFuchsia>(); #else NOTREACHED(); #endif
diff --git a/chrome/browser/policy/policy_path_parser_fuchsia.cc b/chrome/browser/policy/policy_path_parser_fuchsia.cc index 1b55658..139a417 100644 --- a/chrome/browser/policy/policy_path_parser_fuchsia.cc +++ b/chrome/browser/policy/policy_path_parser_fuchsia.cc
@@ -6,6 +6,7 @@ #include <string> +#include "base/logging.h" #include "base/notreached.h" namespace policy {
diff --git a/chrome/browser/process_singleton_fuchsia.cc b/chrome/browser/process_singleton_fuchsia.cc new file mode 100644 index 0000000..9ab1745 --- /dev/null +++ b/chrome/browser/process_singleton_fuchsia.cc
@@ -0,0 +1,44 @@ +// 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. + +// On Fuchsia, we assume that the Component Framework ensures that only a single +// Chrome component instance will run against a particular data-directory. +// This file contains a stubbed-out ProcessSingleton implementation. :) +// +// In future we will need to support a mechanism for URL launch attempts to +// be handled by a running Chrome instance, e.g. by registering the instance as +// the Runner for HTTP[S] component URLs. + +#include "chrome/browser/process_singleton.h" + +ProcessSingleton::ProcessSingleton( + const base::FilePath& user_data_dir, + const NotificationCallback& notification_callback) {} + +ProcessSingleton::~ProcessSingleton() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +} + +ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcess() { + // TODO(crbug.com/1235293) + NOTIMPLEMENTED_LOG_ONCE(); + return PROCESS_NONE; +} + +ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcessOrCreate() { + // TODO(crbug.com/1235293) + NOTIMPLEMENTED_LOG_ONCE(); + return PROCESS_NONE; +} + +bool ProcessSingleton::Create() { + // TODO(crbug.com/1235293) + NOTIMPLEMENTED_LOG_ONCE(); + return true; +} + +void ProcessSingleton::Cleanup() { + // TODO(crbug.com/1235293) + NOTIMPLEMENTED_LOG_ONCE(); +}
diff --git a/chrome/browser/resources/bookmarks/item.html b/chrome/browser/resources/bookmarks/item.html index f8deef96..f068183 100644 --- a/chrome/browser/resources/bookmarks/item.html +++ b/chrome/browser/resources/bookmarks/item.html
@@ -100,8 +100,8 @@ <div id="website-title" class="elided-text" title="[[item_.title]]"> [[item_.title]] </div> - <div id="website-url" class="elided-text" title="[[item_.url]]"> - [[item_.url]] + <div id="website-url" class="elided-text" title="[[getItemUrl_(item_)]]"> + [[getItemUrl_(item_)]] </div> </div> <div role="gridcell"> @@ -113,4 +113,4 @@ isMultiSelect_)]]" on-click="onMenuButtonClick_" aria-haspopup="menu"></cr-icon-button> -</div> \ No newline at end of file +</div>
diff --git a/chrome/browser/resources/bookmarks/item.ts b/chrome/browser/resources/bookmarks/item.ts index e82c8633..61a20dc 100644 --- a/chrome/browser/resources/bookmarks/item.ts +++ b/chrome/browser/resources/bookmarks/item.ts
@@ -178,6 +178,10 @@ })); } + private getItemUrl_(): string { + return this.item_.url || ''; + } + private onItemIdChanged_() { // TODO(tsergeant): Add a histogram to measure whether this assertion fails // for real users.
diff --git a/chrome/browser/resources/chromeos/crostini_upgrader/index.html b/chrome/browser/resources/chromeos/crostini_upgrader/index.html index 50d60ef..f670e6b 100644 --- a/chrome/browser/resources/chromeos/crostini_upgrader/index.html +++ b/chrome/browser/resources/chromeos/crostini_upgrader/index.html
@@ -8,7 +8,7 @@ } </style> <link rel="stylesheet" href="chrome://resources/css/text_defaults_md.css"> - <link rel="stylesheet" href="chrome://resources/chromeos/colors/cros_colors.generated.css"> + <link rel="stylesheet" href="chrome://resources/chromeos/colors/cros_styles.css"> <script type="module" src="app.js"></script> </head> <body>
diff --git a/chrome/browser/resources/chromeos/emoji_picker/index.html b/chrome/browser/resources/chromeos/emoji_picker/index.html index 3709ab1..21dfdcfb 100644 --- a/chrome/browser/resources/chromeos/emoji_picker/index.html +++ b/chrome/browser/resources/chromeos/emoji_picker/index.html
@@ -1,7 +1,7 @@ <!DOCTYPE HTML> <html> <head> - <link rel="stylesheet" href="chrome://resources/chromeos/colors/cros_colors.generated.css"> + <link rel="stylesheet" href="chrome://resources/chromeos/colors/cros_styles.css"> <meta charset="utf-8"> <title>Emoji Picker</title> <script type="module" src="emoji_picker.js"></script>
diff --git a/chrome/browser/resources/chromeos/zip_archiver/html/passphrase-dialog.html b/chrome/browser/resources/chromeos/zip_archiver/html/passphrase-dialog.html index 63221385..3807409 100644 --- a/chrome/browser/resources/chromeos/zip_archiver/html/passphrase-dialog.html +++ b/chrome/browser/resources/chromeos/zip_archiver/html/passphrase-dialog.html
@@ -1,7 +1,7 @@ <link rel="import" href="chrome://resources/html/polymer.html"> -<link rel="stylesheet" href="chrome://resources/chromeos/colors/cros_colors.generated.css"> +<link rel="stylesheet" href="chrome://resources/chromeos/colors/cros_styles.css"> <link rel="import" href="chrome://resources/cr_elements/cr_button/cr_button.html"> <link rel="import" href="chrome://resources/cr_elements/cr_input/cr_input.html">
diff --git a/chrome/browser/resources/settings/chromeos/BUILD.gn b/chrome/browser/resources/settings/chromeos/BUILD.gn index 9560e31..1b980b0 100644 --- a/chrome/browser/resources/settings/chromeos/BUILD.gn +++ b/chrome/browser/resources/settings/chromeos/BUILD.gn
@@ -59,7 +59,7 @@ "chrome://resources/cr_components/chromeos/cellular_setup/mojo_interface_provider.m.js", "chrome://resources/cr_components/chromeos/network/mojo_interface_provider.m.js", "chrome://resources/js/cr.m.js", - "chrome://resources/chromeos/colors/cros_colors.generated.css", + "chrome://resources/chromeos/colors/cros_styles.css", "chrome://resources/mojo/mojo/public/js/mojo_bindings_lite.js", "chrome://resources/mojo/url/mojom/url.mojom-lite.js", "chrome://resources/mojo/skia/public/mojom/bitmap.mojom-lite.js",
diff --git a/chrome/browser/resources/settings/chromeos/os_bluetooth_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/os_bluetooth_page/BUILD.gn index 3d560bb6..a34f989 100644 --- a/chrome/browser/resources/settings/chromeos/os_bluetooth_page/BUILD.gn +++ b/chrome/browser/resources/settings/chromeos/os_bluetooth_page/BUILD.gn
@@ -52,7 +52,6 @@ ":os_paired_bluetooth_list_item", "//third_party/polymer/v3_0/components-chromium/iron-list:iron-list", "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled", - "//ui/webui/resources/cr_elements:cr_scrollable_behavior.m", ] }
diff --git a/chrome/browser/resources/settings/chromeos/os_bluetooth_page/os_paired_bluetooth_list.html b/chrome/browser/resources/settings/chromeos/os_bluetooth_page/os_paired_bluetooth_list.html index 374815b..de4e45a9 100644 --- a/chrome/browser/resources/settings/chromeos/os_bluetooth_page/os_paired_bluetooth_list.html +++ b/chrome/browser/resources/settings/chromeos/os_bluetooth_page/os_paired_bluetooth_list.html
@@ -6,11 +6,11 @@ <!-- TODO(crbug.com/1010321): Populate with real data. --> <div id="container" class="layout vertical flex" scrollable no-bottom-scroll-border> - <iron-list items="[[devices]]" scroll-target="container" preserve-focus> + <iron-list items="[[devices_]]" scroll-target="container" preserve-focus> <template> - <!-- TODO(crbug.com/1010321): Fix focus behavior. --> - <os-settings-paired-bluetooth-list-item - tabindex="[[tabIndex]]"> + <!-- TODO(crbug.com/1010321): Add focus behavior, + fix not all elements rendering in large lists. --> + <os-settings-paired-bluetooth-list-item> </os-settings-paired-bluetooth-list-item> </template> </iron-list>
diff --git a/chrome/browser/resources/settings/chromeos/os_bluetooth_page/os_paired_bluetooth_list.js b/chrome/browser/resources/settings/chromeos/os_bluetooth_page/os_paired_bluetooth_list.js index 3a1b55e..086cb74d 100644 --- a/chrome/browser/resources/settings/chromeos/os_bluetooth_page/os_paired_bluetooth_list.js +++ b/chrome/browser/resources/settings/chromeos/os_bluetooth_page/os_paired_bluetooth_list.js
@@ -11,20 +11,10 @@ import './os_paired_bluetooth_list_item.js'; import '//resources/polymer/v3_0/iron-list/iron-list.js'; -import {CrScrollableBehavior, CrScrollableBehaviorInterface} from '//resources/cr_elements/cr_scrollable_behavior.m.js'; -import {html, mixinBehaviors, PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js'; - -/** - * @constructor - * @extends {PolymerElement} - * @implements {CrScrollableBehaviorInterface} - */ -const SettingsPairedBluetoothListElementBase = - mixinBehaviors([CrScrollableBehavior], PolymerElement); +import {html, PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js'; /** @polymer */ -class SettingsPairedBluetoothListElement extends - SettingsPairedBluetoothListElementBase { +class SettingsPairedBluetoothListElement extends PolymerElement { static get is() { return 'os-settings-paired-bluetooth-list'; } @@ -39,20 +29,14 @@ * TODO(crbug.com/1010321): Use actual Device objects. * @private {Array<Object>} */ - devices: { + devices_: { type: Array, - observer: 'onDevicesChanged_', - value: [], + value() { + return [{}, {}, {}]; + } } }; } - - /** @private */ - onDevicesChanged_() { - // CrScrollableBehaviorInterface method required for list items to be - // properly rendered when devices updates. - this.updateScrollableContents(); - } } customElements.define(
diff --git a/chrome/browser/resources/settings/chromeos/os_settings_v3.html b/chrome/browser/resources/settings/chromeos/os_settings_v3.html index 82cab7f6d..d66992e 100644 --- a/chrome/browser/resources/settings/chromeos/os_settings_v3.html +++ b/chrome/browser/resources/settings/chromeos/os_settings_v3.html
@@ -4,7 +4,7 @@ <meta charset="utf-8"> <title>$i18n{settings}</title> <base href="chrome://os-settings"> - <link rel="stylesheet" href="chrome://resources/chromeos/colors/cros_colors.generated.css"> + <link rel="stylesheet" href="chrome://resources/chromeos/colors/cros_styles.css"> <style> /* The :not(body) selector allows the variable definitions below to 'win' against the shared ones. */
diff --git a/chrome/browser/send_tab_to_self/receiving_ui_handler_registry.cc b/chrome/browser/send_tab_to_self/receiving_ui_handler_registry.cc index f5115d0..b0b4324 100644 --- a/chrome/browser/send_tab_to_self/receiving_ui_handler_registry.cc +++ b/chrome/browser/send_tab_to_self/receiving_ui_handler_registry.cc
@@ -7,6 +7,7 @@ #include <vector> #include "base/memory/singleton.h" +#include "base/notreached.h" #include "build/build_config.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/send_tab_to_self/receiving_ui_handler.h" @@ -72,6 +73,10 @@ return button_controller; #elif defined(OS_ANDROID) return nullptr; +#elif defined(OS_FUCHSIA) + // TODO(crbug.com/1235293) + NOTIMPLEMENTED_LOG_ONCE(); + return nullptr; #endif }
diff --git a/chrome/browser/sessions/tab_restore_service_factory.cc b/chrome/browser/sessions/tab_restore_service_factory.cc index ca0c8677..fac93868 100644 --- a/chrome/browser/sessions/tab_restore_service_factory.cc +++ b/chrome/browser/sessions/tab_restore_service_factory.cc
@@ -11,6 +11,19 @@ #include "components/keyed_service/content/browser_context_dependency_manager.h" #include "components/sessions/core/tab_restore_service_impl.h" +namespace { + +std::unique_ptr<KeyedService> BuildTemplateService( + content::BrowserContext* browser_context) { + Profile* profile = Profile::FromBrowserContext(browser_context); + DCHECK(!profile->IsOffTheRecord()); + auto client = std::make_unique<ChromeTabRestoreServiceClient>(profile); + return std::make_unique<sessions::TabRestoreServiceImpl>( + std::move(client), profile->GetPrefs(), nullptr); +} + +} // namespace + // static sessions::TabRestoreService* TabRestoreServiceFactory::GetForProfile( Profile* profile) { @@ -36,13 +49,18 @@ return base::Singleton<TabRestoreServiceFactory>::get(); } +// static +BrowserContextKeyedServiceFactory::TestingFactory +TabRestoreServiceFactory::GetDefaultFactory() { + return base::BindRepeating(&BuildTemplateService); +} + TabRestoreServiceFactory::TabRestoreServiceFactory() : BrowserContextKeyedServiceFactory( "sessions::TabRestoreService", BrowserContextDependencyManager::GetInstance()) {} -TabRestoreServiceFactory::~TabRestoreServiceFactory() { -} +TabRestoreServiceFactory::~TabRestoreServiceFactory() = default; bool TabRestoreServiceFactory::ServiceIsNULLWhileTesting() const { return true; @@ -50,11 +68,5 @@ KeyedService* TabRestoreServiceFactory::BuildServiceInstanceFor( content::BrowserContext* browser_context) const { - Profile* profile = Profile::FromBrowserContext(browser_context); - DCHECK(!profile->IsOffTheRecord()); - std::unique_ptr<sessions::TabRestoreServiceClient> client( - new ChromeTabRestoreServiceClient(profile)); - - return new sessions::TabRestoreServiceImpl(std::move(client), - profile->GetPrefs(), nullptr); + return BuildTemplateService(browser_context).release(); }
diff --git a/chrome/browser/sessions/tab_restore_service_factory.h b/chrome/browser/sessions/tab_restore_service_factory.h index 20b82cc..180d325 100644 --- a/chrome/browser/sessions/tab_restore_service_factory.h +++ b/chrome/browser/sessions/tab_restore_service_factory.h
@@ -29,6 +29,9 @@ static TabRestoreServiceFactory* GetInstance(); + // Returns the default factory, useful in tests where it's null by default. + static TestingFactory GetDefaultFactory(); + private: friend struct base::DefaultSingletonTraits<TabRestoreServiceFactory>;
diff --git a/chrome/browser/site_isolation/chrome_site_per_process_browsertest.cc b/chrome/browser/site_isolation/chrome_site_per_process_browsertest.cc index ec60a931..73ae3d20 100644 --- a/chrome/browser/site_isolation/chrome_site_per_process_browsertest.cc +++ b/chrome/browser/site_isolation/chrome_site_per_process_browsertest.cc
@@ -1252,16 +1252,9 @@ // Tests that a same-site iframe runs its beforeunload handler when closing a // tab. Same as the test above, but for a same-site rather than cross-site // iframe. See https://crbug.com/1010456. -// Flaky on Linux, ChromeOS and Windows (crbug.com/1033002) -#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_WIN) -#define MAYBE_TabCloseWithSameSiteBeforeUnloadIframe \ - DISABLED_TabCloseWithSameSiteBeforeUnloadIframe -#else -#define MAYBE_TabCloseWithSameSiteBeforeUnloadIframe \ - TabCloseWithSameSiteBeforeUnloadIframe -#endif +// Flaky (timeout) on Linux, ChromeOS, MacOS, and Windows (crbug.com/1033002) IN_PROC_BROWSER_TEST_F(ChromeSitePerProcessTest, - MAYBE_TabCloseWithSameSiteBeforeUnloadIframe) { + DISABLED_TabCloseWithSameSiteBeforeUnloadIframe) { TabStripModel* tab_strip_model = browser()->tab_strip_model(); content::WebContents* first_web_contents = tab_strip_model->GetActiveWebContents();
diff --git a/chrome/browser/sync/test/integration/enable_disable_test.cc b/chrome/browser/sync/test/integration/enable_disable_test.cc index af94b83c5..1f510be 100644 --- a/chrome/browser/sync/test/integration/enable_disable_test.cc +++ b/chrome/browser/sync/test/integration/enable_disable_test.cc
@@ -127,9 +127,7 @@ DISALLOW_COPY_AND_ASSIGN(EnableDisableSingleClientTest); }; -// Flaky. See crbug.com/1235856. -IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientTest, - DISABLED_EnableOneAtATime) { +IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientTest, EnableOneAtATime) { // Setup sync with no enabled types. SetupTest(/*all_types_enabled=*/false);
diff --git a/chrome/browser/sync/test/integration/single_client_nigori_sync_test.cc b/chrome/browser/sync/test/integration/single_client_nigori_sync_test.cc index ec568823..4a15b365 100644 --- a/chrome/browser/sync/test/integration/single_client_nigori_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_nigori_sync_test.cc
@@ -15,6 +15,7 @@ #include "base/test/task_environment.h" #include "base/time/time.h" #include "build/chromeos_buildflags.h" +#include "chrome/browser/signin/identity_manager_factory.h" #include "chrome/browser/sync/sync_ui_util.h" #include "chrome/browser/sync/test/integration/bookmarks_helper.h" #include "chrome/browser/sync/test/integration/cookie_helper.h" @@ -30,6 +31,7 @@ #include "chrome/grit/generated_resources.h" #include "components/password_manager/core/browser/password_manager_features_util.h" #include "components/password_manager/core/common/password_manager_features.h" +#include "components/signin/public/identity_manager/identity_test_utils.h" #include "components/sync/base/sync_base_switches.h" #include "components/sync/base/time.h" #include "components/sync/driver/sync_driver_switches.h" @@ -801,23 +803,23 @@ .Wait()); EXPECT_TRUE(keys_fetched_checker.Wait()); + // TrustedVaultClient handles IdentityManager state changes after refresh + // tokens are loaded. + // TODO(crbug.com/1148328): |keys_cleared_checker| should be sufficient alone + // once test properly manipulates AccountsInCookieJarInfo (this likely + // involves using FakeGaia). + signin::WaitForRefreshTokensLoaded( + IdentityManagerFactory::GetForProfile(GetProfile(0))); + // Mimic signin cookie clearing. TrustedVaultKeysChangedStateChecker keys_cleared_checker(GetSyncService(0)); cookie_helper::DeleteSigninCookies(GetProfile(0)); EXPECT_TRUE(keys_cleared_checker.Wait()); } -// Failing on Mac 10.11 (See http://crbug.com/1235658) -#if defined(OS_MAC) -#define MAYBE_ShouldClearEncryptionKeysFromTheWebWhenSigninCookiesCleared \ - DISABLED_ShouldClearEncryptionKeysFromTheWebWhenSigninCookiesCleared -#else -#define MAYBE_ShouldClearEncryptionKeysFromTheWebWhenSigninCookiesCleared \ - ShouldClearEncryptionKeysFromTheWebWhenSigninCookiesCleared -#endif IN_PROC_BROWSER_TEST_F( SingleClientNigoriWithWebApiTest, - MAYBE_ShouldClearEncryptionKeysFromTheWebWhenSigninCookiesCleared) { + ShouldClearEncryptionKeysFromTheWebWhenSigninCookiesCleared) { const std::vector<uint8_t> kTestEncryptionKey = {1, 2, 3, 4}; // Mimic the account being already using a trusted vault passphrase.
diff --git a/chrome/browser/tracing/crash_service_uploader.cc b/chrome/browser/tracing/crash_service_uploader.cc index c349384..29f395f 100644 --- a/chrome/browser/tracing/crash_service_uploader.cc +++ b/chrome/browser/tracing/crash_service_uploader.cc
@@ -162,6 +162,8 @@ const char product[] = "Chrome_Linux"; #elif defined(OS_ANDROID) const char product[] = "Chrome_Android"; +#elif defined(OS_FUCHSIA) + const char product[] = "Chrome_Fuchsia"; #else #error Platform not supported. #endif
diff --git a/chrome/browser/ui/cocoa/history_menu_bridge.h b/chrome/browser/ui/cocoa/history_menu_bridge.h index 3754c47..1a81df9 100644 --- a/chrome/browser/ui/cocoa/history_menu_bridge.h +++ b/chrome/browser/ui/cocoa/history_menu_bridge.h
@@ -245,11 +245,18 @@ void OnHistoryServiceLoaded(history::HistoryService* service) override; void HistoryServiceBeingDeleted(history::HistoryService* service) override; + // Changes the visibility of the menu items depend on the current profile + // type. + void SetVisibilityOfMenuItems(); + + // Returns if the given menu item should be visible for the current profile. + bool ShouldMenuItemBeVisible(NSMenuItem* item); + base::scoped_nsobject<HistoryMenuCocoaController> controller_; // strong - Profile* profile_; // weak - history::HistoryService* history_service_; // weak - sessions::TabRestoreService* tab_restore_service_; // weak + Profile* const profile_; // weak + history::HistoryService* history_service_ = nullptr; // weak + sessions::TabRestoreService* tab_restore_service_ = nullptr; // weak base::CancelableTaskTracker cancelable_task_tracker_; @@ -260,8 +267,8 @@ // when either waiting for the history service to return query results, or // when the menu is rebuilding. |need_recreate_| is true whenever a rebuild // has been scheduled but is waiting for the current one to finish. - bool create_in_progress_; - bool need_recreate_; + bool create_in_progress_ = false; + bool need_recreate_ = false; // In order to not jarringly refresh the menu while the user has it open, // updates are blocked while the menu is tracking. @@ -273,13 +280,9 @@ base::ScopedObservation<history::HistoryService, history::HistoryServiceObserver> history_service_observation_{this}; - - // Changes the visibility of the menu items depend on the current profile - // type. - void SetVisibilityOfMenuItems(); - - // Returns if the given menu item should be visible for the current profile. - bool ShouldMenuItemBeVisible(NSMenuItem* item); + base::ScopedObservation<sessions::TabRestoreService, + sessions::TabRestoreServiceObserver> + tab_restore_service_observation_{this}; DISALLOW_COPY_AND_ASSIGN(HistoryMenuBridge); };
diff --git a/chrome/browser/ui/cocoa/history_menu_bridge.mm b/chrome/browser/ui/cocoa/history_menu_bridge.mm index 1aeb648..26e3b23 100644 --- a/chrome/browser/ui/cocoa/history_menu_bridge.mm +++ b/chrome/browser/ui/cocoa/history_menu_bridge.mm
@@ -66,11 +66,8 @@ HistoryMenuBridge::HistoryMenuBridge(Profile* profile) : controller_([[HistoryMenuCocoaController alloc] initWithBridge:this]), - profile_(profile), - history_service_(NULL), - tab_restore_service_(NULL), - create_in_progress_(false), - need_recreate_(false) { + profile_(profile) { + DCHECK(profile_); // Set the static icons in the menu. ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); NSMenuItem* full_history_item = [HistoryMenu() itemWithTag:IDC_SHOW_HISTORY]; @@ -81,44 +78,40 @@ [incognito_disclaimer_item setImage:rb.GetNativeImageNamed(IDR_INFO_FAVICON).ToNSImage()]; - // If we don't have a profile, do not bother initializing our data sources. - // This shouldn't happen except in unit tests. - if (profile_) { - // Set the visibility of menu items according to profile type. - // "Recently Visited", "Recently Closed" and "Show Full History" sections - // should be hidden for incognito mode, while incognito disclaimer should be - // visible. - SetVisibilityOfMenuItems(); + // Set the visibility of menu items according to profile type. + // "Recently Visited", "Recently Closed" and "Show Full History" sections + // should be hidden for incognito mode, while incognito disclaimer should be + // visible. + SetVisibilityOfMenuItems(); - // If the profile is incognito, no need to set history and tab restore - // services. - if (profile_->IsOffTheRecord()) - return; + // If the profile is incognito, no need to set history and tab restore + // services. + if (profile_->IsOffTheRecord()) + return; - // Check to see if the history service is ready. Because it loads async, it - // may not be ready when the Bridge is created. If this happens, register - // for a notification that tells us the HistoryService is ready. - history::HistoryService* hs = HistoryServiceFactory::GetForProfile( - profile_, ServiceAccessType::EXPLICIT_ACCESS); - if (hs) { - history_service_observation_.Observe(hs); - if (hs->BackendLoaded()) { - history_service_ = hs; - Init(); - } + // Check to see if the history service is ready. Because it loads async, it + // may not be ready when the Bridge is created. If this happens, register for + // a notification that tells us the HistoryService is ready. + history::HistoryService* hs = HistoryServiceFactory::GetForProfile( + profile_, ServiceAccessType::EXPLICIT_ACCESS); + if (hs) { + history_service_observation_.Observe(hs); + if (hs->BackendLoaded()) { + history_service_ = hs; + Init(); } + } - tab_restore_service_ = TabRestoreServiceFactory::GetForProfile(profile_); - if (tab_restore_service_) { - tab_restore_service_->AddObserver(this); - // If the tab entries are already loaded, invoke the observer method to - // build the "Recently Closed" section. Otherwise it will be when the - // backend loads. - if (!tab_restore_service_->IsLoaded()) - tab_restore_service_->LoadTabsFromLastSession(); - else - TabRestoreServiceChanged(tab_restore_service_); - } + tab_restore_service_ = TabRestoreServiceFactory::GetForProfile(profile_); + if (tab_restore_service_) { + tab_restore_service_observation_.Observe(tab_restore_service_); + // If the tab entries are already loaded, invoke the observer method to + // build the "Recently Closed" section. Otherwise it will be when the + // backend loads. + if (!tab_restore_service_->IsLoaded()) + tab_restore_service_->LoadTabsFromLastSession(); + else + TabRestoreServiceChanged(tab_restore_service_); } default_favicon_.reset( @@ -130,13 +123,7 @@ // Note that all requests sent to either the history service or the favicon // service will be automatically cancelled by their respective Consumers, so // task cancellation is not done manually here in the dtor. -HistoryMenuBridge::~HistoryMenuBridge() { - // Unregister ourselves as observers and notifications. - DCHECK(profile_); - - if (tab_restore_service_) - tab_restore_service_->RemoveObserver(this); -} +HistoryMenuBridge::~HistoryMenuBridge() = default; void HistoryMenuBridge::TabRestoreServiceChanged( sessions::TabRestoreService* service) { @@ -182,7 +169,9 @@ void HistoryMenuBridge::TabRestoreServiceDestroyed( sessions::TabRestoreService* service) { - // Intentionally left blank. We hold a weak reference to the service. + DCHECK_EQ(service, tab_restore_service_); + tab_restore_service_observation_.Reset(); + tab_restore_service_ = nullptr; } void HistoryMenuBridge::ResetMenu() { @@ -573,8 +562,8 @@ void HistoryMenuBridge::HistoryServiceBeingDeleted( history::HistoryService* history_service) { - if (history_service_ == history_service) - history_service_ = nullptr; + history_service_observation_.Reset(); + history_service_ = nullptr; } void HistoryMenuBridge::SetVisibilityOfMenuItems() {
diff --git a/chrome/browser/ui/cocoa/history_menu_bridge_unittest.mm b/chrome/browser/ui/cocoa/history_menu_bridge_unittest.mm index 08ad7c2f..008dd9a2 100644 --- a/chrome/browser/ui/cocoa/history_menu_bridge_unittest.mm +++ b/chrome/browser/ui/cocoa/history_menu_bridge_unittest.mm
@@ -18,6 +18,7 @@ #include "chrome/browser/favicon/favicon_service_factory.h" #include "chrome/browser/history/history_service_factory.h" #include "chrome/browser/sessions/chrome_tab_restore_service_client.h" +#include "chrome/browser/sessions/tab_restore_service_factory.h" #include "chrome/browser/ui/cocoa/test/cocoa_test_helper.h" #include "chrome/common/chrome_features.h" #include "chrome/test/base/browser_with_test_window_test.h" @@ -39,7 +40,7 @@ public: MockTRS(Profile* profile) : sessions::TabRestoreServiceImpl( - base::WrapUnique(new ChromeTabRestoreServiceClient(profile)), + std::make_unique<ChromeTabRestoreServiceClient>(profile), profile->GetPrefs(), nullptr) {} MOCK_CONST_METHOD0(entries, const sessions::TabRestoreService::Entries&()); @@ -551,4 +552,36 @@ CheckMenuItemVisibility(this, true); } +// Does a full setup and tear down of the bridge. +TEST(HistoryMenuBridgeLifetimeTest, ShutdownAfterProfile) { + content::BrowserTaskEnvironment task_environment; + TestingProfile::Builder profile_builder; + profile_builder.AddTestingFactory( + TabRestoreServiceFactory::GetInstance(), + TabRestoreServiceFactory::GetDefaultFactory()); + profile_builder.AddTestingFactory(HistoryServiceFactory::GetInstance(), + HistoryServiceFactory::GetDefaultFactory()); + std::unique_ptr<TestingProfile> profile = profile_builder.Build(); + + auto bridge = std::make_unique<HistoryMenuBridge>(profile.get()); + profile.reset(); + // Should not crash. + bridge.reset(); +} + +// Does a full setup and tear down of the bridge. +TEST(HistoryMenuBridgeLifetimeTest, ShutdownBeforeProfile) { + content::BrowserTaskEnvironment task_environment; + TestingProfile::Builder profile_builder; + profile_builder.AddTestingFactory( + TabRestoreServiceFactory::GetInstance(), + TabRestoreServiceFactory::GetDefaultFactory()); + profile_builder.AddTestingFactory(HistoryServiceFactory::GetInstance(), + HistoryServiceFactory::GetDefaultFactory()); + std::unique_ptr<TestingProfile> profile = profile_builder.Build(); + + auto bridge = std::make_unique<HistoryMenuBridge>(profile.get()); + bridge.reset(); +} + } // namespace
diff --git a/chrome/browser/ui/views/apps/app_info_dialog/app_info_summary_panel.cc b/chrome/browser/ui/views/apps/app_info_dialog/app_info_summary_panel.cc index 5cdeea4..43d1596 100644 --- a/chrome/browser/ui/views/apps/app_info_dialog/app_info_summary_panel.cc +++ b/chrome/browser/ui/views/apps/app_info_dialog/app_info_summary_panel.cc
@@ -109,7 +109,7 @@ AppInfoSummaryPanel::~AppInfoSummaryPanel() { // Destroy view children before their models. - RemoveAllChildViews(true); + RemoveAllChildViews(); } void AppInfoSummaryPanel::AddDescriptionAndLinksControl(
diff --git a/chrome/browser/ui/views/autofill/address_editor_view.cc b/chrome/browser/ui/views/autofill/address_editor_view.cc index e421535..c5af8f3 100644 --- a/chrome/browser/ui/views/autofill/address_editor_view.cc +++ b/chrome/browser/ui/views/autofill/address_editor_view.cc
@@ -179,7 +179,7 @@ } void AddressEditorView::UpdateEditorView() { - RemoveAllChildViews(true); + RemoveAllChildViews(); CreateEditorView(); PreferredSizeChanged();
diff --git a/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc b/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc index 556ed85..ba561925 100644 --- a/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc +++ b/chrome/browser/ui/views/autofill/autofill_popup_view_native_views.cc
@@ -1229,7 +1229,7 @@ } void AutofillPopupViewNativeViews::CreateChildViews() { - RemoveAllChildViews(true /* delete_children */); + RemoveAllChildViews(); rows_.clear(); scroll_view_ = nullptr; body_container_ = nullptr;
diff --git a/chrome/browser/ui/views/autofill/autofill_popup_view_native_views_unittest.cc b/chrome/browser/ui/views/autofill/autofill_popup_view_native_views_unittest.cc index 2237e64..472eb70f1 100644 --- a/chrome/browser/ui/views/autofill/autofill_popup_view_native_views_unittest.cc +++ b/chrome/browser/ui/views/autofill/autofill_popup_view_native_views_unittest.cc
@@ -247,7 +247,7 @@ generator_->set_current_screen_location(center); generator_->ClickLeftButton(); - view()->RemoveAllChildViews(true /* delete_children */); + view()->RemoveAllChildViews(); } INSTANTIATE_TEST_SUITE_P(All,
diff --git a/chrome/browser/ui/views/autofill/payments/card_unmask_prompt_views.cc b/chrome/browser/ui/views/autofill/payments/card_unmask_prompt_views.cc index bd903f8..d3b85d6 100644 --- a/chrome/browser/ui/views/autofill/payments/card_unmask_prompt_views.cc +++ b/chrome/browser/ui/views/autofill/payments/card_unmask_prompt_views.cc
@@ -139,7 +139,7 @@ SetRetriableErrorMessage(std::u16string()); // Rows cannot be replaced in GridLayout, so we reset it. - overlay_->RemoveAllChildViews(/*delete_children=*/true); + overlay_->RemoveAllChildViews(); views::GridLayout* layout = ResetOverlayLayout(overlay_); // The label of the overlay will now show the error in red.
diff --git a/chrome/browser/ui/views/autofill/payments/local_card_migration_dialog_view.cc b/chrome/browser/ui/views/autofill/payments/local_card_migration_dialog_view.cc index 369b9a51..b08d2d508 100644 --- a/chrome/browser/ui/views/autofill/payments/local_card_migration_dialog_view.cc +++ b/chrome/browser/ui/views/autofill/payments/local_card_migration_dialog_view.cc
@@ -489,7 +489,7 @@ LocalCardMigrationDialogState::kOffered || children().empty()); - RemoveAllChildViews(/*delete_children=*/true); + RemoveAllChildViews(); SetLayoutManager(std::make_unique<views::BoxLayout>( views::BoxLayout::Orientation::kVertical, gfx::Insets(),
diff --git a/chrome/browser/ui/views/autofill/payments/virtual_card_selection_dialog_view_impl.cc b/chrome/browser/ui/views/autofill/payments/virtual_card_selection_dialog_view_impl.cc index c10bbc8..0a5f44d 100644 --- a/chrome/browser/ui/views/autofill/payments/virtual_card_selection_dialog_view_impl.cc +++ b/chrome/browser/ui/views/autofill/payments/virtual_card_selection_dialog_view_impl.cc
@@ -84,7 +84,7 @@ } views::View* VirtualCardSelectionDialogViewImpl::GetContentsView() { - RemoveAllChildViews(/*delete_children=*/true); + RemoveAllChildViews(); SetLayoutManager(std::make_unique<views::BoxLayout>( views::BoxLayout::Orientation::kVertical, gfx::Insets(),
diff --git a/chrome/browser/ui/views/chrome_javascript_app_modal_view_factory_views.cc b/chrome/browser/ui/views/chrome_javascript_app_modal_view_factory_views.cc index b731b50..dd3d65e 100644 --- a/chrome/browser/ui/views/chrome_javascript_app_modal_view_factory_views.cc +++ b/chrome/browser/ui/views/chrome_javascript_app_modal_view_factory_views.cc
@@ -13,6 +13,7 @@ #include "components/javascript_dialogs/views/app_modal_dialog_view_views.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents_delegate.h" +#include "ui/display/screen.h" #include "ui/gfx/native_widget_types.h" #include "ui/views/widget/widget.h" @@ -79,6 +80,19 @@ PopunderPreventer popunder_preventer_; }; +void AdjustWidgetBoundsIfOffscreen(views::Widget* widget) { + gfx::Rect widget_bounds = widget->GetWindowBoundsInScreen(); + gfx::Rect screen_rect = + display::Screen::GetScreen() + ->GetDisplayNearestPoint(widget_bounds.CenterPoint()) + .work_area(); + + if (!screen_rect.Contains(widget_bounds)) { + widget_bounds.AdjustToFit(screen_rect); + widget->SetBounds(widget_bounds); + } +} + javascript_dialogs::AppModalDialogView* CreateViewsJavaScriptDialog( javascript_dialogs::AppModalDialogController* controller) { javascript_dialogs::AppModalDialogViewViews* dialog = @@ -94,7 +108,9 @@ parent_window = nullptr; } #endif - constrained_window::CreateBrowserModalDialogViews(dialog, parent_window); + views::Widget* widget = + constrained_window::CreateBrowserModalDialogViews(dialog, parent_window); + AdjustWidgetBoundsIfOffscreen(widget); return dialog; }
diff --git a/chrome/browser/ui/views/content_setting_bubble_contents.cc b/chrome/browser/ui/views/content_setting_bubble_contents.cc index b0d4adc..fff69b1 100644 --- a/chrome/browser/ui/views/content_setting_bubble_contents.cc +++ b/chrome/browser/ui/views/content_setting_bubble_contents.cc
@@ -414,7 +414,7 @@ ContentSettingBubbleContents::~ContentSettingBubbleContents() { // Must remove the children here so the comboboxes get destroyed before // their associated models. - RemoveAllChildViews(true); + RemoveAllChildViews(); } void ContentSettingBubbleContents::WindowClosing() {
diff --git a/chrome/browser/ui/views/extensions/extensions_toolbar_container.cc b/chrome/browser/ui/views/extensions/extensions_toolbar_container.cc index 0ab40e1..3fa85549 100644 --- a/chrome/browser/ui/views/extensions/extensions_toolbar_container.cc +++ b/chrome/browser/ui/views/extensions/extensions_toolbar_container.cc
@@ -111,7 +111,7 @@ ExtensionsToolbarContainer::~ExtensionsToolbarContainer() { // The child views hold pointers to the |actions_|, and thus need to be // destroyed before them. - RemoveAllChildViews(true); + RemoveAllChildViews(); // Create a copy of the anchored widgets, since |anchored_widgets_| will // be modified by closing them.
diff --git a/chrome/browser/ui/views/extensions/media_galleries_dialog_views.cc b/chrome/browser/ui/views/extensions/media_galleries_dialog_views.cc index 6eb5c0e..a74e299 100644 --- a/chrome/browser/ui/views/extensions/media_galleries_dialog_views.cc +++ b/chrome/browser/ui/views/extensions/media_galleries_dialog_views.cc
@@ -126,7 +126,7 @@ void MediaGalleriesDialogViews::InitChildViews() { // Outer dialog layout. - contents_->RemoveAllChildViews(true); + contents_->RemoveAllChildViews(); checkbox_map_.clear(); ChromeLayoutProvider* provider = ChromeLayoutProvider::Get();
diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc index 1743dde..197914a 100644 --- a/chrome/browser/ui/views/frame/browser_view.cc +++ b/chrome/browser/ui/views/frame/browser_view.cc
@@ -742,7 +742,7 @@ // Child views maintain PrefMember attributes that point to // OffTheRecordProfile's PrefService which gets deleted by ~Browser. - RemoveAllChildViews(true); + RemoveAllChildViews(); } // static
diff --git a/chrome/browser/ui/views/global_media_controls/media_notification_footer_view.cc b/chrome/browser/ui/views/global_media_controls/media_notification_footer_view.cc index 14c21dbb..f180acc 100644 --- a/chrome/browser/ui/views/global_media_controls/media_notification_footer_view.cc +++ b/chrome/browser/ui/views/global_media_controls/media_notification_footer_view.cc
@@ -108,7 +108,7 @@ void MediaNotificationFooterView::OnMediaNotificationDeviceSelectorUpdated( const std::map<int, DeviceEntryUI*>& device_entries_map) { - RemoveAllChildViews(true); + RemoveAllChildViews(); for (const auto& entry : device_entries_map) { int tag = entry.first;
diff --git a/chrome/browser/ui/views/page_info/page_info_bubble_view_dialog_browsertest.cc b/chrome/browser/ui/views/page_info/page_info_bubble_view_dialog_browsertest.cc index b36888e..5eab404 100644 --- a/chrome/browser/ui/views/page_info/page_info_bubble_view_dialog_browsertest.cc +++ b/chrome/browser/ui/views/page_info/page_info_bubble_view_dialog_browsertest.cc
@@ -245,13 +245,13 @@ if (is_page_info_v2_enabled()) { auto* main_page = static_cast<PageInfoMainView*>(current_ui); main_page->selector_rows_.clear(); - main_page->permissions_view_->RemoveAllChildViews(true); + main_page->permissions_view_->RemoveAllChildViews(); } else { auto* page_info_bubble_view = static_cast<PageInfoBubbleView*>(bubble_view); page_info_bubble_view->selector_rows_.clear(); - page_info_bubble_view->permissions_view_->RemoveAllChildViews(true); + page_info_bubble_view->permissions_view_->RemoveAllChildViews(); } current_ui->SetPermissionInfo(permissions_list,
diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/browser/ui/views/page_info/page_info_main_view.cc index 57d68889..86f3f3b 100644 --- a/chrome/browser/ui/views/page_info/page_info_main_view.cc +++ b/chrome/browser/ui/views/page_info/page_info_main_view.cc
@@ -160,7 +160,7 @@ const PermissionInfoList& permission_info_list, ChosenObjectInfoList chosen_object_info_list) { if (permission_info_list.empty() && chosen_object_info_list.empty()) { - permissions_view_->RemoveAllChildViews(true); + permissions_view_->RemoveAllChildViews(); return; } @@ -300,7 +300,7 @@ title_->SetText(base::UTF8ToUTF16(identity_info.site_identity)); - security_container_view_->RemoveAllChildViews(true); + security_container_view_->RemoveAllChildViews(); if (security_description->summary_style == SecuritySummaryColor::GREEN) { // base::Unretained(navigation_handler_) is safe because navigation_handler_ // is the bubble view which is the owner of this view and therefore will
diff --git a/chrome/browser/ui/views/page_info/security_information_view.cc b/chrome/browser/ui/views/page_info/security_information_view.cc index dc72171..d888c17 100644 --- a/chrome/browser/ui/views/page_info/security_information_view.cc +++ b/chrome/browser/ui/views/page_info/security_information_view.cc
@@ -141,7 +141,7 @@ base::RepeatingClosure reset_decisions_callback) { if (!reset_decisions_label_container_->children().empty()) { // Ensure all old content is removed from the container before re-adding it. - reset_decisions_label_container_->RemoveAllChildViews(true); + reset_decisions_label_container_->RemoveAllChildViews(); } std::vector<std::u16string> subst; @@ -192,7 +192,7 @@ views::Button::PressedCallback password_reuse_callback) { if (!password_reuse_button_container_->children().empty()) { // Ensure all old content is removed from the container before re-adding it. - password_reuse_button_container_->RemoveAllChildViews(true /* delete */); + password_reuse_button_container_->RemoveAllChildViews(); } int change_password_template = 0;
diff --git a/chrome/browser/ui/views/passwords/password_generation_popup_view_views.cc b/chrome/browser/ui/views/passwords/password_generation_popup_view_views.cc index 1b000258..5271003 100644 --- a/chrome/browser/ui/views/passwords/password_generation_popup_view_views.cc +++ b/chrome/browser/ui/views/passwords/password_generation_popup_view_views.cc
@@ -186,7 +186,7 @@ } void PasswordGenerationPopupViewViews::UpdateState() { - RemoveAllChildViews(true); + RemoveAllChildViews(); password_view_ = nullptr; help_label_ = nullptr; CreateLayoutAndChildren();
diff --git a/chrome/browser/ui/views/passwords/password_items_view.cc b/chrome/browser/ui/views/passwords/password_items_view.cc index cf944b01..6b51bbf4 100644 --- a/chrome/browser/ui/views/passwords/password_items_view.cc +++ b/chrome/browser/ui/views/passwords/password_items_view.cc
@@ -308,7 +308,7 @@ // recreated. DCHECK(!controller_.local_credentials().empty()); - RemoveAllChildViews(true); + RemoveAllChildViews(); views::GridLayout* grid_layout = SetLayoutManager(std::make_unique<views::GridLayout>());
diff --git a/chrome/browser/ui/views/payments/editor_view_controller.cc b/chrome/browser/ui/views/payments/editor_view_controller.cc index 8c3818e0..ab19723 100644 --- a/chrome/browser/ui/views/payments/editor_view_controller.cc +++ b/chrome/browser/ui/views/payments/editor_view_controller.cc
@@ -496,7 +496,7 @@ DCHECK(label_view_it != error_labels_.end()); if (error_message.empty()) { - label_view_it->second->RemoveAllChildViews(/*delete_children=*/true); + label_view_it->second->RemoveAllChildViews(); } else { if (label_view_it->second->children().empty()) { // If there was no error label view, add it.
diff --git a/chrome/browser/ui/views/payments/payment_credential_enrollment_dialog_view.cc b/chrome/browser/ui/views/payments/payment_credential_enrollment_dialog_view.cc index e659b0b..705f95c 100644 --- a/chrome/browser/ui/views/payments/payment_credential_enrollment_dialog_view.cc +++ b/chrome/browser/ui/views/payments/payment_credential_enrollment_dialog_view.cc
@@ -172,7 +172,7 @@ } void PaymentCredentialEnrollmentDialogView::InitChildViews() { - RemoveAllChildViews(true); + RemoveAllChildViews(); SetLayoutManager(std::make_unique<views::BoxLayout>( views::BoxLayout::Orientation::kVertical, gfx::Insets(), 0));
diff --git a/chrome/browser/ui/views/payments/payment_request_sheet_controller.cc b/chrome/browser/ui/views/payments/payment_request_sheet_controller.cc index 7b0892f..d782c03 100644 --- a/chrome/browser/ui/views/payments/payment_request_sheet_controller.cc +++ b/chrome/browser/ui/views/payments/payment_request_sheet_controller.cc
@@ -301,7 +301,7 @@ if (!is_active_) return; - content_view_->RemoveAllChildViews(true); + content_view_->RemoveAllChildViews(); FillContentView(content_view_); RelayoutPane(); } @@ -311,7 +311,7 @@ if (!is_active_) return; - header_view_->RemoveAllChildViews(true); + header_view_->RemoveAllChildViews(); PopulateSheetHeaderView( ShouldShowHeaderBackArrow(), CreateHeaderContentView(header_view_), base::BindRepeating(&PaymentRequestSheetController::BackButtonPressed,
diff --git a/chrome/browser/ui/views/payments/secure_payment_confirmation_dialog_view.cc b/chrome/browser/ui/views/payments/secure_payment_confirmation_dialog_view.cc index 14c4b209..bacbd922 100644 --- a/chrome/browser/ui/views/payments/secure_payment_confirmation_dialog_view.cc +++ b/chrome/browser/ui/views/payments/secure_payment_confirmation_dialog_view.cc
@@ -216,7 +216,7 @@ } void SecurePaymentConfirmationDialogView::InitChildViews() { - RemoveAllChildViews(true); + RemoveAllChildViews(); SetLayoutManager(std::make_unique<views::BoxLayout>( views::BoxLayout::Orientation::kVertical, gfx::Insets(), 0));
diff --git a/chrome/browser/ui/views/permission_bubble/permission_prompt_bubble_view_browsertest.cc b/chrome/browser/ui/views/permission_bubble/permission_prompt_bubble_view_browsertest.cc index fa16724..fd77ba45 100644 --- a/chrome/browser/ui/views/permission_bubble/permission_prompt_bubble_view_browsertest.cc +++ b/chrome/browser/ui/views/permission_bubble/permission_prompt_bubble_view_browsertest.cc
@@ -260,7 +260,8 @@ ASSERT_TRUE(chip); EXPECT_TRUE(chip->should_expand_for_testing()); - EXPECT_TRUE(chip->get_chip_button_for_testing()->is_animating()); + // TODO(crbug.com/1232460): Verify that OmniboxChipButton::is_animating is + // true. Right now the value is flaky. EXPECT_EQ(OmniboxChipButton::Theme::kBlue, chip->get_chip_button_for_testing()->get_theme_for_testing()); @@ -760,9 +761,8 @@ : permissions::PermissionPromptDisposition::ANCHORED_BUBBLE); } -// TODO(crbug.com/1232460): Flaky IN_PROC_BROWSER_TEST_P(QuietChipPermissionPromptBubbleViewBrowserTest, - DISABLED_QuietChipIsShownForAbusiveRequests) { + QuietChipIsShownForAbusiveRequests) { for (QuietUiReason reason : {QuietUiReason::kTriggeredByCrowdDeny, QuietUiReason::kTriggeredDueToAbusiveRequests, QuietUiReason::kTriggeredDueToAbusiveContent}) {
diff --git a/chrome/browser/ui/views/policy/enterprise_startup_dialog_view.cc b/chrome/browser/ui/views/policy/enterprise_startup_dialog_view.cc index cd852fd..d0587ed 100644 --- a/chrome/browser/ui/views/policy/enterprise_startup_dialog_view.cc +++ b/chrome/browser/ui/views/policy/enterprise_startup_dialog_view.cc
@@ -208,7 +208,7 @@ DCHECK(GetOkButton()); GetOkButton()->SetVisible(show_accept_button); - RemoveAllChildViews(true); + RemoveAllChildViews(); } void EnterpriseStartupDialogView::SetupLayout(
diff --git a/chrome/browser/ui/views/profiles/profile_menu_view_base.cc b/chrome/browser/ui/views/profiles/profile_menu_view_base.cc index 2d954e6..b885a34 100644 --- a/chrome/browser/ui/views/profiles/profile_menu_view_base.cc +++ b/chrome/browser/ui/views/profiles/profile_menu_view_base.cc
@@ -587,7 +587,7 @@ const ui::ThemedVectorIcon& avatar_header_art) { constexpr int kBottomMargin = kDefaultMargin; - identity_info_container_->RemoveAllChildViews(/*delete_children=*/true); + identity_info_container_->RemoveAllChildViews(); // The colored background fully bleeds to the edges of the menu and to achieve // that margin is set to 0. Further margins will be added by children views. identity_info_container_->SetLayoutManager( @@ -655,7 +655,7 @@ ChromeLayoutProvider::Get()->GetDistanceMetric( views::DISTANCE_RELATED_LABEL_HORIZONTAL); - sync_info_container_->RemoveAllChildViews(/*delete_children=*/true); + sync_info_container_->RemoveAllChildViews(); sync_info_container_->SetLayoutManager(std::make_unique<views::FlexLayout>()) ->SetOrientation(views::LayoutOrientation::kVertical) .SetIgnoreDefaultMainAxisMargins(true) @@ -727,7 +727,7 @@ void ProfileMenuViewBase::BuildSyncInfoWithoutCallToAction( const std::u16string& text, const base::RepeatingClosure& action) { - sync_info_container_->RemoveAllChildViews(/*delete_children=*/true); + sync_info_container_->RemoveAllChildViews(); sync_info_container_->SetLayoutManager(std::make_unique<views::FillLayout>()); sync_info_container_->AddChildView(std::make_unique<SyncButton>( base::BindRepeating(&ProfileMenuViewBase::ButtonPressed, @@ -919,7 +919,7 @@ } void ProfileMenuViewBase::Reset() { - RemoveAllChildViews(/*delete_childen=*/true); + RemoveAllChildViews(); auto components = std::make_unique<views::View>(); components->SetLayoutManager(std::make_unique<views::FlexLayout>())
diff --git a/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.cc b/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.cc index 82072c99..76f097f 100644 --- a/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.cc +++ b/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.cc
@@ -8,6 +8,7 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_attributes_entry.h" #include "chrome/browser/profiles/profile_attributes_storage.h" +#include "chrome/browser/profiles/profile_avatar_icon_util.h" #include "chrome/browser/profiles/profile_keep_alive_types.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/profiles/profile_window.h" @@ -133,16 +134,8 @@ ProfilePickerSignInFlowController::ProfilePickerSignInFlowController( ProfilePickerWebContentsHost* host, - Profile* profile, - absl::optional<SkColor> profile_color, base::TimeDelta extended_account_info_timeout) : host_(host), - contents_(content::WebContents::Create( - content::WebContents::CreateParams(profile))), - profile_(profile), - profile_keep_alive_(profile_, - ProfileKeepAliveOrigin::kProfileCreationFlow), - profile_color_(profile_color), extended_account_info_timeout_(extended_account_info_timeout) {} ProfilePickerSignInFlowController::~ProfilePickerSignInFlowController() { @@ -166,7 +159,58 @@ } } -void ProfilePickerSignInFlowController::Init() { +void ProfilePickerSignInFlowController::SwitchToSignIn( + absl::optional<SkColor> profile_color, + base::OnceCallback<void(bool)> switch_finished_callback) { + // Update the color even if the profile is already initialized (to respect + // potentially different choice now). + profile_color_ = profile_color; + + if (IsInitialized()) { + std::move(switch_finished_callback).Run(true); + // Do not load any url because the desired sign-in screen is still loaded in + // `contents()`. + host_->ShowScreen(contents(), GURL(), /*show_toolbar=*/true); + return; + } + + size_t icon_index = profiles::GetPlaceholderAvatarIndex(); + // Silently create the new profile for browsing on GAIA (so that the sign-in + // cookies are stored in the right profile). + ProfileManager::CreateMultiProfileAsync( + g_browser_process->profile_manager() + ->GetProfileAttributesStorage() + .ChooseNameForNewProfile(icon_index), + icon_index, /*is_hidden=*/true, + base::BindRepeating(&ProfilePickerSignInFlowController::OnProfileCreated, + weak_ptr_factory_.GetWeakPtr(), + base::OwnedRef(std::move(switch_finished_callback)))); +} + +// TODO(crbug.com/1227029): Move the function to respect declaration order. +void ProfilePickerSignInFlowController::OnProfileCreated( + base::OnceCallback<void(bool)>& switch_finished_callback, + Profile* new_profile, + Profile::CreateStatus status) { + if (status == Profile::CREATE_STATUS_LOCAL_FAIL) { + std::move(switch_finished_callback).Run(false); + return; + } + if (status != Profile::CREATE_STATUS_INITIALIZED) { + return; + } + + DCHECK(new_profile); + DCHECK(!profile_); + DCHECK(!contents()); + std::move(switch_finished_callback).Run(true); + + profile_ = new_profile; + profile_keep_alive_ = std::make_unique<ScopedProfileKeepAlive>( + profile_, ProfileKeepAliveOrigin::kProfileCreationFlow); + + contents_ = content::WebContents::Create( + content::WebContents::CreateParams(profile_)); contents()->SetDelegate(this); // Create a manager that supports modal dialogs, such as for webauthn. @@ -214,7 +258,9 @@ /*show_toolbar=*/true); } +// TODO(crbug.com/1227029): Move the function to respect declaration order. void ProfilePickerSignInFlowController::Cancel() { + DCHECK(IsInitialized()); if (is_finished_) return; @@ -226,20 +272,18 @@ profile_->GetPath(), base::DoNothing()); } +// TODO(crbug.com/1227029): Move the function to respect declaration order. void ProfilePickerSignInFlowController::ReloadSignInPage() { - if (contents() && IsSigningIn()) { + if (IsInitialized() && contents() && IsSigningIn()) { contents()->GetController().Reload(content::ReloadType::BYPASSING_CACHE, true); } } -void ProfilePickerSignInFlowController::SetProfileColor( - absl::optional<SkColor> color) { - profile_color_ = color; -} - +// TODO(crbug.com/1227029): Move the function down to respect declaration order. absl::optional<SkColor> ProfilePickerSignInFlowController::GetProfileColor() const { + DCHECK(IsInitialized()); // The new profile theme may be overridden by an existing policy theme. This // check ensures the correct theme is applied to the sync confirmation window. auto* theme_service = ThemeServiceFactory::GetForProfile(profile_); @@ -255,10 +299,13 @@ const ui::ThemeProvider* ProfilePickerSignInFlowController::GetThemeProvider() const { + if (!IsInitialized()) + return nullptr; return &ThemeService::GetThemeProviderForProfile(profile_); } void ProfilePickerSignInFlowController::SwitchToSyncConfirmation() { + DCHECK(IsInitialized()); host_->ShowScreen( contents(), GURL(chrome::kChromeUISyncConfirmationURL), /*show_toolbar=*/false, @@ -271,8 +318,10 @@ base::Unretained(this))); } +// TODO(crbug.com/1227029): Move the function to respect declaration order. void ProfilePickerSignInFlowController::SwitchToProfileSwitch( const base::FilePath& profile_path) { + DCHECK(IsInitialized()); // The sign-in flow is finished, no profile window should be shown in the end. Cancel(); @@ -286,6 +335,7 @@ void ProfilePickerSignInFlowController::SwitchToEnterpriseProfileWelcome( EnterpriseProfileWelcomeUI::ScreenType type, base::OnceCallback<void(bool)> proceed_callback) { + DCHECK(IsInitialized()); host_->ShowScreen(contents(), GURL(chrome::kChromeUIEnterpriseProfileWelcomeURL), /*show_toolbar=*/false, @@ -344,6 +394,7 @@ void ProfilePickerSignInFlowController::OnRefreshTokenUpdatedForAccount( const CoreAccountInfo& account_info) { + DCHECK(IsInitialized()); DCHECK(!account_info.IsEmpty()); email_ = account_info.email; @@ -382,6 +433,7 @@ void ProfilePickerSignInFlowController::OnExtendedAccountInfoUpdated( const AccountInfo& account_info) { + DCHECK(IsInitialized()); if (!account_info.IsValid()) return; name_for_signed_in_profile_ = @@ -393,12 +445,14 @@ void ProfilePickerSignInFlowController::OnExtendedAccountInfoTimeout( const CoreAccountInfo& account) { + DCHECK(IsInitialized()); name_for_signed_in_profile_ = profiles::GetDefaultNameForNewSignedInProfileWithIncompleteInfo(account); OnProfileNameAvailable(); } void ProfilePickerSignInFlowController::OnProfileNameAvailable() { + DCHECK(IsInitialized()); // Stop listening to further changes. DCHECK(identity_manager_observation_.IsObservingSource( IdentityManagerFactory::GetForProfile(profile_))); @@ -409,6 +463,7 @@ } void ProfilePickerSignInFlowController::SwitchToSyncConfirmationFinished() { + DCHECK(IsInitialized()); // Initialize the WebUI page once we know it's committed. SyncConfirmationUI* sync_confirmation_ui = static_cast<SyncConfirmationUI*>(contents()->GetWebUI()->GetController()); @@ -421,6 +476,7 @@ SwitchToEnterpriseProfileWelcomeFinished( EnterpriseProfileWelcomeUI::ScreenType type, base::OnceCallback<void(bool)> proceed_callback) { + DCHECK(IsInitialized()); // Initialize the WebUI page once we know it's committed. EnterpriseProfileWelcomeUI* enterprise_profile_welcome_ui = contents() @@ -435,9 +491,15 @@ GetProfileColor(), std::move(proceed_callback)); } +bool ProfilePickerSignInFlowController::IsInitialized() const { + return profile_ != nullptr; +} + +// TODO(crbug.com/1227029): Move the function to respect declaration order. void ProfilePickerSignInFlowController::FinishAndOpenBrowser( BrowserOpenedCallback callback, bool enterprise_sync_consent_needed) { + DCHECK(IsInitialized()); // Do nothing if the sign-in flow is aborted or if this has already been // called. Note that this can get called first time from a special case // handling (such as the Settings link) and than second time when the @@ -460,6 +522,7 @@ void ProfilePickerSignInFlowController::FinishAndOpenBrowserImpl( BrowserOpenedCallback callback, bool enterprise_sync_consent_needed) { + DCHECK(IsInitialized()); DCHECK(!name_for_signed_in_profile_.empty()); ProfileAttributesEntry* entry = @@ -512,6 +575,7 @@ } void ProfilePickerSignInFlowController::FinishAndOpenBrowserForSAML() { + DCHECK(IsInitialized()); // First, free up `contents()` to be moved to a new browser window. host_->ShowScreenInSystemContents( GURL(url::kAboutBlankURL), @@ -525,6 +589,7 @@ } void ProfilePickerSignInFlowController::OnSignInContentsFreedUp() { + DCHECK(IsInitialized()); DCHECK(!is_finished_); is_finished_ = true; @@ -541,6 +606,7 @@ BrowserOpenedCallback finish_flow_callback, Profile* profile, Profile::CreateStatus profile_create_status) { + DCHECK(IsInitialized()); CHECK_EQ(profile, profile_); // Hide the flow window. This posts a task on the message loop to destroy the
diff --git a/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.h b/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.h index 71e7eab3..4fa10ec 100644 --- a/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.h +++ b/chrome/browser/ui/views/profiles/profile_picker_sign_in_flow_controller.h
@@ -44,8 +44,6 @@ ProfilePickerSignInFlowController( ProfilePickerWebContentsHost* host, - Profile* profile, - absl::optional<SkColor> profile_color, base::TimeDelta extended_account_info_timeout); ~ProfilePickerSignInFlowController() override; ProfilePickerSignInFlowController(const ProfilePickerSignInFlowController&) = @@ -53,36 +51,38 @@ ProfilePickerSignInFlowController& operator=( const ProfilePickerSignInFlowController&) = delete; - // Must be called after constructor. - void Init(); + // Initiates switching the flow to sign-in. When it is done, + // `switch_finished_callback` gets called. If a sign-in was in progress before + // in the lifetime of this class, it only switches the view to show the + // ongoing sign-in again (and updates color for the new profile to + // `profile_color`). + void SwitchToSignIn(absl::optional<SkColor> profile_color, + base::OnceCallback<void(bool)> switch_finished_callback); - // Cancels the flow explicitly. This does not log any metrics, the caller - // must take care of logging the outcome of the flow on its own. - void Cancel(); + // Returns true if the user is not yet authenticated. + bool IsSigningIn() const; // Reloads the sign-in page if applicable. void ReloadSignInPage(); - // TODO(crbug.com/1227029): Make private as an implementation detail of the - // DICe flow. - content::WebContents* contents() const { return contents_.get(); } - - // Updates the profile color provided in the constructor. absl::optional - // denotes the default theme. - void SetProfileColor(absl::optional<SkColor> color); - // Returns the profile color, taking into account current policies. - // Returns absl::nullopt for the default theme. - absl::optional<SkColor> GetProfileColor() const; - - bool IsSigningIn() const; - - // Returns theme provider based on `profile_`. + // Returns theme provider based on the sign-in profile or nullptr if the flow + // is not yet initialized. const ui::ThemeProvider* GetThemeProvider() const; // Getter of the path of profile which is displayed on the profile switch // screen. Returns an empty path if no such screen has been displayed. base::FilePath switch_profile_path() const { return switch_profile_path_; } + // Sign-in flow operations. + // + // All the following public functions can only be called after the flow gets + // initialized. The flow is initialized when the `switch_finished_callback` + // provided in SwitchToSignIn() gets called with success (true value). + + // Cancels the flow explicitly. This does not log any metrics, the caller + // must take care of logging the outcome of the flow on its own. + void Cancel(); + // Finishes the creation flow by marking `profile_being_created_` as fully // created, opening a browser window for this profile and calling // `callback`. @@ -139,6 +139,19 @@ EnterpriseProfileWelcomeUI::ScreenType type, base::OnceCallback<void(bool)> proceed_callback); + // Initializes the flow with the newly created profile. + void OnProfileCreated( + base::OnceCallback<void(bool)>& switch_finished_callback, + Profile* new_profile, + Profile::CreateStatus status); + + // Returns whether the flow is initialized (i.e. whether `profile_` has been + // created). + bool IsInitialized() const; + + // Returns the profile color, taking into account current policies. + absl::optional<SkColor> GetProfileColor() const; + void FinishAndOpenBrowserImpl(BrowserOpenedCallback callback, bool enterprise_sync_consent_needed); @@ -153,17 +166,19 @@ Profile* profile, Profile::CreateStatus profile_create_status); + content::WebContents* contents() const { return contents_.get(); } + // The host object, must outlive this object. ProfilePickerWebContentsHost* host_; - // The web contents backed by `profile`. This is used for displaying the - // sign-in flow. - std::unique_ptr<content::WebContents> contents_; - Profile* profile_ = nullptr; // Prevent |profile_| from being destroyed first. - ScopedProfileKeepAlive profile_keep_alive_; + std::unique_ptr<ScopedProfileKeepAlive> profile_keep_alive_; + + // The web contents backed by `profile`. This is used for displaying the + // sign-in flow. + std::unique_ptr<content::WebContents> contents_; // Set for the profile at the very end to avoid coloring the simple toolbar // for GAIA sign-in (that uses the ThemeProvider of the current profile).
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view.cc b/chrome/browser/ui/views/profiles/profile_picker_view.cc index 5fca1de..5777e94 100644 --- a/chrome/browser/ui/views/profiles/profile_picker_view.cc +++ b/chrome/browser/ui/views/profiles/profile_picker_view.cc
@@ -578,31 +578,29 @@ void ProfilePickerView::SwitchToSignIn( absl::optional<SkColor> profile_color, base::OnceCallback<void(bool)> switch_finished_callback) { - if (sign_in_) { - // The profile is already created (the user went back and forth again). No - // need to create it again. - std::move(switch_finished_callback).Run(true); - // The color might be different for the second time (as the user could go to - // the local customization flow and change the color there) so update it. - sign_in_->SetProfileColor(profile_color); - // Do not load any url because the desired sign-in screen is still loaded in - // `sign_in_->contents`. - ShowScreen(sign_in_->contents(), GURL(), - /*show_toolbar=*/true); + // TODO(crbug.com/1227029): Consider having forced signin as another + // implementation of an abstract signin interface to move the code out of + // this class. + if (signin_util::IsForceSigninEnabled()) { + size_t icon_index = profiles::GetPlaceholderAvatarIndex(); + ProfileManager::CreateMultiProfileAsync( + g_browser_process->profile_manager() + ->GetProfileAttributesStorage() + .ChooseNameForNewProfile(icon_index), + icon_index, /*is_hidden=*/true, + base::BindRepeating( + &ProfilePickerView::OnProfileForForcedSigninCreated, + weak_ptr_factory_.GetWeakPtr(), + base::OwnedRef(std::move(switch_finished_callback)))); return; } - size_t icon_index = profiles::GetPlaceholderAvatarIndex(); - // Silently create the new profile for browsing on GAIA (so that the sign-in - // cookies are stored in the right profile). - ProfileManager::CreateMultiProfileAsync( - g_browser_process->profile_manager() - ->GetProfileAttributesStorage() - .ChooseNameForNewProfile(icon_index), - icon_index, /*is_hidden=*/true, - base::BindRepeating(&ProfilePickerView::OnProfileForSigninCreated, - weak_ptr_factory_.GetWeakPtr(), profile_color, - base::OwnedRef(std::move(switch_finished_callback)))); + if (!sign_in_) { + sign_in_ = std::make_unique<ProfilePickerSignInFlowController>( + this, extended_account_info_timeout_); + } + + sign_in_->SwitchToSignIn(profile_color, std::move(switch_finished_callback)); } void ProfilePickerView::CancelSignIn() { @@ -624,7 +622,7 @@ ShowScreenInSystemContents(GURL(), /*show_toolbar=*/false); // Reset the sign-in flow. sign_in_.reset(); - toolbar_->RemoveAllChildViews(/*delete_children=*/true); + toolbar_->RemoveAllChildViews(); return; } case ProfilePicker::EntryPoint::kProfileMenuAddNewProfile: { @@ -635,11 +633,12 @@ } } -void ProfilePickerView::OnProfileForSigninCreated( - absl::optional<SkColor> profile_color, +void ProfilePickerView::OnProfileForForcedSigninCreated( base::OnceCallback<void(bool)>& switch_finished_callback, Profile* profile, Profile::CreateStatus status) { + DCHECK(signin_util::IsForceSigninEnabled()); + if (status == Profile::CREATE_STATUS_LOCAL_FAIL) { std::move(switch_finished_callback).Run(false); return; @@ -650,16 +649,8 @@ DCHECK(profile); std::move(switch_finished_callback).Run(true); - if (signin_util::IsForceSigninEnabled()) { - // Show the embedded sign-in flow if the force signin is enabled. - ProfilePickerForceSigninDialog::ShowForceSigninDialog( - web_view_->GetWebContents()->GetBrowserContext(), profile->GetPath()); - return; - } - - sign_in_ = std::make_unique<ProfilePickerSignInFlowController>( - this, profile, profile_color, extended_account_info_timeout_); - sign_in_->Init(); + ProfilePickerForceSigninDialog::ShowForceSigninDialog( + web_view_->GetWebContents()->GetBrowserContext(), profile->GetPath()); } void ProfilePickerView::WindowClosing() {
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view.h b/chrome/browser/ui/views/profiles/profile_picker_view.h index 2854540..d177ffc 100644 --- a/chrome/browser/ui/views/profiles/profile_picker_view.h +++ b/chrome/browser/ui/views/profiles/profile_picker_view.h
@@ -137,9 +137,9 @@ // Cancel the sign-in flow and returns back to the main picker screen (if the // original EntryPoint was to open the picker). void CancelSignIn(); - // On creation success for the sign-in profile, it rebuilds the view. - void OnProfileForSigninCreated( - absl::optional<SkColor> profile_color, + + // Handles profile creation when forced sign-in is enabled. + void OnProfileForForcedSigninCreated( base::OnceCallback<void(bool)>& switch_finished_callback, Profile* new_profile, Profile::CreateStatus status);
diff --git a/chrome/browser/ui/views/tabs/color_picker_view.cc b/chrome/browser/ui/views/tabs/color_picker_view.cc index 5a4b1040..d8d7ca8 100644 --- a/chrome/browser/ui/views/tabs/color_picker_view.cc +++ b/chrome/browser/ui/views/tabs/color_picker_view.cc
@@ -253,7 +253,7 @@ ColorPickerView::~ColorPickerView() { // Remove child views early since they have references to us through a // callback. - RemoveAllChildViews(true); + RemoveAllChildViews(); } absl::optional<int> ColorPickerView::GetSelectedElement() const {
diff --git a/chrome/browser/ui/views/tabs/stacked_tab_strip_layout_unittest.cc b/chrome/browser/ui/views/tabs/stacked_tab_strip_layout_unittest.cc index 07bbf09..2a23fef 100644 --- a/chrome/browser/ui/views/tabs/stacked_tab_strip_layout_unittest.cc +++ b/chrome/browser/ui/views/tabs/stacked_tab_strip_layout_unittest.cc
@@ -84,7 +84,7 @@ void PrepareChildViews(int count) { view_model_.Clear(); - view_.RemoveAllChildViews(true); + view_.RemoveAllChildViews(); for (int i = 0; i < count; ++i) AddViewToViewModel(i); }
diff --git a/chrome/browser/ui/views/tabs/tab_strip.cc b/chrome/browser/ui/views/tabs/tab_strip.cc index 0c5be9d8..2c94eb0 100644 --- a/chrome/browser/ui/views/tabs/tab_strip.cc +++ b/chrome/browser/ui/views/tabs/tab_strip.cc
@@ -1161,7 +1161,7 @@ // The child tabs may call back to us from their destructors. Delete them so // that if they call back we aren't in a weird state. - RemoveAllChildViews(true); + RemoveAllChildViews(); CHECK(!IsInObserverList()); }
diff --git a/chrome/browser/ui/views/task_manager_view.cc b/chrome/browser/ui/views/task_manager_view.cc index c85ab8a..eb7ca4f 100644 --- a/chrome/browser/ui/views/task_manager_view.cc +++ b/chrome/browser/ui/views/task_manager_view.cc
@@ -63,7 +63,7 @@ TaskManagerView::~TaskManagerView() { // Delete child views now, while our table model still exists. - RemoveAllChildViews(true); + RemoveAllChildViews(); } // static
diff --git a/chrome/browser/ui/views/toolbar/toolbar_icon_container_view.cc b/chrome/browser/ui/views/toolbar/toolbar_icon_container_view.cc index 5253acd..2490475 100644 --- a/chrome/browser/ui/views/toolbar/toolbar_icon_container_view.cc +++ b/chrome/browser/ui/views/toolbar/toolbar_icon_container_view.cc
@@ -129,7 +129,7 @@ ToolbarIconContainerView::~ToolbarIconContainerView() { // As childred might be Observers of |this|, we need to destroy them before // destroying |observers_|. - RemoveAllChildViews(true); + RemoveAllChildViews(); } void ToolbarIconContainerView::AddMainButton(views::Button* main_button) {
diff --git a/chrome/browser/ui/views/touch_selection_menu_chromeos.cc b/chrome/browser/ui/views/touch_selection_menu_chromeos.cc index adf1c3e..69622cd 100644 --- a/chrome/browser/ui/views/touch_selection_menu_chromeos.cc +++ b/chrome/browser/ui/views/touch_selection_menu_chromeos.cc
@@ -44,7 +44,7 @@ // default action buttons are already added, we should remove the existent // buttons if any, and then call CreateButtons, this will call the parent // method too. - RemoveAllChildViews(/*delete_children=*/true); + RemoveAllChildViews(); CreateButtons(); }
diff --git a/chrome/browser/ui/views/translate/translate_bubble_view.cc b/chrome/browser/ui/views/translate/translate_bubble_view.cc index cb330a0..4944127 100644 --- a/chrome/browser/ui/views/translate/translate_bubble_view.cc +++ b/chrome/browser/ui/views/translate/translate_bubble_view.cc
@@ -141,7 +141,7 @@ // the child view is destructed. For example, |source_language_combobx_model_| // is referred by Combobox's destructor. Before destroying the models, // removing the child views is needed. - RemoveAllChildViews(true); + RemoveAllChildViews(); } DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(TranslateBubbleView, kIdentifier);
diff --git a/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.cc b/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.cc index a147107d..f6aad06 100644 --- a/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.cc +++ b/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.cc
@@ -63,7 +63,7 @@ // ObservableAuthenticatorList is owned by AuthenticatorRequestDialogModel, // destroy all view components that might own models observing the list prior // to destroying AuthenticatorRequestDialogModel. - RemoveAllChildViews(true /* delete_children */); + RemoveAllChildViews(); } void AuthenticatorRequestDialogView::ReplaceCurrentSheetWith(
diff --git a/chrome/browser/ui/views/webauthn/authenticator_request_sheet_view.cc b/chrome/browser/ui/views/webauthn/authenticator_request_sheet_view.cc index 7c29f6c..3913b48 100644 --- a/chrome/browser/ui/views/webauthn/authenticator_request_sheet_view.cc +++ b/chrome/browser/ui/views/webauthn/authenticator_request_sheet_view.cc
@@ -49,7 +49,7 @@ AuthenticatorRequestSheetView::~AuthenticatorRequestSheetView() = default; void AuthenticatorRequestSheetView::ReInitChildViews() { - RemoveAllChildViews(true /* delete_children */); + RemoveAllChildViews(); // No need to add further spacing between the upper and lower half. The image // is designed to fill the dialog's top half without any border/margins, and
diff --git a/chrome/browser/ui/views/webid/webid_signin_page_view.cc b/chrome/browser/ui/views/webid/webid_signin_page_view.cc index f377e50..8c2e2fcd 100644 --- a/chrome/browser/ui/views/webid/webid_signin_page_view.cc +++ b/chrome/browser/ui/views/webid/webid_signin_page_view.cc
@@ -157,7 +157,7 @@ } void SigninPageView::UpdateHeaderView() { - header_view_->RemoveAllChildViews(true); + header_view_->RemoveAllChildViews(); header_view_->AddChildView(std::make_unique<TitleAndOriginView>( web_view_->GetWebContents()->GetTitle(), web_view_->GetWebContents()->GetVisibleURL().GetOrigin()));
diff --git a/chrome/browser/upgrade_detector/get_installed_version_fuchsia.cc b/chrome/browser/upgrade_detector/get_installed_version_fuchsia.cc new file mode 100644 index 0000000..d38bc57 --- /dev/null +++ b/chrome/browser/upgrade_detector/get_installed_version_fuchsia.cc
@@ -0,0 +1,13 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/upgrade_detector/get_installed_version.h" + +#include "base/notreached.h" + +InstalledAndCriticalVersion GetInstalledVersion() { + // TODO(crbug.com/1235293) + NOTIMPLEMENTED_LOG_ONCE(); + return InstalledAndCriticalVersion(base::Version()); +}
diff --git a/chrome/browser/upgrade_detector/installed_version_monitor_fuchsia.cc b/chrome/browser/upgrade_detector/installed_version_monitor_fuchsia.cc new file mode 100644 index 0000000..cdfa4eb6 --- /dev/null +++ b/chrome/browser/upgrade_detector/installed_version_monitor_fuchsia.cc
@@ -0,0 +1,14 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/upgrade_detector/installed_version_monitor.h" + +#include "base/notreached.h" + +// static +std::unique_ptr<InstalledVersionMonitor> InstalledVersionMonitor::Create() { + // TODO(crbug.com/1235293) + NOTIMPLEMENTED_LOG_ONCE(); + return nullptr; +}
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc index 96d10cb..5dce4a0 100644 --- a/chrome/common/chrome_features.cc +++ b/chrome/common/chrome_features.cc
@@ -1001,7 +1001,7 @@ #if defined(OS_ANDROID) // Enables using NotificationCompat.Builder to create Android notifications. const base::Feature kUseNotificationCompatBuilder{ - "UseNotificationCompatBuilder", base::FEATURE_DISABLED_BY_DEFAULT}; + "UseNotificationCompatBuilder", base::FEATURE_ENABLED_BY_DEFAULT}; #endif // defined(OS_ANDROID) #if BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/chrome/common/extensions/api/_api_features.json b/chrome/common/extensions/api/_api_features.json index 2f1aca09..caa9856 100644 --- a/chrome/common/extensions/api/_api_features.json +++ b/chrome/common/extensions/api/_api_features.json
@@ -747,6 +747,10 @@ "channel": "trunk", "min_manifest_version": 3 }, + "scripting.unregisterContentScripts": { + "channel": "trunk", + "min_manifest_version": 3 + }, "search": { "dependencies": ["permission:search"], "contexts": ["blessed_extension"]
diff --git a/chrome/common/extensions/api/scripting.idl b/chrome/common/extensions/api/scripting.idl index 61bb869..42966b9 100644 --- a/chrome/common/extensions/api/scripting.idl +++ b/chrome/common/extensions/api/scripting.idl
@@ -143,6 +143,8 @@ callback GetRegisteredContentScriptsCallback = void( RegisteredContentScript[] scripts); + callback UnregisterContentScriptsCallback = void(); + interface Functions { // Injects a script into a target context. The script will be run at // <code>document_idle</code>. @@ -190,5 +192,15 @@ [nodoc, supportsPromises] static void getRegisteredContentScripts( optional ContentScriptFilter filter, GetRegisteredContentScriptsCallback callback); + + // Unregisters content scripts for this extension. + // |filter|: If specified, only unregisters dynamic content scripts which + // match the filter. Otherwise, all of the extension's dynamic content + // scripts are unregistered. + // |callback|: A callback to be invoked once scripts have been unregistered + // or if an error has occurred. + [nodoc, supportsPromises] static void unregisterContentScripts( + optional ContentScriptFilter filter, + optional UnregisterContentScriptsCallback callback); }; };
diff --git a/chrome/test/data/extensions/api_test/scripting/dynamic_scripts/inject_element_2.js b/chrome/test/data/extensions/api_test/scripting/dynamic_scripts/inject_element_2.js new file mode 100644 index 0000000..49b79ac --- /dev/null +++ b/chrome/test/data/extensions/api_test/scripting/dynamic_scripts/inject_element_2.js
@@ -0,0 +1,7 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +var div = document.createElement('div'); +div.id = 'injected_2'; +document.body.appendChild(div);
diff --git a/chrome/test/data/extensions/api_test/scripting/dynamic_scripts/worker.js b/chrome/test/data/extensions/api_test/scripting/dynamic_scripts/worker.js index 64a793e7..7839d99 100644 --- a/chrome/test/data/extensions/api_test/scripting/dynamic_scripts/worker.js +++ b/chrome/test/data/extensions/api_test/scripting/dynamic_scripts/worker.js
@@ -68,10 +68,15 @@ {ids: ['NONEXISTENT']}); chrome.test.assertEq([], scripts); + await chrome.scripting.unregisterContentScripts(); + scripts = await chrome.scripting.getRegisteredContentScripts(); + chrome.test.assertEq([], scripts); + chrome.test.succeed(); }, async function scriptInjected() { + await chrome.scripting.unregisterContentScripts(); var scripts = [{ id: 'script1', matches: ['*://a.com/*'], @@ -100,6 +105,7 @@ // Tests that an error is returned when multiple content script entries in // registerContentScripts share the same ID. async function duplicateScriptId_DuplicatesInSameCall() { + await chrome.scripting.unregisterContentScripts(); const scriptId = 'script2'; var scripts = [ @@ -118,6 +124,7 @@ // made in quick succession, the first call will successfully register the // script and the second call with return with an error. async function duplicateScriptId_DuplicateInPendingRegistration() { + await chrome.scripting.unregisterContentScripts(); const scriptId = 'script3'; var scripts = [{id: scriptId, matches: ['*://notused.com/*'], js: ['dynamic_1.js']}]; @@ -138,6 +145,7 @@ // Tests that an error is returned when a content script to be registered has // the same ID as a loaded content script. async function duplicateScriptId_DuplicatePreviouslyRegistered() { + await chrome.scripting.unregisterContentScripts(); const scriptId = 'script4'; const scripts = [{id: scriptId, matches: ['*://notused.com/*'], js: ['dynamic_1.js']}]; @@ -153,6 +161,7 @@ // Tests that an error is returned if a content script is specified with an // invalid ID. async function emptyScriptId() { + await chrome.scripting.unregisterContentScripts(); const scripts = [{id: '', matches: ['*://notused.com/*'], js: ['dynamic_1.js']}]; @@ -166,6 +175,7 @@ // Tests that an error is returned if a content script is specified with an // invalid ID. async function invalidScriptId() { + await chrome.scripting.unregisterContentScripts(); const scriptId = '_manifest_only'; const scripts = [{id: scriptId, matches: ['*://notused.com/*'], js: ['dynamic_1.js']}]; @@ -180,6 +190,7 @@ // Test that an error is returned if a content script is specified with a // file that cannot be read. async function scriptFileError() { + await chrome.scripting.unregisterContentScripts(); const scriptFile = 'nonexistent.js'; const scripts = [{id: 'script5', matches: ['*://notused.com/*'], js: [scriptFile]}]; @@ -194,6 +205,7 @@ // Test that an error is returned if a content script does not specify any // js/css files to inject. async function emptyJSAndCSS() { + await chrome.scripting.unregisterContentScripts(); const scripts = [{id: 'empty', matches: ['*://notused.com/*'], css: []}]; await chrome.test.assertPromiseRejects( @@ -206,6 +218,7 @@ // Test that an error is returned if a content script specifies a malformed // match pattern. async function invalidMatchPattern() { + await chrome.scripting.unregisterContentScripts(); const scripts = [{ id: 'invalidMatchPattern', matches: ['invalid**match////'], @@ -223,6 +236,7 @@ // Test that a registered content script will not be injected into a frame // where the extension does not have the host permissions for. async function noHostPermissions() { + await chrome.scripting.unregisterContentScripts(); var scripts = [{ id: 'noHostPerms', matches: ['*://nohostperms.com/*'], @@ -249,6 +263,7 @@ // Test that a registered content script WILL be injected into a frame // where the extension has host permissions for. async function hostPermissions() { + await chrome.scripting.unregisterContentScripts(); var scripts = [{ id: 'hostPerms', matches: ['*://hostperms.com/*'], @@ -277,6 +292,7 @@ // and a registerContentScripts call, then the script will still only be // injected once on a matching frame. async function staticAndDynamicScriptInjectedOnce() { + await chrome.scripting.unregisterContentScripts(); var scripts = [{ id: 'inject_element', matches: ['*://*/*'], @@ -297,5 +313,103 @@ chrome.test.assertEq(1, results.length); chrome.test.assertEq(1, results[0].result); chrome.test.succeed(); - } + }, + + // Test that scripts that are unregistered are not injected into a (former) + // matching frame. + async function unregisterScripts() { + await chrome.scripting.unregisterContentScripts(); + var scripts = [ + { + id: 'inject_element_1', + matches: ['*://*/*'], + js: ['inject_element.js'], + runAt: 'document_end' + }, + { + id: 'inject_element_2', + matches: ['*://*/*'], + js: ['inject_element_2.js'], + runAt: 'document_end' + } + ]; + + const getInjectedElementIds = function() { + let childIds = []; + for (const child of document.body.children) + childIds.push(child.id); + return childIds.sort(); + }; + + await chrome.scripting.registerContentScripts(scripts); + const config = await chrome.test.getConfig(); + const url = `http://hostperms.com:${config.testServer.port}/simple.html`; + let tab = await openTab(url); + let results = await chrome.scripting.executeScript( + {target: {tabId: tab.id}, func: getInjectedElementIds}); + + // Both scripts should be injected, and both scripts should inject one + // element. + chrome.test.assertEq(1, results.length); + chrome.test.assertEq(['injected', 'injected_2'], results[0].result); + scripts = await chrome.scripting.getRegisteredContentScripts(); + chrome.test.assertEq(2, scripts.length); + + await chrome.scripting.unregisterContentScripts( + {ids: ['inject_element_1']}); + tab = await openTab(url); + results = await chrome.scripting.executeScript( + {target: {tabId: tab.id}, func: getInjectedElementIds}); + + // After removing the script with id 'inject_element_1' and opening a tab, + // only 'inject_element_2' should be injected. + chrome.test.assertEq(1, results.length); + chrome.test.assertEq(['injected_2'], results[0].result); + + scripts = await chrome.scripting.getRegisteredContentScripts(); + chrome.test.assertEq(1, scripts.length); + + chrome.test.succeed(); + }, + + // Test that an error is returned when attempting to specify an invalid ID + // for unregisterContentScripts. + async function unregisterScriptsWithInvalidID() { + await chrome.scripting.unregisterContentScripts(); + + const scriptId = '_manifest_only'; + await chrome.test.assertPromiseRejects( + chrome.scripting.unregisterContentScripts({ids: [scriptId]}), + `Error: Content script's ID '${scriptId}' must not start with '_'`); + chrome.test.succeed(); + }, + + // Test that an error is returned when attempting to specify a nonexistent ID + // for unregisterContentScripts. + async function unregisterScriptsWithNonexistentID() { + await chrome.scripting.unregisterContentScripts(); + + const validId = 'inject_element_1'; + var scripts = [{ + id: validId, + matches: ['*://*/*'], + js: ['inject_element.js'], + runAt: 'document_end' + }]; + + await chrome.scripting.registerContentScripts(scripts); + + const nonexistentId = 'NONEXISTENT'; + await chrome.test.assertPromiseRejects( + chrome.scripting.unregisterContentScripts( + {ids: [validId, nonexistentId]}), + `Error: Nonexistent script ID '${nonexistentId}'`); + + // UnregisterContentScripts should be a no-op if it fails. + scripts = await chrome.scripting.getRegisteredContentScripts(); + chrome.test.assertEq(1, scripts.length); + chrome.test.assertEq(validId, scripts[0].id); + + chrome.test.succeed(); + }, ]);
diff --git a/chrome/test/data/webui/settings/chromeos/os_paired_bluetooth_list_tests.js b/chrome/test/data/webui/settings/chromeos/os_paired_bluetooth_list_tests.js index 91f2441..21023043 100644 --- a/chrome/test/data/webui/settings/chromeos/os_paired_bluetooth_list_tests.js +++ b/chrome/test/data/webui/settings/chromeos/os_paired_bluetooth_list_tests.js
@@ -8,8 +8,7 @@ // #import 'chrome://os-settings/strings.m.js'; // #import {flush, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; -// #import {assertTrue, assertEquals} from '../../../chai_assert.js'; -// #import {waitAfterNextRender} from 'chrome://test/test_util.m.js'; +// #import {assertTrue} from '../../../chai_assert.js'; // clang-format on suite('OsPairedBluetoothListTest', function() { @@ -23,31 +22,8 @@ Polymer.dom.flush(); }); - function flushAsync() { - Polymer.dom.flush(); - return new Promise(resolve => setTimeout(resolve)); - } - test('Base Test', function() { const list = pairedBluetoothList.shadowRoot.querySelector('iron-list'); assertTrue(!!list); }); - - test('Device list change renders items correctly', async function() { - // TODO(crbug.com/1010321): Use real Device objects. - pairedBluetoothList.devices = [{}, {}, {}]; - await flushAsync(); - - const getListItems = () => { - return pairedBluetoothList.shadowRoot.querySelectorAll( - 'os-settings-paired-bluetooth-list-item'); - }; - assertEquals(getListItems().length, 3); - - pairedBluetoothList.devices = [{}, {}, {}, {}, {}]; - await waitAfterNextRender(pairedBluetoothList); - Polymer.dom.flush(); - - assertEquals(getListItems().length, 5); - }); }); \ No newline at end of file
diff --git a/chromeos/components/camera_app_ui/resources/.eslintrc.js b/chromeos/components/camera_app_ui/resources/.eslintrc.js index fc1a430..98f4117 100644 --- a/chromeos/components/camera_app_ui/resources/.eslintrc.js +++ b/chromeos/components/camera_app_ui/resources/.eslintrc.js
@@ -401,7 +401,6 @@ 'CSSScale': 'readable', 'CSSTransformValue': 'readable', 'CSSTranslate': 'readable', - 'CSSUnitValue': 'readable', }, // Generally, the rules should be compatible to both bundled and the newest // stable eslint, so it's easier to upgrade and develop without the full
diff --git a/chromeos/components/camera_app_ui/resources/js/externs/w3c_api.js b/chromeos/components/camera_app_ui/resources/js/externs/w3c_api.js index 01beda8..b35cf6c 100644 --- a/chromeos/components/camera_app_ui/resources/js/externs/w3c_api.js +++ b/chromeos/components/camera_app_ui/resources/js/externs/w3c_api.js
@@ -107,8 +107,15 @@ /** @type {string} */ OverconstrainedError.prototype.message; +/** + * @constructor + */ +function CSSStyleValue() {} -// CSS Typed OM Level 1: https://drafts.css-houdini.org/css-typed-om/ +/** + * @type {number} + */ +CSSStyleValue.prototype.value; /** * @constructor @@ -132,10 +139,6 @@ */ Element.prototype.computedStyleMap = function() {}; -// The base StylePropertyMap is defined in -// third_party/closure_compiler/externs/pending.js, but missing extend for -// StylePropertyMapReadOnly. - /** * @param {string} property * @return {?CSSStyleValue} @@ -150,8 +153,61 @@ /** * @constructor + * @extends {CSSStyleValue} + * @param {!CSSStyleValue} x + * @param {!CSSStyleValue} y */ -function CSSStyleValue() {} +function CSSTranslate(x, y) {} + +/** + * @constructor + * @extends {CSSStyleValue} + * @param {!CSSStyleValue} x + */ +function CSSRotate(x) {} + +/** + * @type {!CSSStyleValue} + */ +CSSRotate.prototype.angle; + +/** + * @constructor + * @extends {CSSStyleValue} + * @param {!CSSStyleValue} x + * @param {!CSSStyleValue} y + */ +function CSSScale(x, y) {} + +/** + * @typedef {(CSSTranslate|CSSRotate|CSSScale)} + */ +let CSSTransformComponent; + +/** + * @constructor + * @implements {Iterable<!CSSTransformComponent>} + * @param {!Array<!CSSTransformComponent>} transforms + */ +function CSSTransformValue(transforms) {} + +/** + * @param {number} px + * @return {!CSSStyleValue} + */ +CSS.px; + +/** + * @param {number} rad + * @return {!CSSStyleValue} + */ +CSS.rad; + +/** + * @param {number} number + * @return {!CSSStyleValue} + */ +CSS.number; /** * @constructor @@ -160,90 +216,7 @@ function CSSNumericValue() {} /** - * @param {string} cssText - * @return {!CSSNumericValue} + * @param {string} str + * @return {!CSSStyleValue} */ CSSNumericValue.parse; - -/** - * @param {string} unit - * @return {!CSSUnitValue} - */ -CSSNumericValue.prototype.to; - -/** - * @typedef {number|CSSNumericValue} - */ -let CSSNumberish; - -/** - * @typedef {Object} - */ -let CSSTransformComponent; - -/** - * @constructor - * @extends {CSSTransformComponent} - * @param {!CSSNumericValue} x - * @param {!CSSNumericValue} y - */ -function CSSTranslate(x, y) {} - -/** - * @constructor - * @extends {CSSTransformComponent} - * @param {!CSSNumericValue} angle - */ -function CSSRotate(angle) {} - -/** - * @type {!CSSNumericValue} - */ -CSSRotate.prototype.angle; - -/** - * @constructor - * @extends {CSSTransformComponent} - * @param {!CSSNumberish} x - * @param {!CSSNumberish} y - */ -function CSSScale(x, y) {} - -/** - * @constructor - * @extends {CSSStyleValue} - * @implements {Iterable<!CSSTransformComponent>} - * @param {!Array<!CSSTransformComponent>} transforms - */ -function CSSTransformValue(transforms) {} - -/** - * @constructor - * @extends {CSSNumericValue} - * @param {number} value - * @param {string} unit - */ -function CSSUnitValue(value, unit) {} - -/** - * @type {number} - */ -CSSUnitValue.prototype.value; - -/** - * @param {number} px - * @return {!CSSUnitValue} - */ -CSS.px; - -/** - * @param {number} rad - * @return {!CSSUnitValue} - */ -CSS.rad; - -/** - * @param {number} number - * @return {!CSSUnitValue} - */ -CSS.number;
diff --git a/chromeos/components/camera_app_ui/resources/js/focus_ring.js b/chromeos/components/camera_app_ui/resources/js/focus_ring.js index b2dcf57..8fabc2a 100644 --- a/chromeos/components/camera_app_ui/resources/js/focus_ring.js +++ b/chromeos/components/camera_app_ui/resources/js/focus_ring.js
@@ -8,7 +8,6 @@ } from './chrome_util.js'; import {cssStyle} from './css.js'; import * as dom from './dom.js'; -import {getStyleValueInPx} from './util.js'; /** * Focus ring element. @@ -53,7 +52,7 @@ function onFocus({target}) { const el = assertInstanceof(target, HTMLElement); const style = el.computedStyleMap(); - const size = getStyleValueInPx(style, '--focus-ring-size'); + const size = style.get('--focus-ring-size').value; const ringStyleValue = `${style.get('--focus-ring-style')}`; for (const v of ringStyleValues) { ring.classList.toggle(v, ringStyleValue.includes(v));
diff --git a/chromeos/components/camera_app_ui/resources/js/new_feature_toast.js b/chromeos/components/camera_app_ui/resources/js/new_feature_toast.js index f94bba2..410c9e5 100644 --- a/chromeos/components/camera_app_ui/resources/js/new_feature_toast.js +++ b/chromeos/components/camera_app_ui/resources/js/new_feature_toast.js
@@ -3,7 +3,6 @@ // found in the LICENSE file. import * as animation from './animation.js'; -import {assertInstanceof} from './chrome_util.js'; import {cssStyle} from './css.js'; import * as dom from './dom.js'; import {I18nString} from './i18n_string.js'; @@ -40,20 +39,22 @@ this.el_ = el; const style = this.el_.computedStyleMap(); + const getValue = (name) => + CSSNumericValue.parse(style.get(name).toString()).value; /** * Initial width of ripple in px. * @const {!number} * @private */ - this.width_ = util.getStyleValueInPx(style, '--ripple-start-width'); + this.width_ = getValue('--ripple-start-width'); /** * Initial height of ripple in px. * @const {!number} * @private */ - this.height_ = util.getStyleValueInPx(style, '--ripple-start-height'); + this.height_ = getValue('--ripple-start-height'); /** * @const {number} @@ -64,10 +65,8 @@ }, RIPPLE_DURATION_MS / RIPPLE_COUNT); RIPPLE_STYLE.setProperty('--duration', `${RIPPLE_DURATION_MS}ms`); - const scaleX = - assertInstanceof(style.get('--ripple-scale-x'), CSSUnitValue).value; - const scaleY = - assertInstanceof(style.get('--ripple-scale-y'), CSSUnitValue).value; + const scaleX = getValue('--ripple-scale-x'); + const scaleY = getValue('--ripple-scale-y'); RIPPLE_STYLE.setProperty('--scale', `scale(${scaleX}, ${scaleY})`); this.addRipple_(); @@ -159,7 +158,8 @@ if (!style.has(cssName)) { continue; } - const offset = util.getStyleValueInPx(style, cssName); + const offset = + CSSNumericValue.parse(style.get(cssName).toString()).value; properties.push({elProperty, toastProperty, offset}); } }
diff --git a/chromeos/components/camera_app_ui/resources/js/util.js b/chromeos/components/camera_app_ui/resources/js/util.js index d22b63b1..f0a8f20 100644 --- a/chromeos/components/camera_app_ui/resources/js/util.js +++ b/chromeos/components/camera_app_ui/resources/js/util.js
@@ -241,13 +241,3 @@ export function sleep(ms) { return new Promise((resolve) => setTimeout(resolve, ms)); } - -/** - * Gets value in px of a property in a StylePropertyMapReadOnly - * @param {!StylePropertyMapReadOnly} style - * @param {string} prop - * @return {number} - */ -export function getStyleValueInPx(style, prop) { - return assertInstanceof(style.get(prop), CSSNumericValue).to('px').value; -}
diff --git a/chromeos/components/camera_app_ui/resources/js/views/camera/document_corner_overlay.js b/chromeos/components/camera_app_ui/resources/js/views/camera/document_corner_overlay.js index ab76f59..f465d5c 100644 --- a/chromeos/components/camera_app_ui/resources/js/views/camera/document_corner_overlay.js +++ b/chromeos/components/camera_app_ui/resources/js/views/camera/document_corner_overlay.js
@@ -79,7 +79,7 @@ } for (const transform of transforms) { if (transform instanceof CSSRotate) { - return transform.angle.to('rad').value; + return transform.angle.value; } } return null;
diff --git a/chromeos/components/personalization_app/BUILD.gn b/chromeos/components/personalization_app/BUILD.gn index 11312f60..788ccdb 100644 --- a/chromeos/components/personalization_app/BUILD.gn +++ b/chromeos/components/personalization_app/BUILD.gn
@@ -25,7 +25,7 @@ "//chromeos/resources:personalization_app_resources", "//chromeos/strings", "//content/public/browser", - "//ui/chromeos/colors:cros_colors_views_generator", + "//ui/chromeos/styles:cros_styles_views_generator", "//ui/resources:webui_generated_resources_grd_grit", "//ui/resources:webui_resources_grd_grit", "//ui/webui",
diff --git a/chromeos/components/personalization_app/DEPS b/chromeos/components/personalization_app/DEPS index b391421..f7de85a 100644 --- a/chromeos/components/personalization_app/DEPS +++ b/chromeos/components/personalization_app/DEPS
@@ -5,7 +5,7 @@ "+chromeos/grit/chromeos_personalization_app_resources.h", "+content/public/browser", "+content/public/common", - "+ui/chromeos/colors/cros_colors.h", + "+ui/chromeos/styles/cros_styles.h", "+ui/resources/grit/webui_generated_resources.h", "+ui/resources/grit/webui_generated_resources_map.h", "+ui/resources/grit/webui_resources.h",
diff --git a/chromeos/components/personalization_app/resources/trusted/index.html b/chromeos/components/personalization_app/resources/trusted/index.html index b3b460f..7f8dfc26 100644 --- a/chromeos/components/personalization_app/resources/trusted/index.html +++ b/chromeos/components/personalization_app/resources/trusted/index.html
@@ -9,7 +9,7 @@ <meta charset="utf-8"> <link rel="stylesheet" href="/common/base.css"> <link rel="stylesheet" - href="chrome://resources/chromeos/colors/cros_colors.generated.css"> + href="chrome://resources/chromeos/colors/cros_styles.css"> <link rel="stylesheet" href="chrome://resources/css/text_defaults_md.css"> <script type="module" src="/trusted/personalization_app.js" defer></script> </head>
diff --git a/chromeos/components/personalization_app/resources/untrusted/collections.html b/chromeos/components/personalization_app/resources/untrusted/collections.html index 13ba2e6..2326502 100644 --- a/chromeos/components/personalization_app/resources/untrusted/collections.html +++ b/chromeos/components/personalization_app/resources/untrusted/collections.html
@@ -3,7 +3,7 @@ <head> <meta charset="utf-8"> <link rel="stylesheet" href="/common/base.css"> - <link rel="stylesheet" href="/chromeos/colors/cros_colors.generated.css"> + <link rel="stylesheet" href="/chromeos/colors/cros_styles.css"> <script type="module" src="collections_grid.js" defer></script> </head> <body>
diff --git a/chromeos/components/personalization_app/resources/untrusted/images.html b/chromeos/components/personalization_app/resources/untrusted/images.html index 023b965..ce40fe3 100644 --- a/chromeos/components/personalization_app/resources/untrusted/images.html +++ b/chromeos/components/personalization_app/resources/untrusted/images.html
@@ -3,7 +3,7 @@ <head> <meta charset="utf-8"> <link rel="stylesheet" href="/common/base.css"> - <link rel="stylesheet" href="/chromeos/colors/cros_colors.generated.css"> + <link rel="stylesheet" href="/chromeos/colors/cros_styles.css"> <script type="module" src="images_grid.js" defer></script> </head> <body>
diff --git a/chromeos/components/personalization_app/untrusted_personalization_app_ui_config.cc b/chromeos/components/personalization_app/untrusted_personalization_app_ui_config.cc index c2cebd2..095e85e 100644 --- a/chromeos/components/personalization_app/untrusted_personalization_app_ui_config.cc +++ b/chromeos/components/personalization_app/untrusted_personalization_app_ui_config.cc
@@ -16,7 +16,7 @@ #include "content/public/browser/web_ui_data_source.h" #include "content/public/common/url_constants.h" #include "services/network/public/mojom/content_security_policy.mojom-shared.h" -#include "ui/chromeos/colors/cros_colors.h" +#include "ui/chromeos/styles/cros_styles.h" #include "ui/resources/grit/webui_generated_resources.h" #include "ui/resources/grit/webui_generated_resources_map.h" #include "ui/resources/grit/webui_resources.h" @@ -43,13 +43,13 @@ } void AddCrosColors(content::WebUIDataSource* source) { - source->AddResourcePath("chromeos/colors/cros_colors.generated.css", + source->AddResourcePath("chromeos/colors/cros_styles.css", IDR_WEBUI_CROS_COLORS_CSS); source->AddString( "crosColorsDebugOverrides", base::FeatureList::IsEnabled(ash::features::kSemanticColorsDebugOverride) - ? cros_colors::kDebugOverrideCssString + ? cros_styles::kDebugOverrideCssString : std::string()); }
diff --git a/chromeos/components/print_management/resources/print_management_shared_css.html b/chromeos/components/print_management/resources/print_management_shared_css.html index e83ba23..a67284d 100644 --- a/chromeos/components/print_management/resources/print_management_shared_css.html +++ b/chromeos/components/print_management/resources/print_management_shared_css.html
@@ -1,5 +1,5 @@ <link rel="stylesheet" - href="chrome://resources/chromeos/colors/cros_colors.generated.css"> + href="chrome://resources/chromeos/colors/cros_styles.css"> <link rel="stylesheet" href="chrome://resources/css/text_defaults_md.css"> <link rel="stylesheet" href="chrome://resources/css/md_colors.css"> <template>
diff --git a/chromeos/components/sample_system_web_app_ui/resources/component_playground.html b/chromeos/components/sample_system_web_app_ui/resources/component_playground.html index 6e75494..115a3288 100644 --- a/chromeos/components/sample_system_web_app_ui/resources/component_playground.html +++ b/chromeos/components/sample_system_web_app_ui/resources/component_playground.html
@@ -3,7 +3,7 @@ <head> <meta charset="utf8"> <title>Component Playground</title> - <link rel="stylesheet" href="chrome://resources/chromeos/colors/cros_colors.generated.css"> + <link rel="stylesheet" href="chrome://resources/chromeos/colors/cros_styles.css"> <style> html { background-color: var(--cros-bg-color);
diff --git a/components/browser_ui/bottomsheet/android/test/java/src/org/chromium/components/browser_ui/bottomsheet/BottomSheetTestSupport.java b/components/browser_ui/bottomsheet/android/test/java/src/org/chromium/components/browser_ui/bottomsheet/BottomSheetTestSupport.java index ce8d8617..5c7a70e2 100644 --- a/components/browser_ui/bottomsheet/android/test/java/src/org/chromium/components/browser_ui/bottomsheet/BottomSheetTestSupport.java +++ b/components/browser_ui/bottomsheet/android/test/java/src/org/chromium/components/browser_ui/bottomsheet/BottomSheetTestSupport.java
@@ -122,7 +122,6 @@ * @param state The state to wait for. */ public static void waitForState(BottomSheetController controller, @SheetState int state) { - if (controller.getSheetState() == state) return; CallbackHelper stateChangeHelper = new CallbackHelper(); final BottomSheetObserver observer = new EmptyBottomSheetObserver() { @Override @@ -131,7 +130,13 @@ } }; - TestThreadUtils.runOnUiThreadBlocking(() -> controller.addObserver(observer)); + TestThreadUtils.runOnUiThreadBlocking(() -> { + if (controller.getSheetState() == state) { + stateChangeHelper.notifyCalled(); + } else { + controller.addObserver(observer); + } + }); try { stateChangeHelper.waitForFirst(); @@ -148,10 +153,6 @@ * @param controller The controller for the bottom sheet. */ public static void waitForOpen(BottomSheetController controller) { - if (controller.getSheetState() == BottomSheetController.SheetState.HALF - || controller.getSheetState() == BottomSheetController.SheetState.FULL) { - return; - } CallbackHelper stateChangeHelper = new CallbackHelper(); final BottomSheetObserver observer = new EmptyBottomSheetObserver() { @@ -164,12 +165,20 @@ } }; - TestThreadUtils.runOnUiThreadBlocking(() -> controller.addObserver(observer)); + TestThreadUtils.runOnUiThreadBlocking(() -> { + if (controller.getSheetState() == BottomSheetController.SheetState.HALF + || controller.getSheetState() == BottomSheetController.SheetState.FULL) { + stateChangeHelper.notifyCalled(); + } else { + controller.addObserver(observer); + } + }); try { stateChangeHelper.waitForFirst(); } catch (TimeoutException ex) { - assert false : "Bottom sheet state never half or full"; + assert false : "Bottom sheet state never half or full. Current State: " + + sheetStateToString(controller.getSheetState()); } TestThreadUtils.runOnUiThreadBlocking(() -> controller.removeObserver(observer));
diff --git a/components/fullscreen_control/subtle_notification_view.cc b/components/fullscreen_control/subtle_notification_view.cc index 9f82d4e..1420d06c 100644 --- a/components/fullscreen_control/subtle_notification_view.cc +++ b/components/fullscreen_control/subtle_notification_view.cc
@@ -95,7 +95,7 @@ if (text == text_) return; - RemoveAllChildViews(true); + RemoveAllChildViews(); // Parse |text|, looking for pipe-delimited segment. std::vector<std::u16string> segments = base::SplitString(
diff --git a/components/gcm_driver/BUILD.gn b/components/gcm_driver/BUILD.gn index 1cbe23d..0149878 100644 --- a/components/gcm_driver/BUILD.gn +++ b/components/gcm_driver/BUILD.gn
@@ -60,7 +60,6 @@ "//components/pref_registry", "//components/prefs", "//components/signin/public/identity_manager", - "//components/sync/base", "//components/version_info", "//google_apis", "//google_apis/gcm", @@ -175,7 +174,6 @@ "//base/test:test_support", "//components/gcm_driver/crypto", "//components/prefs:test_support", - "//components/sync/protocol", "//google_apis:test_support", "//google_apis/gcm:test_support", "//net:test_support",
diff --git a/components/gcm_driver/DEPS b/components/gcm_driver/DEPS index d3a4dd7..45c7540 100644 --- a/components/gcm_driver/DEPS +++ b/components/gcm_driver/DEPS
@@ -5,7 +5,6 @@ "+components/pref_registry", "+components/prefs", "+components/signin/public", - "+components/sync/base", "+components/version_info", "+content/public/browser/browser_context.h", "+content/public/test", # Only used for tests.
diff --git a/components/gcm_driver/gcm_desktop_utils.cc b/components/gcm_driver/gcm_desktop_utils.cc index 7d8f394..307cda7 100644 --- a/components/gcm_driver/gcm_desktop_utils.cc +++ b/components/gcm_driver/gcm_desktop_utils.cc
@@ -13,7 +13,6 @@ #include "components/gcm_driver/gcm_client_factory.h" #include "components/gcm_driver/gcm_driver.h" #include "components/gcm_driver/gcm_driver_desktop.h" -#include "components/sync/base/sync_util.h" #include "services/network/public/cpp/shared_url_loader_factory.h" #include "url/gurl.h" @@ -92,11 +91,11 @@ const scoped_refptr<base::SequencedTaskRunner>& blocking_task_runner) { return std::unique_ptr<GCMDriver>(new GCMDriverDesktop( std::move(gcm_client_factory), - GetChromeBuildInfo(channel, product_category_for_subtypes), - syncer::MakeUserAgentForSync(channel), prefs, store_path, - remove_account_mappings_with_email_key, get_socket_factory_callback, - std::move(url_loader_factory), network_connection_tracker, ui_task_runner, - io_task_runner, blocking_task_runner)); + GetChromeBuildInfo(channel, product_category_for_subtypes), prefs, + store_path, remove_account_mappings_with_email_key, + get_socket_factory_callback, std::move(url_loader_factory), + network_connection_tracker, ui_task_runner, io_task_runner, + blocking_task_runner)); } } // namespace gcm
diff --git a/components/gcm_driver/gcm_driver_desktop.cc b/components/gcm_driver/gcm_driver_desktop.cc index b17e73c7..0e0f2ea 100644 --- a/components/gcm_driver/gcm_driver_desktop.cc +++ b/components/gcm_driver/gcm_driver_desktop.cc
@@ -497,7 +497,6 @@ GCMDriverDesktop::GCMDriverDesktop( std::unique_ptr<GCMClientFactory> gcm_client_factory, const GCMClient::ChromeBuildInfo& chrome_build_info, - const std::string& user_agent, PrefService* prefs, const base::FilePath& store_path, bool remove_account_mappings_with_email_key,
diff --git a/components/gcm_driver/gcm_driver_desktop.h b/components/gcm_driver/gcm_driver_desktop.h index 746bab8..0acec2c 100644 --- a/components/gcm_driver/gcm_driver_desktop.h +++ b/components/gcm_driver/gcm_driver_desktop.h
@@ -55,7 +55,6 @@ GCMDriverDesktop( std::unique_ptr<GCMClientFactory> gcm_client_factory, const GCMClient::ChromeBuildInfo& chrome_build_info, - const std::string& user_agent, PrefService* prefs, const base::FilePath& store_path, bool remove_account_mappings_with_email_key,
diff --git a/components/gcm_driver/gcm_driver_desktop_unittest.cc b/components/gcm_driver/gcm_driver_desktop_unittest.cc index 38cbd3d..543cc3c 100644 --- a/components/gcm_driver/gcm_driver_desktop_unittest.cc +++ b/components/gcm_driver/gcm_driver_desktop_unittest.cc
@@ -246,7 +246,7 @@ driver_ = std::make_unique<GCMDriverDesktop>( std::unique_ptr<GCMClientFactory>(new FakeGCMClientFactory( base::ThreadTaskRunnerHandle::Get(), io_thread_.task_runner())), - chrome_build_info, "user-agent-string", &prefs_, temp_dir_.GetPath(), + chrome_build_info, &prefs_, temp_dir_.GetPath(), /*remove_account_mappings_with_email_key=*/true, base::DoNothing(), base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>( &test_url_loader_factory_),
diff --git a/components/gcm_driver/gcm_driver_unittest.cc b/components/gcm_driver/gcm_driver_unittest.cc index 96701d5e..92a9a88 100644 --- a/components/gcm_driver/gcm_driver_unittest.cc +++ b/components/gcm_driver/gcm_driver_unittest.cc
@@ -154,7 +154,7 @@ driver_ = std::make_unique<GCMDriverDesktop>( std::make_unique<FakeGCMClientFactory>( base::ThreadTaskRunnerHandle::Get(), io_thread_.task_runner()), - chrome_build_info, "user-agent-string", &prefs_, temp_dir_.GetPath(), + chrome_build_info, &prefs_, temp_dir_.GetPath(), /*remove_account_mappings_with_email_key=*/true, base::DoNothing(), base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>( &test_url_loader_factory_),
diff --git a/components/history/core/browser/sync/typed_url_sync_bridge.cc b/components/history/core/browser/sync/typed_url_sync_bridge.cc index b73e74bc..18c1a18 100644 --- a/components/history/core/browser/sync/typed_url_sync_bridge.cc +++ b/components/history/core/browser/sync/typed_url_sync_bridge.cc
@@ -304,8 +304,10 @@ } VisitVector visits_vector; - if (!FixupURLAndGetVisits(&url_row, &visits_vector)) + if (!FixupURLAndGetVisits(&url_row, &visits_vector) || + visits_vector.empty()) { continue; + } std::unique_ptr<syncer::EntityData> entity_data = CreateEntityData(url_row, visits_vector); if (!entity_data) { @@ -332,8 +334,9 @@ auto batch = std::make_unique<MutableDataBatch>(); for (URLRow& url : typed_urls) { VisitVector visits_vector; - if (!FixupURLAndGetVisits(&url, &visits_vector)) + if (!FixupURLAndGetVisits(&url, &visits_vector) || visits_vector.empty()) { continue; + } std::unique_ptr<syncer::EntityData> entity_data = CreateEntityData(url, visits_vector); if (!entity_data) { @@ -818,7 +821,11 @@ if (is_existing_url) { // Add a new entry to `local_typed_urls`, and set the iterator to it. VisitVector untyped_visits; - if (!FixupURLAndGetVisits(&untyped_url, &untyped_visits)) { + // TODO(crbug.com/1075573): We early return on urls with all visits + // expired. It does not feel right as we might get new non-expired visits + // through sync. + if (!FixupURLAndGetVisits(&untyped_url, &untyped_visits) || + untyped_visits.empty()) { return; } (*local_visit_vectors)[untyped_url.url()] = untyped_visits; @@ -925,7 +932,11 @@ if (existing_url) { // This URL already exists locally - fetch the visits so we can // merge them below. - if (!FixupURLAndGetVisits(&new_url, &existing_visits)) { + // TODO(crbug.com/1075573): We early return on urls with all visits + // expired. It does not feel right as we might get new non-expired visits + // through sync. + if (!FixupURLAndGetVisits(&new_url, &existing_visits) || + existing_visits.empty()) { return; } } @@ -959,11 +970,13 @@ return; } - std::string storage_key = GetStorageKeyFromURLRow(row); - + // We want to also deal with URLs that have all visits expired (that return + // empty `visit_vector` from FixupURLAndGetVisits()) so that these get expired + // or deleted. if (HasTypedUrl(visit_vector)) { SendTypedURLToProcessor(row, visit_vector, metadata_change_list); } else { + std::string storage_key = GetStorageKeyFromURLRow(row); // If the URL has no typed visits any more we should get rid of it. It is // possible that this URL never had typed visits and thus it has no sync // entity and no sync metadata. We do not need to check for this case @@ -1136,9 +1149,9 @@ DVLOG(1) << "Found empty visits for URL: " << url->url(); if (url->last_visit().is_null()) { // If modified URL is bookmarked, history backend treats it as modified - // even if all its visits are deleted. Return false to stop further - // processing because sync expects valid visit time for modified entry. - return false; + // even if all its visits are deleted. Return empty visits to stop further + // processing. + return true; } VisitRow visit(url->id(), url->last_visit(), /*referring_visit=*/0, @@ -1174,7 +1187,7 @@ if (num_expired_visits == visits->size()) { DVLOG(1) << "All visits are expired for url: " << url->url(); visits->clear(); - return false; + return true; } visits->erase(visits->begin(), visits->begin() + num_expired_visits); }
diff --git a/components/history/core/browser/sync/typed_url_sync_bridge.h b/components/history/core/browser/sync/typed_url_sync_bridge.h index 9b31f1e..01e011f7 100644 --- a/components/history/core/browser/sync/typed_url_sync_bridge.h +++ b/components/history/core/browser/sync/typed_url_sync_bridge.h
@@ -204,9 +204,9 @@ // expired visits that are not deleted by `ExpireHistoryBackend`, etc) by // modifying the passed `url` object and `visits` vector. The order of // `visits` will be from the oldest to the newest order. - // Returns false in two cases. - // 1. we could not fetch the visits for the passed URL, DB error. - // 2. No visits for the passed url, or all the visits are expired. + // Returns false if we could not fetch the visits for the passed URL, DB + // error. If there are no visits for the passed url, or all the visits are + // expired, it returns true but `visits` is empty. bool FixupURLAndGetVisits(URLRow* url, VisitVector* visits); // Create an EntityData by URL `row` and its visits `visits`.
diff --git a/components/history/core/browser/sync/typed_url_sync_bridge_unittest.cc b/components/history/core/browser/sync/typed_url_sync_bridge_unittest.cc index c37cf01..c924e7f8 100644 --- a/components/history/core/browser/sync/typed_url_sync_bridge_unittest.cc +++ b/components/history/core/browser/sync/typed_url_sync_bridge_unittest.cc
@@ -46,11 +46,15 @@ using testing::_; using testing::AllOf; using testing::Contains; +using testing::DoAll; +using testing::IsEmpty; using testing::Mock; using testing::NiceMock; using testing::Not; using testing::Pointee; using testing::Return; +using testing::SizeIs; +using testing::UnorderedElementsAre; // Constants used to limit size of visits processed. See // equivalent constants in typed_url_sync_bridge.cc for descriptions. @@ -183,7 +187,6 @@ const std::string& title, int64_t typed_visit, int64_t reload_visit, - bool hidden, VisitVector* visits) { // Give each URL a unique ID, to mimic the behavior of the real database. GURL gurl(url); @@ -191,7 +194,7 @@ history_url.set_title(base::UTF8ToUTF16(title)); history_url.set_typed_count(1); history_url.set_visit_count(2); - history_url.set_hidden(hidden); + history_url.set_hidden(false); Time typed_visit_time = SinceEpoch(typed_visit); Time reload_visit_time = SinceEpoch(reload_visit); @@ -243,6 +246,14 @@ return storage_key; } +void StoreMetadata(const std::string& storage_key, + std::unique_ptr<EntityData> entity_data, + MetadataChangeList* metadata_change_list) { + sync_pb::EntityMetadata metadata; + metadata.set_sequence_number(1); + metadata_change_list->UpdateMetadata(storage_key, metadata); +} + class TestHistoryBackendDelegate : public HistoryBackend::Delegate { public: TestHistoryBackendDelegate() {} @@ -271,9 +282,10 @@ class TestHistoryBackendForSync : public HistoryBackend { public: - TestHistoryBackendForSync() + explicit TestHistoryBackendForSync( + std::unique_ptr<HistoryBackendClient> backend_client) : HistoryBackend(std::make_unique<TestHistoryBackendDelegate>(), - nullptr, + std::move(backend_client), base::ThreadTaskRunnerHandle::Get()) {} bool IsExpiredVisitTime(const Time& time) override { @@ -286,9 +298,17 @@ void SetVisitsForUrl(URLRow* new_url, const VisitVector visits) { if (!GetURL(new_url->url(), nullptr)) { - URLRows new_urls; - new_urls.push_back(*new_url); - AddPagesWithDetails(new_urls, SOURCE_SYNCED); + URLRow to_insert = *new_url; + // AddVisits() increments counts so we should decrement it now to get a + // consistent result in the end. + for (const auto& visit : visits) { + to_insert.set_visit_count(to_insert.visit_count() - 1); + if (ui::PageTransitionCoreTypeIs(visit.transition, + ui::PAGE_TRANSITION_TYPED)) { + to_insert.set_typed_count(to_insert.typed_count() - 1); + } + } + AddPagesWithDetails({to_insert}, SOURCE_SYNCED); } std::vector<VisitInfo> added_visits; @@ -303,12 +323,25 @@ ~TestHistoryBackendForSync() override {} }; +class MockHistoryBackendClient : public HistoryBackendClient { + public: + MOCK_METHOD(bool, IsPinnedURL, (const GURL& url), (override)); + MOCK_METHOD(std::vector<URLAndTitle>, GetPinnedURLs, (), (override)); + MOCK_METHOD(bool, IsWebSafe, (const GURL& url), (override)); +}; + } // namespace class TypedURLSyncBridgeTest : public testing::Test { public: void SetUp() override { - fake_history_backend_ = new TestHistoryBackendForSync(); + auto history_backend_client = + std::make_unique<NiceMock<MockHistoryBackendClient>>(); + history_backend_client_ = history_backend_client.get(); + ON_CALL(*history_backend_client_, IsPinnedURL).WillByDefault(Return(false)); + + fake_history_backend_ = + new TestHistoryBackendForSync(std::move(history_backend_client)); ASSERT_TRUE(test_dir_.CreateUniqueTempDir()); fake_history_backend_->Init( false, TestHistoryDatabaseParamsForPath(test_dir_.GetPath())); @@ -373,7 +406,6 @@ int typed_count, int64_t last_visit, bool hidden, - bool update_metadata, EntityChange::ChangeType change_type) { VisitVector visits; URLRow row = @@ -399,13 +431,6 @@ std::unique_ptr<MetadataChangeList> metadata_changes = bridge()->CreateMetadataChangeList(); - // There needs to be data present in the history DB before inserting - // metadata. - if (update_metadata) { - sync_pb::EntityMetadata metadata; - metadata.set_sequence_number(1); - metadata_changes->UpdateMetadata(storage_key, metadata); - } bridge()->ApplySyncChanges(std::move(metadata_changes), std::move(entity_changes)); @@ -429,6 +454,16 @@ return bridge()->GetStorageKeyInternal(url); } + std::set<std::string> GetAllSyncMetadataKeys() { + MetadataBatch metadata_batch; + metadata_store()->GetAllSyncMetadata(&metadata_batch); + std::set<std::string> keys; + for (const auto& kv : metadata_batch.GetAllMetadata()) { + keys.insert(kv.first); + } + return keys; + } + EntityData SpecificsToEntity(const TypedUrlSpecifics& specifics) { EntityData data; *data.specifics.mutable_typed_url() = specifics; @@ -520,6 +555,7 @@ protected: base::test::SingleThreadTaskEnvironment task_environment_; base::ScopedTempDir test_dir_; + MockHistoryBackendClient* history_backend_client_; scoped_refptr<TestHistoryBackendForSync> fake_history_backend_; TypedURLSyncBridge* typed_url_sync_bridge_ = nullptr; NiceMock<MockModelTypeChangeProcessor> mock_processor_; @@ -593,7 +629,7 @@ VerifyAllLocalHistoryData({*typed_url}); } -// Add a corupted typed url locally, has typed url count 1, but no real typed +// Add a corrupted typed url locally, has typed url count 1, but no real typed // url visit. Starting sync should not pick up this url. TEST_F(TypedURLSyncBridgeTest, MergeUrlNoTypedUrl) { // Add a url to backend. @@ -607,9 +643,9 @@ EXPECT_CALL(mock_processor_, Put).Times(0); StartSyncing(std::vector<TypedUrlSpecifics>()); - MetadataBatch metadata_batch; - metadata_store()->GetAllSyncMetadata(&metadata_batch); - EXPECT_EQ(0u, metadata_batch.TakeAllMetadata().size()); + // There's also no metadata written as there's no call to Put() (where the + // test could mock storing metadata). + EXPECT_THAT(GetAllSyncMetadataKeys(), IsEmpty()); } // Starting sync with no sync data should just push the local url to sync. @@ -621,15 +657,18 @@ EntityData entity_data; EXPECT_CALL(mock_processor_, Put(GetStorageKey(kURL), _, _)) - .WillOnce(SaveArgPointeeMove<1>(&entity_data)); + .WillOnce(DoAll(SaveArgPointeeMove<1>(&entity_data), StoreMetadata)); StartSyncing(std::vector<TypedUrlSpecifics>()); - // Check that the local cache was is still correct. + // Check that the local cache is still correct. sync_pb::EntitySpecifics entity_specifics; sync_pb::TypedUrlSpecifics* typed_url = entity_specifics.mutable_typed_url(); WriteToTypedUrlSpecifics(row, visits, typed_url); VerifyAllLocalHistoryData({*typed_url}); + EXPECT_THAT(GetAllSyncMetadataKeys(), + UnorderedElementsAre(GetStorageKey(kURL))); + // Check that the server was updated correctly. const TypedUrlSpecifics& committed_specifics = entity_data.specifics.typed_url(); @@ -693,7 +732,7 @@ EntityData entity_data; EXPECT_CALL(mock_processor_, Put(GetStorageKey(kURL), _, _)) - .WillOnce(SaveArgPointeeMove<1>(&entity_data)); + .WillOnce(DoAll(SaveArgPointeeMove<1>(&entity_data), StoreMetadata)); StartSyncing({*typed_url}); // Check that the backend was updated correctly. @@ -710,6 +749,9 @@ EXPECT_TRUE(fake_history_backend_->GetURL(GURL(kURL), &url_row)); EXPECT_EQ(kTitle2, base::UTF16ToUTF8(url_row.title())); + EXPECT_THAT(GetAllSyncMetadataKeys(), + UnorderedElementsAre(GetStorageKey(kURL))); + // Check that the sync was updated correctly. // The local history visit should not be added to sync because it is older // than sync's oldest visit. @@ -1053,9 +1095,8 @@ TEST_F(TypedURLSyncBridgeTest, DeleteLocalTypedUrlVisit) { VisitVector visits1, visits2; URLRow row1 = MakeTypedUrlRowWithTwoVisits(kURL, kTitle, - /*typed_visit_time=*/2, - /*reload_visit_time=*/4, - /*hidden=*/false, &visits1); + /*typed_visit=*/2, + /*reload_visit=*/4, &visits1); URLRow row2 = MakeTypedUrlRow(kURL2, kTitle2, /*typed_count=*/2, /*last_visit=*/10, false, &visits2); fake_history_backend_->SetVisitsForUrl(&row1, visits1); @@ -1077,64 +1118,144 @@ /*is_from_expiration=*/false); } -// Expire several (but not all) local typed urls. This has only impact on local -// store (metadata in the db and in-memory maps), nothing gets synced up. +// Expire a local typed url (but not all). This has only impact on local store +// (metadata in the db and in-memory maps), nothing gets synced up. TEST_F(TypedURLSyncBridgeTest, ExpireLocalTypedUrl) { StartSyncing(std::vector<TypedUrlSpecifics>()); - URLRows url_rows; - std::vector<VisitVector> visit_vectors; - std::vector<std::string> urls; - urls.push_back("http://pie.com/"); - urls.push_back("http://cake.com/"); - urls.push_back("http://google.com/"); - urls.push_back("http://foo.com/"); - urls.push_back("http://bar.com/"); + // Add two URLs into the history db and notify the bridge to get it synced up + // and thus also metadata written into the DB. + VisitVector visits1, visits2; + URLRow row1 = MakeTypedUrlRow(kURL, kTitle, /*typed_count=*/1, + /*last_visit=*/2, /*hidden=*/false, &visits1); + URLRow row2 = MakeTypedUrlRow(kURL2, kTitle2, /*typed_count=*/1, + /*last_visit=*/3, /*hidden=*/false, &visits2); + fake_history_backend_->SetVisitsForUrl(&row1, visits1); + fake_history_backend_->SetVisitsForUrl(&row2, visits2); - // Add the URLs into the history db and notify the bridge. EXPECT_CALL(mock_processor_, Put(IsValidStorageKey(), Pointee(HasTypedUrlInSpecifics()), _)) - .Times(urls.size()); - EXPECT_CALL(mock_processor_, UntrackEntityForStorageKey).Times(0); - BuildAndPushLocalChanges(urls.size(), 0, urls, &url_rows, &visit_vectors); - // Store the typed_urls incl. metadata into the bridge's database. - for (const std::string& url : urls) { - ApplyUrlAndVisitsChange(url, kTitle, /*typed_count=*/1, /*last_visit=*/3, - /*hidden=*/false, /*update_metadata=*/true, - EntityChange::ACTION_ADD); - } + .Times(2u) + .WillRepeatedly(StoreMetadata); + bridge()->OnURLsModified(fake_history_backend_.get(), {row1, row2}, + /*is_from_expiration=*/false); - // Check all the metadata is here, no need to untrack anything so far. - MetadataBatch metadata_batch; - metadata_store()->GetAllSyncMetadata(&metadata_batch); - ASSERT_EQ(urls.size(), metadata_batch.TakeAllMetadata().size()); + std::string storage_key1 = GetStorageKey(kURL); + std::string storage_key2 = GetStorageKey(kURL2); + EXPECT_THAT(GetAllSyncMetadataKeys(), + UnorderedElementsAre(storage_key1, storage_key2)); - // Simulate expiration - delete some urls from the backend and create deleted - // row vector. - URLRows rows; - std::set<std::string> deleted_storage_keys; - for (size_t i = 0; i < 3u; ++i) { - const std::string storage_key = GetStorageKey(url_rows[i].url().spec()); - deleted_storage_keys.insert(storage_key); - fake_history_backend_->DeleteURL(url_rows[i].url()); - rows.push_back(url_rows[i]); - } + // Simulate expiration - delete a url from the backend. + fake_history_backend_->DeleteURL(GURL(kURL)); - // Notify typed url sync service of these URLs getting expired. + // Notify typed url bridge of these URLs getting expired. EXPECT_CALL(mock_processor_, Delete).Times(0); - for (const std::string& storage_key : deleted_storage_keys) { - EXPECT_CALL(mock_processor_, UntrackEntityForStorageKey(storage_key)); - } + EXPECT_CALL(mock_processor_, UntrackEntityForStorageKey(storage_key1)); bridge()->OnURLsDeleted(fake_history_backend_.get(), /*all_history=*/false, - /*expired=*/true, rows, std::set<GURL>()); + /*expired=*/true, {row1}, std::set<GURL>()); // The urls are removed from the metadata store. - MetadataBatch smaller_metadata_batch; - metadata_store()->GetAllSyncMetadata(&smaller_metadata_batch); - EXPECT_EQ(2u, smaller_metadata_batch.GetAllMetadata().size()); - for (const auto& kv : smaller_metadata_batch.GetAllMetadata()) { - EXPECT_THAT(deleted_storage_keys, Not(Contains(kv.first))); - } + EXPECT_THAT(GetAllSyncMetadataKeys(), UnorderedElementsAre(storage_key2)); +} + +// Expire the last local typed visit for a URL (with some non-typed visits +// remaining). This results in the sync entity getting untracked. This has only +// impact on local store (metadata in the db and in-memory maps), nothing gets +// synced up. +TEST_F(TypedURLSyncBridgeTest, ExpireLocalTypedVisit) { + StartSyncing(std::vector<TypedUrlSpecifics>()); + + // Add two URLs into the history db and notify the bridge to get it synced up + // and thus also metadata written into the DB. + VisitVector visits1, visits2; + URLRow row1 = MakeTypedUrlRowWithTwoVisits(kURL, kTitle, /*typed_visit=*/2, + /*reload_visit=*/5, &visits1); + URLRow row2 = MakeTypedUrlRow(kURL2, kTitle2, /*typed_count=*/1, + /*last_visit=*/4, /*hidden=*/false, &visits2); + fake_history_backend_->SetVisitsForUrl(&row1, visits1); + fake_history_backend_->SetVisitsForUrl(&row2, visits2); + + EXPECT_CALL(mock_processor_, + Put(IsValidStorageKey(), Pointee(HasTypedUrlInSpecifics()), _)) + .Times(2u) + .WillRepeatedly(StoreMetadata); + bridge()->OnURLsModified(fake_history_backend_.get(), {row1, row2}, + /*is_from_expiration=*/false); + + std::string storage_key1 = GetStorageKey(kURL); + std::string storage_key2 = GetStorageKey(kURL2); + EXPECT_THAT(GetAllSyncMetadataKeys(), + UnorderedElementsAre(storage_key1, storage_key2)); + + // Simulate expiration of all visits before time 3. + fake_history_backend_->ExpireHistoryBeforeForTesting(SinceEpoch(3)); + URLRow row1_updated; + ASSERT_TRUE(fake_history_backend_->GetURL(GURL(kURL), &row1_updated)); + EXPECT_EQ(row1_updated.typed_count(), 0); + EXPECT_NE(row1_updated.last_visit(), base::Time()); + + // Notify typed url sync service of these URLs getting expired (it does not + // matter that we pass in the old version of row1, the bridge will fix it up). + EXPECT_CALL(mock_processor_, Delete).Times(0); + EXPECT_CALL(mock_processor_, UntrackEntityForStorageKey(storage_key1)); + bridge()->OnURLsModified(fake_history_backend_.get(), {row1}, + /*is_from_expiration=*/true); + + // The urls are removed from the metadata store. + EXPECT_THAT(GetAllSyncMetadataKeys(), UnorderedElementsAre(storage_key2)); +} + +// Expire the last local typed visit (with no other visits left in the DB but +// keeping the url in the DB which happens e.g. for bookmarked urls). This +// results in the sync entity getting untracked. This has only impact on local +// store (metadata in the db and in-memory maps), nothing gets synced up. +TEST_F(TypedURLSyncBridgeTest, ExpireLastLocalVisit) { + StartSyncing(std::vector<TypedUrlSpecifics>()); + + // Add two URLs into the history db and notify the bridge to get it synced up + // and thus also metadata written into the DB. + VisitVector visits1, visits2; + URLRow row1 = MakeTypedUrlRow(kURL, kTitle, /*typed_count=*/1, + /*last_visit=*/1, /*hidden=*/false, &visits1); + URLRow row2 = MakeTypedUrlRow(kURL2, kTitle2, /*typed_count=*/1, + /*last_visit=*/3, /*hidden=*/false, &visits2); + fake_history_backend_->SetVisitsForUrl(&row1, visits1); + fake_history_backend_->SetVisitsForUrl(&row2, visits2); + + URLRow row1_original; + ASSERT_TRUE(fake_history_backend_->GetURL(GURL(kURL), &row1_original)); + + EXPECT_CALL(mock_processor_, + Put(IsValidStorageKey(), Pointee(HasTypedUrlInSpecifics()), _)) + .Times(2u) + .WillRepeatedly(StoreMetadata); + bridge()->OnURLsModified(fake_history_backend_.get(), {row1, row2}, + /*is_from_expiration=*/false); + + std::string storage_key1 = GetStorageKey(kURL); + std::string storage_key2 = GetStorageKey(kURL2); + EXPECT_THAT(GetAllSyncMetadataKeys(), + UnorderedElementsAre(storage_key1, storage_key2)); + + // Simulate expiration of all visits before time 2. Simulate kURL is + // bookmarked so that it does not get deleted despite there's no visit left. + EXPECT_CALL(*history_backend_client_, IsPinnedURL(GURL(kURL))) + .WillOnce(Return(true)); + fake_history_backend_->ExpireHistoryBeforeForTesting(SinceEpoch(2)); + URLRow row1_updated; + ASSERT_TRUE(fake_history_backend_->GetURL(GURL(kURL), &row1_updated)); + EXPECT_EQ(row1_updated.typed_count(), 0); + EXPECT_EQ(row1_updated.last_visit(), base::Time()); + + // Notify typed url sync service of these URLs getting expired (it does not + // matter that we pass in the old version of row1, the bridge will fix it up). + EXPECT_CALL(mock_processor_, Delete).Times(0); + EXPECT_CALL(mock_processor_, UntrackEntityForStorageKey(storage_key1)); + bridge()->OnURLsModified(fake_history_backend_.get(), {row1_updated}, + /*is_from_expiration=*/true); + + // The urls are removed from the metadata store. + EXPECT_THAT(GetAllSyncMetadataKeys(), UnorderedElementsAre(storage_key2)); } // Saturate the visits for a typed url with both TYPED and LINK navigations. @@ -1250,10 +1371,9 @@ UpdateStorageKey( AllOf(HasURLInSpecifics(kURL), HasTitleInSpecifics(kTitle)), IntToStorageKey(1), _)); - VisitVector visits = ApplyUrlAndVisitsChange( - kURL, kTitle, /*typed_count=*/1, /*last_visit=*/3, - /*hidden=*/false, - /*update_metadata=*/false, EntityChange::ACTION_ADD); + VisitVector visits = + ApplyUrlAndVisitsChange(kURL, kTitle, /*typed_count=*/1, /*last_visit=*/3, + /*hidden=*/false, EntityChange::ACTION_ADD); Time visit_time = SinceEpoch(3); VisitVector all_visits; @@ -1278,9 +1398,9 @@ EXPECT_CALL(mock_processor_, UntrackEntityForClientTagHash); StartSyncing(std::vector<TypedUrlSpecifics>()); - ApplyUrlAndVisitsChange( - kURL, kTitle, /*typed_count=*/1, /*last_visit=*/kExpiredVisit, - /*hidden=*/false, /*update_metadata=*/false, EntityChange::ACTION_ADD); + ApplyUrlAndVisitsChange(kURL, kTitle, /*typed_count=*/1, + /*last_visit=*/kExpiredVisit, + /*hidden=*/false, EntityChange::ACTION_ADD); ASSERT_EQ(0, fake_history_backend_->GetIdByUrl(GURL(kURL))); } @@ -1291,10 +1411,9 @@ TEST_F(TypedURLSyncBridgeTest, UpdateUrlAndVisits) { StartSyncing(std::vector<TypedUrlSpecifics>()); - VisitVector visits = ApplyUrlAndVisitsChange( - kURL, kTitle, /*typed_count=*/1, /*last_visit=*/3, - /*hidden=*/false, - /*update_metadata=*/false, EntityChange::ACTION_ADD); + VisitVector visits = + ApplyUrlAndVisitsChange(kURL, kTitle, /*typed_count=*/1, /*last_visit=*/3, + /*hidden=*/false, EntityChange::ACTION_ADD); Time visit_time = SinceEpoch(3); VisitVector all_visits; URLRow url_row; @@ -1313,8 +1432,7 @@ VisitVector new_visits = ApplyUrlAndVisitsChange( kURL, kTitle2, /*typed_count=*/2, /*last_visit=*/6, - /*hidden=*/false, - /*update_metadata=*/false, EntityChange::ACTION_UPDATE); + /*hidden=*/false, EntityChange::ACTION_UPDATE); Time new_visit_time = SinceEpoch(6); url_id = fake_history_backend_->GetIdByUrl(GURL(kURL)); @@ -1360,8 +1478,7 @@ AddObserver(); ApplyUrlAndVisitsChange(kURL, kTitle, /*typed_count=*/1, /*last_visit=*/3, - /*hidden=*/false, /*update_metadata=*/false, - EntityChange::ACTION_DELETE); + /*hidden=*/false, EntityChange::ACTION_DELETE); EXPECT_FALSE(fake_history_backend_->GetURL(GURL(kURL), &url_row)); url_id = fake_history_backend_->GetIdByUrl(GURL(kURL));
diff --git a/components/password_manager/core/browser/form_fetcher_impl.cc b/components/password_manager/core/browser/form_fetcher_impl.cc index 589b8a3..1443d8d 100644 --- a/components/password_manager/core/browser/form_fetcher_impl.cc +++ b/components/password_manager/core/browser/form_fetcher_impl.cc
@@ -126,16 +126,6 @@ // `stats_store` can be null in tests. if (stats_store) stats_store->GetSiteStats(form_digest_.url.GetOrigin(), this); - - // The desktop bubble needs this information. - password_store->GetMatchingInsecureCredentials(form_digest_.signon_realm, - this); -#else - if (base::FeatureList::IsEnabled(features::kMutingCompromisedCredentials)) { - // We need this information to mute leak detection warming. - password_store->GetMatchingInsecureCredentials(form_digest_.signon_realm, - this); - } #endif } @@ -215,6 +205,15 @@ void FormFetcherImpl::ProcessPasswordStoreResults( std::vector<std::unique_ptr<PasswordForm>> results) { + insecure_credentials_.clear(); + for (const auto& form : results) { + for (const auto& issue : form->password_issues) { + insecure_credentials_.emplace_back( + form->signon_realm, form->username_value, issue.second.create_time, + issue.first, issue.second.is_muted); + insecure_credentials_.back().in_store = form->in_store; + } + } if (client_->GetProfilePasswordStore()->affiliated_match_helper()) { client_->GetProfilePasswordStore() ->affiliated_match_helper() @@ -303,9 +302,4 @@ ProcessPasswordStoreResults(std::move(forms)); } -void FormFetcherImpl::OnGetInsecureCredentials( - std::vector<InsecureCredential> insecure_credentials) { - insecure_credentials_ = std::move(insecure_credentials); -} - } // namespace password_manager
diff --git a/components/password_manager/core/browser/form_fetcher_impl.h b/components/password_manager/core/browser/form_fetcher_impl.h index d7b88be..0279751 100644 --- a/components/password_manager/core/browser/form_fetcher_impl.h +++ b/components/password_manager/core/browser/form_fetcher_impl.h
@@ -13,7 +13,6 @@ #include "base/observer_list.h" #include "components/password_manager/core/browser/form_fetcher.h" #include "components/password_manager/core/browser/http_password_store_migrator.h" -#include "components/password_manager/core/browser/insecure_credentials_consumer.h" #include "components/password_manager/core/browser/insecure_credentials_table.h" #include "components/password_manager/core/browser/password_store.h" #include "components/password_manager/core/browser/password_store_consumer.h" @@ -27,7 +26,6 @@ // update the Clone() method accordingly. class FormFetcherImpl : public FormFetcher, public PasswordStoreConsumer, - public InsecureCredentialsConsumer, public HttpPasswordStoreMigrator::Consumer { public: // |form_digest| describes what credentials need to be retrieved and @@ -116,10 +114,6 @@ void ProcessMigratedForms( std::vector<std::unique_ptr<PasswordForm>> forms) override; - // InsecureCredentialsConsumer: - void OnGetInsecureCredentials( - std::vector<InsecureCredential> insecure_credentials) override; - // Does the actual migration. std::unique_ptr<HttpPasswordStoreMigrator> http_migrator_;
diff --git a/components/password_manager/core/browser/form_fetcher_impl_unittest.cc b/components/password_manager/core/browser/form_fetcher_impl_unittest.cc index 8a5a9b6..985a53c 100644 --- a/components/password_manager/core/browser/form_fetcher_impl_unittest.cc +++ b/components/password_manager/core/browser/form_fetcher_impl_unittest.cc
@@ -447,11 +447,15 @@ TEST_P(FormFetcherImplTest, InsecureCredentials) { Fetch(); form_fetcher_->AddConsumer(&consumer_); - const std::vector<InsecureCredential> credentials = {InsecureCredential( - form_digest_.signon_realm, u"username_value", base::Time::FromTimeT(1), - InsecureType::kLeaked, IsMuted(false))}; - static_cast<InsecureCredentialsConsumer*>(form_fetcher_.get()) - ->OnGetInsecureCredentials(credentials); + PasswordForm form = CreateNonFederated(); + form.password_issues.insert({InsecureType::kLeaked, InsecurityMetadata()}); + std::vector<std::unique_ptr<PasswordForm>> results; + results.push_back(std::make_unique<PasswordForm>(form)); + const std::vector<InsecureCredential> credentials = { + InsecureCredential(form.signon_realm, form.username_value, base::Time(), + InsecureType::kLeaked, IsMuted(false))}; + static_cast<PasswordStoreConsumer*>(form_fetcher_.get()) + ->OnGetPasswordStoreResultsFrom(mock_store_.get(), std::move(results)); EXPECT_THAT(form_fetcher_->GetInsecureCredentials(), UnorderedElementsAreArray(credentials)); } @@ -526,20 +530,6 @@ EXPECT_THAT(form_fetcher_->GetInteractionsStats(), UnorderedElementsAre(stats)); } - -TEST_P(FormFetcherImplTest, FetchInsecure) { - std::vector<InsecureCredential> list = {InsecureCredential( - form_digest_.signon_realm, u"username_value", base::Time::FromTimeT(1), - InsecureType::kLeaked, IsMuted(false))}; - EXPECT_CALL(*mock_store_, - GetMatchingInsecureCredentialsImpl(form_digest_.signon_realm)) - .WillOnce(Return(list)); - form_fetcher_->Fetch(); - task_environment_.RunUntilIdle(); - - EXPECT_THAT(form_fetcher_->GetInsecureCredentials(), - UnorderedElementsAreArray(list)); -} #else TEST_P(FormFetcherImplTest, DontFetchStatistics) { EXPECT_CALL(*mock_store_, GetLogins(form_digest_, form_fetcher_.get())); @@ -547,32 +537,6 @@ form_fetcher_->Fetch(); task_environment_.RunUntilIdle(); } - -TEST_P(FormFetcherImplTest, DontFetchInsecure) { - base::test::ScopedFeatureList feature_list; - feature_list.InitWithFeatureState(features::kMutingCompromisedCredentials, - false); - EXPECT_CALL(*mock_store_, GetMatchingInsecureCredentialsImpl).Times(0); - form_fetcher_->Fetch(); - task_environment_.RunUntilIdle(); -} - -TEST_P(FormFetcherImplTest, FetchInsecure) { - base::test::ScopedFeatureList feature_list; - feature_list.InitWithFeatureState(features::kMutingCompromisedCredentials, - true); - std::vector<InsecureCredential> list = {InsecureCredential( - form_digest_.signon_realm, u"username_value", base::Time::FromTimeT(1), - InsecureType::kLeaked, IsMuted(false))}; - EXPECT_CALL(*mock_store_, - GetMatchingInsecureCredentialsImpl(form_digest_.signon_realm)) - .WillOnce(Return(list)); - form_fetcher_->Fetch(); - task_environment_.RunUntilIdle(); - - EXPECT_THAT(form_fetcher_->GetInsecureCredentials(), - UnorderedElementsAreArray(list)); -} #endif // Test that ensures HTTP passwords are not migrated on HTTP sites. @@ -866,13 +830,15 @@ TEST_P(FormFetcherImplTest, Clone_Insecure) { Fetch(); // Pass empty results to make the state NOT_WAITING. - store_consumer()->OnGetPasswordStoreResultsFrom( - mock_store_.get(), std::vector<std::unique_ptr<PasswordForm>>()); - const std::vector<InsecureCredential> credentials = {InsecureCredential( - form_digest_.signon_realm, u"username_value", base::Time::FromTimeT(1), - InsecureType::kLeaked, IsMuted(false))}; - static_cast<InsecureCredentialsConsumer*>(form_fetcher_.get()) - ->OnGetInsecureCredentials(credentials); + PasswordForm form = CreateNonFederated(); + form.password_issues.insert({InsecureType::kLeaked, InsecurityMetadata()}); + std::vector<std::unique_ptr<PasswordForm>> results; + results.push_back(std::make_unique<PasswordForm>(form)); + const std::vector<InsecureCredential> credentials = { + InsecureCredential(form.signon_realm, form.username_value, base::Time(), + InsecureType::kLeaked, IsMuted(false))}; + static_cast<PasswordStoreConsumer*>(form_fetcher_.get()) + ->OnGetPasswordStoreResultsFrom(mock_store_.get(), std::move(results)); auto clone = form_fetcher_->Clone(); EXPECT_THAT(clone->GetInsecureCredentials(),
diff --git a/components/password_manager/core/browser/mock_password_store.h b/components/password_manager/core/browser/mock_password_store.h index ee39a29..58d5155 100644 --- a/components/password_manager/core/browser/mock_password_store.h +++ b/components/password_manager/core/browser/mock_password_store.h
@@ -75,10 +75,6 @@ GetAllInsecureCredentialsImpl, (), (override)); - MOCK_METHOD(std::vector<InsecureCredential>, - GetMatchingInsecureCredentialsImpl, - (const std::string&), - (override)); MOCK_METHOD(void, GetAllLoginsWithAffiliationAndBrandingInformation, (PasswordStoreConsumer*),
diff --git a/components/password_manager/core/browser/multi_store_form_fetcher.cc b/components/password_manager/core/browser/multi_store_form_fetcher.cc index febab8f..26c0624 100644 --- a/components/password_manager/core/browser/multi_store_form_fetcher.cc +++ b/components/password_manager/core/browser/multi_store_form_fetcher.cc
@@ -55,11 +55,6 @@ if (account_password_store) { state_ = State::WAITING; account_password_store->GetLogins(form_digest_, this); -#if !defined(OS_IOS) && !defined(OS_ANDROID) - // The desktop bubble needs this information. - account_password_store->GetMatchingInsecureCredentials( - form_digest_.signon_realm, this); -#endif } } @@ -163,14 +158,6 @@ AggregatePasswordStoreResults(std::move(forms)); } -void MultiStoreFormFetcher::OnGetInsecureCredentials( - std::vector<InsecureCredential> insecure_credentials) { - // Both the profile and account store has been queried. Therefore, append the - // received credentials to the existing ones. - base::ranges::move(insecure_credentials, - std::back_inserter(insecure_credentials_)); -} - void MultiStoreFormFetcher::SplitResults( std::vector<std::unique_ptr<PasswordForm>> results) { // Compute the |is_blocklisted_in_profile_store_| and
diff --git a/components/password_manager/core/browser/multi_store_form_fetcher.h b/components/password_manager/core/browser/multi_store_form_fetcher.h index 56d92a5..63ded19 100644 --- a/components/password_manager/core/browser/multi_store_form_fetcher.h +++ b/components/password_manager/core/browser/multi_store_form_fetcher.h
@@ -39,10 +39,6 @@ void ProcessMigratedForms( std::vector<std::unique_ptr<PasswordForm>> forms) override; - // InsecureCredentialsConsumer: - void OnGetInsecureCredentials( - std::vector<InsecureCredential> insecure_credentials) override; - private: void AggregatePasswordStoreResults( std::vector<std::unique_ptr<PasswordForm>> results);
diff --git a/components/password_manager/core/browser/multi_store_form_fetcher_unittest.cc b/components/password_manager/core/browser/multi_store_form_fetcher_unittest.cc index c2cc71d8..e441f0f2 100644 --- a/components/password_manager/core/browser/multi_store_form_fetcher_unittest.cc +++ b/components/password_manager/core/browser/multi_store_form_fetcher_unittest.cc
@@ -445,23 +445,39 @@ TEST_F(MultiStoreFormFetcherTest, InsecureCredentials) { Fetch(); + PasswordForm profile_form = + CreateHTMLForm("www.url.com", "username1", "pass"); + profile_form.password_issues.insert( + {InsecureType::kLeaked, InsecurityMetadata()}); + std::vector<std::unique_ptr<PasswordForm>> profile_results; + profile_results.push_back(std::make_unique<PasswordForm>(profile_form)); + + PasswordForm account_form = + CreateHTMLForm("www.url.com", "username1", "pass"); + account_form.password_issues.insert( + {InsecureType::kLeaked, InsecurityMetadata()}); + std::vector<std::unique_ptr<PasswordForm>> account_results; + account_results.push_back(std::make_unique<PasswordForm>(account_form)); + InsecureCredential profile_store_insecure_credentials( - form_digest_.signon_realm, u"profile_username", base::Time::FromTimeT(1), + profile_form.signon_realm, profile_form.username_value, base::Time(), InsecureType::kLeaked, IsMuted(false)); profile_store_insecure_credentials.in_store = PasswordForm::Store::kProfileStore; InsecureCredential account_store_insecure_credentials( - form_digest_.signon_realm, u"account_username", base::Time::FromTimeT(1), + account_form.signon_realm, account_form.username_value, base::Time(), InsecureType::kLeaked, IsMuted(false)); account_store_insecure_credentials.in_store = PasswordForm::Store::kAccountStore; - static_cast<InsecureCredentialsConsumer*>(form_fetcher_.get()) - ->OnGetInsecureCredentials({profile_store_insecure_credentials}); + static_cast<PasswordStoreConsumer*>(form_fetcher_.get()) + ->OnGetPasswordStoreResultsFrom(profile_mock_store_.get(), + std::move(profile_results)); - static_cast<InsecureCredentialsConsumer*>(form_fetcher_.get()) - ->OnGetInsecureCredentials({account_store_insecure_credentials}); + static_cast<PasswordStoreConsumer*>(form_fetcher_.get()) + ->OnGetPasswordStoreResultsFrom(account_mock_store_.get(), + std::move(account_results)); EXPECT_THAT( form_fetcher_->GetInsecureCredentials(),
diff --git a/components/password_manager/core/browser/password_manager_unittest.cc b/components/password_manager/core/browser/password_manager_unittest.cc index 65dee04..c548712 100644 --- a/components/password_manager/core/browser/password_manager_unittest.cc +++ b/components/password_manager/core/browser/password_manager_unittest.cc
@@ -4277,19 +4277,15 @@ std::make_unique<testing::StrictMock<MockLeakDetectionCheckFactory>>(); manager()->set_leak_factory(std::move(mock_factory)); - const PasswordForm form = MakeSimpleForm(); + PasswordForm form = MakeSimpleForm(); + form.password_issues.insert( + {InsecureType::kLeaked, InsecurityMetadata(base::Time(), IsMuted(true))}); std::vector<FormData> observed = {form.form_data}; EXPECT_CALL(*store_, GetLogins) - .WillRepeatedly(WithArg<1>(InvokeEmptyConsumerWithForms(store_.get()))); + .WillRepeatedly(WithArg<1>(InvokeConsumer(store_.get(), form))); manager()->OnPasswordFormsParsed(&driver_, observed); manager()->OnPasswordFormsRendered(&driver_, observed, true); - // Add muted insecure credentials. - std::vector<InsecureCredential> insecure_credentials = {InsecureCredential( - form.signon_realm, form.username_value, base::Time::FromTimeT(1), - InsecureType::kLeaked, IsMuted(true))}; - EXPECT_CALL(*store_, GetMatchingInsecureCredentialsImpl(form.signon_realm)) - .WillOnce(Return(insecure_credentials)); task_environment_.RunUntilIdle(); EXPECT_CALL(client_, IsSavingAndFillingEnabled).WillRepeatedly(Return(true)); @@ -4316,19 +4312,18 @@ MockLeakDetectionCheckFactory* weak_factory = mock_factory.get(); manager()->set_leak_factory(std::move(mock_factory)); - const PasswordForm form = MakeSimpleForm(); + PasswordForm form = MakeSimpleForm(); std::vector<FormData> observed = {form.form_data}; + + form.username_value = u"different_username"; + form.password_issues.insert( + {InsecureType::kLeaked, InsecurityMetadata(base::Time(), IsMuted(true))}); + EXPECT_CALL(*store_, GetLogins) - .WillRepeatedly(WithArg<1>(InvokeEmptyConsumerWithForms(store_.get()))); + .WillRepeatedly(WithArg<1>(InvokeConsumer(store_.get(), form))); manager()->OnPasswordFormsParsed(&driver_, observed); manager()->OnPasswordFormsRendered(&driver_, observed, true); - // Add muted insecure credentials. - std::vector<InsecureCredential> insecure_credentials = {InsecureCredential( - form.signon_realm, u"different_username", base::Time::FromTimeT(1), - InsecureType::kLeaked, IsMuted(true))}; - EXPECT_CALL(*store_, GetMatchingInsecureCredentialsImpl(form.signon_realm)) - .WillOnce(Return(insecure_credentials)); task_environment_.RunUntilIdle(); EXPECT_CALL(client_, IsSavingAndFillingEnabled).WillRepeatedly(Return(true));
diff --git a/components/password_manager/core/browser/password_store.cc b/components/password_manager/core/browser/password_store.cc index e1e88b4..fbdb81e 100644 --- a/components/password_manager/core/browser/password_store.cc +++ b/components/password_manager/core/browser/password_store.cc
@@ -332,25 +332,6 @@ base::BindOnce(&PasswordStore::GetAllInsecureCredentialsImpl, this)); } -void PasswordStore::GetMatchingInsecureCredentials( - const std::string& signon_realm, - InsecureCredentialsConsumer* consumer) { - if (affiliated_match_helper_) { - PasswordFormDigest form(PasswordForm::Scheme::kHtml, signon_realm, - GURL(signon_realm)); - affiliated_match_helper_->GetAffiliatedAndroidAndWebRealms( - form, - base::BindOnce( - &PasswordStore::ScheduleGetInsecureCredentialsWithAffiliations, - this, consumer->GetWeakPtr(), signon_realm)); - } else { - PostInsecureCredentialsTaskAndReplyToConsumerWithResult( - consumer, - base::BindOnce(&PasswordStore::GetMatchingInsecureCredentialsImpl, this, - signon_realm)); - } -} - void PasswordStore::AddObserver(Observer* observer) { observers_.AddObserver(observer); } @@ -403,14 +384,6 @@ return std::vector<InsecureCredential>(); } -std::vector<InsecureCredential> -PasswordStore::GetMatchingInsecureCredentialsImpl( - const std::string& signon_realm) { - // TODO(crbug.com/1217070): Move as implementation detail into backend. - LOG(ERROR) << "Called function without implementation: " << __func__; - return std::vector<InsecureCredential>(); -} - void PasswordStore::InvokeAndNotifyAboutInsecureCredentialsChange( base::OnceCallback<PasswordStoreChangeList()> callback) { DCHECK(background_task_runner_->RunsTasksInCurrentSequence()); @@ -486,23 +459,6 @@ handler->InvokeOnCompletion(std::move(notify_callback)); } -std::vector<InsecureCredential> -PasswordStore::GetInsecureCredentialsWithAffiliationsImpl( - const std::string& signon_realm, - const std::vector<std::string>& additional_affiliated_realms) { - DCHECK(background_task_runner_->RunsTasksInCurrentSequence()); - std::vector<InsecureCredential> results( - GetMatchingInsecureCredentialsImpl(signon_realm)); - for (const std::string& realm : additional_affiliated_realms) { - std::vector<InsecureCredential> more_results( - GetMatchingInsecureCredentialsImpl(realm)); - results.insert(results.end(), std::make_move_iterator(more_results.begin()), - std::make_move_iterator(more_results.end())); - } - - return results; -} - void PasswordStore::InjectAffiliationAndBrandingInformation( LoginsReply callback, LoginsResult forms) { @@ -515,17 +471,4 @@ } } -void PasswordStore::ScheduleGetInsecureCredentialsWithAffiliations( - base::WeakPtr<InsecureCredentialsConsumer> consumer, - const std::string& signon_realm, - const std::vector<std::string>& additional_affiliated_realms) { - if (consumer) { - PostInsecureCredentialsTaskAndReplyToConsumerWithResult( - consumer.get(), - base::BindOnce( - &PasswordStore::GetInsecureCredentialsWithAffiliationsImpl, this, - signon_realm, additional_affiliated_realms)); - } -} - } // namespace password_manager
diff --git a/components/password_manager/core/browser/password_store.h b/components/password_manager/core/browser/password_store.h index 5b854ff..f64d0965 100644 --- a/components/password_manager/core/browser/password_store.h +++ b/components/password_manager/core/browser/password_store.h
@@ -137,11 +137,6 @@ // completion. The request will be cancelled if the consumer is destroyed. void GetAllInsecureCredentials(InsecureCredentialsConsumer* consumer); - // Returns all the insecure credentials for a given site. This list also - // includes Android affiliated credentials. - void GetMatchingInsecureCredentials(const std::string& signon_realm, - InsecureCredentialsConsumer* consumer); - // Schedules the given |task| to be run on the PasswordStore's TaskRunner. bool ScheduleTask(base::OnceClosure task); @@ -184,8 +179,6 @@ // insecure credentials. // Returns PasswordStoreChangeList for the updated password forms. virtual std::vector<InsecureCredential> GetAllInsecureCredentialsImpl(); - virtual std::vector<InsecureCredential> GetMatchingInsecureCredentialsImpl( - const std::string& signon_realm); // Invokes callback and notifies observers if there was a change to the list // of insecure passwords. It also informs Sync about the updated password @@ -233,26 +226,12 @@ void UnblocklistInternal(base::OnceClosure completion, std::vector<std::unique_ptr<PasswordForm>> forms); - // Extended version of GetMatchingInsecureCredentialsImpl that also returns - // credentials stored for the specified affiliated Android applications or Web - // realms. - std::vector<InsecureCredential> GetInsecureCredentialsWithAffiliationsImpl( - const std::string& signon_realm, - const std::vector<std::string>& additional_affiliated_realms); - // Retrieves and fills in affiliation and branding information for Android // credentials in |forms| and invokes |callback| with the result. Called on // the main sequence. void InjectAffiliationAndBrandingInformation(LoginsReply callback, LoginsResult forms); - // Schedules GetInsecureCredentialsWithAffiliationsImpl() to be run on the - // background sequence. - void ScheduleGetInsecureCredentialsWithAffiliations( - base::WeakPtr<InsecureCredentialsConsumer> consumer, - const std::string& signon_realm, - const std::vector<std::string>& additional_affiliated_realms); - // The local backend is currently a ref-counted type because it still inherits // from PasswordStore and this would be a self reference. So, if `this` is an // instance of PasswordStoreImpl, this member is not used.
diff --git a/components/password_manager/core/browser/password_store_impl.cc b/components/password_manager/core/browser/password_store_impl.cc index f60e033..6987646 100644 --- a/components/password_manager/core/browser/password_store_impl.cc +++ b/components/password_manager/core/browser/password_store_impl.cc
@@ -151,21 +151,6 @@ return insecure_credentials; } -std::vector<InsecureCredential> -PasswordStoreImpl::GetMatchingInsecureCredentialsImpl( - const std::string& signon_realm) { - DCHECK(background_task_runner()->RunsTasksInCurrentSequence()); - std::vector<InsecureCredential> insecure_credentials = - login_db_ ? login_db_->insecure_credentials_table().GetRows(signon_realm) - : std::vector<InsecureCredential>(); - PasswordForm::Store store = IsAccountStore() - ? PasswordForm::Store::kAccountStore - : PasswordForm::Store::kProfileStore; - for (InsecureCredential& cred : insecure_credentials) - cred.in_store = store; - return insecure_credentials; -} - base::WeakPtr<syncer::ModelTypeControllerDelegate> PasswordStoreImpl::GetSyncControllerDelegateOnBackgroundSequence() { DCHECK(background_task_runner()->RunsTasksInCurrentSequence());
diff --git a/components/password_manager/core/browser/password_store_impl.h b/components/password_manager/core/browser/password_store_impl.h index 04f8510..92bb4ea 100644 --- a/components/password_manager/core/browser/password_store_impl.h +++ b/components/password_manager/core/browser/password_store_impl.h
@@ -53,8 +53,6 @@ const base::RepeatingCallback<bool(const GURL&)>& origin_filter); DatabaseCleanupResult DeleteUndecryptableLogins() override; std::vector<InsecureCredential> GetAllInsecureCredentialsImpl() override; - std::vector<InsecureCredential> GetMatchingInsecureCredentialsImpl( - const std::string& signon_realm) override; // Implements PasswordStoreSync interface. PasswordStoreChangeList AddLoginSync(const PasswordForm& form,
diff --git a/components/password_manager/core/browser/password_store_unittest.cc b/components/password_manager/core/browser/password_store_unittest.cc index d694f92..917b5fb 100644 --- a/components/password_manager/core/browser/password_store_unittest.cc +++ b/components/password_manager/core/browser/password_store_unittest.cc
@@ -1063,88 +1063,6 @@ store->ShutdownOnUIThread(); } -// Test GetMatchingInsecureCredentials when affiliation service isn't -// available. -TEST_F(PasswordStoreTest, GetMatchingInsecureWithoutAffiliations) { - scoped_refptr<PasswordStoreImpl> store = CreatePasswordStore(); - store->Init(nullptr); - - constexpr PasswordFormData kTestCredentials[] = { - {PasswordForm::Scheme::kHtml, kTestWebRealm1, kTestWebRealm1, "", u"", - u"", u"", u"username_value", u"password", kTestLastUsageTime, 1}, - {PasswordForm::Scheme::kHtml, kTestWebRealm2, kTestWebRealm2, "", u"", - u"", u"", u"username_value", u"topsecret", kTestLastUsageTime, 1}}; - for (const auto& data : kTestCredentials) { - std::unique_ptr<PasswordForm> form = FillPasswordFormWithData(data); - form->password_issues = { - {InsecureType::kLeaked, - InsecurityMetadata(base::Time::FromTimeT(1), IsMuted(false))}}; - store->AddLogin(*form); - }; - - InsecureCredential expected_credential(kTestWebRealm1, u"username_value", - base::Time::FromTimeT(1), - InsecureType::kLeaked, IsMuted(false)); - MockInsecureCredentialsConsumer consumer; - EXPECT_CALL(consumer, OnGetInsecureCredentials( - UnorderedElementsAre(expected_credential))); - store->GetMatchingInsecureCredentials(kTestWebRealm1, &consumer); - WaitForPasswordStore(); - - store->ShutdownOnUIThread(); -} - -// Test GetMatchingInsecureCredentials with some matching Android -// credentials. -TEST_F(PasswordStoreTest, GetMatchingInsecureWithAffiliations) { - scoped_refptr<PasswordStoreImpl> store = CreatePasswordStore(); - store->Init(nullptr); - - constexpr PasswordFormData kTestCredentials[] = { - {PasswordForm::Scheme::kHtml, kTestWebRealm1, kTestWebRealm1, "", u"", - u"", u"", u"username_value", u"password", kTestLastUsageTime, 1}, - {PasswordForm::Scheme::kHtml, kTestAndroidRealm1, kTestAndroidRealm1, "", - u"", u"", u"", u"username_value_1", u"topsecret", kTestLastUsageTime, 1}, - {PasswordForm::Scheme::kHtml, kTestWebRealm2, kTestWebRealm2, "", u"", - u"", u"", u"username_value_2", u"topsecret2", kTestLastUsageTime, 1}}; - InsecureCredential kInsecureCredentials[] = { - InsecureCredential(kTestWebRealm1, u"username_value", - base::Time::FromTimeT(1), InsecureType::kLeaked, - IsMuted(false)), - InsecureCredential(kTestAndroidRealm1, u"username_value_1", - base::Time::FromTimeT(1), InsecureType::kPhished, - IsMuted(false)), - InsecureCredential(kTestWebRealm2, u"username_value_2", - base::Time::FromTimeT(3), InsecureType::kLeaked, - IsMuted(false))}; - - for (unsigned int i = 0; i < 3; ++i) { - std::unique_ptr<PasswordForm> form = - FillPasswordFormWithData(kTestCredentials[i]); - form->password_issues = { - {kInsecureCredentials[i].insecure_type, - InsecurityMetadata(kInsecureCredentials[i].create_time, - kInsecureCredentials[i].is_muted)}}; - store->AddLogin(*form); - } - - PasswordFormDigest observed_form = {PasswordForm::Scheme::kHtml, - kTestWebRealm1, GURL(kTestWebRealm1)}; - std::vector<std::string> affiliated_android_realms = {kTestAndroidRealm1}; - auto mock_helper = std::make_unique<MockAffiliatedMatchHelper>(); - mock_helper->ExpectCallToGetAffiliatedAndroidRealms( - observed_form, affiliated_android_realms); - store->SetAffiliatedMatchHelper(std::move(mock_helper)); - - MockInsecureCredentialsConsumer consumer; - EXPECT_CALL(consumer, OnGetInsecureCredentials(UnorderedElementsAre( - kInsecureCredentials[0], kInsecureCredentials[1]))); - store->GetMatchingInsecureCredentials(kTestWebRealm1, &consumer); - WaitForPasswordStore(); - - store->ShutdownOnUIThread(); -} - // Test that updating a password in the store deletes the corresponding // insecure credential synchronously. TEST_F(PasswordStoreTest, RemoveInsecureCredentialsSyncOnUpdate) {
diff --git a/components/password_manager/core/browser/test_password_store.cc b/components/password_manager/core/browser/test_password_store.cc index 889a44d0..520dcae 100644 --- a/components/password_manager/core/browser/test_password_store.cc +++ b/components/password_manager/core/browser/test_password_store.cc
@@ -257,18 +257,6 @@ insecure_credentials_.end()); } -std::vector<InsecureCredential> -TestPasswordStore::GetMatchingInsecureCredentialsImpl( - const std::string& signon_realm) { - std::vector<InsecureCredential> result; - std::copy_if(insecure_credentials_.begin(), insecure_credentials_.end(), - std::back_inserter(result), - [&signon_realm](const InsecureCredential& credential) { - return credential.signon_realm == signon_realm; - }); - return result; -} - bool TestPasswordStore::IsAccountStore() const { return is_account_store_.value(); }
diff --git a/components/password_manager/core/browser/test_password_store.h b/components/password_manager/core/browser/test_password_store.h index 77b2a3c..cfccfe2e 100644 --- a/components/password_manager/core/browser/test_password_store.h +++ b/components/password_manager/core/browser/test_password_store.h
@@ -119,8 +119,6 @@ bool custom_passphrase_sync_enabled, BulkCheckDone bulk_check_done) override; std::vector<InsecureCredential> GetAllInsecureCredentialsImpl() override; - std::vector<InsecureCredential> GetMatchingInsecureCredentialsImpl( - const std::string& signon_realm) override; private: LoginsResult GetAllLoginsInternal();
diff --git a/components/payments/content/payment_manifest_web_data_service.cc b/components/payments/content/payment_manifest_web_data_service.cc index 4311c4b6..23702538 100644 --- a/components/payments/content/payment_manifest_web_data_service.cc +++ b/components/payments/content/payment_manifest_web_data_service.cc
@@ -158,24 +158,35 @@ void PaymentManifestWebDataService::ClearSecurePaymentConfirmationInstruments( base::Time begin, - base::Time end) { - wdbs_->ScheduleDBTask( + base::Time end, + base::OnceClosure callback) { + WebDataServiceBase::Handle handle = wdbs_->ScheduleDBTaskWithResult( FROM_HERE, base::BindOnce(&PaymentManifestWebDataService:: ClearSecurePaymentConfirmationInstrumentsImpl, - this, begin, end)); + this, begin, end), + this); + clearing_instruments_requests_[handle] = std::move(callback); } -WebDatabase::State +std::unique_ptr<WDTypedResult> PaymentManifestWebDataService::ClearSecurePaymentConfirmationInstrumentsImpl( base::Time begin, base::Time end, WebDatabase* db) { - if (PaymentMethodManifestTable::FromWebDatabase(db) - ->ClearSecurePaymentConfirmationInstruments(begin, end)) { - return WebDatabase::COMMIT_NEEDED; - } - return WebDatabase::COMMIT_NOT_NEEDED; + return std::make_unique<WDResult<bool>>( + BOOL_RESULT, PaymentMethodManifestTable::FromWebDatabase(db) + ->ClearSecurePaymentConfirmationInstruments(begin, end)); +} + +void PaymentManifestWebDataService::OnWebDataServiceRequestDone( + WebDataServiceBase::Handle h, + std::unique_ptr<WDTypedResult> result) { + if (clearing_instruments_requests_.find(h) == + clearing_instruments_requests_.end()) + return; + + std::move(clearing_instruments_requests_[h]).Run(); } void PaymentManifestWebDataService::RemoveExpiredData(WebDatabase* db) {
diff --git a/components/payments/content/payment_manifest_web_data_service.h b/components/payments/content/payment_manifest_web_data_service.h index 3fe5a71..63398f6 100644 --- a/components/payments/content/payment_manifest_web_data_service.h +++ b/components/payments/content/payment_manifest_web_data_service.h
@@ -13,11 +13,11 @@ #include "base/memory/ref_counted.h" #include "components/payments/content/web_app_manifest.h" #include "components/webdata/common/web_data_service_base.h" +#include "components/webdata/common/web_data_service_consumer.h" #include "components/webdata/common/web_database.h" class WDTypedResult; class WebDatabaseService; -class WebDataServiceConsumer; namespace base { class SingleThreadTaskRunner; @@ -29,7 +29,8 @@ // Web data service to read/write data in WebAppManifestSectionTable and // PaymentMethodManifestTable. -class PaymentManifestWebDataService : public WebDataServiceBase { +class PaymentManifestWebDataService : public WebDataServiceBase, + public WebDataServiceConsumer { public: PaymentManifestWebDataService( scoped_refptr<WebDatabaseService> wdbs, @@ -70,14 +71,21 @@ WebDataServiceConsumer* consumer); // Clears all of the the secure payment confirmation instrument information - // created in the given time range `begin` and `end`. + // created in the given time range `begin` and `end`, and invokes `callback` + // when the clearing is completed. void ClearSecurePaymentConfirmationInstruments(base::Time begin, - base::Time end); + base::Time end, + base::OnceClosure callback); + + // Override WebDataServiceConsumer interface. + void OnWebDataServiceRequestDone( + WebDataServiceBase::Handle h, + std::unique_ptr<WDTypedResult> result) override; private: ~PaymentManifestWebDataService() override; - WebDatabase::State ClearSecurePaymentConfirmationInstrumentsImpl( + std::unique_ptr<WDTypedResult> ClearSecurePaymentConfirmationInstrumentsImpl( base::Time begin, base::Time end, WebDatabase* db); @@ -105,6 +113,9 @@ std::vector<std::vector<uint8_t>> credential_ids, WebDatabase* db); + std::map<WebDataServiceBase::Handle, base::OnceClosure> + clearing_instruments_requests_; + DISALLOW_COPY_AND_ASSIGN(PaymentManifestWebDataService); };
diff --git a/components/policy/core/common/cloud/cloud_policy_client.cc b/components/policy/core/common/cloud/cloud_policy_client.cc index 33629a8c3..191677f 100644 --- a/components/policy/core/common/cloud/cloud_policy_client.cc +++ b/components/policy/core/common/cloud/cloud_policy_client.cc
@@ -157,7 +157,6 @@ const std::string& ethernet_mac_address, const std::string& dock_mac_address, const std::string& manufacture_date, - SigningService* signing_service, DeviceManagementService* service, scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, DeviceDMTokenCallback device_dm_token_callback) @@ -168,7 +167,6 @@ ethernet_mac_address_(ethernet_mac_address), dock_mac_address_(dock_mac_address), manufacture_date_(manufacture_date), - signing_service_(signing_service), service_(service), // Can be null for unit tests. device_dm_token_callback_(device_dm_token_callback), url_loader_factory_(url_loader_factory) {} @@ -248,9 +246,10 @@ const std::string& client_id, DMAuth auth, const std::string& pem_certificate_chain, - const std::string& sub_organization) { + const std::string& sub_organization, + SigningService* signing_service) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - DCHECK(signing_service_); + DCHECK(signing_service); DCHECK(service_); DCHECK(!is_registered()); @@ -269,7 +268,7 @@ configuration->set_device_owner(sub_organization); } - signing_service_->SignData( + signing_service->SignData( data.SerializeAsString(), base::BindOnce(&CloudPolicyClient::OnRegisterWithCertificateRequestSigned, weak_ptr_factory_.GetWeakPtr(), std::move(auth)));
diff --git a/components/policy/core/common/cloud/cloud_policy_client.h b/components/policy/core/common/cloud/cloud_policy_client.h index 3e8ed78..e66464e 100644 --- a/components/policy/core/common/cloud/cloud_policy_client.h +++ b/components/policy/core/common/cloud/cloud_policy_client.h
@@ -178,10 +178,9 @@ // |attested_device_id|, |ethernet_mac_address|, |dock_mac_address| and // |manufacture_date| are passed to the server verbatim. As these reveal // machine identity, they must only be used where this is appropriate (i.e. - // device policy, but not user policy). |service| and |signing_service| are - // weak pointers and it's the caller's responsibility to keep them valid for - // the lifetime of CloudPolicyClient. The |signing_service| is used to sign - // sensitive requests. |device_dm_token_callback| is used to retrieve device + // device policy, but not user policy). |service| is weak pointer and it's + // the caller's responsibility to keep it valid for the lifetime of + // CloudPolicyClient. |device_dm_token_callback| is used to retrieve device // DMToken for affiliated users. Could be null if it's not possible to use // device DMToken for user policy fetches. CloudPolicyClient( @@ -192,12 +191,11 @@ const std::string& ethernet_mac_address, const std::string& dock_mac_address, const std::string& manufacture_date, - SigningService* signing_service, DeviceManagementService* service, scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, DeviceDMTokenCallback device_dm_token_callback); // A simpler constructor for those that do not need any of the identification - // strings of the full constructor or the signing service. + // strings of the full constructor. CloudPolicyClient( DeviceManagementService* service, scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, @@ -224,12 +222,17 @@ // Attempts to register with the device management service using a // registration certificate. Results in a registration change or - // error notification. + // error notification. The |signing_service| is used to sign the request and + // is expected to be available until caller receives + // |OnRegistrationStateChanged| or |OnClientError|. + // TODO(crbug.com/1236148): Remove SigningService from CloudPolicyClient and + // make callees sign their data themselves. virtual void RegisterWithCertificate(const RegistrationParameters& parameters, const std::string& client_id, DMAuth auth, const std::string& pem_certificate_chain, - const std::string& sub_organization); + const std::string& sub_organization, + SigningService* signing_service); // Attempts to enroll with the device management service using an enrollment // token. Results in a registration change or error notification. @@ -785,9 +788,6 @@ // The invalidation version used for the most recent fetch operation. int64_t fetched_invalidation_version_ = 0; - // Used for signing requests. - SigningService* signing_service_ = nullptr; - // Used for issuing requests to the cloud. DeviceManagementService* service_ = nullptr;
diff --git a/components/policy/core/common/cloud/cloud_policy_client_unittest.cc b/components/policy/core/common/cloud/cloud_policy_client_unittest.cc index 88522c5..53a7934 100644 --- a/components/policy/core/common/cloud/cloud_policy_client_unittest.cc +++ b/components/policy/core/common/cloud/cloud_policy_client_unittest.cc
@@ -482,8 +482,8 @@ &url_loader_factory_); client_ = std::make_unique<CloudPolicyClient>( kMachineID, kMachineModel, kBrandCode, kAttestedDeviceId, - kEthernetMacAddress, kDockMacAddress, kManufactureDate, - &fake_signing_service_, &service_, shared_url_loader_factory_, + kEthernetMacAddress, kDockMacAddress, kManufactureDate, &service_, + shared_url_loader_factory_, base::BindRepeating( &MockDeviceDMTokenCallbackObserver::OnDeviceDMTokenRequested, base::Unretained(&device_dmtoken_callback_observer_))); @@ -777,7 +777,8 @@ em::DeviceRegisterRequest::FLAVOR_ENROLLMENT_ATTESTATION); client_->RegisterWithCertificate( device_attestation, std::string() /* client_id */, DMAuth::NoAuth(), - kEnrollmentCertificate, std::string() /* sub_organization */); + kEnrollmentCertificate, std::string() /* sub_organization */, + &fake_signing_service_); base::RunLoop().RunUntilIdle(); EXPECT_EQ( DeviceManagementService::JobConfiguration::TYPE_CERT_BASED_REGISTRATION, @@ -813,7 +814,8 @@ em::DeviceRegisterRequest::FLAVOR_ENROLLMENT_ATTESTATION); client_->RegisterWithCertificate( device_attestation, std::string() /* client_id */, DMAuth::NoAuth(), - kEnrollmentCertificate, std::string() /* sub_organization */); + kEnrollmentCertificate, std::string() /* sub_organization */, + &fake_signing_service_); EXPECT_FALSE(client_->is_registered()); EXPECT_EQ(DM_STATUS_CANNOT_SIGN_REQUEST, client_->status()); } @@ -1682,7 +1684,8 @@ device_attestation.SetPsmExecutionResult(psm_execution_result); client_->RegisterWithCertificate( device_attestation, std::string() /* client_id */, DMAuth::NoAuth(), - kEnrollmentCertificate, std::string() /* sub_organization */); + kEnrollmentCertificate, std::string() /* sub_organization */, + &fake_signing_service_); base::RunLoop().RunUntilIdle(); EXPECT_EQ( DeviceManagementService::JobConfiguration::TYPE_CERT_BASED_REGISTRATION,
diff --git a/components/signin/public/android/java/src/org/chromium/components/signin/identitymanager/AccountInfoServiceProvider.java b/components/signin/public/android/java/src/org/chromium/components/signin/identitymanager/AccountInfoServiceProvider.java index e2541e0..4f90f8c 100644 --- a/components/signin/public/android/java/src/org/chromium/components/signin/identitymanager/AccountInfoServiceProvider.java +++ b/components/signin/public/android/java/src/org/chromium/components/signin/identitymanager/AccountInfoServiceProvider.java
@@ -11,14 +11,11 @@ import org.chromium.base.Promise; import org.chromium.base.ThreadUtils; -import java.util.concurrent.atomic.AtomicReference; - /** * This class groups all the {@link AccountInfoService} instance manipulation * methods in one place. */ public final class AccountInfoServiceProvider { - private static final AtomicReference<AccountInfoService> sInstance = new AtomicReference<>(); private static @Nullable Promise<AccountInfoService> sInstancePromise; /** @@ -27,14 +24,15 @@ @MainThread public static void init( IdentityManager identityManager, AccountTrackerService accountTrackerService) { - if (sInstance.get() != null) { + if (sInstancePromise != null && sInstancePromise.isFulfilled()) { return; } - sInstance.set(new AccountInfoServiceImpl(identityManager, accountTrackerService)); + final AccountInfoService service = + new AccountInfoServiceImpl(identityManager, accountTrackerService); if (sInstancePromise == null) { - sInstancePromise = Promise.fulfilled(sInstance.get()); + sInstancePromise = Promise.fulfilled(service); } else { - sInstancePromise.fulfill(sInstance.get()); + sInstancePromise.fulfill(service); } } @@ -43,11 +41,14 @@ * * This method must be invoked after {@link AccountInfoService} is initialized. */ + @MainThread public static AccountInfoService get() { - if (sInstance.get() == null) { + ThreadUtils.assertOnUiThread(); + final Promise<AccountInfoService> promise = getPromise(); + if (!promise.isFulfilled()) { throw new RuntimeException("The AccountInfoService is not yet initialized!"); } - return sInstance.get(); + return promise.getResult(); } /** @@ -68,13 +69,11 @@ @VisibleForTesting public static void setInstanceForTests(AccountInfoService accountInfoService) { ThreadUtils.assertOnUiThread(); - sInstance.set(accountInfoService); sInstancePromise = Promise.fulfilled(accountInfoService); } @VisibleForTesting public static void resetForTests() { - sInstance.set(null); sInstancePromise = null; }
diff --git a/components/signin/public/android/java/src/org/chromium/components/signin/identitymanager/ProfileOAuth2TokenServiceDelegateTest.java b/components/signin/public/android/java/src/org/chromium/components/signin/identitymanager/ProfileOAuth2TokenServiceDelegateTest.java index 5e181697..7024b3f8 100644 --- a/components/signin/public/android/java/src/org/chromium/components/signin/identitymanager/ProfileOAuth2TokenServiceDelegateTest.java +++ b/components/signin/public/android/java/src/org/chromium/components/signin/identitymanager/ProfileOAuth2TokenServiceDelegateTest.java
@@ -33,7 +33,6 @@ import org.chromium.components.signin.AccessTokenData; import org.chromium.components.signin.AccountManagerFacadeProvider; import org.chromium.components.signin.AccountUtils; -import org.chromium.components.signin.AuthException; import org.chromium.components.signin.test.util.FakeAccountManagerFacade; import java.util.List; @@ -110,7 +109,7 @@ @Test @SmallTest - public void testGetOAuth2AccessTokenOnSuccess() throws AuthException { + public void testGetOAuth2AccessTokenOnSuccess() { final String scope = "oauth2:http://example.com/scope"; mAccountManagerFacade.addAccount(ACCOUNT); final AccessTokenData expectedToken = mAccountManagerFacade.getAccessToken(ACCOUNT, scope); @@ -122,7 +121,7 @@ @Test @SmallTest - public void testGetOAuth2AccessTokenOnFailure() throws AuthException { + public void testGetOAuth2AccessTokenOnFailure() { final String scope = "oauth2:http://example.com/scope"; mAccountManagerFacade.addAccount(ACCOUNT); doReturn(null).when(mAccountManagerFacade).getAccessToken(any(Account.class), anyString());
diff --git a/components/signin/public/android/java/src/org/chromium/components/signin/test/util/FakeAccountManagerFacade.java b/components/signin/public/android/java/src/org/chromium/components/signin/test/util/FakeAccountManagerFacade.java index db8b5f3..dd67f4f 100644 --- a/components/signin/public/android/java/src/org/chromium/components/signin/test/util/FakeAccountManagerFacade.java +++ b/components/signin/public/android/java/src/org/chromium/components/signin/test/util/FakeAccountManagerFacade.java
@@ -20,7 +20,6 @@ import org.chromium.components.signin.AccessTokenData; import org.chromium.components.signin.AccountManagerFacade; import org.chromium.components.signin.AccountsChangeObserver; -import org.chromium.components.signin.AuthException; import java.util.ArrayList; import java.util.LinkedHashSet; @@ -75,7 +74,7 @@ } @Override - public AccessTokenData getAccessToken(Account account, String scope) throws AuthException { + public AccessTokenData getAccessToken(Account account, String scope) { synchronized (mLock) { AccountHolder accountHolder = getAccountHolder(account); if (accountHolder.getAuthToken(scope) == null) { @@ -151,19 +150,13 @@ } @GuardedBy("mLock") - private AccountHolder getAccountHolder(Account account) throws AuthException { + private AccountHolder getAccountHolder(Account account) { for (AccountHolder accountHolder : mAccountHolders) { if (accountHolder.getAccount().equals(account)) { return accountHolder; } } - // Since token requests are asynchronous, sometimes they arrive after the account has been - // removed. Thus, throwing an unchecked exception here would cause test failures (see - // https://crbug.com/1205346 for details). On the other hand, AuthException thrown here - // will be caught by ProfileOAuth2TokenServiceDelegate and reported as a token request - // failure (which matches the behavior of the production code in the situation when a token - // is requested for an account that doesn't exist or has been removed). - throw new AuthException(/* isTransientError = */ false, "Cannot find account:" + account); + throw new IllegalArgumentException("Cannot find account:" + account); } @MainThread
diff --git a/components/sync/driver/data_type_controller.h b/components/sync/driver/data_type_controller.h index 2e86d16..cc70404 100644 --- a/components/sync/driver/data_type_controller.h +++ b/components/sync/driver/data_type_controller.h
@@ -21,19 +21,21 @@ namespace syncer { struct ConfigureContext; +struct DataTypeActivationResponse; struct TypeEntitiesCount; -class ModelTypeConfigurer; class SyncError; // DataTypeControllers are responsible for managing the state of a single data // type. They are not thread safe and should only be used on the UI thread. class DataTypeController : public base::SupportsWeakPtr<DataTypeController> { public: + // TODO(crbug.com/967677): Should MODEL_LOADED be renamed to + // MODEL_READY_TO_CONNECT? enum State { NOT_RUNNING, // The controller has never been started or has previously // been stopped. Must be in this state to start. MODEL_STARTING, // The model is loading. - MODEL_LOADED, // The model has finished loading and can start running. + MODEL_LOADED, // The model has finished loading and is ready to connect. RUNNING, // The controller is running and the data type is // in sync with the cloud. STOPPING, // The controller is in the process of stopping @@ -41,15 +43,6 @@ FAILED // The controller was started but encountered an error. }; - // Returned from Connect. - enum ConnectResult { - // Indicates that the initial download for this type is already complete, or - // wasn't needed in the first place (e.g. for proxy types). - TYPE_ALREADY_DOWNLOADED, - // Indicates that the initial download for this type still needs to be done. - TYPE_NOT_YET_DOWNLOADED, - }; - // Note: This seems like it should be a OnceCallback, but it can actually be // called multiple times in the case of errors. using ModelLoadCallback = @@ -76,14 +69,11 @@ virtual void LoadModels(const ConfigureContext& configure_context, const ModelLoadCallback& model_load_callback) = 0; - // Called by DataTypeManager once the local model has loaded, but before - // downloading initial data (if necessary). Returns whether the initial - // download for this type is already complete. - virtual ConnectResult Connect(ModelTypeConfigurer* configurer) = 0; - - // Called by DataTypeManager to disconnect the controlled data type. - // See comments for ModelAssociationManager::OnSingleDataTypeWillStop. - virtual void Disconnect(ModelTypeConfigurer* configurer) = 0; + // Called by DataTypeManager once the local model has loaded (MODEL_LOADED), + // in order to enable the sync engine's propagation of sync changes between + // the server and the local processor. Upon return, the controller assumes + // that the caller will take care of actually instrumenting the sync engine. + virtual std::unique_ptr<DataTypeActivationResponse> Connect() = 0; // Stops the data type. If LoadModels() has not completed it will enter // STOPPING state first and eventually STOPPED. Once stopped, |callback| will
diff --git a/components/sync/driver/data_type_manager_impl.cc b/components/sync/driver/data_type_manager_impl.cc index 2208c138..5968462 100644 --- a/components/sync/driver/data_type_manager_impl.cc +++ b/components/sync/driver/data_type_manager_impl.cc
@@ -4,6 +4,7 @@ #include "components/sync/driver/data_type_manager_impl.h" +#include <memory> #include <string> #include <utility> #include <vector> @@ -19,6 +20,7 @@ #include "components/sync/driver/data_type_encryption_handler.h" #include "components/sync/driver/data_type_manager_observer.h" #include "components/sync/driver/data_type_status_table.h" +#include "components/sync/engine/data_type_activation_response.h" #include "components/sync/engine/data_type_debug_info_listener.h" namespace syncer { @@ -191,29 +193,33 @@ void DataTypeManagerImpl::ConnectDataTypes() { for (ModelType type : last_enabled_types_) { const auto& dtc_iter = controllers_->find(type); - if (dtc_iter == controllers_->end()) + if (dtc_iter == controllers_->end()) { continue; - DataTypeController* dtc = dtc_iter->second.get(); - if (dtc->state() == DataTypeController::MODEL_LOADED) { - // Only call Connect() for types that completed LoadModels() - // successfully. Such types shouldn't be in an error state at the same - // time. - DCHECK(!data_type_status_table_.GetFailedTypes().Has(dtc->type())); - switch (dtc->Connect(configurer_)) { - case DataTypeController::TYPE_ALREADY_DOWNLOADED: - // Proxy types (as opposed to protocol types) don't actually have any - // data, so keep proxy types out of |downloaded_types_|. - if (!IsProxyType(type)) - downloaded_types_.Put(type); - break; - case DataTypeController::TYPE_NOT_YET_DOWNLOADED: - downloaded_types_.Remove(type); - break; - } - if (force_redownload_types_.Has(type)) { - downloaded_types_.Remove(type); - } } + DataTypeController* dtc = dtc_iter->second.get(); + if (dtc->state() != DataTypeController::MODEL_LOADED) { + continue; + } + // Only call Connect() for types that completed LoadModels() + // successfully. Such types shouldn't be in an error state at the same + // time. + DCHECK(!data_type_status_table_.GetFailedTypes().Has(dtc->type())); + + std::unique_ptr<DataTypeActivationResponse> activation_response = + dtc->Connect(); + DCHECK(activation_response); + DCHECK_EQ(dtc->state(), DataTypeController::RUNNING); + + if (activation_response->model_type_state.initial_sync_done()) { + downloaded_types_.Put(type); + } else { + downloaded_types_.Remove(type); + } + if (force_redownload_types_.Has(type)) { + downloaded_types_.Remove(type); + } + + configurer_->ConnectDataType(type, std::move(activation_response)); } } @@ -339,6 +345,14 @@ // could have failed loading and should be excluded from configuration. I need // to adjust |configuration_types_queue_| for such types. ConnectDataTypes(); + + // Propagate the state of PROXY_TABS to the sync engine. + const auto& dtc_iter = controllers_->find(PROXY_TABS); + if (dtc_iter != controllers_->end()) { + configurer_->SetProxyTabsDatatypeEnabled(dtc_iter->second->state() == + DataTypeController::RUNNING); + } + StartNextConfiguration(/*higher_priority_types_before=*/ModelTypeSet()); } @@ -618,10 +632,8 @@ void DataTypeManagerImpl::OnSingleDataTypeWillStop(ModelType type, const SyncError& error) { - auto c_it = controllers_->find(type); - DCHECK(c_it != controllers_->end()); - // Delegate deactivation to the controller. - c_it->second->Disconnect(configurer_); + // No-op if the type is not connected. + configurer_->DisconnectDataType(type); if (error.IsSet()) { data_type_status_table_.UpdateFailedDataType(type, error);
diff --git a/components/sync/driver/fake_data_type_controller.cc b/components/sync/driver/fake_data_type_controller.cc index 51df1d4..85c287f 100644 --- a/components/sync/driver/fake_data_type_controller.cc +++ b/components/sync/driver/fake_data_type_controller.cc
@@ -6,6 +6,8 @@ #include <memory> +#include "components/sync/engine/data_type_activation_response.h" + namespace syncer { FakeDataTypeController::FakeDataTypeController(ModelType type) @@ -39,10 +41,9 @@ return precondition_state_; } -DataTypeController::ConnectResult FakeDataTypeController::Connect( - ModelTypeConfigurer* configurer) { +std::unique_ptr<DataTypeActivationResponse> FakeDataTypeController::Connect() { ++activate_call_count_; - return ModelTypeController::Connect(configurer); + return ModelTypeController::Connect(); } } // namespace syncer
diff --git a/components/sync/driver/fake_data_type_controller.h b/components/sync/driver/fake_data_type_controller.h index 206a6b80..54cbed7e 100644 --- a/components/sync/driver/fake_data_type_controller.h +++ b/components/sync/driver/fake_data_type_controller.h
@@ -5,6 +5,8 @@ #ifndef COMPONENTS_SYNC_DRIVER_FAKE_DATA_TYPE_CONTROLLER_H__ #define COMPONENTS_SYNC_DRIVER_FAKE_DATA_TYPE_CONTROLLER_H__ +#include <memory> + #include "components/sync/base/sync_mode.h" #include "components/sync/driver/model_type_controller.h" #include "components/sync/test/model/fake_model_type_controller_delegate.h" @@ -29,7 +31,7 @@ // ModelTypeController overrides. PreconditionState GetPreconditionState() const override; - ConnectResult Connect(ModelTypeConfigurer* configurer) override; + std::unique_ptr<DataTypeActivationResponse> Connect() override; private: PreconditionState precondition_state_ = PreconditionState::kPreconditionsMet;
diff --git a/components/sync/driver/glue/sync_engine_backend.cc b/components/sync/driver/glue/sync_engine_backend.cc index 6ae99db..caac5a5 100644 --- a/components/sync/driver/glue/sync_engine_backend.cc +++ b/components/sync/driver/glue/sync_engine_backend.cc
@@ -519,7 +519,7 @@ DCHECK_EQ(nigori_controller_->state(), DataTypeController::MODEL_LOADED); // TODO(crbug.com/922900): Do we need to call RegisterDataType() for Nigori? sync_manager_->GetModelTypeConnector()->ConnectDataType( - NIGORI, nigori_controller_->ActivateManuallyForNigori()); + NIGORI, nigori_controller_->Connect()); } } // namespace syncer
diff --git a/components/sync/driver/glue/sync_engine_impl.cc b/components/sync/driver/glue/sync_engine_impl.cc index 48448e7..89256e6f 100644 --- a/components/sync/driver/glue/sync_engine_impl.cc +++ b/components/sync/driver/glue/sync_engine_impl.cc
@@ -352,7 +352,6 @@ } void SyncEngineImpl::DisconnectDataType(ModelType type) { - DCHECK(!IsProxyType(type)); model_type_connector_->DisconnectDataType(type); }
diff --git a/components/sync/driver/model_type_controller.cc b/components/sync/driver/model_type_controller.cc index e50545d..e03c0246 100644 --- a/components/sync/driver/model_type_controller.cc +++ b/components/sync/driver/model_type_controller.cc
@@ -14,7 +14,6 @@ #include "components/sync/base/data_type_histogram.h" #include "components/sync/driver/configure_context.h" #include "components/sync/engine/data_type_activation_response.h" -#include "components/sync/engine/model_type_configurer.h" #include "components/sync/model/data_type_activation_request.h" #include "components/sync/model/data_type_error_handler_impl.h" #include "components/sync/model/type_entities_count.h" @@ -77,16 +76,6 @@ } } -std::unique_ptr<DataTypeActivationResponse> -ModelTypeController::ActivateManuallyForNigori() { - // To avoid abuse of this temporary API, we restrict it to NIGORI. - DCHECK_EQ(NIGORI, type()); - DCHECK_EQ(MODEL_LOADED, state_); - DCHECK(activation_response_); - state_ = RUNNING; - return std::move(activation_response_); -} - void ModelTypeController::LoadModels( const ConfigureContext& configure_context, const ModelLoadCallback& model_load_callback) { @@ -122,32 +111,15 @@ base::AsWeakPtr(this))); } -DataTypeController::ConnectResult ModelTypeController::Connect( - ModelTypeConfigurer* configurer) { +std::unique_ptr<DataTypeActivationResponse> ModelTypeController::Connect() { DCHECK(CalledOnValidThread()); - DCHECK(configurer); DCHECK(activation_response_); DCHECK_EQ(MODEL_LOADED, state_); - bool initial_sync_done = - activation_response_->model_type_state.initial_sync_done(); - // Pass activation context to ModelTypeRegistry, where ModelTypeWorker gets - // created and connected with the delegate (processor). - configurer->ConnectDataType(type(), std::move(activation_response_)); - state_ = RUNNING; DVLOG(1) << "Sync running for " << ModelTypeToString(type()); - return initial_sync_done ? TYPE_ALREADY_DOWNLOADED : TYPE_NOT_YET_DOWNLOADED; -} - -void ModelTypeController::Disconnect(ModelTypeConfigurer* configurer) { - DCHECK(CalledOnValidThread()); - DCHECK(configurer); - if (state_ == RUNNING) { - configurer->DisconnectDataType(type()); - state_ = MODEL_LOADED; - } + return std::move(activation_response_); } void ModelTypeController::Stop(ShutdownReason reason, StopCallback callback) {
diff --git a/components/sync/driver/model_type_controller.h b/components/sync/driver/model_type_controller.h index f5c8a6ed6..4738652 100644 --- a/components/sync/driver/model_type_controller.h +++ b/components/sync/driver/model_type_controller.h
@@ -38,17 +38,10 @@ std::unique_ptr<ModelTypeControllerDelegate> delegate_for_transport_mode); ~ModelTypeController() override; - // Steals the activation response, only used for Nigori. - // TODO(crbug.com/967677): Once all datatypes are in USS, we should redesign - // or remove Connect, and expose the activation response via - // LoadModels(), which is more natural in USS. - std::unique_ptr<DataTypeActivationResponse> ActivateManuallyForNigori(); - // DataTypeController implementation. void LoadModels(const ConfigureContext& configure_context, const ModelLoadCallback& model_load_callback) override; - ConnectResult Connect(ModelTypeConfigurer* configurer) override; - void Disconnect(ModelTypeConfigurer* configurer) override; + std::unique_ptr<DataTypeActivationResponse> Connect() override; void Stop(ShutdownReason reason, StopCallback callback) override; State state() const override; bool ShouldRunInTransportOnlyMode() const override;
diff --git a/components/sync/driver/model_type_controller_unittest.cc b/components/sync/driver/model_type_controller_unittest.cc index 745da74..7cb9a251 100644 --- a/components/sync/driver/model_type_controller_unittest.cc +++ b/components/sync/driver/model_type_controller_unittest.cc
@@ -19,8 +19,6 @@ #include "components/sync/driver/configure_context.h" #include "components/sync/engine/commit_queue.h" #include "components/sync/engine/data_type_activation_response.h" -#include "components/sync/engine/model_type_configurer.h" -#include "components/sync/engine/model_type_processor_proxy.h" #include "components/sync/model/data_type_activation_request.h" #include "components/sync/model/forwarding_model_type_controller_delegate.h" #include "components/sync/model/type_entities_count.h" @@ -32,8 +30,9 @@ namespace { -using testing::NiceMock; using testing::_; +using testing::NiceMock; +using testing::NotNull; const ModelType kTestModelType = AUTOFILL; const char kCacheGuid[] = "SomeCacheGuid"; @@ -68,60 +67,6 @@ MOCK_METHOD(void, RecordMemoryUsageAndCountsHistograms, (), (override)); }; -// A simple processor that trackes connected state. -class TestModelTypeProcessor - : public FakeModelTypeProcessor, - public base::SupportsWeakPtr<TestModelTypeProcessor> { - public: - TestModelTypeProcessor() {} - - bool is_connected() const { return is_connected_; } - - // ModelTypeProcessor implementation. - void ConnectSync(std::unique_ptr<CommitQueue> commit_queue) override { - is_connected_ = true; - } - - void DisconnectSync() override { is_connected_ = false; } - - private: - bool is_connected_ = false; - - DISALLOW_COPY_AND_ASSIGN(TestModelTypeProcessor); -}; - -// A ModelTypeConfigurer that just connects USS types. -class TestModelTypeConfigurer : public ModelTypeConfigurer { - public: - TestModelTypeConfigurer() {} - ~TestModelTypeConfigurer() override {} - - void ConfigureDataTypes(ConfigureParams params) override { - NOTREACHED() << "Not implemented."; - } - - void ConnectDataType(ModelType type, - std::unique_ptr<DataTypeActivationResponse> - activation_response) override { - DCHECK_EQ(kTestModelType, type); - DCHECK(!processor_); - processor_ = std::move(activation_response->type_processor); - processor_->ConnectSync(nullptr); - } - - void DisconnectDataType(ModelType type) override { - DCHECK_EQ(kTestModelType, type); - DCHECK(processor_); - processor_->DisconnectSync(); - processor_.reset(); - } - - void SetProxyTabsDatatypeEnabled(bool enabled) override { NOTREACHED(); } - - private: - std::unique_ptr<ModelTypeProcessor> processor_; -}; - // Class used to expose ReportModelError() publicly. class TestModelTypeController : public ModelTypeController { public: @@ -149,12 +94,7 @@ : controller_(std::make_unique<ForwardingModelTypeControllerDelegate>( &mock_delegate_)) {} - ~ModelTypeControllerTest() { - // Since we use ModelTypeProcessorProxy, which posts tasks, make sure we - // don't have anything pending on teardown that would make a test fail or - // crash. - base::RunLoop().RunUntilIdle(); - } + ~ModelTypeControllerTest() {} bool LoadModels(bool initial_sync_done = false) { base::MockCallback<DataTypeController::ModelLoadCallback> load_models_done; @@ -176,9 +116,7 @@ activation_response->model_type_state.set_initial_sync_done( initial_sync_done); activation_response->type_processor = - std::make_unique<ModelTypeProcessorProxy>( - base::AsWeakPtr(&processor_), - base::SequencedTaskRunnerHandle::Get()); + std::make_unique<FakeModelTypeProcessor>(); // Mimic completion for OnSyncStarting(). EXPECT_CALL(load_models_done, Run); @@ -186,37 +124,13 @@ return true; } - void Connect(bool expect_downloaded) { - auto result = expect_downloaded - ? DataTypeController::TYPE_ALREADY_DOWNLOADED - : DataTypeController::TYPE_NOT_YET_DOWNLOADED; - EXPECT_EQ(result, controller_.Connect(&configurer_)); - // ModelTypeProcessorProxy does posting of tasks. - base::RunLoop().RunUntilIdle(); - } - - void StopAndWait(ShutdownReason shutdown_reason) { - // ModelTypeProcessorProxy does posting of tasks, so we need a runloop. This - // also verifies that the completion callback is run. - base::RunLoop loop; - controller_.Stop(shutdown_reason, loop.QuitClosure()); - loop.Run(); - } - - void DisconnectAndStop(ShutdownReason shutdown_reason) { - controller_.Disconnect(&configurer_); - StopAndWait(shutdown_reason); - } - MockDelegate* delegate() { return &mock_delegate_; } - TestModelTypeProcessor* processor() { return &processor_; } TestModelTypeController* controller() { return &controller_; } private: base::test::SingleThreadTaskEnvironment task_environment_; NiceMock<MockDelegate> mock_delegate_; - TestModelTypeConfigurer configurer_; - TestModelTypeProcessor processor_; + FakeModelTypeProcessor processor_; TestModelTypeController controller_; }; @@ -245,26 +159,39 @@ EXPECT_EQ(DataTypeController::MODEL_LOADED, controller()->state()); } -TEST_F(ModelTypeControllerTest, Activate) { +TEST_F(ModelTypeControllerTest, Connect) { base::HistogramTester histogram_tester; - ASSERT_TRUE(LoadModels()); + ASSERT_TRUE(LoadModels(/*initial_sync_done=*/false)); EXPECT_EQ(DataTypeController::MODEL_LOADED, controller()->state()); - Connect(/*expect_downloaded=*/false); - EXPECT_TRUE(processor()->is_connected()); + + std::unique_ptr<DataTypeActivationResponse> activation_response = + controller()->Connect(); EXPECT_EQ(DataTypeController::RUNNING, controller()->state()); + + ASSERT_THAT(activation_response, NotNull()); + EXPECT_THAT(activation_response->type_processor, NotNull()); + EXPECT_FALSE(activation_response->model_type_state.initial_sync_done()); + histogram_tester.ExpectTotalCount(kStartFailuresHistogram, 0); } -TEST_F(ModelTypeControllerTest, ActivateWithInitialSyncDone) { +TEST_F(ModelTypeControllerTest, ConnectWithInitialSyncDone) { base::HistogramTester histogram_tester; ASSERT_TRUE(LoadModels(/*initial_sync_done=*/true)); EXPECT_EQ(DataTypeController::MODEL_LOADED, controller()->state()); - Connect(/*expect_downloaded=*/true); - EXPECT_TRUE(processor()->is_connected()); + + std::unique_ptr<DataTypeActivationResponse> activation_response = + controller()->Connect(); + EXPECT_EQ(DataTypeController::RUNNING, controller()->state()); + + ASSERT_THAT(activation_response, NotNull()); + EXPECT_THAT(activation_response->type_processor, NotNull()); + EXPECT_TRUE(activation_response->model_type_state.initial_sync_done()); + histogram_tester.ExpectTotalCount(kStartFailuresHistogram, 0); } -TEST_F(ModelTypeControllerTest, ActivateWithError) { +TEST_F(ModelTypeControllerTest, ConnectWithError) { ModelErrorHandler error_handler; EXPECT_CALL(*delegate(), OnSyncStarting) .WillOnce([&](const DataTypeActivationRequest& request, @@ -293,9 +220,13 @@ TEST_F(ModelTypeControllerTest, Stop) { ASSERT_TRUE(LoadModels()); - Connect(/*expect_downloaded=*/false); - EXPECT_TRUE(processor()->is_connected()); - DisconnectAndStop(ShutdownReason::STOP_SYNC_AND_KEEP_DATA); + controller()->Connect(); + ASSERT_EQ(DataTypeController::RUNNING, controller()->state()); + + base::MockCallback<base::OnceClosure> stop_completion; + EXPECT_CALL(stop_completion, Run()); + controller()->Stop(ShutdownReason::STOP_SYNC_AND_KEEP_DATA, + stop_completion.Get()); EXPECT_EQ(DataTypeController::NOT_RUNNING, controller()->state()); } @@ -305,9 +236,12 @@ // Ensures that metadata was not cleared. EXPECT_CALL(*delegate(), OnSyncStopping(KEEP_METADATA)); - DisconnectAndStop(ShutdownReason::STOP_SYNC_AND_KEEP_DATA); + + base::MockCallback<base::OnceClosure> stop_completion; + EXPECT_CALL(stop_completion, Run()); + controller()->Stop(ShutdownReason::STOP_SYNC_AND_KEEP_DATA, + stop_completion.Get()); EXPECT_EQ(DataTypeController::NOT_RUNNING, controller()->state()); - EXPECT_FALSE(processor()->is_connected()); } // Test emulates scenario when user disables datatype. Metadata should be @@ -315,10 +249,14 @@ TEST_F(ModelTypeControllerTest, StopWhenDatatypeDisabled) { ASSERT_TRUE(LoadModels()); + // Ensures that metadata was cleared. EXPECT_CALL(*delegate(), OnSyncStopping(CLEAR_METADATA)); - DisconnectAndStop(ShutdownReason::DISABLE_SYNC_AND_CLEAR_DATA); + + base::MockCallback<base::OnceClosure> stop_completion; + EXPECT_CALL(stop_completion, Run()); + controller()->Stop(ShutdownReason::DISABLE_SYNC_AND_CLEAR_DATA, + stop_completion.Get()); EXPECT_EQ(DataTypeController::NOT_RUNNING, controller()->state()); - EXPECT_FALSE(processor()->is_connected()); } // Test emulates disabling sync when datatype is not loaded yet. Metadata should @@ -328,7 +266,10 @@ ASSERT_EQ(DataTypeController::NOT_RUNNING, controller()->state()); - StopAndWait(ShutdownReason::DISABLE_SYNC_AND_CLEAR_DATA); + base::MockCallback<base::OnceClosure> stop_completion; + EXPECT_CALL(stop_completion, Run()); + controller()->Stop(ShutdownReason::DISABLE_SYNC_AND_CLEAR_DATA, + stop_completion.Get()); EXPECT_EQ(DataTypeController::NOT_RUNNING, controller()->state()); } @@ -356,7 +297,10 @@ ASSERT_EQ(DataTypeController::FAILED, controller()->state()); - StopAndWait(ShutdownReason::DISABLE_SYNC_AND_CLEAR_DATA); + base::MockCallback<base::OnceClosure> stop_completion; + EXPECT_CALL(stop_completion, Run()); + controller()->Stop(ShutdownReason::DISABLE_SYNC_AND_CLEAR_DATA, + stop_completion.Get()); EXPECT_EQ(DataTypeController::FAILED, controller()->state()); } @@ -458,7 +402,10 @@ // At this point, the UI stops the datatype, but it's possible that the // backend has already posted a task to the UI thread, which we'll process // later below. - StopAndWait(ShutdownReason::DISABLE_SYNC_AND_CLEAR_DATA); + base::MockCallback<base::OnceClosure> stop_completion; + EXPECT_CALL(stop_completion, Run()); + controller()->Stop(ShutdownReason::DISABLE_SYNC_AND_CLEAR_DATA, + stop_completion.Get()); ASSERT_EQ(DataTypeController::NOT_RUNNING, controller()->state()); base::HistogramTester histogram_tester; @@ -661,13 +608,13 @@ // registering with the backend. auto activation_response = std::make_unique<DataTypeActivationResponse>(); activation_response->type_processor = - std::make_unique<TestModelTypeProcessor>(); + std::make_unique<FakeModelTypeProcessor>(); // Mimic completion for OnSyncStarting(). std::move(start_callback).Run(std::move(activation_response)); ASSERT_EQ(DataTypeController::MODEL_LOADED, controller()->state()); - Connect(/*expect_downloaded=*/false); + controller()->Connect(); ASSERT_EQ(DataTypeController::RUNNING, controller()->state()); // Now trigger the run-time error.
diff --git a/components/sync/driver/sync_api_component_factory.h b/components/sync/driver/sync_api_component_factory.h index ae716d9..374400c 100644 --- a/components/sync/driver/sync_api_component_factory.h +++ b/components/sync/driver/sync_api_component_factory.h
@@ -22,6 +22,7 @@ class DataTypeEncryptionHandler; class DataTypeManager; class DataTypeManagerObserver; +class ModelTypeConfigurer; class SyncEngine; class SyncInvalidationsService;
diff --git a/components/sync/engine/model_type_configurer.h b/components/sync/engine/model_type_configurer.h index 25f9e43..cba291c 100644 --- a/components/sync/engine/model_type_configurer.h +++ b/components/sync/engine/model_type_configurer.h
@@ -56,7 +56,8 @@ std::unique_ptr<DataTypeActivationResponse> activation_response) = 0; // Opposite of the above: stops treating |type| as a datatype that is - // propagating changes between the server and the processor. + // propagating changes between the server and the processor. No-op if the + // type is not connected. virtual void DisconnectDataType(ModelType type) = 0; // Propagates whether PROXY_TABS is enabled, which influences a bit exposed to
diff --git a/components/sync/engine/model_type_connector.h b/components/sync/engine/model_type_connector.h index 6eac9f5..507887f 100644 --- a/components/sync/engine/model_type_connector.h +++ b/components/sync/engine/model_type_connector.h
@@ -37,6 +37,8 @@ // This is the sync thread's chance to clear state associated with the type. // It also causes the syncer to stop requesting updates for this type, and to // abort any in-progress commit requests. + // + // No-op if the type is not connected. virtual void DisconnectDataType(ModelType type) = 0; // Propagates whether PROXY_TABS is enabled, which influences a bit exposed to
diff --git a/components/sync/engine/model_type_registry.cc b/components/sync/engine/model_type_registry.cc index 04f87d4c..7e735d6 100644 --- a/components/sync/engine/model_type_registry.cc +++ b/components/sync/engine/model_type_registry.cc
@@ -59,6 +59,11 @@ } void ModelTypeRegistry::DisconnectDataType(ModelType type) { + if (update_handler_map_.count(type) == 0) { + // Type not connected. Simply ignore. + return; + } + DVLOG(1) << "Disabling an off-thread sync type: " << ModelTypeToString(type); DCHECK(!IsProxyType(type));
diff --git a/components/sync_sessions/proxy_tabs_data_type_controller.cc b/components/sync_sessions/proxy_tabs_data_type_controller.cc index 2a8a8a25..6a0a5c7 100644 --- a/components/sync_sessions/proxy_tabs_data_type_controller.cc +++ b/components/sync_sessions/proxy_tabs_data_type_controller.cc
@@ -9,6 +9,7 @@ #include "base/values.h" #include "components/sync/driver/configure_context.h" +#include "components/sync/engine/data_type_activation_response.h" #include "components/sync/engine/model_type_configurer.h" #include "components/sync/model/type_entities_count.h" @@ -27,27 +28,18 @@ const ModelLoadCallback& model_load_callback) { DCHECK(CalledOnValidThread()); DCHECK_EQ(configure_context.sync_mode, syncer::SyncMode::kFull); - state_ = MODEL_LOADED; + // Bypass connection to the sync engine by reporting that it's already + // running. + state_ = RUNNING; state_changed_cb_.Run(state_); model_load_callback.Run(type(), syncer::SyncError()); } -syncer::DataTypeController::ConnectResult ProxyTabsDataTypeController::Connect( - syncer::ModelTypeConfigurer* configurer) { - DCHECK(configurer); - DCHECK_EQ(MODEL_LOADED, state_); - - // Proxy type doesn't need to be registered with ModelTypeRegistry as it - // doesn't need update handler, client doesn't expect updates of this type - // from the server. We still need to inform the engine such that the protocol - // bit |tabs_datatype_enabled_| gets set. - configurer->SetProxyTabsDatatypeEnabled(true); - - state_ = RUNNING; - state_changed_cb_.Run(state_); - - // Proxy types don't have any data to download. - return TYPE_ALREADY_DOWNLOADED; +std::unique_ptr<syncer::DataTypeActivationResponse> +ProxyTabsDataTypeController::Connect() { + // This controller never enters the MODEL_LOADED state. + NOTREACHED(); + return nullptr; } void ProxyTabsDataTypeController::Stop(syncer::ShutdownReason shutdown_reason, @@ -65,14 +57,6 @@ return false; } -void ProxyTabsDataTypeController::Disconnect( - syncer::ModelTypeConfigurer* configurer) { - if (state_ == RUNNING) { - configurer->SetProxyTabsDatatypeEnabled(false); - state_ = MODEL_LOADED; - } -} - void ProxyTabsDataTypeController::GetAllNodes(AllNodesCallback callback) { std::move(callback).Run(type(), std::make_unique<base::ListValue>()); }
diff --git a/components/sync_sessions/proxy_tabs_data_type_controller.h b/components/sync_sessions/proxy_tabs_data_type_controller.h index 1f89115d2..ffa39c6 100644 --- a/components/sync_sessions/proxy_tabs_data_type_controller.h +++ b/components/sync_sessions/proxy_tabs_data_type_controller.h
@@ -5,6 +5,8 @@ #ifndef COMPONENTS_SYNC_SESSIONS_PROXY_TABS_DATA_TYPE_CONTROLLER_H_ #define COMPONENTS_SYNC_SESSIONS_PROXY_TABS_DATA_TYPE_CONTROLLER_H_ +#include <memory> + #include "base/callback_forward.h" #include "base/macros.h" #include "components/sync/driver/data_type_controller.h" @@ -23,12 +25,11 @@ // DataTypeController interface. void LoadModels(const syncer::ConfigureContext& configure_context, const ModelLoadCallback& model_load_callback) override; - ConnectResult Connect(syncer::ModelTypeConfigurer* configurer) override; + std::unique_ptr<syncer::DataTypeActivationResponse> Connect() override; void Stop(syncer::ShutdownReason shutdown_reason, StopCallback callback) override; State state() const override; bool ShouldRunInTransportOnlyMode() const override; - void Disconnect(syncer::ModelTypeConfigurer* configurer) override; void GetAllNodes(AllNodesCallback callback) override; void GetTypeEntitiesCount( base::OnceCallback<void(const syncer::TypeEntitiesCount&)> callback)
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn index 414bf51..7c5fe6d 100644 --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn
@@ -2250,7 +2250,7 @@ if (is_chromeos_ash) { deps += [ "//ui/base/ime/chromeos:chromeos", - "//ui/chromeos/colors:cros_colors_views", + "//ui/chromeos/styles:cros_styles_views", ] }
diff --git a/content/browser/back_forward_cache_browsertest.cc b/content/browser/back_forward_cache_browsertest.cc index 0f35b7e..d0c38a2 100644 --- a/content/browser/back_forward_cache_browsertest.cc +++ b/content/browser/back_forward_cache_browsertest.cc
@@ -9038,6 +9038,63 @@ presentation_service.OnDelegateDestroyed(); } +namespace { + +// Subclass of DocumentServiceBase for test. +class EchoImpl final : public DocumentServiceBase<mojom::Echo> { + public: + EchoImpl(RenderFrameHost* render_frame_host, + mojo::PendingReceiver<mojom::Echo> receiver, + bool* deleted) + : DocumentServiceBase(render_frame_host, std::move(receiver)), + deleted_(deleted) {} + ~EchoImpl() final { *deleted_ = true; } + + // mojom::Echo implementation + void EchoString(const std::string& input, EchoStringCallback callback) final { + std::move(callback).Run(input); + } + + private: + bool* deleted_; +}; + +} // namespace + +IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTest, DocumentServiceBase) { + ASSERT_TRUE(embedded_test_server()->Start()); + GURL url_a(embedded_test_server()->GetURL("a.com", "/title1.html")); + GURL url_b(embedded_test_server()->GetURL("b.com", "/title1.html")); + + // 1) Navigate to A. + ASSERT_TRUE(NavigateToURL(shell(), url_a)); + RenderFrameHostImpl* rfh_a = current_frame_host(); + RenderFrameDeletedObserver delete_observer_rfh_a(rfh_a); + + mojo::Remote<mojom::Echo> echo_remote; + bool echo_deleted = false; + new EchoImpl(rfh_a, echo_remote.BindNewPipeAndPassReceiver(), &echo_deleted); + + // 2) Navigate to B. + ASSERT_TRUE(NavigateToURL(shell(), url_b)); + + // - Page A should be in the cache. + ASSERT_FALSE(delete_observer_rfh_a.deleted()); + EXPECT_TRUE(rfh_a->IsInBackForwardCache()); + EXPECT_FALSE(echo_deleted); + + // 3) Go back. + web_contents()->GetController().GoBack(); + EXPECT_TRUE(WaitForLoadStop(shell()->web_contents())); + EXPECT_FALSE(echo_deleted); + + // 4) Prevent caching and navigate to B. + DisableBFCacheForRFHForTesting(rfh_a); + ASSERT_TRUE(NavigateToURL(shell(), url_b)); + delete_observer_rfh_a.WaitUntilDeleted(); + EXPECT_TRUE(echo_deleted); +} + IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTest, OutstandingFetchNotCached) { net::test_server::ControllableHttpResponse response(embedded_test_server(), "/fetch");
diff --git a/content/browser/browsing_data/storage_partition_code_cache_data_remover.cc b/content/browser/browsing_data/storage_partition_code_cache_data_remover.cc index bf255f4..67581b3 100644 --- a/content/browser/browsing_data/storage_partition_code_cache_data_remover.cc +++ b/content/browser/browsing_data/storage_partition_code_cache_data_remover.cc
@@ -124,13 +124,30 @@ if (generated_code_cache_context_ && generated_code_cache_context_->generated_wasm_code_cache()) { net::CompletionOnceCallback callback = base::BindOnce( - &StoragePartitionCodeCacheDataRemover::DoneClearCodeCache, + &StoragePartitionCodeCacheDataRemover::ClearWebUIJSCodeCache, base::Unretained(this)); generated_code_cache_context_->generated_wasm_code_cache()->GetBackend( base::BindOnce(&StoragePartitionCodeCacheDataRemover::ClearCache, base::Unretained(this), std::move(callback))); } else { - // There is no Wasm cache, done with clearing caches. + // There is no Wasm cache, so move on to the next step. + ClearWebUIJSCodeCache(net::ERR_FAILED); + } +} + +// |rv| is the returned when clearing the code cache. We don't handle +// any errors here, so the result value is ignored. +void StoragePartitionCodeCacheDataRemover::ClearWebUIJSCodeCache(int rv) { + if (generated_code_cache_context_ && + generated_code_cache_context_->generated_webui_js_code_cache()) { + net::CompletionOnceCallback callback = base::BindOnce( + &StoragePartitionCodeCacheDataRemover::DoneClearCodeCache, + base::Unretained(this)); + generated_code_cache_context_->generated_webui_js_code_cache()->GetBackend( + base::BindOnce(&StoragePartitionCodeCacheDataRemover::ClearCache, + base::Unretained(this), std::move(callback))); + } else { + // There is no WebUI JS cache, done with clearing caches. DoneClearCodeCache(net::ERR_FAILED); } }
diff --git a/content/browser/browsing_data/storage_partition_code_cache_data_remover.h b/content/browser/browsing_data/storage_partition_code_cache_data_remover.h index 07cfce5..d0800add 100644 --- a/content/browser/browsing_data/storage_partition_code_cache_data_remover.h +++ b/content/browser/browsing_data/storage_partition_code_cache_data_remover.h
@@ -64,6 +64,7 @@ // Executed on code cache thread. void ClearJSCodeCache(); void ClearWASMCodeCache(int rv); + void ClearWebUIJSCodeCache(int rv); void ClearCache(net::CompletionOnceCallback callback, disk_cache::Backend* backend); void DoneClearCodeCache(int rv);
diff --git a/content/browser/code_cache/generated_code_cache.cc b/content/browser/code_cache/generated_code_cache.cc index 14e84d9..3a489b8 100644 --- a/content/browser/code_cache/generated_code_cache.cc +++ b/content/browser/code_cache/generated_code_cache.cc
@@ -32,17 +32,35 @@ // This function doesn't enforce anything in the production code. It is here // to make the assumptions explicit and to catch any errors when DCHECKs are // enabled. -void CheckValidKeys(const GURL& resource_url, const GURL& origin_lock) { +void CheckValidKeys(const GURL& resource_url, + const GURL& origin_lock, + GeneratedCodeCache::CodeCacheType cache_type) { // If the resource url is invalid don't cache the code. - DCHECK(resource_url.is_valid() && resource_url.SchemeIsHTTPOrHTTPS()); + DCHECK(resource_url.is_valid()); + bool resource_url_is_chrome_or_chrome_untrusted = + resource_url.SchemeIs(content::kChromeUIScheme) || + resource_url.SchemeIs(content::kChromeUIUntrustedScheme); + DCHECK(resource_url.SchemeIsHTTPOrHTTPS() || + resource_url_is_chrome_or_chrome_untrusted); - // |origin_lock| should be either empty or should have Http/Https/chrome - // schemes and it should not be a URL with opaque origin. Empty origin_locks - // are allowed when the renderer is not locked to an origin. + // |origin_lock| should be either empty or should have + // Http/Https/chrome/chrome-untrusted schemes and it should not be a URL with + // opaque origin. Empty origin_locks are allowed when the renderer is not + // locked to an origin. + bool origin_lock_is_chrome_or_chrome_untrusted = + origin_lock.SchemeIs(content::kChromeUIScheme) || + origin_lock.SchemeIs(content::kChromeUIUntrustedScheme); DCHECK(origin_lock.is_empty() || ((origin_lock.SchemeIsHTTPOrHTTPS() || - origin_lock.SchemeIs(content::kChromeUIScheme)) && + origin_lock_is_chrome_or_chrome_untrusted) && !url::Origin::Create(origin_lock).opaque())); + + // The chrome and chrome-untrusted schemes are only used with the WebUI + // code cache type. + DCHECK_EQ(origin_lock_is_chrome_or_chrome_untrusted, + cache_type == GeneratedCodeCache::kWebUIJavaScript); + DCHECK_EQ(resource_url_is_chrome_or_chrome_untrusted, + cache_type == GeneratedCodeCache::kWebUIJavaScript); } // Generates the cache key for the given |resource_url|, |origin_lock| and @@ -64,8 +82,9 @@ // to something not based on URLs. std::string GetCacheKey(const GURL& resource_url, const GURL& origin_lock, - const net::NetworkIsolationKey& nik) { - CheckValidKeys(resource_url, origin_lock); + const net::NetworkIsolationKey& nik, + GeneratedCodeCache::CodeCacheType cache_type) { + CheckValidKeys(resource_url, origin_lock, cache_type); // Add a prefix _ so it can't be parsed as a valid URL. std::string key(kPrefix); @@ -102,7 +121,7 @@ // time stamps with no data, or timestamps with just a tag, and we observe many // 8 and 16 byte reads and writes. Make the threshold larger to speed up small // code entries too. -constexpr size_t kSmallDataLimit = 4096; +constexpr size_t kInlineDataLimit = 4096; // This is the maximum size for code that will be stored under the key generated // by |GetCacheKey|. Each origin will get its own copy of the generated code for // a given resource. Code that is larger than this limit will be stored under a @@ -110,24 +129,7 @@ // gets its own small entry under the key generated by |GetCacheKey| that holds // the hash, enabling a two stage lookup. This limit was determined empirically // by a Finch experiment. -constexpr size_t kLargeDataLimit = 16384; - -// Checks that the header data in the small buffer is valid. We may read cache -// entries that were written by a previous version of Chrome which use obsolete -// formats. These reads should fail and be doomed as soon as possible. -bool IsValidHeader(scoped_refptr<net::IOBufferWithSize> small_buffer) { - size_t buffer_size = small_buffer->size(); - if (buffer_size < kHeaderSizeInBytes) - return false; - uint32_t data_size; - memcpy(&data_size, small_buffer->data() + kResponseTimeSizeInBytes, - kDataSizeInBytes); - if (data_size <= kSmallDataLimit) - return buffer_size == kHeaderSizeInBytes + data_size; - if (data_size <= kLargeDataLimit) - return buffer_size == kHeaderSizeInBytes; - return buffer_size == kHeaderSizeInBytes + kSHAKeySizeInBytes; -} +constexpr size_t kDedicatedDataLimit = 16384; void WriteCommonDataHeader(scoped_refptr<net::IOBufferWithSize> buffer, const base::Time& response_time, @@ -187,8 +189,36 @@ DISALLOW_COPY_AND_ASSIGN(BigIOBuffer); }; +net::CacheType CodeCacheTypeToNetCacheType( + GeneratedCodeCache::CodeCacheType type) { + switch (type) { + case GeneratedCodeCache::CodeCacheType::kJavaScript: + return net::GENERATED_BYTE_CODE_CACHE; + case GeneratedCodeCache::CodeCacheType::kWebAssembly: + return net::GENERATED_NATIVE_CODE_CACHE; + case GeneratedCodeCache::CodeCacheType::kWebUIJavaScript: + return net::GENERATED_WEBUI_BYTE_CODE_CACHE; + } + NOTREACHED(); +} + } // namespace +bool GeneratedCodeCache::IsValidHeader( + scoped_refptr<net::IOBufferWithSize> small_buffer) const { + size_t buffer_size = small_buffer->size(); + if (buffer_size < kHeaderSizeInBytes) + return false; + uint32_t data_size; + memcpy(&data_size, small_buffer->data() + kResponseTimeSizeInBytes, + kDataSizeInBytes); + if (data_size <= kInlineDataLimit) + return buffer_size == kHeaderSizeInBytes + data_size; + if (!ShouldDeduplicateEntry(data_size)) + return buffer_size == kHeaderSizeInBytes; + return buffer_size == kHeaderSizeInBytes + kSHAKeySizeInBytes; +} + std::string GeneratedCodeCache::GetResourceURLFromKey(const std::string& key) { constexpr size_t kPrefixStringLen = base::size(kPrefix) - 1; // |key| may not have a prefix and separator (e.g. for deduplicated entries). @@ -207,6 +237,7 @@ GeneratedCodeCache::CacheEntryStatus status) { switch (cache_type_) { case GeneratedCodeCache::CodeCacheType::kJavaScript: + case GeneratedCodeCache::CodeCacheType::kWebUIJavaScript: UMA_HISTOGRAM_ENUMERATION("SiteIsolatedCodeCache.JS.Behaviour", status); break; case GeneratedCodeCache::CodeCacheType::kWebAssembly: @@ -363,8 +394,8 @@ scoped_refptr<BigIOBuffer> large_buffer; uint32_t data_size = static_cast<uint32_t>(data.size()); // We have three different cache entry layouts, depending on data size. - if (data_size <= kSmallDataLimit) { - // 1. Small + if (data_size <= kInlineDataLimit) { + // 1. Inline // [stream0] response time, size, data // [stream1] <empty> small_buffer = base::MakeRefCounted<net::IOBufferWithSize>( @@ -373,15 +404,15 @@ memcpy(small_buffer->data() + kHeaderSizeInBytes, data.data(), data.size()); // Write 0 bytes and truncate stream 1 to clear any stale data. large_buffer = base::MakeRefCounted<BigIOBuffer>(mojo_base::BigBuffer()); - } else if (data_size <= kLargeDataLimit) { - // 2. Large + } else if (!ShouldDeduplicateEntry(data_size)) { + // 2. Dedicated // [stream0] response time, size // [stream1] data small_buffer = base::MakeRefCounted<net::IOBufferWithSize>(kHeaderSizeInBytes); large_buffer = base::MakeRefCounted<BigIOBuffer>(std::move(data)); } else { - // 3. Very Large + // 3. Indirect // [stream0] response time, size, checksum // [stream1] <empty> // [stream0 (checksum key entry)] <empty> @@ -421,7 +452,7 @@ WriteCommonDataHeader(small_buffer, response_time, data_size); // Create the write operation. - std::string key = GetCacheKey(url, origin_lock, nik); + std::string key = GetCacheKey(url, origin_lock, nik, cache_type_); auto op = std::make_unique<PendingOperation>(Operation::kWrite, key, small_buffer, large_buffer); EnqueueOperation(std::move(op)); @@ -438,7 +469,7 @@ return; } - std::string key = GetCacheKey(url, origin_lock, nik); + std::string key = GetCacheKey(url, origin_lock, nik, cache_type_); auto op = std::make_unique<PendingOperation>(Operation::kFetch, key, std::move(read_data_callback)); EnqueueOperation(std::move(op)); @@ -453,7 +484,7 @@ return; } - std::string key = GetCacheKey(url, origin_lock, nik); + std::string key = GetCacheKey(url, origin_lock, nik, cache_type_); auto op = std::make_unique<PendingOperation>(Operation::kDelete, key); EnqueueOperation(std::move(op)); } @@ -471,11 +502,8 @@ // If the initialization of the existing cache fails, this call would delete // all the contents and recreates a new one. int rv = disk_cache::CreateCacheBackend( - cache_type_ == GeneratedCodeCache::CodeCacheType::kJavaScript - ? net::GENERATED_BYTE_CODE_CACHE - : net::GENERATED_NATIVE_CODE_CACHE, - net::CACHE_BACKEND_SIMPLE, path_, max_size_bytes_, - disk_cache::ResetHandling::kResetOnError, nullptr, + CodeCacheTypeToNetCacheType(cache_type_), net::CACHE_BACKEND_SIMPLE, + path_, max_size_bytes_, disk_cache::ResetHandling::kResetOnError, nullptr, &shared_backend_ptr->data, std::move(create_backend_complete)); if (rv != net::ERR_IO_PENDING) { DidCreateBackend(shared_backend_ptr, rv); @@ -762,15 +790,16 @@ base::Time response_time; uint32_t data_size = 0; ReadCommonDataHeader(op->small_buffer(), &response_time, &data_size); - if (data_size <= kSmallDataLimit) { + if (data_size <= kInlineDataLimit) { // Small data. Copy the data from the small buffer. DCHECK_EQ(0, op->large_buffer()->size()); mojo_base::BigBuffer data(data_size); memcpy(data.data(), op->small_buffer()->data() + kHeaderSizeInBytes, data_size); op->TakeReadCallback().Run(response_time, std::move(data)); - } else if (data_size <= kLargeDataLimit) { - // Large data below the merging threshold. Return the large buffer. + } else if (!ShouldDeduplicateEntry(data_size)) { + // Large data below the merging threshold, or deduplication is disabled. + // Return the large buffer. op->TakeReadCallback().Run(response_time, op->large_buffer()->TakeBuffer()); } else { @@ -870,6 +899,17 @@ } } +bool GeneratedCodeCache::IsDeduplicationEnabled() const { + // Deduplication is disabled in the WebUI code cache, as an additional defense + // against privilege escalation in case there is a bug in the deduplication + // logic. + return cache_type_ != kWebUIJavaScript; +} + +bool GeneratedCodeCache::ShouldDeduplicateEntry(uint32_t data_size) const { + return data_size > kDedicatedDataLimit && IsDeduplicationEnabled(); +} + void GeneratedCodeCache::SetLastUsedTimeForTest( const GURL& resource_url, const GURL& origin_lock, @@ -886,7 +926,7 @@ &GeneratedCodeCache::OpenCompleteForSetLastUsedForTest, weak_ptr_factory_.GetWeakPtr(), time, std::move(split.first)); - std::string key = GetCacheKey(resource_url, origin_lock, nik); + std::string key = GetCacheKey(resource_url, origin_lock, nik, cache_type_); disk_cache::EntryResult result = backend_->OpenEntry(key, net::LOWEST, std::move(callback)); if (result.net_error() != net::ERR_IO_PENDING) {
diff --git a/content/browser/code_cache/generated_code_cache.h b/content/browser/code_cache/generated_code_cache.h index de5c9ee8..1651255 100644 --- a/content/browser/code_cache/generated_code_cache.h +++ b/content/browser/code_cache/generated_code_cache.h
@@ -50,7 +50,21 @@ // Cache type. Used for collecting statistics for JS and Wasm in separate // buckets. - enum CodeCacheType { kJavaScript, kWebAssembly }; + enum CodeCacheType { + // JavaScript from http(s) pages. + kJavaScript, + + // WebAssembly from http(s) pages. This cache allows more total size and + // more size per item than the JavaScript cache, since some + // WebAssembly programs are very large. + kWebAssembly, + + // JavaScript from chrome and chrome-untrusted pages. The resource URLs are + // limited to only those fetched via chrome and chrome-untrusted schemes. + // The cache size is limited to disk_cache::kMaxWebUICodeCacheSize. + // Deduplication of very large items is disabled in this cache. + kWebUIJavaScript, + }; // Used for collecting statistics about cache behaviour. enum CacheEntryStatus { @@ -189,6 +203,20 @@ void CollectStatistics(GeneratedCodeCache::CacheEntryStatus status); + // Whether very large cache entries are deduplicated in this cache. + // Deduplication is disabled in the WebUI code cache, as an additional defense + // against privilege escalation in case there is a bug in the deduplication + // logic. + bool IsDeduplicationEnabled() const; + + bool ShouldDeduplicateEntry(uint32_t data_size) const; + + // Checks that the header data in the small buffer is valid. We may read cache + // entries that were written by a previous version of Chrome which uses + // obsolete formats. These reads should fail and be doomed as soon as + // possible. + bool IsValidHeader(scoped_refptr<net::IOBufferWithSize> small_buffer) const; + std::unique_ptr<disk_cache::Backend> backend_; BackendState backend_state_;
diff --git a/content/browser/code_cache/generated_code_cache_context.cc b/content/browser/code_cache/generated_code_cache_context.cc index 4be4f1b8..8e174d5 100644 --- a/content/browser/code_cache/generated_code_cache_context.cc +++ b/content/browser/code_cache/generated_code_cache_context.cc
@@ -62,8 +62,41 @@ void GeneratedCodeCacheContext::InitializeOnThread(const base::FilePath& path, int max_bytes) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + int max_bytes_js = max_bytes; + + if (base::FeatureList::IsEnabled(features::kWebUICodeCache)) { + int max_bytes_webui_js = max_bytes; + if (max_bytes > 0) { + // If a maximum was specified, then we should limit the total JS bytecode, + // both from WebUI and from open web sites, to max_bytes. The larger + // portion by far should be reserved for open web sites. + const int kMaxWebUIPercent = 2; + max_bytes_webui_js = std::min(max_bytes * kMaxWebUIPercent / 100, + disk_cache::kMaxWebUICodeCacheSize); + + // The rest is left over for open web JS. + max_bytes_js = max_bytes - max_bytes_webui_js; + DCHECK_GT(max_bytes_js, max_bytes_webui_js); + + // Specifying a maximum size of zero means to use heuristics based on + // available disk size, which would be the opposite of our intent if the + // specified number was so small that the division above truncated to + // zero. + if (max_bytes_webui_js == 0) { + max_bytes_webui_js = 1; + } + } + + generated_webui_js_code_cache_ = { + new GeneratedCodeCache( + path.AppendASCII("webui_js"), max_bytes_webui_js, + GeneratedCodeCache::CodeCacheType::kWebUIJavaScript), + base::OnTaskRunnerDeleter(task_runner_)}; + } + generated_js_code_cache_ = { - new GeneratedCodeCache(path.AppendASCII("js"), max_bytes, + new GeneratedCodeCache(path.AppendASCII("js"), max_bytes_js, GeneratedCodeCache::CodeCacheType::kJavaScript), base::OnTaskRunnerDeleter(task_runner_)}; @@ -77,6 +110,7 @@ DCHECK_CURRENTLY_ON(BrowserThread::UI); generated_js_code_cache_.reset(); generated_wasm_code_cache_.reset(); + generated_webui_js_code_cache_.reset(); } GeneratedCodeCache* GeneratedCodeCacheContext::generated_js_code_cache() const { @@ -90,6 +124,12 @@ return generated_wasm_code_cache_.get(); } +GeneratedCodeCache* GeneratedCodeCacheContext::generated_webui_js_code_cache() + const { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + return generated_webui_js_code_cache_.get(); +} + GeneratedCodeCacheContext::~GeneratedCodeCacheContext() = default; } // namespace content
diff --git a/content/browser/code_cache/generated_code_cache_context.h b/content/browser/code_cache/generated_code_cache_context.h index 2166ec0..77a5b70 100644 --- a/content/browser/code_cache/generated_code_cache_context.h +++ b/content/browser/code_cache/generated_code_cache_context.h
@@ -45,6 +45,7 @@ // Call on the code cache thread to get the code cache instances. GeneratedCodeCache* generated_js_code_cache() const; GeneratedCodeCache* generated_wasm_code_cache() const; + GeneratedCodeCache* generated_webui_js_code_cache() const; private: friend class base::RefCountedThreadSafe<GeneratedCodeCacheContext>; @@ -57,6 +58,9 @@ generated_js_code_cache_{nullptr, base::OnTaskRunnerDeleter(nullptr)}; std::unique_ptr<GeneratedCodeCache, base::OnTaskRunnerDeleter> generated_wasm_code_cache_{nullptr, base::OnTaskRunnerDeleter(nullptr)}; + std::unique_ptr<GeneratedCodeCache, base::OnTaskRunnerDeleter> + generated_webui_js_code_cache_{nullptr, + base::OnTaskRunnerDeleter(nullptr)}; scoped_refptr<base::SequencedTaskRunner> task_runner_; SEQUENCE_CHECKER(sequence_checker_);
diff --git a/content/browser/prerender/prerender_browsertest.cc b/content/browser/prerender/prerender_browsertest.cc index 4dfccdd8..d24a9f0 100644 --- a/content/browser/prerender/prerender_browsertest.cc +++ b/content/browser/prerender/prerender_browsertest.cc
@@ -2905,7 +2905,7 @@ // Navigate to an initial page. ASSERT_TRUE(NavigateToURL(shell(), kInitialUrl)); - // Initialize a MockWebContentsObserver and ensure that DidFinishLoad is not + // Initialize a MockWebContentsObserver and ensure that DidFailLoad is not // invoked inside prerender frame tree. testing::NiceMock<MockWebContentsObserver> observer(shell()->web_contents()); EXPECT_CALL(observer, DidFailLoad(testing::_, testing::_, testing::_)) @@ -3063,6 +3063,91 @@ EXPECT_EQ(shell()->web_contents()->GetLastCommittedURL(), kPrerenderingUrl); } +// Test that WebContentsObserver::DidFinishLoad is not invoked when the page +// gets loaded while prerendering but it is deferred and invoked on prerender +// activation. +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, + DidFinishLoadInvokedAfterActivation) { + const GURL kInitialUrl = GetUrl("/empty.html"); + const GURL kPrerenderingUrl = GetUrl("/simple_page.html"); + + // Navigate to an initial page. + ASSERT_TRUE(NavigateToURL(shell(), kInitialUrl)); + + // Initialize a MockWebContentsObserver and ensure that DidFinishLoad is not + // invoked while prerendering. + testing::NiceMock<MockWebContentsObserver> observer(shell()->web_contents()); + EXPECT_CALL(observer, DidFinishLoad(testing::_, testing::_)).Times(0); + + // Start a prerender. + int prerender_host_id = AddPrerender(kPrerenderingUrl); + RenderFrameHost* prerender_frame_host = + GetPrerenderedMainFrameHost(prerender_host_id); + EXPECT_EQ(prerender_frame_host->GetFramesInSubtree().size(), 1u); + + // Verify and clear all expectations on the mock observer before setting new + // ones. + testing::Mock::VerifyAndClearExpectations(&observer); + testing::InSequence s; + + // Activate the prerendered page. This should result in invoking DidFinishLoad + // once for root RenderFrameHost `prerender_frame_host`. + { + // Verify that DidFinishNavigation is invoked before DidFinishLoad on + // activation. + EXPECT_CALL(observer, DidFinishNavigation(testing::_)); + + EXPECT_CALL(observer, + DidFinishLoad(prerender_frame_host, kPrerenderingUrl)); + } + NavigatePrimaryPage(kPrerenderingUrl); + EXPECT_EQ(web_contents()->GetURL(), kPrerenderingUrl); +} + +// Test that WebContentsObserver::DidFinishLoad is not invoked when the page +// gets loaded while prerendering but it is deferred and invoked on prerender +// activation for both main and sub-frames. +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, + DidFinishLoadInvokedAfterActivationWithSubframes) { + const GURL kInitialUrl = GetUrl("/empty.html"); + const GURL kPrerenderingUrl = GetUrl("/page_with_iframe.html"); + + // Navigate to an initial page. + ASSERT_TRUE(NavigateToURL(shell(), kInitialUrl)); + + // Initialize a MockWebContentsObserver and ensure that DidFinishLoad is not + // invoked while prerendering. + testing::NiceMock<MockWebContentsObserver> observer(shell()->web_contents()); + testing::InSequence s; + EXPECT_CALL(observer, DidFinishLoad(testing::_, testing::_)).Times(0); + + // Start a prerender. + int prerender_host_id = AddPrerender(kPrerenderingUrl); + RenderFrameHost* prerender_main_frame_host = + GetPrerenderedMainFrameHost(prerender_host_id); + RenderFrameHost* child_frame = ChildFrameAt(prerender_main_frame_host, 0); + EXPECT_EQ(prerender_main_frame_host->GetFramesInSubtree().size(), 2u); + + // Verify and clear all expectations on the mock observer before setting new + // ones. + testing::Mock::VerifyAndClearExpectations(&observer); + + // Activate the prerendered page. This should result in invoking DidFinishLoad + // twice once for root and once for child RenderFrameHosts. + { + // Verify that DidFinishNavigation is invoked before DidFinishLoad. + EXPECT_CALL(observer, DidFinishNavigation(testing::_)); + + EXPECT_CALL(observer, + DidFinishLoad(prerender_main_frame_host, kPrerenderingUrl)); + + EXPECT_CALL(observer, + DidFinishLoad(child_frame, child_frame->GetLastCommittedURL())); + } + NavigatePrimaryPage(kPrerenderingUrl); + EXPECT_EQ(web_contents()->GetURL(), kPrerenderingUrl); +} + // Tests that cross-origin subframe navigations in a prerendered page are // deferred even if they start after the a navigation starts that will // attempt to activate the prerendered page.
diff --git a/content/browser/renderer_host/code_cache_host_impl.cc b/content/browser/renderer_host/code_cache_host_impl.cc index c4a0002..e75f1bbe 100644 --- a/content/browser/renderer_host/code_cache_host_impl.cc +++ b/content/browser/renderer_host/code_cache_host_impl.cc
@@ -35,22 +35,82 @@ namespace { +enum class Operation { + kRead, + kWrite, +}; + +bool CheckSecurityForAccessingCodeCacheData(const GURL& resource_url, + int render_process_id, + Operation operation) { + ProcessLock process_lock = + ChildProcessSecurityPolicyImpl::GetInstance()->GetProcessLock( + render_process_id); + + // Code caching is only allowed for http(s) and chrome/chrome-untrusted + // scripts. Furthermore, there is no way for http(s) pages to load chrome or + // chrome-untrusted scripts, so any http(s) page attempting to store data + // about a chrome or chrome-untrusted script would be an indication of + // suspicious activity. + if (resource_url.SchemeIs(content::kChromeUIScheme) || + resource_url.SchemeIs(content::kChromeUIUntrustedScheme)) { + if (!process_lock.is_locked_to_site()) { + // We can't tell for certain whether this renderer is doing something + // malicious, but we don't trust it enough to store data. + return false; + } + if (!process_lock.matches_scheme(content::kChromeUIScheme) && + !process_lock.matches_scheme(content::kChromeUIUntrustedScheme)) { + if (operation == Operation::kWrite) { + mojo::ReportBadMessage("Non-WebUI pages cannot cache WebUI code"); + } + return false; + } + return true; + } + if (resource_url.SchemeIsHTTPOrHTTPS()) { + if (process_lock.matches_scheme(content::kChromeUIScheme) || + process_lock.matches_scheme(content::kChromeUIUntrustedScheme)) { + // It is possible for WebUI pages to include open-web content, but such + // usage is rare and we've decided that reasoning about security is easier + // if the WebUI code cache includes only WebUI scripts. + return false; + } + return true; + } + + if (operation == Operation::kWrite) { + mojo::ReportBadMessage("Invalid URL scheme for code cache."); + } + return false; +} + // 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 // renderer that will be used as the secondary key for the code cache. // The secondary key is: +// Case 0. absl::nullopt if the resource URL or origin lock have unsupported +// schemes, or if they represent potentially dangerous combinations such as +// WebUI code in an open-web page. // Case 1. an empty GURL if the render process is not locked to an origin. In // this case, code cache uses |resource_url| as the key. // Case 2. a absl::nullopt, if the origin lock is opaque (for ex: browser // initiated navigation to a data: URL). In these cases, the code should not be // cached since the serialized value of opaque origins should not be used as a // key. -// Case 3: origin_lock if the scheme of origin_lock is Http/Https/chrome. +// Case 3: origin_lock if the scheme of origin_lock is +// Http/Https/chrome/chrome-untrusted. // Case 4. absl::nullopt otherwise. absl::optional<GURL> GetSecondaryKeyForCodeCache(const GURL& resource_url, - int render_process_id) { - if (!resource_url.is_valid() || !resource_url.SchemeIsHTTPOrHTTPS()) + int render_process_id, + Operation operation) { + // Case 0: check for invalid schemes. + if (!CheckSecurityForAccessingCodeCacheData(resource_url, render_process_id, + operation)) { + return absl::nullopt; + } + if (!resource_url.is_valid()) return absl::nullopt; ProcessLock process_lock = @@ -79,10 +139,11 @@ // file:// URLs will have a "file:" process lock and would thus share a // cache across all file:// URLs. That would likely be ok for security, but // since this case is not performance sensitive we will keep things simple and - // limit the cache to http/https/chrome processes. + // limit the cache to http/https/chrome/chrome-untrusted processes. if (process_lock.matches_scheme(url::kHttpScheme) || process_lock.matches_scheme(url::kHttpsScheme) || - process_lock.matches_scheme(content::kChromeUIScheme)) { + process_lock.matches_scheme(content::kChromeUIScheme) || + process_lock.matches_scheme(content::kChromeUIUntrustedScheme)) { return process_lock.lock_url(); } @@ -250,11 +311,6 @@ const GURL& url, base::Time expected_response_time, mojo_base::BigBuffer data) { - if (!url.SchemeIsHTTPOrHTTPS()) { - mojo::ReportBadMessage("Invalid URL scheme for code cache."); - return; - } - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); GeneratedCodeCache* code_cache = GetCodeCache(cache_type); @@ -262,7 +318,7 @@ return; absl::optional<GURL> origin_lock = - GetSecondaryKeyForCodeCache(url, render_process_id_); + GetSecondaryKeyForCodeCache(url, render_process_id_, Operation::kWrite); if (!origin_lock) return; @@ -281,7 +337,7 @@ } absl::optional<GURL> origin_lock = - GetSecondaryKeyForCodeCache(url, render_process_id_); + GetSecondaryKeyForCodeCache(url, render_process_id_, Operation::kRead); if (!origin_lock) { std::move(callback).Run(base::Time(), std::vector<uint8_t>()); return; @@ -303,7 +359,7 @@ return; absl::optional<GURL> origin_lock = - GetSecondaryKeyForCodeCache(url, render_process_id_); + GetSecondaryKeyForCodeCache(url, render_process_id_, Operation::kWrite); if (!origin_lock) return; @@ -332,6 +388,23 @@ if (!generated_code_cache_context_) return nullptr; + ProcessLock process_lock = + ChildProcessSecurityPolicyImpl::GetInstance()->GetProcessLock( + render_process_id_); + + // To minimize the chance of any cache bug resulting in privilege escalation + // from an ordinary web page to trusted WebUI, we use a completely separate + // GeneratedCodeCache instance for WebUI pages. + if (process_lock.matches_scheme(content::kChromeUIScheme) || + process_lock.matches_scheme(content::kChromeUIUntrustedScheme)) { + if (cache_type == blink::mojom::CodeCacheType::kJavascript) { + return generated_code_cache_context_->generated_webui_js_code_cache(); + } + + // WebAssembly in WebUI pages is not supported due to no current usage. + return nullptr; + } + if (cache_type == blink::mojom::CodeCacheType::kJavascript) return generated_code_cache_context_->generated_js_code_cache();
diff --git a/content/browser/renderer_host/document_service_base_browsertest.cc b/content/browser/renderer_host/document_service_base_browsertest.cc deleted file mode 100644 index e518e22..0000000 --- a/content/browser/renderer_host/document_service_base_browsertest.cc +++ /dev/null
@@ -1,151 +0,0 @@ -// Copyright 2021 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "base/bind.h" -#include "content/browser/renderer_host/document_service_base_echo_impl.h" -#include "content/public/browser/document_service_base.h" -#include "content/public/browser/render_frame_host.h" -#include "content/public/browser/web_contents.h" -#include "content/public/common/content_features.h" -#include "content/public/test/browser_test.h" -#include "content/public/test/content_browser_test.h" -#include "content/public/test/content_browser_test_utils.h" -#include "content/public/test/prerender_test_util.h" -#include "content/public/test/test_utils.h" -#include "content/shell/browser/shell.h" -#include "content/test/content_browser_test_utils_internal.h" -#include "content/test/echo.test-mojom.h" -#include "mojo/public/cpp/bindings/remote.h" -#include "net/dns/mock_host_resolver.h" -#include "net/test/embedded_test_server/embedded_test_server.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "url/gurl.h" - -namespace content { - -class DocumentServiceBaseBrowserTest : public ContentBrowserTest { - public: - DocumentServiceBaseBrowserTest() = default; - ~DocumentServiceBaseBrowserTest() override = default; - - void SetUpOnMainThread() override { - host_resolver()->AddRule("*", "127.0.0.1"); - ASSERT_TRUE(test_server_handle_ = - embedded_test_server()->StartAndReturnHandle()); - } - - WebContents* web_contents() const { return shell()->web_contents(); } - - private: - net::test_server::EmbeddedTestServerHandle test_server_handle_; -}; - -class DocumentServiceBasePrerenderingBrowserTest - : public DocumentServiceBaseBrowserTest { - public: - DocumentServiceBasePrerenderingBrowserTest() - : prerender_helper_(base::BindRepeating( - &DocumentServiceBasePrerenderingBrowserTest::web_contents, - base::Unretained(this))) {} - ~DocumentServiceBasePrerenderingBrowserTest() override = default; - - void SetUpOnMainThread() override { - prerender_helper_.SetUpOnMainThread(embedded_test_server()); - DocumentServiceBaseBrowserTest::SetUpOnMainThread(); - } - - test::PrerenderTestHelper* prerender_helper() { return &prerender_helper_; } - - private: - test::PrerenderTestHelper prerender_helper_; -}; - -// Tests that DocumentServiceBase is not destroyed on prerendering activation. -IN_PROC_BROWSER_TEST_F(DocumentServiceBasePrerenderingBrowserTest, - NotClosedInPrerenderingActivation) { - const GURL kInitialUrl = embedded_test_server()->GetURL("/empty.html"); - const GURL kPrerenderingUrl = embedded_test_server()->GetURL("/title1.html"); - - // Navigate to an initial page. - ASSERT_TRUE(NavigateToURL(shell(), kInitialUrl)); - - int host_id = prerender_helper()->AddPrerender(kPrerenderingUrl); - RenderFrameHost* prerendered_frame_host = - prerender_helper()->GetPrerenderedMainFrameHost(host_id); - // We should disable proactive BrowsingInstance swap for the navigation below - // to ensure that the speculative RFH is going to use the same - // BrowsingInstance as the original RFH and it's not replaced on navigation. - DisableProactiveBrowsingInstanceSwapFor(prerendered_frame_host); - - mojo::Remote<mojom::Echo> echo_remote; - bool echo_deleted = false; - new DocumentServiceBaseEchoImpl( - prerendered_frame_host, echo_remote.BindNewPipeAndPassReceiver(), - base::BindOnce([](bool* deleted) { *deleted = true; }, &echo_deleted)); - - // Activate the prerendered page. - prerender_helper()->NavigatePrimaryPage(kPrerenderingUrl); - // DocumentServiceBase should not be destroyed. - EXPECT_FALSE(echo_deleted); - - ASSERT_TRUE(NavigateToURL(shell(), kInitialUrl)); - // It should be destroyed on navigation. - EXPECT_TRUE(echo_deleted); -} - -class DocumentServiceBaseBFCacheBrowserTest - : public DocumentServiceBaseBrowserTest { - public: - DocumentServiceBaseBFCacheBrowserTest() { - feature_list_.InitWithFeaturesAndParameters( - {{features::kBackForwardCache, - {{"TimeToLiveInBackForwardCacheInSeconds", "3600"}, - {"enable_same_site", "true"}}}}, - {features::kBackForwardCacheMemoryControls}); - } - ~DocumentServiceBaseBFCacheBrowserTest() override = default; - - private: - base::test::ScopedFeatureList feature_list_; -}; - -IN_PROC_BROWSER_TEST_F(DocumentServiceBaseBFCacheBrowserTest, - DocumentServiceBase) { - GURL url_a(embedded_test_server()->GetURL("a.com", "/title1.html")); - GURL url_b(embedded_test_server()->GetURL("b.com", "/title1.html")); - - // 1) Navigate to A. - ASSERT_TRUE(NavigateToURL(shell(), url_a)); - RenderFrameHost* rfh_a = - web_contents()->GetMainFrame(); // current_frame_host(); - RenderFrameDeletedObserver delete_observer_rfh_a(rfh_a); - - mojo::Remote<mojom::Echo> echo_remote; - bool echo_deleted = false; - new DocumentServiceBaseEchoImpl( - rfh_a, echo_remote.BindNewPipeAndPassReceiver(), - base::BindOnce([](bool* deleted) { *deleted = true; }, &echo_deleted)); - - // 2) Navigate to B. - ASSERT_TRUE(NavigateToURL(shell(), url_b)); - - // - Page A should be in the cache. - ASSERT_FALSE(delete_observer_rfh_a.deleted()); - EXPECT_EQ(rfh_a->GetLifecycleState(), - RenderFrameHost::LifecycleState::kInBackForwardCache); - EXPECT_FALSE(echo_deleted); - - // 3) Go back. - web_contents()->GetController().GoBack(); - EXPECT_TRUE(WaitForLoadStop(shell()->web_contents())); - EXPECT_FALSE(echo_deleted); - - // 4) Prevent caching and navigate to B. - DisableBFCacheForRFHForTesting(rfh_a); - ASSERT_TRUE(NavigateToURL(shell(), url_b)); - delete_observer_rfh_a.WaitUntilDeleted(); - EXPECT_TRUE(echo_deleted); -} - -} // namespace content
diff --git a/content/browser/renderer_host/document_service_base_echo_impl.cc b/content/browser/renderer_host/document_service_base_echo_impl.cc deleted file mode 100644 index cc3fcf1..0000000 --- a/content/browser/renderer_host/document_service_base_echo_impl.cc +++ /dev/null
@@ -1,25 +0,0 @@ -// Copyright 2021 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "content/browser/renderer_host/document_service_base_echo_impl.h" - -namespace content { - -DocumentServiceBaseEchoImpl::DocumentServiceBaseEchoImpl( - RenderFrameHost* render_frame_host, - mojo::PendingReceiver<mojom::Echo> receiver, - base::OnceClosure destruction_cb) - : DocumentServiceBase(render_frame_host, std::move(receiver)), - destruction_cb_(std::move(destruction_cb)) {} - -DocumentServiceBaseEchoImpl::~DocumentServiceBaseEchoImpl() { - std::move(destruction_cb_).Run(); -} - -void DocumentServiceBaseEchoImpl::EchoString(const std::string& input, - EchoStringCallback callback) { - std::move(callback).Run(input); -} - -} // namespace content
diff --git a/content/browser/renderer_host/document_service_base_echo_impl.h b/content/browser/renderer_host/document_service_base_echo_impl.h deleted file mode 100644 index e469d79..0000000 --- a/content/browser/renderer_host/document_service_base_echo_impl.h +++ /dev/null
@@ -1,35 +0,0 @@ -// Copyright 2021 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CONTENT_BROWSER_RENDERER_HOST_DOCUMENT_SERVICE_BASE_ECHO_IMPL_H_ -#define CONTENT_BROWSER_RENDERER_HOST_DOCUMENT_SERVICE_BASE_ECHO_IMPL_H_ - -#include "base/bind.h" -#include "content/public/browser/document_service_base.h" -#include "content/test/echo.test-mojom.h" -#include "mojo/public/cpp/bindings/pending_receiver.h" - -namespace content { - -class RenderFrameHost; - -// Subclass of DocumentServiceBase for test. -class DocumentServiceBaseEchoImpl final - : public DocumentServiceBase<mojom::Echo> { - public: - DocumentServiceBaseEchoImpl(RenderFrameHost* render_frame_host, - mojo::PendingReceiver<mojom::Echo> receiver, - base::OnceClosure destruction_cb); - ~DocumentServiceBaseEchoImpl() final; - - // mojom::Echo implementation - void EchoString(const std::string& input, EchoStringCallback callback) final; - - private: - base::OnceClosure destruction_cb_; -}; - -} // namespace content - -#endif // CONTENT_BROWSER_RENDERER_HOST_DOCUMENT_SERVICE_BASE_ECHO_IMPL_H_
diff --git a/content/browser/renderer_host/document_service_base_unittest.cc b/content/browser/renderer_host/document_service_base_unittest.cc index db8755d4..5489a67 100644 --- a/content/browser/renderer_host/document_service_base_unittest.cc +++ b/content/browser/renderer_host/document_service_base_unittest.cc
@@ -6,7 +6,6 @@ #include "base/bind.h" #include "base/run_loop.h" -#include "content/browser/renderer_host/document_service_base_echo_impl.h" #include "content/public/browser/back_forward_cache.h" #include "content/public/browser/render_frame_host.h" #include "content/public/browser/web_contents.h" @@ -14,6 +13,7 @@ #include "content/public/test/test_renderer_host.h" #include "content/test/echo.test-mojom.h" #include "content/test/test_render_frame_host.h" +#include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/remote.h" #include "url/gurl.h" @@ -26,6 +26,25 @@ const char kFooOrigin[] = "https://foo.com"; const char kBarOrigin[] = "https://bar.com"; +// Subclass of DocumentServiceBase for test. +class EchoImpl final : public DocumentServiceBase<mojom::Echo> { + public: + EchoImpl(RenderFrameHost* render_frame_host, + mojo::PendingReceiver<mojom::Echo> receiver, + base::OnceClosure destruction_cb) + : DocumentServiceBase(render_frame_host, std::move(receiver)), + destruction_cb_(std::move(destruction_cb)) {} + ~EchoImpl() final { std::move(destruction_cb_).Run(); } + + // mojom::Echo implementation + void EchoString(const std::string& input, EchoStringCallback callback) final { + std::move(callback).Run(input); + } + + private: + base::OnceClosure destruction_cb_; +}; + // Help functions to manipulate RenderFrameHosts. // Simulates navigation and returns the final RenderFrameHost. @@ -63,10 +82,9 @@ void CreateEchoImpl(RenderFrameHost* rfh) { DCHECK(!is_echo_impl_alive_); - new DocumentServiceBaseEchoImpl( - rfh, echo_remote_.BindNewPipeAndPassReceiver(), - base::BindOnce(&DocumentServiceBaseTest::OnEchoImplDestructed, - base::Unretained(this))); + new EchoImpl(rfh, echo_remote_.BindNewPipeAndPassReceiver(), + base::BindOnce(&DocumentServiceBaseTest::OnEchoImplDestructed, + base::Unretained(this))); is_echo_impl_alive_ = true; }
diff --git a/content/browser/renderer_host/navigation_request.h b/content/browser/renderer_host/navigation_request.h index 762dd0d..97a112e9 100644 --- a/content/browser/renderer_host/navigation_request.h +++ b/content/browser/renderer_host/navigation_request.h
@@ -872,7 +872,7 @@ // Whether this navigation is activating an existing page (e.g. served from // the BackForwardCache or Prerender) - bool IsPageActivation() const override; + bool IsPageActivation() const; // See comments for |prerender_navigation_entry_|. void SetPrerenderNavigationEntry(
diff --git a/content/browser/renderer_host/render_frame_host_delegate.h b/content/browser/renderer_host/render_frame_host_delegate.h index ffd71a5..ac89c93d 100644 --- a/content/browser/renderer_host/render_frame_host_delegate.h +++ b/content/browser/renderer_host/render_frame_host_delegate.h
@@ -147,7 +147,7 @@ const GURL& initiator_url, blink::mojom::NavigationBlockedReason reason) {} - // Notifies the browser that a frame finished loading. + // Called when blink.mojom.LocalFrameHost::DidFinishLoad() is invoked. virtual void OnDidFinishLoad(RenderFrameHostImpl* render_frame_host, const GURL& url) {}
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc index 847d9702..5ddab42 100644 --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -1447,6 +1447,9 @@ GetSiteInstance()->IncrementActiveFrameCount(); if (parent_) { + // All frames in a frame tree should use the same storage partition. + CHECK_EQ(parent_->GetStoragePartition(), GetStoragePartition()); + cross_origin_embedder_policy_ = parent_->cross_origin_embedder_policy(); // New child frames should inherit the nav_entry_id of their parent. @@ -3289,7 +3292,6 @@ void RenderFrameHostImpl::OnAudibleStateChanged(bool is_audible) { DCHECK_NE(is_audible_, is_audible); if (is_audible) { - DCHECK_NE(lifecycle_state(), LifecycleStateImpl::kPrerendering); GetProcess()->OnMediaStreamAdded(); } else { GetProcess()->OnMediaStreamRemoved(); @@ -3960,6 +3962,7 @@ NavigationRequest* committing_navigation_request, mojom::DidCommitProvisionalLoadParamsPtr params) { DCHECK(committing_navigation_request->IsPageActivation()); + DCHECK(is_main_frame()); auto request = navigation_requests_.find(committing_navigation_request); CHECK(request != navigation_requests_.end()); @@ -3975,8 +3978,20 @@ DidCommitNavigationInternal(std::move(owned_request), std::move(params), /*same_document_params=*/nullptr); - // The page is already loaded since it came from the cache, so fire the stop - // loading event. + // If DidFinishLoad occurred pre-activation and was deferred to be dispatched + // after activation, dispatch it now. + if (is_prerender_page_activation) { + ForEachRenderFrameHost(base::BindRepeating([](RenderFrameHostImpl* rfh) { + rfh->MaybeDispatchDidFinishLoadOnPrerenderActivation(); + })); + } + + // Try to dispatch DidStopLoading event (note that + // RenderFrameHostImpl::DidStopLoading implementation won't dispatch the event + // if the page is still loading). We dispatch it here as it hasn't been + // dispatched pre-activation because the back-forward cache page is already + // loaded, whereas, for initial prerendering navigation, prerendered page + // might still be loading. DidStopLoading(); if (is_prerender_page_activation) { @@ -4211,6 +4226,21 @@ SetLifecycleStateToReadyToBeDeleted(); } +void RenderFrameHostImpl::MaybeDispatchDidFinishLoadOnPrerenderActivation() { + auto* document_data = document_associated_data_.get(); + + // Don't dispatch notification if DidFinishLoad has not yet been invoked for + // `rfh` i.e., when the url is nullopt. + if (!document_data->pending_did_finish_load_url_for_prerendering) + return; + + delegate_->OnDidFinishLoad( + this, *document_data->pending_did_finish_load_url_for_prerendering); + + // Set to nullopt to avoid calling DidFinishLoad twice. + document_data->pending_did_finish_load_url_for_prerendering.reset(); +} + void RenderFrameHostImpl::SwapOuterDelegateFrame(RenderFrameProxyHost* proxy) { GetMojomFrameInRenderer()->Unload( proxy->GetRoutingID(), /*is_loading=*/false, @@ -5334,6 +5364,15 @@ } void RenderFrameHostImpl::DidFinishLoad(const GURL& validated_url) { + // In case of prerendering, we dispatch DidFinishLoad on activation. This is + // done to avoid notifying observers about a load event triggered from a + // inactive RenderFrameHost. + if (lifecycle_state() == LifecycleStateImpl::kPrerendering) { + document_associated_data_->pending_did_finish_load_url_for_prerendering = + validated_url; + return; + } + delegate_->OnDidFinishLoad(this, validated_url); }
diff --git a/content/browser/renderer_host/render_frame_host_impl.h b/content/browser/renderer_host/render_frame_host_impl.h index e4140b9d..40967ba 100644 --- a/content/browser/renderer_host/render_frame_host_impl.h +++ b/content/browser/renderer_host/render_frame_host_impl.h
@@ -3098,6 +3098,11 @@ // renderer. bool ShouldWaitForUnloadHandlers() const; + // Prerender2: + // Dispatches DidFinishLoad if it occurred pre-activation and was deferred to + // be dispatched after activation. + void MaybeDispatchDidFinishLoadOnPrerenderActivation(); + // The RenderViewHost that this RenderFrameHost is associated with. // // It is kept alive as long as any RenderFrameHosts or RenderFrameProxyHosts @@ -3781,6 +3786,14 @@ // The Page object associated with the main document. It is nullptr for // subframes. std::unique_ptr<PageImpl> owned_page; + + // Prerender2: + // + // The URL that `blink.mojom.LocalFrameHost::DidFinishLoad()` passed to + // DidFinishLoad, nullopt if DidFinishLoad wasn't called for this document + // or this document is not in prerendering. This is used to defer and + // dispatch DidFinishLoad notification on prerender activation. + absl::optional<GURL> pending_did_finish_load_url_for_prerendering; }; std::unique_ptr<DocumentAssociatedData> document_associated_data_;
diff --git a/content/browser/storage_partition_impl_unittest.cc b/content/browser/storage_partition_impl_unittest.cc index 2ca2212..63dddbb 100644 --- a/content/browser/storage_partition_impl_unittest.cc +++ b/content/browser/storage_partition_impl_unittest.cc
@@ -401,7 +401,7 @@ explicit RemoveCodeCacheTester(GeneratedCodeCacheContext* code_cache_context) : code_cache_context_(code_cache_context) {} - enum Cache { kJs, kWebAssembly }; + enum Cache { kJs, kWebAssembly, kWebUiJs }; bool ContainsEntry(Cache cache, const GURL& url, const GURL& origin_lock) { entry_exists_ = false; @@ -478,8 +478,10 @@ GeneratedCodeCache* GetCache(Cache cache) { if (cache == kJs) return code_cache_context_->generated_js_code_cache(); - else + else if (cache == kWebAssembly) return code_cache_context_->generated_wasm_code_cache(); + else + return code_cache_context_->generated_webui_js_code_cache(); } void FetchEntryCallback(base::OnceClosure quit, @@ -1702,6 +1704,56 @@ base::RunLoop().RunUntilIdle(); } +TEST_F(StoragePartitionImplTest, ClearWebUICodeCache) { + base::test::ScopedFeatureList features; + features.InitAndEnableFeature(features::kWebUICodeCache); + + const GURL kResourceURL("chrome://host4/script.js"); + + StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( + browser_context()->GetDefaultStoragePartition()); + // Ensure code cache is initialized. + base::RunLoop().RunUntilIdle(); + EXPECT_TRUE(partition->GetGeneratedCodeCacheContext() != nullptr); + + RemoveCodeCacheTester tester(partition->GetGeneratedCodeCacheContext()); + + GURL origin = GURL("chrome://host1:1/"); + std::string data("SomeData"); + tester.AddEntry(RemoveCodeCacheTester::kWebUiJs, kResourceURL, origin, data); + EXPECT_TRUE(tester.ContainsEntry(RemoveCodeCacheTester::kWebUiJs, + kResourceURL, origin)); + EXPECT_EQ(tester.received_data(), data); + + base::RunLoop run_loop; + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, + base::BindOnce(&ClearCodeCache, partition, base::Time(), base::Time(), + base::RepeatingCallback<bool(const GURL&)>(), &run_loop)); + run_loop.Run(); + + EXPECT_FALSE(tester.ContainsEntry(RemoveCodeCacheTester::kWebUiJs, + kResourceURL, origin)); + + // Make sure there isn't a second invalid callback sitting in the queue. + // (this used to be a bug). + base::RunLoop().RunUntilIdle(); +} + +TEST_F(StoragePartitionImplTest, WebUICodeCacheDisabled) { + base::test::ScopedFeatureList features; + features.InitAndDisableFeature(features::kWebUICodeCache); + + StoragePartitionImpl* partition = static_cast<StoragePartitionImpl*>( + browser_context()->GetDefaultStoragePartition()); + // Ensure code cache is initialized. + base::RunLoop().RunUntilIdle(); + EXPECT_TRUE(partition->GetGeneratedCodeCacheContext() != nullptr); + EXPECT_EQ(partition->GetGeneratedCodeCacheContext() + ->generated_webui_js_code_cache(), + nullptr); +} + TEST_F(StoragePartitionImplTest, ClearCodeCacheIncognito) { browser_context()->set_is_off_the_record(true);
diff --git a/content/browser/webui/DEPS b/content/browser/webui/DEPS index 6f0c4d64..32c7fc1e 100644 --- a/content/browser/webui/DEPS +++ b/content/browser/webui/DEPS
@@ -1,4 +1,4 @@ include_rules = [ "+components/crash/content/browser/error_reporting", - "+ui/chromeos/colors", + "+ui/chromeos/styles", ]
diff --git a/content/browser/webui/shared_resources_data_source.cc b/content/browser/webui/shared_resources_data_source.cc index 9ac05fc0..e9739572 100644 --- a/content/browser/webui/shared_resources_data_source.cc +++ b/content/browser/webui/shared_resources_data_source.cc
@@ -28,7 +28,7 @@ #include "base/feature_list.h" #include "chromeos/grit/chromeos_resources.h" #include "chromeos/grit/chromeos_resources_map.h" -#include "ui/chromeos/colors/cros_colors.h" +#include "ui/chromeos/styles/cros_styles.h" #endif namespace content { @@ -130,7 +130,7 @@ source->AddString( "crosColorsDebugOverrides", base::FeatureList::IsEnabled(ash::features::kSemanticColorsDebugOverride) - ? cros_colors::kDebugOverrideCssString + ? cros_styles::kDebugOverrideCssString : ""); #endif // !BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/content/public/browser/document_service_base.h b/content/public/browser/document_service_base.h index e92c412..a7d9457f 100644 --- a/content/public/browser/document_service_base.h +++ b/content/public/browser/document_service_base.h
@@ -20,6 +20,9 @@ namespace content { +class NavigationHandle; +class RenderFrameHost; + // Base class for mojo interface implementations tied to a document's lifetime. // The service will be destroyed when any of the following happens: // 1. mojo interface connection error happened, @@ -83,16 +86,11 @@ if (!navigation_handle->HasCommitted() || navigation_handle->IsSameDocument() || - navigation_handle->IsPageActivation()) { + navigation_handle->IsServedFromBackForwardCache()) { return; } if (navigation_handle->GetRenderFrameHost() == render_frame_host_) { - // DocumentServiceBase is destroyed either when RenderFrameHost is - // destroyed (covered by RenderFrameDeleted) or when a new document - // commits in the same RenderFrameHost (covered by DidFinishNavigation). - // Only committed non-same-document non-bfcache non-prerendering - // activation navigations replace a document in existing RenderFrameHost. DVLOG(1) << __func__ << ": Close connection on navigation."; Close(); }
diff --git a/content/public/browser/navigation_handle.h b/content/public/browser/navigation_handle.h index e8f89b0..85025f2 100644 --- a/content/public/browser/navigation_handle.h +++ b/content/public/browser/navigation_handle.h
@@ -224,10 +224,6 @@ // Whether the navigation is restoring a page from back-forward cache. virtual bool IsServedFromBackForwardCache() = 0; - // Whether this navigation is activating an existing page (e.g. served from - // the BackForwardCache or Prerender) - virtual bool IsPageActivation() const = 0; - // Navigation control flow -------------------------------------------------- // The net error code if an error happened prior to commit. Otherwise it will
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc index b7ce579..80b6878 100644 --- a/content/public/common/content_features.cc +++ b/content/public/common/content_features.cc
@@ -982,6 +982,10 @@ const base::Feature kWebRtcUseGpuMemoryBufferVideoFrames{ "WebRTC-UseGpuMemoryBufferVideoFrames", base::FEATURE_ENABLED_BY_DEFAULT}; +// Enables code caching for scripts used on WebUI pages. +const base::Feature kWebUICodeCache{"WebUICodeCache", + base::FEATURE_DISABLED_BY_DEFAULT}; + // Enables report-only Trusted Types experiment on WebUIs const base::Feature kWebUIReportOnlyTrustedTypes{ "WebUIReportOnlyTrustedTypes", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h index 4f4114f..91f5dd9 100644 --- a/content/public/common/content_features.h +++ b/content/public/common/content_features.h
@@ -247,6 +247,7 @@ CONTENT_EXPORT extern const base::Feature kWebPayments; CONTENT_EXPORT extern const base::Feature kWebPaymentsMinimalUI; CONTENT_EXPORT extern const base::Feature kWebRtcUseGpuMemoryBufferVideoFrames; +CONTENT_EXPORT extern const base::Feature kWebUICodeCache; CONTENT_EXPORT extern const base::Feature kWebUIReportOnlyTrustedTypes; CONTENT_EXPORT extern const base::Feature kWebUsb; CONTENT_EXPORT extern const base::Feature kWebXr;
diff --git a/content/public/test/mock_navigation_handle.h b/content/public/test/mock_navigation_handle.h index 20b95c0..580a73c4 100644 --- a/content/public/test/mock_navigation_handle.h +++ b/content/public/test/mock_navigation_handle.h
@@ -68,11 +68,6 @@ bool IsServedFromBackForwardCache() override { return is_served_from_bfcache_; } - bool IsPageActivation() const override { - MockNavigationHandle* handle = const_cast<MockNavigationHandle*>(this); - return handle->IsPrerenderedPageActivation() || - handle->IsServedFromBackForwardCache(); - } RenderFrameHost* GetParentFrame() override { return render_frame_host_ ? render_frame_host_->GetParent() : nullptr; }
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc index 4648dc7..c2b1d0d 100644 --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc
@@ -961,6 +961,12 @@ WebSecurityPolicy::RegisterURLSchemeAsAllowingWasmEvalCSP( chrome_untrusted_scheme); + if (base::FeatureList::IsEnabled(features::kWebUICodeCache)) { + WebSecurityPolicy::RegisterURLSchemeAsCodeCacheWithHashing(chrome_scheme); + WebSecurityPolicy::RegisterURLSchemeAsCodeCacheWithHashing( + chrome_untrusted_scheme); + } + // devtools: WebString devtools_scheme(WebString::FromASCII(kChromeDevToolsScheme)); WebSecurityPolicy::RegisterURLSchemeAsDisplayIsolated(devtools_scheme);
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn index cd2ab4c..b557efb 100644 --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn
@@ -76,8 +76,6 @@ "../browser/media/session/mock_media_session_service_impl.h", "../browser/presentation/presentation_test_utils.cc", "../browser/presentation/presentation_test_utils.h", - "../browser/renderer_host/document_service_base_echo_impl.cc", - "../browser/renderer_host/document_service_base_echo_impl.h", "../browser/renderer_host/input/mock_input_router.cc", "../browser/renderer_host/input/mock_input_router.h", "../browser/renderer_host/mock_render_widget_host.cc", @@ -1201,7 +1199,6 @@ "../browser/renderer_host/back_forward_cache_metrics_browsertest.cc", "../browser/renderer_host/blocked_scheme_navigation_browsertest.cc", "../browser/renderer_host/cookie_browsertest.cc", - "../browser/renderer_host/document_service_base_browsertest.cc", "../browser/renderer_host/embedding_token_browsertest.cc", "../browser/renderer_host/frame_tree_browsertest.cc", "../browser/renderer_host/input/autoscroll_browsertest.cc",
diff --git a/content/test/gpu/unexpected_passes/gpu_builders.py b/content/test/gpu/unexpected_passes/gpu_builders.py index 89d3c23..214472c 100644 --- a/content/test/gpu/unexpected_passes/gpu_builders.py +++ b/content/test/gpu/unexpected_passes/gpu_builders.py
@@ -81,7 +81,7 @@ self._fake_ci_builders = {} for try_builder, ci_builder_list in fake_try_builders.items(): for ci in ci_builder_list: - self._fake_ci_builders[ci] = try_builder + self._fake_ci_builders.setdefault(ci, set()).add(try_builder) return self._fake_ci_builders
diff --git a/content/test/gpu/unexpected_passes/gpu_builders_unittest.py b/content/test/gpu/unexpected_passes/gpu_builders_unittest.py index 1b81ba7..5aaeaa2f 100755 --- a/content/test/gpu/unexpected_passes/gpu_builders_unittest.py +++ b/content/test/gpu/unexpected_passes/gpu_builders_unittest.py
@@ -66,3 +66,7 @@ if 'telemetry_gpu_integration_test' in isolate and 'android' in isolate: return self.fail('Did not find any Android-specific isolate names') + + +if __name__ == '__main__': + unittest.main(verbosity=2)
diff --git a/extensions/browser/extension_function_histogram_value.h b/extensions/browser/extension_function_histogram_value.h index a36447bb..0c03dad 100644 --- a/extensions/browser/extension_function_histogram_value.h +++ b/extensions/browser/extension_function_histogram_value.h
@@ -1629,6 +1629,7 @@ ACCESSIBILITY_PRIVATE_MAGNIFIERCENTERONPOINT = 1566, STORAGE_SETACCESSLEVEL = 1567, OS_TELEMETRY_GETOEMDATA = 1568, + SCRIPTING_UNREGISTERCONTENTSCRIPTS = 1569, // Last entry: Add new entries above, then run: // python tools/metrics/histograms/update_extension_histograms.py ENUM_BOUNDARY
diff --git a/extensions/browser/extension_user_script_loader.cc b/extensions/browser/extension_user_script_loader.cc index 5691e86..02b87fe 100644 --- a/extensions/browser/extension_user_script_loader.cc +++ b/extensions/browser/extension_user_script_loader.cc
@@ -16,6 +16,7 @@ #include "base/bind.h" #include "base/callback_helpers.h" #include "base/containers/contains.h" +#include "base/containers/cxx20_erase_vector.h" #include "base/files/file_path.h" #include "base/files/file_util.h" #include "base/memory/read_only_shared_memory_region.h" @@ -277,8 +278,18 @@ std::unique_ptr<UserScriptList> scripts, DynamicScriptsModifiedCallback callback) { auto scripts_metadata = std::make_unique<UserScriptList>(); - for (const std::unique_ptr<UserScript>& script : *scripts) - scripts_metadata->push_back(UserScript::CopyMetadataFrom(*script)); + for (const std::unique_ptr<UserScript>& script : *scripts) { + // Only proceed with adding scripts that the extension still intends to add. + // This guards again an edge case where scripts registered by an API call + // are quickly unregistered. + if (base::Contains(pending_dynamic_script_ids_, script->id())) + scripts_metadata->push_back(UserScript::CopyMetadataFrom(*script)); + } + + if (scripts_metadata->empty()) { + std::move(callback).Run(/*error=*/absl::nullopt); + return; + } AddScripts(std::move(scripts), base::BindOnce(&ExtensionUserScriptLoader::OnDynamicScriptsAdded, @@ -286,6 +297,29 @@ std::move(scripts_metadata), std::move(callback))); } +void ExtensionUserScriptLoader::RemoveDynamicScripts( + const std::set<std::string>& ids_to_remove, + DynamicScriptsModifiedCallback callback) { + if (ids_to_remove.empty()) { + std::move(callback).Run(/*error=*/absl::nullopt); + return; + } + + // Remove pending script ids first, so loads from previous operations which + // complete later will recognize the change. + RemovePendingDynamicScriptIDs(ids_to_remove); + RemoveScripts( + ids_to_remove, + base::BindOnce(&ExtensionUserScriptLoader::OnDynamicScriptsRemoved, + weak_factory_.GetWeakPtr(), ids_to_remove, + std::move(callback))); +} + +void ExtensionUserScriptLoader::ClearDynamicScripts( + DynamicScriptsModifiedCallback callback) { + RemoveDynamicScripts(GetDynamicScriptIDs(), std::move(callback)); +} + std::set<std::string> ExtensionUserScriptLoader::GetDynamicScriptIDs() { std::set<std::string> dynamic_script_ids; dynamic_script_ids.insert(pending_dynamic_script_ids_.begin(), @@ -374,4 +408,23 @@ std::move(callback).Run(error); } +void ExtensionUserScriptLoader::OnDynamicScriptsRemoved( + const std::set<std::string>& removed_script_ids, + DynamicScriptsModifiedCallback callback, + UserScriptLoader* loader, + const absl::optional<std::string>& error) { + // Remove scripts from `loaded_dynamic_scripts_` only when the set of + // `removed_script_ids` have actually been removed and the corresponding IPC + // has been sent. + if (!error.has_value()) { + base::EraseIf( + loaded_dynamic_scripts_, + [&removed_script_ids](const std::unique_ptr<UserScript>& script) { + return base::Contains(removed_script_ids, script->id()); + }); + } + + std::move(callback).Run(error); +} + } // namespace extensions
diff --git a/extensions/browser/extension_user_script_loader.h b/extensions/browser/extension_user_script_loader.h index 6043090..c3714d0 100644 --- a/extensions/browser/extension_user_script_loader.h +++ b/extensions/browser/extension_user_script_loader.h
@@ -63,6 +63,15 @@ void AddDynamicScripts(std::unique_ptr<UserScriptList> scripts, DynamicScriptsModifiedCallback callback); + // Removes all dynamic scripts with an id specified in `ids` from + // `pending_dynamic_script_ids_` and `loaded_dynamic_scripts_`. + void RemoveDynamicScripts(const std::set<std::string>& ids_to_remove, + DynamicScriptsModifiedCallback callback); + + // Removes all dynamic scripts for the extension, including loaded and + // pending scripts. + void ClearDynamicScripts(DynamicScriptsModifiedCallback callback); + // Returns the IDs of all dynamic scripts for the extension, which includes // the IDs of all pending and loaded dynamic scripts. std::set<std::string> GetDynamicScriptIDs(); @@ -94,12 +103,22 @@ UserScriptLoader* loader, const absl::optional<std::string>& error); + // Called when the scripts to be removed in RemoveDynamicScripts are removed. + // All scripts in `loaded_dynamic_scripts_` with their id in + // `removed_script_ids` are removed. + void OnDynamicScriptsRemoved(const std::set<std::string>& removed_script_ids, + DynamicScriptsModifiedCallback callback, + UserScriptLoader* loader, + const absl::optional<std::string>& error); + // The IDs of dynamically registered scripts (e.g. registered by the // extension's API calls) that have not been loaded yet. IDs are removed from // the set when: // - Their corresponding scripts have been loaded. // - A load for the IDs has failed. // - A load for the IDs will no longer be initiated. + // - An unregisterContentScripts call was made for one or more ids in this + // set. std::set<std::string> pending_dynamic_script_ids_; // The metadata of dynamic scripts from the extension that have been loaded.
diff --git a/extensions/browser/user_script_loader.h b/extensions/browser/user_script_loader.h index a554d13..fe72cda4 100644 --- a/extensions/browser/user_script_loader.h +++ b/extensions/browser/user_script_loader.h
@@ -163,7 +163,7 @@ // The mutually-exclusive information about sets of scripts that were added or // removed since the last script load. These maps are keyed by script ids. - // Note that we only need HostID information for removal. + // Note that we only need a script's id for removal. std::map<std::string, std::unique_ptr<UserScript>> added_scripts_map_; std::set<std::string> removed_script_ids_;
diff --git a/extensions/common/user_script.cc b/extensions/common/user_script.cc index 12a470d..b1dba34 100644 --- a/extensions/common/user_script.cc +++ b/extensions/common/user_script.cc
@@ -78,6 +78,11 @@ return valid_schemes; } +// static +bool UserScript::IsIDGenerated(const std::string& id) { + return !id.empty() && id[0] == kGeneratedIDPrefix; +} + UserScript::File::File(const base::FilePath& extension_root, const base::FilePath& relative_path, const GURL& url) @@ -272,7 +277,7 @@ bool UserScript::IsIDGenerated() const { CHECK(!user_script_id_.empty()); - return user_script_id_[0] == kGeneratedIDPrefix; + return IsIDGenerated(user_script_id_); } void UserScript::UnpickleGlobs(const base::Pickle& pickle,
diff --git a/extensions/common/user_script.h b/extensions/common/user_script.h index 6ad0dfb..b570339 100644 --- a/extensions/common/user_script.h +++ b/extensions/common/user_script.h
@@ -46,6 +46,9 @@ // `can_execute_script_everywhere` is true, this will return ALL_SCHEMES. static int ValidUserScriptSchemes(bool can_execute_script_everywhere = false); + // Returns if a user script's ID is generated. + static bool IsIDGenerated(const std::string& id); + // Holds script file info. class File { public:
diff --git a/ios/chrome/browser/google/BUILD.gn b/ios/chrome/browser/google/BUILD.gn index 116c569..75a3227 100644 --- a/ios/chrome/browser/google/BUILD.gn +++ b/ios/chrome/browser/google/BUILD.gn
@@ -2,6 +2,14 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +source_set("google") { + configs += [ "//build/config/compiler:enable_arc" ] + sources = [ + "google_brand.h", + "google_brand.mm", + ] +} + source_set("google_logo") { configs += [ "//build/config/compiler:enable_arc" ] sources = [
diff --git a/ios/chrome/browser/google/google_brand.h b/ios/chrome/browser/google/google_brand.h new file mode 100644 index 0000000..4ecd9d76 --- /dev/null +++ b/ios/chrome/browser/google/google_brand.h
@@ -0,0 +1,19 @@ +// 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 IOS_CHROME_BROWSER_GOOGLE_GOOGLE_BRAND_H_ +#define IOS_CHROME_BROWSER_GOOGLE_GOOGLE_BRAND_H_ + +#include <string> + +namespace ios { +namespace google_brand { + +// True if a build is strictly organic, according to its brand code. +bool IsOrganic(const std::string& brand); + +} // namespace google_brand +} // namespace ios + +#endif // IOS_CHROME_BROWSER_GOOGLE_GOOGLE_BRAND_H_
diff --git a/ios/chrome/browser/google/google_brand.mm b/ios/chrome/browser/google/google_brand.mm new file mode 100644 index 0000000..96d433a5 --- /dev/null +++ b/ios/chrome/browser/google/google_brand.mm
@@ -0,0 +1,21 @@ +// 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 "ios/chrome/browser/google/google_brand.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +namespace ios { +namespace google_brand { + +bool IsOrganic(const std::string& brand) { + // An empty brand string on iOS is used for organic installation. All other + // iOS brand string are non-organic. + return brand.empty(); +} + +} // namespace google_brand +} // namespace ios
diff --git a/ios/chrome/browser/passwords/ios_chrome_password_manager_client.h b/ios/chrome/browser/passwords/ios_chrome_password_manager_client.h index 748e60a..5129d7d 100644 --- a/ios/chrome/browser/passwords/ios_chrome_password_manager_client.h +++ b/ios/chrome/browser/passwords/ios_chrome_password_manager_client.h
@@ -101,8 +101,14 @@ const password_manager::PasswordFeatureManager* GetPasswordFeatureManager() const override; PrefService* GetPrefs() const override; + // TODO(crbug.com/1218413): Remove the following two methods once migration + // from PasswordStore to PasswordStoreInterface is complete. password_manager::PasswordStore* GetProfilePasswordStore() const override; password_manager::PasswordStore* GetAccountPasswordStore() const override; + password_manager::PasswordStoreInterface* GetProfilePasswordStoreInterface() + const override; + password_manager::PasswordStoreInterface* GetAccountPasswordStoreInterface() + const override; password_manager::PasswordReuseManager* GetPasswordReuseManager() const override;
diff --git a/ios/chrome/browser/passwords/ios_chrome_password_manager_client.mm b/ios/chrome/browser/passwords/ios_chrome_password_manager_client.mm index 78ad48f..b95fcb2 100644 --- a/ios/chrome/browser/passwords/ios_chrome_password_manager_client.mm +++ b/ios/chrome/browser/passwords/ios_chrome_password_manager_client.mm
@@ -55,6 +55,7 @@ using password_manager::PasswordFormManagerForUI; using password_manager::PasswordManagerMetricsRecorder; using password_manager::PasswordStore; +using password_manager::PasswordStoreInterface; using password_manager::SyncState; namespace { @@ -191,6 +192,19 @@ return nullptr; } +PasswordStoreInterface* +IOSChromePasswordManagerClient::GetProfilePasswordStoreInterface() const { + return IOSChromePasswordStoreFactory::GetForBrowserState( + bridge_.browserState, ServiceAccessType::EXPLICIT_ACCESS) + .get(); +} + +PasswordStoreInterface* +IOSChromePasswordManagerClient::GetAccountPasswordStoreInterface() const { + // AccountPasswordStore is currenly not supported on iOS. + return nullptr; +} + password_manager::PasswordReuseManager* IOSChromePasswordManagerClient::GetPasswordReuseManager() const { return IOSChromePasswordReuseManagerFactory::GetForBrowserState(
diff --git a/ios/chrome/browser/passwords/ios_chrome_password_manager_client_unittest.mm b/ios/chrome/browser/passwords/ios_chrome_password_manager_client_unittest.mm index d2361dcf..d7531a0a5 100644 --- a/ios/chrome/browser/passwords/ios_chrome_password_manager_client_unittest.mm +++ b/ios/chrome/browser/passwords/ios_chrome_password_manager_client_unittest.mm
@@ -9,7 +9,7 @@ #include <memory> #include "components/autofill/ios/form_util/unique_id_data_tab_helper.h" -#include "components/password_manager/core/browser/mock_password_store.h" +#include "components/password_manager/core/browser/mock_password_store_interface.h" #include "components/password_manager/core/browser/password_form_manager.h" #include "components/password_manager/core/common/password_manager_pref_names.h" #include "components/prefs/testing_pref_service.h" @@ -35,7 +35,8 @@ public: IOSChromePasswordManagerClientTest() : ChromeWebTest(std::make_unique<ChromeWebClient>()), - store_(new testing::NiceMock<password_manager::MockPasswordStore>()) {} + store_(new testing::NiceMock< + password_manager::MockPasswordStoreInterface>()) {} ~IOSChromePasswordManagerClientTest() override { store_->ShutdownOnUIThread(); @@ -59,7 +60,7 @@ // PasswordController for testing. PasswordController* passwordController_; - scoped_refptr<password_manager::MockPasswordStore> store_; + scoped_refptr<password_manager::MockPasswordStoreInterface> store_; }; // Tests that saving password behaves properly with the
diff --git a/ios/chrome/browser/passwords/ios_chrome_password_store_factory.cc b/ios/chrome/browser/passwords/ios_chrome_password_store_factory.cc index 1bc56ee..f877b19 100644 --- a/ios/chrome/browser/passwords/ios_chrome_password_store_factory.cc +++ b/ios/chrome/browser/passwords/ios_chrome_password_store_factory.cc
@@ -53,8 +53,9 @@ if (access_type == ServiceAccessType::IMPLICIT_ACCESS && browser_state->IsOffTheRecord()) return nullptr; - return base::WrapRefCounted(static_cast<password_manager::PasswordStore*>( - GetInstance()->GetServiceForBrowserState(browser_state, true).get())); + return base::WrapRefCounted( + static_cast<password_manager::PasswordStoreInterface*>( + GetInstance()->GetServiceForBrowserState(browser_state, true).get())); } // static
diff --git a/ios/chrome/browser/rlz/BUILD.gn b/ios/chrome/browser/rlz/BUILD.gn index 1359598..c16b6e33 100644 --- a/ios/chrome/browser/rlz/BUILD.gn +++ b/ios/chrome/browser/rlz/BUILD.gn
@@ -16,6 +16,7 @@ "//ios/chrome/browser/browser_state", "//ios/chrome/browser/google", "//ios/chrome/browser/search_engines", + "//ios/public/provider/chrome/browser/app_distribution:app_distribution_api", "//ios/web", "//services/network/public/cpp", ]
diff --git a/ios/chrome/browser/rlz/rlz_tracker_delegate_impl.cc b/ios/chrome/browser/rlz/rlz_tracker_delegate_impl.cc index e4cc64e..d2540b0e 100644 --- a/ios/chrome/browser/rlz/rlz_tracker_delegate_impl.cc +++ b/ios/chrome/browser/rlz/rlz_tracker_delegate_impl.cc
@@ -16,6 +16,7 @@ #include "ios/chrome/browser/browser_state/chrome_browser_state.h" #include "ios/chrome/browser/google/google_brand.h" #include "ios/chrome/browser/search_engines/template_url_service_factory.h" +#include "ios/public/provider/chrome/browser/app_distribution/app_distribution_api.h" #include "ios/web/public/thread/web_thread.h" #include "services/network/public/cpp/shared_url_loader_factory.h" @@ -67,7 +68,8 @@ } bool RLZTrackerDelegateImpl::GetBrand(std::string* brand) { - return ios::google_brand::GetBrand(brand); + brand->assign(ios::provider::GetBrandCode()); + return true; } bool RLZTrackerDelegateImpl::IsBrandOrganic(const std::string& brand) {
diff --git a/ios/chrome/browser/search_engines/BUILD.gn b/ios/chrome/browser/search_engines/BUILD.gn index 7d9983f..391db8f 100644 --- a/ios/chrome/browser/search_engines/BUILD.gn +++ b/ios/chrome/browser/search_engines/BUILD.gn
@@ -37,6 +37,7 @@ "//components/version_info", "//ios/chrome/browser", "//ios/chrome/browser/browser_state", + "//ios/chrome/browser/google", "//ios/chrome/browser/history", "//ios/chrome/browser/webdata_services", "//ios/chrome/common",
diff --git a/ios/chrome/browser/search_engines/ui_thread_search_terms_data.cc b/ios/chrome/browser/search_engines/ui_thread_search_terms_data.cc index 5184cab..c1aa616 100644 --- a/ios/chrome/browser/search_engines/ui_thread_search_terms_data.cc +++ b/ios/chrome/browser/search_engines/ui_thread_search_terms_data.cc
@@ -11,6 +11,7 @@ #include "components/omnibox/browser/omnibox_field_trial.h" #include "components/version_info/version_info.h" #include "ios/chrome/browser/application_context.h" +#include "ios/chrome/browser/google/google_brand.h" #include "ios/chrome/browser/system_flags.h" #include "ios/chrome/common/channel_info.h" #include "ios/public/provider/chrome/browser/app_distribution/app_distribution_api.h" @@ -24,18 +25,6 @@ #endif namespace ios { -#if BUILDFLAG(ENABLE_RLZ) -namespace { - -// True if a build is strictly organic, according to its brand code. -bool IsOrganic(const std::string& brand) { - // An empty brand string on iOS is used for organic installation. All other - // iOS brand string are non-organic. - return brand.empty(); -} - -} // anonymous namespace -#endif UIThreadSearchTermsData::UIThreadSearchTermsData() { DCHECK(!web::WebThread::IsThreadInitialized(web::WebThread::UI) || @@ -65,7 +54,7 @@ std::u16string rlz_string; #if BUILDFLAG(ENABLE_RLZ) // For organic brandcode do not use rlz at all. - if (!IsOrganic(ios::provider::GetBrandCode())) { + if (!ios::google_brand::IsOrganic(ios::provider::GetBrandCode())) { // This call will may return false until the value has been cached. This // normally would mean that a few omnibox searches might not send the RLZ // data but this is not really a problem (as the value will eventually be
diff --git a/ios/chrome/browser/sync/ios_chrome_sync_client.h b/ios/chrome/browser/sync/ios_chrome_sync_client.h index f3121d4..35704e3 100644 --- a/ios/chrome/browser/sync/ios_chrome_sync_client.h +++ b/ios/chrome/browser/sync/ios_chrome_sync_client.h
@@ -20,7 +20,7 @@ } namespace password_manager { -class PasswordStore; +class PasswordStoreInterface; } namespace browser_sync { @@ -72,7 +72,7 @@ // respective backend threads. scoped_refptr<autofill::AutofillWebDataService> profile_web_data_service_; scoped_refptr<autofill::AutofillWebDataService> account_web_data_service_; - scoped_refptr<password_manager::PasswordStore> password_store_; + scoped_refptr<password_manager::PasswordStoreInterface> password_store_; // The task runner for the |web_data_service_|, if any. scoped_refptr<base::SingleThreadTaskRunner> db_thread_;
diff --git a/ios/chrome/browser/sync/ios_chrome_sync_client.mm b/ios/chrome/browser/sync/ios_chrome_sync_client.mm index 2967adb0..404560b4 100644 --- a/ios/chrome/browser/sync/ios_chrome_sync_client.mm +++ b/ios/chrome/browser/sync/ios_chrome_sync_client.mm
@@ -28,7 +28,7 @@ #include "components/invalidation/impl/profile_invalidation_provider.h" #include "components/keyed_service/core/service_access_type.h" #include "components/metrics/demographics/user_demographics.h" -#include "components/password_manager/core/browser/password_store.h" +#include "components/password_manager/core/browser/password_store_interface.h" #include "components/reading_list/core/reading_list_model.h" #include "components/sync/base/report_unrecoverable_error.h" #include "components/sync/base/sync_base_switches.h" @@ -99,7 +99,7 @@ db_thread_ = profile_web_data_service_ ? profile_web_data_service_->GetDBTaskRunner() : nullptr; - password_store_ = IOSChromePasswordStoreFactory::GetForBrowserState( + password_store_ = IOSChromePasswordStoreFactory::GetInterfaceForBrowserState( browser_state_, ServiceAccessType::IMPLICIT_ACCESS); component_factory_ =
diff --git a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/BUILD.gn b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/BUILD.gn index f25624ad..d7b3902 100644 --- a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/BUILD.gn +++ b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/BUILD.gn
@@ -53,7 +53,9 @@ sources = [ "consistency_promo_signin_coordinator_egtest.mm" ] deps = [ "//base", + "//ios/chrome/browser:pref_names", "//ios/chrome/browser/ui/authentication:eg_test_support+eg2", + "//ios/chrome/browser/ui/authentication/signin:constants", "//ios/chrome/test/earl_grey:eg_test_support+eg2", "//ios/testing/earl_grey:eg_test_support+eg2", "//ios/third_party/earl_grey2:test_lib",
diff --git a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_account_chooser/consistency_account_chooser_mediator.mm b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_account_chooser/consistency_account_chooser_mediator.mm index 1934680..dc3510e 100644 --- a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_account_chooser/consistency_account_chooser_mediator.mm +++ b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_account_chooser/consistency_account_chooser_mediator.mm
@@ -4,9 +4,8 @@ #import "ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_account_chooser/consistency_account_chooser_mediator.h" -#import "ios/chrome/browser/chrome_browser_provider_observer_bridge.h" #import "ios/chrome/browser/signin/chrome_account_manager_service.h" -#import "ios/chrome/browser/signin/chrome_identity_service_observer_bridge.h" +#import "ios/chrome/browser/signin/chrome_account_manager_service_observer_bridge.h" #import "ios/chrome/browser/ui/authentication/resized_avatar_cache.h" #import "ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_account_chooser/consistency_account_chooser_consumer.h" #import "ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_account_chooser/identity_item_configurator.h" @@ -18,17 +17,14 @@ #endif @interface ConsistencyAccountChooserMediator () < - ChromeBrowserProviderObserver, - ChromeIdentityServiceObserver> { - std::unique_ptr<ChromeIdentityServiceObserverBridge> _identityServiceObserver; - std::unique_ptr<ChromeBrowserProviderObserverBridge> _browserProviderObserver; + ChromeAccountManagerServiceObserver> { + std::unique_ptr<ChromeAccountManagerServiceObserverBridge> + _accountManagerServiceObserver; } @property(nonatomic, strong) ResizedAvatarCache* avatarCache; // Configurators based on ChromeIdentity list. @property(nonatomic, strong) NSArray* sortedIdentityItemConfigurators; -@property(nonatomic, assign, readonly) - ios::ChromeIdentityService* chromeIdentityService; // Account manager service to retrieve Chrome identities. @property(nonatomic, assign) ChromeAccountManagerService* accountManagerService; @@ -42,10 +38,9 @@ if (self = [super init]) { DCHECK(accountManagerService); _accountManagerService = accountManagerService; - _identityServiceObserver = - std::make_unique<ChromeIdentityServiceObserverBridge>(self); - _browserProviderObserver = - std::make_unique<ChromeBrowserProviderObserverBridge>(self); + _accountManagerServiceObserver = + std::make_unique<ChromeAccountManagerServiceObserverBridge>( + self, _accountManagerService); _avatarCache = [[ResizedAvatarCache alloc] init]; _selectedIdentity = selectedIdentity; [self loadIdentityItemConfigurators]; @@ -63,10 +58,6 @@ #pragma mark - Properties -- (ios::ChromeIdentityService*)chromeIdentityService { - return ios::GetChromeBrowserProvider().GetChromeIdentityService(); -} - - (void)setSelectedIdentity:(ChromeIdentity*)identity { DCHECK(identity); if (_selectedIdentity == identity) { @@ -74,8 +65,8 @@ } ChromeIdentity* previousSelectedIdentity = _selectedIdentity; _selectedIdentity = identity; - [self profileUpdate:previousSelectedIdentity]; - [self profileUpdate:_selectedIdentity]; + [self identityChanged:previousSelectedIdentity]; + [self identityChanged:_selectedIdentity]; } #pragma mark - Private @@ -121,26 +112,9 @@ configurator.selected = [identity isEqual:self.selectedIdentity]; } -#pragma mark - ChromeBrowserProviderObserver +#pragma mark - ChromeAccountManagerServiceObserver -- (void)chromeIdentityServiceDidChange:(ios::ChromeIdentityService*)identity { - DCHECK(!_identityServiceObserver.get()); - _identityServiceObserver = - std::make_unique<ChromeIdentityServiceObserverBridge>(self); -} - -- (void)chromeBrowserProviderWillBeDestroyed { - _browserProviderObserver.reset(); -} - -#pragma mark - ChromeIdentityServiceObserver - -- (void)identityListChanged { - [self loadIdentityItemConfigurators]; - [self.consumer reloadAllIdentities]; -} - -- (void)profileUpdate:(ChromeIdentity*)identity { +- (void)identityChanged:(ChromeIdentity*)identity { IdentityItemConfigurator* configurator = nil; for (IdentityItemConfigurator* cursor in self .sortedIdentityItemConfigurators) { @@ -154,8 +128,9 @@ [self.consumer reloadIdentityForIdentityItemConfigurator:configurator]; } -- (void)chromeIdentityServiceWillBeDestroyed { - _identityServiceObserver.reset(); +- (void)identityListChanged { + [self loadIdentityItemConfigurators]; + [self.consumer reloadAllIdentities]; } #pragma mark - ConsistencyAccountChooserTableViewControllerModelDelegate
diff --git a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_promo_signin_coordinator_egtest.mm b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_promo_signin_coordinator_egtest.mm index 6471ce8..f0becbc 100644 --- a/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_promo_signin_coordinator_egtest.mm +++ b/ios/chrome/browser/ui/authentication/signin/consistency_promo_signin/consistency_promo_signin_coordinator_egtest.mm
@@ -2,10 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#import "ios/chrome/browser/pref_names.h" +#import "ios/chrome/browser/ui/authentication/signin/signin_constants.h" #import "ios/chrome/browser/ui/authentication/signin_earl_grey.h" #import "ios/chrome/browser/ui/authentication/signin_earl_grey_app_interface.h" #import "ios/chrome/browser/ui/authentication/signin_earl_grey_ui.h" #import "ios/chrome/browser/ui/authentication/signin_matchers.h" +#import "ios/chrome/test/earl_grey/chrome_earl_grey.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h" #import "ios/chrome/test/earl_grey/chrome_test_case.h" #import "ios/testing/earl_grey/earl_grey_test.h" @@ -25,6 +28,13 @@ @implementation ConsistencyPromoSigninCoordinatorTestCase +- (void)setUp { + [super setUp]; + // Resets the number of dismissals for web sign-in. + [ChromeEarlGrey setIntegerValue:0 + forUserPref:prefs::kSigninWebSignDismissalCount]; +} + // Tests that ConsistencyPromoSigninCoordinator shows up, and then skips it. - (void)testDismissConsistencyPromoSignin { FakeChromeIdentity* fakeIdentity = [SigninEarlGrey fakeIdentity1]; @@ -38,4 +48,34 @@ [SigninEarlGreyUI verifyWebSigninIsVisible:NO]; } +// Tests that ConsistencyPromoSigninCoordinator is not shown after the last +// dismissal (based on kDefaultWebSignInDismissalCount value). +- (void)testDismissalCount { + // Setup. + GREYAssertTrue(kDefaultWebSignInDismissalCount > 0, + @"The default dismissal max value should be more than 0"); + [ChromeEarlGrey setIntegerValue:kDefaultWebSignInDismissalCount - 1 + forUserPref:prefs::kSigninWebSignDismissalCount]; + FakeChromeIdentity* fakeIdentity = [SigninEarlGrey fakeIdentity1]; + [SigninEarlGrey addFakeIdentity:fakeIdentity]; + // Show the web sign-in consistency dialog for the last time. + [SigninEarlGreyAppInterface triggerConsistencyPromoSigninDialog]; + [SigninEarlGreyUI verifyWebSigninIsVisible:YES]; + [[EarlGrey + selectElementWithMatcher:chrome_test_util::WebSigninSkipButtonMatcher()] + performAction:grey_tap()]; + [SigninEarlGreyUI verifyWebSigninIsVisible:NO]; + GREYAssertEqual( + kDefaultWebSignInDismissalCount, + [ChromeEarlGrey userIntegerPref:prefs::kSigninWebSignDismissalCount], + @"Dismissal count should be increased to the max value"); + // Asks for the web sign-in consistency that should not succeed. + [SigninEarlGreyAppInterface triggerConsistencyPromoSigninDialog]; + [SigninEarlGreyUI verifyWebSigninIsVisible:NO]; + GREYAssertEqual( + kDefaultWebSignInDismissalCount, + [ChromeEarlGrey userIntegerPref:prefs::kSigninWebSignDismissalCount], + @"Dismissal count should be at the max value"); +} + @end
diff --git a/ios/chrome/browser/ui/authentication/signin/signin_constants.h b/ios/chrome/browser/ui/authentication/signin/signin_constants.h index 8f64dda..7b40ab4 100644 --- a/ios/chrome/browser/ui/authentication/signin/signin_constants.h +++ b/ios/chrome/browser/ui/authentication/signin/signin_constants.h
@@ -78,4 +78,8 @@ SigninTrustedVaultDialogIntentDegradedRecoverability, }; +// Max dismissal count for web sign-in consistency dialog (the dismissal value +// is reset as soon as the user shows sign-in intent). +extern const int kDefaultWebSignInDismissalCount; + #endif // IOS_CHROME_BROWSER_UI_AUTHENTICATION_SIGNIN_SIGNIN_CONSTANTS_H_
diff --git a/ios/chrome/browser/ui/authentication/signin/signin_constants.mm b/ios/chrome/browser/ui/authentication/signin/signin_constants.mm index 1695922..4dc1983 100644 --- a/ios/chrome/browser/ui/authentication/signin/signin_constants.mm +++ b/ios/chrome/browser/ui/authentication/signin/signin_constants.mm
@@ -22,3 +22,8 @@ @"WebSigninContinueAsButtonAccessibilityIdentifier"; NSString* const kWebSigninSkipButtonAccessibilityIdentifier = @"WebSigninSkipButtonAccessibilityIdentifier"; + +const char* kWebSigninConsistencyConsecutiveActiveDismissalLimitParam = + "consecutive_active_dismissal_limit"; + +const int kDefaultWebSignInDismissalCount = 3;
diff --git a/ios/chrome/browser/ui/authentication/signin/signin_coordinator.mm b/ios/chrome/browser/ui/authentication/signin/signin_coordinator.mm index 47c5f01..fdf6472e 100644 --- a/ios/chrome/browser/ui/authentication/signin/signin_coordinator.mm +++ b/ios/chrome/browser/ui/authentication/signin/signin_coordinator.mm
@@ -7,7 +7,6 @@ #include "base/notreached.h" #import "components/pref_registry/pref_registry_syncable.h" #import "components/prefs/pref_service.h" -#import "components/signin/public/base/account_consistency_method.h" #include "ios/chrome/browser/browser_state/chrome_browser_state.h" #import "ios/chrome/browser/main/browser.h" #import "ios/chrome/browser/pref_names.h" @@ -19,11 +18,10 @@ #import "ios/chrome/browser/ui/authentication/signin/trusted_vault_reauthentication/trusted_vault_reauthentication_coordinator.h" #import "ios/chrome/browser/ui/authentication/signin/user_signin/logging/first_run_signin_logger.h" #import "ios/chrome/browser/ui/authentication/signin/user_signin/logging/upgrade_signin_logger.h" +#import "ios/chrome/browser/ui/authentication/signin/user_signin/logging/user_signin_logger.h" #import "ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_constants.h" #import "ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_coordinator.h" #import "ios/chrome/browser/ui/ui_feature_flags.h" -#import "ios/public/provider/chrome/browser/chrome_browser_provider.h" -#import "ios/public/provider/chrome/browser/signin/chrome_identity_service.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support." @@ -32,17 +30,6 @@ using signin_metrics::AccessPoint; using signin_metrics::PromoAction; -namespace { - -// Parameter for web signin dismissal count. -// This parameter is releated to kMICEWebSignIn feature. -const char* kConsecutiveActiveDismissalLimitParam = - "consecutive_active_dismissal_limit"; -// Default web sign-in dismissal count. -constexpr int kDefaultSignInWebSignInDismissalCount = 3; - -} // namespace - @implementation SigninCoordinator + (void)registerBrowserStatePrefs:(user_prefs::PrefRegistrySyncable*)registry { @@ -183,11 +170,9 @@ SUPPRESSED_SIGNIN_NOT_ALLOWED); return nil; } - const int maxDismissalCount = base::GetFieldTrialParamByFeatureAsInt( - signin::kMICEWebSignIn, kConsecutiveActiveDismissalLimitParam, - kDefaultSignInWebSignInDismissalCount); - if (userPrefService->GetInteger(prefs::kSigninWebSignDismissalCount) >= - maxDismissalCount) { + const int currentDismissalCount = + userPrefService->GetInteger(prefs::kSigninWebSignDismissalCount); + if (currentDismissalCount >= kDefaultWebSignInDismissalCount) { RecordConsistencyPromoUserAction( signin_metrics::AccountConsistencyPromoAction:: SUPPRESSED_CONSECUTIVE_DISMISSALS);
diff --git a/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.h b/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.h index 5588a1c..f6f93e39 100644 --- a/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.h +++ b/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.h
@@ -52,10 +52,6 @@ // This method should be used only if SimplifySignOutIOS is turned on. + (void)signOutWithConfirmationChoice:(SignOutConfirmationChoice)confirmation; -// Taps on the settings link in the sign-in view. The sign-in view has to be -// opened before calling this method. -+ (void)tapSettingsLink; - // Taps the sign in confirmation page, scrolls first to make the OK button // visible on short devices (e.g. iPhone 5s). + (void)tapSigninConfirmationDialog;
diff --git a/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.mm b/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.mm index 34fc770..52a59dd 100644 --- a/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.mm +++ b/ios/chrome/browser/ui/authentication/signin_earl_grey_ui.mm
@@ -127,14 +127,6 @@ confirmationLabelID:confirmationLabelID]; } -+ (void)tapSettingsLink { - [[EarlGrey - selectElementWithMatcher:grey_allOf(grey_accessibilityLabel(@"settings"), - grey_accessibilityTrait( - UIAccessibilityTraitLink), - nil)] performAction:grey_tap()]; -} - + (void)tapSigninConfirmationDialog { // To confirm the dialog, the scroll view content has to be scrolled to the // bottom to transform "MORE" button into the validation button.
diff --git a/ios/chrome/browser/ui/autofill/autofill_app_interface.mm b/ios/chrome/browser/ui/autofill/autofill_app_interface.mm index fb3f86d..4f389af 100644 --- a/ios/chrome/browser/ui/autofill/autofill_app_interface.mm +++ b/ios/chrome/browser/ui/autofill/autofill_app_interface.mm
@@ -17,8 +17,8 @@ #import "components/autofill/ios/browser/credit_card_save_manager_test_observer_bridge.h" #include "components/autofill/ios/browser/ios_test_event_waiter.h" #include "components/keyed_service/core/service_access_type.h" -#include "components/password_manager/core/browser/password_store.h" #include "components/password_manager/core/browser/password_store_consumer.h" +#include "components/password_manager/core/browser/password_store_interface.h" #include "ios/chrome/browser/application_context.h" #include "ios/chrome/browser/autofill/personal_data_manager_factory.h" #include "ios/chrome/browser/browser_state/chrome_browser_state.h" @@ -41,13 +41,13 @@ const char16_t kExamplePassword[] = u"concrete password"; // Gets the current password store. -scoped_refptr<password_manager::PasswordStore> GetPasswordStore() { +scoped_refptr<password_manager::PasswordStoreInterface> GetPasswordStore() { // ServiceAccessType governs behaviour in Incognito: only modifications with // EXPLICIT_ACCESS, which correspond to user's explicit gesture, succeed. // This test does not deal with Incognito, and should not run in Incognito // context. Therefore IMPLICIT_ACCESS is used to let the test fail if in // Incognito context. - return IOSChromePasswordStoreFactory::GetForBrowserState( + return IOSChromePasswordStoreFactory::GetInterfaceForBrowserState( chrome_test_util::GetOriginalBrowserState(), ServiceAccessType::IMPLICIT_ACCESS); }
diff --git a/ios/chrome/browser/ui/bookmarks/bookmarks_folders_egtest.mm b/ios/chrome/browser/ui/bookmarks/bookmarks_folders_egtest.mm index 507c7372c..f1d4194 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmarks_folders_egtest.mm +++ b/ios/chrome/browser/ui/bookmarks/bookmarks_folders_egtest.mm
@@ -183,7 +183,9 @@ // Swipe action to try to delete the newly created folder while its name its // being edited. [[EarlGrey - selectElementWithMatcher:TappableBookmarkNodeWithLabel(@"New Folder")] + selectElementWithMatcher:grey_allOf(grey_accessibilityID(@"New Folder"), + grey_minimumVisiblePercent(0.7), + nil)] performAction:grey_swipeFastInDirection(kGREYDirectionLeft)]; // Verify the delete confirmation button doesn't show up.
diff --git a/ios/chrome/browser/ui/settings/google_services/google_services_settings_coordinator.mm b/ios/chrome/browser/ui/settings/google_services/google_services_settings_coordinator.mm index e3f0b861c..429909d 100644 --- a/ios/chrome/browser/ui/settings/google_services/google_services_settings_coordinator.mm +++ b/ios/chrome/browser/ui/settings/google_services/google_services_settings_coordinator.mm
@@ -15,6 +15,7 @@ #import "ios/chrome/browser/main/browser.h" #include "ios/chrome/browser/signin/authentication_service.h" #import "ios/chrome/browser/signin/authentication_service_factory.h" +#import "ios/chrome/browser/signin/chrome_account_manager_service_factory.h" #include "ios/chrome/browser/signin/identity_manager_factory.h" #include "ios/chrome/browser/sync/sync_service_factory.h" #include "ios/chrome/browser/sync/sync_setup_service.h" @@ -117,6 +118,9 @@ initWithUserPrefService:self.browser->GetBrowserState()->GetPrefs() localPrefService:GetApplicationContext()->GetLocalState() syncSetupService:syncSetupService + accountManagerService:ChromeAccountManagerServiceFactory:: + GetForBrowserState( + self.browser->GetBrowserState()) mode:self.mode]; self.mediator.consumer = viewController; self.mediator.authService = self.authService;
diff --git a/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.h b/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.h index 1a9f551..83203d5 100644 --- a/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.h +++ b/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.h
@@ -14,6 +14,7 @@ #import "ios/chrome/browser/ui/settings/google_services/google_services_settings_view_controller_model_delegate.h" class AuthenticationService; +class ChromeAccountManagerService; @protocol GoogleServicesSettingsCommandHandler; @class GoogleServicesSettingsViewController; class PrefService; @@ -57,6 +58,8 @@ - (instancetype)initWithUserPrefService:(PrefService*)userPrefService localPrefService:(PrefService*)localPrefService syncSetupService:(SyncSetupService*)syncSetupService + accountManagerService: + (ChromeAccountManagerService*)accountManagerService mode:(GoogleServicesSettingsMode)mode NS_DESIGNATED_INITIALIZER;
diff --git a/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.mm b/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.mm index a372fe6..53ae010 100644 --- a/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.mm +++ b/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.mm
@@ -20,7 +20,8 @@ #include "ios/chrome/browser/pref_names.h" #import "ios/chrome/browser/signin/authentication_service.h" #import "ios/chrome/browser/signin/authentication_service_factory.h" -#include "ios/chrome/browser/signin/chrome_identity_service_observer_bridge.h" +#import "ios/chrome/browser/signin/chrome_account_manager_service.h" +#import "ios/chrome/browser/signin/chrome_account_manager_service_observer_bridge.h" #include "ios/chrome/browser/sync/sync_observer_bridge.h" #import "ios/chrome/browser/ui/authentication/cells/table_view_account_item.h" #import "ios/chrome/browser/ui/authentication/resized_avatar_cache.h" @@ -113,7 +114,7 @@ @interface GoogleServicesSettingsMediator () < BooleanObserver, - ChromeIdentityServiceObserver, + ChromeAccountManagerServiceObserver, IdentityManagerObserverBridgeDelegate, SyncObserverModelBridge> { // Sync observer. @@ -121,8 +122,9 @@ // Identity manager observer. std::unique_ptr<signin::IdentityManagerObserverBridge> _identityManagerObserverBridge; - // Chrome identity observer. - std::unique_ptr<ChromeIdentityServiceObserverBridge> _identityServiceObserver; + // account manager observer. + std::unique_ptr<ChromeAccountManagerServiceObserverBridge> + _accountManagerServiceObserver; } // Returns YES if the user is authenticated. @@ -191,6 +193,9 @@ // policies. @property(nonatomic, assign, readonly) PrefService* localPrefService; +// Account manager service to retrieve Chrome identities. +@property(nonatomic, assign) ChromeAccountManagerService* accountManagerService; + @end @implementation GoogleServicesSettingsMediator @@ -200,6 +205,8 @@ - (instancetype)initWithUserPrefService:(PrefService*)userPrefService localPrefService:(PrefService*)localPrefService syncSetupService:(SyncSetupService*)syncSetupService + accountManagerService: + (ChromeAccountManagerService*)accountManagerService mode:(GoogleServicesSettingsMode)mode { self = [super init]; if (self) { @@ -237,6 +244,7 @@ kUrlKeyedAnonymizedDataCollectionEnabled]; _anonymizedDataCollectionPreference.observer = self; _resizedAvatarCache = [[ResizedAvatarCache alloc] init]; + _accountManagerService = accountManagerService; } return self; } @@ -978,7 +986,9 @@ new signin::IdentityManagerObserverBridge(self.identityManager, self)); DCHECK(self.syncService); _syncObserver.reset(new SyncObserverBridge(self, self.syncService)); - _identityServiceObserver.reset(new ChromeIdentityServiceObserverBridge(self)); + _accountManagerServiceObserver.reset( + new ChromeAccountManagerServiceObserverBridge( + self, self.accountManagerService)); } #pragma mark - GoogleServicesSettingsServiceDelegate @@ -1149,15 +1159,11 @@ [self updateNonPersonalizedSectionWithNotification:YES]; } -#pragma mark - ChromeIdentityServiceObserver +#pragma mark - ChromeAccountManagerServiceObserver -- (void)profileUpdate:(ChromeIdentity*)identity { +- (void)identityChanged:(ChromeIdentity*)identity { [self updateIdentitySectionAndNotifyConsumer]; [self updateLeakCheckItemAndReload]; } -- (void)chromeIdentityServiceWillBeDestroyed { - _identityServiceObserver.reset(); -} - @end
diff --git a/ios/chrome/browser/ui/settings/password/passwords_settings_app_interface.mm b/ios/chrome/browser/ui/settings/password/passwords_settings_app_interface.mm index d093120..02147e8 100644 --- a/ios/chrome/browser/ui/settings/password/passwords_settings_app_interface.mm +++ b/ios/chrome/browser/ui/settings/password/passwords_settings_app_interface.mm
@@ -12,8 +12,8 @@ #import "base/test/ios/wait_util.h" #include "components/keyed_service/core/service_access_type.h" #include "components/password_manager/core/browser/password_form.h" -#include "components/password_manager/core/browser/password_store.h" #include "components/password_manager/core/browser/password_store_consumer.h" +#include "components/password_manager/core/browser/password_store_interface.h" #include "components/password_manager/core/common/password_manager_pref_names.h" #include "components/prefs/pref_service.h" #include "ios/chrome/browser/browser_state/chrome_browser_state.h" @@ -33,13 +33,13 @@ namespace { -scoped_refptr<password_manager::PasswordStore> GetPasswordStore() { +scoped_refptr<password_manager::PasswordStoreInterface> GetPasswordStore() { // ServiceAccessType governs behaviour in Incognito: only modifications with // EXPLICIT_ACCESS, which correspond to user's explicit gesture, succeed. // This test does not deal with Incognito, and should not run in Incognito // context. Therefore IMPLICIT_ACCESS is used to let the test fail if in // Incognito context. - return IOSChromePasswordStoreFactory::GetForBrowserState( + return IOSChromePasswordStoreFactory::GetInterfaceForBrowserState( chrome_test_util::GetOriginalBrowserState(), ServiceAccessType::IMPLICIT_ACCESS); }
diff --git a/ios/chrome/browser/ui/settings/settings_table_view_controller.mm b/ios/chrome/browser/ui/settings/settings_table_view_controller.mm index 399849fd..04d0da5 100644 --- a/ios/chrome/browser/ui/settings/settings_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/settings_table_view_controller.mm
@@ -16,7 +16,6 @@ #include "components/autofill/core/common/autofill_prefs.h" #include "components/keyed_service/core/service_access_type.h" #include "components/password_manager/core/browser/manage_passwords_referrer.h" -#include "components/password_manager/core/browser/password_store.h" #include "components/password_manager/core/common/password_manager_pref_names.h" #import "components/prefs/ios/pref_observer_bridge.h" #include "components/prefs/pref_member.h" @@ -1076,8 +1075,8 @@ TableViewDetailIconCell* detailCell = base::mac::ObjCCastStrict<TableViewDetailIconCell>(cell); if (itemType == SettingsItemTypePasswords) { - scoped_refptr<password_manager::PasswordStore> passwordStore = - IOSChromePasswordStoreFactory::GetForBrowserState( + scoped_refptr<password_manager::PasswordStoreInterface> passwordStore = + IOSChromePasswordStoreFactory::GetInterfaceForBrowserState( _browserState, ServiceAccessType::EXPLICIT_ACCESS); if (!passwordStore) { // The password store factory returns a NULL password store if something
diff --git a/ios/chrome/test/earl_grey/chrome_earl_grey.mm b/ios/chrome/test/earl_grey/chrome_earl_grey.mm index 4a02aef..75bbf81 100644 --- a/ios/chrome/test/earl_grey/chrome_earl_grey.mm +++ b/ios/chrome/test/earl_grey/chrome_earl_grey.mm
@@ -355,11 +355,11 @@ NSString* spec = base::SysUTF8ToNSString(URL.spec()); [ChromeEarlGreyAppInterface startLoadingURL:spec]; if (wait) { + [self waitForWebStateVisible]; [self waitForPageToFinishLoading]; EG_TEST_HELPER_ASSERT_TRUE( [ChromeEarlGreyAppInterface waitForWindowIDInjectionIfNeeded], @"WindowID failed to inject"); - [self waitForWebStateVisible]; } }
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 a4c6ec7d6..487c270f 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 @@ -fe4ee959923c5bbf29d791ade8e38d7765d06460 \ No newline at end of file +fc9d64973ee2fc57eefcff9154b7dd63ed819a02 \ 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 3bfbf586..21a0e26 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 @@ -56e89deebcc0c9ffbf7c9b8ecbc05ec4b9da16b1 \ No newline at end of file +5302527b99b6e2dd894ec355d0353b2c71638ae7 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1 index ce637dd..22003b7 100644 --- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@ -e3757f85ee97e8e1dc9245192a12e217cf8f8d4b \ No newline at end of file +4a58b70f3862da43d20d26e0456da8e72649fdb0 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1 index 3603f1a23..43cd22e1 100644 --- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@ -8fd742698b4bdfef14c595ff37afa8a479b3711a \ No newline at end of file +74cf751dbcc4477a6a2a65357a1843f66c1fe6b1 \ 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 bc68e50..f8f76d8 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 @@ -c2a96d94579d1401326c2c54415d857f51a11d26 \ No newline at end of file +bdd225b96137f7fa4daf57d07cc33f0d0fce1b7d \ 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 f40de24..fed6b538 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 @@ -ae9ef76f8cf16cdaa4ab82b5a8071f60cd3f53a6 \ No newline at end of file +f92db6ffcfe256844f551baee90525ea370e0db2 \ 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 4688258..154c615 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 @@ -9835f436c53f82a41942616558efdb82cd83315b \ No newline at end of file +4941817d54f1309129b9ad58c5ea47b86355fce6 \ 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 58281b5..f29bde5 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 @@ -8d33563877efabd142c2fd01e4b058eb403a2292 \ No newline at end of file +23295db59b05c974e2f5e51436d386b350532eba \ 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 993525d..c12081a9 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 @@ -3ad68058d142d69a51a55743e783182c7c926541 \ No newline at end of file +a071050eeb2d5ac0f7cadb96d60fc5a21c280957 \ 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 34072d5..f939e52b 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 @@ -d822d5902a68f2231340f512007131a8039a2bec \ No newline at end of file +7da5e8ee4059ff299fc3a2beeebaa0d50fb47850 \ No newline at end of file
diff --git a/media/gpu/chromeos/video_decoder_pipeline.cc b/media/gpu/chromeos/video_decoder_pipeline.cc index e72d7c1..5eeaa29 100644 --- a/media/gpu/chromeos/video_decoder_pipeline.cc +++ b/media/gpu/chromeos/video_decoder_pipeline.cc
@@ -242,11 +242,6 @@ std::move(init_cb).Run(StatusCode::kDecoderUnsupportedConfig); return; } - if (config.profile() == VIDEO_CODEC_PROFILE_UNKNOWN) { - VLOGF(1) << "VideoCodecProfile is VIDEO_CODEC_PROFILE_UNKNOWN."; - std::move(init_cb).Run(StatusCode::kDecoderUnsupportedConfig); - return; - } #if BUILDFLAG(USE_CHROMEOS_PROTECTED_MEDIA) if (config.is_encrypted() && !cdm_context) { VLOGF(1) << "Encrypted streams require a CdmContext";
diff --git a/media/gpu/test/video_encoder/bitstream_file_writer.cc b/media/gpu/test/video_encoder/bitstream_file_writer.cc index 620e40f..90b0b79 100644 --- a/media/gpu/test/video_encoder/bitstream_file_writer.cc +++ b/media/gpu/test/video_encoder/bitstream_file_writer.cc
@@ -135,7 +135,7 @@ const uint8_t spatial_idx = original_spatial_indices_[metadata.spatial_idx]; if (spatial_idx > *spatial_layer_index_to_write_ || (spatial_idx < *spatial_layer_index_to_write_ && - metadata.referenced_by_upper_spatial_layers)) { + !metadata.referenced_by_upper_spatial_layers)) { // Skip |bitstream| because it contains a frame not needed by desired // spatial layers. return;
diff --git a/media/gpu/v4l2/v4l2_video_decoder.cc b/media/gpu/v4l2/v4l2_video_decoder.cc index 34ea14e..9125d5d7 100644 --- a/media/gpu/v4l2/v4l2_video_decoder.cc +++ b/media/gpu/v4l2/v4l2_video_decoder.cc
@@ -8,7 +8,6 @@ #include "base/bind.h" #include "base/callback_helpers.h" -#include "base/containers/contains.h" #include "base/logging.h" #include "base/memory/ptr_util.h" #include "base/task/post_task.h" @@ -167,7 +166,8 @@ device_ = V4L2Device::Create(); if (!device_) { - SetErrorState("failed to create V4L2 device"); + VLOGF(1) << "Failed to create V4L2 device."; + SetState(State::kError); std::move(init_cb).Run(StatusCode::kV4l2NoDevice); return; } @@ -180,9 +180,15 @@ DCHECK(!output_queue_); profile_ = config.profile(); - DCHECK_NE(profile_, VIDEO_CODEC_PROFILE_UNKNOWN); aspect_ratio_ = config.aspect_ratio(); + if (profile_ == VIDEO_CODEC_PROFILE_UNKNOWN) { + VLOGF(1) << "Unknown profile."; + SetState(State::kError); + std::move(init_cb).Run(StatusCode::kV4l2NoDecoder); + return; + } + // Call init_cb output_cb_ = std::move(output_cb); SetState(State::kInitialized); @@ -222,10 +228,8 @@ can_use_decoder_ = num_instances_.Increment() < kMaxNumOfInstances; if (!can_use_decoder_) { - SetErrorState( - base::StringPrintf("failed to initialize backend, reached maximum " - "number of decoder instances(%d)", - kMaxNumOfInstances)); + VLOGF(1) << "Reached maximum number of decoder instances (" + << kMaxNumOfInstances << ")"; return StatusCode::kDecoderCreationFailed; } @@ -249,8 +253,7 @@ if (!api_and_format.has_value()) { num_instances_.Decrement(); can_use_decoder_ = false; - SetErrorState(base::StringPrintf("no V4L2 API found for profile %s", - GetProfileName(profile_).c_str())); + VLOGF(1) << "No V4L2 API found for profile: " << GetProfileName(profile_); return StatusCode::kV4l2NoDecoder; } @@ -258,21 +261,16 @@ const __u32 kCapsRequired = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING; if (device_->Ioctl(VIDIOC_QUERYCAP, &caps) || (caps.capabilities & kCapsRequired) != kCapsRequired) { - SetErrorState( - base::StringPrintf("capability check failed, needed 0x%x, got 0x%x", - kCapsRequired, caps.capabilities)); + VLOGF(1) << "ioctl() failed: VIDIOC_QUERYCAP, " + << "caps check failed: 0x" << std::hex << caps.capabilities; return StatusCode::kV4l2FailedFileCapabilitiesCheck; } // Create Input/Output V4L2Queue input_queue_ = device_->GetQueue(V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE); - if (!input_queue_) { - SetErrorState("failed to create |input_queue_|"); - return StatusCode::kV4l2FailedResourceAllocation; - } output_queue_ = device_->GetQueue(V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE); - if (!output_queue_) { - SetErrorState("failed to create |output_queue_|"); + if (!input_queue_ || !output_queue_) { + VLOGF(1) << "Failed to create V4L2 queue."; return StatusCode::kV4l2FailedResourceAllocation; } @@ -293,27 +291,24 @@ } if (!backend_->Initialize()) { - SetErrorState("failed to initialize backend"); + VLOGF(1) << "Failed to initialize backend."; return StatusCode::kV4l2FailedResourceAllocation; } if (!SetupInputFormat(input_format_fourcc)) { - SetErrorState( - base::StringPrintf("Failed to setup input format (%s)", - FourccToString(input_format_fourcc).c_str())); + VLOGF(1) << "Failed to setup input format."; return StatusCode::kV4l2BadFormat; } if (input_queue_->AllocateBuffers(kNumInputBuffers, V4L2_MEMORY_MMAP) == 0) { - SetErrorState(base::StringPrintf("failed to allocate %d input buffers", - kNumInputBuffers)); + VLOGF(1) << "Failed to allocate input buffer."; return StatusCode::kV4l2FailedResourceAllocation; } // Start streaming input queue and polling. This is required for the stateful // decoder, and doesn't hurt for the stateless one. if (!StartStreamV4L2Queue(false)) { - SetErrorState("failed to start streaming"); + VLOGF(1) << "Failed to start streaming."; return StatusCode::kV4L2FailedToStartStreamQueue; } @@ -328,8 +323,9 @@ // Check if the format is supported. std::vector<uint32_t> formats = device_->EnumerateSupportedPixelformats( V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE); - if (!base::Contains(formats, input_format_fourcc)) { - DVLOGF(3) << "Input fourcc " << FourccToString(input_format_fourcc) + if (std::find(formats.begin(), formats.end(), input_format_fourcc) == + formats.end()) { + DVLOGF(3) << "Input fourcc " << input_format_fourcc << " not supported by device."; return false; } @@ -508,6 +504,7 @@ if (state_ == State::kInitialized) { const StatusCode status = InitializeBackend(); if (status != StatusCode::kOk) { + SetState(State::kError); std::move(trampoline_decode_cb).Run(status); return; } @@ -522,20 +519,18 @@ DCHECK_CALLED_ON_VALID_SEQUENCE(decoder_sequence_checker_); DVLOGF(3); - if (!input_queue_->Streamon()) { - SetErrorState("failed to streamon V4L2 input queue"); - return false; - } - if (start_output_queue && !output_queue_->Streamon()) { - SetErrorState("failed to streamon V4L2 output queue"); + if (!input_queue_->Streamon() || + (start_output_queue && !output_queue_->Streamon())) { + VLOGF(1) << "Failed to streamon V4L2 queue."; + SetState(State::kError); return false; } if (!device_->StartPolling( base::BindRepeating(&V4L2VideoDecoder::ServiceDeviceTask, weak_this_), - base::BindRepeating(&V4L2VideoDecoder::SetErrorState, weak_this_, - "V4L2DevicePoller error"))) { - SetErrorState("failed to start polling V4L2Device"); + base::BindRepeating(&V4L2VideoDecoder::SetState, weak_this_, + State::kError))) { + SetState(State::kError); return false; } @@ -547,7 +542,7 @@ DVLOGF(3); if (!device_->StopPolling()) { - SetErrorState("failed to stop polling V4L2Device"); + SetState(State::kError); return false; } @@ -628,18 +623,18 @@ return; if (!output_queue_->DeallocateBuffers()) { - SetErrorState("failed to deallocate buffers"); + SetState(State::kError); return; } if (!backend_->ApplyResolution(pic_size, visible_rect, num_output_frames_)) { - SetErrorState("failed to apply resolution"); + SetState(State::kError); return; } if (!SetupOutputFormat(pic_size, visible_rect)) { - // TODO(b/158716673): improve error reporting from SetupOutputFormat(). - SetErrorState("failed to setup output format"); + VLOGF(1) << "Failed to setup output format."; + SetState(State::kError); return; } @@ -649,27 +644,20 @@ (type == V4L2_MEMORY_DMABUF) ? VIDEO_MAX_FRAME : num_output_frames_; if (output_queue_->AllocateBuffers(v4l2_num_buffers, type) == 0) { - SetErrorState( - base::StringPrintf("failed to allocate %d |output_queue_| buffers", - v4l2_num_buffers) - .c_str()); + VLOGF(1) << "Failed to request output buffers."; + SetState(State::kError); return; } - const auto actual_v4l2_num_buffers = output_queue_->AllocatedBuffersCount(); - // TODO(mcasas): Is this comparison right or should we - // s/num_output_frames_/v4l2_num_buffers/? - if (actual_v4l2_num_buffers < num_output_frames_) { - SetErrorState( - base::StringPrintf( - "allocated num buffers (%d) is less than the expected (%d)", - actual_v4l2_num_buffers, num_output_frames_) - .c_str()); + if (output_queue_->AllocatedBuffersCount() < num_output_frames_) { + VLOGF(1) << "Could not allocate requested number of output buffers."; + SetState(State::kError); return; } - // StartStreamV4L2Queue() already calls SetErrorState(...) inside. - if (!StartStreamV4L2Queue(true)) + if (!StartStreamV4L2Queue(true)) { + SetState(State::kError); return; + } // Now notify |backend_| that changing resolution is done successfully. // Note: |backend_| is owned by this, using base::Unretained() is safe. @@ -698,7 +686,7 @@ std::tie(success, dequeued_buffer) = output_queue_->DequeueBuffer(); if (!success) { - SetErrorState("failed to dequeue buffer from |output_queue_|"); + SetState(State::kError); return; } if (!dequeued_buffer) @@ -713,7 +701,7 @@ std::tie(success, dequeued_buffer) = input_queue_->DequeueBuffer(); if (!success) { - SetErrorState("failed to dequeue buffer from |input_queue_|"); + SetState(State::kError); return; } if (!dequeued_buffer) @@ -763,8 +751,7 @@ if (state_ == new_state) return; if (state_ == State::kError) { - DVLOGF(3) - << "V4L2VideoDecoder is in State::kError, ignoring state transition."; + DVLOGF(3) << "Already in kError state."; return; } @@ -808,18 +795,11 @@ return; } -void V4L2VideoDecoder::SetErrorState(std::string message) { - LOG(ERROR) << message; - MEDIA_LOG(ERROR, media_log_) << "V4L2VideoDecoder: " << message; - SetState(State::kError); -} - void V4L2VideoDecoder::OnBackendError() { DCHECK_CALLED_ON_VALID_SEQUENCE(decoder_sequence_checker_); DVLOGF(2); - // TODO(b/158716673): improve error reporting from backends. - SetErrorState("V4L2VideoDecoderBackend signalled an error"); + SetState(State::kError); } bool V4L2VideoDecoder::IsDecoding() const {
diff --git a/media/gpu/v4l2/v4l2_video_decoder.h b/media/gpu/v4l2/v4l2_video_decoder.h index 4f0584e..784816e 100644 --- a/media/gpu/v4l2/v4l2_video_decoder.h +++ b/media/gpu/v4l2/v4l2_video_decoder.h
@@ -145,13 +145,9 @@ const gfx::Rect& visible_rect, const size_t num_output_frames); - // Change the |state_| and check the state transition is valid. + // Change the state and check the state transition is valid. void SetState(State new_state); - // Tell SetState() to change the |state_| to kError and send |message| to - // MediaLog and to LOG(ERROR). - void SetErrorState(std::string message); - // Continue backend initialization. Decoder will not take a hardware context // until InitializeBackend() is called. StatusCode InitializeBackend();
diff --git a/media/video/gpu_memory_buffer_video_frame_pool.cc b/media/video/gpu_memory_buffer_video_frame_pool.cc index 71a0372d..a7835794 100644 --- a/media/video/gpu_memory_buffer_video_frame_pool.cc +++ b/media/video/gpu_memory_buffer_video_frame_pool.cc
@@ -48,12 +48,17 @@ namespace media { -bool GpuMemoryBufferVideoFramePool::MultiPlaneVideoSharedImagesEnabled() { +const base::Feature kMultiPlaneSoftwareVideoSharedImages { + "MultiPlaneSoftwareVideoSharedImages", #if defined(OS_MAC) - return true; + base::FEATURE_ENABLED_BY_DEFAULT #else - return false; + base::FEATURE_DISABLED_BY_DEFAULT #endif +}; + +bool GpuMemoryBufferVideoFramePool::MultiPlaneVideoSharedImagesEnabled() { + return base::FeatureList::IsEnabled(kMultiPlaneSoftwareVideoSharedImages); } // Implementation of a pool of GpuMemoryBuffers used to back VideoFrames.
diff --git a/net/base/cache_type.h b/net/base/cache_type.h index 3f2989b..afb12b4 100644 --- a/net/base/cache_type.h +++ b/net/base/cache_type.h
@@ -19,8 +19,11 @@ PNACL_CACHE, // Backing store the PNaCl translation cache GENERATED_BYTE_CODE_CACHE, // Backing store for renderer generated data like // bytecode for JavaScript. - GENERATED_NATIVE_CODE_CACHE, // Backing store for renderer generated data - // like native code for WebAssembly. + GENERATED_NATIVE_CODE_CACHE, // Backing store for renderer generated data + // like native code for WebAssembly. + GENERATED_WEBUI_BYTE_CODE_CACHE, // Backing store for renderer generated data + // like bytecode for JavaScript from WebUI + // pages. }; // The types of disk cache backend, only used at backend instantiation.
diff --git a/net/base/features.cc b/net/base/features.cc index c4dcfe0..8ba810c9 100644 --- a/net/base/features.cc +++ b/net/base/features.cc
@@ -259,5 +259,8 @@ const base::Feature kSamePartyCookiesConsideredFirstParty{ "SamePartyCookiesConsideredFirstParty", base::FEATURE_DISABLED_BY_DEFAULT}; +const base::Feature kPartitionedCookies{"PartitionedCookies", + base::FEATURE_DISABLED_BY_DEFAULT}; + } // namespace features } // namespace net
diff --git a/net/base/features.h b/net/base/features.h index 58d2013..78287bc 100644 --- a/net/base/features.h +++ b/net/base/features.h
@@ -381,6 +381,12 @@ // privacy mode is disabled in same-party contexts.) NET_EXPORT extern const base::Feature kSamePartyCookiesConsideredFirstParty; +// When enabled, sites can opt-in to having their cookies partitioned by +// top-level site with the Partitioned attribute. Partitioned cookies will only +// be sent when the browser is on the same top-level site that it was on when +// the cookie was set. +NET_EXPORT extern const base::Feature kPartitionedCookies; + } // namespace features } // namespace net
diff --git a/net/base/network_change_notifier_fuchsia_unittest.cc b/net/base/network_change_notifier_fuchsia_unittest.cc index e8ac281..893bfa7 100644 --- a/net/base/network_change_notifier_fuchsia_unittest.cc +++ b/net/base/network_change_notifier_fuchsia_unittest.cc
@@ -78,9 +78,9 @@ fuchsia::net::interfaces::Properties DefaultInterfaceProperties( fuchsia::hardware::network::DeviceClass device_class = - fuchsia::hardware::network::DeviceClass::UNKNOWN) { - // For most tests a live interface with an IPv4 address and an unknown class - // is sufficient. + fuchsia::hardware::network::DeviceClass::ETHERNET) { + // For most tests a live interface with an IPv4 address and ethernet class is + // sufficient. fuchsia::net::interfaces::Properties interface; interface.set_id(kDefaultInterfaceId); interface.set_online(true); @@ -94,15 +94,15 @@ } fuchsia::net::interfaces::Properties SecondaryInterfaceProperties() { - // For most tests a live interface with an IPv4 address and an unknown class - // is sufficient. + // For most tests a live interface with an IPv4 address and ethernet class is + // sufficient. fuchsia::net::interfaces::Properties interface; interface.set_id(kSecondaryInterfaceId); interface.set_online(true); interface.set_has_default_ipv4_route(false); interface.set_has_default_ipv6_route(false); interface.set_device_class(fuchsia::net::interfaces::DeviceClass::WithDevice( - fuchsia::hardware::network::DeviceClass::UNKNOWN)); + fuchsia::hardware::network::DeviceClass::ETHERNET)); interface.set_addresses(MakeSingleItemVec( InterfaceAddressFrom(kSecondaryIPv4Address, kSecondaryIPv4Prefix))); return interface; @@ -434,7 +434,7 @@ // Set a live interface with an IP address and create the notifier. watcher_.SetInitial(DefaultInterfaceProperties()); CreateNotifier(); - EXPECT_EQ(NetworkChangeNotifier::ConnectionType::CONNECTION_UNKNOWN, + EXPECT_EQ(NetworkChangeNotifier::ConnectionType::CONNECTION_ETHERNET, notifier_->GetCurrentConnectionType()); // Push an event with no side-effects. watcher_.PushEvent(MakeChangeEvent(kDefaultInterfaceId, [](auto*) {})); @@ -477,7 +477,7 @@ TEST_F(NetworkChangeNotifierFuchsiaTest, IpChange) { watcher_.SetInitial(DefaultInterfaceProperties()); CreateNotifier(); - EXPECT_EQ(NetworkChangeNotifier::ConnectionType::CONNECTION_UNKNOWN, + EXPECT_EQ(NetworkChangeNotifier::ConnectionType::CONNECTION_ETHERNET, notifier_->GetCurrentConnectionType()); watcher_.PushEvent(MakeChangeEvent( @@ -496,7 +496,7 @@ InterfaceAddressFrom(kDefaultIPv6Address, kDefaultIPv6Prefix))); watcher_.SetInitial(std::move(props)); CreateNotifier(); - EXPECT_EQ(NetworkChangeNotifier::ConnectionType::CONNECTION_UNKNOWN, + EXPECT_EQ(NetworkChangeNotifier::ConnectionType::CONNECTION_ETHERNET, notifier_->GetCurrentConnectionType()); watcher_.PushEvent(MakeChangeEvent( @@ -516,7 +516,7 @@ watcher_.SetInitial(std::move(props)); CreateNotifier(); - EXPECT_EQ(NetworkChangeNotifier::ConnectionType::CONNECTION_UNKNOWN, + EXPECT_EQ(NetworkChangeNotifier::ConnectionType::CONNECTION_ETHERNET, notifier_->GetCurrentConnectionType()); watcher_.PushEvent(MakeChangeEvent( @@ -536,7 +536,7 @@ TEST_F(NetworkChangeNotifierFuchsiaTest, Ipv6AdditionalIpChange) { watcher_.SetInitial(DefaultInterfaceProperties()); CreateNotifier(); - EXPECT_EQ(NetworkChangeNotifier::ConnectionType::CONNECTION_UNKNOWN, + EXPECT_EQ(NetworkChangeNotifier::ConnectionType::CONNECTION_ETHERNET, notifier_->GetCurrentConnectionType()); watcher_.PushEvent(MakeChangeEvent( @@ -556,7 +556,7 @@ TEST_F(NetworkChangeNotifierFuchsiaTest, InterfaceDown) { watcher_.SetInitial(DefaultInterfaceProperties()); CreateNotifier(); - EXPECT_EQ(NetworkChangeNotifier::ConnectionType::CONNECTION_UNKNOWN, + EXPECT_EQ(NetworkChangeNotifier::ConnectionType::CONNECTION_ETHERNET, notifier_->GetCurrentConnectionType()); watcher_.PushEvent(MakeChangeEvent( @@ -583,14 +583,14 @@ })); EXPECT_TRUE(type_observer_->RunAndExpectConnectionTypes( - {NetworkChangeNotifier::ConnectionType::CONNECTION_UNKNOWN})); + {NetworkChangeNotifier::ConnectionType::CONNECTION_ETHERNET})); EXPECT_TRUE(ip_observer_->RunAndExpectCallCount(1)); } TEST_F(NetworkChangeNotifierFuchsiaTest, InterfaceDeleted) { watcher_.SetInitial(DefaultInterfaceProperties()); CreateNotifier(); - EXPECT_EQ(NetworkChangeNotifier::ConnectionType::CONNECTION_UNKNOWN, + EXPECT_EQ(NetworkChangeNotifier::ConnectionType::CONNECTION_ETHERNET, notifier_->GetCurrentConnectionType()); watcher_.PushEvent(
diff --git a/net/disk_cache/blockfile/histogram_macros.h b/net/disk_cache/blockfile/histogram_macros.h index a5de85cc..f709e2d0 100644 --- a/net/disk_cache/blockfile/histogram_macros.h +++ b/net/disk_cache/blockfile/histogram_macros.h
@@ -104,6 +104,7 @@ break; \ case net::GENERATED_BYTE_CODE_CACHE: \ case net::GENERATED_NATIVE_CODE_CACHE: \ + case net::GENERATED_WEBUI_BYTE_CODE_CACHE: \ break; \ } \ }
diff --git a/net/disk_cache/cache_util.cc b/net/disk_cache/cache_util.cc index 2a4c34d..c290381 100644 --- a/net/disk_cache/cache_util.cc +++ b/net/disk_cache/cache_util.cc
@@ -179,17 +179,20 @@ percent_relative_size) / 100; - if (available < 0) - return static_cast<int32_t>(scaled_default_disk_cache_size); + int64_t preferred_cache_size = scaled_default_disk_cache_size; - int64_t preferred_cache_size = PreferredCacheSizeInternal(available); + // If available disk space is known, use it to compute a better value for + // preferred_cache_size. + if (available >= 0) { + preferred_cache_size = PreferredCacheSizeInternal(available); - // If the preferred cache size is less than 20% of the available space, scale - // for the field trial, capping the scaled value at 20% of the available - // space. - if (preferred_cache_size < available / 5) { - preferred_cache_size = std::min( - (preferred_cache_size * percent_relative_size) / 100, available / 5); + // If the preferred cache size is less than 20% of the available space, + // scale for the field trial, capping the scaled value at 20% of the + // available space. + if (preferred_cache_size < available / 5) { + preferred_cache_size = std::min( + (preferred_cache_size * percent_relative_size) / 100, available / 5); + } } // Limit cache size to somewhat less than kint32max to avoid potential @@ -204,6 +207,9 @@ // Make the size limit 50% larger in that case. if (type == net::GENERATED_NATIVE_CODE_CACHE) { size_limit = (size_limit / 2) * 3; + } else if (type == net::GENERATED_WEBUI_BYTE_CODE_CACHE) { + size_limit = + std::min(size_limit, static_cast<int64_t>(kMaxWebUICodeCacheSize)); } DCHECK_LT(size_limit, std::numeric_limits<int32_t>::max());
diff --git a/net/disk_cache/cache_util_unittest.cc b/net/disk_cache/cache_util_unittest.cc index 7f8df01e..39edcbe 100644 --- a/net/disk_cache/cache_util_unittest.cc +++ b/net/disk_cache/cache_util_unittest.cc
@@ -151,6 +151,15 @@ EXPECT_EQ(test_case.expected_without_trial, PreferredCacheSize(test_case.available)) << test_case.available; + + // Preferred size for WebUI code cache matches expected_without_trial but + // should never be more than 5 MB. + int expected_webui_code_cache_size = + std::min(5 * 1024 * 1024, test_case.expected_without_trial); + EXPECT_EQ(expected_webui_code_cache_size, + PreferredCacheSize(test_case.available, + net::GENERATED_WEBUI_BYTE_CODE_CACHE)) + << test_case.available; } // Check that the cache size cap is 50% higher for native code caches. @@ -189,6 +198,15 @@ EXPECT_EQ(test_case.expected_without_trial, PreferredCacheSize(test_case.available, net::GENERATED_BYTE_CODE_CACHE)); + + // Preferred size for WebUI code cache is not scaled by the trial, and + // should never be more than 5 MB. + int expected_webui_code_cache_size = + std::min(5 * 1024 * 1024, test_case.expected_without_trial); + EXPECT_EQ(expected_webui_code_cache_size, + PreferredCacheSize(test_case.available, + net::GENERATED_WEBUI_BYTE_CODE_CACHE)) + << test_case.available; } // Check that the cache size cap is 50% higher for native code caches but is
diff --git a/net/disk_cache/disk_cache.h b/net/disk_cache/disk_cache.h index 4500dba..e15e891 100644 --- a/net/disk_cache/disk_cache.h +++ b/net/disk_cache/disk_cache.h
@@ -551,6 +551,13 @@ int available_len = 0; }; +// The maximum size of cache that can be created for type +// GENERATED_WEBUI_BYTE_CODE_CACHE. There are only a handful of commonly +// accessed WebUI pages, which can each cache 0.5 - 1.5 MB of code. There is no +// point in having a very large WebUI code cache, even if lots of disk space is +// available. +constexpr int kMaxWebUICodeCacheSize = 5 * 1024 * 1024; + } // namespace disk_cache #endif // NET_DISK_CACHE_DISK_CACHE_H_
diff --git a/net/disk_cache/simple/simple_backend_impl.cc b/net/disk_cache/simple/simple_backend_impl.cc index 75ef840..d79a9cac 100644 --- a/net/disk_cache/simple/simple_backend_impl.cc +++ b/net/disk_cache/simple/simple_backend_impl.cc
@@ -174,6 +174,14 @@ } } +SimpleEntryImpl::OperationsMode CacheTypeToOperationsMode(net::CacheType type) { + return (type == net::DISK_CACHE || type == net::GENERATED_BYTE_CODE_CACHE || + type == net::GENERATED_NATIVE_CODE_CACHE || + type == net::GENERATED_WEBUI_BYTE_CODE_CACHE) + ? SimpleEntryImpl::OPTIMISTIC_OPERATIONS + : SimpleEntryImpl::NON_OPTIMISTIC_OPERATIONS; +} + } // namespace const base::Feature SimpleBackendImpl::kPrioritizedSimpleCacheTasks{ @@ -228,11 +236,7 @@ {base::MayBlock(), base::TaskPriority::USER_BLOCKING, base::TaskShutdownBehavior::BLOCK_SHUTDOWN})), orig_max_size_(max_bytes), - entry_operations_mode_((cache_type == net::DISK_CACHE || - cache_type == net::GENERATED_BYTE_CODE_CACHE || - cache_type == net::GENERATED_NATIVE_CODE_CACHE) - ? SimpleEntryImpl::OPTIMISTIC_OPERATIONS - : SimpleEntryImpl::NON_OPTIMISTIC_OPERATIONS), + entry_operations_mode_(CacheTypeToOperationsMode(cache_type)), post_doom_waiting_( base::MakeRefCounted<SimplePostDoomWaiterTable>(cache_type)), net_log_(net_log) {
diff --git a/net/disk_cache/simple/simple_histogram_macros.h b/net/disk_cache/simple/simple_histogram_macros.h index f6768a0..192907f 100644 --- a/net/disk_cache/simple/simple_histogram_macros.h +++ b/net/disk_cache/simple/simple_histogram_macros.h
@@ -35,6 +35,7 @@ ("SimpleCache.Code." uma_name, ##__VA_ARGS__)); \ break; \ case net::GENERATED_NATIVE_CODE_CACHE: \ + case net::GENERATED_WEBUI_BYTE_CODE_CACHE: \ case net::SHADER_CACHE: \ break; \ default: \
diff --git a/net/disk_cache/simple/simple_index.cc b/net/disk_cache/simple/simple_index.cc index 37bd23ac..03485ed16 100644 --- a/net/disk_cache/simple/simple_index.cc +++ b/net/disk_cache/simple/simple_index.cc
@@ -411,7 +411,9 @@ eviction_in_progress_ = true; eviction_start_time_ = base::TimeTicks::Now(); - bool use_size_heuristic = (cache_type_ != net::GENERATED_BYTE_CODE_CACHE); + bool use_size_heuristic = + (cache_type_ != net::GENERATED_BYTE_CODE_CACHE && + cache_type_ != net::GENERATED_WEBUI_BYTE_CODE_CACHE); // Flatten for sorting. std::vector<std::pair<uint64_t, const EntrySet::value_type*>> entries;
diff --git a/remoting/host/it2me/it2me_host.cc b/remoting/host/it2me/it2me_host.cc index 2eb9d3a..f3881a9 100644 --- a/remoting/host/it2me/it2me_host.cc +++ b/remoting/host/it2me/it2me_host.cc
@@ -483,7 +483,7 @@ DCHECK(state == It2MeHostState::kDisconnected) << It2MeHostStateToString(state); break; - }; + } state_ = state;
diff --git a/testing/unexpected_passes_common/__init__.py b/testing/unexpected_passes_common/__init__.py index fa6e05e2..8a659964 100644 --- a/testing/unexpected_passes_common/__init__.py +++ b/testing/unexpected_passes_common/__init__.py
@@ -6,7 +6,8 @@ import sys CHROMIUM_SRC_DIR = os.path.join(os.path.dirname(__file__), '..', '..') -sys.path.append(os.path.join(CHROMIUM_SRC_DIR, 'content', 'test', 'gpu')) +TYP_PATH = os.path.join(CHROMIUM_SRC_DIR, 'third_party', 'catapult', + 'third_party', 'typ') -from gpu_tests import path_util -path_util.SetupTypPath() \ No newline at end of file +if TYP_PATH not in sys.path: + sys.path.append(TYP_PATH)
diff --git a/testing/unexpected_passes_common/builders.py b/testing/unexpected_passes_common/builders.py index 77bc43c..a15cc63 100644 --- a/testing/unexpected_passes_common/builders.py +++ b/testing/unexpected_passes_common/builders.py
@@ -144,7 +144,7 @@ fake_builders = self.GetFakeCiBuilders() if ci_builder in fake_builders: - mirrored_builders.add(fake_builders[ci_builder]) + mirrored_builders |= fake_builders[ci_builder] logging.debug('%s is a fake CI builder mirrored by %s', ci_builder, fake_builders[ci_builder]) return mirrored_builders, True @@ -213,9 +213,9 @@ """Gets a mapping of fake CI builders to their mirrored trybots. Returns: - A dict of string -> string. Each key is a CI builder that doesn't actually - exist and each value is a try builder that mirrors the CI builder but does - exist. + A dict of string -> set(string). Each key is a CI builder that doesn't + actually exist and each value is a set of try builders that mirror the CI + builder but do exist. """ raise NotImplementedError()
diff --git a/testing/unexpected_passes_common/builders_unittest.py b/testing/unexpected_passes_common/builders_unittest.py index 91f3924..f0b106d 100755 --- a/testing/unexpected_passes_common/builders_unittest.py +++ b/testing/unexpected_passes_common/builders_unittest.py
@@ -172,7 +172,7 @@ def testFakeCiBuilder(self): """Tests that a fake CI builder gets properly mapped.""" - self._fake_ci_mock.return_value = {'foo_ci': 'foo_try'} + self._fake_ci_mock.return_value = {'foo_ci': {'foo_try'}} try_builder, found_mirror = ( self._builders_instance._GetMirroredBuildersForCiBuilder('foo_ci')) self.assertTrue(found_mirror)
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index 6e9f343..18582bf1 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -5194,6 +5194,25 @@ ] } ], + "MuteNotificationSnoozeAction": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "MuteNotificationSnoozeAction" + ] + } + ] + } + ], "MutingCompromisedCredentials": [ { "platforms": [ @@ -8447,24 +8466,6 @@ ] } ], - "UseNotificationCompatBuilder": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled_20210625", - "enable_features": [ - "UseNotificationCompatBuilder" - ], - "disable_features": [ - "AllowRemoteContextForNotifications" - ] - } - ] - } - ], "UseOzonePlatform": [ { "platforms": [ @@ -8696,6 +8697,12 @@ ], "experiments": [ { + "name": "Control", + "disable_features": [ + "V8ScriptAblation" + ] + }, + { "name": "DelayOnce50ms", "params": { "V8ScriptDelayOnceMs": "50"
diff --git a/third_party/blink/public/mojom/devtools/inspector_issue.mojom b/third_party/blink/public/mojom/devtools/inspector_issue.mojom index 777e608..9da98504 100644 --- a/third_party/blink/public/mojom/devtools/inspector_issue.mojom +++ b/third_party/blink/public/mojom/devtools/inspector_issue.mojom
@@ -8,6 +8,7 @@ import "services/network/public/mojom/cookie_manager.mojom"; import "services/network/public/mojom/blocked_by_response_reason.mojom"; import "third_party/blink/public/mojom/fetch/fetch_api_request.mojom"; +import "mojo/public/mojom/base/unguessable_token.mojom"; // A code that uniquely identifies an issue. This type should be descriptive // enough for the front-end to provide a clear description of the issue. @@ -183,6 +184,7 @@ TrustedWebActivityIssueDetails? twa_issue_details; HeavyAdIssueDetails? heavy_ad_issue_details; LowTextContrastIssue? low_text_contrast_details; + mojo_base.mojom.UnguessableToken? issue_id; }; struct InspectorIssueInfo {
diff --git a/third_party/blink/public/web/web_security_policy.h b/third_party/blink/public/web/web_security_policy.h index d6242be..c6613ea 100644 --- a/third_party/blink/public/web/web_security_policy.h +++ b/third_party/blink/public/web/web_security_policy.h
@@ -136,6 +136,12 @@ // Registers an URL scheme as trusted browser UI. BLINK_EXPORT static void RegisterURLSchemeAsWebUI(const WebString&); + // Registers an URL scheme which can use code caching but must check in the + // renderer whether the script content has changed rather than relying on a + // response time match from the network cache. + BLINK_EXPORT static void RegisterURLSchemeAsCodeCacheWithHashing( + const WebString&); + private: WebSecurityPolicy() = delete; };
diff --git a/third_party/blink/renderer/bindings/core/v8/boxed_v8_module_test.cc b/third_party/blink/renderer/bindings/core/v8/boxed_v8_module_test.cc index a08b2d3..5b4b91c29 100644 --- a/third_party/blink/renderer/bindings/core/v8/boxed_v8_module_test.cc +++ b/third_party/blink/renderer/bindings/core/v8/boxed_v8_module_test.cc
@@ -27,11 +27,11 @@ Member<BoxedV8Module> module_deleted(kMemberDeletedValue); v8::Local<v8::Module> local_module_a = ModuleTestBase::CompileModule( - scope.GetIsolate(), "export const a = 'a';", js_url_a); + scope.GetScriptState(), "export const a = 'a';", js_url_a); Member<BoxedV8Module> module_a = MakeGarbageCollected<BoxedV8Module>(scope.GetIsolate(), local_module_a); v8::Local<v8::Module> local_module_b = ModuleTestBase::CompileModule( - scope.GetIsolate(), "export const b = 'b';", js_url_b); + scope.GetScriptState(), "export const b = 'b';", js_url_b); Member<BoxedV8Module> module_b = MakeGarbageCollected<BoxedV8Module>(scope.GetIsolate(), local_module_b);
diff --git a/third_party/blink/renderer/bindings/core/v8/module_record.cc b/third_party/blink/renderer/bindings/core/v8/module_record.cc index f776fc4..191b1168 100644 --- a/third_party/blink/renderer/bindings/core/v8/module_record.cc +++ b/third_party/blink/renderer/bindings/core/v8/module_record.cc
@@ -48,13 +48,14 @@ } v8::Local<v8::Module> ModuleRecord::Compile( - v8::Isolate* isolate, + ScriptState* script_state, const ModuleScriptCreationParams& params, const ScriptFetchOptions& options, const TextPosition& text_position, ExceptionState& exception_state, mojom::blink::V8CacheOptions v8_cache_options, ModuleRecordProduceCacheData** out_produce_cache_data) { + v8::Isolate* isolate = script_state->GetIsolate(); v8::TryCatch try_catch(isolate); v8::Local<v8::Module> module; @@ -69,6 +70,12 @@ v8::ScriptCompiler::CompileOptions compile_options; V8CodeCache::ProduceCacheOptions produce_cache_options; v8::ScriptCompiler::NoCacheReason no_cache_reason; + ExecutionContext* execution_context = ExecutionContext::From(script_state); + if (params.CacheHandler()) { + params.CacheHandler()->Check( + ExecutionContext::GetCodeCacheHostFromContext(execution_context), + params.GetSourceText()); + } std::tie(compile_options, produce_cache_options, no_cache_reason) = V8CodeCache::GetCompileOptions(v8_cache_options, params.CacheHandler(), params.GetSourceText().length(),
diff --git a/third_party/blink/renderer/bindings/core/v8/module_record.h b/third_party/blink/renderer/bindings/core/v8/module_record.h index df82687..b14dfb0 100644 --- a/third_party/blink/renderer/bindings/core/v8/module_record.h +++ b/third_party/blink/renderer/bindings/core/v8/module_record.h
@@ -59,7 +59,7 @@ public: static v8::Local<v8::Module> Compile( - v8::Isolate*, + ScriptState*, const ModuleScriptCreationParams& params, const ScriptFetchOptions&, const TextPosition&,
diff --git a/third_party/blink/renderer/bindings/core/v8/module_record_test.cc b/third_party/blink/renderer/bindings/core/v8/module_record_test.cc index 39d0164..e4358db 100644 --- a/third_party/blink/renderer/bindings/core/v8/module_record_test.cc +++ b/third_party/blink/renderer/bindings/core/v8/module_record_test.cc
@@ -115,7 +115,7 @@ V8TestingScope scope; const KURL js_url("https://example.com/foo.js"); v8::Local<v8::Module> module = ModuleTestBase::CompileModule( - scope.GetIsolate(), "export const a = 42;", js_url); + scope.GetScriptState(), "export const a = 42;", js_url); ASSERT_FALSE(module.IsEmpty()); } @@ -123,7 +123,7 @@ V8TestingScope scope; const KURL js_url("https://example.com/foo.js"); v8::Local<v8::Module> module = ModuleTestBase::CompileModule( - scope.GetIsolate(), "123 = 456", js_url, scope.GetExceptionState()); + scope.GetScriptState(), "123 = 456", js_url, scope.GetExceptionState()); ASSERT_TRUE(module.IsEmpty()); EXPECT_TRUE(scope.GetExceptionState().HadException()); } @@ -132,7 +132,7 @@ V8TestingScope scope; const KURL js_url("https://example.com/foo.js"); v8::Local<v8::Module> module = ModuleTestBase::CompileModule( - scope.GetIsolate(), "import 'a'; import 'b'; export const c = 'c';", + scope.GetScriptState(), "import 'a'; import 'b'; export const c = 'c';", js_url); ASSERT_FALSE(module.IsEmpty()); @@ -149,7 +149,7 @@ v8::V8::SetFlagsFromString("--harmony-import-assertions"); const KURL js_url("https://example.com/foo.js"); v8::Local<v8::Module> module = ModuleTestBase::CompileModule( - scope.GetIsolate(), + scope.GetScriptState(), "import 'a' assert { };" "import 'b' assert { type: 'x'};" "import 'c' assert { foo: 'y', type: 'z' };", @@ -179,7 +179,7 @@ const KURL js_url("https://example.com/foo.js"); v8::Local<v8::Module> module = ModuleTestBase::CompileModule( - scope.GetIsolate(), "export const a = 42;", js_url); + scope.GetScriptState(), "export const a = 42;", js_url); ASSERT_FALSE(module.IsEmpty()); ScriptValue exception = ModuleRecord::Instantiate(scope.GetScriptState(), module, js_url); @@ -197,19 +197,19 @@ const KURL js_url_a("https://example.com/a.js"); v8::Local<v8::Module> module_a = ModuleTestBase::CompileModule( - scope.GetIsolate(), "export const a = 'a';", js_url_a); + scope.GetScriptState(), "export const a = 'a';", js_url_a); ASSERT_FALSE(module_a.IsEmpty()); resolver->PrepareMockResolveResult(module_a); const KURL js_url_b("https://example.com/b.js"); v8::Local<v8::Module> module_b = ModuleTestBase::CompileModule( - scope.GetIsolate(), "export const b = 'b';", js_url_b); + scope.GetScriptState(), "export const b = 'b';", js_url_b); ASSERT_FALSE(module_b.IsEmpty()); resolver->PrepareMockResolveResult(module_b); const KURL js_url_c("https://example.com/c.js"); v8::Local<v8::Module> module = ModuleTestBase::CompileModule( - scope.GetIsolate(), "import 'a'; import 'b'; export const c = 123;", + scope.GetScriptState(), "import 'a'; import 'b'; export const c = 123;", js_url_c); ASSERT_FALSE(module.IsEmpty()); ScriptValue exception = @@ -230,7 +230,7 @@ const KURL js_url_f("https://example.com/failure.js"); v8::Local<v8::Module> module_failure = ModuleTestBase::CompileModule( - scope.GetIsolate(), "nonexistent_function()", js_url_f); + scope.GetScriptState(), "nonexistent_function()", js_url_f); ASSERT_FALSE(module_failure.IsEmpty()); ASSERT_TRUE( ModuleRecord::Instantiate(state, module_failure, js_url_f).IsEmpty()); @@ -242,8 +242,8 @@ const KURL js_url_c("https://example.com/c.js"); v8::Local<v8::Module> module = ModuleTestBase::CompileModule( - scope.GetIsolate(), "import 'failure'; export const c = 123;", js_url_c, - scope.GetExceptionState()); + scope.GetScriptState(), "import 'failure'; export const c = 123;", + js_url_c, scope.GetExceptionState()); ASSERT_FALSE(module.IsEmpty()); ASSERT_TRUE(ModuleRecord::Instantiate(state, module, js_url_c).IsEmpty()); ScriptEvaluationResult evaluation_result2 = @@ -268,7 +268,8 @@ const KURL js_url("https://example.com/foo.js"); v8::Local<v8::Module> module = ModuleTestBase::CompileModule( - scope.GetIsolate(), "export const a = 42; window.foo = 'bar';", js_url); + scope.GetScriptState(), "export const a = 42; window.foo = 'bar';", + js_url); ASSERT_FALSE(module.IsEmpty()); ScriptValue exception = ModuleRecord::Instantiate(scope.GetScriptState(), module, js_url); @@ -301,8 +302,8 @@ MakeGarbageCollected<ModuleRecordTestModulator>(scope.GetScriptState()); const KURL js_url("https://example.com/foo.js"); - v8::Local<v8::Module> module = - ModuleTestBase::CompileModule(scope.GetIsolate(), "throw 'bar';", js_url); + v8::Local<v8::Module> module = ModuleTestBase::CompileModule( + scope.GetScriptState(), "throw 'bar';", js_url); ASSERT_FALSE(module.IsEmpty()); ScriptValue instantiation_exception = ModuleRecord::Instantiate(scope.GetScriptState(), module, js_url);
diff --git a/third_party/blink/renderer/bindings/core/v8/script_streamer.cc b/third_party/blink/renderer/bindings/core/v8/script_streamer.cc index 31a4c0d6..3dd967b25 100644 --- a/third_party/blink/renderer/bindings/core/v8/script_streamer.cc +++ b/third_party/blink/renderer/bindings/core/v8/script_streamer.cc
@@ -587,7 +587,15 @@ } } - if (V8CodeCache::HasCodeCache(script_resource_->CacheHandler())) { + // Here we can't call Check on the cache handler because it requires the + // script source, which would require having already loaded the script. It is + // OK at this point to disable streaming even though we might end up rejecting + // the cached data later, because we expect that the cached data is usually + // acceptable. If we detect a content mismatch once the content is loaded, + // then we reset the code cache entry to just a timestamp, so this condition + // will allow streaming the next time we load the resource. + if (V8CodeCache::HasCodeCache(script_resource_->CacheHandler(), + SingleCachedMetadataHandler::kAllowUnchecked)) { // The resource has a code cache entry, so it's unnecessary to stream // and parse the code. // TODO(leszeks): Can we even reach this code path with data pipes?
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_code_cache.cc b/third_party/blink/renderer/bindings/core/v8/v8_code_cache.cc index fee3f51..e44fb6a 100644 --- a/third_party/blink/renderer/bindings/core/v8/v8_code_cache.cc +++ b/third_party/blink/renderer/bindings/core/v8/v8_code_cache.cc
@@ -64,12 +64,13 @@ } // namespace bool V8CodeCache::HasCodeCache( - const SingleCachedMetadataHandler* cache_handler) { + const SingleCachedMetadataHandler* cache_handler, + SingleCachedMetadataHandler::GetCachedMetadataBehavior behavior) { if (!cache_handler) return false; uint32_t code_cache_tag = V8CodeCache::TagForCodeCache(cache_handler); - return cache_handler->GetCachedMetadata(code_cache_tag).get(); + return cache_handler->GetCachedMetadata(code_cache_tag, behavior).get(); } v8::ScriptCompiler::CachedData* V8CodeCache::CreateCachedData(
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_code_cache.h b/third_party/blink/renderer/bindings/core/v8/v8_code_cache.h index 34e202370..d5d76f9 100644 --- a/third_party/blink/renderer/bindings/core/v8/v8_code_cache.h +++ b/third_party/blink/renderer/bindings/core/v8/v8_code_cache.h
@@ -12,6 +12,7 @@ #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/platform/bindings/script_state.h" #include "third_party/blink/renderer/platform/bindings/v8_binding_macros.h" +#include "third_party/blink/renderer/platform/loader/fetch/url_loader/cached_metadata_handler.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" #include "v8/include/v8.h" @@ -25,7 +26,6 @@ class CachedMetadata; class KURL; -class SingleCachedMetadataHandler; class ScriptSourceCode; class ModuleRecordProduceCacheData; @@ -55,7 +55,10 @@ // Returns true iff the SingleCachedMetadataHandler contains a code cache // that can be consumed by V8. - static bool HasCodeCache(const SingleCachedMetadataHandler*); + static bool HasCodeCache( + const SingleCachedMetadataHandler*, + SingleCachedMetadataHandler::GetCachedMetadataBehavior behavior = + SingleCachedMetadataHandler::kCrashIfUnchecked); static std::tuple<v8::ScriptCompiler::CompileOptions, ProduceCacheOptions,
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_script_runner.cc b/third_party/blink/renderer/bindings/core/v8/v8_script_runner.cc index 09987f7..cf089e89 100644 --- a/third_party/blink/renderer/bindings/core/v8/v8_script_runner.cc +++ b/third_party/blink/renderer/bindings/core/v8/v8_script_runner.cc
@@ -482,6 +482,12 @@ v8::Local<v8::Script> script; + if (source.CacheHandler()) { + source.CacheHandler()->Check( + ExecutionContext::GetCodeCacheHostFromContext(execution_context), + source.Source()); + } + v8::ScriptCompiler::CompileOptions compile_options; V8CodeCache::ProduceCacheOptions produce_cache_options; v8::ScriptCompiler::NoCacheReason no_cache_reason;
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_script_runner_test.cc b/third_party/blink/renderer/bindings/core/v8/v8_script_runner_test.cc index c8ce3b3..6c6b416 100644 --- a/third_party/blink/renderer/bindings/core/v8/v8_script_runner_test.cc +++ b/third_party/blink/renderer/bindings/core/v8/v8_script_runner_test.cc
@@ -20,6 +20,7 @@ #include "third_party/blink/renderer/platform/loader/fetch/script_cached_metadata_handler.h" #include "third_party/blink/renderer/platform/loader/fetch/url_loader/cached_metadata_handler.h" #include "third_party/blink/renderer/platform/weborigin/kurl.h" +#include "third_party/blink/renderer/platform/weborigin/scheme_registry.h" #include "third_party/blink/renderer/platform/wtf/text/string_utf8_adaptor.h" #include "third_party/blink/renderer/platform/wtf/text/text_encoding.h" #include "v8/include/v8.h" @@ -46,8 +47,15 @@ return WTF::String::Format("a = function() { 1 + 1; } // %01000d\n", counter_); } + WTF::String DifferentCode() const { + return WTF::String::Format("a = function() { 1 + 2; } // %01000d\n", + counter_); + } KURL Url() const { - return KURL(WTF::String::Format("http://bla.com/bla%d", counter_)); + return KURL(WTF::String::Format(code_cache_with_hashing_scheme_ + ? "codecachewithhashing://bla.com/bla%d" + : "http://bla.com/bla%d", + counter_)); } unsigned TagForCodeCache(SingleCachedMetadataHandler* cache_handler) const { return V8CodeCache::TagForCodeCache(cache_handler); @@ -64,6 +72,12 @@ ScriptState* script_state, const ScriptSourceCode& source_code, mojom::blink::V8CacheOptions cache_options) { + ExecutionContext* execution_context = ExecutionContext::From(script_state); + if (source_code.CacheHandler()) { + source_code.CacheHandler()->Check( + ExecutionContext::GetCodeCacheHostFromContext(execution_context), + source_code.Source()); + } v8::ScriptCompiler::CompileOptions compile_options; V8CodeCache::ProduceCacheOptions produce_cache_options; v8::ScriptCompiler::NoCacheReason no_cache_reason; @@ -75,7 +89,6 @@ if (compiled_script.IsEmpty()) { return false; } - ExecutionContext* execution_context = ExecutionContext::From(script_state); V8CodeCache::ProduceCache( isolate, ExecutionContext::GetCodeCacheHostFromContext(execution_context), @@ -89,13 +102,18 @@ v8::ScriptCompiler::CompileOptions compile_options, v8::ScriptCompiler::NoCacheReason no_cache_reason, V8CodeCache::ProduceCacheOptions produce_cache_options) { + ExecutionContext* execution_context = ExecutionContext::From(script_state); + if (source_code.CacheHandler()) { + source_code.CacheHandler()->Check( + ExecutionContext::GetCodeCacheHostFromContext(execution_context), + source_code.Source()); + } v8::MaybeLocal<v8::Script> compiled_script = V8ScriptRunner::CompileScript( script_state, source_code, SanitizeScriptErrors::kSanitize, compile_options, no_cache_reason, ReferrerScriptInfo()); if (compiled_script.IsEmpty()) { return false; } - ExecutionContext* execution_context = ExecutionContext::From(script_state); V8CodeCache::ProduceCache( isolate, ExecutionContext::GetCodeCacheHostFromContext(execution_context), @@ -109,13 +127,21 @@ return resource; } - ScriptResource* CreateResource(const WTF::TextEncoding& encoding) { + ScriptResource* CreateResource(const WTF::TextEncoding& encoding, + Vector<uint8_t> serialized_metadata = {}, + absl::optional<String> code = {}) { ScriptResource* resource = ScriptResource::CreateForTest(Url(), encoding); - String code = Code(); + if (!code) + code = Code(); ResourceResponse response(Url()); response.SetHttpStatusCode(200); resource->ResponseReceived(response); - StringUTF8Adaptor code_utf8(code); + if (serialized_metadata.size() != 0) { + const uint8_t* begin = serialized_metadata.data(); + resource->SetSerializedCachedMetadata( + base::make_span(begin, serialized_metadata.size())); + } + StringUTF8Adaptor code_utf8(code.value()); resource->AppendData(code_utf8.data(), code_utf8.size()); resource->FinishForTest(); return resource; @@ -123,6 +149,7 @@ protected: static int counter_; + bool code_cache_with_hashing_scheme_ = false; base::test::ScopedFeatureList feature_list_; }; @@ -405,6 +432,139 @@ EXPECT_EQ(1, counter.GetDataTypeMismatch()); } +TEST_F(V8ScriptRunnerTest, successfulCodeCacheWithHashing) { + feature_list_.InitAndDisableFeature( + blink::features::kDiscardCodeCacheAfterFirstUse); + V8TestingScope scope; + SchemeRegistry::RegisterURLSchemeAsCodeCacheWithHashing( + "codecachewithhashing"); + code_cache_with_hashing_scheme_ = true; + ScriptSourceCode source_code( + nullptr, CreateResource(UTF8Encoding()), + ScriptStreamer::NotStreamingReason::kScriptTooSmall); + SingleCachedMetadataHandler* cache_handler = source_code.CacheHandler(); + EXPECT_TRUE(cache_handler->HashRequired()); + + // Cold run - should set the timestamp. + EXPECT_TRUE(CompileScript(scope.GetIsolate(), scope.GetScriptState(), + source_code, + mojom::blink::V8CacheOptions::kDefault)); + EXPECT_TRUE(cache_handler->GetCachedMetadata(TagForTimeStamp(cache_handler))); + EXPECT_FALSE( + cache_handler->GetCachedMetadata(TagForCodeCache(cache_handler))); + + // Warm run - should produce code cache. + EXPECT_TRUE(CompileScript(scope.GetIsolate(), scope.GetScriptState(), + source_code, + mojom::blink::V8CacheOptions::kDefault)); + EXPECT_TRUE(cache_handler->GetCachedMetadata(TagForCodeCache(cache_handler))); + + // Hot run - should consume code cache. + v8::ScriptCompiler::CompileOptions compile_options; + V8CodeCache::ProduceCacheOptions produce_cache_options; + v8::ScriptCompiler::NoCacheReason no_cache_reason; + std::tie(compile_options, produce_cache_options, no_cache_reason) = + V8CodeCache::GetCompileOptions(mojom::blink::V8CacheOptions::kDefault, + source_code); + EXPECT_EQ(produce_cache_options, + V8CodeCache::ProduceCacheOptions::kNoProduceCache); + EXPECT_EQ(compile_options, + v8::ScriptCompiler::CompileOptions::kConsumeCodeCache); + EXPECT_TRUE(CompileScript(scope.GetIsolate(), scope.GetScriptState(), + source_code, compile_options, no_cache_reason, + produce_cache_options)); + EXPECT_TRUE(cache_handler->GetCachedMetadata(TagForCodeCache(cache_handler))); +} + +TEST_F(V8ScriptRunnerTest, codeCacheWithFailedHashCheck) { + V8TestingScope scope; + SchemeRegistry::RegisterURLSchemeAsCodeCacheWithHashing( + "codecachewithhashing"); + code_cache_with_hashing_scheme_ = true; + + ScriptSourceCode source_code_1( + nullptr, CreateResource(UTF8Encoding()), + ScriptStreamer::NotStreamingReason::kScriptTooSmall); + ScriptCachedMetadataHandlerWithHashing* cache_handler_1 = + static_cast<ScriptCachedMetadataHandlerWithHashing*>( + source_code_1.CacheHandler()); + EXPECT_TRUE(cache_handler_1->HashRequired()); + + // Cold run - should set the timestamp. + EXPECT_TRUE(CompileScript(scope.GetIsolate(), scope.GetScriptState(), + source_code_1, + mojom::blink::V8CacheOptions::kDefault)); + EXPECT_TRUE( + cache_handler_1->GetCachedMetadata(TagForTimeStamp(cache_handler_1))); + EXPECT_FALSE( + cache_handler_1->GetCachedMetadata(TagForCodeCache(cache_handler_1))); + + // A second ScriptSourceCode with matching script text, using the state of + // the ScriptCachedMetadataHandler from the first ScriptSourceCode. + ScriptSourceCode source_code_2( + nullptr, + CreateResource(UTF8Encoding(), + cache_handler_1->GetSerializedCachedMetadata()), + ScriptStreamer::NotStreamingReason::kScriptTooSmall); + ScriptCachedMetadataHandlerWithHashing* cache_handler_2 = + static_cast<ScriptCachedMetadataHandlerWithHashing*>( + source_code_2.CacheHandler()); + EXPECT_TRUE(cache_handler_2->HashRequired()); + + // Warm run - should produce code cache. + EXPECT_TRUE(CompileScript(scope.GetIsolate(), scope.GetScriptState(), + source_code_2, + mojom::blink::V8CacheOptions::kDefault)); + EXPECT_TRUE( + cache_handler_2->GetCachedMetadata(TagForCodeCache(cache_handler_2))); + + // A third ScriptSourceCode with different script text, using the state of + // the ScriptCachedMetadataHandler from the second ScriptSourceCode. + ScriptSourceCode source_code_3( + nullptr, + CreateResource(UTF8Encoding(), + cache_handler_2->GetSerializedCachedMetadata(), + DifferentCode()), + ScriptStreamer::NotStreamingReason::kScriptTooSmall); + ScriptCachedMetadataHandlerWithHashing* cache_handler_3 = + static_cast<ScriptCachedMetadataHandlerWithHashing*>( + source_code_3.CacheHandler()); + EXPECT_TRUE(cache_handler_3->HashRequired()); + + // Since the third script's text doesn't match the first two, the hash check + // should reject the existing code cache data and the cache entry should + // be updated back to a timestamp like it would during a cold run. + EXPECT_TRUE(CompileScript(scope.GetIsolate(), scope.GetScriptState(), + source_code_3, + mojom::blink::V8CacheOptions::kDefault)); + EXPECT_TRUE( + cache_handler_3->GetCachedMetadata(TagForTimeStamp(cache_handler_3))); + EXPECT_FALSE( + cache_handler_3->GetCachedMetadata(TagForCodeCache(cache_handler_3))); + + // A fourth ScriptSourceCode with matching script text, using the state of + // the ScriptCachedMetadataHandler from the third ScriptSourceCode. + ScriptSourceCode source_code_4( + nullptr, + CreateResource(UTF8Encoding(), + cache_handler_3->GetSerializedCachedMetadata()), + ScriptStreamer::NotStreamingReason::kScriptTooSmall); + ScriptCachedMetadataHandlerWithHashing* cache_handler_4 = + static_cast<ScriptCachedMetadataHandlerWithHashing*>( + source_code_4.CacheHandler()); + EXPECT_TRUE(cache_handler_4->HashRequired()); + + // Running the original script again once again sets the timestamp since the + // content has changed again. + EXPECT_TRUE(CompileScript(scope.GetIsolate(), scope.GetScriptState(), + source_code_4, + mojom::blink::V8CacheOptions::kDefault)); + EXPECT_TRUE( + cache_handler_4->GetCachedMetadata(TagForTimeStamp(cache_handler_4))); + EXPECT_FALSE( + cache_handler_4->GetCachedMetadata(TagForCodeCache(cache_handler_4))); +} + } // namespace } // namespace blink
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_wasm_response_extensions.cc b/third_party/blink/renderer/bindings/core/v8/v8_wasm_response_extensions.cc index 8240b4c4..984f82b6 100644 --- a/third_party/blink/renderer/bindings/core/v8/v8_wasm_response_extensions.cc +++ b/third_party/blink/renderer/bindings/core/v8/v8_wasm_response_extensions.cc
@@ -212,11 +212,15 @@ void SendCachedData(String response_url, base::Time response_time, - blink::mojom::CodeCacheHost* code_cache_host, + ExecutionContext* execution_context, Vector<uint8_t> serialized_module) { + if (!execution_context) + return; scoped_refptr<CachedMetadata> cached_metadata = CachedMetadata::CreateFromSerializedData(std::move(serialized_module)); + blink::mojom::CodeCacheHost* code_cache_host = + ExecutionContext::GetCodeCacheHostFromContext(execution_context); base::span<const uint8_t> serialized_data = cached_metadata->SerializedData(); CachedMetadataSender::SendToCodeCacheHost( code_cache_host, mojom::blink::CodeCacheType::kWebAssembly, response_url, @@ -228,11 +232,11 @@ WasmStreamingClient(const String& response_url, const base::Time& response_time, scoped_refptr<base::SingleThreadTaskRunner> task_runner, - blink::mojom::CodeCacheHost* code_cache_host) + ExecutionContext* execution_context) : response_url_(response_url.IsolatedCopy()), response_time_(response_time), main_thread_task_runner_(std::move(task_runner)), - code_cache_host_(code_cache_host) {} + execution_context_(execution_context) {} void OnModuleCompiled(v8::CompiledWasmModule compiled_module) override { TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), @@ -273,7 +277,7 @@ // TODO(mythria): Add support for worklets and remove this code that uses // per-process interface. if (!main_thread_task_runner_.get()) { - SendCachedData(response_url_, response_time_, nullptr, + SendCachedData(response_url_, response_time_, execution_context_.Lock(), std::move(serialized_data)); return; } @@ -281,8 +285,7 @@ main_thread_task_runner_->PostTask( FROM_HERE, ConvertToBaseOnceCallback(WTF::CrossThreadBindOnce( &SendCachedData, response_url_, response_time_, - WTF::CrossThreadUnretained(code_cache_host_), - std::move(serialized_data)))); + execution_context_, std::move(serialized_data)))); } void SetBuffer(scoped_refptr<CachedMetadata> cached_module) { @@ -294,7 +297,7 @@ base::Time response_time_; scoped_refptr<CachedMetadata> cached_module_; scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner_; - blink::mojom::CodeCacheHost* code_cache_host_; + CrossThreadWeakPersistent<ExecutionContext> execution_context_; DISALLOW_COPY_AND_ASSIGN(WasmStreamingClient); }; @@ -384,8 +387,7 @@ auto client = std::make_shared<WasmStreamingClient>( url, response->GetResponse()->InternalResponse()->ResponseTime(), - GetContextTaskRunner(*execution_context), - ExecutionContext::GetCodeCacheHostFromContext(execution_context)); + GetContextTaskRunner(*execution_context), execution_context); streaming->SetClient(client); scoped_refptr<CachedMetadata> cached_module = cache_handler->GetCachedMetadata(kWasmModuleTag);
diff --git a/third_party/blink/renderer/core/animation/css/css_animations.cc b/third_party/blink/renderer/core/animation/css/css_animations.cc index 64eee0f3..0bc89d41 100644 --- a/third_party/blink/renderer/core/animation/css/css_animations.cc +++ b/third_party/blink/renderer/core/animation/css/css_animations.cc
@@ -63,6 +63,7 @@ #include "third_party/blink/renderer/core/css/parser/css_variable_parser.h" #include "third_party/blink/renderer/core/css/properties/computed_style_utils.h" #include "third_party/blink/renderer/core/css/properties/css_property.h" +#include "third_party/blink/renderer/core/css/properties/css_property_ref.h" #include "third_party/blink/renderer/core/css/property_registry.h" #include "third_party/blink/renderer/core/css/resolver/css_to_style_map.h" #include "third_party/blink/renderer/core/css/resolver/style_resolver.h" @@ -118,8 +119,8 @@ for (unsigned j = 0; j < properties.PropertyCount(); j++) { CSSPropertyValueSet::PropertyReference property_reference = properties.PropertyAt(j); - // TODO(crbug.com/980160): Remove access to static Variable instance. - const CSSProperty& property = CSSProperty::Get(property_reference.Id()); + CSSPropertyRef ref(property_reference.Name(), document); + const CSSProperty& property = ref.GetProperty(); if (property.PropertyID() == CSSPropertyID::kAnimationTimingFunction) { const CSSValue& value = property_reference.Value(); scoped_refptr<TimingFunction> timing_function; @@ -138,20 +139,7 @@ const CSSProperty& physical_property = property.ResolveDirectionAwareProperty(text_direction, writing_mode); - - // Calling ResolveDirectionAwareProperty on the static Variable instance - // must return the same instance. - DCHECK((&physical_property == &property) || - !Variable::IsStaticInstance(property)); - // We can not call GetCSSPropertyName on the static Variable instance, - // but since (&physical_property == &property), we can get the name from - // the original |property_reference|. - // - // TODO(crbug.com/980160): Remove static Variable instance. - const CSSPropertyName& name = - Variable::IsStaticInstance(physical_property) - ? property_reference.Name() - : physical_property.GetCSSPropertyName(); + const CSSPropertyName& name = physical_property.GetCSSPropertyName(); keyframe->SetCSSPropertyValue(name, property_reference.Value()); } }
diff --git a/third_party/blink/renderer/core/animation/keyframe_effect_model.cc b/third_party/blink/renderer/core/animation/keyframe_effect_model.cc index 7f99c61..edbd590 100644 --- a/third_party/blink/renderer/core/animation/keyframe_effect_model.cc +++ b/third_party/blink/renderer/core/animation/keyframe_effect_model.cc
@@ -210,11 +210,12 @@ if (!should_snapshot_property_callback(property)) return false; - PropertySpecificKeyframeGroup* keyframe_group = - keyframe_groups_->DeprecatedAtOrEmptyValue(property); - if (!keyframe_group) + auto it = keyframe_groups_->find(property); + if (it == keyframe_groups_->end()) return false; + PropertySpecificKeyframeGroup* keyframe_group = it->value; + bool updated = false; for (auto& keyframe : keyframe_group->keyframes_) { if (!should_snapshot_keyframe_callback(*keyframe))
diff --git a/third_party/blink/renderer/core/exported/web_security_policy.cc b/third_party/blink/renderer/core/exported/web_security_policy.cc index f82a4f6a..45cef7e 100644 --- a/third_party/blink/renderer/core/exported/web_security_policy.cc +++ b/third_party/blink/renderer/core/exported/web_security_policy.cc
@@ -152,4 +152,9 @@ SchemeRegistry::RegisterURLSchemeAsWebUI(scheme); } +void WebSecurityPolicy::RegisterURLSchemeAsCodeCacheWithHashing( + const WebString& scheme) { + SchemeRegistry::RegisterURLSchemeAsCodeCacheWithHashing(scheme); +} + } // namespace blink
diff --git a/third_party/blink/renderer/core/fetch/fetch_manager.cc b/third_party/blink/renderer/core/fetch/fetch_manager.cc index 899c6520..9062172c 100644 --- a/third_party/blink/renderer/core/fetch/fetch_manager.cc +++ b/third_party/blink/renderer/core/fetch/fetch_manager.cc
@@ -294,6 +294,7 @@ Vector<KURL> url_list_; Member<ExecutionContext> execution_context_; Member<ScriptCachedMetadataHandler> cached_metadata_handler_; + TraceWrapperV8Reference<v8::Value> exception_; }; FetchManager::Loader::Loader(ExecutionContext* execution_context, @@ -314,6 +315,15 @@ execution_context_(execution_context) { DCHECK(world_); url_list_.push_back(fetch_request_data->Url()); + ScriptState* state = resolver_->GetScriptState(); + v8::Isolate* isolate = state->GetIsolate(); + // Only use a handle scope as we should be in the right context already. + v8::HandleScope scope(isolate); + // Create the exception at this point so we get the stack-trace that belongs + // to the fetch() call. + v8::Local<v8::Value> exception = + V8ThrowException::CreateTypeError(isolate, "Failed to fetch"); + exception_.Set(isolate, exception); } FetchManager::Loader::~Loader() { @@ -330,6 +340,7 @@ visitor->Trace(signal_); visitor->Trace(execution_context_); visitor->Trace(cached_metadata_handler_); + visitor->Trace(exception_); ThreadableLoaderClient::Trace(visitor); } @@ -901,8 +912,8 @@ if (dom_exception) { resolver_->Reject(dom_exception); } else { - v8::Local<v8::Value> value = V8ThrowException::CreateTypeError( - state->GetIsolate(), "Failed to fetch"); + v8::Local<v8::Value> value = exception_.NewLocal(state->GetIsolate()); + exception_.Clear(); if (RuntimeEnabledFeatures::ExceptionMetaDataForDevToolsEnabled()) { ThreadDebugger* debugger = ThreadDebugger::From(state->GetIsolate()); if (devtools_request_id) {
diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.cc b/third_party/blink/renderer/core/frame/csp/content_security_policy.cc index ef20d0f..dced602 100644 --- a/third_party/blink/renderer/core/frame/csp/content_security_policy.cc +++ b/third_party/blink/renderer/core/frame/csp/content_security_policy.cc
@@ -31,6 +31,7 @@ #include "base/debug/dump_without_crashing.h" #include "services/network/public/cpp/web_sandbox_flags.h" #include "services/network/public/mojom/web_sandbox_flags.mojom-blink.h" +#include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-blink.h" #include "third_party/blink/public/mojom/security_context/insecure_request_policy.mojom-blink.h" #include "third_party/blink/public/platform/platform.h" @@ -763,11 +764,12 @@ bool ContentSecurityPolicy::AllowTrustedTypeAssignmentFailure( const String& message, const String& sample, - const String& sample_prefix) { + const String& sample_prefix, + absl::optional<base::UnguessableToken> issue_id) { bool allow = true; for (const auto& policy : policies_) { allow &= CSPDirectiveListAllowTrustedTypeAssignmentFailure( - *policy, this, message, sample, sample_prefix); + *policy, this, message, sample, sample_prefix, issue_id); } return allow; } @@ -988,7 +990,8 @@ RedirectStatus redirect_status, Element* element, const String& source, - const String& source_prefix) { + const String& source_prefix, + absl::optional<base::UnguessableToken> issue_id) { DCHECK(violation_type == kURLViolation || blocked_url.IsEmpty()); // TODO(lukasza): Support sending reports from OOPIFs - @@ -1042,7 +1045,7 @@ ReportContentSecurityPolicyIssue(*violation_data, header_type, violation_type, context_frame, element, - source_location.get()); + source_location.get(), issue_id); } void ContentSecurityPolicy::PostViolationReport( @@ -1174,7 +1177,8 @@ ContentSecurityPolicyViolationType violation_type, LocalFrame* frame_ancestor, Element* element, - SourceLocation* source_location) { + SourceLocation* source_location, + absl::optional<base::UnguessableToken> issue_id) { auto cspDetails = mojom::blink::ContentSecurityPolicyIssueDetails::New(); cspDetails->is_report_only = header_type == ContentSecurityPolicyType::kReport; @@ -1209,6 +1213,9 @@ auto details = mojom::blink::InspectorIssueDetails::New(); details->csp_issue_details = std::move(cspDetails); + if (issue_id) { + details->issue_id = issue_id; + } mojom::blink::InspectorIssueInfoPtr info = mojom::blink::InspectorIssueInfo::New(
diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.h b/third_party/blink/renderer/core/frame/csp/content_security_policy.h index ad14f79..17ca9a3 100644 --- a/third_party/blink/renderer/core/frame/csp/content_security_policy.h +++ b/third_party/blink/renderer/core/frame/csp/content_security_policy.h
@@ -31,6 +31,7 @@ #include "services/network/public/mojom/content_security_policy.mojom-blink.h" #include "services/network/public/mojom/web_sandbox_flags.mojom-blink-forward.h" +#include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/blink/public/mojom/devtools/console_message.mojom-blink.h" #include "third_party/blink/public/mojom/devtools/inspector_issue.mojom-blink.h" #include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-blink-forward.h" @@ -294,7 +295,8 @@ bool AllowTrustedTypeAssignmentFailure( const String& message, const String& sample = String(), - const String& sample_prefix = String()); + const String& sample_prefix = String(), + absl::optional<base::UnguessableToken> issue_id = absl::nullopt); void UsesScriptHashAlgorithms(uint8_t content_security_policy_hash_algorithm); void UsesStyleHashAlgorithms(uint8_t content_security_policy_hash_algorithm); @@ -319,21 +321,26 @@ // available). // If |sourceLocation| is not set, the source location will be the context's // current location. - void ReportViolation(const String& directive_text, - CSPDirectiveName effective_type, - const String& console_message, - const KURL& blocked_url, - const Vector<String>& report_endpoints, - bool use_reporting_api, - const String& header, - network::mojom::ContentSecurityPolicyType, - ContentSecurityPolicyViolationType, - std::unique_ptr<SourceLocation>, - LocalFrame* = nullptr, - RedirectStatus = RedirectStatus::kFollowedRedirect, - Element* = nullptr, - const String& source = g_empty_string, - const String& source_prefix = g_empty_string); + // If an inspector issue is reported, and |issue_id| is present, it will be + // reported on the issue. This is useful to provide a link from the + // JavaScript TypeError to the inspector issue in the DevTools front-end. + void ReportViolation( + const String& directive_text, + CSPDirectiveName effective_type, + const String& console_message, + const KURL& blocked_url, + const Vector<String>& report_endpoints, + bool use_reporting_api, + const String& header, + network::mojom::ContentSecurityPolicyType, + ContentSecurityPolicyViolationType, + std::unique_ptr<SourceLocation>, + LocalFrame* = nullptr, + RedirectStatus = RedirectStatus::kFollowedRedirect, + Element* = nullptr, + const String& source = g_empty_string, + const String& source_prefix = g_empty_string, + absl::optional<base::UnguessableToken> issue_id = absl::nullopt); // Called when mixed content is detected on a page; will trigger a violation // report if the 'block-all-mixed-content' directive is specified for a @@ -483,7 +490,8 @@ ContentSecurityPolicyViolationType violation_type, LocalFrame*, Element*, - SourceLocation*); + SourceLocation*, + absl::optional<base::UnguessableToken> issue_id); Member<ContentSecurityPolicyDelegate> delegate_; bool override_inline_style_allowed_ = false;
diff --git a/third_party/blink/renderer/core/frame/csp/csp_directive_list.cc b/third_party/blink/renderer/core/frame/csp/csp_directive_list.cc index d5cd2b94..25132171 100644 --- a/third_party/blink/renderer/core/frame/csp/csp_directive_list.cc +++ b/third_party/blink/renderer/core/frame/csp/csp_directive_list.cc
@@ -163,17 +163,19 @@ original_type); } -void ReportViolation(const network::mojom::blink::ContentSecurityPolicy& csp, - ContentSecurityPolicy* policy, - const String& directive_text, - CSPDirectiveName effective_type, - const String& console_message, - const KURL& blocked_url, - ResourceRequest::RedirectStatus redirect_status, - ContentSecurityPolicy::ContentSecurityPolicyViolationType - violation_type = ContentSecurityPolicy::kURLViolation, - const String& sample = String(), - const String& sample_prefix = String()) { +void ReportViolation( + const network::mojom::blink::ContentSecurityPolicy& csp, + ContentSecurityPolicy* policy, + const String& directive_text, + CSPDirectiveName effective_type, + const String& console_message, + const KURL& blocked_url, + ResourceRequest::RedirectStatus redirect_status, + ContentSecurityPolicy::ContentSecurityPolicyViolationType violation_type = + ContentSecurityPolicy::kURLViolation, + const String& sample = String(), + const String& sample_prefix = String(), + absl::optional<base::UnguessableToken> issue_id = absl::nullopt) { String message = CSPDirectiveListIsReportOnly(csp) ? "[Report Only] " + console_message : console_message; @@ -187,7 +189,7 @@ nullptr, // localFrame redirect_status, nullptr, // Element* - sample, sample_prefix); + sample, sample_prefix, issue_id); } void ReportViolationWithLocation( @@ -570,7 +572,8 @@ ContentSecurityPolicy* policy, const String& message, const String& sample, - const String& sample_prefix) { + const String& sample_prefix, + absl::optional<base::UnguessableToken> issue_id) { if (!CSPDirectiveListRequiresTrustedTypes(csp)) return true; @@ -580,7 +583,7 @@ CSPDirectiveName::RequireTrustedTypesFor, message, KURL(), RedirectStatus::kNoRedirect, ContentSecurityPolicy::kTrustedTypesSinkViolation, sample, - sample_prefix); + sample_prefix, issue_id); return CSPDirectiveListIsReportOnly(csp); }
diff --git a/third_party/blink/renderer/core/frame/csp/csp_directive_list.h b/third_party/blink/renderer/core/frame/csp/csp_directive_list.h index df303b69..5a589239 100644 --- a/third_party/blink/renderer/core/frame/csp/csp_directive_list.h +++ b/third_party/blink/renderer/core/frame/csp/csp_directive_list.h
@@ -45,7 +45,8 @@ ContentSecurityPolicy* policy, const String& message, const String& sample, - const String& sample_prefix); + const String& sample_prefix, + absl::optional<base::UnguessableToken> issue_id); CORE_EXPORT bool CSPDirectiveListAllowTrustedTypePolicy(
diff --git a/third_party/blink/renderer/core/inspector/inspector_issue_conversion.cc b/third_party/blink/renderer/core/inspector/inspector_issue_conversion.cc index 5f05fb01..782b405 100644 --- a/third_party/blink/renderer/core/inspector/inspector_issue_conversion.cc +++ b/third_party/blink/renderer/core/inspector/inspector_issue_conversion.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/renderer/core/inspector/inspector_issue_conversion.h" #include "third_party/blink/renderer/core/inspector/inspector_issue.h" +#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" namespace blink { @@ -431,10 +432,15 @@ issueDetails.setLowTextContrastIssueDetails(std::move(lowContrastDetails)); } - return protocol::Audits::InspectorIssue::create() - .setCode(InspectorIssueCodeValue(issue->Code())) - .setDetails(issueDetails.build()) - .build(); + auto final_issue = protocol::Audits::InspectorIssue::create() + .setCode(InspectorIssueCodeValue(issue->Code())) + .setDetails(issueDetails.build()) + .build(); + if (issue->Details()->issue_id) { + String issue_id = String::FromUTF8(issue->Details()->issue_id->ToString()); + final_issue->setIssueId(issue_id); + } + return final_issue; } } // namespace blink
diff --git a/third_party/blink/renderer/core/layout/ng/custom/layout_worklet_test.cc b/third_party/blink/renderer/core/layout/ng/custom/layout_worklet_test.cc index 2bc5a7f..de50c90 100644 --- a/third_party/blink/renderer/core/layout/ng/custom/layout_worklet_test.cc +++ b/third_party/blink/renderer/core/layout/ng/custom/layout_worklet_test.cc
@@ -60,8 +60,8 @@ EXPECT_TRUE(script_state); KURL js_url("https://example.com/worklet.js"); - v8::Local<v8::Module> module = ModuleTestBase::CompileModule( - script_state->GetIsolate(), source_code, js_url); + v8::Local<v8::Module> module = + ModuleTestBase::CompileModule(script_state, source_code, js_url); EXPECT_FALSE(module.IsEmpty()); ScriptValue exception =
diff --git a/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.cc b/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.cc index 1c85994..5d9e36d 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_fragmentation_utils.cc
@@ -59,19 +59,33 @@ // Return layout overflow block-size that's not clipped (or simply the // block-size if it *is* clipped). -LayoutUnit BlockAxisLayoutOverflow(const NGPhysicalFragment& fragment, +LayoutUnit BlockAxisLayoutOverflow(const NGLayoutResult& result, WritingDirectionMode writing_direction) { - const auto* box = DynamicTo<NGPhysicalBoxFragment>(fragment); - if (box && box->HasNonVisibleOverflow()) { - OverflowClipAxes block_axis = - writing_direction.IsHorizontal() ? kOverflowClipY : kOverflowClipX; - if (box->GetOverflowClipAxes() & block_axis) - box = nullptr; + const NGPhysicalFragment& fragment = result.PhysicalFragment(); + LayoutUnit block_size = NGFragment(writing_direction, fragment).BlockSize(); + if (const auto* box = DynamicTo<NGPhysicalBoxFragment>(fragment)) { + if (box->HasNonVisibleOverflow()) { + OverflowClipAxes block_axis = + writing_direction.IsHorizontal() ? kOverflowClipY : kOverflowClipX; + if (box->GetOverflowClipAxes() & block_axis) + box = nullptr; + } + if (box) { + WritingModeConverter converter(writing_direction, fragment.Size()); + block_size = + std::max(block_size, + converter.ToLogical(box->LayoutOverflow()).BlockEndOffset()); + } + return block_size; } - PhysicalRect rect = fragment.LocalRect(); - if (box) - rect.UniteEvenIfEmpty(box->LayoutOverflow()); - return writing_direction.IsHorizontal() ? rect.Bottom() : rect.Right(); + + // Ruby annotations do not take up space in the line box, so we need this to + // make sure that we don't let them cross the fragmentation line without + // noticing. + LayoutUnit annotation_overflow = result.AnnotationOverflow(); + if (annotation_overflow > LayoutUnit()) + block_size += annotation_overflow; + return block_size; } } // anonymous namespace @@ -695,9 +709,8 @@ return true; } } else if (refuse_break_before || - BlockAxisLayoutOverflow(physical_fragment, - space.GetWritingDirection()) <= - space_left) { + BlockAxisLayoutOverflow( + layout_result, space.GetWritingDirection()) <= space_left) { // The child either fits, or we are not allowed to break. So we can move // past this breakpoint. if (child.IsBlock() && builder) {
diff --git a/third_party/blink/renderer/core/loader/resource/script_resource.cc b/third_party/blink/renderer/core/loader/resource/script_resource.cc index d8120ad..2087037 100644 --- a/third_party/blink/renderer/core/loader/resource/script_resource.cc +++ b/third_party/blink/renderer/core/loader/resource/script_resource.cc
@@ -48,6 +48,7 @@ #include "third_party/blink/renderer/platform/loader/fetch/text_resource_decoder_options.h" #include "third_party/blink/renderer/platform/loader/subresource_integrity.h" #include "third_party/blink/renderer/platform/network/mime/mime_type_registry.h" +#include "third_party/blink/renderer/platform/weborigin/scheme_registry.h" #include "third_party/blink/renderer/platform/wtf/functional.h" #include "third_party/blink/renderer/platform/wtf/shared_buffer.h" @@ -200,6 +201,13 @@ } } +bool ScriptResource::CodeCacheHashRequired() const { + if (cached_metadata_handler_) { + return cached_metadata_handler_->HashRequired(); + } + return false; +} + void ScriptResource::DestroyDecodedDataIfPossible() { if (cached_metadata_handler_) { // Since we are clearing locally we don't need a CodeCacheHost interface @@ -261,14 +269,29 @@ } cached_metadata_handler_ = nullptr; - // Currently we support the metadata caching only for HTTP family. - if (GetResourceRequest().Url().ProtocolIsInHTTPFamily() && - response.CurrentRequestUrl().ProtocolIsInHTTPFamily()) { - cached_metadata_handler_ = - MakeGarbageCollected<ScriptCachedMetadataHandler>( - Encoding(), CachedMetadataSender::Create( - response, mojom::blink::CodeCacheType::kJavascript, - GetResourceRequest().RequestorOrigin())); + // Currently we support the metadata caching only for HTTP family and any + // schemes defined by SchemeRegistry as requiring a hash check. + bool http_family = GetResourceRequest().Url().ProtocolIsInHTTPFamily() && + response.CurrentRequestUrl().ProtocolIsInHTTPFamily(); + bool code_cache_with_hashing_supported = + SchemeRegistry::SchemeSupportsCodeCacheWithHashing( + GetResourceRequest().Url().Protocol()) && + GetResourceRequest().Url().ProtocolIs( + response.CurrentRequestUrl().Protocol()); + bool code_cache_supported = http_family || code_cache_with_hashing_supported; + if (code_cache_supported) { + std::unique_ptr<CachedMetadataSender> sender = CachedMetadataSender::Create( + response, mojom::blink::CodeCacheType::kJavascript, + GetResourceRequest().RequestorOrigin()); + if (code_cache_with_hashing_supported) { + cached_metadata_handler_ = + MakeGarbageCollected<ScriptCachedMetadataHandlerWithHashing>( + Encoding(), std::move(sender)); + } else { + cached_metadata_handler_ = + MakeGarbageCollected<ScriptCachedMetadataHandler>(Encoding(), + std::move(sender)); + } } } // namespace blink
diff --git a/third_party/blink/renderer/core/loader/resource/script_resource.h b/third_party/blink/renderer/core/loader/resource/script_resource.h index f6c5707e..afebd210 100644 --- a/third_party/blink/renderer/core/loader/resource/script_resource.h +++ b/third_party/blink/renderer/core/loader/resource/script_resource.h
@@ -94,6 +94,8 @@ void SetSerializedCachedMetadata(mojo_base::BigBuffer data) override; + bool CodeCacheHashRequired() const override; + const ParkableString& SourceText(); // Get the resource's current text. This can return partial data, so should
diff --git a/third_party/blink/renderer/core/loader/resource/script_resource_test.cc b/third_party/blink/renderer/core/loader/resource/script_resource_test.cc index b9b7562..8711d39 100644 --- a/third_party/blink/renderer/core/loader/resource/script_resource_test.cc +++ b/third_party/blink/renderer/core/loader/resource/script_resource_test.cc
@@ -7,6 +7,7 @@ #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/renderer/platform/loader/fetch/url_loader/cached_metadata_handler.h" #include "third_party/blink/renderer/platform/weborigin/kurl.h" +#include "third_party/blink/renderer/platform/weborigin/scheme_registry.h" #include "third_party/blink/renderer/platform/wtf/text/text_encoding.h" namespace blink { @@ -88,5 +89,42 @@ EXPECT_FALSE(new_handler); } +TEST(ScriptResourceTest, WebUICodeCacheEnabled) { + SchemeRegistry::RegisterURLSchemeAsCodeCacheWithHashing( + "codecachewithhashing"); + + const KURL url("codecachewithhashing://www.example.com/script.js"); + ScriptResource* resource = ScriptResource::CreateForTest(url, UTF8Encoding()); + ResourceResponse response(url); + response.SetHttpStatusCode(200); + + resource->ResponseReceived(response); + constexpr char kData[5] = "abcd"; + resource->AppendData(kData, strlen(kData)); + resource->FinishForTest(); + + auto* handler = resource->CacheHandler(); + EXPECT_TRUE(handler); + EXPECT_TRUE(handler->HashRequired()); + EXPECT_EQ(UTF8Encoding().GetName(), handler->Encoding()); + + SchemeRegistry::RemoveURLSchemeAsCodeCacheWithHashing("codecachewithhashing"); +} + +TEST(ScriptResourceTest, WebUICodeCacheDisabled) { + const KURL url("nocodecachewithhashing://www.example.com/script.js"); + ScriptResource* resource = ScriptResource::CreateForTest(url, UTF8Encoding()); + ResourceResponse response(url); + response.SetHttpStatusCode(200); + + resource->ResponseReceived(response); + constexpr char kData[5] = "abcd"; + resource->AppendData(kData, strlen(kData)); + resource->FinishForTest(); + + auto* handler = resource->CacheHandler(); + EXPECT_FALSE(handler); +} + } // namespace } // namespace blink
diff --git a/third_party/blink/renderer/core/script/dynamic_module_resolver_test.cc b/third_party/blink/renderer/core/script/dynamic_module_resolver_test.cc index e4f5de7..42beb0e 100644 --- a/third_party/blink/renderer/core/script/dynamic_module_resolver_test.cc +++ b/third_party/blink/renderer/core/script/dynamic_module_resolver_test.cc
@@ -248,7 +248,7 @@ EXPECT_FALSE(capture->WasCalled()); v8::Local<v8::Module> record = ModuleTestBase::CompileModule( - scope.GetIsolate(), "export const foo = 'hello';", TestReferrerURL()); + scope.GetScriptState(), "export const foo = 'hello';", TestReferrerURL()); ModuleScript* module_script = JSModuleScript::CreateForTest(modulator, record, TestDependencyURL()); EXPECT_TRUE(ModuleRecord::Instantiate(scope.GetScriptState(), record, @@ -406,7 +406,7 @@ EXPECT_FALSE(capture->WasCalled()); v8::Local<v8::Module> record = ModuleTestBase::CompileModule( - scope.GetIsolate(), "throw Error('bar')", TestReferrerURL()); + scope.GetScriptState(), "throw Error('bar')", TestReferrerURL()); ModuleScript* module_script = JSModuleScript::CreateForTest(modulator, record, TestDependencyURL()); EXPECT_TRUE(ModuleRecord::Instantiate(scope.GetScriptState(), record, @@ -449,7 +449,8 @@ EXPECT_FALSE(capture->WasCalled()); v8::Local<v8::Module> record = ModuleTestBase::CompileModule( - scope.GetIsolate(), "export const foo = 'hello';", TestDependencyURL()); + scope.GetScriptState(), "export const foo = 'hello';", + TestDependencyURL()); ModuleScript* module_script = JSModuleScript::CreateForTest(modulator, record, TestDependencyURL()); EXPECT_TRUE(ModuleRecord::Instantiate(scope.GetScriptState(), record,
diff --git a/third_party/blink/renderer/core/script/js_module_script.cc b/third_party/blink/renderer/core/script/js_module_script.cc index 9786370..7dd7a80 100644 --- a/third_party/blink/renderer/core/script/js_module_script.cc +++ b/third_party/blink/renderer/core/script/js_module_script.cc
@@ -48,7 +48,7 @@ ModuleRecordProduceCacheData* produce_cache_data = nullptr; v8::Local<v8::Module> result = ModuleRecord::Compile( - isolate, params, options, start_position, exception_state, + script_state, params, options, start_position, exception_state, modulator->GetV8CacheOptions(), &produce_cache_data); // CreateInternal processes Steps 4 and 8-10.
diff --git a/third_party/blink/renderer/core/script/module_record_resolver_impl_test.cc b/third_party/blink/renderer/core/script/module_record_resolver_impl_test.cc index 75050795..b383fe3a 100644 --- a/third_party/blink/renderer/core/script/module_record_resolver_impl_test.cc +++ b/third_party/blink/renderer/core/script/module_record_resolver_impl_test.cc
@@ -78,7 +78,8 @@ V8TestingScope& scope) { KURL js_url("https://example.com/referrer.js"); v8::Local<v8::Module> referrer_record = ModuleTestBase::CompileModule( - scope.GetIsolate(), "import './target.js'; export const a = 42;", js_url); + scope.GetScriptState(), "import './target.js'; export const a = 42;", + js_url); KURL referrer_url("https://example.com/referrer.js"); auto* referrer_module_script = JSModuleScript::CreateForTest(modulator, referrer_record, referrer_url); @@ -90,7 +91,7 @@ bool has_parse_error = false) { KURL js_url("https://example.com/target.js"); v8::Local<v8::Module> record = ModuleTestBase::CompileModule( - scope.GetIsolate(), "export const pi = 3.14;", js_url); + scope.GetScriptState(), "export const pi = 3.14;", js_url); KURL url("https://example.com/target.js"); auto* module_script = JSModuleScript::CreateForTest(modulator, record, url); if (has_parse_error) {
diff --git a/third_party/blink/renderer/core/script/module_script_test.cc b/third_party/blink/renderer/core/script/module_script_test.cc index 3e604c4..dccb219 100644 --- a/third_party/blink/renderer/core/script/module_script_test.cc +++ b/third_party/blink/renderer/core/script/module_script_test.cc
@@ -62,7 +62,7 @@ class ModuleScriptTest : public ::testing::Test, public ParametrizedModuleTest { protected: - static String LargeSourceText() { + static String LargeSourceText(const char* suffix = nullptr) { StringBuilder builder; // Returns a sufficiently long script that is eligible for V8 code cache. builder.Append(String("window.foo = ")); @@ -70,6 +70,8 @@ builder.Append(String("1 + ")); } builder.Append(String("0;")); + if (suffix) + builder.Append(String(suffix)); return builder.ToString(); } @@ -404,6 +406,175 @@ ASSERT_FALSE(module_script->V8Module().IsEmpty()); } +TEST_P(ModuleScriptTest, V8CodeCacheWithHashChecking) { + // The order of steps below is chosen so that only the last step's behavior + // differs based on this flag. The important tests that verify rejection of + // cache data on content mismatches occur before that point. + feature_list_.InitAndDisableFeature( + blink::features::kDiscardCodeCacheAfterFirstUse); + + using Checkpoint = testing::StrictMock<testing::MockFunction<void(int)>>; + + V8TestingScope scope; + Modulator* modulator = + MakeGarbageCollected<ModuleScriptTestModulator>(scope.GetScriptState()); + Modulator::SetModulator(scope.GetScriptState(), modulator); + + auto sender = std::make_unique<MockCachedMetadataSender>(); + MockCachedMetadataSender* sender_ptr = sender.get(); + ScriptCachedMetadataHandlerWithHashing* cache_handler = + MakeGarbageCollected<ScriptCachedMetadataHandlerWithHashing>( + UTF8Encoding(), std::move(sender)); + const uint32_t kTimeStampTag = V8CodeCache::TagForTimeStamp(cache_handler); + const uint32_t kCodeTag = V8CodeCache::TagForCodeCache(cache_handler); + + // Six loads: + // 0: cold, should produce timestamp + // 1: source text changed, should produce timestamp + // 2: warm, should produce code cache + // 3: source text changed again, should produce timestamp + // 4: warm, should produce code cache + // 5: hot, should consume code cache + for (int nth_load = 0; nth_load < 6; ++nth_load) { + // Running the module script immediately clears the code cache contents if + // it detects a hash mismatch. Thus, some checks must occur before it is + // called. + switch (nth_load) { + case 1: + EXPECT_TRUE(cache_handler->GetCachedMetadata(kTimeStampTag)); + EXPECT_FALSE(cache_handler->GetCachedMetadata(kCodeTag)); + EXPECT_CALL(*sender_ptr, Send(_, _, _)); + break; + + case 3: + EXPECT_FALSE(cache_handler->GetCachedMetadata(kTimeStampTag)); + EXPECT_TRUE(cache_handler->GetCachedMetadata(kCodeTag)); + EXPECT_CALL(*sender_ptr, Send(_, _, _)); + break; + } + + // Compile a module script. + String source = + LargeSourceText((nth_load == 1 || nth_load == 2) ? " " : nullptr); + cache_handler->ResetForTesting(); + JSModuleScript* module_script = + CreateJSModuleScript(modulator, source, cache_handler); + ASSERT_TRUE(module_script); + + // Check that the module script is instantiated/evaluated correctly. + ASSERT_TRUE(ModuleRecord::Instantiate(scope.GetScriptState(), + module_script->V8Module(), + module_script->SourceURL()) + .IsEmpty()); + ASSERT_EQ(module_script->RunScriptAndReturnValue().GetResultType(), + ScriptEvaluationResult::ResultType::kSuccess); + TestFoo(scope); + + Checkpoint checkpoint; + ::testing::InSequence s; + + switch (nth_load) { + case 0: + // For the first time, the cache handler doesn't contain any data, and + // we'll set timestamp in ProduceCache() below. + EXPECT_FALSE(cache_handler->GetCachedMetadata(kTimeStampTag)); + EXPECT_FALSE(cache_handler->GetCachedMetadata(kCodeTag)); + EXPECT_EQ(V8CodeCache::ProduceCacheOptions::kSetTimeStamp, + GetProduceCacheOptions(module_script)); + EXPECT_CALL(*sender_ptr, Send(_, _, _)); + break; + + case 1: + // For the second time, the timestamp has been cleared and will be + // replaced by another timestamp because the content didn't match. + EXPECT_FALSE(cache_handler->GetCachedMetadata(kTimeStampTag)); + EXPECT_FALSE(cache_handler->GetCachedMetadata(kCodeTag)); + EXPECT_EQ(V8CodeCache::ProduceCacheOptions::kSetTimeStamp, + GetProduceCacheOptions(module_script)); + EXPECT_CALL(*sender_ptr, Send(_, _, _)); + break; + + case 2: + // For the third time, as timestamp is already set, we'll produce code + // cache in ProduceCache() below. + EXPECT_TRUE(cache_handler->GetCachedMetadata(kTimeStampTag)); + EXPECT_FALSE(cache_handler->GetCachedMetadata(kCodeTag)); + EXPECT_EQ(V8CodeCache::ProduceCacheOptions::kProduceCodeCache, + GetProduceCacheOptions(module_script)); + EXPECT_CALL(*sender_ptr, Send(_, _, _)); + break; + + case 3: + // For the fourth time, the code cache has been cleared and will get + // replaced with a timestamp in ProduceCache() due to a content + // mismatch. + EXPECT_FALSE(cache_handler->GetCachedMetadata(kTimeStampTag)); + EXPECT_FALSE(cache_handler->GetCachedMetadata(kCodeTag)); + EXPECT_EQ(V8CodeCache::ProduceCacheOptions::kSetTimeStamp, + GetProduceCacheOptions(module_script)); + EXPECT_CALL(*sender_ptr, Send(_, _, _)); + break; + + case 4: + // For the fifth time, as timestamp is already set, we'll produce code + // cache in ProduceCache() below. + EXPECT_TRUE(cache_handler->GetCachedMetadata(kTimeStampTag)); + EXPECT_FALSE(cache_handler->GetCachedMetadata(kCodeTag)); + EXPECT_EQ(V8CodeCache::ProduceCacheOptions::kProduceCodeCache, + GetProduceCacheOptions(module_script)); + EXPECT_CALL(*sender_ptr, Send(_, _, _)); + break; + + case 5: + // For the sixth time, the code cache is already there and we've + // consumed the code cache and won't do anything in ProduceCache(). + EXPECT_FALSE(cache_handler->GetCachedMetadata(kTimeStampTag)); + EXPECT_TRUE(cache_handler->GetCachedMetadata(kCodeTag)); + EXPECT_EQ(V8CodeCache::ProduceCacheOptions::kNoProduceCache, + GetProduceCacheOptions(module_script)); + break; + } + + EXPECT_CALL(checkpoint, Call(3)); + + module_script->ProduceCache(); + + checkpoint.Call(3); + + switch (nth_load) { + case 0: + EXPECT_TRUE(cache_handler->GetCachedMetadata(kTimeStampTag)); + EXPECT_FALSE(cache_handler->GetCachedMetadata(kCodeTag)); + break; + + case 1: + EXPECT_TRUE(cache_handler->GetCachedMetadata(kTimeStampTag)); + EXPECT_FALSE(cache_handler->GetCachedMetadata(kCodeTag)); + break; + + case 2: + EXPECT_FALSE(cache_handler->GetCachedMetadata(kTimeStampTag)); + EXPECT_TRUE(cache_handler->GetCachedMetadata(kCodeTag)); + break; + + case 3: + EXPECT_TRUE(cache_handler->GetCachedMetadata(kTimeStampTag)); + EXPECT_FALSE(cache_handler->GetCachedMetadata(kCodeTag)); + break; + + case 4: + EXPECT_FALSE(cache_handler->GetCachedMetadata(kTimeStampTag)); + EXPECT_TRUE(cache_handler->GetCachedMetadata(kCodeTag)); + break; + + case 5: + EXPECT_FALSE(cache_handler->GetCachedMetadata(kTimeStampTag)); + EXPECT_TRUE(cache_handler->GetCachedMetadata(kCodeTag)); + break; + } + } +} + // Instantiate tests once with TLA and once without: INSTANTIATE_TEST_SUITE_P(ModuleScriptTestGroup, ModuleScriptTest,
diff --git a/third_party/blink/renderer/core/testing/module_test_base.cc b/third_party/blink/renderer/core/testing/module_test_base.cc index 13b07bf..73ffae7 100644 --- a/third_party/blink/renderer/core/testing/module_test_base.cc +++ b/third_party/blink/renderer/core/testing/module_test_base.cc
@@ -15,15 +15,15 @@ namespace blink { v8::Local<v8::Module> ModuleTestBase::CompileModule( - v8::Isolate* isolate, + ScriptState* script_state, const char* source, const KURL& url, ExceptionState& exception_state) { - return CompileModule(isolate, String(source), url, exception_state); + return CompileModule(script_state, String(source), url, exception_state); } v8::Local<v8::Module> ModuleTestBase::CompileModule( - v8::Isolate* isolate, + ScriptState* script_state, String source, const KURL& url, ExceptionState& exception_state) { @@ -31,7 +31,7 @@ /*source_url=*/url, /*base_url=*/url, ScriptSourceLocationType::kExternalFile, ModuleType::kJavaScript, ParkableString(source.Impl()), nullptr); - return ModuleRecord::Compile(isolate, params, ScriptFetchOptions(), + return ModuleRecord::Compile(script_state, params, ScriptFetchOptions(), TextPosition::MinimumPosition(), exception_state); }
diff --git a/third_party/blink/renderer/core/testing/module_test_base.h b/third_party/blink/renderer/core/testing/module_test_base.h index 91b017ea..d67e433 100644 --- a/third_party/blink/renderer/core/testing/module_test_base.h +++ b/third_party/blink/renderer/core/testing/module_test_base.h
@@ -18,12 +18,12 @@ class ModuleTestBase { public: static v8::Local<v8::Module> CompileModule( - v8::Isolate*, + ScriptState*, const char*, const KURL&, ExceptionState& state = DummyExceptionStateForTesting().ReturnThis()); static v8::Local<v8::Module> CompileModule( - v8::Isolate*, + ScriptState*, String, const KURL&, ExceptionState& state = DummyExceptionStateForTesting().ReturnThis());
diff --git a/third_party/blink/renderer/core/trustedtypes/trusted_types_util.cc b/third_party/blink/renderer/core/trustedtypes/trusted_types_util.cc index 4d33e88..e3810ce 100644 --- a/third_party/blink/renderer/core/trustedtypes/trusted_types_util.cc +++ b/third_party/blink/renderer/core/trustedtypes/trusted_types_util.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/core/trustedtypes/trusted_types_util.h" +#include "base/unguessable_token.h" #include "third_party/blink/public/mojom/devtools/console_message.mojom-blink-forward.h" #include "third_party/blink/public/mojom/reporting/reporting.mojom-blink.h" #include "third_party/blink/public/platform/platform.h" @@ -15,6 +16,8 @@ #include "third_party/blink/renderer/core/execution_context/execution_context.h" #include "third_party/blink/renderer/core/frame/csp/content_security_policy.h" #include "third_party/blink/renderer/core/inspector/console_message.h" +#include "third_party/blink/renderer/core/inspector/identifiers_factory.h" +#include "third_party/blink/renderer/core/inspector/main_thread_debugger.h" #include "third_party/blink/renderer/core/probe/core_probes.h" #include "third_party/blink/renderer/core/script/script_element_base.h" #include "third_party/blink/renderer/core/trustedtypes/trusted_html.h" @@ -184,6 +187,11 @@ execution_context->GetTrustedTypes()->CountTrustedTypeAssignmentError(); String prefix = GetSamplePrefix(exception_state.GetContext(), value); + // This issue_id is used to generate a link in the DevTools front-end from + // the JavaScript TypeError to the inspector issue which is reported by + // ContentSecurityPolicy::ReportViolation via the call to + // AllowTrustedTypeAssignmentFailure below. + base::UnguessableToken issue_id = base::UnguessableToken::Create(); bool allow = execution_context->GetContentSecurityPolicy() ->AllowTrustedTypeAssignmentFailure( @@ -191,7 +199,7 @@ prefix == "Function" ? value.Substring(static_cast<wtf_size_t>( strlen(kAnonymousPrefix))) : value, - prefix); + prefix, issue_id); // TODO(1087743): Add a console message for Trusted Type-related Function // constructor failures, to warn the developer of the outstanding issues @@ -215,6 +223,15 @@ if (!allow) { exception_state.ThrowTypeError(GetMessage(kind)); + v8::Local<v8::Value> exception = exception_state.GetException(); + if (!exception.IsEmpty()) { + v8::Isolate* isolate = execution_context->GetIsolate(); + ThreadDebugger* debugger = ThreadDebugger::From(isolate); + debugger->GetV8Inspector()->associateExceptionData( + v8::Local<v8::Context>(), exception, + V8AtomicString(isolate, "issueId"), + V8String(isolate, IdentifiersFactory::IdFromToken(issue_id))); + } } return !allow; }
diff --git a/third_party/blink/renderer/modules/csspaint/background_color_paint_definition.h b/third_party/blink/renderer/modules/csspaint/background_color_paint_definition.h index cf83575..9e2e375 100644 --- a/third_party/blink/renderer/modules/csspaint/background_color_paint_definition.h +++ b/third_party/blink/renderer/modules/csspaint/background_color_paint_definition.h
@@ -18,6 +18,7 @@ class Image; class LocalFrame; +class Node; class PaintWorkletProxyClient; class MODULES_EXPORT BackgroundColorPaintDefinition final
diff --git a/third_party/blink/renderer/modules/csspaint/clip_path_paint_definition.h b/third_party/blink/renderer/modules/csspaint/clip_path_paint_definition.h index 62b10329..e5f31723 100644 --- a/third_party/blink/renderer/modules/csspaint/clip_path_paint_definition.h +++ b/third_party/blink/renderer/modules/csspaint/clip_path_paint_definition.h
@@ -15,6 +15,7 @@ class FloatRect; class Image; class LocalFrame; +class Node; class PaintWorkletProxyClient; class MODULES_EXPORT ClipPathPaintDefinition final
diff --git a/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element.cc b/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element.cc index 7f6a296..e207fc4b 100644 --- a/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element.cc +++ b/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element.cc
@@ -36,7 +36,6 @@ namespace { const int kThumbRadius = 6; -const base::TimeDelta kRenderTimelineInterval = base::TimeDelta::FromSeconds(1); // Only respond to main button of primary pointer(s). bool IsValidPointerEvent(const blink::Event& event) { @@ -83,13 +82,6 @@ void MediaControlTimelineElement::SetPosition(double current_time, bool suppress_aria) { - if (is_live_ && !live_anchor_time_ && current_time != 0) { - live_anchor_time_.emplace(); - live_anchor_time_->clock_time_ = base::TimeTicks::Now(); - live_anchor_time_->media_time_ = MediaElement().currentTime(); - } - - MaybeUpdateTimelineInterval(); setValue(String::Number(current_time)); if (!suppress_aria) @@ -99,11 +91,8 @@ } void MediaControlTimelineElement::SetDuration(double duration) { - is_live_ = std::isinf(duration); - double duration_value = duration; - SetFloatingPointAttribute(html_names::kMaxAttr, - is_live_ ? 0.0 : duration_value); - SetFloatingPointAttribute(html_names::kMinAttr, 0.0); + double duration_value = std::isfinite(duration) ? duration : 0; + SetFloatingPointAttribute(html_names::kMaxAttr, duration_value); RenderBarSegments(); } @@ -120,12 +109,10 @@ if (BeginScrubbingEvent(event)) { Platform::Current()->RecordAction( UserMetricsAction("Media.Controls.ScrubbingBegin")); - is_scrubbing_ = true; GetMediaControls().BeginScrubbing(MediaControlsImpl::IsTouchEvent(&event)); } else if (EndScrubbingEvent(event)) { Platform::Current()->RecordAction( UserMetricsAction("Media.Controls.ScrubbingEnd")); - is_scrubbing_ = false; GetMediaControls().EndScrubbing(); } @@ -176,58 +163,6 @@ event, GetLayoutObject()); } -void MediaControlTimelineElement::OnMediaPlaying() { - if (!is_live_) - return; - - if (render_timeline_timer_.IsRunning()) - render_timeline_timer_.Stop(); -} - -void MediaControlTimelineElement::OnMediaStoppedPlaying() { - if (!is_live_ || is_scrubbing_ || !live_anchor_time_) - return; - - render_timeline_timer_.Start( - FROM_HERE, kRenderTimelineInterval, - WTF::BindRepeating(&MediaControlTimelineElement::UpdateLiveTimeline, - WrapWeakPersistent(this))); -} - -void MediaControlTimelineElement::OnProgress() { - MaybeUpdateTimelineInterval(); - RenderBarSegments(); -} - -void MediaControlTimelineElement::UpdateLiveTimeline() { - MaybeUpdateTimelineInterval(); - RenderBarSegments(); -} - -void MediaControlTimelineElement::MaybeUpdateTimelineInterval() { - if (!is_live_ || !MediaElement().seekable()->length() || !live_anchor_time_) - return; - - int last_seekable = MediaElement().seekable()->length() - 1; - double seekable_start = - MediaElement().seekable()->start(last_seekable, ASSERT_NO_EXCEPTION); - double seekable_end = - MediaElement().seekable()->end(last_seekable, ASSERT_NO_EXCEPTION); - double expected_media_time_now = - live_anchor_time_->media_time_ + - (base::TimeTicks::Now() - live_anchor_time_->clock_time_).InSecondsF(); - - // Cap the current live time in seekable range. - if (expected_media_time_now > seekable_end) { - live_anchor_time_->media_time_ = seekable_end; - live_anchor_time_->clock_time_ = base::TimeTicks::Now(); - expected_media_time_now = seekable_end; - } - - SetFloatingPointAttribute(html_names::kMinAttr, seekable_start); - SetFloatingPointAttribute(html_names::kMaxAttr, expected_media_time_now); -} - void MediaControlTimelineElement::RenderBarSegments() { SetupBarSegments(); @@ -239,16 +174,6 @@ // buffered range containing the current play head. TimeRanges* buffered_time_ranges = MediaElement().buffered(); DCHECK(buffered_time_ranges); - - // Calculate |current_time| and |duration| for live media base on the timeline - // value since timeline's minimum value is not necessarily zero. - if (is_live_) { - current_time = - value().ToDouble() - GetFloatingPointAttribute(html_names::kMinAttr); - duration = GetFloatingPointAttribute(html_names::kMaxAttr) - - GetFloatingPointAttribute(html_names::kMinAttr); - } - if (std::isnan(duration) || std::isinf(duration) || !duration || std::isnan(current_time)) { SetBeforeSegmentPosition(MediaControlSliderElement::Position(0, 0));
diff --git a/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element.h b/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element.h index f0c62f0..c40ec8d 100644 --- a/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element.h +++ b/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element.h
@@ -5,9 +5,6 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIA_CONTROLS_ELEMENTS_MEDIA_CONTROL_TIMELINE_ELEMENT_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIA_CONTROLS_ELEMENTS_MEDIA_CONTROL_TIMELINE_ELEMENT_H_ -#include "base/time/time.h" -#include "base/timer/timer.h" -#include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/blink/renderer/modules/media_controls/elements/media_control_slider_element.h" #include "third_party/blink/renderer/modules/modules_export.h" @@ -31,10 +28,6 @@ void OnMediaKeyboardEvent(Event* event) { DefaultEventHandler(*event); } - void OnMediaPlaying(); - void OnMediaStoppedPlaying(); - void OnProgress(); - void RenderBarSegments(); // Inform the timeline that the Media Controls have been shown or hidden. @@ -47,18 +40,9 @@ const char* GetNameForHistograms() const override; private: - // Struct used to track the current live time. - struct LiveAnchorTime { - base::TimeTicks clock_time_; - double media_time_ = 0; - }; - void DefaultEventHandler(Event&) override; bool KeepEventInNode(const Event&) const override; - void UpdateLiveTimeline(); - void MaybeUpdateTimelineInterval(); - // Checks if we can begin or end a scrubbing event. If the event is a pointer // event then it needs to start and end with valid pointer events. If the // event is a pointer event followed by a touch event then it can only be @@ -71,14 +55,6 @@ bool is_touching_ = false; bool controls_hidden_ = false; - - bool is_scrubbing_ = false; - - bool is_live_ = false; - - absl::optional<LiveAnchorTime> live_anchor_time_; - - base::RepeatingTimer render_timeline_timer_; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/media_controls/media_controls_impl.cc b/third_party/blink/renderer/modules/media_controls/media_controls_impl.cc index 1b17f93..a260d500 100644 --- a/third_party/blink/renderer/modules/media_controls/media_controls_impl.cc +++ b/third_party/blink/renderer/modules/media_controls/media_controls_impl.cc
@@ -1864,13 +1864,11 @@ void MediaControlsImpl::OnPlaying() { StartHideMediaControlsTimer(); UpdateCSSClassFromState(); - timeline_->OnMediaPlaying(); } void MediaControlsImpl::OnPause() { UpdatePlayState(); UpdateTimeIndicators(); - timeline_->OnMediaStoppedPlaying(); MakeOpaque(); StopHideMediaControlsTimer(); @@ -1995,7 +1993,7 @@ } void MediaControlsImpl::OnLoadingProgress() { - timeline_->OnProgress(); + timeline_->RenderBarSegments(); } void MediaControlsImpl::ComputeWhichControlsFit() { @@ -2195,7 +2193,6 @@ } void MediaControlsImpl::OnWaiting() { - timeline_->OnMediaStoppedPlaying(); UpdateCSSClassFromState(); }
diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_script_cached_metadata_handler.cc b/third_party/blink/renderer/modules/service_worker/service_worker_script_cached_metadata_handler.cc index 883e608..3d8a8bd 100644 --- a/third_party/blink/renderer/modules/service_worker/service_worker_script_cached_metadata_handler.cc +++ b/third_party/blink/renderer/modules/service_worker/service_worker_script_cached_metadata_handler.cc
@@ -60,7 +60,8 @@ scoped_refptr<CachedMetadata> ServiceWorkerScriptCachedMetadataHandler::GetCachedMetadata( - uint32_t data_type_id) const { + uint32_t data_type_id, + GetCachedMetadataBehavior behavior) const { if (!cached_metadata_ || cached_metadata_->DataTypeID() != data_type_id) return nullptr; return cached_metadata_;
diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_script_cached_metadata_handler.h b/third_party/blink/renderer/modules/service_worker/service_worker_script_cached_metadata_handler.h index 0ff8c93eb..91df026 100644 --- a/third_party/blink/renderer/modules/service_worker/service_worker_script_cached_metadata_handler.h +++ b/third_party/blink/renderer/modules/service_worker/service_worker_script_cached_metadata_handler.h
@@ -32,7 +32,8 @@ void ClearCachedMetadata(blink::mojom::CodeCacheHost*, ClearCacheType) override; scoped_refptr<CachedMetadata> GetCachedMetadata( - uint32_t data_type_id) const override; + uint32_t data_type_id, + GetCachedMetadataBehavior behavior = kCrashIfUnchecked) const override; String Encoding() const override; bool IsServedFromCacheStorage() const override; void OnMemoryDump(WebProcessMemoryDump* pmd,
diff --git a/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope_test.cc b/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope_test.cc index eaa35b1..23e0da6 100644 --- a/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope_test.cc +++ b/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope_test.cc
@@ -152,8 +152,8 @@ global_scope->ScriptController()->GetScriptState(); EXPECT_TRUE(script_state); KURL js_url("https://example.com/worklet.js"); - v8::Local<v8::Module> module = ModuleTestBase::CompileModule( - script_state->GetIsolate(), source_code, js_url); + v8::Local<v8::Module> module = + ModuleTestBase::CompileModule(script_state, source_code, js_url); EXPECT_FALSE(module.IsEmpty()); ScriptValue exception = ModuleRecord::Instantiate(script_state, module, js_url);
diff --git a/third_party/blink/renderer/modules/webaudio/audio_worklet_thread_test.cc b/third_party/blink/renderer/modules/webaudio/audio_worklet_thread_test.cc index 8de1b80..0125105 100644 --- a/third_party/blink/renderer/modules/webaudio/audio_worklet_thread_test.cc +++ b/third_party/blink/renderer/modules/webaudio/audio_worklet_thread_test.cc
@@ -123,7 +123,7 @@ ScriptState::Scope scope(script_state); KURL js_url("https://example.com/worklet.js"); v8::Local<v8::Module> module = ModuleTestBase::CompileModule( - script_state->GetIsolate(), "var counter = 0; ++counter;", js_url); + script_state, "var counter = 0; ++counter;", js_url); EXPECT_FALSE(module.IsEmpty()); ScriptValue exception = ModuleRecord::Instantiate(script_state, module, js_url);
diff --git a/third_party/blink/renderer/modules/webtransport/web_transport.cc b/third_party/blink/renderer/modules/webtransport/web_transport.cc index 37832e8..14a3e944 100644 --- a/third_party/blink/renderer/modules/webtransport/web_transport.cc +++ b/third_party/blink/renderer/modules/webtransport/web_transport.cc
@@ -840,10 +840,13 @@ bool fin_received) { DVLOG(1) << "WebTransport::OnIncomingStreamClosed(" << stream_id << ", " << fin_received << ") this=" << this; - WebTransportStream* stream = stream_map_.DeprecatedAtOrEmptyValue(stream_id); - // |stream| can be unset because of races between different ways of closing - // |bidirectional streams. - if (stream) { + auto it = stream_map_.find(stream_id); + + // The stream may have already been removed from the map because of races + // between different ways of closing bidirectional streams. + if (it != stream_map_.end()) { + WebTransportStream* stream = it->value; + DCHECK(stream); stream->OnIncomingStreamClosed(fin_received); } }
diff --git a/third_party/blink/renderer/modules/worklet/animation_and_paint_worklet_thread_test.cc b/third_party/blink/renderer/modules/worklet/animation_and_paint_worklet_thread_test.cc index 928441f..16d0a25a 100644 --- a/third_party/blink/renderer/modules/worklet/animation_and_paint_worklet_thread_test.cc +++ b/third_party/blink/renderer/modules/worklet/animation_and_paint_worklet_thread_test.cc
@@ -83,7 +83,7 @@ ScriptState::Scope scope(script_state); const KURL js_url("https://example.com/foo.js"); v8::Local<v8::Module> module = ModuleTestBase::CompileModule( - script_state->GetIsolate(), "var counter = 0; ++counter;", js_url); + script_state, "var counter = 0; ++counter;", js_url); EXPECT_FALSE(module.IsEmpty()); ScriptValue exception = ModuleRecord::Instantiate(script_state, module, js_url);
diff --git a/third_party/blink/renderer/platform/bindings/exception_state.h b/third_party/blink/renderer/platform/bindings/exception_state.h index 051d742..9ba5753 100644 --- a/third_party/blink/renderer/platform/bindings/exception_state.h +++ b/third_party/blink/renderer/platform/bindings/exception_state.h
@@ -206,7 +206,7 @@ const String& Message() const { return message_; } - v8::Local<v8::Value> GetException() { + virtual v8::Local<v8::Value> GetException() { DCHECK(!exception_.IsEmpty()); return exception_.NewLocal(isolate_); } @@ -319,6 +319,9 @@ void ThrowWasmCompileError(const String& message) override; void RethrowV8Exception(v8::Local<v8::Value>) override; ExceptionState& ReturnThis() { return *this; } + v8::Local<v8::Value> GetException() override { + return v8::Local<v8::Value>(); + } }; // Syntax sugar for DummyExceptionStateForTesting.
diff --git a/third_party/blink/renderer/platform/loader/fetch/raw_resource.h b/third_party/blink/renderer/platform/loader/fetch/raw_resource.h index 3608238f..e13e7fc 100644 --- a/third_party/blink/renderer/platform/loader/fetch/raw_resource.h +++ b/third_party/blink/renderer/platform/loader/fetch/raw_resource.h
@@ -40,7 +40,9 @@ class RawResourceClient; class ResourceFetcher; -class PLATFORM_EXPORT RawResource final : public Resource { +// TODO(chromium:1210399): Make RawResource final again once +// ResourceLoaderCodeCacheTest is moved to blink_unittests. +class PLATFORM_EXPORT RawResource : public Resource { public: static RawResource* FetchSynchronously(FetchParameters&, ResourceFetcher*,
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource.cc b/third_party/blink/renderer/platform/loader/fetch/resource.cc index e0d73a1..75b91ab 100644 --- a/third_party/blink/renderer/platform/loader/fetch/resource.cc +++ b/third_party/blink/renderer/platform/loader/fetch/resource.cc
@@ -528,6 +528,10 @@ DCHECK(!GetResponse().IsNull()); } +bool Resource::CodeCacheHashRequired() const { + return false; +} + String Resource::ReasonNotDeletable() const { StringBuilder builder; if (HasClientsOrObservers()) {
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource.h b/third_party/blink/renderer/platform/loader/fetch/resource.h index f6983bc3..af5d5d36 100644 --- a/third_party/blink/renderer/platform/loader/fetch/resource.h +++ b/third_party/blink/renderer/platform/loader/fetch/resource.h
@@ -273,6 +273,13 @@ // should implement the resource-specific behavior. virtual void SetSerializedCachedMetadata(mojo_base::BigBuffer data); + // Gets whether the serialized cached metadata must contain a hash of the + // source text. For resources other than ScriptResource, this is always false. + // TODO(chromium:1210399): This can be true in non-ScriptResource in unit + // tests. Fix this once ResourceLoaderCodeCacheTest is moved to + // blink_unittests. + virtual bool CodeCacheHashRequired() const; + AtomicString HttpContentType() const; bool WasCanceled() const { return error_ && error_->IsCancellation(); }
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_load_timing.cc b/third_party/blink/renderer/platform/loader/fetch/resource_load_timing.cc index 94af06e..c0e09a2d 100644 --- a/third_party/blink/renderer/platform/loader/fetch/resource_load_timing.cc +++ b/third_party/blink/renderer/platform/loader/fetch/resource_load_timing.cc
@@ -5,7 +5,6 @@ #include "third_party/blink/renderer/platform/loader/fetch/resource_load_timing.h" #include "services/network/public/mojom/load_timing_info.mojom-blink.h" -#include "third_party/blink/renderer/platform/instrumentation/tracing/trace_event.h" namespace blink { @@ -158,8 +157,6 @@ } void ResourceLoadTiming::SetSendStart(base::TimeTicks send_start) { - TRACE_EVENT_MARK_WITH_TIMESTAMP0("blink.user_timing", "requestStart", - send_start); send_start_ = send_start; }
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc b/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc index db6acc9..8a087e2 100644 --- a/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc +++ b/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc
@@ -231,7 +231,10 @@ : status_(kNoRequestSent), code_cache_loader_(std::move(code_cache_loader)), url_(url), - freeze_mode_(freeze_mode) { + freeze_mode_(freeze_mode), + should_use_source_hash_( + SchemeRegistry::SchemeSupportsCodeCacheWithHashing( + url.Protocol())) { DCHECK(RuntimeEnabledFeatures::IsolatedCodeCacheEnabled()); } @@ -285,6 +288,14 @@ base::Time cached_code_response_time_; base::Time resource_response_time_; bool use_isolated_code_cache_ = false; + bool resource_response_arrived_ = false; + + // Whether this response should use a hash of the source text to check + // whether a code cache entry is valid, rather than relying on response time. + // This could be computed as-needed based on url_, but doing so would require + // converting url_ from WebURL to KURL each time. + const bool should_use_source_hash_; + base::WeakPtrFactory<CodeCacheRequest> weak_ptr_factory_{this}; }; @@ -316,6 +327,7 @@ const base::Time& resource_response_time, bool use_isolated_code_cache, ResourceLoader* resource_loader) { + resource_response_arrived_ = true; resource_response_time_ = resource_response_time; use_isolated_code_cache_ = use_isolated_code_cache; MaybeSendCachedCode(std::move(cached_code_), resource_loader); @@ -357,7 +369,7 @@ status_ = kReceivedResponse; cached_code_response_time_ = response_time; - if (resource_response_time_.is_null()) { + if (!resource_response_arrived_) { // Wait for the response before we can send the cached code. // TODO(crbug.com/866889): Pass this as a handle to avoid the overhead of // copying this data. @@ -371,24 +383,43 @@ void ResourceLoader::CodeCacheRequest::MaybeSendCachedCode( mojo_base::BigBuffer data, ResourceLoader* resource_loader) { - if (status_ != kReceivedResponse || cached_code_response_time_.is_null() || - resource_response_time_.is_null()) { + // Wait until both responses have arrived; they can happen in either order. + if (status_ != kReceivedResponse || !resource_response_arrived_) { return; } + auto ClearCachedCodeIfPresent = [&]() { + if (data.size() != 0) { + resource_loader->ClearCachedCode(); + } + }; + // If the resource was fetched for service worker script or was served from // CacheStorage via service worker then they maintain their own code cache. // We should not use the isolated cache. if (!use_isolated_code_cache_) { - resource_loader->ClearCachedCode(); + ClearCachedCodeIfPresent(); return; } - // If the timestamps don't match, the code cache data may be for a different - // response. See https://crbug.com/1099587. - if (resource_response_time_ != cached_code_response_time_) { - resource_loader->ClearCachedCode(); - return; + if (should_use_source_hash_) { + // This resource should use a source text hash rather than a response time + // comparison. + if (!resource_loader->resource_->CodeCacheHashRequired()) { + // This kind of Resource doesn't support requiring a hash, so we can't + // send cached code to it. + ClearCachedCodeIfPresent(); + return; + } + } else { + // If the timestamps don't match or are null, the code cache data may be for + // a different response. See https://crbug.com/1099587. + if (cached_code_response_time_.is_null() || + resource_response_time_.is_null() || + resource_response_time_ != cached_code_response_time_) { + ClearCachedCodeIfPresent(); + return; + } } if (data.size() > 0) { @@ -461,8 +492,14 @@ return false; const ResourceRequestHead& request = resource_->GetResourceRequest(); - if (!request.Url().ProtocolIsInHTTPFamily()) + // Aside from http and https, the only other supported protocols are those + // listed in the SchemeRegistry as requiring a content equality check. + bool should_use_source_hash = + SchemeRegistry::SchemeSupportsCodeCacheWithHashing( + request.Url().Protocol()); + if (!request.Url().ProtocolIsInHTTPFamily() && !should_use_source_hash) { return false; + } // When loading the service worker scripts, we don't need to check the // GeneratedCodeCache. The code cache corresponding to these scripts is in // the service worker's "installed script storage" and would be fetched along @@ -485,8 +522,13 @@ // These fetches should be cheap, however, requiring one additional IPC and // no browser process disk IO since the cache index is in memory and the // resource key should not be present. + // + // The only case where it's easy to skip a kRaw resource is when a content + // equality check is required, because only ScriptResource supports that + // requirement. return resource_->GetType() == ResourceType::kScript || - resource_->GetType() == ResourceType::kRaw; + (resource_->GetType() == ResourceType::kRaw && + !should_use_source_hash); } void ResourceLoader::Start() {
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_loader_test.cc b/third_party/blink/renderer/platform/loader/fetch/resource_loader_test.cc index 03aa6f5..c421b33 100644 --- a/third_party/blink/renderer/platform/loader/fetch/resource_loader_test.cc +++ b/third_party/blink/renderer/platform/loader/fetch/resource_loader_test.cc
@@ -30,6 +30,7 @@ #include "third_party/blink/renderer/platform/testing/code_cache_loader_mock.h" #include "third_party/blink/renderer/platform/testing/mock_context_lifecycle_notifier.h" #include "third_party/blink/renderer/platform/testing/testing_platform_support_with_mock_scheduler.h" +#include "third_party/blink/renderer/platform/weborigin/scheme_registry.h" #include "third_party/blink/renderer/platform/wtf/text/string_builder.h" namespace blink { @@ -77,7 +78,8 @@ const KURL foo_url_; const KURL bar_url_; - class NoopLoaderFactory final : public ResourceFetcher::LoaderFactory { + class NoopLoaderFactory : public ResourceFetcher::LoaderFactory { + public: std::unique_ptr<WebURLLoader> CreateURLLoader( const ResourceRequest& request, const ResourceLoaderOptions& options, @@ -99,10 +101,13 @@ ResourceFetcher* MakeResourceFetcher( TestResourceFetcherProperties* properties, - FetchContext* context) { + FetchContext* context, + ResourceFetcher::LoaderFactory* loader_factory = nullptr) { return MakeGarbageCollected<ResourceFetcher>(ResourceFetcherInit( properties->MakeDetachable(), context, CreateTaskRunner(), - CreateTaskRunner(), MakeGarbageCollected<NoopLoaderFactory>(), + CreateTaskRunner(), + loader_factory ? loader_factory + : MakeGarbageCollected<NoopLoaderFactory>(), MakeGarbageCollected<MockContextLifecycleNotifier>(), nullptr /* back_forward_cache_loader_helper */)); } @@ -836,4 +841,203 @@ ExpectHistogramsMatching(info); } +// TODO(chromium:1210399): Move this to blink_unittests and use ScriptResource. +class ResourceLoaderCodeCacheTest : public ResourceLoaderTest { + public: + ResourceLoaderCodeCacheTest() = default; + + protected: + class CodeCacheTestLoaderFactory final : public NoopLoaderFactory { + public: + explicit CodeCacheTestLoaderFactory( + scoped_refptr<CodeCacheLoaderMock::Controller> controller) + : controller_(std::move(controller)) {} + std::unique_ptr<WebCodeCacheLoader> CreateCodeCacheLoader() override { + return std::make_unique<CodeCacheLoaderMock>(controller_); + } + + private: + scoped_refptr<CodeCacheLoaderMock::Controller> controller_; + }; + + // A version of RawResource that overrides a few virtual methods so that we + // can observe how ResourceLoader is calling functions on its Resource. + class TestRawResource : public RawResource { + public: + TestRawResource(const ResourceRequest& resource_request, + ResourceType type, + const ResourceLoaderOptions& options) + : RawResource(resource_request, type, options) {} + + bool CodeCacheHashRequired() const override { + return code_cache_hash_required_; + } + void SetSerializedCachedMetadata(mojo_base::BigBuffer data) override { + cached_metadata_ = std::move(data); + } + + const mojo_base::BigBuffer* CachedMetadata() { + return cached_metadata_ ? &*cached_metadata_ : nullptr; + } + + void SetCodeCacheHashRequired(bool code_cache_hash_required) { + code_cache_hash_required_ = code_cache_hash_required; + } + + private: + bool code_cache_hash_required_ = false; + absl::optional<mojo_base::BigBuffer> cached_metadata_; + }; + + class TestRawResourceFactory : public NonTextResourceFactory { + public: + TestRawResourceFactory() : NonTextResourceFactory(ResourceType::kScript) {} + + Resource* Create(const ResourceRequest& request, + const ResourceLoaderOptions& options) const override { + return MakeGarbageCollected<TestRawResource>(request, type_, options); + } + }; + + // All relevant variables after running CommonSetup. + struct State { + STACK_ALLOCATED(); + + public: + TestRawResource* resource; + ResourceLoader* loader; + ResourceResponse response; + scoped_refptr<CodeCacheLoaderMock::Controller> controller; + }; + + State CommonSetup(const char* url_string = nullptr) { + SchemeRegistry::RegisterURLSchemeAsCodeCacheWithHashing( + "codecachewithhashing"); + + State state; + auto* properties = MakeGarbageCollected<TestResourceFetcherProperties>(); + FetchContext* context = MakeGarbageCollected<MockFetchContext>(); + state.controller = base::MakeRefCounted<CodeCacheLoaderMock::Controller>(); + state.controller->DelayResponse(); + auto* loader_factory = + MakeGarbageCollected<CodeCacheTestLoaderFactory>(state.controller); + auto* fetcher = MakeResourceFetcher(properties, context, loader_factory); + + KURL url(url_string ? url_string + : "codecachewithhashing://www.example.com/"); + ResourceRequest request(url); + request.SetRequestContext(mojom::blink::RequestContextType::SCRIPT); + + FetchParameters params = FetchParameters::CreateForTest(std::move(request)); + state.resource = static_cast<TestRawResource*>( + fetcher->RequestResource(params, TestRawResourceFactory(), nullptr)); + state.resource->SetCodeCacheHashRequired(true); + state.loader = state.resource->Loader(); + + state.response = ResourceResponse(url); + state.response.SetHttpStatusCode(200); + + return state; + } +}; + +TEST_F(ResourceLoaderCodeCacheTest, WebUICodeCacheEmptyResponseFirst) { + State state = CommonSetup(); + + state.loader->DidReceiveResponse(WrappedResourceResponse(state.response)); + + // Nothing has changed yet because the code cache hasn't yet responded. + EXPECT_EQ(state.resource->CachedMetadata(), nullptr); + + // An empty code cache response means no data was found. + state.controller->Respond(base::Time(), mojo_base::BigBuffer()); + + // No code cache data was present. + EXPECT_EQ(state.resource->CachedMetadata(), nullptr); +} + +TEST_F(ResourceLoaderCodeCacheTest, WebUICodeCacheEmptyResponseSecond) { + State state = CommonSetup(); + + // An empty code cache response means no data was found. + state.controller->Respond(base::Time(), mojo_base::BigBuffer()); + + // Nothing has changed yet because the content response hasn't arrived yet. + EXPECT_EQ(state.resource->CachedMetadata(), nullptr); + + state.loader->DidReceiveResponse(WrappedResourceResponse(state.response)); + + // No code cache data was present. + EXPECT_EQ(state.resource->CachedMetadata(), nullptr); +} + +TEST_F(ResourceLoaderCodeCacheTest, WebUICodeCacheFullResponseFirst) { + State state = CommonSetup(); + + state.loader->DidReceiveResponse(WrappedResourceResponse(state.response)); + + // Nothing has changed yet because the code cache hasn't yet responded. + EXPECT_EQ(state.resource->CachedMetadata(), nullptr); + + const uint8_t data[] = {2, 3, 4, 5}; + state.controller->Respond(base::Time(), mojo_base::BigBuffer(data)); + + // Code cache data was present. + ASSERT_TRUE(state.resource->CachedMetadata()); + EXPECT_EQ(state.resource->CachedMetadata()->size(), 4UL); + EXPECT_EQ(state.resource->CachedMetadata()->data()[3], 5UL); +} + +TEST_F(ResourceLoaderCodeCacheTest, WebUICodeCacheFullResponseSecond) { + State state = CommonSetup(); + + const uint8_t data[] = {2, 3, 4, 5}; + state.controller->Respond(base::Time(), mojo_base::BigBuffer(data)); + + // Nothing has changed yet because the content response hasn't arrived yet. + EXPECT_EQ(state.resource->CachedMetadata(), nullptr); + + state.loader->DidReceiveResponse(WrappedResourceResponse(state.response)); + + // Code cache data was present. + ASSERT_TRUE(state.resource->CachedMetadata()); + EXPECT_EQ(state.resource->CachedMetadata()->size(), 4UL); + EXPECT_EQ(state.resource->CachedMetadata()->data()[3], 5UL); +} + +TEST_F(ResourceLoaderCodeCacheTest, + WebUICodeCacheFullResponseSecondResourceDoesNotSupportHashing) { + State state = CommonSetup(); + state.resource->SetCodeCacheHashRequired(false); + + const uint8_t data[] = {2, 3, 4, 5}; + state.controller->Respond(base::Time(), mojo_base::BigBuffer(data)); + + // Nothing has changed yet because the content response hasn't arrived yet. + EXPECT_EQ(state.resource->CachedMetadata(), nullptr); + + state.loader->DidReceiveResponse(WrappedResourceResponse(state.response)); + + // Since the Resource didn't specify that a hash check is required, + // the cached metadata should not be set. + EXPECT_EQ(state.resource->CachedMetadata(), nullptr); +} + +TEST_F(ResourceLoaderCodeCacheTest, + WebUICodeCacheFullResponseSecondHttpsScheme) { + State state = CommonSetup("https://www.example.com/"); + + const uint8_t data[] = {2, 3, 4, 5}; + state.controller->Respond(base::Time(), mojo_base::BigBuffer(data)); + + // Nothing has changed yet because the content response hasn't arrived yet. + EXPECT_EQ(state.resource->CachedMetadata(), nullptr); + + state.loader->DidReceiveResponse(WrappedResourceResponse(state.response)); + + // Since the URL was https, and the response times were not set, the cached + // metadata should not be set. + EXPECT_EQ(state.resource->CachedMetadata(), nullptr); +} + } // namespace blink
diff --git a/third_party/blink/renderer/platform/loader/fetch/script_cached_metadata_handler.cc b/third_party/blink/renderer/platform/loader/fetch/script_cached_metadata_handler.cc index c18e6da..55b8874 100644 --- a/third_party/blink/renderer/platform/loader/fetch/script_cached_metadata_handler.cc +++ b/third_party/blink/renderer/platform/loader/fetch/script_cached_metadata_handler.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/renderer/platform/loader/fetch/script_cached_metadata_handler.h" #include "base/metrics/histogram_macros.h" +#include "third_party/blink/renderer/platform/crypto.h" #include "third_party/blink/renderer/platform/loader/fetch/cached_metadata.h" #include "third_party/blink/renderer/platform/loader/fetch/resource.h" @@ -24,6 +25,8 @@ std::unique_ptr<CachedMetadataSender> sender) : sender_(std::move(sender)), encoding_(encoding) {} +ScriptCachedMetadataHandler::~ScriptCachedMetadataHandler() = default; + void ScriptCachedMetadataHandler::Trace(Visitor* visitor) const { CachedMetadataHandler::Trace(visitor); } @@ -63,7 +66,8 @@ } scoped_refptr<CachedMetadata> ScriptCachedMetadataHandler::GetCachedMetadata( - uint32_t data_type_id) const { + uint32_t data_type_id, + GetCachedMetadataBehavior behavior) const { if (!cached_metadata_) { RecordState(cached_metadata_discarded_ ? StateOnGet::kWasDiscarded : StateOnGet::kWasNeverPresent); @@ -122,4 +126,123 @@ } } +void ScriptCachedMetadataHandlerWithHashing::Check( + blink::mojom::CodeCacheHost* code_cache_host, + const ParkableString& source_text) { + // If we already attempted to Check once and couldn't compute the hash, just + // give up. + if (hash_state_ == kFailedToCheck) + return; + + DigestValue digest; + const String& unparked = source_text.ToString(); + if (!ComputeDigest(kHashAlgorithmSha256, + static_cast<const char*>(unparked.Bytes()), + unparked.CharactersSizeInBytes(), digest)) { + // Something went wrong computing the hash. We can't use the cached + // metadata, but we don't need to clear it on disk. + ClearCachedMetadata(code_cache_host, kClearLocally); + hash_state_ = kFailedToCheck; + return; + } + CHECK_EQ(digest.size(), kSha256Bytes); + + if (hash_state_ != kUninitialized) { + // Compare the hash of the new source text with the one previously loaded. + if (memcmp(digest.data(), hash_, kSha256Bytes) != 0) { + // If this handler was previously checked and is now being checked again + // with a different hash value, then something bad happened. We expect the + // handler to only be used with one script source text. + CHECK_NE(hash_state_, kChecked); + + // The cached metadata is invalid because the source file has changed. + ClearCachedMetadata(code_cache_host, kClearPersistentStorage); + } + } + + // Remember the computed hash so that it can be used when saving data to + // persistent storage. + memcpy(hash_, digest.data(), kSha256Bytes); + hash_state_ = kChecked; +} + +void ScriptCachedMetadataHandlerWithHashing::SetSerializedCachedMetadata( + mojo_base::BigBuffer data) { + // We only expect to receive cached metadata from the platform once. If this + // triggers, it indicates an efficiency problem which is most likely + // unexpected in code designed to improve performance. + DCHECK(!cached_metadata_); + DCHECK_EQ(hash_state_, kUninitialized); + + // kChecked and kFailedToCheck states guarantees that hash_ will never be + // updated again. + CHECK(hash_state_ != kChecked && hash_state_ != kFailedToCheck); + + const uint32_t kMetadataTypeSize = sizeof(uint32_t); + const uint32_t kHashingHeaderSize = kMetadataTypeSize + kSha256Bytes; + + // Ensure the data is big enough, otherwise discard the data. + if (data.size() < kHashingHeaderSize) + return; + // Ensure the marker matches, otherwise discard the data. + if (*reinterpret_cast<const uint32_t*>(data.data()) != + CachedMetadataHandler::kSingleEntryWithHash) { + return; + } + + // Split out the data into the hash and the CachedMetadata that follows. + memcpy(hash_, data.data() + kMetadataTypeSize, kSha256Bytes); + hash_state_ = kDeserialized; + cached_metadata_ = CachedMetadata::CreateFromSerializedData( + data.data() + kHashingHeaderSize, data.size() - kHashingHeaderSize); +} + +scoped_refptr<CachedMetadata> +ScriptCachedMetadataHandlerWithHashing::GetCachedMetadata( + uint32_t data_type_id, + GetCachedMetadataBehavior behavior) const { + // The caller should have called Check before attempting to read the cached + // metadata. If you just want to know whether cached metadata exists, and it's + // okay for that metadata to possibly mismatch with the loaded script content, + // then you can pass kAllowUnchecked as the second parameter. + if (behavior == kCrashIfUnchecked) { + CHECK(hash_state_ == kChecked || hash_state_ == kFailedToCheck); + } + + scoped_refptr<CachedMetadata> result = + ScriptCachedMetadataHandler::GetCachedMetadata(data_type_id, behavior); + + // The cached metadata should have been cleared if hash computation failed. + if (hash_state_ == kFailedToCheck) { + CHECK_EQ(result, nullptr); + } + + return result; +} + +void ScriptCachedMetadataHandlerWithHashing::CommitToPersistentStorage( + blink::mojom::CodeCacheHost* code_cache_host) { + Vector<uint8_t> serialized_data = GetSerializedCachedMetadata(); + Sender()->Send(code_cache_host, serialized_data.data(), + serialized_data.size()); +} + +Vector<uint8_t> +ScriptCachedMetadataHandlerWithHashing::GetSerializedCachedMetadata() const { + Vector<uint8_t> serialized_data; + if (cached_metadata_ && hash_state_ == kChecked) { + uint32_t marker = CachedMetadataHandler::kSingleEntryWithHash; + serialized_data.Append(reinterpret_cast<uint8_t*>(&marker), sizeof(marker)); + serialized_data.Append(hash_, kSha256Bytes); + base::span<const uint8_t> data = cached_metadata_->SerializedData(); + serialized_data.Append(data.data(), data.size()); + } + return serialized_data; +} + +void ScriptCachedMetadataHandlerWithHashing::ResetForTesting() { + if (hash_state_ == kChecked) + hash_state_ = kDeserialized; +} + } // namespace blink
diff --git a/third_party/blink/renderer/platform/loader/fetch/script_cached_metadata_handler.h b/third_party/blink/renderer/platform/loader/fetch/script_cached_metadata_handler.h index c18f809..3eb36e18 100644 --- a/third_party/blink/renderer/platform/loader/fetch/script_cached_metadata_handler.h +++ b/third_party/blink/renderer/platform/loader/fetch/script_cached_metadata_handler.h
@@ -27,12 +27,12 @@ // (not by Resource) by the browser process, and the cached metadata written to // the handler is rejected if e.g. the disk cache entry has been updated and the // handler refers to an older response. -class PLATFORM_EXPORT ScriptCachedMetadataHandler final +class PLATFORM_EXPORT ScriptCachedMetadataHandler : public SingleCachedMetadataHandler { public: ScriptCachedMetadataHandler(const WTF::TextEncoding&, std::unique_ptr<CachedMetadataSender>); - ~ScriptCachedMetadataHandler() override = default; + ~ScriptCachedMetadataHandler() override; void Trace(Visitor*) const override; void SetCachedMetadata(blink::mojom::CodeCacheHost*, uint32_t, @@ -40,7 +40,9 @@ size_t) override; void ClearCachedMetadata(blink::mojom::CodeCacheHost*, ClearCacheType) override; - scoped_refptr<CachedMetadata> GetCachedMetadata(uint32_t) const override; + scoped_refptr<CachedMetadata> GetCachedMetadata( + uint32_t, + GetCachedMetadataBehavior = kCrashIfUnchecked) const override; // This returns the encoding at the time of ResponseReceived(). Therefore this // does NOT reflect encoding detection from body contents, but the actual @@ -56,21 +58,72 @@ const String& dump_prefix) const override; // Sets the serialized metadata retrieved from the platform's cache. - void SetSerializedCachedMetadata(mojo_base::BigBuffer data); + virtual void SetSerializedCachedMetadata(mojo_base::BigBuffer data); size_t GetCodeCacheSize() const override; + protected: + virtual void CommitToPersistentStorage(blink::mojom::CodeCacheHost*); + + CachedMetadataSender* Sender() const { return sender_.get(); } + + scoped_refptr<CachedMetadata> cached_metadata_; + private: friend class ModuleScriptTest; - void CommitToPersistentStorage(blink::mojom::CodeCacheHost*); - - scoped_refptr<CachedMetadata> cached_metadata_; bool cached_metadata_discarded_ = false; std::unique_ptr<CachedMetadataSender> sender_; const WTF::TextEncoding encoding_; }; +class PLATFORM_EXPORT ScriptCachedMetadataHandlerWithHashing final + : public ScriptCachedMetadataHandler { + public: + ScriptCachedMetadataHandlerWithHashing( + const WTF::TextEncoding& encoding, + std::unique_ptr<CachedMetadataSender> sender) + : ScriptCachedMetadataHandler(encoding, std::move(sender)) {} + ~ScriptCachedMetadataHandlerWithHashing() override = default; + + // Sets the serialized metadata retrieved from the platform's cache. + void SetSerializedCachedMetadata(mojo_base::BigBuffer data) override; + + bool HashRequired() const override { return true; } + + scoped_refptr<CachedMetadata> GetCachedMetadata( + uint32_t, + GetCachedMetadataBehavior = kCrashIfUnchecked) const override; + + // Pretend that the current content and hash were loaded from disk, not + // created by the current process. + void ResetForTesting(); + + void Check(blink::mojom::CodeCacheHost*, + const ParkableString& source_text) override; + + Vector<uint8_t> GetSerializedCachedMetadata() const; + + protected: + void CommitToPersistentStorage(blink::mojom::CodeCacheHost*) override; + + private: + static const uint32_t kSha256Bytes = 256 / 8; + uint8_t hash_[kSha256Bytes]; + enum HashState { + kUninitialized, // hash_ has not been written. + kDeserialized, // hash_ contains data from the code cache that has not yet + // been checked for matching the script text. + + // Terminal states: once hash_state_ reaches one of the following, neither + // hash_state_ nor hash_ will ever change again. + + kChecked, // hash_ contains the hash of the script text. + kFailedToCheck, // hash_ contains garbage. Computing the hash failed. + }; + HashState hash_state_ = kUninitialized; +}; + // Describes a few interesting states of the ScriptCachedMetadataHandler when // GetCachedMetadata() is called. These values are written to logs. New enum // values can be added, but existing enums must never be renumbered or deleted
diff --git a/third_party/blink/renderer/platform/loader/fetch/source_keyed_cached_metadata_handler.cc b/third_party/blink/renderer/platform/loader/fetch/source_keyed_cached_metadata_handler.cc index 1787f87..2838252 100644 --- a/third_party/blink/renderer/platform/loader/fetch/source_keyed_cached_metadata_handler.cc +++ b/third_party/blink/renderer/platform/loader/fetch/source_keyed_cached_metadata_handler.cc
@@ -46,7 +46,8 @@ } scoped_refptr<CachedMetadata> GetCachedMetadata( - uint32_t data_type_id) const override { + uint32_t data_type_id, + GetCachedMetadataBehavior behavior = kCrashIfUnchecked) const override { scoped_refptr<CachedMetadata> cached_metadata = parent_->cached_metadata_map_.at(key_); if (!cached_metadata || cached_metadata->DataTypeID() != data_type_id)
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/cached_metadata_handler.h b/third_party/blink/renderer/platform/loader/fetch/url_loader/cached_metadata_handler.h index 17f0d44..a577739 100644 --- a/third_party/blink/renderer/platform/loader/fetch/url_loader/cached_metadata_handler.h +++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/cached_metadata_handler.h
@@ -18,6 +18,7 @@ namespace blink { class CachedMetadata; +class ParkableString; class ResourceResponse; class WebProcessMemoryDump; @@ -76,9 +77,11 @@ // Enum for marking serialized cached metadatas so that the deserializers // do not conflict. enum CachedMetadataType : uint32_t { - kSingleEntry, // the metadata is a single CachedMetadata entry - kSourceKeyedMap // the metadata is multiple CachedMetadata entries keyed by - // a source string. + kSingleEntry, // the metadata is a single CachedMetadata entry + kSourceKeyedMap, // the metadata is multiple CachedMetadata entries keyed + // by a source string. + kSingleEntryWithHash // the metadata is a content hash followed by a single + // CachedMetadata entry }; virtual ~CachedMetadataHandler() = default; @@ -121,13 +124,43 @@ disable_send_to_platform_for_testing_ = true; } + // Defines how GetCodeCache should behave if the metadata handler requires a + // hash check but Check() hasn't yet been called. + enum GetCachedMetadataBehavior { + // HasCodeCache should crash the program with a runtime CHECK(). + kCrashIfUnchecked, + + // HasCodeCache should return true if the metadata handler contains data, + // even though that data might be stale because we haven't yet validated + // that it matches the current version of the script resource. + kAllowUnchecked, + }; + // Returns cached metadata of the given type associated with this resource. // This cached metadata can be pruned at any time. virtual scoped_refptr<CachedMetadata> GetCachedMetadata( - uint32_t data_type_id) const = 0; + uint32_t data_type_id, + GetCachedMetadataBehavior behavior = kCrashIfUnchecked) const = 0; + + // Whether this cached metadata is required to contain a source text hash, + // which is used in V8CodeCache to check whether the text of a newly-loaded + // script matches the text when the code cache entry was written. + virtual bool HashRequired() const { return false; } + + // If the handler requires source hashing, then Check does the following: + // 1. If cached metadata is present, check the hash on the cached metadata, + // and clear it on a mismatch. + // 2. Remember the source hash so that it will be included on any future calls + // that commit data to persistent storage. + // Calling Check multiple times with different source_text is disallowed. + virtual void Check(blink::mojom::CodeCacheHost*, + const ParkableString& source_text) { + // Do nothing. + } protected: SingleCachedMetadataHandler() = default; + bool disable_send_to_platform_for_testing_ = false; };
diff --git a/third_party/blink/renderer/platform/testing/code_cache_loader_mock.cc b/third_party/blink/renderer/platform/testing/code_cache_loader_mock.cc index df5ba5e..70cdf2a 100644 --- a/third_party/blink/renderer/platform/testing/code_cache_loader_mock.cc +++ b/third_party/blink/renderer/platform/testing/code_cache_loader_mock.cc
@@ -10,7 +10,23 @@ blink::mojom::CodeCacheType cache_type, const WebURL& url, WebCodeCacheLoader::FetchCodeCacheCallback callback) { - std::move(callback).Run(base::Time(), mojo_base::BigBuffer()); + if (controller_ && controller_->delayed_) { + // This simple mock doesn't support multiple in-flight loads. + CHECK(!controller_->callback_); + + controller_->callback_ = std::move(callback); + } else { + std::move(callback).Run(base::Time(), mojo_base::BigBuffer()); + } +} + +void CodeCacheLoaderMock::Controller::DelayResponse() { + delayed_ = true; +} +void CodeCacheLoaderMock::Controller::Respond(base::Time time, + mojo_base::BigBuffer data) { + CHECK(callback_); + std::move(callback_).Run(time, std::move(data)); } } // namespace blink
diff --git a/third_party/blink/renderer/platform/testing/code_cache_loader_mock.h b/third_party/blink/renderer/platform/testing/code_cache_loader_mock.h index 2f0e4b9..fb06db0 100644 --- a/third_party/blink/renderer/platform/testing/code_cache_loader_mock.h +++ b/third_party/blink/renderer/platform/testing/code_cache_loader_mock.h
@@ -14,7 +14,29 @@ // A simple class for mocking WebCodeCacheLoader. class CodeCacheLoaderMock : public WebCodeCacheLoader { public: - CodeCacheLoaderMock() {} + // A class which can be owned by both this mock loader and the creator of this + // mock loader, which lets the creator control the behavior of the mock loader + // without having to retain a reference to the mock loader itself. + class Controller : public base::RefCounted<Controller> { + public: + void DelayResponse(); + void Respond(base::Time time, mojo_base::BigBuffer data); + + private: + friend class CodeCacheLoaderMock; + friend class base::RefCounted<Controller>; + ~Controller() = default; + + // Whether to delay responses until Respond is called. + // Otherwise responses are immediate and empty. + bool delayed_ = false; + + // Callback saved by fetch call, if delayed_ was true. + WebCodeCacheLoader::FetchCodeCacheCallback callback_; + }; + + explicit CodeCacheLoaderMock(scoped_refptr<Controller> controller = nullptr) + : controller_(std::move(controller)) {} CodeCacheLoaderMock(const CodeCacheLoaderMock&) = delete; CodeCacheLoaderMock& operator=(const CodeCacheLoaderMock&) = delete; ~CodeCacheLoaderMock() override = default; @@ -25,10 +47,8 @@ const WebURL& url, WebCodeCacheLoader::FetchCodeCacheCallback callback) override; - base::WeakPtr<CodeCacheLoaderMock> GetWeakPtr(); - private: - base::WeakPtrFactory<CodeCacheLoaderMock> weak_ptr_factory_{this}; + scoped_refptr<Controller> controller_; }; } // namespace blink
diff --git a/third_party/blink/renderer/platform/weborigin/scheme_registry.cc b/third_party/blink/renderer/platform/weborigin/scheme_registry.cc index b4d5cca1..110f306b 100644 --- a/third_party/blink/renderer/platform/weborigin/scheme_registry.cc +++ b/third_party/blink/renderer/platform/weborigin/scheme_registry.cc
@@ -106,6 +106,7 @@ URLSchemesSet allowing_shared_array_buffer_schemes; URLSchemesSet extension_schemes; URLSchemesSet web_ui_schemes; + URLSchemesSet code_cache_with_hashing_schemes; private: friend const URLSchemesRegistry& GetURLSchemesRegistry(); @@ -502,4 +503,23 @@ GetMutableURLSchemesRegistryForTest().web_ui_schemes.erase(scheme); } +void SchemeRegistry::RegisterURLSchemeAsCodeCacheWithHashing( + const String& scheme) { + DCHECK_EQ(scheme, scheme.LowerASCII()); + GetMutableURLSchemesRegistry().code_cache_with_hashing_schemes.insert(scheme); +} + +void SchemeRegistry::RemoveURLSchemeAsCodeCacheWithHashing( + const String& scheme) { + GetMutableURLSchemesRegistry().code_cache_with_hashing_schemes.erase(scheme); +} + +bool SchemeRegistry::SchemeSupportsCodeCacheWithHashing(const String& scheme) { + if (scheme.IsEmpty()) + return false; + DCHECK_EQ(scheme, scheme.LowerASCII()); + return GetURLSchemesRegistry().code_cache_with_hashing_schemes.Contains( + scheme); +} + } // namespace blink
diff --git a/third_party/blink/renderer/platform/weborigin/scheme_registry.h b/third_party/blink/renderer/platform/weborigin/scheme_registry.h index be2d43b..71e85c2 100644 --- a/third_party/blink/renderer/platform/weborigin/scheme_registry.h +++ b/third_party/blink/renderer/platform/weborigin/scheme_registry.h
@@ -179,6 +179,13 @@ static void RegisterURLSchemeAsWebUIForTest(const String& scheme); static void RemoveURLSchemeAsWebUIForTest(const String& scheme); + // Schemes which can use code caching but must check in the renderer whether + // the script content has changed rather than relying on a response time match + // from the network cache. + static void RegisterURLSchemeAsCodeCacheWithHashing(const String& scheme); + static void RemoveURLSchemeAsCodeCacheWithHashing(const String& scheme); + static bool SchemeSupportsCodeCacheWithHashing(const String& scheme); + private: static const URLSchemesSet& LocalSchemes(); };
diff --git a/third_party/blink/renderer/platform/weborigin/scheme_registry_test.cc b/third_party/blink/renderer/platform/weborigin/scheme_registry_test.cc index 74204c7..d36c196e 100644 --- a/third_party/blink/renderer/platform/weborigin/scheme_registry_test.cc +++ b/third_party/blink/renderer/platform/weborigin/scheme_registry_test.cc
@@ -139,5 +139,36 @@ EXPECT_FALSE(SchemeRegistry::IsExtensionScheme(kExtensionScheme)); } +TEST_F(SchemeRegistryTest, CodeCacheWithHashing) { + const char* kChromeUIScheme = "chrome"; + EXPECT_FALSE(SchemeRegistry::SchemeSupportsCodeCacheWithHashing(kTestScheme)); + EXPECT_FALSE( + SchemeRegistry::SchemeSupportsCodeCacheWithHashing(kChromeUIScheme)); + + SchemeRegistry::RegisterURLSchemeAsCodeCacheWithHashing(kTestScheme); + + EXPECT_TRUE(SchemeRegistry::SchemeSupportsCodeCacheWithHashing(kTestScheme)); + EXPECT_FALSE( + SchemeRegistry::SchemeSupportsCodeCacheWithHashing(kChromeUIScheme)); + + SchemeRegistry::RegisterURLSchemeAsCodeCacheWithHashing(kChromeUIScheme); + + EXPECT_TRUE(SchemeRegistry::SchemeSupportsCodeCacheWithHashing(kTestScheme)); + EXPECT_TRUE( + SchemeRegistry::SchemeSupportsCodeCacheWithHashing(kChromeUIScheme)); + + SchemeRegistry::RemoveURLSchemeAsCodeCacheWithHashing(kTestScheme); + + EXPECT_FALSE(SchemeRegistry::SchemeSupportsCodeCacheWithHashing(kTestScheme)); + EXPECT_TRUE( + SchemeRegistry::SchemeSupportsCodeCacheWithHashing(kChromeUIScheme)); + + SchemeRegistry::RemoveURLSchemeAsCodeCacheWithHashing(kChromeUIScheme); + + EXPECT_FALSE(SchemeRegistry::SchemeSupportsCodeCacheWithHashing(kTestScheme)); + EXPECT_FALSE( + SchemeRegistry::SchemeSupportsCodeCacheWithHashing(kChromeUIScheme)); +} + } // namespace } // namespace blink
diff --git a/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/__init__.py b/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/__init__.py index e69de29..faf03ce 100644 --- a/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/__init__.py +++ b/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/__init__.py
@@ -0,0 +1,14 @@ +# Copyright 2021 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import sys + +CHROMIUM_SRC_DIR = os.path.realpath( + os.path.join(os.path.dirname(__file__), '..', '..', '..', '..', '..', + '..')) +TESTING_DIR = os.path.join(CHROMIUM_SRC_DIR, 'testing') + +if TESTING_DIR not in sys.path: + sys.path.append(TESTING_DIR)
diff --git a/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/builders.py b/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/builders.py new file mode 100644 index 0000000..5502514 --- /dev/null +++ b/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/builders.py
@@ -0,0 +1,65 @@ +# Copyright 2021 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Web test-specific impl of the unexpected passes' builders module.""" + +from unexpected_passes_common import builders + + +class WebTestBuilders(builders.Builders): + def _BuilderRunsTestOfInterest(self, test_map, _): + tests = test_map.get('isolated_scripts', []) + for t in tests: + if t.get('isolate_name') in self.GetIsolateNames(): + return True + return False + + def GetIsolateNames(self): + return { + 'blink_web_tests', + 'webgpu_blink_web_tests', + } + + def GetFakeCiBuilders(self): + return { + # chromium.fyi + 'linux-blink-rel-dummy': { + 'linux-blink-rel', + 'v8_linux_blink_rel', + }, + 'mac10.12-blink-rel-dummy': { + 'mac10.12-blink-rel', + }, + 'mac10.13-blink-rel-dummy': { + 'mac10.13-blink-rel', + }, + 'mac10.14-blink-rel-dummy': { + 'mac10.14-blink-rel', + }, + 'mac10.15-blink-rel-dummy': { + 'mac10.15-blink-rel', + }, + 'mac11.0-blink-rel-dummy': { + 'mac11.0-blink-rel', + }, + 'WebKit Linux composite_after_paint Dummy Builder': { + 'linux_layout_tests_composite_after_paint', + }, + 'WebKit Linux layout_ng_disabled Builder': { + 'linux_layout_tests_layout_ng_disabled', + }, + 'win7-blink-rel-dummy': { + 'win7-blink-rel', + }, + 'win10-blink-rel-dummy': { + 'win10-blink-rel', + }, + 'win10.20h2-blink-rel-dummy': { + 'win10.20h2-blink-rel', + }, + } + + def GetNonChromiumBuilders(self): + return { + 'DevTools Linux (chromium)', + }
diff --git a/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/builders_unittest.py b/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/builders_unittest.py new file mode 100755 index 0000000..a1ff905 --- /dev/null +++ b/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/builders_unittest.py
@@ -0,0 +1,50 @@ +#!/usr/bin/env vpython3 +# Copyright 2021 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import unittest + +from blinkpy.web_tests.stale_expectation_removal import builders + + +class BuilderRunsTestOfInterestUnittest(unittest.TestCase): + def setUp(self): + self.instance = builders.WebTestBuilders() + + def testMatch(self): + """Tests that a match can be successfully found.""" + test_map = { + 'isolated_scripts': [ + { + 'isolate_name': 'blink_web_tests', + }, + ], + } + self.assertTrue( + self.instance._BuilderRunsTestOfInterest(test_map, None)) + + test_map = { + 'isolated_scripts': [ + { + 'isolate_name': 'webgpu_blink_web_tests', + }, + ], + } + self.assertTrue( + self.instance._BuilderRunsTestOfInterest(test_map, None)) + + def testNoMatch(self): + test_map = { + 'isolated_scripts': [ + { + 'isolate_name': 'foo_web_tests', + }, + ], + } + self.assertFalse( + self.instance._BuilderRunsTestOfInterest(test_map, None)) + + +if __name__ == '__main__': + unittest.main(verbosity=2)
diff --git a/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/remove_stale_expectations.py b/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/remove_stale_expectations.py index ffa6fd7..fdea36a 100644 --- a/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/remove_stale_expectations.py +++ b/third_party/blink/tools/blinkpy/web_tests/stale_expectation_removal/remove_stale_expectations.py
@@ -8,6 +8,9 @@ assert sys.version_info[0] == 3 +from blinkpy.web_tests.stale_expectation_removal import builders +from unexpected_passes_common import builders as common_builders + def ParseArgs(): parser = argparse.ArgumentParser(description=( @@ -78,6 +81,8 @@ raise RuntimeError( 'Script is still under active development and not currently functional' ) + builders_instance = builders.WebTestBuilders() + common_builders.RegisterInstance(builders_instance) return 0
diff --git a/third_party/blink/web_tests/FlagExpectations/disable-layout-ng b/third_party/blink/web_tests/FlagExpectations/disable-layout-ng index 0178274..c6338ad 100644 --- a/third_party/blink/web_tests/FlagExpectations/disable-layout-ng +++ b/third_party/blink/web_tests/FlagExpectations/disable-layout-ng
@@ -649,9 +649,6 @@ ### virtual/layout_ng_block_frag/ virtual/layout_ng_block_frag/* [ Skip ] -### virtual/layout_ng_fragment_traversal/ -virtual/layout_ng_fragment_traversal/* [ Skip ] - ### virtual/layout-ng-grid/ virtual/layout-ng-grid/* [ Skip ]
diff --git a/third_party/blink/web_tests/FlagExpectations/highdpi b/third_party/blink/web_tests/FlagExpectations/highdpi index 653dc48..b5bf9a8 100644 --- a/third_party/blink/web_tests/FlagExpectations/highdpi +++ b/third_party/blink/web_tests/FlagExpectations/highdpi
@@ -27,7 +27,6 @@ virtual/gpu-rasterization/* [ Skip ] virtual/layout-ng-grid/* [ Skip ] virtual/layout_ng_block_frag/* [ Skip ] -virtual/layout_ng_fragment_traversal/* [ Skip ] virtual/layout_ng_svg_text/* [ Skip ] virtual/prefer_compositing_to_lcd_text/* [ Skip ] virtual/synchronous_html_parser/* [ Skip ]
diff --git a/third_party/blink/web_tests/FlagExpectations/layout-ng-fragment-item b/third_party/blink/web_tests/FlagExpectations/layout-ng-fragment-item index 153fc6d..21a91a4 100644 --- a/third_party/blink/web_tests/FlagExpectations/layout-ng-fragment-item +++ b/third_party/blink/web_tests/FlagExpectations/layout-ng-fragment-item
@@ -8,6 +8,5 @@ crbug.com/1061102 media/picture-in-picture/v2/request-picture-in-picture-twice.html [ Skip ] crbug.com/1061102 media/picture-in-picture/v2/request-picture-in-picture.html [ Skip ] crbug.com/829028 virtual/layout_ng_block_frag/* [ Skip ] -crbug.com/982194 virtual/layout_ng_fragment_traversal/* [ Skip ] crbug.com/982194 virtual/webrtc-wpt-plan-b/external/wpt/webrtc/protocol/video-codecs.https.html [ Failure ] crbug.com/982194 virtual/webrtc-wpt-plan-b/external/wpt/webrtc/simulcast/h264.https.html [ Failure ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index 01730fe..8fc6237 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -1127,6 +1127,8 @@ virtual/layout_ng_block_frag/external/wpt/css/css-multicol/multicol-span-all-fieldset-003.html [ Pass ] virtual/layout_ng_block_frag/external/wpt/css/css-multicol/multicol-span-all-margin-bottom-001.xht [ Pass ] virtual/layout_ng_block_frag/external/wpt/css/css-multicol/multicol-span-float-001.xht [ Pass ] +virtual/layout_ng_block_frag/external/wpt/css/css-multicol/multicol-span-float-002.html [ Pass ] +virtual/layout_ng_block_frag/external/wpt/css/css-multicol/multicol-span-float-003.html [ Pass ] virtual/layout_ng_block_frag/external/wpt/css/css-multicol/nested-at-outer-boundary-as-fieldset.html [ Pass ] virtual/layout_ng_block_frag/external/wpt/css/css-multicol/nested-with-too-tall-line.html [ Pass ] virtual/layout_ng_block_frag/external/wpt/css/css-multicol/non-adjacent-spanners-000.html [ Pass ] @@ -1156,7 +1158,6 @@ virtual/layout_ng_block_frag/fast/multicol/vertical-rl/nested-columns.html [ Pass ] ### Tests failing with LayoutNGBlockFragmentation enabled: -crbug.com/1236056 virtual/layout_ng_block_frag/external/wpt/css/css-break/ruby-001.html [ Failure ] crbug.com/1225630 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/large-actual-column-count.html [ Skip ] crbug.com/1151880 virtual/layout_ng_block_frag/fast/multicol/dynamic/relpos-becomes-static-has-abspos.html [ Failure ] crbug.com/829028 virtual/layout_ng_block_frag/fast/multicol/float-margin-at-row-boundary.html [ Failure ] @@ -1178,14 +1179,6 @@ crbug.com/1079031 virtual/layout_ng_block_frag/fast/multicol/tall-line-in-short-block.html [ Failure ] crbug.com/1058792 virtual/layout_ng_block_frag/fast/multicol/vertical-rl/composited-relpos-overlapping-will-change.html [ Failure ] -### With LayoutNGFragmentTraversal (and LayoutNGFragmentItem) enabled: - -crbug.com/1225304 virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/positioning/toogle-abspos-on-relpos-inline-child.html [ Failure ] - -# Lots of manual tests here; just skip everything - not too interesting for LayoutNGFragmentTraversal anyway: -virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/cascade/* [ Skip ] -virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/text/* [ Skip ] - ### With LayoutNGPrinting enabled: crbug.com/1121942 virtual/layout_ng_printing/printing/fixed-positioned-child-repeats-even-when-html-and-body-are-zero-height.html [ Crash Pass ] @@ -2826,7 +2819,6 @@ crbug.com/626703 [ Mac ] external/wpt/url/url-setters.any.html [ Failure Timeout ] crbug.com/626703 [ Mac ] external/wpt/url/url-setters.any.worker.html [ Failure Timeout ] crbug.com/626703 [ Mac11.0 ] virtual/scroll-unification-synchronous_html_parser/external/wpt/dom/events/scrolling/scrollend-event-fired-after-snap.html [ Timeout ] -crbug.com/626703 [ Mac11.0 ] virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-228.xht [ Failure Timeout ] crbug.com/626703 [ Linux ] external/wpt/streams/readable-byte-streams/non-transferable-buffers.any.serviceworker.html [ Crash ] crbug.com/626703 [ Mac ] external/wpt/streams/readable-byte-streams/non-transferable-buffers.any.serviceworker.html [ Crash ] crbug.com/626703 [ Win7 ] external/wpt/streams/readable-byte-streams/non-transferable-buffers.any.serviceworker.html [ Crash ] @@ -2840,15 +2832,12 @@ crbug.com/626703 [ Mac10.14 ] external/wpt/css/CSS2/backgrounds/background-233.xht [ Failure Timeout ] crbug.com/626703 external/wpt/streams/readable-byte-streams/general.any.html [ Timeout ] crbug.com/626703 external/wpt/css/CSS2/backgrounds/background-intrinsic-004.xht [ Failure ] -crbug.com/626703 [ Mac10.14 ] virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-284.xht [ Failure Timeout ] crbug.com/626703 virtual/layout-ng-grid/external/wpt/css/css-grid/grid-model/grid-areas-overflowing-grid-container-009.html [ Failure ] crbug.com/626703 external/wpt/css/css-sizing/fit-content-length-percentage-001.html [ Failure ] crbug.com/626703 external/wpt/css/css-sizing/fit-content-length-percentage-010.html [ Failure ] crbug.com/626703 external/wpt/css/css-sizing/fit-content-length-percentage-016.html [ Failure ] crbug.com/626703 [ Mac11.0 ] external/wpt/websockets/stream/tentative/constructor.any.sharedworker.html?wss [ Timeout ] -crbug.com/626703 [ Mac11.0 ] virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-088.xht [ Failure Timeout ] crbug.com/626703 external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https.html [ Timeout ] -crbug.com/626703 [ Mac10.14 ] virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-280.xht [ Failure Timeout ] crbug.com/626703 [ Mac11.0 ] external/wpt/websockets/stream/tentative/constructor.any.worker.html?wss [ Timeout ] crbug.com/626703 external/wpt/css/css-grid/grid-model/grid-areas-overflowing-grid-container-009.html [ Failure ] crbug.com/626703 external/wpt/css/css-sizing/fit-content-length-percentage-002.html [ Failure ] @@ -2857,19 +2846,13 @@ crbug.com/626703 [ Mac10.14 ] external/wpt/css/CSS2/backgrounds/background-167.xht [ Failure Timeout ] crbug.com/626703 external/wpt/streams/readable-byte-streams/general.any.worker.html [ Timeout ] crbug.com/626703 [ Mac11.0 ] external/wpt/css/CSS2/backgrounds/background-287.xht [ Failure Timeout ] -crbug.com/626703 [ Mac11.0 ] virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-264.xht [ Failure Timeout ] crbug.com/626703 external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html [ Timeout ] -crbug.com/626703 [ Mac10.15 ] virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-254.xht [ Crash Failure ] -crbug.com/626703 [ Mac11.0 ] virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-178.xht [ Failure Timeout ] crbug.com/626703 external/wpt/css/CSS2/backgrounds/background-intrinsic-006.xht [ Failure ] -crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-intrinsic-004.xht [ Failure ] crbug.com/626703 [ Mac10.14 ] external/wpt/css/CSS2/backgrounds/background-attachment-005.xht [ Failure Timeout ] -crbug.com/626703 [ Mac11.0 ] virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-057.xht [ Failure Timeout ] crbug.com/626703 external/wpt/css/css-sizing/fit-content-length-percentage-006.html [ Failure ] crbug.com/626703 external/wpt/css/css-sizing/fit-content-length-percentage-007.html [ Failure ] crbug.com/626703 external/wpt/css/css-sizing/fit-content-length-percentage-009.html [ Failure ] crbug.com/626703 [ Mac11.0 ] external/wpt/webauthn/createcredential-pubkeycredparams.https.html [ Crash ] -crbug.com/626703 virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-intrinsic-006.xht [ Failure ] crbug.com/626703 [ Mac11.0 ] virtual/restrict-gamepad/external/wpt/gamepad/idlharness-extensions.https.window.html [ Failure Timeout ] crbug.com/626703 [ Mac11.0 ] external/wpt/webauthn/getcredential-passing.https.html [ Crash ] crbug.com/626703 external/wpt/css/css-sizing/fit-content-length-percentage-012.html [ Failure ] @@ -2885,7 +2868,6 @@ crbug.com/626703 external/wpt/css/css-sizing/fit-content-length-percentage-008.html [ Failure ] crbug.com/626703 external/wpt/streams/readable-byte-streams/general.any.serviceworker.html [ Timeout ] crbug.com/626703 external/wpt/css/css-sizing/fit-content-length-percentage-011.html [ Failure ] -crbug.com/626703 [ Mac10.15 ] virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-245.xht [ Failure Timeout ] crbug.com/626703 external/wpt/css/css-sizing/fit-content-length-percentage-013.html [ Failure ] crbug.com/626703 external/wpt/streams/readable-byte-streams/non-transferable-buffers.any.worker.html [ Crash ] crbug.com/626703 external/wpt/css/css-sizing/fit-content-length-percentage-004.html [ Failure ] @@ -3931,8 +3913,8 @@ crbug.com/829028 external/wpt/css/css-multicol/spanner-fragmentation-011.html [ Failure ] crbug.com/1191124 external/wpt/css/css-multicol/spanner-fragmentation-012.html [ Failure ] crbug.com/1224888 external/wpt/css/css-multicol/spanner-in-opacity.html [ Failure ] -crbug.com/1232773 external/wpt/css/css-multicol/multicol-span-float-002.html [ Failure ] -crbug.com/1232773 external/wpt/css/css-multicol/multicol-span-float-003.html [ Failure ] +crbug.com/792446 external/wpt/css/css-multicol/multicol-span-float-002.html [ Failure ] +crbug.com/792446 external/wpt/css/css-multicol/multicol-span-float-003.html [ Failure ] crbug.com/1031667 external/wpt/css/css-pseudo/marker-content-007.tentative.html [ Failure ] crbug.com/1031667 external/wpt/css/css-pseudo/marker-content-008.tentative.html [ Failure ]
diff --git a/third_party/blink/web_tests/VirtualTestSuites b/third_party/blink/web_tests/VirtualTestSuites index e742a6d..b507a42 100644 --- a/third_party/blink/web_tests/VirtualTestSuites +++ b/third_party/blink/web_tests/VirtualTestSuites
@@ -351,14 +351,6 @@ "args": ["--enable-blink-features=LayoutNGBlockFragmentation"] }, { - "prefix": "layout_ng_fragment_traversal", - "bases": ["external/wpt/css/CSS2", - "external/wpt/css/css-contain", - "fast/block", - "fast/table"], - "args": ["--enable-blink-features=LayoutNGFragmentTraversal"] - }, - { "prefix": "layout_ng_printing", "bases": ["printing"], "args": ["--enable-blink-features=LayoutNGPrinting"]
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/monolithic-with-overflow-lr.html b/third_party/blink/web_tests/external/wpt/css/css-break/monolithic-with-overflow-lr.html new file mode 100644 index 0000000..11c9d360 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/monolithic-with-overflow-lr.html
@@ -0,0 +1,11 @@ +<!DOCTYPE html> +<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> +<link rel="help" href="https://www.w3.org/TR/css-break-3/#monolithic"> +<link rel="match" href="../reference/ref-filled-green-100px-square.xht"> +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<div style="writing-mode:vertical-lr; columns:2; column-gap:0; column-fill:auto; inline-size:100px; block-size:100px; background:red;"> + <div style="block-size:100px; background:green;"></div> + <div style="contain:size; block-size:0;"> + <div style="block-size:100px; background:green;"></div> + </div> +</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/monolithic-with-overflow-rl.html b/third_party/blink/web_tests/external/wpt/css/css-break/monolithic-with-overflow-rl.html new file mode 100644 index 0000000..408cb00 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/monolithic-with-overflow-rl.html
@@ -0,0 +1,11 @@ +<!DOCTYPE html> +<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> +<link rel="help" href="https://www.w3.org/TR/css-break-3/#monolithic"> +<link rel="match" href="../reference/ref-filled-green-100px-square.xht"> +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<div style="writing-mode:vertical-rl; columns:2; column-gap:0; column-fill:auto; inline-size:100px; block-size:100px; background:red;"> + <div style="block-size:100px; background:green;"></div> + <div style="contain:size; block-size:0;"> + <div style="block-size:100px; background:green;"></div> + </div> +</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-paint-010.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-paint-010.html index a05ce58f..13f4a939 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-paint-010.html +++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-paint-010.html
@@ -9,7 +9,7 @@ #contain-paint { contain: paint; width: 100px; - height: 100px; + height: 50px; background: red; } @@ -19,10 +19,14 @@ right: 0; background: green; width: 100px; - height: 100px; + height: 50px; } </style> <p>Test passes if there is a filled green square and <strong>no red</strong>.</p> <div id="contain-paint"> <div id="fixed"></div> </div> +<div id="contain-paint" style="display: inline-block"> + <div id="fixed"></div> +</div> +
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/parsing/contain-computed-children.html b/third_party/blink/web_tests/external/wpt/css/css-contain/parsing/contain-computed-children.html new file mode 100644 index 0000000..b955bed --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-contain/parsing/contain-computed-children.html
@@ -0,0 +1,17 @@ +<!DOCTYPE html> +<html> +<meta charset="utf-8"> +<title>CSS Containment Module Level 1: getComputedStyle().contain</title> +<link rel="help" href="https://drafts.csswg.org/css-contain/#contain-property"> +<meta name="assert" content="computed contain value for children should ignore container contain value."> +<div id="container"><div id="target"></div></div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> +test(() => { + ['none', 'style', 'layout', 'paint', 'size', 'strict', 'content'].forEach(value => { + container.style.contain = value; + assert_equals(getComputedStyle(target).contain, "none"); + }); +}, "computed contain value for children should ignore container contain value"); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/parsing/contain-invalid.html b/third_party/blink/web_tests/external/wpt/css/css-contain/parsing/contain-invalid.html index 4be918e..200a60e 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-contain/parsing/contain-invalid.html +++ b/third_party/blink/web_tests/external/wpt/css/css-contain/parsing/contain-invalid.html
@@ -12,6 +12,14 @@ <body> <script> test_invalid_value("contain", "auto"); +test_invalid_value("contain", "layout layout"); +test_invalid_value("contain", "strict layout"); +test_invalid_value("contain", "paint strict"); +test_invalid_value("contain", "paint layout style paint"); +test_invalid_value("contain", "none none"); +test_invalid_value("contain", "none strict"); +test_invalid_value("contain", "strict strict"); +test_invalid_value("contain", "strict none"); test_invalid_value("contain", "strict content"); test_invalid_value("contain", "size layout size"); test_invalid_value("contain", "paint content");
diff --git a/third_party/blink/web_tests/fast/css/containment/contain-parse-and-apply.html b/third_party/blink/web_tests/fast/css/containment/contain-parse-and-apply.html deleted file mode 100644 index 004a63e..0000000 --- a/third_party/blink/web_tests/fast/css/containment/contain-parse-and-apply.html +++ /dev/null
@@ -1,84 +0,0 @@ -<!DOCTYPE html> -<style> -#none { contain: none; } -#style { contain: style; } -#layout { contain: layout; } -#paint { contain: paint; } -#size { contain: size; } -#strict { contain: strict; } -#content { contain: content; } -</style> -<body> -<div id="none"><div></div></div> -<div id="style"><div></div></div> -<div id="layout"><div></div></div> -<div id="paint"><div></div></div> -<div id="size"><div></div></div> -<div id="strict"><div></div></div> -<div id="content"><div></div></div> -<div id="test"></div> -<script src="../../../resources/js-test.js"></script> -<script> -function computedContainValue(element) { - return window.getComputedStyle(element).contain; -} -function getContainValue(query) -{ - var element = document.querySelector(query); - return computedContainValue(element); -} - -shouldBeEqualToString("getContainValue('#none')", "none"); -shouldBeEqualToString("getContainValue('#style')", "style"); -shouldBeEqualToString("getContainValue('#layout')", "layout"); -shouldBeEqualToString("getContainValue('#paint')", "paint"); -shouldBeEqualToString("getContainValue('#size')", "size"); -shouldBeEqualToString("getContainValue('#strict')", "strict"); -shouldBeEqualToString("getContainValue('#content')", "content"); - -var children = document.querySelectorAll("div > div"); -for (var i = 0; i < children.length; i++) { - shouldBeEqualToString("computedContainValue(children[i])", "none"); -} - -var test = document.querySelector('#test'); - -test.style.setProperty("contain", "layout paint style size"); -shouldBeEqualToString("getContainValue('#test')", "strict"); - -test.style.setProperty("contain", "layout paint"); -shouldBeEqualToString("getContainValue('#test')", "layout paint"); - -test.style.setProperty("contain", "style layout paint"); -shouldBeEqualToString("getContainValue('#test')", "content"); - -test.style.setProperty("contain", "strict"); -shouldBeEqualToString("getContainValue('#test')", "strict"); - -test.style.setProperty("contain", "none"); -shouldBeEqualToString("getContainValue('#test')", "none"); - -test.style.setProperty("contain", "layout layout"); -shouldBeEqualToString("getContainValue('#test')", "none"); - -test.style.setProperty("contain", "strict layout"); -shouldBeEqualToString("getContainValue('#test')", "none"); - -test.style.setProperty("contain", "paint strict"); -shouldBeEqualToString("getContainValue('#test')", "none"); - -test.style.setProperty("contain", "paint layout style paint"); -shouldBeEqualToString("getContainValue('#test')", "none"); - -test.style.setProperty("contain", "style paint"); -shouldBeEqualToString("getContainValue('#test')", "style paint"); - -test.style.setProperty("contain", "none strict"); -shouldBeEqualToString("getContainValue('#test')", "style paint"); - -test.style.setProperty("contain", "strict strict"); -shouldBeEqualToString("getContainValue('#test')", "style paint"); - -test.style.setProperty("contain", "strict none"); -shouldBeEqualToString("getContainValue('#test')", "style paint"); -</script>
diff --git a/third_party/blink/web_tests/fast/css/containment/paint-containment-with-fixed-position.html b/third_party/blink/web_tests/fast/css/containment/paint-containment-with-fixed-position.html deleted file mode 100644 index f028d8c..0000000 --- a/third_party/blink/web_tests/fast/css/containment/paint-containment-with-fixed-position.html +++ /dev/null
@@ -1,23 +0,0 @@ -<!DOCTYPE html> -<style> -div { - width: 100px; - height: 50px; -} -.container { - contain: paint; - background-color: green; -} -.fixed { - position: fixed; - top: 0px; - left: 100px; - background-color: red; -} -.inline { - display: inline-block; -} -</style> -<body> -<div class="container"><div class="fixed"></div></div> -<div class="container inline"><div class="fixed"></div></div> \ No newline at end of file
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/virtual/layout_ng_fragment_traversal/fast/block/float/overhanging-tall-block-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/virtual/layout_ng_fragment_traversal/fast/block/float/overhanging-tall-block-expected.png deleted file mode 100644 index 9875b0d..0000000 --- a/third_party/blink/web_tests/flag-specific/highdpi/virtual/layout_ng_fragment_traversal/fast/block/float/overhanging-tall-block-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/virtual/layout_ng_fragment_traversal/fast/block/positioning/auto/vertical-lr/007-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/virtual/layout_ng_fragment_traversal/fast/block/positioning/auto/vertical-lr/007-expected.png deleted file mode 100644 index 406527a..0000000 --- a/third_party/blink/web_tests/flag-specific/highdpi/virtual/layout_ng_fragment_traversal/fast/block/positioning/auto/vertical-lr/007-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/virtual/layout_ng_fragment_traversal/fast/block/positioning/auto/vertical-rl/007-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/virtual/layout_ng_fragment_traversal/fast/block/positioning/auto/vertical-rl/007-expected.png deleted file mode 100644 index 4cecad1..0000000 --- a/third_party/blink/web_tests/flag-specific/highdpi/virtual/layout_ng_fragment_traversal/fast/block/positioning/auto/vertical-rl/007-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/virtual/layout_ng_fragment_traversal/fast/block/positioning/vertical-lr/001-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/virtual/layout_ng_fragment_traversal/fast/block/positioning/vertical-lr/001-expected.png deleted file mode 100644 index 6b7cf46..0000000 --- a/third_party/blink/web_tests/flag-specific/highdpi/virtual/layout_ng_fragment_traversal/fast/block/positioning/vertical-lr/001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/virtual/layout_ng_fragment_traversal/fast/block/positioning/vertical-rl/001-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/virtual/layout_ng_fragment_traversal/fast/block/positioning/vertical-rl/001-expected.png deleted file mode 100644 index 59bd40d..0000000 --- a/third_party/blink/web_tests/flag-specific/highdpi/virtual/layout_ng_fragment_traversal/fast/block/positioning/vertical-rl/001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/highdpi/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/003-vertical-expected.png b/third_party/blink/web_tests/flag-specific/highdpi/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/003-vertical-expected.png deleted file mode 100644 index a6cae3f..0000000 --- a/third_party/blink/web_tests/flag-specific/highdpi/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/003-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/issues/content-security-policy-issue-trusted-types-exception-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/issues/content-security-policy-issue-trusted-types-exception-expected.txt new file mode 100644 index 0000000..60cfb327 --- /dev/null +++ b/third_party/blink/web_tests/http/tests/inspector-protocol/issues/content-security-policy-issue-trusted-types-exception-expected.txt
@@ -0,0 +1,4 @@ +Verify that Trusted Types sink violation issue is generated. + +Issue id on issue matches id on exception: true +
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/issues/content-security-policy-issue-trusted-types-exception.js b/third_party/blink/web_tests/http/tests/inspector-protocol/issues/content-security-policy-issue-trusted-types-exception.js new file mode 100644 index 0000000..3160220 --- /dev/null +++ b/third_party/blink/web_tests/http/tests/inspector-protocol/issues/content-security-policy-issue-trusted-types-exception.js
@@ -0,0 +1,17 @@ +(async function(testRunner) { + const {page, session, dp} = await testRunner.startBlank( + `Verify that Trusted Types sink violation issue is generated.\n`); + + await dp.Audits.enable(); + await dp.Runtime.enable(); + page.navigate( + 'https://devtools.test:8443/inspector-protocol/resources/content-security-policy-issue-trusted-types-sink.php'); + const [issue, exception] = await Promise.all( + [dp.Audits.onceIssueAdded(), dp.Runtime.onceExceptionThrown()]); + + const issueIdFromException = + exception?.params?.exceptionDetails?.exceptionMetaData?.issueId; + testRunner.log(`Issue id on issue matches id on exception: ${ + issue.params.issue.issueId === issueIdFromException}`); + testRunner.completeTest(); +})
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/issues/content-security-policy-issue-trusted-types-sink-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/issues/content-security-policy-issue-trusted-types-sink-expected.txt index 7823d1c..273fd2c 100644 --- a/third_party/blink/web_tests/http/tests/inspector-protocol/issues/content-security-policy-issue-trusted-types-sink-expected.txt +++ b/third_party/blink/web_tests/http/tests/inspector-protocol/issues/content-security-policy-issue-trusted-types-sink-expected.txt
@@ -16,6 +16,7 @@ violatedDirective : require-trusted-types-for } } + issueId : <string> } }
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/resources/inspector-protocol-test.js b/third_party/blink/web_tests/http/tests/inspector-protocol/resources/inspector-protocol-test.js index 6e59846..07b6afe 100644 --- a/third_party/blink/web_tests/http/tests/inspector-protocol/resources/inspector-protocol-test.js +++ b/third_party/blink/web_tests/http/tests/inspector-protocol/resources/inspector-protocol-test.js
@@ -15,11 +15,31 @@ } static get stabilizeNames() { - return ['id', 'nodeId', 'objectId', 'scriptId', 'timestamp', - 'backendNodeId', 'parentId', 'frameId', 'loaderId', 'baseURL', - 'documentURL', 'styleSheetId', 'executionContextId', 'openerId', - 'targetId', 'browserContextId', 'sessionId', 'receivedBytes', - 'ownerNode', 'guid', 'requestId', 'openerFrameId']; + return [ + 'id', + 'nodeId', + 'objectId', + 'scriptId', + 'timestamp', + 'backendNodeId', + 'parentId', + 'frameId', + 'loaderId', + 'baseURL', + 'documentURL', + 'styleSheetId', + 'executionContextId', + 'openerId', + 'targetId', + 'browserContextId', + 'sessionId', + 'receivedBytes', + 'ownerNode', + 'guid', + 'requestId', + 'openerFrameId', + 'issueId', + ]; } startDumpingProtocolMessages() {
diff --git a/third_party/blink/web_tests/http/tests/media/media-controls-live-timeline.html b/third_party/blink/web_tests/http/tests/media/media-controls-live-timeline.html deleted file mode 100644 index 85a6729..0000000 --- a/third_party/blink/web_tests/http/tests/media/media-controls-live-timeline.html +++ /dev/null
@@ -1,39 +0,0 @@ -<title>Test timeline work properly when playing live video.</title> -<script src="/w3c/resources/testharness.js"></script> -<script src="/w3c/resources/testharnessreport.js"></script> -<script src="media-source/mediasource-util.js"></script> -<script src="../../media-resources/media-controls.js"></script> -<video controls></video> -<script> - const epsilon = 0.1; - const pause_delay = 1; // 1 second. - - mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData){ - mediaElement.play(); - mediaSource.duration = +Infinity; - let timeline = timelineElement(mediaElement); - - // Append all media data for complete playback. - test.expectEvent(sourceBuffer, 'updateend', 'sourceBuffer end update.'); - test.expectEvent(mediaElement, 'loadedmetadata', 'Reached HAVE_METADATA'); - test.expectEvent(mediaElement, 'playing', 'Playing media.'); - sourceBuffer.appendBuffer(mediaData); - - test.waitForExpectedEvents(function() { - test.waitForCurrentTimeChange(mediaElement, function() { - assert_approx_equals(Number(timeline.value), Number(timeline.max), - epsilon, "timline thumb should be near the end"); - - mediaElement.onpause = test.step_func(function() { - setTimeout(test.step_func_done(function() { - assert_approx_equals(Number(timeline.max) - Number(timeline.value), - pause_delay, epsilon, - "timeline thumb should be 1s away from the end"); - }), pause_delay * 1000 /* convert to milliseconds */); - }); - - mediaElement.pause(); - }); - }); - }, "Timeline work properly when playing live video"); -</script>
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-012-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-012-expected.png deleted file mode 100644 index 6f04419..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-012-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-019-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-019-expected.png deleted file mode 100644 index 53e7a7f..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-019-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-027-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-027-expected.png deleted file mode 100644 index 34e87f2..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-027-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-032-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-032-expected.png deleted file mode 100644 index 34e87f2..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-032-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-039-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-039-expected.png deleted file mode 100644 index 34e87f2..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-039-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-042-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-042-expected.png deleted file mode 100644 index ee0324b..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-042-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-044-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-044-expected.png deleted file mode 100644 index 34e87f2..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-044-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-045-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-045-expected.png deleted file mode 100644 index ee0324b..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-045-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-046-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-046-expected.png deleted file mode 100644 index ad3c79cc..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-046-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-049-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-049-expected.png deleted file mode 100644 index ad3c79cc..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-049-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-054-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-054-expected.png deleted file mode 100644 index ee0324b..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-054-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-057-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-057-expected.png deleted file mode 100644 index ee0324b..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-057-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-062-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-062-expected.png deleted file mode 100644 index 34e87f2..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-062-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-065-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-065-expected.png deleted file mode 100644 index 34e87f2..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-065-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-066-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-066-expected.png deleted file mode 100644 index ee0324b..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-066-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-067-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-067-expected.png deleted file mode 100644 index ad3c79cc..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-067-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-069-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-069-expected.png deleted file mode 100644 index ee0324b..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-069-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-072-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-072-expected.png deleted file mode 100644 index ad3c79cc..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-072-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-079-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-079-expected.png deleted file mode 100644 index ad3c79cc..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-079-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-084-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-084-expected.png deleted file mode 100644 index ad3c79cc..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-084-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-086-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-086-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-086-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-088-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-088-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-088-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-089-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-089-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-089-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-091-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-091-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-091-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-092-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-092-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-092-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-094-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-094-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-094-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-098-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-098-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-098-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-099-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-099-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-099-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-100-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-100-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-100-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-102-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-102-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-102-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-105-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-105-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-105-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-108-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-108-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-108-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-110-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-110-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-110-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-112-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-112-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-112-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-113-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-113-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-113-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-115-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-115-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-115-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-116-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-116-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-116-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-118-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-118-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-118-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-119-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-119-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-119-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-121-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-121-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-121-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-122-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-122-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-122-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-123-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-123-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-123-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-124-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-124-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-124-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-125-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-125-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-125-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-126-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-126-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-126-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-127-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-127-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-127-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-129-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-129-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-129-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-131-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-131-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-131-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-132-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-132-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-132-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-133-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-133-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-133-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-134-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-134-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-134-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-136-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-136-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-136-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-140-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-140-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-140-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-142-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-142-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-142-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-143-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-143-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-143-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-145-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-145-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-145-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-146-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-146-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-146-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-148-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-148-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-148-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-149-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-149-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-149-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-151-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-151-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-151-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-155-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-155-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-155-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-157-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-157-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-157-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-158-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-158-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-158-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-159-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-159-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-159-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-160-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-160-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-160-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-162-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-162-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-162-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-164-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-164-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-164-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-165-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-165-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-165-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-166-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-166-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-166-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-167-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-167-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-167-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-168-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-168-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-168-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-169-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-169-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-169-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-170-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-170-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-170-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-172-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-172-expected.png deleted file mode 100644 index 8222fc77..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-172-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-173-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-173-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-173-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-175-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-175-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-175-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-176-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-176-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-176-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-178-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-178-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-178-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-179-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-179-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-179-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-181-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-181-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-181-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-183-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-183-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-183-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-186-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-186-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-186-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-189-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-189-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-189-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-191-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-191-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-191-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-192-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-192-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-192-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-193-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-193-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-193-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-197-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-197-expected.png deleted file mode 100644 index 5f6be79..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-197-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-199-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-199-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-199-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-200-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-200-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-200-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-202-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-202-expected.png deleted file mode 100644 index b4bf8fa..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-202-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-203-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-203-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-203-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-205-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-205-expected.png deleted file mode 100644 index 11fed97..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-205-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-206-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-206-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-206-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-207-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-207-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-207-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-208-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-208-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-208-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-209-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-209-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-209-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-210-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-210-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-210-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-211-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-211-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-211-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-212-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-212-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-212-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-213-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-213-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-213-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-214-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-214-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-214-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-215-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-215-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-215-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-216-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-216-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-216-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-217-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-217-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-217-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-218-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-218-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-218-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-219-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-219-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-219-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-220-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-220-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-220-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-221-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-221-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-221-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-222-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-222-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-222-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-223-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-223-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-223-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-224-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-224-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-224-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-225-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-225-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-225-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-226-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-226-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-226-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-227-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-227-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-227-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-228-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-228-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-228-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-229-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-229-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-229-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-230-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-230-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-230-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-231-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-231-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-231-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-232-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-232-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-232-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-233-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-233-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-233-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-234-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-234-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-234-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-235-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-235-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-235-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-236-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-236-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-236-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-237-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-237-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-237-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-238-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-238-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-238-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-239-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-239-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-239-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-240-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-240-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-240-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-241-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-241-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-241-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-242-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-242-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-242-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-243-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-243-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-243-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-244-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-244-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-244-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-245-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-245-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-245-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-246-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-246-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-246-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-247-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-247-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-247-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-248-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-248-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-248-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-249-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-249-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-249-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-250-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-250-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-250-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-251-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-251-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-251-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-252-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-252-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-252-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-253-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-253-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-253-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-254-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-254-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-254-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-255-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-255-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-255-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-256-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-256-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-256-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-257-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-257-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-257-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-258-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-258-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-258-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-259-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-259-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-259-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-260-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-260-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-260-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-261-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-261-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-261-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-262-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-262-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-262-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-263-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-263-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-263-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-264-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-264-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-264-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-265-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-265-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-265-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-266-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-266-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-266-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-267-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-267-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-267-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-268-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-268-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-268-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-269-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-269-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-269-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-270-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-270-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-270-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-271-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-271-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-271-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-272-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-272-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-272-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-273-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-273-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-273-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-274-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-274-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-274-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-275-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-275-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-275-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-276-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-276-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-276-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-277-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-277-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-277-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-278-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-278-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-278-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-279-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-279-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-279-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-280-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-280-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-280-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-281-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-281-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-281-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-282-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-282-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-282-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-283-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-283-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-283-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-284-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-284-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-284-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-285-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-285-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-285-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-286-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-286-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-286-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-287-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-287-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-287-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-288-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-288-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-288-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-289-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-289-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-289-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-290-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-290-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-290-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-291-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-291-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-291-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-292-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-292-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-292-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-293-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-293-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-293-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-294-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-294-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-294-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-295-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-295-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-295-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-296-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-296-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-296-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-297-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-297-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-297-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-298-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-298-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-298-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-299-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-299-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-299-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-300-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-300-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-300-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-301-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-301-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-301-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-302-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-302-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-302-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-303-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-303-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-303-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-304-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-304-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-304-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-305-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-305-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-305-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-306-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-306-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-306-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-307-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-307-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-307-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-308-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-308-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-308-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-309-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-309-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-309-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-310-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-310-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-310-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-311-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-311-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-311-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-312-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-312-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-312-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-313-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-313-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-313-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-314-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-314-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-314-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-315-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-315-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-315-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-316-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-316-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-316-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-317-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-317-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-317-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-318-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-318-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-318-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-319-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-319-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-319-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-320-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-320-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-320-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-321-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-321-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-321-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-322-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-322-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-322-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-323-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-323-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-323-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-324-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-324-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-324-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-325-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-325-expected.png deleted file mode 100644 index 9860ec3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-325-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-330-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-330-expected.png deleted file mode 100644 index e73861b..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-330-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-animated-001-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-animated-001-expected.png deleted file mode 100644 index add9ad7..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-animated-001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-001-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-001-expected.png deleted file mode 100644 index 7d5b811..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-002-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-002-expected.png deleted file mode 100644 index a4810ea..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-002-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-003-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-003-expected.png deleted file mode 100644 index a4810ea..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-003-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-004-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-004-expected.png deleted file mode 100644 index f94dc3a..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-004-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-005-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-005-expected.png deleted file mode 100644 index 7f63b29..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-005-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-006-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-006-expected.png deleted file mode 100644 index 67c4036..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-006-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-007-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-007-expected.png deleted file mode 100644 index 26924e1..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-007-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-008-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-008-expected.png deleted file mode 100644 index ff481d1..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-008-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-010-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-010-expected.png deleted file mode 100644 index b6e8cfc8..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-010-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-bg-pos-207-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-bg-pos-207-expected.png deleted file mode 100644 index 70d9bda..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-bg-pos-207-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-position-201-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-position-201-expected.png deleted file mode 100644 index f062f2f4..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-position-201-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-root-012a-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-root-012a-expected.png deleted file mode 100644 index 19a4d59..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-root-012a-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-root-013a-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-root-013a-expected.png deleted file mode 100644 index e6c78b1..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-root-013a-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-root-014a-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-root-014a-expected.png deleted file mode 100644 index 881722b..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-root-014a-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/basic/011-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/basic/011-expected.png deleted file mode 100644 index 9a351e4..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/basic/011-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/basic/018-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/basic/018-expected.png deleted file mode 100644 index 8a2c0b4c..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/basic/018-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/float/002-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/float/002-expected.png deleted file mode 100644 index 1954f9ea..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/float/002-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/float/016-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/float/016-expected.png deleted file mode 100644 index 04b4682..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/float/016-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/float/centered-float-avoidance-complexity-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/float/centered-float-avoidance-complexity-expected.png deleted file mode 100644 index 779342d..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/float/centered-float-avoidance-complexity-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/float/float-in-float-hit-testing-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/float/float-in-float-hit-testing-expected.png deleted file mode 100644 index 06a579a..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/float/float-in-float-hit-testing-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/float/float-in-float-painting-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/float/float-in-float-painting-expected.png deleted file mode 100644 index ca050cb..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/float/float-in-float-painting-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/103-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/103-expected.png deleted file mode 100644 index e8093a1..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/103-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/positioning/051-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/positioning/051-expected.png deleted file mode 100644 index 30731e3b..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/positioning/051-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/positioning/auto/007-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/positioning/auto/007-expected.png deleted file mode 100644 index 7a36072..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/positioning/auto/007-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/positioning/auto/vertical-lr/007-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/positioning/auto/vertical-lr/007-expected.png deleted file mode 100644 index f9a0fff3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/positioning/auto/vertical-lr/007-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/positioning/auto/vertical-rl/007-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/positioning/auto/vertical-rl/007-expected.png deleted file mode 100644 index 15357950..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/positioning/auto/vertical-rl/007-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/positioning/inline-block-relposition-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/positioning/inline-block-relposition-expected.png deleted file mode 100644 index db8301b..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/positioning/inline-block-relposition-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/positioning/vertical-lr/001-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/positioning/vertical-lr/001-expected.png deleted file mode 100644 index 8bb0e04c..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/positioning/vertical-lr/001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/positioning/vertical-rl/001-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/positioning/vertical-rl/001-expected.png deleted file mode 100644 index 5379f2b..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/block/positioning/vertical-rl/001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/040-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/040-expected.png deleted file mode 100644 index 7d2072d..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/040-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/040-vertical-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/040-vertical-expected.png deleted file mode 100644 index 58a0ae0..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/040-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/append-cells2-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/append-cells2-expected.png deleted file mode 100644 index 307725f..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/append-cells2-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-cell-collapsed-border-expected.png deleted file mode 100644 index afc54d1..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-cell-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-collapsed-border-expected.png deleted file mode 100644 index aad93fd..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-collapsed-border-expected.png deleted file mode 100644 index fa08eda..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-collapsed-border-expected.png deleted file mode 100644 index ef5907b..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-collapsed-border-expected.png deleted file mode 100644 index 323c44f9..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-collapsed-border-expected.png deleted file mode 100644 index 178f1813..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-collapsed-border-expected.png deleted file mode 100644 index f6b536f..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-collapsed-border-expected.png deleted file mode 100644 index 7bca9869..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-expected.png deleted file mode 100644 index 4e987b9..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-collapsed-border-expected.png deleted file mode 100644 index e3556ae..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-expected.png deleted file mode 100644 index e3556ae..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-collapsed-border-expected.png deleted file mode 100644 index 921219c..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-expected.png deleted file mode 100644 index c1914ba..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-cell-collapsed-border-expected.png deleted file mode 100644 index 5bb6c17..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-cell-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-collapsed-border-expected.png deleted file mode 100644 index aee0a8f3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-collapsed-border-expected.png deleted file mode 100644 index 06d95b1..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-group-collapsed-border-expected.png deleted file mode 100644 index fc72725..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-collapsed-border-expected.png deleted file mode 100644 index b8e9d17a..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-group-collapsed-border-expected.png deleted file mode 100644 index 16945b3..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-collapsed-border-expected.png deleted file mode 100644 index 1a646d4..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-collapsed-border-expected.png deleted file mode 100644 index 072aa70..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-collapsed-border-expected.png deleted file mode 100644 index fa9abc9..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png deleted file mode 100644 index 9973a27b..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-collapsed-border-expected.png deleted file mode 100644 index fa20838a..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png deleted file mode 100644 index 0fa89e9a..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/background-gradient-border-collapsed-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/background-gradient-border-collapsed-expected.png deleted file mode 100644 index fed353b..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/background-gradient-border-collapsed-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/003-vertical-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/003-vertical-expected.png deleted file mode 100644 index 113269c..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/003-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/004-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/004-expected.png deleted file mode 100644 index caf0bf31..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/004-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-expected.png deleted file mode 100644 index 91f25c2..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-vertical-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-vertical-expected.png deleted file mode 100644 index 05f2896..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-1-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-1-expected.png deleted file mode 100644 index 0662b51..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-1-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-2-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-2-expected.png deleted file mode 100644 index 65a875a8..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-2-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/remove-td-display-none-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/remove-td-display-none-expected.png deleted file mode 100644 index c410a8b..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/remove-td-display-none-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/rowspan-paint-order-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/rowspan-paint-order-expected.png deleted file mode 100644 index b5353a7..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/rowspan-paint-order-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/table-continuation-outline-paint-crash-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/table-continuation-outline-paint-crash-expected.png deleted file mode 100644 index e625352..0000000 --- a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_fragment_traversal/fast/table/table-continuation-outline-paint-crash-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-cell-collapsed-border-expected.png deleted file mode 100644 index 2af2f35..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-cell-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-collapsed-border-expected.png deleted file mode 100644 index 8aeecb6..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-collapsed-border-expected.png deleted file mode 100644 index 6024540..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-collapsed-border-expected.png deleted file mode 100644 index 40c3bfb..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-collapsed-border-expected.png deleted file mode 100644 index d9eb396..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-collapsed-border-expected.png deleted file mode 100644 index a4c4ceb..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-collapsed-border-expected.png deleted file mode 100644 index bc80453..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-collapsed-border-expected.png deleted file mode 100644 index 5827ee4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-cell-collapsed-border-expected.png deleted file mode 100644 index ef85568..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-cell-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-collapsed-border-expected.png deleted file mode 100644 index b168276..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-group-collapsed-border-expected.png deleted file mode 100644 index 078fb1c..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-collapsed-border-expected.png deleted file mode 100644 index d973ef3..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-collapsed-border-expected.png deleted file mode 100644 index f3d7aba..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-collapsed-border-expected.png deleted file mode 100644 index cf93377..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png deleted file mode 100644 index 8a45f27..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/background-gradient-border-collapsed-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/background-gradient-border-collapsed-expected.png deleted file mode 100644 index 0e66eac..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/background-gradient-border-collapsed-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/004-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/004-expected.png deleted file mode 100644 index 36bccb3e..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/004-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/border-collapsing-head-foot-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/border-collapsing-head-foot-expected.png deleted file mode 100644 index 4295f06c..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/border-collapsing-head-foot-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/border-collapsing-head-foot-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/border-collapsing-head-foot-vertical-expected.png deleted file mode 100644 index e918170..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/border-collapsing-head-foot-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-expected.png deleted file mode 100644 index 2c4cd186..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-vertical-expected.png deleted file mode 100644 index 0518096..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/colspanMinWidth-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/frame-and-rules-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/frame-and-rules-expected.png deleted file mode 100644 index 9b9f40d..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/frame-and-rules-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/rules-attr-dynchange1-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/rules-attr-dynchange1-expected.png deleted file mode 100644 index e606ff4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/rules-attr-dynchange1-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/rules-attr-dynchange2-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/rules-attr-dynchange2-expected.png deleted file mode 100644 index b925728..0000000 --- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_fragment_traversal/fast/table/rules-attr-dynchange2-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/basic/014-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/basic/014-expected.png deleted file mode 100644 index 8ffeeea..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/basic/014-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/basic/016-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/basic/016-expected.png deleted file mode 100644 index 4e57e33..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/basic/016-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/float/011-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/float/011-expected.png deleted file mode 100644 index 37a32ce9..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/float/011-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/float/015-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/float/015-expected.png deleted file mode 100644 index 69c39e6d..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/float/015-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/001-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/001-expected.png deleted file mode 100644 index 7e1abda..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/005-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/005-expected.png deleted file mode 100644 index 7e1abda..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/005-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/001-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/001-expected.png deleted file mode 100644 index 7e1abda..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/005-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/005-expected.png deleted file mode 100644 index 7e1abda..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/005-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/003-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/003-expected.png deleted file mode 100644 index 44113e6..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/003-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/004-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/004-expected.png deleted file mode 100644 index 02ca1778..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/004-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/010-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/010-expected.png deleted file mode 100644 index beb081d3..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/010-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/011-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/011-expected.png deleted file mode 100644 index 0dbbd12..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/011-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/016-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/016-expected.png deleted file mode 100644 index 95c57c6..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/016-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/020-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/020-expected.png deleted file mode 100644 index 4e156e6..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/020-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/022-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/022-expected.png deleted file mode 100644 index 4e0528f0..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/022-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/023-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/023-expected.png deleted file mode 100644 index 9513482..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/023-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/026-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/026-expected.png deleted file mode 100644 index 9ed1196..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/026-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/035-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/035-expected.png deleted file mode 100644 index cdd7ba4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/035-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/035-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/035-vertical-expected.png deleted file mode 100644 index f2cd926..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/035-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/039-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/039-expected.png deleted file mode 100644 index d13eebe..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/039-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/041-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/041-expected.png deleted file mode 100644 index 3b9c9675..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/041-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/append-cells2-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/append-cells2-expected.png deleted file mode 100644 index f2769a3..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/append-cells2-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-expected.png deleted file mode 100644 index 26f4bfc..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-vertical-expected.png deleted file mode 100644 index 1f26daf..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-cell-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-cell-expected.png deleted file mode 100644 index 9429ba6..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-cell-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-expected.png deleted file mode 100644 index 046f9709..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-expected.png deleted file mode 100644 index 33daa52..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-expected.png deleted file mode 100644 index 5381629..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-expected.png deleted file mode 100644 index 97a6fe3c..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-expected.png deleted file mode 100644 index d33dcb44..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-expected.png deleted file mode 100644 index 0e5587f..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-expected.png deleted file mode 100644 index 60c2c76..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-collapsed-border-expected.png deleted file mode 100644 index 1ef4432..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-expected.png deleted file mode 100644 index 1ef4432..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-collapsed-border-expected.png deleted file mode 100644 index 50b9e285..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-expected.png deleted file mode 100644 index a301495..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-cell-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-cell-expected.png deleted file mode 100644 index 4345817..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-cell-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-expected.png deleted file mode 100644 index 2924eb93..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-group-expected.png deleted file mode 100644 index 2ec05bce..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-group-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-expected.png deleted file mode 100644 index 187ee37..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-expected.png deleted file mode 100644 index b2f1df5..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-group-expected.png deleted file mode 100644 index 0e58f78d..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-group-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-expected.png deleted file mode 100644 index 1abcf04..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-expected.png deleted file mode 100644 index be2193d..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-group-expected.png deleted file mode 100644 index 3d4db515..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-group-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-expected.png deleted file mode 100644 index ffa8bb75..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-expected.png deleted file mode 100644 index e76dbba..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-group-expected.png deleted file mode 100644 index e55a6f7..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-group-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-expected.png deleted file mode 100644 index d7f294a..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-vertical-expected.png deleted file mode 100644 index 75230ffa..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/cell-coalescing-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/cell-coalescing-expected.png deleted file mode 100644 index 2d9e6f2..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/cell-coalescing-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/cellindex-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/cellindex-expected.png deleted file mode 100644 index 9311d035..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/cellindex-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/colgroup-preceded-by-caption-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/colgroup-preceded-by-caption-expected.png deleted file mode 100644 index 8cf4fac..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/colgroup-preceded-by-caption-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/colgroup-spanning-groups-rules-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/colgroup-spanning-groups-rules-expected.png deleted file mode 100644 index baa9ece..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/colgroup-spanning-groups-rules-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-before-child-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-before-child-expected.png deleted file mode 100644 index 59715b1..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-before-child-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-remove-before-child-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-remove-before-child-expected.png deleted file mode 100644 index cccc8e5..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-remove-before-child-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/dynamic-descendant-percentage-height-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/dynamic-descendant-percentage-height-expected.png deleted file mode 100644 index 29ac34b..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/dynamic-descendant-percentage-height-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/floating-th-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/floating-th-expected.png deleted file mode 100644 index 59474acc..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/floating-th-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/generated-caption-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/generated-caption-expected.png deleted file mode 100644 index ef285100..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/generated-caption-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-1-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-1-expected.png deleted file mode 100644 index 12228bc..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-1-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-2-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-2-expected.png deleted file mode 100644 index 7e83b28..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-2-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/multiple-captions-display-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/multiple-captions-display-expected.png deleted file mode 100644 index be93e940..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/multiple-captions-display-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/nested-percent-height-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/nested-percent-height-table-expected.png deleted file mode 100644 index c6589142..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/nested-percent-height-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/percent-heights-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/percent-heights-expected.png deleted file mode 100644 index 2fd46b8..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/percent-heights-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/remove-td-display-none-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/remove-td-display-none-expected.png deleted file mode 100644 index c71d4de..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/remove-td-display-none-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/rowspan-paint-order-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/rowspan-paint-order-vertical-expected.png deleted file mode 100644 index c0113ec..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/rowspan-paint-order-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/rtl-cell-display-none-assert-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/rtl-cell-display-none-assert-expected.png deleted file mode 100644 index 1f07f4e..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/rtl-cell-display-none-assert-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-and-parts-outline-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-and-parts-outline-expected.png deleted file mode 100644 index 12b8ca7..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-and-parts-outline-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-before-child-in-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-before-child-in-table-expected.png deleted file mode 100644 index 25c47a4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-before-child-in-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-cell-after-child-in-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-cell-after-child-in-table-expected.png deleted file mode 100644 index 3fedb3e..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-cell-after-child-in-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-block-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-block-expected.png deleted file mode 100644 index 1adf9f4b..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-block-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-table-expected.png deleted file mode 100644 index 1b7f463..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-display-types-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-display-types-expected.png deleted file mode 100644 index 862faba..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-display-types-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-row-focus-ring-paint-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-row-focus-ring-paint-expected.png deleted file mode 100644 index f61b65a..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-row-focus-ring-paint-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-rowspan-height-less-than-one-percent-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-rowspan-height-less-than-one-percent-expected.txt deleted file mode 100644 index a666f4a..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/table-rowspan-height-less-than-one-percent-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -Test for chromium bug : 408066. ASSERTION FAILED: !extraRowSpanningHeight in blink::RenderTableSection::distributeRowSpanHeightToRows. - -PASS -r0c0 - -r2c0 - -PASS -r0c0 r0c1 - -r2c0
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/text-field-baseline-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/text-field-baseline-expected.png deleted file mode 100644 index 8cfc4c7..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/text-field-baseline-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/unbreakable-images-quirk-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/unbreakable-images-quirk-expected.png deleted file mode 100644 index 166406d..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/layout_ng_fragment_traversal/fast/table/unbreakable-images-quirk-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-005-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-005-expected.png deleted file mode 100644 index e8d0fff6..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-005-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-006-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-006-expected.png deleted file mode 100644 index 638e91e..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-006-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-007-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-007-expected.png deleted file mode 100644 index 6dfb755..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-007-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-008-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-008-expected.png deleted file mode 100644 index 861de33..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-attachment-008-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-position-201-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-position-201-expected.png deleted file mode 100644 index d88f48d..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-position-201-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/block/basic/016-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/block/basic/016-expected.png deleted file mode 100644 index 4e57e33..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/block/basic/016-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/block/float/011-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/block/float/011-expected.png deleted file mode 100644 index 37a32ce9..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/block/float/011-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/block/float/015-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/block/float/015-expected.png deleted file mode 100644 index 69c39e6d..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/block/float/015-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/001-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/001-expected.png deleted file mode 100644 index 7e1abda..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/005-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/005-expected.png deleted file mode 100644 index 7e1abda..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/005-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/001-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/001-expected.png deleted file mode 100644 index 7e1abda..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/005-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/005-expected.png deleted file mode 100644 index 7e1abda..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/005-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/003-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/003-expected.png deleted file mode 100644 index 44113e6..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/003-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/004-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/004-expected.png deleted file mode 100644 index 02ca1778..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/004-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/010-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/010-expected.png deleted file mode 100644 index beb081d3..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/010-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/011-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/011-expected.png deleted file mode 100644 index 0dbbd12..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/011-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/016-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/016-expected.png deleted file mode 100644 index 95c57c6..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/016-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/020-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/020-expected.png deleted file mode 100644 index 4e156e6..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/020-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/022-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/022-expected.png deleted file mode 100644 index c54e060..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/022-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/023-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/023-expected.png deleted file mode 100644 index 9513482..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/023-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/026-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/026-expected.png deleted file mode 100644 index 9ed1196..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/026-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/035-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/035-expected.png deleted file mode 100644 index cdd7ba4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/035-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/035-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/035-vertical-expected.png deleted file mode 100644 index f2cd926..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/035-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/039-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/039-expected.png deleted file mode 100644 index d13eebe..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/039-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/041-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/041-expected.png deleted file mode 100644 index 3b9c9675..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/041-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/append-cells2-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/append-cells2-expected.png deleted file mode 100644 index f2769a3..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/append-cells2-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-expected.png deleted file mode 100644 index 26f4bfc..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-vertical-expected.png deleted file mode 100644 index 1f26daf..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-cell-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-cell-expected.png deleted file mode 100644 index 9429ba6..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-cell-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-expected.png deleted file mode 100644 index 046f9709..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-expected.png deleted file mode 100644 index 33daa52..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-expected.png deleted file mode 100644 index 5381629..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-expected.png deleted file mode 100644 index 97a6fe3c..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-expected.png deleted file mode 100644 index d33dcb44..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-expected.png deleted file mode 100644 index 0e5587f..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-expected.png deleted file mode 100644 index 60c2c76..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-collapsed-border-expected.png deleted file mode 100644 index 1ef4432..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-expected.png deleted file mode 100644 index 1ef4432..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-collapsed-border-expected.png deleted file mode 100644 index 50b9e285..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-expected.png deleted file mode 100644 index a301495..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-cell-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-cell-expected.png deleted file mode 100644 index 4345817..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-cell-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-expected.png deleted file mode 100644 index 2924eb93..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-group-expected.png deleted file mode 100644 index 2ec05bce..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-group-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-expected.png deleted file mode 100644 index 187ee37..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-expected.png deleted file mode 100644 index b2f1df5..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-group-expected.png deleted file mode 100644 index 0e58f78d..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-group-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-expected.png deleted file mode 100644 index 1abcf04..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-expected.png deleted file mode 100644 index be2193d..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-group-expected.png deleted file mode 100644 index 3d4db515..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-group-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-expected.png deleted file mode 100644 index ffa8bb75..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-expected.png deleted file mode 100644 index e76dbba..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-group-expected.png deleted file mode 100644 index e55a6f7..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-group-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-expected.png deleted file mode 100644 index d7f294a..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-vertical-expected.png deleted file mode 100644 index 75230ffa..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/cell-coalescing-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/cell-coalescing-expected.png deleted file mode 100644 index 2d9e6f2..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/cell-coalescing-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/cellindex-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/cellindex-expected.png deleted file mode 100644 index 9311d035..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/cellindex-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/colgroup-preceded-by-caption-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/colgroup-preceded-by-caption-expected.png deleted file mode 100644 index 8cf4fac..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/colgroup-preceded-by-caption-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/colgroup-spanning-groups-rules-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/colgroup-spanning-groups-rules-expected.png deleted file mode 100644 index baa9ece..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/colgroup-spanning-groups-rules-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-before-child-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-before-child-expected.png deleted file mode 100644 index 59715b1..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-before-child-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-remove-before-child-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-remove-before-child-expected.png deleted file mode 100644 index cccc8e5..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-remove-before-child-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/dynamic-descendant-percentage-height-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/dynamic-descendant-percentage-height-expected.png deleted file mode 100644 index 29ac34b..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/dynamic-descendant-percentage-height-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/floating-th-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/floating-th-expected.png deleted file mode 100644 index 59474acc..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/floating-th-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/generated-caption-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/generated-caption-expected.png deleted file mode 100644 index ef285100..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/generated-caption-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-1-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-1-expected.png deleted file mode 100644 index 12228bc..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-1-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-2-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-2-expected.png deleted file mode 100644 index 7e83b28..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-2-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/multiple-captions-display-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/multiple-captions-display-expected.png deleted file mode 100644 index be93e940..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/multiple-captions-display-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/nested-percent-height-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/nested-percent-height-table-expected.png deleted file mode 100644 index c6589142..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/nested-percent-height-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/percent-heights-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/percent-heights-expected.png deleted file mode 100644 index 2fd46b8..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/percent-heights-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/remove-td-display-none-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/remove-td-display-none-expected.png deleted file mode 100644 index c71d4de..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/remove-td-display-none-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/rowspan-paint-order-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/rowspan-paint-order-vertical-expected.png deleted file mode 100644 index c0113ec..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/rowspan-paint-order-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/rtl-cell-display-none-assert-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/rtl-cell-display-none-assert-expected.png deleted file mode 100644 index 1f07f4e..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/rtl-cell-display-none-assert-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-and-parts-outline-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-and-parts-outline-expected.png deleted file mode 100644 index 12b8ca7..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-and-parts-outline-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-before-child-in-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-before-child-in-table-expected.png deleted file mode 100644 index 25c47a4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-before-child-in-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-cell-after-child-in-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-cell-after-child-in-table-expected.png deleted file mode 100644 index 3fedb3e..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-cell-after-child-in-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-block-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-block-expected.png deleted file mode 100644 index 1adf9f4b..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-block-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-table-expected.png deleted file mode 100644 index 1b7f463..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-display-types-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-display-types-expected.png deleted file mode 100644 index 862faba..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-display-types-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-row-focus-ring-paint-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-row-focus-ring-paint-expected.png deleted file mode 100644 index f61b65a..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-row-focus-ring-paint-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-rowspan-height-less-than-one-percent-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-rowspan-height-less-than-one-percent-expected.txt deleted file mode 100644 index a666f4a..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/table-rowspan-height-less-than-one-percent-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -Test for chromium bug : 408066. ASSERTION FAILED: !extraRowSpanningHeight in blink::RenderTableSection::distributeRowSpanHeightToRows. - -PASS -r0c0 - -r2c0 - -PASS -r0c0 r0c1 - -r2c0
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/text-field-baseline-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/text-field-baseline-expected.png deleted file mode 100644 index 8cfc4c7..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/text-field-baseline-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/unbreakable-images-quirk-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/unbreakable-images-quirk-expected.png deleted file mode 100644 index 166406d..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/layout_ng_fragment_traversal/fast/table/unbreakable-images-quirk-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-position-201-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-position-201-expected.png deleted file mode 100644 index 995f4194..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/external/wpt/css/CSS2/backgrounds/background-position-201-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/basic/014-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/basic/014-expected.png deleted file mode 100644 index d0edaabe..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/basic/014-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/basic/016-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/basic/016-expected.png deleted file mode 100644 index 4e57e33..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/basic/016-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/float/011-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/float/011-expected.png deleted file mode 100644 index 37a32ce9..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/float/011-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/float/015-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/float/015-expected.png deleted file mode 100644 index 69c39e6d..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/float/015-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/float/016-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/float/016-expected.png deleted file mode 100644 index c2f71509..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/float/016-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/001-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/001-expected.png deleted file mode 100644 index 7e1abda..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/005-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/005-expected.png deleted file mode 100644 index 7e1abda..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/005-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/001-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/001-expected.png deleted file mode 100644 index 7e1abda..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/005-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/005-expected.png deleted file mode 100644 index 7e1abda..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/005-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/003-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/003-expected.png deleted file mode 100644 index 44113e6..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/003-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/004-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/004-expected.png deleted file mode 100644 index 02ca1778..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/004-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/010-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/010-expected.png deleted file mode 100644 index beb081d3..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/010-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/011-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/011-expected.png deleted file mode 100644 index 0dbbd12..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/011-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/016-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/016-expected.png deleted file mode 100644 index 95c57c6..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/016-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/020-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/020-expected.png deleted file mode 100644 index 4e156e6..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/020-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/022-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/022-expected.png deleted file mode 100644 index c54e060..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/022-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/023-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/023-expected.png deleted file mode 100644 index 9513482..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/023-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/026-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/026-expected.png deleted file mode 100644 index 9ed1196..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/026-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/035-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/035-expected.png deleted file mode 100644 index cdd7ba4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/035-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/035-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/035-vertical-expected.png deleted file mode 100644 index f2cd926..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/035-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/039-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/039-expected.png deleted file mode 100644 index d13eebe..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/039-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/041-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/041-expected.png deleted file mode 100644 index 3b9c9675..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/041-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/append-cells2-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/append-cells2-expected.png deleted file mode 100644 index f2769a3..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/append-cells2-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-expected.png deleted file mode 100644 index 26f4bfc..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-vertical-expected.png deleted file mode 100644 index 1f26daf..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-cell-collapsed-border-expected.png deleted file mode 100644 index d040891..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-cell-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-cell-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-cell-expected.png deleted file mode 100644 index 9429ba6..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-cell-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-collapsed-border-expected.png deleted file mode 100644 index 6314ec8..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-collapsed-border-expected.png deleted file mode 100644 index b71feca..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-expected.png deleted file mode 100644 index 046f9709..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-collapsed-border-expected.png deleted file mode 100644 index ea38ee4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-expected.png deleted file mode 100644 index 33daa52..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-expected.png deleted file mode 100644 index 5381629..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-collapsed-border-expected.png deleted file mode 100644 index 65a6433..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-expected.png deleted file mode 100644 index 97a6fe3c..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-collapsed-border-expected.png deleted file mode 100644 index f6a563d..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-expected.png deleted file mode 100644 index d33dcb44..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-collapsed-border-expected.png deleted file mode 100644 index 0ec184b..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-expected.png deleted file mode 100644 index 0e5587f..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-collapsed-border-expected.png deleted file mode 100644 index e6fca27b..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-expected.png deleted file mode 100644 index 60c2c76..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-collapsed-border-expected.png deleted file mode 100644 index 1ef4432..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-expected.png deleted file mode 100644 index 1ef4432..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-collapsed-border-expected.png deleted file mode 100644 index 50b9e285..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-expected.png deleted file mode 100644 index a301495..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-cell-collapsed-border-expected.png deleted file mode 100644 index 2baa6aae..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-cell-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-cell-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-cell-expected.png deleted file mode 100644 index 4345817..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-cell-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-collapsed-border-expected.png deleted file mode 100644 index 7d46478..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-collapsed-border-expected.png deleted file mode 100644 index b3340c5b..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-expected.png deleted file mode 100644 index 2924eb93..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-group-collapsed-border-expected.png deleted file mode 100644 index de9ad9c..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-group-expected.png deleted file mode 100644 index 2ec05bce..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-group-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-expected.png deleted file mode 100644 index 187ee37..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-collapsed-border-expected.png deleted file mode 100644 index a18790f..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-expected.png deleted file mode 100644 index b2f1df5..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-group-collapsed-border-expected.png deleted file mode 100644 index 2e7f77b..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-group-expected.png deleted file mode 100644 index 0e58f78d..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-group-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-collapsed-border-expected.png deleted file mode 100644 index db6b5b3..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-expected.png deleted file mode 100644 index 1abcf04..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-collapsed-border-expected.png deleted file mode 100644 index 5ad75766..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-collapsed-border-expected.png deleted file mode 100644 index 5eae376..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-expected.png deleted file mode 100644 index be2193d..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png deleted file mode 100644 index 609a18a..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-group-expected.png deleted file mode 100644 index 3d4db515..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-group-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-expected.png deleted file mode 100644 index ffa8bb75..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-collapsed-border-expected.png deleted file mode 100644 index 3c7ef85..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-expected.png deleted file mode 100644 index e76dbba..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png deleted file mode 100644 index c91e152..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-group-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-group-expected.png deleted file mode 100644 index e55a6f7..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-group-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-expected.png deleted file mode 100644 index d7f294a..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-vertical-expected.png deleted file mode 100644 index 75230ffa..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/cell-coalescing-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/cell-coalescing-expected.png deleted file mode 100644 index 2d9e6f2..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/cell-coalescing-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/cellindex-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/cellindex-expected.png deleted file mode 100644 index 9311d035..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/cellindex-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/colgroup-preceded-by-caption-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/colgroup-preceded-by-caption-expected.png deleted file mode 100644 index 8cf4fac..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/colgroup-preceded-by-caption-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/colgroup-spanning-groups-rules-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/colgroup-spanning-groups-rules-expected.png deleted file mode 100644 index baa9ece..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/colgroup-spanning-groups-rules-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-before-child-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-before-child-expected.png deleted file mode 100644 index 59715b1..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-before-child-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-remove-before-child-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-remove-before-child-expected.png deleted file mode 100644 index cccc8e5..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-remove-before-child-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/dynamic-descendant-percentage-height-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/dynamic-descendant-percentage-height-expected.png deleted file mode 100644 index 29ac34b..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/dynamic-descendant-percentage-height-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/floating-th-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/floating-th-expected.png deleted file mode 100644 index 59474acc..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/floating-th-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/generated-caption-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/generated-caption-expected.png deleted file mode 100644 index ef285100..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/generated-caption-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-1-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-1-expected.png deleted file mode 100644 index 12228bc..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-1-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-2-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-2-expected.png deleted file mode 100644 index 7e83b28..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-2-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/multiple-captions-display-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/multiple-captions-display-expected.png deleted file mode 100644 index be93e940..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/multiple-captions-display-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/nested-percent-height-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/nested-percent-height-table-expected.png deleted file mode 100644 index c6589142..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/nested-percent-height-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/percent-heights-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/percent-heights-expected.png deleted file mode 100644 index 2fd46b8..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/percent-heights-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/remove-td-display-none-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/remove-td-display-none-expected.png deleted file mode 100644 index c71d4de..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/remove-td-display-none-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/rowspan-paint-order-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/rowspan-paint-order-vertical-expected.png deleted file mode 100644 index c0113ec..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/rowspan-paint-order-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/rtl-cell-display-none-assert-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/rtl-cell-display-none-assert-expected.png deleted file mode 100644 index 1f07f4e..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/rtl-cell-display-none-assert-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-and-parts-outline-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-and-parts-outline-expected.png deleted file mode 100644 index 12b8ca7..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-and-parts-outline-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-before-child-in-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-before-child-in-table-expected.png deleted file mode 100644 index 25c47a4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-before-child-in-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-cell-after-child-in-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-cell-after-child-in-table-expected.png deleted file mode 100644 index 3fedb3e..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-cell-after-child-in-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-block-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-block-expected.png deleted file mode 100644 index 1adf9f4b..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-block-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-table-expected.png deleted file mode 100644 index 1b7f463..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-display-types-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-display-types-expected.png deleted file mode 100644 index 862faba..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-display-types-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-row-focus-ring-paint-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-row-focus-ring-paint-expected.png deleted file mode 100644 index f61b65a..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-row-focus-ring-paint-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-rowspan-height-less-than-one-percent-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-rowspan-height-less-than-one-percent-expected.txt deleted file mode 100644 index a666f4a..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/table-rowspan-height-less-than-one-percent-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -Test for chromium bug : 408066. ASSERTION FAILED: !extraRowSpanningHeight in blink::RenderTableSection::distributeRowSpanHeightToRows. - -PASS -r0c0 - -r2c0 - -PASS -r0c0 r0c1 - -r2c0
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/text-field-baseline-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/text-field-baseline-expected.png deleted file mode 100644 index 8cfc4c7..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/text-field-baseline-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/unbreakable-images-quirk-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/unbreakable-images-quirk-expected.png deleted file mode 100644 index 166406d..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/layout_ng_fragment_traversal/fast/table/unbreakable-images-quirk-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/block/basic/016-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/block/basic/016-expected.png deleted file mode 100644 index 4e57e33..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/block/basic/016-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/block/float/011-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/block/float/011-expected.png deleted file mode 100644 index 37a32ce9..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/block/float/011-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/block/float/015-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/block/float/015-expected.png deleted file mode 100644 index 69c39e6d..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/block/float/015-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/001-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/001-expected.png deleted file mode 100644 index 7e1abda..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/005-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/005-expected.png deleted file mode 100644 index 7e1abda..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/005-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/001-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/001-expected.png deleted file mode 100644 index 7e1abda..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/005-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/005-expected.png deleted file mode 100644 index 7e1abda..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/005-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/003-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/003-expected.png deleted file mode 100644 index 44113e6..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/003-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/004-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/004-expected.png deleted file mode 100644 index 02ca1778..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/004-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/010-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/010-expected.png deleted file mode 100644 index beb081d3..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/010-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/011-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/011-expected.png deleted file mode 100644 index 0dbbd12..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/011-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/016-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/016-expected.png deleted file mode 100644 index 95c57c6..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/016-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/020-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/020-expected.png deleted file mode 100644 index 4e156e6..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/020-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/023-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/023-expected.png deleted file mode 100644 index 9513482..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/023-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/026-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/026-expected.png deleted file mode 100644 index 9ed1196..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/026-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/035-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/035-expected.png deleted file mode 100644 index cdd7ba4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/035-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/035-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/035-vertical-expected.png deleted file mode 100644 index f2cd926..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/035-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/039-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/039-expected.png deleted file mode 100644 index d13eebe..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/039-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/041-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/041-expected.png deleted file mode 100644 index 3b9c9675..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/041-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/append-cells2-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/append-cells2-expected.png deleted file mode 100644 index f2769a3..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/append-cells2-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-expected.png deleted file mode 100644 index 26f4bfc..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-vertical-expected.png deleted file mode 100644 index 1f26daf..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-collapsed-border-expected.png deleted file mode 100644 index 1ef4432..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-expected.png deleted file mode 100644 index 1ef4432..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-collapsed-border-expected.png deleted file mode 100644 index 50b9e285..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-expected.png deleted file mode 100644 index a301495..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-collapsed-border-expected.png deleted file mode 100644 index 4769a59..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png deleted file mode 100644 index b0f66b8..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-expected.png deleted file mode 100644 index d7f294a..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-vertical-expected.png deleted file mode 100644 index 75230ffa..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/cell-coalescing-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/cell-coalescing-expected.png deleted file mode 100644 index 2d9e6f2..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/cell-coalescing-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/cellindex-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/cellindex-expected.png deleted file mode 100644 index 9311d035..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/cellindex-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/colgroup-preceded-by-caption-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/colgroup-preceded-by-caption-expected.png deleted file mode 100644 index 8cf4fac..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/colgroup-preceded-by-caption-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/colgroup-spanning-groups-rules-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/colgroup-spanning-groups-rules-expected.png deleted file mode 100644 index baa9ece..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/colgroup-spanning-groups-rules-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-before-child-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-before-child-expected.png deleted file mode 100644 index 59715b1..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-before-child-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-remove-before-child-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-remove-before-child-expected.png deleted file mode 100644 index cccc8e5..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-remove-before-child-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/dynamic-descendant-percentage-height-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/dynamic-descendant-percentage-height-expected.png deleted file mode 100644 index 29ac34b..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/dynamic-descendant-percentage-height-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/floating-th-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/floating-th-expected.png deleted file mode 100644 index 59474acc..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/floating-th-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/generated-caption-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/generated-caption-expected.png deleted file mode 100644 index ef285100..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/generated-caption-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-1-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-1-expected.png deleted file mode 100644 index 12228bc..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-1-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-2-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-2-expected.png deleted file mode 100644 index 7e83b28..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-2-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/multiple-captions-display-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/multiple-captions-display-expected.png deleted file mode 100644 index be93e940..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/multiple-captions-display-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/nested-percent-height-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/nested-percent-height-table-expected.png deleted file mode 100644 index c6589142..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/nested-percent-height-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/percent-heights-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/percent-heights-expected.png deleted file mode 100644 index 2fd46b8..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/percent-heights-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/remove-td-display-none-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/remove-td-display-none-expected.png deleted file mode 100644 index c71d4de..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/remove-td-display-none-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/rowspan-paint-order-vertical-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/rowspan-paint-order-vertical-expected.png deleted file mode 100644 index c0113ec..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/rowspan-paint-order-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/rtl-cell-display-none-assert-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/rtl-cell-display-none-assert-expected.png deleted file mode 100644 index 1f07f4e..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/rtl-cell-display-none-assert-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-and-parts-outline-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-and-parts-outline-expected.png deleted file mode 100644 index 12b8ca7..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-and-parts-outline-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-before-child-in-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-before-child-in-table-expected.png deleted file mode 100644 index 25c47a4..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-before-child-in-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-cell-after-child-in-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-cell-after-child-in-table-expected.png deleted file mode 100644 index 3fedb3e..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-cell-after-child-in-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-block-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-block-expected.png deleted file mode 100644 index 1adf9f4b..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-block-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-table-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-table-expected.png deleted file mode 100644 index 1b7f463..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-display-types-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-display-types-expected.png deleted file mode 100644 index 862faba..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-display-types-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-row-focus-ring-paint-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-row-focus-ring-paint-expected.png deleted file mode 100644 index f61b65a..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-row-focus-ring-paint-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-rowspan-height-less-than-one-percent-expected.txt b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-rowspan-height-less-than-one-percent-expected.txt deleted file mode 100644 index a666f4a..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/table-rowspan-height-less-than-one-percent-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -Test for chromium bug : 408066. ASSERTION FAILED: !extraRowSpanningHeight in blink::RenderTableSection::distributeRowSpanHeightToRows. - -PASS -r0c0 - -r2c0 - -PASS -r0c0 r0c1 - -r2c0
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/text-field-baseline-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/text-field-baseline-expected.png deleted file mode 100644 index 8cfc4c7..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/text-field-baseline-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/unbreakable-images-quirk-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/unbreakable-images-quirk-expected.png deleted file mode 100644 index 166406d..0000000 --- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/layout_ng_fragment_traversal/fast/table/unbreakable-images-quirk-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/basic/016-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/basic/016-expected.png deleted file mode 100644 index 4e57e33..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/basic/016-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/float/011-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/float/011-expected.png deleted file mode 100644 index 37a32ce9..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/float/011-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/float/032-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/float/032-expected.png deleted file mode 100644 index dd286eb..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/float/032-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/float/float-avoidance-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/float/float-avoidance-expected.png deleted file mode 100644 index 1a2fec16..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/float/float-avoidance-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/001-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/001-expected.png deleted file mode 100644 index 7e1abda..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/005-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/005-expected.png deleted file mode 100644 index 7e1abda..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/005-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/103-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/103-expected.png deleted file mode 100644 index 341f32bc..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/103-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/001-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/001-expected.png deleted file mode 100644 index 7e1abda..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/005-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/005-expected.png deleted file mode 100644 index 7e1abda..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/margin-collapse/block-inside-inline/005-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/positioning/inline-block-relposition-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/positioning/inline-block-relposition-expected.png deleted file mode 100644 index 085d03d0..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/block/positioning/inline-block-relposition-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/003-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/003-expected.png deleted file mode 100644 index 44113e6..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/003-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/010-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/010-expected.png deleted file mode 100644 index beb081d3..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/010-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/011-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/011-expected.png deleted file mode 100644 index 0dbbd12..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/011-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/016-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/016-expected.png deleted file mode 100644 index 95c57c6..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/016-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/020-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/020-expected.png deleted file mode 100644 index 4e156e6..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/020-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/023-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/023-expected.png deleted file mode 100644 index 9513482..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/023-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/026-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/026-expected.png deleted file mode 100644 index 9ed1196..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/026-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/035-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/035-expected.png deleted file mode 100644 index cdd7ba4..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/035-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/035-vertical-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/035-vertical-expected.png deleted file mode 100644 index f2cd926..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/035-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/041-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/041-expected.png deleted file mode 100644 index 3b9c9675..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/041-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/append-cells2-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/append-cells2-expected.png deleted file mode 100644 index f2769a3..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/append-cells2-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-expected.png deleted file mode 100644 index 26f4bfc..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-vertical-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-vertical-expected.png deleted file mode 100644 index 1f26daf..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/auto-with-percent-height-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-collapsed-border-expected.png deleted file mode 100644 index 8bf58821..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-collapsed-border-expected.png deleted file mode 100644 index c38467f..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-collapsed-border-expected.png deleted file mode 100644 index 931c6fb..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-collapsed-border-expected.png deleted file mode 100644 index 55a095d..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-collapsed-border-expected.png deleted file mode 100644 index 4da6101..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-collapsed-border-expected.png deleted file mode 100644 index 8b16ca9..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-collapsed-border-expected.png deleted file mode 100644 index 1ef4432..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-expected.png deleted file mode 100644 index 1ef4432..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-opacity-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-collapsed-border-expected.png deleted file mode 100644 index 50b9e285..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-expected.png deleted file mode 100644 index a301495..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-show-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-collapsed-border-expected.png deleted file mode 100644 index a3b160e..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-collapsed-border-expected.png deleted file mode 100644 index 913d64d5..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-collapsed-border-expected.png deleted file mode 100644 index d7fe666..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-expected.png deleted file mode 100644 index d7f294a..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-vertical-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-vertical-expected.png deleted file mode 100644 index 75230ffa..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/001-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/004-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/004-expected.png deleted file mode 100644 index 8a8ef813..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/004-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/border-collapsing-head-foot-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/border-collapsing-head-foot-expected.png deleted file mode 100644 index fde1384..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/border-collapsing-head-foot-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/border-collapsing-head-foot-vertical-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/border-collapsing-head-foot-vertical-expected.png deleted file mode 100644 index 309f952..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/border-collapsing-head-foot-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/cell-coalescing-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/cell-coalescing-expected.png deleted file mode 100644 index 2d9e6f2..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/cell-coalescing-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/cellindex-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/cellindex-expected.png deleted file mode 100644 index 9311d035..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/cellindex-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/colgroup-preceded-by-caption-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/colgroup-preceded-by-caption-expected.png deleted file mode 100644 index 8cf4fac..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/colgroup-preceded-by-caption-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/colgroup-spanning-groups-rules-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/colgroup-spanning-groups-rules-expected.png deleted file mode 100644 index baa9ece..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/colgroup-spanning-groups-rules-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-before-child-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-before-child-expected.png deleted file mode 100644 index 59715b1..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-before-child-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-remove-before-child-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-remove-before-child-expected.png deleted file mode 100644 index cccc8e5..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/dynamic-caption-add-remove-before-child-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/dynamic-descendant-percentage-height-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/dynamic-descendant-percentage-height-expected.png deleted file mode 100644 index 29ac34b..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/dynamic-descendant-percentage-height-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/floating-th-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/floating-th-expected.png deleted file mode 100644 index 59474acc..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/floating-th-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/generated-caption-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/generated-caption-expected.png deleted file mode 100644 index ef285100..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/generated-caption-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-1-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-1-expected.png deleted file mode 100644 index 12228bc..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-1-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-2-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-2-expected.png deleted file mode 100644 index 7e83b28..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/mozilla-bug10296-vertical-align-2-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/multiple-captions-display-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/multiple-captions-display-expected.png deleted file mode 100644 index be93e940..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/multiple-captions-display-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/percent-heights-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/percent-heights-expected.png deleted file mode 100644 index 2fd46b8..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/percent-heights-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/remove-td-display-none-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/remove-td-display-none-expected.png deleted file mode 100644 index c71d4de..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/remove-td-display-none-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/rowspan-paint-order-vertical-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/rowspan-paint-order-vertical-expected.png deleted file mode 100644 index c0113ec..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/rowspan-paint-order-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/rtl-cell-display-none-assert-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/rtl-cell-display-none-assert-expected.png deleted file mode 100644 index 1f07f4e..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/rtl-cell-display-none-assert-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/rules-attr-dynchange2-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/rules-attr-dynchange2-expected.png deleted file mode 100644 index 4915140..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/rules-attr-dynchange2-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/spanOverlapRepaint-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/spanOverlapRepaint-expected.png deleted file mode 100644 index c2b6c3dd..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/spanOverlapRepaint-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/table-and-parts-outline-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/table-and-parts-outline-expected.png deleted file mode 100644 index 12b8ca7..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/table-and-parts-outline-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/table-cell-after-child-in-table-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/table-cell-after-child-in-table-expected.png deleted file mode 100644 index 3fedb3e..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/table-cell-after-child-in-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-block-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-block-expected.png deleted file mode 100644 index 1adf9f4b..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-block-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-table-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-table-expected.png deleted file mode 100644 index 1b7f463..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/table-cell-before-child-in-table-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/table-display-types-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/table-display-types-expected.png deleted file mode 100644 index 862faba..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/table-display-types-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/table-row-focus-ring-paint-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/table-row-focus-ring-paint-expected.png deleted file mode 100644 index f61b65a..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/table-row-focus-ring-paint-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/table-rowspan-height-less-than-one-percent-expected.txt b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/table-rowspan-height-less-than-one-percent-expected.txt deleted file mode 100644 index a666f4a..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/table-rowspan-height-less-than-one-percent-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -Test for chromium bug : 408066. ASSERTION FAILED: !extraRowSpanningHeight in blink::RenderTableSection::distributeRowSpanHeightToRows. - -PASS -r0c0 - -r2c0 - -PASS -r0c0 r0c1 - -r2c0
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/text-field-baseline-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/text-field-baseline-expected.png deleted file mode 100644 index 8cfc4c7..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/text-field-baseline-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/unbreakable-images-quirk-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/unbreakable-images-quirk-expected.png deleted file mode 100644 index 166406d..0000000 --- a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_fragment_traversal/fast/table/unbreakable-images-quirk-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-cell-collapsed-border-expected.png deleted file mode 100644 index 1005306..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-cell-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-collapsed-border-expected.png deleted file mode 100644 index a352c58..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-collapsed-border-expected.png deleted file mode 100644 index e56b45d..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-collapsed-border-expected.png deleted file mode 100644 index 5739fb5..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-column-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-collapsed-border-expected.png deleted file mode 100644 index e3101c5..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-quirks-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-collapsed-border-expected.png deleted file mode 100644 index 765fb2af..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-collapsed-border-expected.png deleted file mode 100644 index d5ae2c5..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_border-table-row-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-collapsed-border-expected.png deleted file mode 100644 index 13f1757..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-expected.png b/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-expected.png deleted file mode 100644 index b5cfac2..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_layers-hide-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-cell-collapsed-border-expected.png deleted file mode 100644 index 688774b..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-cell-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-collapsed-border-expected.png deleted file mode 100644 index 55510061..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-collapsed-border-expected.png deleted file mode 100644 index ec746e0..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-group-collapsed-border-expected.png deleted file mode 100644 index 13becee..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-column-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-collapsed-border-expected.png deleted file mode 100644 index 50d6bd4..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-group-collapsed-border-expected.png deleted file mode 100644 index 7f84a33..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_position-table-row-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-collapsed-border-expected.png deleted file mode 100644 index ed4d65c..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-cell-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-collapsed-border-expected.png deleted file mode 100644 index 51b06f7..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-collapsed-border-expected.png deleted file mode 100644 index ec83469..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png deleted file mode 100644 index c7a0971..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-column-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-collapsed-border-expected.png deleted file mode 100644 index a0d3078..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png b/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png deleted file mode 100644 index fb6bb3a..0000000 --- a/third_party/blink/web_tests/platform/win7/virtual/layout_ng_fragment_traversal/fast/table/backgr_simple-table-row-group-collapsed-border-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_fragment_traversal/README.md b/third_party/blink/web_tests/virtual/layout_ng_fragment_traversal/README.md deleted file mode 100644 index 4a67f50..0000000 --- a/third_party/blink/web_tests/virtual/layout_ng_fragment_traversal/README.md +++ /dev/null
@@ -1 +0,0 @@ -Testing LayoutNGFragmentTraversal; see ../../VirtualTestSuites
diff --git a/third_party/blink/web_tests/virtual/layout_ng_fragment_traversal/fast/block/float/overhanging-tall-block-expected.png b/third_party/blink/web_tests/virtual/layout_ng_fragment_traversal/fast/block/float/overhanging-tall-block-expected.png deleted file mode 100644 index 5039419..0000000 --- a/third_party/blink/web_tests/virtual/layout_ng_fragment_traversal/fast/block/float/overhanging-tall-block-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/equal-precedence-resolution-vertical-expected.png b/third_party/blink/web_tests/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/equal-precedence-resolution-vertical-expected.png deleted file mode 100644 index 900a6367..0000000 --- a/third_party/blink/web_tests/virtual/layout_ng_fragment_traversal/fast/table/border-collapsing/equal-precedence-resolution-vertical-expected.png +++ /dev/null Binary files differ
diff --git a/tools/android/find_annotated_tests.py b/tools/android/find_annotated_tests.py index a32df0a..5e4504d 100755 --- a/tools/android/find_annotated_tests.py +++ b/tools/android/find_annotated_tests.py
@@ -30,7 +30,7 @@ _CRBUG_ID_PATTERN = re.compile(r'crbug(?:.com)?/(\d+)') _EXPORT_TIME_FORMAT = '%Y%m%dT%H%M%S' _GIT_LOG_TIME_PATTERN = re.compile(r'\d+') -_GIT_LOG_MESSAGE_PATTERN = r'Cr-Commit-Position: refs/heads/master@{#(\d+)}' +_GIT_LOG_MESSAGE_PATTERN = r'Cr-Commit-Position: refs/heads/(?:master|main)@{#(\d+)}' _GIT_TIME_FORMAT = '%Y-%m-%dT%H:%M:%S'
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 40e2ba5..e5823108 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -11046,6 +11046,7 @@ <int value="38" label="kAccountPasswordsSynced"/> <int value="39" label="kAccountCompromisedCredentials"/> <int value="40" label="kFaviconCacheExpiration"/> + <int value="41" label="kSecurePaymentConfirmationInstruments"/> </enum> <enum name="ChromeChannelForHistogram"> @@ -28847,6 +28848,7 @@ <int value="1566" label="ACCESSIBILITY_PRIVATE_MAGNIFIERCENTERONPOINT"/> <int value="1567" label="STORAGE_SETACCESSLEVEL"/> <int value="1568" label="OS_TELEMETRY_GETOEMDATA"/> + <int value="1569" label="SCRIPTING_UNREGISTERCONTENTSCRIPTS"/> </enum> <enum name="ExtensionIconState"> @@ -47414,6 +47416,7 @@ <int value="-1456789591" label="MediaFoundationVideoCapture:enabled"/> <int value="-1456627355" label="EnableEmojiContextMenu:disabled"/> <int value="-1456538122" label="SCTAuditing:enabled"/> + <int value="-1456449932" label="PartitionedCookies:enabled"/> <int value="-1456004000" label="VrShell:disabled"/> <int value="-1455852875" label="WebAuthentication:disabled"/> <int value="-1455559065" @@ -51124,6 +51127,7 @@ <int value="1553422694" label="EnablePalmOnMaxTouchMajor:enabled"/> <int value="1553777815" label="enable-search-prefetch-service"/> <int value="1556554961" label="DriveFsBidirectionalNativeMessaging:enabled"/> + <int value="1557680135" label="PartitionedCookies:disabled"/> <int value="1558410842" label="FilesZipNoNaCl:disabled"/> <int value="1559034872" label="AutofillPrefilledFields:enabled"/> <int value="1560188739" label="reader-mode-heuristics"/>
diff --git a/tools/metrics/histograms/metadata/navigation/histograms.xml b/tools/metrics/histograms/metadata/navigation/histograms.xml index b6f035da..d655ed1 100644 --- a/tools/metrics/histograms/metadata/navigation/histograms.xml +++ b/tools/metrics/histograms/metadata/navigation/histograms.xml
@@ -1436,7 +1436,10 @@ <histogram name="Prerender.Experimental.PrerenderHostCancelReasonBeforeActivation" - enum="PrerenderHostFinalStatus" expires_after="2022-01-27"> + enum="PrerenderHostFinalStatus" expires_after="2021-08-06"> + <obsolete> + Removed from code in July 2021. + </obsolete> <owner>falken@chromium.org</owner> <owner>nhiroki@chromium.org</owner> <owner>toyoshim@chromium.org</owner> @@ -1450,7 +1453,10 @@ <histogram name="Prerender.Experimental.PrerenderHostCancelReasonDuringActivation" - enum="PrerenderHostFinalStatus" expires_after="2022-01-27"> + enum="PrerenderHostFinalStatus" expires_after="2022-08-06"> + <obsolete> + Removed from code in July 2021. + </obsolete> <owner>falken@chromium.org</owner> <owner>nhiroki@chromium.org</owner> <owner>toyoshim@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/others/histograms.xml b/tools/metrics/histograms/metadata/others/histograms.xml index d86c858..358e70a 100644 --- a/tools/metrics/histograms/metadata/others/histograms.xml +++ b/tools/metrics/histograms/metadata/others/histograms.xml
@@ -7937,6 +7937,9 @@ <histogram name="IncognitoModePrefs.WindowsParentalControlsInitThread" enum="ThreadType" expires_after="M77"> + <obsolete> + Removed in http://crrev.com/747875. + </obsolete> <owner>robliao@chromium.org</owner> <summary> The thread used to initialize the Windows parental controls. @@ -7945,6 +7948,9 @@ <histogram name="IncognitoModePrefs.WindowsParentalControlsInitTime" units="ms" expires_after="M77"> + <obsolete> + Removed in http://crrev.com/747875. + </obsolete> <owner>robliao@chromium.org</owner> <summary> The amount of time that elapsed during a run of
diff --git a/tools/metrics/histograms/metadata/sync/histograms.xml b/tools/metrics/histograms/metadata/sync/histograms.xml index e19185c..ccb4697 100644 --- a/tools/metrics/histograms/metadata/sync/histograms.xml +++ b/tools/metrics/histograms/metadata/sync/histograms.xml
@@ -804,7 +804,7 @@ </summary> </histogram> -<histogram base="true" name="Sync.ModelTypeStoreBackendError.{Operation}" +<histogram name="Sync.ModelTypeStoreBackendError.{Operation}" enum="LevelDBStatus" expires_after="2021-11-28"> <owner>treib@chromium.org</owner> <owner>rushans@google.com</owner> @@ -819,6 +819,7 @@ <token key="Operation"> <variant name="DeleteData"/> <variant name="GetStoreVersion"/> + <variant name="Init"/> <variant name="ReadAllRecords"/> <variant name="ReadRecords"/> <variant name="WriteModifications"/>
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json index 7360b4c..41243aed 100644 --- a/tools/perf/core/perfetto_binary_roller/binary_deps.json +++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -5,20 +5,20 @@ "remote_path": "perfetto_binaries/trace_processor_shell/linux_arm/49b4b5dcbc312d8d2c3751cf29238b8efeb4e494/trace_processor_shell" }, "win": { - "hash": "2d32f8ca491ef981f1d4c4b512613e76ba1d1bee", - "remote_path": "perfetto_binaries/trace_processor_shell/win/00e6f338d036b5d1ad547b979b612ec008fe3165/trace_processor_shell.exe" + "hash": "36ef9c195bf0a22db7ae802b4d5f935288418d9b", + "remote_path": "perfetto_binaries/trace_processor_shell/win/7d0822e5b1903542d5712673481fc0747ca34bb7/trace_processor_shell.exe" }, "mac": { - "hash": "e353596db4eeb16778697e6a9cdae30adf2842dd", - "remote_path": "perfetto_binaries/trace_processor_shell/mac/00e6f338d036b5d1ad547b979b612ec008fe3165/trace_processor_shell" + "hash": "759138c283c53a676d110aaec9a3fbaa63007edd", + "remote_path": "perfetto_binaries/trace_processor_shell/mac/7d0822e5b1903542d5712673481fc0747ca34bb7/trace_processor_shell" }, "linux_arm64": { "hash": "5074025a2898ec41a872e70a5719e417acb0a380", "remote_path": "perfetto_binaries/trace_processor_shell/linux_arm64/49b4b5dcbc312d8d2c3751cf29238b8efeb4e494/trace_processor_shell" }, "linux": { - "hash": "6d8243db1d936c6f26a12d5f59b9460f4ef8c43d", - "remote_path": "perfetto_binaries/trace_processor_shell/linux/00e6f338d036b5d1ad547b979b612ec008fe3165/trace_processor_shell" + "hash": "78c0325104a03436a524816b2faa613c66ca47ac", + "remote_path": "perfetto_binaries/trace_processor_shell/linux/7d0822e5b1903542d5712673481fc0747ca34bb7/trace_processor_shell" } }, "power_profile.sql": {
diff --git a/tools/style_variable_generator/README.md b/tools/style_variable_generator/README.md index 88f7598..083f255 100644 --- a/tools/style_variable_generator/README.md +++ b/tools/style_variable_generator/README.md
@@ -45,7 +45,7 @@ each exported constant just points to a css variable. Before you can use these constants you need to include the css variables in your app. The recommended way in chromium is to add a `<link>` in `<head>` which points to -`chrome://resources/chromeos/colors/cros_colors.generated.css`. +`chrome://resources/chromeos/colors/cros_styles.css`. If you are using semantic colors in a situation where relying on `chrome://resources` is infeasible you can specify
diff --git a/tools/style_variable_generator/style_variable_generator.gni b/tools/style_variable_generator/style_variable_generator.gni index 6148bc9..1ccaca7 100644 --- a/tools/style_variable_generator/style_variable_generator.gni +++ b/tools/style_variable_generator/style_variable_generator.gni
@@ -44,7 +44,7 @@ "//tools/style_variable_generator/css_generator.py", "//tools/style_variable_generator/css_generator.tmpl", ] - out_file = "$target_gen_dir/${original_target_name}.generated.css" + out_file = "$target_gen_dir/${original_target_name}.css" outputs = [ out_file ] args = [
diff --git a/ui/accessibility/platform/ax_platform_node_auralinux.cc b/ui/accessibility/platform/ax_platform_node_auralinux.cc index 18f5d3e..32169f5 100644 --- a/ui/accessibility/platform/ax_platform_node_auralinux.cc +++ b/ui/accessibility/platform/ax_platform_node_auralinux.cc
@@ -14,7 +14,6 @@ #include <utility> #include <vector> -#include "base/command_line.h" #include "base/compiler_specific.h" #include "base/cxx17_backports.h" #include "base/debug/leak_annotations.h" @@ -22,7 +21,6 @@ #include "base/no_destructor.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" -#include "base/strings/stringprintf.h" #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversion_utils.h" #include "base/strings/utf_string_conversions.h" @@ -31,14 +29,11 @@ #include "ui/accessibility/ax_action_data.h" #include "ui/accessibility/ax_enum_util.h" #include "ui/accessibility/ax_enums.mojom.h" -#include "ui/accessibility/ax_mode_observer.h" #include "ui/accessibility/ax_node_data.h" #include "ui/accessibility/ax_role_properties.h" -#include "ui/accessibility/ax_tree_data.h" #include "ui/accessibility/platform/atk_util_auralinux.h" #include "ui/accessibility/platform/ax_platform_atk_hyperlink.h" #include "ui/accessibility/platform/ax_platform_node_delegate.h" -#include "ui/accessibility/platform/ax_platform_node_delegate_base.h" #include "ui/accessibility/platform/ax_platform_text_boundary.h" #include "ui/gfx/geometry/rect_conversions.h" @@ -354,24 +349,6 @@ return g_strdup(result.c_str()); } -gfx::Point FindAtkObjectParentCoords(AtkObject* atk_object) { - if (!atk_object) - return gfx::Point(0, 0); - - AXPlatformNodeAuraLinux* node = - AXPlatformNodeAuraLinux::FromAtkObject(atk_object); - if (node->GetAtkRole() == ATK_ROLE_FRAME) { - int x, y; - atk_component_get_extents(ATK_COMPONENT(atk_object), &x, &y, nullptr, - nullptr, ATK_XY_WINDOW); - gfx::Point window_coords(x, y); - return window_coords; - } - atk_object = node->GetParent(); - - return FindAtkObjectParentCoords(atk_object); -} - AtkAttributeSet* PrependAtkAttributeToAtkAttributeSet( const char* name, const char* value,
diff --git a/ui/accessibility/platform/ax_platform_node_auralinux.h b/ui/accessibility/platform/ax_platform_node_auralinux.h index 39d9786d0..1a559de 100644 --- a/ui/accessibility/platform/ax_platform_node_auralinux.h +++ b/ui/accessibility/platform/ax_platform_node_auralinux.h
@@ -7,20 +7,15 @@ #include <atk/atk.h> -#include <map> #include <memory> #include <string> #include <utility> -#include <vector> #include "base/macros.h" #include "base/strings/utf_offset_string_conversions.h" -#include "base/strings/utf_string_conversions.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/accessibility/ax_enums.mojom-forward.h" #include "ui/accessibility/ax_export.h" -#include "ui/accessibility/ax_position.h" -#include "ui/accessibility/ax_range.h" #include "ui/accessibility/platform/ax_platform_node_base.h" // This deleter is used in order to ensure that we properly always free memory
diff --git a/ui/chromeos/colors/BUILD.gn b/ui/chromeos/colors/BUILD.gn deleted file mode 100644 index 0d833d5f..0000000 --- a/ui/chromeos/colors/BUILD.gn +++ /dev/null
@@ -1,13 +0,0 @@ -# Copyright 2020 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//tools/style_variable_generator/style_variable_generator.gni") - -style_variable_generator("cros_colors") { - sources = [ - "cros_colors.json5", - "cros_palette.json5", - "cros_typography.json5", - ] -}
diff --git a/ui/chromeos/styles/BUILD.gn b/ui/chromeos/styles/BUILD.gn new file mode 100644 index 0000000..17ad995 --- /dev/null +++ b/ui/chromeos/styles/BUILD.gn
@@ -0,0 +1,13 @@ +# 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("//tools/style_variable_generator/style_variable_generator.gni") + +style_variable_generator("cros_styles") { + sources = [ + "cros_colors.json5", + "cros_palette.json5", + "cros_typography.json5", + ] +}
diff --git a/ui/chromeos/colors/OWNERS b/ui/chromeos/styles/OWNERS similarity index 100% rename from ui/chromeos/colors/OWNERS rename to ui/chromeos/styles/OWNERS
diff --git a/ui/chromeos/colors/PRESUBMIT.py b/ui/chromeos/styles/PRESUBMIT.py similarity index 100% rename from ui/chromeos/colors/PRESUBMIT.py rename to ui/chromeos/styles/PRESUBMIT.py
diff --git a/ui/chromeos/colors/cros_colors.json5 b/ui/chromeos/styles/cros_colors.json5 similarity index 100% rename from ui/chromeos/colors/cros_colors.json5 rename to ui/chromeos/styles/cros_colors.json5
diff --git a/ui/chromeos/colors/cros_palette.json5 b/ui/chromeos/styles/cros_palette.json5 similarity index 100% rename from ui/chromeos/colors/cros_palette.json5 rename to ui/chromeos/styles/cros_palette.json5
diff --git a/ui/chromeos/colors/cros_typography.json5 b/ui/chromeos/styles/cros_typography.json5 similarity index 100% rename from ui/chromeos/colors/cros_typography.json5 rename to ui/chromeos/styles/cros_typography.json5
diff --git a/ui/file_manager/file_manager/main.html b/ui/file_manager/file_manager/main.html index bf16ae6..cf64d1b 100644 --- a/ui/file_manager/file_manager/main.html +++ b/ui/file_manager/file_manager/main.html
@@ -12,7 +12,7 @@ <link rel="stylesheet" href="chrome://resources/css/action_link.css"> <link rel="stylesheet" href="chrome://resources/css/text_defaults.css"> - <link rel="stylesheet" href="chrome://resources/chromeos/colors/cros_colors.generated.css"> + <link rel="stylesheet" href="chrome://resources/chromeos/colors/cros_styles.css"> <link rel="stylesheet" href="foreground/css/list.css"> <link rel="stylesheet" href="foreground/css/table.css"> <link rel="stylesheet" href="foreground/css/tree.css">
diff --git a/ui/resources/BUILD.gn b/ui/resources/BUILD.gn index 1182b83..8fef193 100644 --- a/ui/resources/BUILD.gn +++ b/ui/resources/BUILD.gn
@@ -42,7 +42,7 @@ deps = [ "//ui/webui/resources:modulize" ] if (is_chromeos_ash) { - deps += [ "//ui/chromeos/colors:cros_colors_css" ] + deps += [ "//ui/chromeos/styles:cros_styles_css" ] } outputs = [
diff --git a/ui/webui/resources/cr_elements/chromeos/cros_color_overrides.html b/ui/webui/resources/cr_elements/chromeos/cros_color_overrides.html index 213a699e..408ebd1 100644 --- a/ui/webui/resources/cr_elements/chromeos/cros_color_overrides.html +++ b/ui/webui/resources/cr_elements/chromeos/cros_color_overrides.html
@@ -3,7 +3,7 @@ <!-- Style Module that defines color overrides for cr-elements on Chrome OS. -This file plumbs semantic colors from cros_colors.css into cr-elements. +This file plumbs semantic colors from cros_styles.css into cr-elements. To get Chrome OS System Colors, an element must: - be beneath a <html> element with a "cros" attribute
diff --git a/ui/webui/resources/webui_resources.grd b/ui/webui/resources/webui_resources.grd index 8befebe..7ac7bf0 100644 --- a/ui/webui/resources/webui_resources.grd +++ b/ui/webui/resources/webui_resources.grd
@@ -15,8 +15,8 @@ <includes> <if expr="chromeos"> <include name="IDR_WEBUI_CROS_COLORS_CSS" - file="${root_gen_dir}/ui/chromeos/colors/cros_colors.generated.css" - resource_path="chromeos/colors/cros_colors.generated.css" + file="${root_gen_dir}/ui/chromeos/styles/cros_styles.css" + resource_path="chromeos/colors/cros_styles.css" type="chrome_html" use_base_dir="false" /> </if>
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/UrlBarControllerImpl.java b/weblayer/browser/java/org/chromium/weblayer_private/UrlBarControllerImpl.java index 47cab38..229ffc3 100644 --- a/weblayer/browser/java/org/chromium/weblayer_private/UrlBarControllerImpl.java +++ b/weblayer/browser/java/org/chromium/weblayer_private/UrlBarControllerImpl.java
@@ -259,7 +259,7 @@ mNativeUrlBarController), mBrowserImpl.isWindowOnSmallDevice(), /*skipIconForNeutralState=*/true, - /*useUpdatedConnectionSecurityIndicators=*/true); + /*useUpdatedConnectionSecurityIndicators=*/false); } }