diff --git a/DEPS b/DEPS
index 26c360d8..9e98ce5 100644
--- a/DEPS
+++ b/DEPS
@@ -199,11 +199,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': 'e1314a391ff26e5c030c852c2f2060636b2961a2',
+  'skia_revision': '8ef3c539a26e0339e7c1fd6d000217e9094afbb7',
   # 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': 'cbbe339c1ca9754b3123fe2bdb83c0f58ee5d728',
+  'v8_revision': '6069442cab5b767e9722d20cabda6d4864fb7210',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling swarming_client
   # and whatever else without interference from each other.
@@ -211,7 +211,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ANGLE
   # and whatever else without interference from each other.
-  'angle_revision': 'a5ab7974a28b5c02ee68fa365377c1761a0f891a',
+  'angle_revision': '0be050a44a4308ace01229b89bd4560457356007',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
@@ -278,7 +278,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling devtools-frontend
   # and whatever else without interference from each other.
-  'devtools_frontend_revision': '78e694f2c857a147351c25b670f3cad92b235926',
+  'devtools_frontend_revision': 'a8ae70ef3fe1d1588f0a1ae59b3553d37d4ff28a',
   # 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.
@@ -1506,7 +1506,7 @@
     Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '66460536ee975a3e98931b7b40a661a63fd9cd57',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + 'd0acbd864518f94c4d8fd895c5a258336429b2df',
+    Var('webrtc_git') + '/src.git' + '@' + '41bfcf4a63611409220fcd458a03deaa2cd23619',
 
   'src/third_party/libgifcodec':
      Var('skia_git') + '/libgifcodec' + '@'+  Var('libgifcodec_revision'),
@@ -1578,7 +1578,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@8e707aa7eab58e9282759c787c2e30c5fa32471e',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@e559f121cf3f7752e172ee986dfea26eb3c09996',
     'condition': 'checkout_src_internal',
   },
 
@@ -1597,7 +1597,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/media_app/app',
-        'version': 'ZTzFb8MH_DsgeSVwPK-Z8T08CNQI0SJXgeMi4VULjpMC',
+        'version': '-M0KYOsVs6mvdd9kcwZUPZ8VZIbrvwGOuX0g2NzHtDYC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/ash/resources/vector_icons/BUILD.gn b/ash/resources/vector_icons/BUILD.gn
index 4e70e22..2029b78 100644
--- a/ash/resources/vector_icons/BUILD.gn
+++ b/ash/resources/vector_icons/BUILD.gn
@@ -316,7 +316,6 @@
     "tray_action_new_lock_screen_note.icon",
     "two_files.icon",
     "unified_menu_accessibility.icon",
-    "unified_menu_arrow_back.icon",
     "unified_menu_battery_alert.icon",
     "unified_menu_battery_alert_outline.icon",
     "unified_menu_battery_bolt.icon",
diff --git a/ash/resources/vector_icons/unified_menu_arrow_back.icon b/ash/resources/vector_icons/unified_menu_arrow_back.icon
deleted file mode 100644
index fd90d3b..0000000
--- a/ash/resources/vector_icons/unified_menu_arrow_back.icon
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2018 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-CANVAS_DIMENSIONS, 20,
-MOVE_TO, 6.44f, 9,
-R_LINE_TO, 5.02f, -4.77f,
-LINE_TO, 10.18f, 3,
-LINE_TO, 3, 10,
-R_LINE_TO, 7.18f, 7,
-R_LINE_TO, 1.27f, -1.23f,
-LINE_TO, 6.44f, 11,
-H_LINE_TO, 17,
-V_LINE_TO, 9,
-CLOSE
diff --git a/ash/strings/ash_strings_en-GB.xtb b/ash/strings/ash_strings_en-GB.xtb
index 041604ef..75f9519 100644
--- a/ash/strings/ash_strings_en-GB.xtb
+++ b/ash/strings/ash_strings_en-GB.xtb
@@ -577,6 +577,7 @@
 <translation id="5992218262414051481">High contrast mode enabled. Press Ctrl+Search+H again to toggle it off.</translation>
 <translation id="6018164090099858612">Exiting mirror mode</translation>
 <translation id="602001110135236999">Scroll left</translation>
+<translation id="602472752137106327">Show windows from all desks, radio button selected</translation>
 <translation id="6025324406281560198"><ph name="SECURITY_STATUS" />, <ph name="CONNECTION_STATUS" />, signal strength <ph name="SIGNAL_STRENGTH" />, managed by your administrator</translation>
 <translation id="6030495522958826102">Menu moved to the bottom-left corner of the screen.</translation>
 <translation id="6032620807120418574">Click anywhere to record full screen</translation>
@@ -675,6 +676,7 @@
 <translation id="685782768769951078">{NUM_DIGITS,plural, =1{One digit remaining}other{# digits remaining}}</translation>
 <translation id="6878400149835617132">Shortcut turned off</translation>
 <translation id="6886172995547742638">Your <ph name="DEVICE_TYPE" /> may experience lower performance. Use a certified <ph name="PREFERRED_MINIMUM_POWER" />W or higher USB-C power adaptor.</translation>
+<translation id="688631446150864480">Press the Down arrow key to switch windows</translation>
 <translation id="6896758677409633944">Copy</translation>
 <translation id="6910714959251846841">This update requires powerwashing of your device. Learn more about the latest <ph name="SYSTEM_APP_NAME" /> update.</translation>
 <translation id="6919251195245069855">Couldn’t recognise your smart card. Try again.</translation>
@@ -840,6 +842,7 @@
 <translation id="8297006494302853456">Weak</translation>
 <translation id="8308637677604853869">Previous menu</translation>
 <translation id="8341451174107936385"><ph name="UNLOCK_MORE_FEATURES" />  <ph name="GET_STARTED" /></translation>
+<translation id="8345019317483336363"><ph name="WINDOW_TITLE" /> window selected</translation>
 <translation id="8351131234907093545">Create note</translation>
 <translation id="8371779926711439835">Forward by letter</translation>
 <translation id="8375916635258623388">This <ph name="DEVICE_NAME" /> and your phone will connect automatically</translation>
@@ -863,6 +866,7 @@
 <translation id="8477270416194247200">Press Alt+Search or Shift to cancel.</translation>
 <translation id="8492573885090281069"><ph name="DISPLAY_NAME" /> doesn't support <ph name="SPECIFIED_RESOLUTION" />. The resolution was changed to <ph name="FALLBACK_RESOLUTION" />. Click confirm to keep changes. The previous settings will be restored in <ph name="TIMEOUT_SECONDS" />.</translation>
 <translation id="8513108775083588393">Auto-rotate</translation>
+<translation id="851458219935658693">Show windows from the current desk, radio button selected</translation>
 <translation id="8517041960877371778">Your <ph name="DEVICE_TYPE" /> may not charge while it is turned on.</translation>
 <translation id="8553395910833293175">Already assigned to all desks.</translation>
 <translation id="8563862697512465947">Notification Settings</translation>
diff --git a/ash/system/tray/detailed_view_delegate.cc b/ash/system/tray/detailed_view_delegate.cc
index ba09d53..41af66aa 100644
--- a/ash/system/tray/detailed_view_delegate.cc
+++ b/ash/system/tray/detailed_view_delegate.cc
@@ -10,12 +10,12 @@
 #include "ash/system/tray/hover_highlight_view.h"
 #include "ash/system/tray/tray_constants.h"
 #include "ash/system/tray/tray_popup_utils.h"
-#include "ash/system/unified/custom_shape_button.h"
 #include "ash/system/unified/top_shortcut_button.h"
 #include "ash/system/unified/unified_system_tray_controller.h"
 #include "components/vector_icons/vector_icons.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/gfx/paint_vector_icon.h"
+#include "ui/gfx/scoped_canvas.h"
 #include "ui/gfx/vector_icon_types.h"
 #include "ui/views/border.h"
 #include "ui/views/controls/label.h"
@@ -33,16 +33,19 @@
 
   switch (container) {
     case TriView::Container::START:
-      FALLTHROUGH;
-    case TriView::Container::END:
+    case TriView::Container::END: {
+      const int left_padding = container == TriView::Container::START
+                                   ? kUnifiedBackButtonLeftPadding
+                                   : 0;
       layout = std::make_unique<views::BoxLayout>(
-          views::BoxLayout::Orientation::kHorizontal, gfx::Insets(),
-          kUnifiedTopShortcutSpacing);
+          views::BoxLayout::Orientation::kHorizontal,
+          gfx::Insets(0, left_padding, 0, 0), kUnifiedTopShortcutSpacing);
       layout->set_main_axis_alignment(
           views::BoxLayout::MainAxisAlignment::kCenter);
       layout->set_cross_axis_alignment(
           views::BoxLayout::CrossAxisAlignment::kCenter);
       break;
+    }
     case TriView::Container::CENTER:
       tri_view->SetFlexForContainer(TriView::Container::CENTER, 1.f);
 
@@ -60,49 +63,24 @@
                        gfx::Size(0, kUnifiedDetailedViewTitleRowHeight));
 }
 
-gfx::ImageSkia CreateBackButtonIcon() {
-  return gfx::CreateVectorIcon(kUnifiedMenuArrowBackIcon,
-                               AshColorProvider::Get()->GetContentLayerColor(
-                                   ContentLayerType::kIconColorPrimary));
-}
-
-class BackButton : public CustomShapeButton {
+class BackButton : public TopShortcutButton {
  public:
   BackButton(views::Button::PressedCallback callback)
-      : CustomShapeButton(std::move(callback)) {
-    gfx::ImageSkia image = CreateBackButtonIcon();
-    SetImage(views::Button::STATE_NORMAL, image);
-    SetImageHorizontalAlignment(ALIGN_RIGHT);
-    SetImageVerticalAlignment(ALIGN_MIDDLE);
-    SetTooltipText(
-        l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_PREVIOUS_MENU));
-    SetBorder(views::CreateEmptyBorder(
-        gfx::Insets((kTrayItemSize - image.width()) / 2)));
-  }
-
+      : TopShortcutButton(std::move(callback),
+                          kUnifiedMenuExpandIcon,
+                          IDS_ASH_STATUS_TRAY_PREVIOUS_MENU) {}
+  BackButton(const BackButton&) = delete;
+  BackButton& operator=(const BackButton&) = delete;
   ~BackButton() override = default;
 
-  // CustomShapeButton:
-  gfx::Size CalculatePreferredSize() const override {
-    return gfx::Size(kTrayItemSize * 3 / 2, kTrayItemSize);
+  // Use the same icon as CollapseButton with rotation.
+  void PaintButtonContents(gfx::Canvas* canvas) override {
+    gfx::ScopedCanvas scoped(canvas);
+    canvas->Translate(gfx::Vector2d(size().width() / 2, size().height() / 2));
+    canvas->sk_canvas()->rotate(-90);
+    gfx::ImageSkia image = GetImageToPaint();
+    canvas->DrawImageInt(image, -image.width() / 2, -image.height() / 2);
   }
-
-  void OnThemeChanged() override {
-    CustomShapeButton::OnThemeChanged();
-    SetImage(views::Button::STATE_NORMAL, CreateBackButtonIcon());
-  }
-
-  SkPath CreateCustomShapePath(const gfx::Rect& bounds) const override {
-    SkPath path;
-    SkScalar bottom_radius = SkIntToScalar(kTrayItemSize / 2);
-    SkScalar radii[8] = {
-        0, 0, bottom_radius, bottom_radius, bottom_radius, bottom_radius, 0, 0};
-    path.addRoundRect(gfx::RectToSkRect(bounds), radii);
-    return path;
-  }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(BackButton);
 };
 
 }  // namespace
diff --git a/ash/system/tray/tray_constants.h b/ash/system/tray/tray_constants.h
index 40c8f93b..feeecd7 100644
--- a/ash/system/tray/tray_constants.h
+++ b/ash/system/tray/tray_constants.h
@@ -136,6 +136,7 @@
 constexpr int kUnifiedNotificationHiddenLineHeight = 20;
 constexpr int kUnifiedTopShortcutContainerTopPadding = 12;
 constexpr int kUnifiedNotificationMinimumHeight = 40;
+constexpr int kUnifiedBackButtonLeftPadding = 16;
 constexpr gfx::Insets kUnifiedTopShortcutPadding(0, 16);
 constexpr gfx::Insets kUnifiedNotificationHiddenPadding(6, 16);
 constexpr gfx::Insets kUnifiedCircularButtonFocusPadding(4);
diff --git a/ash/wm/desks/zero_state_button.h b/ash/wm/desks/zero_state_button.h
index 6a67487..73b7c12 100644
--- a/ash/wm/desks/zero_state_button.h
+++ b/ash/wm/desks/zero_state_button.h
@@ -85,7 +85,7 @@
  public:
   ZeroStateDefaultDeskButton(DesksBarView* bar_view);
   ZeroStateDefaultDeskButton(const ZeroStateDefaultDeskButton&) = delete;
-  ZeroStateDefaultDeskButton operator=(const ZeroStateDefaultDeskButton&) =
+  ZeroStateDefaultDeskButton& operator=(const ZeroStateDefaultDeskButton&) =
       delete;
   ~ZeroStateDefaultDeskButton() override = default;
 
@@ -110,7 +110,7 @@
  public:
   ZeroStateNewDeskButton();
   ZeroStateNewDeskButton(const ZeroStateNewDeskButton&) = delete;
-  ZeroStateNewDeskButton operator=(const ZeroStateNewDeskButton&) = delete;
+  ZeroStateNewDeskButton& operator=(const ZeroStateNewDeskButton&) = delete;
   ~ZeroStateNewDeskButton() override = default;
 
   // DeskButtonBase:
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1
index d91bc8c..0f602e6 100644
--- a/build/fuchsia/linux.sdk.sha1
+++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@
-0.20210129.3.1
+0.20210131.2.1
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1
index d91bc8c..0f602e6 100644
--- a/build/fuchsia/mac.sdk.sha1
+++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@
-0.20210129.3.1
+0.20210131.2.1
diff --git a/cc/paint/paint_op_buffer.cc b/cc/paint/paint_op_buffer.cc
index 9faaf7f..fac59ff9 100644
--- a/cc/paint/paint_op_buffer.cc
+++ b/cc/paint/paint_op_buffer.cc
@@ -1478,11 +1478,8 @@
     canvas->scale(1.f / scale_adjustment.width(),
                   1.f / scale_adjustment.height());
   }
-  canvas->drawImage(
-      decoded_image.image().get(), op->left, op->top,
-      SkSamplingOptions(decoded_image.filter_quality(),
-                        SkSamplingOptions::kMedium_asMipmapLinear),
-      &paint);
+  canvas->drawImage(decoded_image.image().get(), op->left, op->top,
+                    SkSamplingOptions(decoded_image.filter_quality()), &paint);
 }
 
 void DrawImageRectOp::RasterWithFlags(const DrawImageRectOp* op,
diff --git a/cc/paint/paint_op_buffer_unittest.cc b/cc/paint/paint_op_buffer_unittest.cc
index 91296bb..faac2f8 100644
--- a/cc/paint/paint_op_buffer_unittest.cc
+++ b/cc/paint/paint_op_buffer_unittest.cc
@@ -1470,9 +1470,7 @@
   for (size_t i = 0; i < len; ++i) {
     buffer->push<DrawImageOp>(
         test_images[i], test_floats[i], test_floats[i + 1],
-        SkSamplingOptions(test_flags[i].getFilterQuality(),
-                          SkSamplingOptions::kMedium_asMipmapLinear),
-        &test_flags[i]);
+        SkSamplingOptions(test_flags[i].getFilterQuality()), &test_flags[i]);
   }
 
   // Test optional flags
@@ -1490,9 +1488,8 @@
               : SkCanvas::kFast_SrcRectConstraint;
     buffer->push<DrawImageRectOp>(
         test_images[i], test_rects[i], test_rects[i + 1],
-        SkSamplingOptions(test_flags[i].getFilterQuality(),
-                          SkSamplingOptions::kMedium_asMipmapLinear),
-        &test_flags[i], constraint);
+        SkSamplingOptions(test_flags[i].getFilterQuality()), &test_flags[i],
+        constraint);
   }
 
   // Test optional flags.
diff --git a/cc/test/fake_content_layer_client.cc b/cc/test/fake_content_layer_client.cc
index 748cd991..b93ec64 100644
--- a/cc/test/fake_content_layer_client.cc
+++ b/cc/test/fake_content_layer_client.cc
@@ -71,9 +71,7 @@
     display_list->push<DrawImageOp>(
         it->image, static_cast<float>(it->point.x()),
         static_cast<float>(it->point.y()),
-        SkSamplingOptions(it->flags.getFilterQuality(),
-                          SkSamplingOptions::kMedium_asMipmapLinear),
-        &it->flags);
+        SkSamplingOptions(it->flags.getFilterQuality()), &it->flags);
     display_list->push<RestoreOp>();
     display_list->EndPaintOfUnpaired(PaintableRegion());
 
diff --git a/cc/tiles/gpu_image_decode_cache.cc b/cc/tiles/gpu_image_decode_cache.cc
index 0157835..77c2e457 100644
--- a/cc/tiles/gpu_image_decode_cache.cc
+++ b/cc/tiles/gpu_image_decode_cache.cc
@@ -304,8 +304,7 @@
 
   const SkFilterQuality filter_quality =
       CalculateDesiredFilterQuality(draw_image);
-  const SkSamplingOptions sampling(filter_quality,
-                                   SkSamplingOptions::kMedium_asMipmapLinear);
+  const SkSamplingOptions sampling(filter_quality);
 
   bool decode_to_f16_using_n32_intermediate =
       decode_info.colorType() == kRGBA_F16_SkColorType &&
diff --git a/cc/tiles/image_decode_cache_utils.cc b/cc/tiles/image_decode_cache_utils.cc
index 8dbd6b3..4ac8523 100644
--- a/cc/tiles/image_decode_cache_utils.cc
+++ b/cc/tiles/image_decode_cache_utils.cc
@@ -41,10 +41,8 @@
       n32_pixmap.info().makeWH(scaled_pixmap->width(), scaled_pixmap->height());
   if (!n32_resized_bitmap.tryAllocPixels(n32_resize_info))
     return false;
-  if (!n32_pixmap.scalePixels(
-          n32_resized_bitmap.pixmap(),
-          SkSamplingOptions(filter_quality,
-                            SkSamplingOptions::kMedium_asMipmapLinear)))
+  if (!n32_pixmap.scalePixels(n32_resized_bitmap.pixmap(),
+                              SkSamplingOptions(filter_quality)))
     return false;
   // Convert back to f16 and return
   return n32_resized_bitmap.readPixels(*scaled_pixmap, 0, 0);
diff --git a/cc/tiles/software_image_decode_cache_utils.cc b/cc/tiles/software_image_decode_cache_utils.cc
index 9359817..aabf012 100644
--- a/cc/tiles/software_image_decode_cache_utils.cc
+++ b/cc/tiles/software_image_decode_cache_utils.cc
@@ -154,10 +154,8 @@
     result = ImageDecodeCacheUtils::ScaleToHalfFloatPixmapUsingN32Intermediate(
         decoded_pixmap, &target_pixmap, filter_quality);
   } else {
-    result = decoded_pixmap.scalePixels(
-        target_pixmap,
-        SkSamplingOptions(filter_quality,
-                          SkSamplingOptions::kMedium_asMipmapLinear));
+    result = decoded_pixmap.scalePixels(target_pixmap,
+                                        SkSamplingOptions(filter_quality));
   }
   DCHECK(result) << key.ToString();
 
diff --git a/cc/trees/draw_properties_unittest.cc b/cc/trees/draw_properties_unittest.cc
index 085712b..cac65443 100644
--- a/cc/trees/draw_properties_unittest.cc
+++ b/cc/trees/draw_properties_unittest.cc
@@ -6098,6 +6098,52 @@
   EXPECT_TRUE(AnimationAffectedByInvalidScale(child2));
 }
 
+TEST_F(DrawPropertiesTest, AnimationScaleFromSmallToOne) {
+  LayerImpl* root = root_layer();
+  root->SetBounds(gfx::Size(1, 1));
+  auto* parent = AddLayer<LayerImpl>();
+  parent->SetBounds(gfx::Size(1, 1));
+  auto* child = AddLayer<LayerImpl>();
+  child->SetBounds(gfx::Size(1, 1));
+  auto* grandchild = AddLayer<LayerImpl>();
+  grandchild->SetBounds(gfx::Size(1, 1));
+  SetElementIdsForTesting();
+
+  gfx::Transform parent_scale;
+  parent_scale.Scale(1, 2);
+  gfx::Transform small_scale;
+  small_scale.Scale(0.1, 0.2);
+
+  CopyProperties(root, parent);
+  CreateTransformNode(parent).local = parent_scale;
+  CopyProperties(parent, child);
+  CreateTransformNode(child).local = small_scale;
+  CopyProperties(child, grandchild);
+  CreateTransformNode(grandchild).local = small_scale;
+
+  TransformOperations small_scale_operations;
+  small_scale_operations.AppendMatrix(small_scale);
+  TransformOperations scale_one_operations;
+
+  // Both child and grandchild animate scale from 0.1x0.2 to 1.
+  AddAnimatedTransformToElementWithAnimation(
+      child->element_id(), timeline_impl(), 1.0, small_scale_operations,
+      scale_one_operations);
+  AddAnimatedTransformToElementWithAnimation(
+      grandchild->element_id(), timeline_impl(), 1.0, small_scale_operations,
+      scale_one_operations);
+  UpdateActiveTreeDrawProperties();
+
+  EXPECT_FLOAT_EQ(2.f, MaximumAnimationToScreenScale(grandchild));
+  EXPECT_FLOAT_EQ(2.f, MaximumAnimationToScreenScale(child));
+  EXPECT_FLOAT_EQ(2.f, MaximumAnimationToScreenScale(parent));
+  EXPECT_FLOAT_EQ(1.f, MaximumAnimationToScreenScale(root));
+  EXPECT_FALSE(AnimationAffectedByInvalidScale(grandchild));
+  EXPECT_FALSE(AnimationAffectedByInvalidScale(child));
+  EXPECT_FALSE(AnimationAffectedByInvalidScale(parent));
+  EXPECT_FALSE(AnimationAffectedByInvalidScale(root));
+}
+
 TEST_F(DrawPropertiesTest, VisibleContentRectInChildRenderSurface) {
   LayerImpl* root = root_layer();
   LayerImpl* clip = AddLayer<LayerImpl>();
diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc
index c66218b6..d8d0cd532 100644
--- a/cc/trees/property_tree.cc
+++ b/cc/trees/property_tree.cc
@@ -2091,21 +2091,19 @@
   if (animation_scale.affected_by_invalid_scale ||
       failed_for_multiple_scale_animations) {
     // Will use the parent's maximum_to_screen_scale.
-  } else if (!animation_scale.affected_by_animation_scale) {
-    // No affecting scale animation. Calculate the current to_screen scale.
+  } else if (!node->to_screen_is_potentially_animated) {
+    // No transform animations. Calculate the current to_screen scale.
     gfx::Vector2dF to_screen_scales =
         MathUtil::ComputeTransform2dScaleComponents(
             transform_tree.ToScreen(transform_id), kInvalidScale);
     animation_scale.maximum_to_screen_scale =
         std::max(to_screen_scales.x(), to_screen_scales.y());
     return animation_scale;
-  } else if (ancestor_affected_by_animation_scale) {
-    DCHECK(!node_affected_by_animation_scale);
+  } else if (!node->has_potential_animation) {
     gfx::Vector2dF local_scales =
         MathUtil::ComputeTransform2dScaleComponents(node->local, 1.0f);
     local_maximum_scale = std::max(local_scales.x(), local_scales.y());
   } else {
-    DCHECK(node_affected_by_animation_scale);
     DCHECK_NE(node->maximum_animation_scale, kInvalidScale);
     local_maximum_scale = node->maximum_animation_scale;
   }
diff --git a/chrome/VERSION b/chrome/VERSION
index 88cf38a..edda934 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=90
 MINOR=0
-BUILD=4404
+BUILD=4406
 PATCH=0
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb
index ef1dd4d..6eeaa9a 100644
--- a/chrome/app/resources/generated_resources_en-GB.xtb
+++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -424,6 +424,7 @@
 <translation id="1465827627707997754">Pizza slice</translation>
 <translation id="1468571364034902819">Can't use this profile</translation>
 <translation id="1470084204649225129">{NUM_TABS,plural, =1{Add tab to new group}other{Add tabs to new group}}</translation>
+<translation id="1470350905258700113">Use this device</translation>
 <translation id="1470946456740188591">To turn caret browsing on or off, use the shortcut Ctrl+Search+7</translation>
 <translation id="1472675084647422956">Show more</translation>
 <translation id="1474785664565228650">The change in microphone setting requires Parallels Desktop to relaunch. Relaunch Parallels Desktop to proceed.</translation>
@@ -1399,6 +1400,7 @@
 <translation id="2541002089857695151">Optimise full-screen casting?</translation>
 <translation id="2541706104884128042">New bedtime set</translation>
 <translation id="2542050502251273923">Sets the debugging level of the network connection manager and other services using ff_debug.</translation>
+<translation id="2544292303401268586">Your administrator requested that you restart your device to update apps. This may take several minutes to complete.</translation>
 <translation id="2544853746127077729">Authentication certificate rejected by network</translation>
 <translation id="2546283357679194313">Cookies and site data</translation>
 <translation id="2548347166720081527">Allowed <ph name="PERMISSION" /></translation>
@@ -2781,6 +2783,7 @@
 <translation id="409579654357498729">Add to Cloud Print</translation>
 <translation id="4096508467498758490">Disable developer mode extensions</translation>
 <translation id="4097406557126260163">Apps and extensions</translation>
+<translation id="409742781329613461">Tips for Chrome</translation>
 <translation id="4097560579602855702">Search Google</translation>
 <translation id="4098667039111970300">Stylus tools in toolbar</translation>
 <translation id="4099060993766194518">Restore default search engine?</translation>
@@ -4095,6 +4098,7 @@
 <translation id="5678550637669481956">Read and write access to <ph name="VOLUME_NAME" /> has been granted.</translation>
 <translation id="5678955352098267522">Read your data on <ph name="WEBSITE_1" /></translation>
 <translation id="5680050361008726776">Remove '<ph name="ESIM_PROFILE_NAME" />'?</translation>
+<translation id="5683806393796685434">Please enter your activation code</translation>
 <translation id="5684181005476681636">Wi-Fi details</translation>
 <translation id="5684661240348539843">Asset Identifier</translation>
 <translation id="5687326903064479980">Time Zone</translation>
@@ -4347,6 +4351,7 @@
 <translation id="5978277834170881274">Use basic spell check</translation>
 <translation id="5979084224081478209">Check passwords</translation>
 <translation id="5979156418378918004">{NUM_EXTENSIONS,plural, =1{You turned 1 potentially harmful extension back on}other{You turned {NUM_EXTENSIONS} potentially harmful extensions back on}}</translation>
+<translation id="5979353814339191480">This option applies to Chromebooks with a data plan or mobile network dongle, or when tethering to a portable hotspot</translation>
 <translation id="5979421442488174909">&amp;Translate to <ph name="LANGUAGE" /></translation>
 <translation id="5979469435153841984">To bookmark pages, click the star in the address bar</translation>
 <translation id="5984222099446776634">Recently Visited</translation>
@@ -4827,6 +4832,7 @@
 <translation id="653659894138286600">Scan documents and images</translation>
 <translation id="6537613839935722475">The name can use letters, numbers and hyphens (-)</translation>
 <translation id="6537880577641744343">Commander</translation>
+<translation id="6538098297809675636">Error detecting code</translation>
 <translation id="654039047105555694"><ph name="BEGIN_BOLD" />Note:<ph name="END_BOLD" /> Only enable if you know what you are doing or if you have been asked to do so, as collection of data may reduce performance.</translation>
 <translation id="6541638731489116978">This site has been blocked from accessing your motion sensors.</translation>
 <translation id="6545665334409411530">Repeat rate</translation>
@@ -6025,6 +6031,7 @@
 <translation id="7904526211178107182">Make Linux ports available to other devices on your network.</translation>
 <translation id="7907837847548254634">Show a quick highlight on the focused object</translation>
 <translation id="7908378463497120834">Sorry, at least one partition on your external storage device could not be mounted.</translation>
+<translation id="7909324225945368569">Rename your profile</translation>
 <translation id="7909969815743704077">Downloaded in Incognito</translation>
 <translation id="7910768399700579500">&amp;New folder</translation>
 <translation id="7911118814695487383">Linux</translation>
@@ -6644,6 +6651,7 @@
 <translation id="8642900771896232685">2 seconds</translation>
 <translation id="8642947597466641025">Make Text Larger</translation>
 <translation id="8643443571868262066"><ph name="FILE_NAME" /> may be dangerous. Send to Google Advanced Protection for scanning?</translation>
+<translation id="8644047503904673749">{COUNT,plural, =0{No cookies}=1{1 cookie is blocked}other{# cookies are blocked}}</translation>
 <translation id="8644655801811752511">Can’t reset this security key. Try resetting the key immediately after inserting it.</translation>
 <translation id="8645354835496065562">Continue allowing sensor access</translation>
 <translation id="8645920082661222035">Predicts and warns you about dangerous events before they happen</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb
index a24d510..daed9ff 100644
--- a/chrome/app/resources/generated_resources_ru.xtb
+++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -1101,7 +1101,7 @@
 <translation id="2218019600945559112">Мышь и сенсорная панель</translation>
 <translation id="2218320521449013367">При удалении вредоносного ПО произошла ошибка.</translation>
 <translation id="2218515861914035131">Вставить как обычный текст</translation>
-<translation id="2220409419896228519">Добавляйте закладки для любимых приложений Google</translation>
+<translation id="2220409419896228519">Добавьте закладки для любимых приложений Google</translation>
 <translation id="2220529011494928058">Сообщить о проблеме</translation>
 <translation id="2220572644011485463">PIN-код или пароль</translation>
 <translation id="2221261048068091179"><ph name="FIRST_SWITCH" /> и <ph name="SECOND_SWITCH" /></translation>
@@ -5262,7 +5262,7 @@
 <translation id="7043108582968290193">Готово! Несовместимых приложений не обнаружено.</translation>
 <translation id="7044124535091449260">Подробнее о доступе для сайта…</translation>
 <translation id="7044606776288350625">Синхронизация данных</translation>
-<translation id="7047059339731138197">Выберите фон.</translation>
+<translation id="7047059339731138197">Выберите фон</translation>
 <translation id="7048024426273850086">Сеть <ph name="NETWORK_INDEX" /> из <ph name="NETWORK_COUNT" />, телефон – "<ph name="PHONE_NAME" />", оператор – <ph name="PROVIDER_NAME" />, уровень сигнала – <ph name="SIGNAL_STRENGTH" /> %, заряд батареи – <ph name="BATTERY_STATUS" /> %, подключиться</translation>
 <translation id="7049293980323620022">Сохранить файл?</translation>
 <translation id="7051943809462976355">Поиск мыши…</translation>
diff --git a/chrome/browser/ash/reset/metrics.h b/chrome/browser/ash/reset/metrics.h
index 772d5255..4c73175 100644
--- a/chrome/browser/ash/reset/metrics.h
+++ b/chrome/browser/ash/reset/metrics.h
@@ -5,7 +5,7 @@
 #ifndef CHROME_BROWSER_ASH_RESET_METRICS_H_
 #define CHROME_BROWSER_ASH_RESET_METRICS_H_
 
-namespace chromeos {
+namespace ash {
 namespace reset {
 
 enum class DialogViewType {
@@ -33,6 +33,6 @@
 };
 
 }  // namespace reset
-}  // namespace chromeos
+}  // namespace ash
 
 #endif  // CHROME_BROWSER_ASH_RESET_METRICS_H_
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index ed32ac6c..788dab4 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -195,6 +195,7 @@
 #include "chrome/grit/browser_resources.h"
 #include "chrome/grit/generated_resources.h"
 #include "chrome/installer/util/google_update_settings.h"
+#include "chromeos/components/camera_app_ui/url_constants.h"
 #include "components/autofill/core/common/autofill_switches.h"
 #include "components/blocked_content/popup_blocker.h"
 #include "components/browsing_data/content/browsing_data_helper.h"
@@ -4660,6 +4661,11 @@
     return true;
   }
 
+  if (url.DomainIs(chromeos::kChromeUICameraAppHost) &&
+      IsSystemFeatureDisabled(policy::SystemFeature::kCamera)) {
+    return true;
+  }
+
   return false;
 }
 #endif
diff --git a/chrome/browser/chrome_content_browser_client_unittest.cc b/chrome/browser/chrome_content_browser_client_unittest.cc
index 6beabb0f..1865719 100644
--- a/chrome/browser/chrome_content_browser_client_unittest.cc
+++ b/chrome/browser/chrome_content_browser_client_unittest.cc
@@ -25,6 +25,7 @@
 #include "chrome/common/webui_url_constants.h"
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
 #include "chrome/test/base/testing_profile.h"
+#include "chromeos/components/camera_app_ui/url_constants.h"
 #include "components/browsing_data/content/browsing_data_helper.h"
 #include "components/captive_portal/core/buildflags.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
@@ -528,6 +529,24 @@
   test_content_browser_client.HandleWebUI(&dest_url, &profile_);
   EXPECT_EQ(GURL(chrome::kChromeUIAppDisabledURL), dest_url);
 }
+
+TEST_F(ChromeContentSettingsRedirectTest, RedirectCameraAppURL) {
+  TestChromeContentBrowserClient test_content_browser_client;
+  const GURL camera_app_url(chromeos::kChromeUICameraAppMainURL);
+  GURL dest_url = camera_app_url;
+  test_content_browser_client.HandleWebUI(&dest_url, &profile_);
+  EXPECT_EQ(camera_app_url, dest_url);
+
+  base::Value list(base::Value::Type::LIST);
+  list.Append(policy::SystemFeature::kCamera);
+  testing_local_state_.Get()->Set(
+      policy::policy_prefs::kSystemFeaturesDisableList, std::move(list));
+
+  dest_url = camera_app_url;
+  test_content_browser_client.HandleWebUI(&dest_url, &profile_);
+  EXPECT_EQ(GURL(chrome::kChromeUIAppDisabledURL), dest_url);
+}
+
 namespace {
 constexpr char kEmail[] = "test@test.com";
 std::unique_ptr<KeyedService> CreateTestPolicyCertService(
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index 58c01e0..f682c161 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -3168,6 +3168,7 @@
       "//chromeos/dbus/chromebox_for_meetings",
       "//chromeos/services/chromebox_for_meetings/public/cpp",
       "//chromeos/services/chromebox_for_meetings/public/mojom",
+      "//components/reporting/proto:record_constants",
     ]
   }
 }
diff --git a/chrome/browser/chromeos/chromebox_for_meetings/logger/reporting_pipeline.cc b/chrome/browser/chromeos/chromebox_for_meetings/logger/reporting_pipeline.cc
index b20e820..8a7ed260 100644
--- a/chrome/browser/chromeos/chromebox_for_meetings/logger/reporting_pipeline.cc
+++ b/chrome/browser/chromeos/chromebox_for_meetings/logger/reporting_pipeline.cc
@@ -10,7 +10,7 @@
 #include "base/bind_post_task.h"
 #include "base/callback_helpers.h"
 #include "chrome/browser/policy/messaging_layer/public/report_queue_configuration.h"
-#include "record_constants.pb.h"
+#include "components/reporting/proto/record_constants.pb.h"
 
 namespace chromeos {
 namespace cfm {
diff --git a/chrome/browser/chromeos/fileapi/external_file_url_loader_factory.cc b/chrome/browser/chromeos/fileapi/external_file_url_loader_factory.cc
index 816a2f6b..dc2a9f9 100644
--- a/chrome/browser/chromeos/fileapi/external_file_url_loader_factory.cc
+++ b/chrome/browser/chromeos/fileapi/external_file_url_loader_factory.cc
@@ -274,17 +274,19 @@
     head_.content_length = size;
     isolated_file_system_scope_ = std::move(isolated_file_system_scope);
 
-    mojo::DataPipe pipe(kDefaultPipeSize);
-    if (!pipe.consumer_handle.is_valid() || !pipe.producer_handle.is_valid()) {
+    mojo::ScopedDataPipeProducerHandle producer_handle;
+    mojo::ScopedDataPipeConsumerHandle consumer_handle;
+    if (mojo::CreateDataPipe(kDefaultPipeSize, producer_handle,
+                             consumer_handle) != MOJO_RESULT_OK) {
       CompleteWithError(net::ERR_FAILED);
       return;
     }
     head_.response_start = base::TimeTicks::Now();
     client_->OnReceiveResponse(head_.Clone());
-    client_->OnStartLoadingResponseBody(std::move(pipe.consumer_handle));
+    client_->OnStartLoadingResponseBody(std::move(consumer_handle));
 
     data_producer_ = std::make_unique<FileSystemReaderDataPipeProducer>(
-        std::move(pipe.producer_handle), std::move(stream_reader), size,
+        std::move(producer_handle), std::move(stream_reader), size,
         base::BindOnce(&ExternalFileURLLoader::OnFileWritten,
                        weak_ptr_factory_.GetWeakPtr()));
     data_producer_->Write();
diff --git a/chrome/browser/chromeos/login/screens/reset_screen.cc b/chrome/browser/chromeos/login/screens/reset_screen.cc
index 00a3aff0..cc7f4429 100644
--- a/chrome/browser/chromeos/login/screens/reset_screen.cc
+++ b/chrome/browser/chromeos/login/screens/reset_screen.cc
@@ -36,6 +36,10 @@
 namespace chromeos {
 namespace {
 
+// TODO(https://crbug.com/1164001): remove after //chrome/browser/chromeos
+// source migration is finished.
+namespace reset = ::ash::reset;
+
 constexpr const char kUserActionCancelReset[] = "cancel-reset";
 constexpr const char kUserActionResetRestartPressed[] = "restart-pressed";
 constexpr const char kUserActionResetPowerwashPressed[] = "powerwash-pressed";
diff --git a/chrome/browser/devtools/devtools_sanity_browsertest.cc b/chrome/browser/devtools/devtools_sanity_browsertest.cc
index 6828ed1..388b1a6 100644
--- a/chrome/browser/devtools/devtools_sanity_browsertest.cc
+++ b/chrome/browser/devtools/devtools_sanity_browsertest.cc
@@ -1658,8 +1658,13 @@
     load_timing.push_end = base::TimeTicks::Now();
 
   params->client->OnReceiveResponse(std::move(response));
-  mojo::DataPipe pipe;  // The response's body is empty. The pipe is not filled.
-  params->client->OnStartLoadingResponseBody(std::move(pipe.consumer_handle));
+
+  // The response's body is empty. The pipe is not filled.
+  mojo::ScopedDataPipeProducerHandle producer_handle;
+  mojo::ScopedDataPipeConsumerHandle consumer_handle;
+  EXPECT_EQ(mojo::CreateDataPipe(nullptr, producer_handle, consumer_handle),
+            MOJO_RESULT_OK);
+  params->client->OnStartLoadingResponseBody(std::move(consumer_handle));
   params->client->OnComplete(network::URLLoaderCompletionStatus());
   return true;
 }
diff --git a/chrome/browser/download/notification/download_notification_browsertest.cc b/chrome/browser/download/notification/download_notification_browsertest.cc
index 3a61669..7472ca8 100644
--- a/chrome/browser/download/notification/download_notification_browsertest.cc
+++ b/chrome/browser/download/notification/download_notification_browsertest.cc
@@ -221,15 +221,19 @@
 
   static void SendBody(content::URLLoaderInterceptor::RequestParams* params,
                        std::string data) {
-    mojo::DataPipe pipe(data.size());
-    ASSERT_TRUE(pipe.producer_handle.is_valid());
+    mojo::ScopedDataPipeProducerHandle producer_handle;
+    mojo::ScopedDataPipeConsumerHandle consumer_handle;
+    ASSERT_EQ(
+        mojo::CreateDataPipe(data.size(), producer_handle, consumer_handle),
+        MOJO_RESULT_OK);
+
     uint32_t write_size = data.size();
-    MojoResult result = pipe.producer_handle->WriteData(
-        data.c_str(), &write_size, MOJO_WRITE_DATA_FLAG_NONE);
+    MojoResult result = producer_handle->WriteData(data.c_str(), &write_size,
+                                                   MOJO_WRITE_DATA_FLAG_NONE);
     ASSERT_EQ(MOJO_RESULT_OK, result);
     ASSERT_EQ(data.size(), write_size);
-    ASSERT_TRUE(pipe.consumer_handle.is_valid());
-    params->client->OnStartLoadingResponseBody(std::move(pipe.consumer_handle));
+    ASSERT_TRUE(consumer_handle.is_valid());
+    params->client->OnStartLoadingResponseBody(std::move(consumer_handle));
   }
 
   const std::map<std::string, Handler> handlers_;
diff --git a/chrome/browser/extensions/chrome_url_request_util.cc b/chrome/browser/extensions/chrome_url_request_util.cc
index f75ac134..939a308 100644
--- a/chrome/browser/extensions/chrome_url_request_util.cc
+++ b/chrome/browser/extensions/chrome_url_request_util.cc
@@ -163,8 +163,10 @@
     head->content_length = data->size();
     head->mime_type = *read_mime_type;
     DetermineCharset(head->mime_type, data.get(), &head->charset);
-    mojo::DataPipe pipe(data->size());
-    if (!pipe.consumer_handle.is_valid()) {
+    mojo::ScopedDataPipeProducerHandle producer_handle;
+    mojo::ScopedDataPipeConsumerHandle consumer_handle;
+    if (mojo::CreateDataPipe(data->size(), producer_handle, consumer_handle) !=
+        MOJO_RESULT_OK) {
       client_->OnComplete(network::URLLoaderCompletionStatus(net::ERR_FAILED));
       client_.reset();
       MaybeDeleteSelf();
@@ -178,11 +180,11 @@
                                head->mime_type.c_str());
     }
     client_->OnReceiveResponse(std::move(head));
-    client_->OnStartLoadingResponseBody(std::move(pipe.consumer_handle));
+    client_->OnStartLoadingResponseBody(std::move(consumer_handle));
 
     uint32_t write_size = data->size();
-    MojoResult result = pipe.producer_handle->WriteData(
-        data->front(), &write_size, MOJO_WRITE_DATA_FLAG_NONE);
+    MojoResult result = producer_handle->WriteData(data->front(), &write_size,
+                                                   MOJO_WRITE_DATA_FLAG_NONE);
     OnFileWritten(result);
   }
 
diff --git a/chrome/browser/offline_pages/offline_page_url_loader.cc b/chrome/browser/offline_pages/offline_page_url_loader.cc
index 4d4b2f83f..352d61e 100644
--- a/chrome/browser/offline_pages/offline_page_url_loader.cc
+++ b/chrome/browser/offline_pages/offline_page_url_loader.cc
@@ -27,7 +27,7 @@
 
 namespace {
 
-constexpr size_t kBufferSize = 4096;
+constexpr uint32_t kBufferSize = 4096;
 
 content::WebContents* GetWebContents(int frame_tree_node_id) {
   return content::WebContents::FromFrameTreeNodeId(frame_tree_node_id);
@@ -254,8 +254,9 @@
       &OfflinePageURLLoader::OnMojoDisconnect, weak_ptr_factory_.GetWeakPtr()));
   client_.Bind(std::move(client));
 
-  mojo::DataPipe pipe(kBufferSize);
-  if (!pipe.consumer_handle.is_valid()) {
+  mojo::ScopedDataPipeConsumerHandle consumer_handle;
+  if (mojo::CreateDataPipe(kBufferSize, producer_handle_, consumer_handle) !=
+      MOJO_RESULT_OK) {
     Finish(net::ERR_FAILED);
     return;
   }
@@ -283,9 +284,7 @@
   response_head->content_length = file_size;
 
   client_->OnReceiveResponse(std::move(response_head));
-  client_->OnStartLoadingResponseBody(std::move(pipe.consumer_handle));
-
-  producer_handle_ = std::move(pipe.producer_handle);
+  client_->OnStartLoadingResponseBody(std::move(consumer_handle));
 
   handle_watcher_ = std::make_unique<mojo::SimpleWatcher>(
       FROM_HERE, mojo::SimpleWatcher::ArmingPolicy::MANUAL,
diff --git a/chrome/browser/plugins/plugin_response_interceptor_url_loader_throttle.cc b/chrome/browser/plugins/plugin_response_interceptor_url_loader_throttle.cc
index e6348dc2..b8f419e2 100644
--- a/chrome/browser/plugins/plugin_response_interceptor_url_loader_throttle.cc
+++ b/chrome/browser/plugins/plugin_response_interceptor_url_loader_throttle.cc
@@ -89,13 +89,18 @@
               &PluginResponseInterceptorURLLoaderThrottle::ResumeLoad,
               weak_factory_.GetWeakPtr()));
 
-  mojo::DataPipe data_pipe(data_pipe_size);
+  mojo::ScopedDataPipeProducerHandle producer_handle;
+  mojo::ScopedDataPipeConsumerHandle consumer_handle;
+  CHECK_EQ(
+      mojo::CreateDataPipe(data_pipe_size, producer_handle, consumer_handle),
+      MOJO_RESULT_OK);
+
   uint32_t len = static_cast<uint32_t>(payload.size());
   CHECK_EQ(MOJO_RESULT_OK,
-           data_pipe.producer_handle->WriteData(
-               payload.c_str(), &len, MOJO_WRITE_DATA_FLAG_ALL_OR_NONE));
+           producer_handle->WriteData(payload.c_str(), &len,
+                                      MOJO_WRITE_DATA_FLAG_ALL_OR_NONE));
 
-  new_client->OnStartLoadingResponseBody(std::move(data_pipe.consumer_handle));
+  new_client->OnStartLoadingResponseBody(std::move(consumer_handle));
 
   network::URLLoaderCompletionStatus status(net::OK);
   status.decoded_body_length = len;
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.cc b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
index cefeba95..9c34020 100644
--- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc
+++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
@@ -2823,6 +2823,9 @@
   if (browser_context_->IsOffTheRecord() || !params_.link_url.is_valid())
     return false;
 
+  if (Profile::FromBrowserContext(browser_context_)->IsEphemeralGuestProfile())
+    return false;
+
   if (!IsURLAllowedInIncognito(params_.link_url, browser_context_))
     return false;
 
diff --git a/chrome/browser/resources/chromeos/emoji_picker/BUILD.gn b/chrome/browser/resources/chromeos/emoji_picker/BUILD.gn
index b68aefa..0bc5d86 100644
--- a/chrome/browser/resources/chromeos/emoji_picker/BUILD.gn
+++ b/chrome/browser/resources/chromeos/emoji_picker/BUILD.gn
@@ -29,6 +29,7 @@
     "index.html",
     "types.js",
     "events.js",
+    "store.js",
     "emoji_test_ordering.json",
   ]
   grdp_files = [
@@ -72,6 +73,7 @@
     ":emoji_group",
     ":emoji_group_button",
     ":events",
+    ":store",
     ":types",
     "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
     "//ui/webui/resources/js:assert.m",
@@ -109,6 +111,10 @@
 js_library("events") {
 }
 
+js_library("store") {
+  deps = [ ":types" ]
+}
+
 js_type_check("closure_compile") {
   is_polymer3 = true
   deps = [
@@ -117,6 +123,7 @@
     ":emoji_picker",
     ":events",
     ":icons",
+    ":store",
     ":types",
   ]
 }
diff --git a/chrome/browser/resources/chromeos/emoji_picker/emoji_group.js b/chrome/browser/resources/chromeos/emoji_picker/emoji_group.js
index 483295f..ca484e8 100644
--- a/chrome/browser/resources/chromeos/emoji_picker/emoji_group.js
+++ b/chrome/browser/resources/chromeos/emoji_picker/emoji_group.js
@@ -5,7 +5,7 @@
 import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {createCustomEvent, EMOJI_BUTTON_EVENT} from './events.js';
-import {EmojiGroup} from './types.js';
+import {Codepoints, EmojiGroup} from './types.js';
 
 class EmojiGroupComponent extends PolymerElement {
   static get is() {
@@ -32,6 +32,9 @@
         EMOJI_BUTTON_EVENT, {emoji: ev.path[0].textContent.trim()}));
   }
 
+  /**
+   * @param {Codepoints} codepoints
+   */
   _renderEmoji(codepoints) {
     return String.fromCodePoint(...codepoints);
   }
diff --git a/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.html b/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.html
index 30dd778..dae29ef1 100644
--- a/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.html
+++ b/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.html
@@ -46,7 +46,9 @@
       whereas the other groups are created from the emoji metadata.
     -->
     <div id="group-history">
-      <emoji-group data="[[history]]"></emoji-group>
+      <template is="dom-if" if="[[history.emoji.length]]">
+        <emoji-group data="[[history]]"></emoji-group>
+      </template>
     </div>
     <template is="dom-repeat" items="[[emojiData]]">
       <div id="group-[[index]]">
diff --git a/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.js b/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.js
index 813b21f..b16cb50d 100644
--- a/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.js
+++ b/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.js
@@ -5,14 +5,14 @@
 import './icons.js';
 import './emoji_group.js';
 import './emoji_group_button.js';
-
 import 'chrome://resources/cr_elements/cr_icons_css.m.js';
 
 import {assert} from 'chrome://resources/js/assert.m.js';
 import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {createCustomEvent, DATA_LOADED_EVENT, EMOJI_BUTTON_EVENT, GROUP_BUTTON_EVENT} from './events.js';
-import {EmojiData, EmojiGroup} from './types.js';
+import {RecentEmojiStore} from './store.js';
+import {Codepoints, Emoji, EmojiData, EmojiGroup} from './types.js';
 
 const EMOJI_ORDERING_JSON = '/emoji_13_1_ordering.json';
 
@@ -29,6 +29,17 @@
   {icon: 'emoji_picker:flag', group: '8', active: false},
 ];
 
+/**
+ * Constructs the emoji group data structure from a given list of emoji
+ * strings. Note: returned emoji have no variants.
+ *
+ * @param {!Array<Codepoints>} recentEmoji list of recently used emoji strings.
+ * @return {!Array<!Emoji>} list of emoji data structures
+ */
+function makeRecentlyUsed(recentEmoji) {
+  return recentEmoji.map(emoji => ({base: emoji, alternates: []}));
+}
+
 export class EmojiPicker extends PolymerElement {
   static get is() {
     return 'emoji-picker';
@@ -56,22 +67,13 @@
   constructor() {
     super();
 
+    this.recentEmojiStore = new RecentEmojiStore();
+
     this.groups = GROUP_TABS;
     this.emojiData = [];
-    // TODO(https://crbug.com/1164828): replace placeholder frequently used
-    // data.
     this.history = {
       'group': 'Recently Used',
-      'emoji': [
-        {
-          'base': [128512],
-          'alternates': [],
-        },
-        {
-          'base': [128513],
-          'alternates': [],
-        },
-      ],
+      'emoji': makeRecentlyUsed(this.recentEmojiStore.data),
     };
     this.search = '';
   }
@@ -114,6 +116,9 @@
    */
   insertEmoji(emoji) {
     chrome.send('insertEmoji', [emoji]);
+    this.recentEmojiStore.bumpEmoji(emoji);
+    this.set(
+        ['history', 'emoji'], makeRecentlyUsed(this.recentEmojiStore.data));
   }
 
   _formatEmojiData(emojiData) {
diff --git a/chrome/browser/resources/chromeos/emoji_picker/store.js b/chrome/browser/resources/chromeos/emoji_picker/store.js
new file mode 100644
index 0000000..0f9aebb
--- /dev/null
+++ b/chrome/browser/resources/chromeos/emoji_picker/store.js
@@ -0,0 +1,63 @@
+// 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 {Codepoints} from './types.js';
+
+const LOCALSTORAGE_KEY = 'emoji-recently-used';
+const MAX_RECENTS = 14;
+
+/**
+ * Recently used emoji, most recent first. Each emoji is stored as an array
+ * of codepoints.
+ * @typedef {!Array<Codepoints>}
+ */
+let RecentlyUsedEmoji;
+
+/**
+ * @return {RecentlyUsedEmoji} recently used emoji, most recent first.
+ */
+function load() {
+  const stored = window.localStorage.getItem(LOCALSTORAGE_KEY);
+  if (!stored) {
+    return [];
+  }
+  return /** @type {?} */ (JSON.parse(stored));
+}
+
+/**
+ * @param {RecentlyUsedEmoji} data recently used emoji, most recent first.
+ */
+function save(data) {
+  window.localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(data));
+}
+
+export class RecentEmojiStore {
+  constructor() {
+    this.data = load();
+  }
+
+  /**
+   * Moves the given emoji to the front of the MRU list, inserting it if
+   * it did not previously exist.
+   * @param {!string} newEmoji most recently used emoji.
+   */
+  bumpEmoji(newEmoji) {
+    // find and remove newEmoji from array if it previously existed.
+    const oldIndex =
+        this.data.findIndex(x => String.fromCodePoint(...x) === newEmoji);
+    if (oldIndex !== -1) {
+      this.data.splice(oldIndex, 1);
+    }
+    // insert newEmoji's codepoints to front of array.
+    // first, split newEmoji into an array of strings where each string is
+    // one codepoint. then, convert each codepoint to its numerical value.
+    this.data.unshift([...newEmoji].map(x => x.codePointAt(0)));
+    // slice from end of array if it exceeds MAX_RECENTS.
+    if (this.data.length > MAX_RECENTS) {
+      // setting length is sufficient to truncate an array.
+      this.data.length = MAX_RECENTS;
+    }
+    save(this.data);
+  }
+}
diff --git a/chrome/browser/resources/chromeos/emoji_picker/types.js b/chrome/browser/resources/chromeos/emoji_picker/types.js
index ecff78e9..7b768da4 100644
--- a/chrome/browser/resources/chromeos/emoji_picker/types.js
+++ b/chrome/browser/resources/chromeos/emoji_picker/types.js
@@ -3,7 +3,12 @@
 // found in the LICENSE file.
 
 /**
- * @typedef {{base: number, alternates: Array<Array<number>>}}
+ * @typedef {!Array<!number>}
+ */
+export let Codepoints;
+
+/**
+ * @typedef {{base: Codepoints, alternates: !Array<Codepoints>}}
  */
 export let Emoji;
 
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
index a7a8cec2..18455b20 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
@@ -730,6 +730,7 @@
 <translation id="6122831415929794347">Turn off Safe Browsing?</translation>
 <translation id="6127379762771434464">Item removed</translation>
 <translation id="6137022273846704445"><ph name="APP_NAME" />’s language</translation>
+<translation id="6138832295072039549">Change your site settings here</translation>
 <translation id="6140709049082532940">Enhanced protection:</translation>
 <translation id="6140912465461743537">Country/Region</translation>
 <translation id="614940544461990577">Try:</translation>
diff --git a/chrome/browser/ui/browser_commands.cc b/chrome/browser/ui/browser_commands.cc
index 0a136730..b2374b3e 100644
--- a/chrome/browser/ui/browser_commands.cc
+++ b/chrome/browser/ui/browser_commands.cc
@@ -447,6 +447,10 @@
 }
 
 Browser* OpenEmptyWindow(Profile* profile) {
+  if (Browser::GetCreationStatusForProfile(profile) !=
+      Browser::CreationStatus::kOk) {
+    return nullptr;
+  }
   Browser* browser = Browser::Create(
       Browser::CreateParams(Browser::TYPE_NORMAL, profile, true));
   AddTabAt(browser, GURL(), -1, true);
diff --git a/chrome/browser/ui/browser_commands.h b/chrome/browser/ui/browser_commands.h
index 1cd6219..8375445 100644
--- a/chrome/browser/ui/browser_commands.h
+++ b/chrome/browser/ui/browser_commands.h
@@ -52,6 +52,7 @@
 
 // Opens a new window with the default blank tab. This bypasses metrics and
 // various internal bookkeeping; NewEmptyWindow (above) is preferred.
+// Returns nullptr if browser creation is not possible.
 Browser* OpenEmptyWindow(Profile* profile);
 
 // Opens a new window with the tabs from |profile|'s TabRestoreService.
diff --git a/chrome/browser/ui/webui/ntp/ntp_resource_cache.cc b/chrome/browser/ui/webui/ntp/ntp_resource_cache.cc
index 9cc2833..54a952c 100644
--- a/chrome/browser/ui/webui/ntp/ntp_resource_cache.cc
+++ b/chrome/browser/ui/webui/ntp/ntp_resource_cache.cc
@@ -44,6 +44,7 @@
 #include "components/policy/core/common/policy_service.h"
 #include "components/policy/policy_constants.h"
 #include "components/prefs/pref_service.h"
+#include "components/reading_list/features/reading_list_switches.h"
 #include "components/strings/grit/components_strings.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/notification_service.h"
@@ -306,7 +307,9 @@
           profile_->GetAllOffTheRecordProfiles()[0]);
 
   replacements["incognitoTabDescription"] =
-      l10n_util::GetStringUTF8(IDS_NEW_TAB_OTR_SUBTITLE);
+      l10n_util::GetStringUTF8(reading_list::switches::IsReadingListEnabled()
+                                   ? IDS_NEW_TAB_OTR_SUBTITLE_WITH_READING_LIST
+                                   : IDS_NEW_TAB_OTR_SUBTITLE);
   replacements["incognitoTabHeading"] =
       l10n_util::GetStringUTF8(IDS_NEW_TAB_OTR_TITLE);
   replacements["incognitoTabWarning"] =
diff --git a/chrome/browser/ui/webui/settings/reset_settings_handler.cc b/chrome/browser/ui/webui/settings/reset_settings_handler.cc
index bcb312b..7f63fe9 100644
--- a/chrome/browser/ui/webui/settings/reset_settings_handler.cc
+++ b/chrome/browser/ui/webui/settings/reset_settings_handler.cc
@@ -304,8 +304,8 @@
      const base::ListValue* args) {
   UMA_HISTOGRAM_ENUMERATION(
       "Reset.ChromeOS.PowerwashDialogShown",
-      chromeos::reset::DialogViewType::kFromOptions,
-      chromeos::reset::DialogViewType::kCount);
+      ash::reset::DialogViewType::kFromOptions,
+      ash::reset::DialogViewType::kCount);
 }
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt
index 832e7198..23e09ca5 100644
--- a/chrome/build/linux.pgo.txt
+++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@
-chrome-linux-master-1611981053-953d34bbc0eb9ae706fe41033a14ec20d3caeac5.profdata
+chrome-linux-master-1612137494-cded536caff9d01ac1835dd55c669c59d578e24b.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt
index 4d6437d9..99dff6b2 100644
--- a/chrome/build/mac.pgo.txt
+++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@
-chrome-mac-master-1611981053-3dc7fb00a743418c187713d6f8856fe9d8c1ccb7.profdata
+chrome-mac-master-1612137494-0a2ece1f87e6a27e7b4f415cb3a2d66eae4a3d7f.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt
index b5d5874..803405e3a 100644
--- a/chrome/build/win32.pgo.txt
+++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@
-chrome-win32-master-1611964758-ff8f0736fcffd7d9ae05060c277b8d9085cb0fe5.profdata
+chrome-win32-master-1612137494-8950a727092eac823a194e54fd2c106357d34e54.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt
index 5eb7324..3e9cc3e9 100644
--- a/chrome/build/win64.pgo.txt
+++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@
-chrome-win64-master-1611964758-6e9aa8357def8176e90e48c13fde39b26e4a38cf.profdata
+chrome-win64-master-1612137494-3e8b5d5bb5f2180f5f4ce3ce83942a5f436395e4.profdata
diff --git a/chrome/test/data/webui/chromeos/emoji_picker/BUILD.gn b/chrome/test/data/webui/chromeos/emoji_picker/BUILD.gn
index 124e7749..4344ade 100644
--- a/chrome/test/data/webui/chromeos/emoji_picker/BUILD.gn
+++ b/chrome/test/data/webui/chromeos/emoji_picker/BUILD.gn
@@ -11,13 +11,24 @@
                     "js_module_root=../../chrome/test/data/webui/",
                     "js_module_root=./gen/chrome/test/data/webui/",
                   ]
-  deps = [ ":emoji_picker_test" ]
+  deps = [
+    ":emoji_picker_store_test",
+    ":emoji_picker_test",
+  ]
 }
 
 js_library("emoji_picker_test") {
   deps = [
     "//chrome/browser/resources/chromeos/emoji_picker:emoji_picker",
-    "//chrome/browser/resources/chromeos/emoji_picker:emoji_picker",
+    "//ui/webui/resources/js:assert.m",
+  ]
+  externs_list = [ "$externs_path/mocha-2.5.js" ]
+}
+
+js_library("emoji_picker_store_test") {
+  deps = [
+    "//chrome/browser/resources/chromeos/emoji_picker:store",
+    "//chrome/test/data/webui:chai_assert",
     "//ui/webui/resources/js:assert.m",
   ]
   externs_list = [ "$externs_path/mocha-2.5.js" ]
diff --git a/chrome/test/data/webui/chromeos/emoji_picker/emoji_picker_browsertest.js b/chrome/test/data/webui/chromeos/emoji_picker/emoji_picker_browsertest.js
index 1e42450..80f92cb 100644
--- a/chrome/test/data/webui/chromeos/emoji_picker/emoji_picker_browsertest.js
+++ b/chrome/test/data/webui/chromeos/emoji_picker/emoji_picker_browsertest.js
@@ -13,6 +13,7 @@
 GEN('#include "content/public/test/browser_test.h"');
 GEN('#include "chromeos/constants/chromeos_features.h"');
 
+// This file bootstraps the other tests written in Javascript.
 class EmojiPickerBrowserTest extends PolymerTest {
   /** @override */
   get browsePreload() {
@@ -25,8 +26,7 @@
   }
 }
 
-// this browser test bootstraps the other tests written in javascript.
-
+// Tests behaviour of <emoji-picker> component.
 var EmojiPickerMainTest = class extends EmojiPickerBrowserTest {
   /** @override */
   get browsePreload() {
@@ -35,7 +35,19 @@
   }
 };
 
-
 TEST_F('EmojiPickerMainTest', 'All', function() {
   mocha.run();
+});
+
+// Tests functionality of recently used storage.
+var EmojiPickerStoreTest = class extends EmojiPickerBrowserTest {
+  /** @override */
+  get browsePreload() {
+    return 'chrome://emoji-picker/test_loader.html?module=' +
+        'chromeos/emoji_picker/emoji_picker_store_test.js';
+  }
+};
+
+TEST_F('EmojiPickerStoreTest', 'All', function() {
+  mocha.run();
 });
\ No newline at end of file
diff --git a/chrome/test/data/webui/chromeos/emoji_picker/emoji_picker_store_test.js b/chrome/test/data/webui/chromeos/emoji_picker/emoji_picker_store_test.js
new file mode 100644
index 0000000..1d0a88a
--- /dev/null
+++ b/chrome/test/data/webui/chromeos/emoji_picker/emoji_picker_store_test.js
@@ -0,0 +1,55 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import {RecentEmojiStore} from 'chrome://emoji-picker/store.js';
+import {assert} from 'chrome://resources/js/assert.m.js';
+
+import {assertDeepEquals} from '../../chai_assert.js';
+
+const TEST_EMOJI = {
+  waving: {string: '👋', codepoints: [128075]},
+  grin: {string: '😀', codepoints: [128512]},
+};
+
+suite('RecentEmojiStore', () => {
+  let store;
+
+  setup(() => {
+    window.localStorage.clear();
+    store = new RecentEmojiStore();
+  });
+
+  test('store should be initially empty', () => {
+    assert(store.data.length === 0);
+  });
+
+  test('store data should be persisted', () => {
+    store.bumpEmoji(TEST_EMOJI.grin.string);
+
+    const newStore = new RecentEmojiStore();
+    assertDeepEquals(store.data, newStore.data);
+  });
+
+  test('one emoji in recently used', () => {
+    store.bumpEmoji(TEST_EMOJI.grin.string);
+    assertDeepEquals([TEST_EMOJI.grin.codepoints], store.data);
+
+    store.bumpEmoji(TEST_EMOJI.grin.string);
+    assertDeepEquals(
+        [TEST_EMOJI.grin.codepoints], store.data,
+        'clicking an existing emoji should not duplicate it');
+  });
+
+  test('two emoji in recently used', () => {
+    store.bumpEmoji(TEST_EMOJI.grin.string);
+    store.bumpEmoji(TEST_EMOJI.waving.string);
+    assertDeepEquals(
+        [TEST_EMOJI.waving.codepoints, TEST_EMOJI.grin.codepoints], store.data);
+
+    store.bumpEmoji(TEST_EMOJI.grin.string);
+    assertDeepEquals(
+        [TEST_EMOJI.grin.codepoints, TEST_EMOJI.waving.codepoints], store.data,
+        'clicking an existing emoji should move it to the front');
+  });
+});
diff --git a/chrome/test/data/webui/chromeos/emoji_picker/emoji_picker_test.js b/chrome/test/data/webui/chromeos/emoji_picker/emoji_picker_test.js
index 69dba04..f477079 100644
--- a/chrome/test/data/webui/chromeos/emoji_picker/emoji_picker_test.js
+++ b/chrome/test/data/webui/chromeos/emoji_picker/emoji_picker_test.js
@@ -8,7 +8,7 @@
 import {assert} from 'chrome://resources/js/assert.m.js';
 import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
-import {deepQuerySelector} from './emoji_picker_test_util.js';
+import {deepQuerySelector, timeout, waitForCondition} from './emoji_picker_test_util.js';
 
 const ACTIVE_CLASS = 'emoji-group-active';
 
@@ -21,6 +21,7 @@
   return element ? element.classList.contains(ACTIVE_CLASS) : false;
 }
 
+
 suite('<emoji-picker>', () => {
   /** @type {!EmojiPicker} */
   let emojiPicker;
@@ -30,6 +31,8 @@
   setup(() => {
     // Reset DOM state.
     document.body.innerHTML = '';
+    window.localStorage.clear();
+
     emojiPicker =
         /** @type {!EmojiPicker} */ (document.createElement('emoji-picker'));
     emojiPicker.emojiDataUrl = '/emoji_test_ordering.json';
@@ -68,4 +71,25 @@
     assert(isGroupButtonActive(secondButton));
     assert(!isGroupButtonActive(firstButton));
   });
+
+  test('recently used should be hidden when empty', () => {
+    const recentlyUsed = findInEmojiPicker(['#group-history > emoji-group']);
+    assert(!recentlyUsed);
+  });
+
+  test('recently used should be populated after emoji is clicked', async () => {
+    // yield to allow emoji-group and emoji buttons to render.
+    const emojiButton = await waitForCondition(
+        () => findInEmojiPicker(
+            ['#group-0 > emoji-group', '.emoji-group-emoji', 'button']));
+    emojiButton.click();
+
+    // wait until emoji exists in recently used section.
+    const recentlyUsed = await waitForCondition(
+        () => findInEmojiPicker(['#group-history > emoji-group', 'button']));
+
+    // check text is correct.
+    const recentText = recentlyUsed.innerText;
+    assert(recentText.includes(String.fromCodePoint(128512)));
+  });
 });
diff --git a/chrome/test/data/webui/chromeos/emoji_picker/emoji_picker_test_util.js b/chrome/test/data/webui/chromeos/emoji_picker/emoji_picker_test_util.js
index 2dddcd46..304f92af 100644
--- a/chrome/test/data/webui/chromeos/emoji_picker/emoji_picker_test_util.js
+++ b/chrome/test/data/webui/chromeos/emoji_picker/emoji_picker_test_util.js
@@ -31,3 +31,29 @@
 
   return el;
 }
+
+/**
+ * Constructs a promise which resolves when the given condition function
+ * evaluates to a truthy value.
+ * @param {!function(): T} condition condition function to check.
+ * @param {number=} interval polling interval in milliseconds.
+ * @return {!Promise<T>} promise resolving to truthy return value of condition.
+ * @template T return type of condition function.
+ */
+export async function waitForCondition(condition, interval = 10) {
+  /** @type {T} */
+  let result;
+  while (!(result = condition())) {
+    await timeout(interval);
+  }
+  return result;
+}
+
+/**
+ * Constructs a promise which resolves after the given amount of time.
+ * @param {!number} ms timeout in milliseconds.
+ * @return {!Promise} timeout promise.
+ */
+export function timeout(ms) {
+  return new Promise(resolve => setTimeout(resolve, ms));
+}
diff --git a/chrome/test/ppapi/ppapi_browsertest.cc b/chrome/test/ppapi/ppapi_browsertest.cc
index 2cd6fed..50791f1 100644
--- a/chrome/test/ppapi/ppapi_browsertest.cc
+++ b/chrome/test/ppapi/ppapi_browsertest.cc
@@ -402,15 +402,19 @@
       return;
     }
 
-    mojo::DataPipe send_pipe;
-    mojo::DataPipe receive_pipe;
+    mojo::ScopedDataPipeProducerHandle send_producer_handle;
+    EXPECT_EQ(
+        mojo::CreateDataPipe(nullptr, send_producer_handle, send_pipe_handle_),
+        MOJO_RESULT_OK);
 
-    receive_pipe_handle_ = std::move(receive_pipe.producer_handle);
-    send_pipe_handle_ = std::move(send_pipe.consumer_handle);
+    mojo::ScopedDataPipeConsumerHandle receive_consumer_handle;
+    EXPECT_EQ(mojo::CreateDataPipe(nullptr, receive_pipe_handle_,
+                                   receive_consumer_handle),
+              MOJO_RESULT_OK);
 
     std::move(callback).Run(net::OK, LocalAddress(), RemoteAddress(),
-                            std::move(receive_pipe.consumer_handle),
-                            std::move(send_pipe.producer_handle));
+                            std::move(receive_consumer_handle),
+                            std::move(send_producer_handle));
     ClosePipeIfNeeded();
   }
 
@@ -435,16 +439,19 @@
       return;
     }
 
-    mojo::DataPipe send_pipe;
-    mojo::DataPipe receive_pipe;
+    mojo::ScopedDataPipeProducerHandle send_producer_handle;
+    EXPECT_EQ(
+        mojo::CreateDataPipe(nullptr, send_producer_handle, send_pipe_handle_),
+        MOJO_RESULT_OK);
 
-    receive_pipe_handle_ = std::move(receive_pipe.producer_handle);
-    send_pipe_handle_ = std::move(send_pipe.consumer_handle);
+    mojo::ScopedDataPipeConsumerHandle receive_consumer_handle;
+    EXPECT_EQ(mojo::CreateDataPipe(nullptr, receive_pipe_handle_,
+                                   receive_consumer_handle),
+              MOJO_RESULT_OK);
 
-    std::move(callback).Run(net::OK, RemoteAddress(),
-                            receiver_.BindNewPipeAndPassRemote(),
-                            std::move(receive_pipe.consumer_handle),
-                            std::move(send_pipe.producer_handle));
+    std::move(callback).Run(
+        net::OK, RemoteAddress(), receiver_.BindNewPipeAndPassRemote(),
+        std::move(receive_consumer_handle), std::move(send_producer_handle));
     ClosePipeIfNeeded();
   }
 
@@ -487,14 +494,18 @@
     // that use a real NetworkContext already make sure that the class correctly
     // closes the sockets when upgrading.
 
-    mojo::DataPipe send_pipe;
-    mojo::DataPipe receive_pipe;
-    receive_pipe_handle_ = std::move(receive_pipe.producer_handle);
-    send_pipe_handle_ = std::move(send_pipe.consumer_handle);
+    mojo::ScopedDataPipeProducerHandle send_producer_handle;
+    EXPECT_EQ(
+        mojo::CreateDataPipe(nullptr, send_producer_handle, send_pipe_handle_),
+        MOJO_RESULT_OK);
 
-    std::move(callback).Run(net::OK, std::move(receive_pipe.consumer_handle),
-                            std::move(send_pipe.producer_handle),
-                            net::SSLInfo());
+    mojo::ScopedDataPipeConsumerHandle receive_consumer_handle;
+    EXPECT_EQ(mojo::CreateDataPipe(nullptr, receive_pipe_handle_,
+                                   receive_consumer_handle),
+              MOJO_RESULT_OK);
+
+    std::move(callback).Run(net::OK, std::move(receive_consumer_handle),
+                            std::move(send_producer_handle), net::SSLInfo());
 
     if (tcp_failure_type_ == TCPFailureType::kSSLWriteClosePipe) {
       observer_.reset();
diff --git a/chromeos/components/camera_app_ui/resources/tsconfig.json b/chromeos/components/camera_app_ui/resources/tsconfig.json
new file mode 100644
index 0000000..ea17e02
--- /dev/null
+++ b/chromeos/components/camera_app_ui/resources/tsconfig.json
@@ -0,0 +1,9 @@
+{
+  "compilerOptions": {
+    "allowJs": true,
+    "checkJs": true,
+    "noEmit": true,
+    "target": "esnext"
+  },
+  "files": ["js/main.js"]
+}
diff --git a/chromeos/strings/chromeos_strings_en-GB.xtb b/chromeos/strings/chromeos_strings_en-GB.xtb
index 06170c07..4c7fe02 100644
--- a/chromeos/strings/chromeos_strings_en-GB.xtb
+++ b/chromeos/strings/chromeos_strings_en-GB.xtb
@@ -62,6 +62,7 @@
 <translation id="2338501278241028356">Turn on Bluetooth to discover nearby devices</translation>
 <translation id="2364498172489649528">Passed</translation>
 <translation id="2391082728065870591">Send feedback report</translation>
+<translation id="2418150275289244458">Open in settings</translation>
 <translation id="2446553403094072641">Floating point accuracy</translation>
 <translation id="2448312741937722512">Types</translation>
 <translation id="2461822463642141190">Current</translation>
@@ -273,6 +274,7 @@
 <translation id="7177485034254901881">This <ph name="DEVICE_TYPE" /> is managed by <ph name="MANAGER" />. Administrators may remotely configure the device.</translation>
 <translation id="7216409898977639127">Mobile provider</translation>
 <translation id="7274587244503383581"><ph name="PRINTED_PAGES_NUMBER" />/<ph name="TOTAL_PAGES_NUMBER" /></translation>
+<translation id="7343649194310845056">Network devices</translation>
 <translation id="7359657277149375382">File type</translation>
 <translation id="7375053625150546623">EAP</translation>
 <translation id="7427315641433634153">MSCHAP</translation>
@@ -282,6 +284,7 @@
 <translation id="7490813197707563893">MAC address</translation>
 <translation id="7497215489070763236">Server CA certificate</translation>
 <translation id="7502658306369382406">IPv6 address</translation>
+<translation id="7550715992156305117">Diagnostic routines</translation>
 <translation id="7561454561030345039">This action is managed by your administrator</translation>
 <translation id="7569444139234840525"><ph name="QUERY_TEXT" /> · /<ph name="PHONETICS" />/</translation>
 <translation id="7595982850646262331"><ph name="TIME_VALUE" /> left</translation>
diff --git a/components/metrics/structured/BUILD.gn b/components/metrics/structured/BUILD.gn
index 0408de8..b5781c6 100644
--- a/components/metrics/structured/BUILD.gn
+++ b/components/metrics/structured/BUILD.gn
@@ -32,16 +32,16 @@
   ]
 }
 
-# TODO(crbug.com/1112471): Get this to run cleanly under Python 3.
-python2_action("gen_structured_events") {
+action("gen_structured_events") {
   script = "//tools/metrics/structured/gen_events.py"
 
   # Re-generate the outputs if the codegen code changes:
   inputs = [
     "//tools/metrics/structured/codegen.py",
-    "//tools/metrics/structured/compile_time_validation.py",
-    "//tools/metrics/structured/events_template.py",
     "//tools/metrics/structured/gen_events.py",
+    "//tools/metrics/structured/model.py",
+    "//tools/metrics/structured/model_util.py",
+    "//tools/metrics/structured/templates.py",
   ]
   sources = [ "//tools/metrics/structured/structured.xml" ]
 
diff --git a/components/metrics/structured/structured_metrics_provider_unittest.cc b/components/metrics/structured/structured_metrics_provider_unittest.cc
index 914cd0a4..218a8de 100644
--- a/components/metrics/structured/structured_metrics_provider_unittest.cc
+++ b/components/metrics/structured/structured_metrics_provider_unittest.cc
@@ -59,12 +59,12 @@
   }
 })";
 
-// The name hash of "TestEventOne".
-constexpr uint64_t kEventOneHash = UINT64_C(15619026293081468407);
-// The name hash of "TestEventTwo".
-constexpr uint64_t kEventTwoHash = UINT64_C(15791833939776536363);
-// The name hash of "TestEventThree".
-constexpr uint64_t kEventThreeHash = UINT64_C(16464330721839207086);
+// The name hash of "chrome::TestProjectOne::TestEventOne".
+constexpr uint64_t kEventOneHash = UINT64_C(13593049295042080097);
+// The name hash of "chrome::TestProjectTwo::TestEventTwo".
+constexpr uint64_t kEventTwoHash = UINT64_C(8995967733561999410);
+// The name hash of "chrome::TestProjectTwo::TestEventThree".
+constexpr uint64_t kEventThreeHash = UINT64_C(5848687377041124372);
 
 // The name hash of "TestMetricOne".
 constexpr uint64_t kMetricOneHash = UINT64_C(637929385654885975);
diff --git a/components/page_load_metrics/browser/observers/prerender_page_load_metrics_observer.cc b/components/page_load_metrics/browser/observers/prerender_page_load_metrics_observer.cc
index 8b7c369..b92e75d0 100644
--- a/components/page_load_metrics/browser/observers/prerender_page_load_metrics_observer.cc
+++ b/components/page_load_metrics/browser/observers/prerender_page_load_metrics_observer.cc
@@ -8,6 +8,24 @@
 #include "content/public/browser/web_contents.h"
 #include "third_party/blink/public/mojom/web_feature/web_feature.mojom.h"
 
+namespace {
+
+// The purpose of this observer is to estimate how many prerendering pages will
+// use certain features. The plan for prerendering is to delay loading of
+// cross-origin iframes, so we want to ignore feature uses inside cross-origin
+// iframes.  To do this, just check if the |url| is cross-origin to
+// |first_party_url|. This may not be an accurate count if a third-party
+// subframe embeds a first-party subframe, or if there is a way for a frame to
+// access cross-origin storage, but it's probably not significant.
+//
+// This check is somewhat heavy so it should be done after cheaper early
+// returns.
+bool IsFirstParty(const GURL& url, const GURL& first_party_url) {
+  return url::IsSameOriginWith(url, first_party_url);
+}
+
+}  // namespace
+
 void PrerenderPageLoadMetricsObserver::OnFirstContentfulPaintInPage(
     const page_load_metrics::mojom::PageLoadTiming& timing) {
   did_fcp_ = true;
@@ -18,24 +36,37 @@
     const GURL& first_party_url,
     bool blocked_by_policy,
     page_load_metrics::StorageType access_type) {
-  if (access_type != page_load_metrics::StorageType::kLocalStorage ||
-      did_local_storage_)
-    return;
+  // TODO(falken): Account for `blocked_by_policy`?
 
-  // The purpose of this observer is to estimate how many prerendering pages
-  // will use certain features. The plan for prerendering is to delay loading
-  // of cross-origin iframes, so we want to ignore feature uses inside
-  // cross-origin iframes. To do this, just check if the |url| is cross-origin
-  // to |first_party_url|. This may not be an accurate count if a third-party
-  // subframe embeds a first-party subframe, or if there is a way for a frame
-  // to access cross-origin storage, but it's probably not significant.
-  if (!url::IsSameOriginWith(url, first_party_url))
-    return;
+  switch (access_type) {
+    case page_load_metrics::StorageType::kLocalStorage:
+      if (did_local_storage_)
+        return;
+      if (!IsFirstParty(url, first_party_url))
+        return;
 
-  did_local_storage_ = true;
-  RecordFeatureUse(
-      did_fcp_ ? blink::mojom::WebFeature::kLocalStorageFirstUsedAfterFcp
-               : blink::mojom::WebFeature::kLocalStorageFirstUsedBeforeFcp);
+      did_local_storage_ = true;
+      RecordFeatureUse(
+          did_fcp_ ? blink::mojom::WebFeature::kLocalStorageFirstUsedAfterFcp
+                   : blink::mojom::WebFeature::kLocalStorageFirstUsedBeforeFcp);
+      break;
+    case page_load_metrics::StorageType::kSessionStorage:
+      if (did_session_storage_)
+        return;
+      if (!IsFirstParty(url, first_party_url))
+        return;
+
+      did_session_storage_ = true;
+      RecordFeatureUse(
+          did_fcp_
+              ? blink::mojom::WebFeature::kSessionStorageFirstUsedAfterFcp
+              : blink::mojom::WebFeature::kSessionStorageFirstUsedBeforeFcp);
+      break;
+    case page_load_metrics::StorageType::kFileSystem:
+    case page_load_metrics::StorageType::kIndexedDb:
+    case page_load_metrics::StorageType::kCacheStorage:
+      return;
+  }
 }
 
 void PrerenderPageLoadMetricsObserver::RecordFeatureUse(
diff --git a/components/page_load_metrics/browser/observers/prerender_page_load_metrics_observer.h b/components/page_load_metrics/browser/observers/prerender_page_load_metrics_observer.h
index ee6b087..223640d 100644
--- a/components/page_load_metrics/browser/observers/prerender_page_load_metrics_observer.h
+++ b/components/page_load_metrics/browser/observers/prerender_page_load_metrics_observer.h
@@ -35,6 +35,7 @@
 
   bool did_fcp_ = false;
   bool did_local_storage_ = false;
+  bool did_session_storage_ = false;
 };
 
 #endif  // COMPONENTS_PAGE_LOAD_METRICS_BROWSER_OBSERVERS_PRERENDER_PAGE_LOAD_METRICS_OBSERVER_H_
diff --git a/components/page_load_metrics/browser/observers/prerender_page_load_metrics_observer_unittest.cc b/components/page_load_metrics/browser/observers/prerender_page_load_metrics_observer_unittest.cc
index ba6455cf..b82e1ac 100644
--- a/components/page_load_metrics/browser/observers/prerender_page_load_metrics_observer_unittest.cc
+++ b/components/page_load_metrics/browser/observers/prerender_page_load_metrics_observer_unittest.cc
@@ -60,6 +60,20 @@
         static_cast<base::Histogram::Sample>(
             blink::mojom::WebFeature::kLocalStorageFirstUsedAfterFcp));
   }
+
+  int GetSessionStorageBeforeFcpCount() {
+    return tester()->histogram_tester().GetBucketCount(
+        kFeaturesHistogramName,
+        static_cast<base::Histogram::Sample>(
+            blink::mojom::WebFeature::kSessionStorageFirstUsedBeforeFcp));
+  }
+
+  int GetSessionStorageAfterFcpCount() {
+    return tester()->histogram_tester().GetBucketCount(
+        kFeaturesHistogramName,
+        static_cast<base::Histogram::Sample>(
+            blink::mojom::WebFeature::kSessionStorageFirstUsedAfterFcp));
+  }
 };
 
 TEST_F(PrerenderPageLoadMetricsObserverTest, NoLocalStorage) {
@@ -115,10 +129,92 @@
       GURL(kOtherOriginUrl), GURL(kDefaultTestUrl), false,
       page_load_metrics::StorageType::kLocalStorage);
 
-  // Cross-origin local storage is not logged.
+  // Cross-origin storage is not logged.
   EXPECT_EQ(GetPageVisits(), 1);
   EXPECT_EQ(GetLocalStorageBeforeFcpCount(), 0);
   EXPECT_EQ(GetLocalStorageAfterFcpCount(), 0);
 }
 
+TEST_F(PrerenderPageLoadMetricsObserverTest, NoSessionStorage) {
+  NavigateAndCommit(GURL(kDefaultTestUrl));
+
+  EXPECT_EQ(GetPageVisits(), 1);
+  EXPECT_EQ(GetSessionStorageBeforeFcpCount(), 0);
+  EXPECT_EQ(GetSessionStorageAfterFcpCount(), 0);
+}
+
+TEST_F(PrerenderPageLoadMetricsObserverTest, SessionStorageBeforeFcp) {
+  NavigateAndCommit(GURL(kDefaultTestUrl));
+
+  // Access session storage.
+  tester()->SimulateStorageAccess(
+      GURL(kDefaultTestUrl), GURL(kDefaultTestUrl), false,
+      page_load_metrics::StorageType::kSessionStorage);
+
+  // Reach FCP.
+  SimulateFirstContentfulPaint();
+
+  // Access session storage again.
+  tester()->SimulateStorageAccess(
+      GURL(kDefaultTestUrl), GURL(kDefaultTestUrl), false,
+      page_load_metrics::StorageType::kSessionStorage);
+
+  EXPECT_EQ(GetPageVisits(), 1);
+  EXPECT_EQ(GetSessionStorageBeforeFcpCount(), 1);
+  // The UMA counts the first use, so AfterFcp is 0.
+  EXPECT_EQ(GetSessionStorageAfterFcpCount(), 0);
+}
+
+TEST_F(PrerenderPageLoadMetricsObserverTest, SessionStorageAfterFcp) {
+  NavigateAndCommit(GURL(kDefaultTestUrl));
+
+  // Reach FCP.
+  SimulateFirstContentfulPaint();
+
+  // Access session storage.
+  tester()->SimulateStorageAccess(
+      GURL(kDefaultTestUrl), GURL(kDefaultTestUrl), false,
+      page_load_metrics::StorageType::kSessionStorage);
+
+  EXPECT_EQ(GetPageVisits(), 1);
+  EXPECT_EQ(GetSessionStorageBeforeFcpCount(), 0);
+  EXPECT_EQ(GetSessionStorageAfterFcpCount(), 1);
+}
+
+TEST_F(PrerenderPageLoadMetricsObserverTest, ThirdPartySessionStorage) {
+  NavigateAndCommit(GURL(kDefaultTestUrl));
+
+  tester()->SimulateStorageAccess(
+      GURL(kOtherOriginUrl), GURL(kDefaultTestUrl), false,
+      page_load_metrics::StorageType::kSessionStorage);
+
+  // Cross-origin storage is not logged.
+  EXPECT_EQ(GetPageVisits(), 1);
+  EXPECT_EQ(GetSessionStorageBeforeFcpCount(), 0);
+  EXPECT_EQ(GetSessionStorageAfterFcpCount(), 0);
+}
+
+TEST_F(PrerenderPageLoadMetricsObserverTest, MultipleStorage) {
+  NavigateAndCommit(GURL(kDefaultTestUrl));
+
+  // Access local storage.
+  tester()->SimulateStorageAccess(
+      GURL(kDefaultTestUrl), GURL(kDefaultTestUrl), false,
+      page_load_metrics::StorageType::kLocalStorage);
+
+  // Reach FCP.
+  SimulateFirstContentfulPaint();
+
+  // Access session storage.
+  tester()->SimulateStorageAccess(
+      GURL(kDefaultTestUrl), GURL(kDefaultTestUrl), false,
+      page_load_metrics::StorageType::kSessionStorage);
+
+  EXPECT_EQ(GetPageVisits(), 1);
+  EXPECT_EQ(GetLocalStorageBeforeFcpCount(), 1);
+  EXPECT_EQ(GetLocalStorageAfterFcpCount(), 0);
+  EXPECT_EQ(GetSessionStorageBeforeFcpCount(), 0);
+  EXPECT_EQ(GetSessionStorageAfterFcpCount(), 1);
+}
+
 }  // namespace
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb
index ffa2c853..233200d 100644
--- a/components/policy/resources/policy_templates_tr.xtb
+++ b/components/policy/resources/policy_templates_tr.xtb
@@ -752,7 +752,7 @@
       Kullanılabilir veri türleri şunlardır: <ph name="DATA_TYPE_BROWSING_HISTORY" />, <ph name="DATA_TYPE_DOWNLOAD_HISTORY" />, <ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA" />, <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES" />, <ph name="DATA_TYPE_PASSWORD" />, <ph name="DATA_TYPE_AUTOFILL" />, <ph name="DATA_TYPE_SITE_SETTINGS" /> ve <ph name="DATA_TYPE_HOSTED_APP_DATA" />.
 
       Tarayıcı, <ph name="TIME_TO_LIVE_IN_HOURS" /> saatten daha eski olan belirli türlerdeki verileri otomatik olarak kaldırır. Ayarlanabilecek minimum değer 1 saattir. Bazı nadir durumlarda verilerin silinmesi daha uzun sürebilir, ancak sonunda veriler silinir.</translation>
-<translation id="2057317273526988987">URL listesine erişimi engelle</translation>
+<translation id="2057317273526988987">URL listesine erişime izin ver</translation>
 <translation id="2061810934846663491">Uzaktan erişim ana makineleri için gereken alan adlarını yapılandır</translation>
 <translation id="2069350366303315077">Politika, Etkin değerine ayarlanırsa <ph name="PRODUCT_NAME" />, misafir oturumunu zorunlu kılıp profil ile oturum açma işlemlerini engeller. Misafir oturumları, tüm pencerelerin gizli modda olduğu <ph name="PRODUCT_NAME" /> profilleridir.
 
diff --git a/components/strings/components_strings_en-GB.xtb b/components/strings/components_strings_en-GB.xtb
index c6cbc51..83ec0392 100644
--- a/components/strings/components_strings_en-GB.xtb
+++ b/components/strings/components_strings_en-GB.xtb
@@ -147,6 +147,7 @@
 <translation id="1462951478840426066">Use the fonts on your computer so that you can create high-fidelity content</translation>
 <translation id="1463543813647160932">5 x 7</translation>
 <translation id="1467432559032391204">Left</translation>
+<translation id="1468463683985534315">Web app origin association parser service</translation>
 <translation id="1472675084647422956">Show more</translation>
 <translation id="1473183651233018052">JIS B10</translation>
 <translation id="147358896496811705">2A0</translation>
@@ -181,6 +182,7 @@
 <translation id="1567040042588613346">This policy is working as intended but the same value is set elsewhere and is superseded by this policy.</translation>
 <translation id="1569487616857761740">Enter expiry date</translation>
 <translation id="1581080074034554886">CVC</translation>
+<translation id="1583294866416602487">Plex</translation>
 <translation id="1583429793053364125">Something went wrong while displaying this web page.</translation>
 <translation id="1586541204584340881">Which extensions you have installed</translation>
 <translation id="1588438908519853928">Normal</translation>
@@ -378,6 +380,7 @@
 <translation id="2359629602545592467">Multiple</translation>
 <translation id="2359808026110333948">Continue</translation>
 <translation id="2367567093518048410">Level</translation>
+<translation id="2372464001869762664">Once you confirm, card details from your Google Account will be shared with this site. Find the CVC in your Plex account details.</translation>
 <translation id="2380886658946992094">Legal</translation>
 <translation id="2384307209577226199">Enterprise default</translation>
 <translation id="2385809941344967209">Update Chrome from your Chrome settings</translation>
diff --git a/content/browser/accessibility/browser_accessibility_win_unittest.cc b/content/browser/accessibility/browser_accessibility_win_unittest.cc
index fee4cebe..a8e3350 100644
--- a/content/browser/accessibility/browser_accessibility_win_unittest.cc
+++ b/content/browser/accessibility/browser_accessibility_win_unittest.cc
@@ -226,7 +226,7 @@
   base::win::ScopedBstr name;
   hr = text_accessible->get_accName(childid_self, name.Receive());
   ASSERT_EQ(S_OK, hr);
-  EXPECT_EQ(L"old text", base::string16(name.Get()));
+  EXPECT_EQ(L"old text", std::wstring(name.Get()));
   name.Reset();
 
   text_dispatch.Reset();
@@ -254,7 +254,7 @@
 
   hr = text_accessible->get_accName(childid_self, name.Receive());
   ASSERT_EQ(S_OK, hr);
-  EXPECT_EQ(L"new text", base::string16(name.Get()));
+  EXPECT_EQ(L"new text", std::wstring(name.Get()));
 
   text_dispatch.Reset();
   text_accessible.Reset();
@@ -436,7 +436,7 @@
 
   base::win::ScopedBstr text;
   EXPECT_EQ(S_OK, text_field_obj->get_text(0, text_len, text.Receive()));
-  EXPECT_EQ(text_value, base::UTF16ToUTF8(base::string16(text.Get())));
+  EXPECT_EQ(text_value, base::WideToUTF8(std::wstring(text.Get())));
   text.Reset();
 
   EXPECT_EQ(S_OK, text_field_obj->get_text(0, 4, text.Receive()));
@@ -592,7 +592,7 @@
 
   EXPECT_EQ(S_OK, text_field_obj->get_text(0, IA2_TEXT_OFFSET_LENGTH,
                                            text.Receive()));
-  EXPECT_EQ(text_value, base::UTF16ToUTF8(base::string16(text.Get())));
+  EXPECT_EQ(text_value, base::WideToUTF8(std::wstring(text.Get())));
 
   // Delete the manager and test that all BrowserAccessibility instances are
   // deleted.
@@ -635,7 +635,7 @@
   base::win::ScopedBstr text;
   EXPECT_EQ(S_OK, root_obj->get_text(0, text_name_len, text.Receive()));
   EXPECT_EQ(text1_name + text2_name,
-            base::UTF16ToUTF8(base::string16(text.Get())));
+            base::WideToUTF8(std::wstring(text.Get())));
 
   LONG hyperlink_count;
   EXPECT_EQ(S_OK, root_obj->get_nHyperlinks(&hyperlink_count));
@@ -666,14 +666,14 @@
 }
 
 TEST_F(BrowserAccessibilityWinTest, TestComplexHypertext) {
-  const base::string16 text1_name = L"One two three.";
-  const base::string16 combo_box_name = L"City:";
-  const base::string16 combo_box_value = L"Happyland";
-  const base::string16 text2_name = L" Four five six.";
-  const base::string16 check_box_name = L"I agree";
-  const base::string16 check_box_value = L"Checked";
-  const base::string16 button_text_name = L"Red";
-  const base::string16 link_text_name = L"Blue";
+  const base::string16 text1_name = STRING16_LITERAL("One two three.");
+  const base::string16 combo_box_name = STRING16_LITERAL("City:");
+  const base::string16 combo_box_value = STRING16_LITERAL("Happyland");
+  const base::string16 text2_name = STRING16_LITERAL(" Four five six.");
+  const base::string16 check_box_name = STRING16_LITERAL("I agree");
+  const base::string16 check_box_value = STRING16_LITERAL("Checked");
+  const base::string16 button_text_name = STRING16_LITERAL("Red");
+  const base::string16 link_text_name = STRING16_LITERAL("Blue");
   // Each control (combo / check box, button and link) will be represented by an
   // embedded object character.
   const base::string16 embed(1, BrowserAccessibilityComWin::kEmbeddedCharacter);
@@ -770,7 +770,7 @@
   EXPECT_EQ(S_OK, hyperlink.As(&hypertext));
   EXPECT_EQ(S_OK,
             hypertext->get_text(0, IA2_TEXT_OFFSET_LENGTH, text.Receive()));
-  EXPECT_STREQ(combo_box_value.c_str(), text.Get());
+  EXPECT_EQ(combo_box_value, base::WideToUTF16(text.Get()));
   text.Reset();
   hyperlink.Reset();
   hypertext.Reset();
@@ -781,7 +781,7 @@
   EXPECT_EQ(S_OK, hyperlink.As(&hypertext));
   EXPECT_EQ(S_OK,
             hypertext->get_text(0, IA2_TEXT_OFFSET_LENGTH, text.Receive()));
-  EXPECT_STREQ(check_box_name.c_str(), text.Get());
+  EXPECT_EQ(check_box_name, base::WideToUTF16(text.Get()));
   text.Reset();
   hyperlink.Reset();
   hypertext.Reset();
@@ -791,7 +791,7 @@
   EXPECT_EQ(S_OK, hyperlink.As(&hypertext));
   EXPECT_EQ(S_OK,
             hypertext->get_text(0, IA2_TEXT_OFFSET_LENGTH, text.Receive()));
-  EXPECT_STREQ(button_text_name.c_str(), text.Get());
+  EXPECT_EQ(button_text_name, base::WideToUTF16(text.Get()));
   text.Reset();
   hyperlink.Reset();
   hypertext.Reset();
@@ -800,7 +800,7 @@
   EXPECT_EQ(S_OK, root_obj->get_hyperlink(3, &hyperlink));
   EXPECT_EQ(S_OK, hyperlink.As(&hypertext));
   EXPECT_EQ(S_OK, hypertext->get_text(0, 4, text.Receive()));
-  EXPECT_STREQ(link_text_name.c_str(), text.Get());
+  EXPECT_EQ(link_text_name, base::WideToUTF16(text.Get()));
   text.Reset();
   hyperlink.Reset();
   hypertext.Reset();
@@ -1268,9 +1268,9 @@
 }
 
 TEST_F(BrowserAccessibilityWinTest, TestWordBoundariesInTextControls) {
-  const base::string16 line1(L"This is a very LONG line of text that ");
-  const base::string16 line2(L"should wrap on more than one lines ");
-  const base::string16 text(line1 + line2);
+  const std::string line1("This is a very LONG line of text that ");
+  const std::string line2("should wrap on more than one lines ");
+  const std::string text(line1 + line2);
 
   std::vector<int32_t> line1_word_starts;
   line1_word_starts.push_back(0);
@@ -1309,8 +1309,8 @@
   textarea.AddState(ax::mojom::State::kMultiline);
   textarea_div.AddState(ax::mojom::State::kEditable);
   textarea_text.AddState(ax::mojom::State::kEditable);
-  textarea.SetValue(base::UTF16ToUTF8(text));
-  textarea_text.SetName(base::UTF16ToUTF8(text));
+  textarea.SetValue(text);
+  textarea_text.SetName(text);
   textarea.AddStringAttribute(ax::mojom::StringAttribute::kHtmlTag, "textarea");
   textarea.child_ids.push_back(textarea_div.id);
   textarea_div.child_ids.push_back(textarea_text.id);
@@ -1322,8 +1322,8 @@
   textarea_line2.role = ax::mojom::Role::kInlineTextBox;
   textarea_line1.AddState(ax::mojom::State::kEditable);
   textarea_line2.AddState(ax::mojom::State::kEditable);
-  textarea_line1.SetName(base::UTF16ToUTF8(line1));
-  textarea_line2.SetName(base::UTF16ToUTF8(line2));
+  textarea_line1.SetName(line1);
+  textarea_line2.SetName(line2);
   textarea_line1.AddIntListAttribute(ax::mojom::IntListAttribute::kWordStarts,
                                      line1_word_starts);
   textarea_line2.AddIntListAttribute(ax::mojom::IntListAttribute::kWordStarts,
@@ -1342,8 +1342,8 @@
   text_field.AddState(ax::mojom::State::kFocusable);
   text_field_div.AddState(ax::mojom::State::kEditable);
   text_field_text.AddState(ax::mojom::State::kEditable);
-  text_field.SetValue(base::UTF16ToUTF8(line1));
-  text_field_text.SetName(base::UTF16ToUTF8(line1));
+  text_field.SetValue(line1);
+  text_field_text.SetName(line1);
   text_field.AddStringAttribute(ax::mojom::StringAttribute::kHtmlTag, "input");
   text_field.html_attributes.push_back(std::make_pair("type", "text"));
   text_field.child_ids.push_back(text_field_div.id);
@@ -1353,7 +1353,7 @@
   text_field_line.id = 10;
   text_field_line.role = ax::mojom::Role::kInlineTextBox;
   text_field_line.AddState(ax::mojom::State::kEditable);
-  text_field_line.SetName(base::UTF16ToUTF8(line1));
+  text_field_line.SetName(line1);
   text_field_line.AddIntListAttribute(ax::mojom::IntListAttribute::kWordStarts,
                                       line1_word_starts);
   text_field_text.child_ids.push_back(text_field_line.id);
@@ -1400,7 +1400,7 @@
     LONG space_offset = static_cast<LONG>(text.find(' ', offset));
     EXPECT_EQ(space_offset + 1, end);
     LONG length = end - start;
-    EXPECT_STREQ(text.substr(start, length).c_str(), word.Get());
+    EXPECT_EQ(base::ASCIIToWide(text.substr(start, length)), word.Get());
     word.Reset();
     offset = end;
   }
@@ -1417,7 +1417,7 @@
     LONG space_offset = static_cast<LONG>(line1.find(' ', offset));
     EXPECT_EQ(space_offset + 1, end);
     LONG length = end - start;
-    EXPECT_STREQ(text.substr(start, length).c_str(), word.Get());
+    EXPECT_EQ(base::ASCIIToWide(text.substr(start, length)), word.Get());
     word.Reset();
     offset = end;
   }
@@ -2484,9 +2484,8 @@
   EXPECT_EQ(S_OK, hr);
   EXPECT_EQ(0, start_offset);
   EXPECT_EQ(1, end_offset);
-  EXPECT_NE(
-      base::string16::npos,
-      base::string16(text_attributes.Get()).find(L"font-family:Helvetica"));
+  EXPECT_NE(std::wstring::npos,
+            std::wstring(text_attributes.Get()).find(L"font-family:Helvetica"));
   text_attributes.Reset();
 
   // Test the style of text_before.
@@ -2496,10 +2495,10 @@
     EXPECT_EQ(S_OK, hr);
     EXPECT_EQ(0, start_offset);
     EXPECT_EQ(7, end_offset);
-    base::string16 attributes(text_attributes.Get());
-    EXPECT_NE(base::string16::npos, attributes.find(L"font-family:Helvetica"));
-    EXPECT_NE(base::string16::npos, attributes.find(L"font-weight:bold"));
-    EXPECT_NE(base::string16::npos, attributes.find(L"font-style:italic"));
+    std::wstring attributes(text_attributes.Get());
+    EXPECT_NE(std::wstring::npos, attributes.find(L"font-family:Helvetica"));
+    EXPECT_NE(std::wstring::npos, attributes.find(L"font-weight:bold"));
+    EXPECT_NE(std::wstring::npos, attributes.find(L"font-style:italic"));
     text_attributes.Reset();
   }
 
@@ -2509,22 +2508,21 @@
   EXPECT_EQ(S_OK, hr);
   EXPECT_EQ(0, start_offset);
   EXPECT_EQ(3, end_offset);
+  EXPECT_NE(std::wstring::npos,
+            std::wstring(text_attributes.Get()).find(L"font-family:Helvetica"));
+  EXPECT_EQ(std::wstring::npos,
+            std::wstring(text_attributes.Get()).find(L"font-weight:"));
+  EXPECT_EQ(std::wstring::npos,
+            std::wstring(text_attributes.Get()).find(L"font-style:"));
   EXPECT_NE(
-      base::string16::npos,
-      base::string16(text_attributes.Get()).find(L"font-family:Helvetica"));
-  EXPECT_EQ(base::string16::npos,
-            base::string16(text_attributes.Get()).find(L"font-weight:"));
-  EXPECT_EQ(base::string16::npos,
-            base::string16(text_attributes.Get()).find(L"font-style:"));
-  EXPECT_NE(base::string16::npos, base::string16(text_attributes.Get())
-                                      .find(L"text-underline-style:solid"));
-  EXPECT_EQ(
-      base::string16::npos,
-      base::string16(text_attributes.Get()).find(L"text-underline-type:"));
+      std::wstring::npos,
+      std::wstring(text_attributes.Get()).find(L"text-underline-style:solid"));
+  EXPECT_EQ(std::wstring::npos,
+            std::wstring(text_attributes.Get()).find(L"text-underline-type:"));
   // For compatibility with Firefox, spelling attributes should also be
   // propagated to the parent of static text leaves.
-  EXPECT_NE(base::string16::npos,
-            base::string16(text_attributes.Get()).find(L"invalid:spelling"));
+  EXPECT_NE(std::wstring::npos,
+            std::wstring(text_attributes.Get()).find(L"invalid:spelling"));
   text_attributes.Reset();
 
   hr = ax_link_text->GetCOM()->get_attributes(2, &start_offset, &end_offset,
@@ -2532,20 +2530,19 @@
   EXPECT_EQ(S_OK, hr);
   EXPECT_EQ(0, start_offset);
   EXPECT_EQ(3, end_offset);
+  EXPECT_NE(std::wstring::npos,
+            std::wstring(text_attributes.Get()).find(L"font-family:Helvetica"));
+  EXPECT_EQ(std::wstring::npos,
+            std::wstring(text_attributes.Get()).find(L"font-weight:"));
+  EXPECT_EQ(std::wstring::npos,
+            std::wstring(text_attributes.Get()).find(L"font-style:"));
   EXPECT_NE(
-      base::string16::npos,
-      base::string16(text_attributes.Get()).find(L"font-family:Helvetica"));
-  EXPECT_EQ(base::string16::npos,
-            base::string16(text_attributes.Get()).find(L"font-weight:"));
-  EXPECT_EQ(base::string16::npos,
-            base::string16(text_attributes.Get()).find(L"font-style:"));
-  EXPECT_NE(base::string16::npos, base::string16(text_attributes.Get())
-                                      .find(L"text-underline-style:solid"));
-  EXPECT_EQ(
-      base::string16::npos,
-      base::string16(text_attributes.Get()).find(L"text-underline-type:"));
-  EXPECT_NE(base::string16::npos,
-            base::string16(text_attributes.Get()).find(L"invalid:spelling"));
+      std::wstring::npos,
+      std::wstring(text_attributes.Get()).find(L"text-underline-style:solid"));
+  EXPECT_EQ(std::wstring::npos,
+            std::wstring(text_attributes.Get()).find(L"text-underline-type:"));
+  EXPECT_NE(std::wstring::npos,
+            std::wstring(text_attributes.Get()).find(L"invalid:spelling"));
   text_attributes.Reset();
 
   // Test the style of text_after.
@@ -2555,16 +2552,16 @@
     EXPECT_EQ(S_OK, hr);
     EXPECT_EQ(8, start_offset);
     EXPECT_EQ(15, end_offset);
-    base::string16 attributes(text_attributes.Get());
-    EXPECT_NE(base::string16::npos, attributes.find(L"font-family:Helvetica"));
-    EXPECT_EQ(base::string16::npos, attributes.find(L"font-weight:"));
-    EXPECT_EQ(base::string16::npos, attributes.find(L"font-style:"));
-    EXPECT_EQ(base::string16::npos, base::string16(text_attributes.Get())
-                                        .find(L"text-underline-style:solid"));
+    std::wstring attributes(text_attributes.Get());
+    EXPECT_NE(std::wstring::npos, attributes.find(L"font-family:Helvetica"));
+    EXPECT_EQ(std::wstring::npos, attributes.find(L"font-weight:"));
+    EXPECT_EQ(std::wstring::npos, attributes.find(L"font-style:"));
+    EXPECT_EQ(std::wstring::npos, std::wstring(text_attributes.Get())
+                                      .find(L"text-underline-style:solid"));
     EXPECT_EQ(
-        base::string16::npos,
-        base::string16(text_attributes.Get()).find(L"text-underline-type:"));
-    EXPECT_EQ(base::string16::npos, attributes.find(L"invalid:spelling"));
+        std::wstring::npos,
+        std::wstring(text_attributes.Get()).find(L"text-underline-type:"));
+    EXPECT_EQ(std::wstring::npos, attributes.find(L"invalid:spelling"));
     text_attributes.Reset();
   }
 
@@ -2574,15 +2571,14 @@
   EXPECT_EQ(S_OK, hr);
   EXPECT_EQ(0, start_offset);
   EXPECT_EQ(7, end_offset);
-  EXPECT_NE(
-      base::string16::npos,
-      base::string16(text_attributes.Get()).find(L"font-family:Helvetica"));
-  EXPECT_NE(base::string16::npos,
-            base::string16(text_attributes.Get()).find(L"font-weight:bold"));
-  EXPECT_NE(base::string16::npos,
-            base::string16(text_attributes.Get()).find(L"font-style:italic"));
-  EXPECT_EQ(base::string16::npos,
-            base::string16(text_attributes.Get()).find(L"invalid:spelling"));
+  EXPECT_NE(std::wstring::npos,
+            std::wstring(text_attributes.Get()).find(L"font-family:Helvetica"));
+  EXPECT_NE(std::wstring::npos,
+            std::wstring(text_attributes.Get()).find(L"font-weight:bold"));
+  EXPECT_NE(std::wstring::npos,
+            std::wstring(text_attributes.Get()).find(L"font-style:italic"));
+  EXPECT_EQ(std::wstring::npos,
+            std::wstring(text_attributes.Get()).find(L"invalid:spelling"));
   text_attributes.Reset();
 
   hr = ax_after->GetCOM()->get_attributes(6, &start_offset, &end_offset,
@@ -2590,21 +2586,18 @@
   EXPECT_EQ(S_OK, hr);
   EXPECT_EQ(0, start_offset);
   EXPECT_EQ(7, end_offset);
-  EXPECT_NE(
-      base::string16::npos,
-      base::string16(text_attributes.Get()).find(L"font-family:Helvetica"));
-  EXPECT_EQ(base::string16::npos,
-            base::string16(text_attributes.Get()).find(L"font-weight:"));
-  EXPECT_EQ(base::string16::npos,
-            base::string16(text_attributes.Get()).find(L"font-style:"));
-  EXPECT_EQ(
-      base::string16::npos,
-      base::string16(text_attributes.Get()).find(L"text-underline-style:"));
-  EXPECT_EQ(
-      base::string16::npos,
-      base::string16(text_attributes.Get()).find(L"text-underline-type:"));
-  EXPECT_EQ(base::string16::npos,
-            base::string16(text_attributes.Get()).find(L"invalid:spelling"));
+  EXPECT_NE(std::wstring::npos,
+            std::wstring(text_attributes.Get()).find(L"font-family:Helvetica"));
+  EXPECT_EQ(std::wstring::npos,
+            std::wstring(text_attributes.Get()).find(L"font-weight:"));
+  EXPECT_EQ(std::wstring::npos,
+            std::wstring(text_attributes.Get()).find(L"font-style:"));
+  EXPECT_EQ(std::wstring::npos,
+            std::wstring(text_attributes.Get()).find(L"text-underline-style:"));
+  EXPECT_EQ(std::wstring::npos,
+            std::wstring(text_attributes.Get()).find(L"text-underline-type:"));
+  EXPECT_EQ(std::wstring::npos,
+            std::wstring(text_attributes.Get()).find(L"invalid:spelling"));
   text_attributes.Reset();
 
   manager.reset();
@@ -2692,7 +2685,7 @@
   for (LONG offset = 0; offset < value1_length; ++offset) {
     hr = ax_combo_box->GetCOM()->get_attributes(
         offset, &start_offset, &end_offset, text_attributes.Receive());
-    EXPECT_TRUE(base::string16(text_attributes.Get()).empty());
+    EXPECT_TRUE(std::wstring(text_attributes.Get()).empty());
     EXPECT_EQ(0, start_offset);
     EXPECT_EQ(value1_length, end_offset);
     text_attributes.Reset();
@@ -2705,8 +2698,8 @@
     EXPECT_EQ(S_OK, hr);
     EXPECT_EQ(value1_length, start_offset);
     EXPECT_EQ(value1_length + 4, end_offset);
-    EXPECT_NE(base::string16::npos,
-              base::string16(text_attributes.Get()).find(L"invalid:spelling"));
+    EXPECT_NE(std::wstring::npos,
+              std::wstring(text_attributes.Get()).find(L"invalid:spelling"));
     text_attributes.Reset();
   }
 
@@ -2715,7 +2708,7 @@
        ++offset) {
     hr = ax_combo_box->GetCOM()->get_attributes(
         offset, &start_offset, &end_offset, text_attributes.Receive());
-    EXPECT_TRUE(base::string16(text_attributes.Get()).empty());
+    EXPECT_TRUE(std::wstring(text_attributes.Get()).empty());
     EXPECT_EQ(value1_length + 4, start_offset);
     EXPECT_EQ(combo_box_value_length, end_offset);
     text_attributes.Reset();
@@ -2791,7 +2784,7 @@
   for (LONG offset = 0; offset < combo_box_value_length; ++offset) {
     hr = ax_combo_box->GetCOM()->get_attributes(
         offset, &start_offset, &end_offset, text_attributes.Receive());
-    EXPECT_TRUE(base::string16(text_attributes.Get()).empty());
+    EXPECT_TRUE(std::wstring(text_attributes.Get()).empty());
     EXPECT_EQ(0, start_offset);
     EXPECT_EQ(combo_box_value_length, end_offset);
     text_attributes.Reset();
@@ -2816,7 +2809,7 @@
   for (LONG offset = 0; offset < value1_length; ++offset) {
     hr = ax_combo_box->GetCOM()->get_attributes(
         offset, &start_offset, &end_offset, text_attributes.Receive());
-    EXPECT_TRUE(base::string16(text_attributes.Get()).empty());
+    EXPECT_TRUE(std::wstring(text_attributes.Get()).empty());
     EXPECT_EQ(0, start_offset);
     EXPECT_EQ(value1_length, end_offset);
     text_attributes.Reset();
@@ -2829,8 +2822,8 @@
     EXPECT_EQ(S_OK, hr);
     EXPECT_EQ(value1_length, start_offset);
     EXPECT_EQ(value1_length + 4, end_offset);
-    EXPECT_NE(base::string16::npos,
-              base::string16(text_attributes.Get()).find(L"invalid:spelling"));
+    EXPECT_NE(std::wstring::npos,
+              std::wstring(text_attributes.Get()).find(L"invalid:spelling"));
     text_attributes.Reset();
   }
 
@@ -2839,7 +2832,7 @@
        ++offset) {
     hr = ax_combo_box->GetCOM()->get_attributes(
         offset, &start_offset, &end_offset, text_attributes.Receive());
-    EXPECT_TRUE(base::string16(text_attributes.Get()).empty());
+    EXPECT_TRUE(std::wstring(text_attributes.Get()).empty());
     EXPECT_EQ(value1_length + 4, start_offset);
     EXPECT_EQ(combo_box_value_length, end_offset);
     text_attributes.Reset();
@@ -3146,7 +3139,7 @@
       ax_root->GetCOM()->get_relation(0, &describedby_relation));
   EXPECT_HRESULT_SUCCEEDED(
       describedby_relation->get_relationType(relation_type.Receive()));
-  EXPECT_EQ(L"describedBy", base::string16(relation_type.Get()));
+  EXPECT_EQ(L"describedBy", std::wstring(relation_type.Get()));
   relation_type.Reset();
 
   EXPECT_HRESULT_SUCCEEDED(describedby_relation->get_nTargets(&n_targets));
@@ -3175,7 +3168,7 @@
       ax_child1->GetCOM()->get_relation(0, &description_for_relation));
   EXPECT_HRESULT_SUCCEEDED(
       description_for_relation->get_relationType(relation_type.Receive()));
-  EXPECT_EQ(L"descriptionFor", base::string16(relation_type.Get()));
+  EXPECT_EQ(L"descriptionFor", std::wstring(relation_type.Get()));
   relation_type.Reset();
 
   EXPECT_HRESULT_SUCCEEDED(description_for_relation->get_nTargets(&n_targets));
@@ -3196,7 +3189,7 @@
       ax_child2->GetCOM()->get_relation(0, &description_for_relation));
   EXPECT_HRESULT_SUCCEEDED(
       description_for_relation->get_relationType(relation_type.Receive()));
-  EXPECT_EQ(L"descriptionFor", base::string16(relation_type.Get()));
+  EXPECT_EQ(L"descriptionFor", std::wstring(relation_type.Get()));
   relation_type.Reset();
 
   EXPECT_HRESULT_SUCCEEDED(description_for_relation->get_nTargets(&n_targets));
diff --git a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
index 753cc92..79a40ed 100644
--- a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
+++ b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
@@ -281,6 +281,11 @@
                      DumpAccessibilityTestHelper::TestPasses().size()),
     DumpAccessibilityTreeTestPassToString());
 
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
+                       AccessibilityCSSBeforeAfterBlock) {
+  RunCSSTest(FILE_PATH_LITERAL("before-after-block.html"));
+}
+
 IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityCSSColor) {
   RunCSSTest(FILE_PATH_LITERAL("color.html"));
 }
@@ -295,6 +300,11 @@
   RunCSSTest(FILE_PATH_LITERAL("content-visibility-hidden-check-failure.html"));
 }
 
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
+                       AccessibilityCSSContentVisibilityToHidden) {
+  RunCSSTest(FILE_PATH_LITERAL("content-visibility-to-hidden.html"));
+}
+
 IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityCSSFontStyle) {
   RunCSSTest(FILE_PATH_LITERAL("font-style.html"));
 }
diff --git a/content/browser/background_sync/background_sync_manager.cc b/content/browser/background_sync/background_sync_manager.cc
index 2b33846..3d6b2d1 100644
--- a/content/browser/background_sync/background_sync_manager.cc
+++ b/content/browser/background_sync/background_sync_manager.cc
@@ -22,7 +22,6 @@
 #include "content/browser/background_sync/background_sync_network_observer.h"
 #include "content/browser/service_worker/embedded_worker_status.h"
 #include "content/browser/service_worker/service_worker_context_wrapper.h"
-#include "content/browser/service_worker/service_worker_storage.h"
 #include "content/browser/storage_partition_impl.h"
 #include "content/common/service_worker/service_worker_utils.h"
 #include "content/public/browser/background_sync_controller.h"
diff --git a/content/browser/background_sync/background_sync_manager_unittest.cc b/content/browser/background_sync/background_sync_manager_unittest.cc
index 4cbefce3..b730a9c 100644
--- a/content/browser/background_sync/background_sync_manager_unittest.cc
+++ b/content/browser/background_sync/background_sync_manager_unittest.cc
@@ -33,7 +33,6 @@
 #include "content/browser/service_worker/service_worker_context_core.h"
 #include "content/browser/service_worker/service_worker_context_wrapper.h"
 #include "content/browser/service_worker/service_worker_registration_object_host.h"
-#include "content/browser/service_worker/service_worker_storage.h"
 #include "content/browser/storage_partition_impl.h"
 #include "content/public/browser/background_sync_parameters.h"
 #include "content/public/browser/permission_type.h"
diff --git a/content/browser/notifications/notification_event_dispatcher_impl.cc b/content/browser/notifications/notification_event_dispatcher_impl.cc
index d5ba6897..2e419f9 100644
--- a/content/browser/notifications/notification_event_dispatcher_impl.cc
+++ b/content/browser/notifications/notification_event_dispatcher_impl.cc
@@ -13,7 +13,6 @@
 #include "content/browser/notifications/platform_notification_context_impl.h"
 #include "content/browser/service_worker/service_worker_context_wrapper.h"
 #include "content/browser/service_worker/service_worker_registration.h"
-#include "content/browser/service_worker/service_worker_storage.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
diff --git a/content/browser/push_messaging/push_messaging_manager.cc b/content/browser/push_messaging/push_messaging_manager.cc
index 02346d61..d39de525 100644
--- a/content/browser/push_messaging/push_messaging_manager.cc
+++ b/content/browser/push_messaging/push_messaging_manager.cc
@@ -23,7 +23,6 @@
 #include "content/browser/renderer_host/render_process_host_impl.h"
 #include "content/browser/service_worker/service_worker_context_core.h"
 #include "content/browser/service_worker/service_worker_context_wrapper.h"
-#include "content/browser/service_worker/service_worker_storage.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/permission_type.h"
diff --git a/content/browser/push_messaging/push_messaging_router.cc b/content/browser/push_messaging/push_messaging_router.cc
index 6ec8a300..9f6b604a 100644
--- a/content/browser/push_messaging/push_messaging_router.cc
+++ b/content/browser/push_messaging/push_messaging_router.cc
@@ -12,7 +12,6 @@
 #include "content/browser/devtools/devtools_background_services_context_impl.h"
 #include "content/browser/service_worker/service_worker_context_wrapper.h"
 #include "content/browser/service_worker/service_worker_registration.h"
-#include "content/browser/service_worker/service_worker_storage.h"
 #include "content/browser/storage_partition_impl.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/browser_task_traits.h"
diff --git a/content/browser/renderer_host/dwrite_font_proxy_impl_win_unittest.cc b/content/browser/renderer_host/dwrite_font_proxy_impl_win_unittest.cc
index fa5c3fb..a409f766 100644
--- a/content/browser/renderer_host/dwrite_font_proxy_impl_win_unittest.cc
+++ b/content/browser/renderer_host/dwrite_font_proxy_impl_win_unittest.cc
@@ -126,22 +126,24 @@
 
 TEST_F(DWriteFontProxyImplUnitTest, FindFamily) {
   UINT32 arial_index = 0;
-  dwrite_font_proxy().FindFamily(L"Arial", &arial_index);
+  dwrite_font_proxy().FindFamily(STRING16_LITERAL("Arial"), &arial_index);
   EXPECT_NE(UINT_MAX, arial_index);
 
   UINT32 times_index = 0;
-  dwrite_font_proxy().FindFamily(L"Times New Roman", &times_index);
+  dwrite_font_proxy().FindFamily(STRING16_LITERAL("Times New Roman"),
+                                 &times_index);
   EXPECT_NE(UINT_MAX, times_index);
   EXPECT_NE(arial_index, times_index);
 
   UINT32 unknown_index = 0;
-  dwrite_font_proxy().FindFamily(L"Not a font family", &unknown_index);
+  dwrite_font_proxy().FindFamily(STRING16_LITERAL("Not a font family"),
+                                 &unknown_index);
   EXPECT_EQ(UINT_MAX, unknown_index);
 }
 
 TEST_F(DWriteFontProxyImplUnitTest, GetFamilyNames) {
   UINT32 arial_index = 0;
-  dwrite_font_proxy().FindFamily(L"Arial", &arial_index);
+  dwrite_font_proxy().FindFamily(STRING16_LITERAL("Arial"), &arial_index);
 
   std::vector<blink::mojom::DWriteStringPairPtr> names;
   dwrite_font_proxy().GetFamilyNames(arial_index, &names);
@@ -163,7 +165,7 @@
 
 TEST_F(DWriteFontProxyImplUnitTest, GetFontFiles) {
   UINT32 arial_index = 0;
-  dwrite_font_proxy().FindFamily(L"Arial", &arial_index);
+  dwrite_font_proxy().FindFamily(STRING16_LITERAL("Arial"), &arial_index);
 
   std::vector<base::FilePath> files;
   std::vector<base::File> handles;
@@ -190,14 +192,15 @@
 
   blink::mojom::MapCharactersResultPtr result;
   dwrite_font_proxy().MapCharacters(
-      L"abc",
+      STRING16_LITERAL("abc"),
       blink::mojom::DWriteFontStyle::New(DWRITE_FONT_WEIGHT_NORMAL,
                                          DWRITE_FONT_STYLE_NORMAL,
                                          DWRITE_FONT_STRETCH_NORMAL),
-      L"", DWRITE_READING_DIRECTION_LEFT_TO_RIGHT, L"", &result);
+      base::string16(), DWRITE_READING_DIRECTION_LEFT_TO_RIGHT,
+      base::string16(), &result);
 
   EXPECT_NE(UINT32_MAX, result->family_index);
-  EXPECT_STRNE(L"", result->family_name.c_str());
+  EXPECT_NE(base::string16(), result->family_name);
   EXPECT_EQ(3u, result->mapped_length);
   EXPECT_NE(0.0, result->scale);
   EXPECT_NE(0, result->font_style->font_weight);
@@ -211,14 +214,15 @@
 
   blink::mojom::MapCharactersResultPtr result;
   dwrite_font_proxy().MapCharacters(
-      L"\ufffe\uffffabc",
+      STRING16_LITERAL("\ufffe\uffffabc"),
       blink::mojom::DWriteFontStyle::New(DWRITE_FONT_WEIGHT_NORMAL,
                                          DWRITE_FONT_STYLE_NORMAL,
                                          DWRITE_FONT_STRETCH_NORMAL),
-      L"en-us", DWRITE_READING_DIRECTION_LEFT_TO_RIGHT, L"", &result);
+      STRING16_LITERAL("en-us"), DWRITE_READING_DIRECTION_LEFT_TO_RIGHT,
+      base::string16(), &result);
 
   EXPECT_EQ(UINT32_MAX, result->family_index);
-  EXPECT_STREQ(L"", result->family_name.c_str());
+  EXPECT_EQ(base::string16(), result->family_name);
   EXPECT_EQ(2u, result->mapped_length);
 }
 
@@ -228,14 +232,15 @@
 
   blink::mojom::MapCharactersResultPtr result;
   dwrite_font_proxy().MapCharacters(
-      L"abc\ufffe\uffff",
+      STRING16_LITERAL("abc\ufffe\uffff"),
       blink::mojom::DWriteFontStyle::New(DWRITE_FONT_WEIGHT_NORMAL,
                                          DWRITE_FONT_STYLE_NORMAL,
                                          DWRITE_FONT_STRETCH_NORMAL),
-      L"en-us", DWRITE_READING_DIRECTION_LEFT_TO_RIGHT, L"", &result);
+      STRING16_LITERAL("en-us"), DWRITE_READING_DIRECTION_LEFT_TO_RIGHT,
+      base::string16(), &result);
 
   EXPECT_NE(UINT32_MAX, result->family_index);
-  EXPECT_STRNE(L"", result->family_name.c_str());
+  EXPECT_NE(base::string16(), result->family_name);
   EXPECT_EQ(3u, result->mapped_length);
   EXPECT_NE(0.0, result->scale);
   EXPECT_NE(0, result->font_style->font_weight);
@@ -245,10 +250,10 @@
 
 TEST_F(DWriteFontProxyImplUnitTest, TestCustomFontFiles) {
   // Override windows fonts path to force the custom font file codepath.
-  impl_.SetWindowsFontsPathForTesting(L"X:\\NotWindowsFonts");
+  impl_.SetWindowsFontsPathForTesting(STRING16_LITERAL("X:\\NotWindowsFonts"));
 
   UINT32 arial_index = 0;
-  dwrite_font_proxy().FindFamily(L"Arial", &arial_index);
+  dwrite_font_proxy().FindFamily(STRING16_LITERAL("Arial"), &arial_index);
 
   std::vector<base::FilePath> files;
   std::vector<base::File> handles;
@@ -365,7 +370,7 @@
           base::FilePath(FILE_PATH_LITERAL("DWrite.dll")));
 
   std::string dwrite_version =
-      base::WideToUTF8(dwrite_version_info->product_version());
+      base::UTF16ToUTF8(dwrite_version_info->product_version());
 
   int dwrite_major_version_number =
       std::stoi(dwrite_version.substr(0, dwrite_version.find(".")));
diff --git a/content/browser/service_worker/service_worker_context_core.h b/content/browser/service_worker/service_worker_context_core.h
index 90ea32b..9f2e8499 100644
--- a/content/browser/service_worker/service_worker_context_core.h
+++ b/content/browser/service_worker/service_worker_context_core.h
@@ -24,7 +24,6 @@
 #include "content/browser/service_worker/service_worker_process_manager.h"
 #include "content/browser/service_worker/service_worker_registration_status.h"
 #include "content/browser/service_worker/service_worker_registry.h"
-#include "content/browser/service_worker/service_worker_storage.h"
 #include "content/common/content_export.h"
 #include "content/public/browser/global_routing_id.h"
 #include "content/public/browser/service_worker_context.h"
diff --git a/content/browser/service_worker/service_worker_context_unittest.cc b/content/browser/service_worker/service_worker_context_unittest.cc
index 87c3389..b083fb8 100644
--- a/content/browser/service_worker/service_worker_context_unittest.cc
+++ b/content/browser/service_worker/service_worker_context_unittest.cc
@@ -20,7 +20,6 @@
 #include "content/browser/service_worker/service_worker_host.h"
 #include "content/browser/service_worker/service_worker_metrics.h"
 #include "content/browser/service_worker/service_worker_registration.h"
-#include "content/browser/service_worker/service_worker_storage.h"
 #include "content/browser/service_worker/service_worker_test_utils.h"
 #include "content/browser/service_worker/service_worker_version.h"
 #include "content/public/browser/service_worker_context_observer.h"
diff --git a/content/browser/service_worker/service_worker_installed_scripts_sender.cc b/content/browser/service_worker/service_worker_installed_scripts_sender.cc
index 6a5e8a1f..ef01e645 100644
--- a/content/browser/service_worker/service_worker_installed_scripts_sender.cc
+++ b/content/browser/service_worker/service_worker_installed_scripts_sender.cc
@@ -9,7 +9,6 @@
 #include "content/browser/service_worker/service_worker_consts.h"
 #include "content/browser/service_worker/service_worker_context_core.h"
 #include "content/browser/service_worker/service_worker_script_cache_map.h"
-#include "content/browser/service_worker/service_worker_storage.h"
 
 namespace content {
 
diff --git a/content/browser/service_worker/service_worker_new_script_loader.cc b/content/browser/service_worker/service_worker_new_script_loader.cc
index 8e4caf66..c020e6b 100644
--- a/content/browser/service_worker/service_worker_new_script_loader.cc
+++ b/content/browser/service_worker/service_worker_new_script_loader.cc
@@ -14,7 +14,6 @@
 #include "content/browser/service_worker/service_worker_consts.h"
 #include "content/browser/service_worker/service_worker_context_core.h"
 #include "content/browser/service_worker/service_worker_loader_helpers.h"
-#include "content/browser/service_worker/service_worker_storage.h"
 #include "content/browser/service_worker/service_worker_version.h"
 #include "content/browser/url_loader_factory_getter.h"
 #include "content/common/service_worker/service_worker_utils.h"
diff --git a/content/browser/service_worker/service_worker_registry.cc b/content/browser/service_worker/service_worker_registry.cc
index 592b80d..3bcc8e7 100644
--- a/content/browser/service_worker/service_worker_registry.cc
+++ b/content/browser/service_worker/service_worker_registry.cc
@@ -1324,7 +1324,7 @@
     uint64_t call_id,
     storage::mojom::ServiceWorkerDatabaseStatus database_status,
     uint64_t deleted_resources_size,
-    ServiceWorkerStorage::OriginState origin_state) {
+    storage::mojom::ServiceWorkerStorageOriginState origin_state) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   FinishRemoteCall(call_id);
   blink::ServiceWorkerStatusCode status =
@@ -1349,7 +1349,8 @@
   if (registration)
     registration->UnsetStored();
 
-  if (origin_state == ServiceWorkerStorage::OriginState::kDelete) {
+  if (origin_state ==
+      storage::mojom::ServiceWorkerStorageOriginState::kDelete) {
     context_->NotifyAllRegistrationsDeletedForOrigin(
         url::Origin::Create(origin));
     if (special_storage_policy_) {
diff --git a/content/browser/service_worker/service_worker_registry.h b/content/browser/service_worker/service_worker_registry.h
index cc859a77..c631eba 100644
--- a/content/browser/service_worker/service_worker_registry.h
+++ b/content/browser/service_worker/service_worker_registry.h
@@ -11,9 +11,8 @@
 #include "base/files/file_path.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/threading/sequence_bound.h"
-#include "content/browser/service_worker/service_worker_database.h"
+#include "components/services/storage/public/mojom/service_worker_storage_control.mojom.h"
 #include "content/browser/service_worker/service_worker_registration.h"
-#include "content/browser/service_worker/service_worker_storage.h"
 #include "content/common/content_export.h"
 #include "mojo/public/cpp/bindings/remote.h"
 
@@ -52,8 +51,10 @@
 // connection should be closed before shutdown.
 class CONTENT_EXPORT ServiceWorkerRegistry {
  public:
-  using ResourceList = ServiceWorkerStorage::ResourceList;
-  using RegistrationList = ServiceWorkerStorage::RegistrationList;
+  using ResourceList =
+      std::vector<storage::mojom::ServiceWorkerResourceRecordPtr>;
+  using RegistrationList =
+      std::vector<storage::mojom::ServiceWorkerRegistrationDataPtr>;
   using FindRegistrationCallback = base::OnceCallback<void(
       blink::ServiceWorkerStatusCode status,
       scoped_refptr<ServiceWorkerRegistration> registration)>;
@@ -347,7 +348,7 @@
       uint64_t call_id,
       storage::mojom::ServiceWorkerDatabaseStatus database_status,
       uint64_t deleted_resources_size,
-      ServiceWorkerStorage::OriginState origin_state);
+      storage::mojom::ServiceWorkerStorageOriginState origin_state);
 
   void DidUpdateRegistration(
       StatusCallback callback,
diff --git a/content/browser/service_worker/service_worker_registry_unittest.cc b/content/browser/service_worker/service_worker_registry_unittest.cc
index c4a7a85..34174a0 100644
--- a/content/browser/service_worker/service_worker_registry_unittest.cc
+++ b/content/browser/service_worker/service_worker_registry_unittest.cc
@@ -510,9 +510,10 @@
     base::RunLoop loop;
     storage_control()->GetPurgeableResourceIdsForTest(
         base::BindLambdaForTesting(
-            [&](ServiceWorkerDatabase::Status status,
+            [&](storage::mojom::ServiceWorkerDatabaseStatus status,
                 const std::vector<int64_t>& resource_ids) {
-              EXPECT_EQ(status, ServiceWorkerDatabase::Status::kOk);
+              EXPECT_EQ(status,
+                        storage::mojom::ServiceWorkerDatabaseStatus::kOk);
               ids = resource_ids;
               loop.Quit();
             }));
@@ -524,9 +525,9 @@
     std::vector<int64_t> ids;
     base::RunLoop loop;
     storage_control()->GetPurgingResourceIdsForTest(base::BindLambdaForTesting(
-        [&](ServiceWorkerDatabase::Status status,
+        [&](storage::mojom::ServiceWorkerDatabaseStatus status,
             const std::vector<int64_t>& resource_ids) {
-          EXPECT_EQ(status, ServiceWorkerDatabase::Status::kOk);
+          EXPECT_EQ(status, storage::mojom::ServiceWorkerDatabaseStatus::kOk);
           ids = resource_ids;
           loop.Quit();
         }));
@@ -2157,9 +2158,10 @@
     base::RunLoop loop;
     storage_control()->GetUncommittedResourceIdsForTest(
         base::BindLambdaForTesting(
-            [&](ServiceWorkerDatabase::Status status,
+            [&](storage::mojom::ServiceWorkerDatabaseStatus status,
                 const std::vector<int64_t>& resource_ids) {
-              EXPECT_EQ(status, ServiceWorkerDatabase::Status::kOk);
+              EXPECT_EQ(status,
+                        storage::mojom::ServiceWorkerDatabaseStatus::kOk);
               ids = resource_ids;
               loop.Quit();
             }));
diff --git a/content/browser/service_worker/service_worker_script_cache_map.h b/content/browser/service_worker/service_worker_script_cache_map.h
index c7b570a..9da028b 100644
--- a/content/browser/service_worker/service_worker_script_cache_map.h
+++ b/content/browser/service_worker/service_worker_script_cache_map.h
@@ -15,7 +15,6 @@
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "components/services/storage/public/mojom/service_worker_storage_control.mojom.h"
-#include "content/browser/service_worker/service_worker_database.h"
 #include "content/common/content_export.h"
 #include "mojo/public/cpp/bindings/remote.h"
 #include "net/base/completion_once_callback.h"
diff --git a/content/browser/service_worker/service_worker_test_utils.cc b/content/browser/service_worker/service_worker_test_utils.cc
index 58d3220..3780586 100644
--- a/content/browser/service_worker/service_worker_test_utils.cc
+++ b/content/browser/service_worker/service_worker_test_utils.cc
@@ -19,10 +19,8 @@
 #include "content/browser/service_worker/service_worker_consts.h"
 #include "content/browser/service_worker/service_worker_container_host.h"
 #include "content/browser/service_worker/service_worker_context_core.h"
-#include "content/browser/service_worker/service_worker_database.h"
 #include "content/browser/service_worker/service_worker_host.h"
 #include "content/browser/service_worker/service_worker_registration.h"
-#include "content/browser/service_worker/service_worker_storage.h"
 #include "content/common/frame.mojom.h"
 #include "content/common/frame_messages.h"
 #include "content/common/frame_messages.mojom.h"
diff --git a/content/browser/service_worker/service_worker_test_utils.h b/content/browser/service_worker/service_worker_test_utils.h
index ce43825a7f..29d4aa3 100644
--- a/content/browser/service_worker/service_worker_test_utils.h
+++ b/content/browser/service_worker/service_worker_test_utils.h
@@ -15,7 +15,6 @@
 #include "base/task/post_task.h"
 #include "components/services/storage/public/mojom/service_worker_storage_control.mojom.h"
 #include "content/browser/service_worker/service_worker_cache_writer.h"
-#include "content/browser/service_worker/service_worker_database.h"
 #include "content/browser/service_worker/service_worker_host.h"
 #include "content/browser/service_worker/service_worker_single_script_update_checker.h"
 #include "content/common/navigation_client.mojom.h"
diff --git a/content/browser/service_worker/service_worker_unregister_job.cc b/content/browser/service_worker/service_worker_unregister_job.cc
index 951db17..4a92247 100644
--- a/content/browser/service_worker/service_worker_unregister_job.cc
+++ b/content/browser/service_worker/service_worker_unregister_job.cc
@@ -11,7 +11,6 @@
 #include "content/browser/service_worker/service_worker_context_core.h"
 #include "content/browser/service_worker/service_worker_job_coordinator.h"
 #include "content/browser/service_worker/service_worker_registration.h"
-#include "content/browser/service_worker/service_worker_storage.h"
 #include "content/browser/service_worker/service_worker_version.h"
 #include "content/common/service_worker/service_worker_utils.h"
 #include "third_party/blink/public/mojom/service_worker/service_worker_registration.mojom.h"
diff --git a/content/browser/service_worker/service_worker_update_checker.cc b/content/browser/service_worker/service_worker_update_checker.cc
index 74c77dc..6e8e9f8 100644
--- a/content/browser/service_worker/service_worker_update_checker.cc
+++ b/content/browser/service_worker/service_worker_update_checker.cc
@@ -13,7 +13,6 @@
 #include "content/browser/service_worker/service_worker_consts.h"
 #include "content/browser/service_worker/service_worker_context_core.h"
 #include "content/browser/service_worker/service_worker_context_wrapper.h"
-#include "content/browser/service_worker/service_worker_storage.h"
 #include "content/browser/service_worker/service_worker_version.h"
 #include "content/browser/storage_partition_impl.h"
 #include "content/public/browser/browser_task_traits.h"
diff --git a/content/browser/service_worker/service_worker_update_checker.h b/content/browser/service_worker/service_worker_update_checker.h
index f356ca6d..b35124e 100644
--- a/content/browser/service_worker/service_worker_update_checker.h
+++ b/content/browser/service_worker/service_worker_update_checker.h
@@ -10,7 +10,6 @@
 #include <vector>
 
 #include "base/callback.h"
-#include "content/browser/service_worker/service_worker_database.h"
 #include "content/browser/service_worker/service_worker_single_script_update_checker.h"
 #include "content/browser/service_worker/service_worker_updated_script_loader.h"
 
diff --git a/content/browser/web_contents/web_contents_view_aura_unittest.cc b/content/browser/web_contents/web_contents_view_aura_unittest.cc
index 66a21888..b33e58b 100644
--- a/content/browser/web_contents/web_contents_view_aura_unittest.cc
+++ b/content/browser/web_contents/web_contents_view_aura_unittest.cc
@@ -549,7 +549,7 @@
   std::vector<ui::FileInfo> file_infos;
   EXPECT_TRUE(data->GetVirtualFilenames(&file_infos));
   ASSERT_EQ(1ULL, file_infos.size());
-  EXPECT_EQ(base::FilePath(url_title + base::ASCIIToUTF16(".url")),
+  EXPECT_EQ(base::FilePath(base::UTF16ToWide(url_title) + L".url"),
             file_infos[0].display_name);
 
   ui::DropTargetEvent event(*data.get(), kClientPt, kScreenPt,
diff --git a/content/child/dwrite_font_proxy/dwrite_font_proxy_win_unittest.cc b/content/child/dwrite_font_proxy/dwrite_font_proxy_win_unittest.cc
index a51415f..1a84c5f 100644
--- a/content/child/dwrite_font_proxy/dwrite_font_proxy_win_unittest.cc
+++ b/content/child/dwrite_font_proxy/dwrite_font_proxy_win_unittest.cc
@@ -38,16 +38,18 @@
   }
 
   static void SetupFonts(FakeFontCollection* fonts) {
-    fonts->AddFont(L"Aardvark")
-        .AddFamilyName(L"en-us", L"Aardvark")
-        .AddFamilyName(L"de-de", L"Erdferkel")
+    fonts->AddFont(STRING16_LITERAL("Aardvark"))
+        .AddFamilyName(STRING16_LITERAL("en-us"), STRING16_LITERAL("Aardvark"))
+        .AddFamilyName(STRING16_LITERAL("de-de"), STRING16_LITERAL("Erdferkel"))
         .AddFilePath(base::FilePath(L"X:\\Nonexistent\\Folder\\Aardvark.ttf"));
-    FakeFont& arial =
-        fonts->AddFont(L"Arial").AddFamilyName(L"en-us", L"Arial");
+    FakeFont& arial = fonts->AddFont(STRING16_LITERAL("Arial"))
+                          .AddFamilyName(STRING16_LITERAL("en-us"),
+                                         STRING16_LITERAL("Arial"));
     for (auto& path : arial_font_files)
       arial.AddFilePath(base::FilePath(path));
-    fonts->AddFont(L"Times New Roman")
-        .AddFamilyName(L"en-us", L"Times New Roman")
+    fonts->AddFont(STRING16_LITERAL("Times New Roman"))
+        .AddFamilyName(STRING16_LITERAL("en-us"),
+                       STRING16_LITERAL("Times New Roman"))
         .AddFilePath(base::FilePath(L"X:\\Nonexistent\\Folder\\Times.ttf"));
   }
 
@@ -55,13 +57,13 @@
     DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, __uuidof(IDWriteFactory),
                         &factory);
 
-    std::vector<base::char16> font_path;
+    std::vector<wchar_t> font_path;
     font_path.resize(MAX_PATH);
     SHGetSpecialFolderPath(nullptr /* hwndOwner - reserved */, font_path.data(),
                            CSIDL_FONTS, FALSE /* fCreate*/);
-    base::string16 arial;
+    std::wstring arial;
     arial.append(font_path.data()).append(L"\\arial.ttf");
-    base::string16 arialbd;
+    std::wstring arialbd;
     arialbd.append(font_path.data()).append(L"\\arialbd.ttf");
     arial_font_files.push_back(arial);
     arial_font_files.push_back(arialbd);
@@ -72,10 +74,10 @@
   std::unique_ptr<FakeFontCollection> fake_collection_;
   mswr::ComPtr<DWriteFontCollectionProxy> collection_;
 
-  static std::vector<base::string16> arial_font_files;
+  static std::vector<std::wstring> arial_font_files;
   static mswr::ComPtr<IDWriteFactory> factory;
 };
-std::vector<base::string16> DWriteFontProxyUnitTest::arial_font_files;
+std::vector<std::wstring> DWriteFontProxyUnitTest::arial_font_files;
 mswr::ComPtr<IDWriteFactory> DWriteFontProxyUnitTest::factory;
 
 TEST_F(DWriteFontProxyUnitTest, GetFontFamilyCount) {
@@ -155,8 +157,8 @@
   EXPECT_NE(nullptr, family.Get());
 }
 
-void CheckLocale(const base::string16& locale_name,
-                 const base::string16& expected_value,
+void CheckLocale(const std::wstring& locale_name,
+                 const std::wstring& expected_value,
                  IDWriteLocalizedStrings* strings) {
   UINT32 locale_index = 0;
   BOOL locale_exists = FALSE;
@@ -166,7 +168,7 @@
   UINT32 name_length = 0;
   strings->GetLocaleNameLength(locale_index, &name_length);
   EXPECT_EQ(locale_name.size(), name_length);
-  base::string16 actual_name;
+  std::wstring actual_name;
   name_length++;
   actual_name.resize(name_length);
   strings->GetLocaleName(locale_index, const_cast<WCHAR*>(actual_name.data()),
@@ -176,7 +178,7 @@
   UINT32 string_length = 0;
   strings->GetStringLength(locale_index, &string_length);
   EXPECT_EQ(expected_value.size(), string_length);
-  base::string16 actual_value;
+  std::wstring actual_value;
   string_length++;
   actual_value.resize(string_length);
   strings->GetString(locale_index, const_cast<WCHAR*>(actual_value.data()),
@@ -214,7 +216,7 @@
   CheckLocale(L"en-us", L"Aardvark", names.Get());
   CheckLocale(L"de-de", L"Erdferkel", names.Get());
 
-  base::string16 unused;
+  std::wstring unused;
   unused.resize(25);
   hr = names->GetLocaleName(15234, const_cast<WCHAR*>(unused.data()),
                             unused.size() - 1);
@@ -335,7 +337,9 @@
 
 TEST_F(DWriteFontProxyUnitTest, TestCustomFontFiles) {
   FakeFontCollection fonts;
-  FakeFont& arial = fonts.AddFont(L"Arial").AddFamilyName(L"en-us", L"Arial");
+  FakeFont& arial =
+      fonts.AddFont(STRING16_LITERAL("Arial"))
+          .AddFamilyName(STRING16_LITERAL("en-us"), STRING16_LITERAL("Arial"));
   for (auto& path : arial_font_files) {
     base::File file(base::FilePath(path), base::File::FLAG_OPEN |
                                               base::File::FLAG_READ |
diff --git a/content/child/dwrite_font_proxy/font_fallback_win_unittest.cc b/content/child/dwrite_font_proxy/font_fallback_win_unittest.cc
index 6a50dc52..2fcbe9b 100644
--- a/content/child/dwrite_font_proxy/font_fallback_win_unittest.cc
+++ b/content/child/dwrite_font_proxy/font_fallback_win_unittest.cc
@@ -34,16 +34,17 @@
                                        L"en-us", true /* ignoreUserOverride */,
                                        &number_substitution_);
 
-    std::vector<base::char16> font_path;
+    std::vector<wchar_t> font_path;
     font_path.resize(MAX_PATH);
     SHGetSpecialFolderPath(nullptr /* hwndOwner - reserved */, font_path.data(),
                            CSIDL_FONTS, FALSE /* fCreate*/);
-    base::FilePath segoe_path = base::FilePath(base::string16(font_path.data()))
+    base::FilePath segoe_path = base::FilePath(std::wstring(font_path.data()))
                                     .Append(L"\\seguisym.ttf");
 
     fake_collection_ = std::make_unique<FakeFontCollection>();
-    fake_collection_->AddFont(L"Segoe UI Symbol")
-        .AddFamilyName(L"en-us", L"Segoe UI Symbol")
+    fake_collection_->AddFont(STRING16_LITERAL("Segoe UI Symbol"))
+        .AddFamilyName(STRING16_LITERAL("en-us"),
+                       STRING16_LITERAL("Segoe UI Symbol"))
         .AddFilePath(segoe_path);
 
     DWriteFontCollectionProxy::Create(&collection_, factory_.Get(),
diff --git a/content/child/font_warmup_win_unittest.cc b/content/child/font_warmup_win_unittest.cc
index 48a47b80..af27ca4 100644
--- a/content/child/font_warmup_win_unittest.cc
+++ b/content/child/font_warmup_win_unittest.cc
@@ -63,9 +63,10 @@
     EXPECT_TRUE(base::PathService::Get(content::DIR_TEST_DATA, &data_path));
 
     base::FilePath gdi_path = data_path.AppendASCII("font/gdi_test.ttf");
-    fonts->AddFont(L"GDITest")
-        .AddFamilyName(L"en-us", L"GDITest")
-        .AddFamilyName(L"de-de", L"GDIUntersuchung")
+    fonts->AddFont(STRING16_LITERAL("GDITest"))
+        .AddFamilyName(STRING16_LITERAL("en-us"), STRING16_LITERAL("GDITest"))
+        .AddFamilyName(STRING16_LITERAL("de-de"),
+                       STRING16_LITERAL("GDIUntersuchung"))
         .AddFilePath(gdi_path);
   }
 
diff --git a/content/public/android/java/src/org/chromium/content/browser/remoteobjects/RemoteObjectImpl.java b/content/public/android/java/src/org/chromium/content/browser/remoteobjects/RemoteObjectImpl.java
index 9d6dfa0a..16a5d259 100644
--- a/content/public/android/java/src/org/chromium/content/browser/remoteobjects/RemoteObjectImpl.java
+++ b/content/public/android/java/src/org/chromium/content/browser/remoteobjects/RemoteObjectImpl.java
@@ -201,7 +201,13 @@
         Class<?>[] parameterTypes = method.getParameterTypes();
         Object[] args = new Object[numArguments];
         for (int i = 0; i < numArguments; i++) {
-            args[i] = convertArgument(arguments[i], parameterTypes[i], StringCoercionMode.COERCE);
+            try {
+                args[i] = convertArgument(arguments[i], parameterTypes[i],
+                        StringCoercionMode.COERCE, objectIdAllocator);
+            } catch (IllegalArgumentException e) {
+                callback.call(makeErrorResult(RemoteInvocationError.NON_ASSIGNABLE_TYPES));
+                return;
+            }
         }
 
         Object result = null;
@@ -482,7 +488,7 @@
     }
 
     private static Object convertArgument(RemoteInvocationArgument argument, Class<?> parameterType,
-            @StringCoercionMode int stringCoercionMode) {
+            @StringCoercionMode int stringCoercionMode, ObjectIdAllocator objectIdAllocator) {
         switch (argument.which()) {
             case RemoteInvocationArgument.Tag.NumberValue:
                 // See http://jdk6.java.net/plugin2/liveconnect/#JS_NUMBER_VALUES.
@@ -599,8 +605,8 @@
 
                     Object result = Array.newInstance(componentType, arrayValue.length);
                     for (int i = 0; i < arrayValue.length; i++) {
-                        Object element = convertArgument(
-                                arrayValue[i], componentType, StringCoercionMode.DO_NOT_COERCE);
+                        Object element = convertArgument(arrayValue[i], componentType,
+                                StringCoercionMode.DO_NOT_COERCE, objectIdAllocator);
                         Array.set(result, i, element);
                     }
                     return result;
@@ -670,6 +676,28 @@
                     // raising a JavaScript exception.
                     return null;
                 }
+            case RemoteInvocationArgument.Tag.ObjectIdValue:
+                if (parameterType == String.class) {
+                    return stringCoercionMode == StringCoercionMode.COERCE ? "undefined" : null;
+                } else if (parameterType.isPrimitive()) {
+                    return getPrimitiveZero(parameterType);
+                } else if (parameterType.isArray()) {
+                    // LIVECONNECT_COMPLIANCE: Existing behavior is to convert to null. Spec
+                    // requires raising a JavaScript exception.
+                    return null;
+                }
+
+                Object object = objectIdAllocator.getObjectById(argument.getObjectIdValue());
+                if (object == null) {
+                    // LIVECONNECT_COMPLIANCE: Existing behavior is to pass null. Spec
+                    // requires converting if the target type is
+                    // netscape.javascript.JSObject, otherwise raising a JavaScript
+                    // exception.
+                    return null;
+                }
+                if (parameterType.isInstance(object)) return object;
+
+                throw new IllegalArgumentException("incompatible argument type with object id");
             default:
                 throw new RuntimeException("invalid wire argument type");
         }
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeBasicsTest.java b/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeBasicsTest.java
index 300fa07..5cf72fb 100644
--- a/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeBasicsTest.java
+++ b/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeBasicsTest.java
@@ -784,15 +784,13 @@
     @Test
     @SmallTest
     @Feature({"AndroidWebView", "Android-JavaBridge"})
-    @UseMethodParameter(JavaBridgeActivityTestRule.LegacyTestParams.class)
+    @UseMethodParameter(JavaBridgeActivityTestRule.MojoTestParams.class)
     public void testReflectPublicMethod(boolean useMojo) throws Throwable {
         mActivityTestRule.injectObjectAndReload(new Object() {
-            @JavascriptInterface
             public Class<?> myGetClass() {
                 return getClass();
             }
 
-            @JavascriptInterface
             public String method() {
                 return "foo";
             }
@@ -806,10 +804,9 @@
     @Test
     @SmallTest
     @Feature({"AndroidWebView", "Android-JavaBridge"})
-    @UseMethodParameter(JavaBridgeActivityTestRule.LegacyTestParams.class)
+    @UseMethodParameter(JavaBridgeActivityTestRule.MojoTestParams.class)
     public void testReflectPublicField(boolean useMojo) throws Throwable {
         mActivityTestRule.injectObjectAndReload(new Object() {
-            @JavascriptInterface
             public Class<?> myGetClass() {
                 return getClass();
             }
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeCoercionTest.java b/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeCoercionTest.java
index 28832071550..89bf296 100644
--- a/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeCoercionTest.java
+++ b/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeCoercionTest.java
@@ -621,7 +621,7 @@
     @Test
     @SmallTest
     @Feature({"AndroidWebView", "Android-JavaBridge"})
-    @UseMethodParameter(JavaBridgeActivityTestRule.LegacyTestParams.class)
+    @UseMethodParameter(JavaBridgeActivityTestRule.MojoTestParams.class)
     public void testPassJavaObject(boolean useMojo) throws Throwable {
         mActivityTestRule.executeJavaScript(
                 "testObject.setObjectValue(testObject.getObjectInstance());");
@@ -701,7 +701,7 @@
     @Test
     @SmallTest
     @Feature({"AndroidWebView", "Android-JavaBridge"})
-    @UseMethodParameter(JavaBridgeActivityTestRule.LegacyTestParams.class)
+    @UseMethodParameter(JavaBridgeActivityTestRule.MojoTestParams.class)
     public void testPassJavaObjectFromCustomClassLoader(boolean useMojo) throws Throwable {
         // Compiled bytecode (dex) for the following class:
         //
diff --git a/content/public/android/junit/src/org/chromium/content/browser/remoteobjects/RemoteObjectImplTest.java b/content/public/android/junit/src/org/chromium/content/browser/remoteobjects/RemoteObjectImplTest.java
index 169919cc..b13760e2 100644
--- a/content/public/android/junit/src/org/chromium/content/browser/remoteobjects/RemoteObjectImplTest.java
+++ b/content/public/android/junit/src/org/chromium/content/browser/remoteobjects/RemoteObjectImplTest.java
@@ -766,6 +766,75 @@
     }
 
     @Test
+    public void testArgumentConversionObjectId() {
+        Object foo = new Object();
+        Object target = new Object() {
+            @TestJavascriptInterface
+            public Object getFoo() {
+                return foo;
+            }
+            @TestJavascriptInterface
+            public boolean isFoo(Object object) {
+                return foo == object;
+            }
+            @TestJavascriptInterface
+            public int isNotFoo(int number) {
+                return number;
+            }
+        };
+        when(mIdAllocator.getObjectId(foo, TestJavascriptInterface.class)).thenReturn(42);
+        when(mIdAllocator.getObjectById(42)).thenReturn(foo);
+
+        RemoteObject remoteObject = newRemoteObjectImpl(target, TestJavascriptInterface.class);
+        RemoteObject.InvokeMethodResponse response = mock(RemoteObject.InvokeMethodResponse.class);
+        remoteObject.invokeMethod("getFoo", new RemoteInvocationArgument[] {}, response);
+        remoteObject.invokeMethod(
+                "isFoo", new RemoteInvocationArgument[] {objectIdArgument(42)}, response);
+        remoteObject.invokeMethod(
+                "isFoo", new RemoteInvocationArgument[] {objectIdArgument(100)}, response);
+        remoteObject.invokeMethod(
+                "isNotFoo", new RemoteInvocationArgument[] {objectIdArgument(42)}, response);
+
+        verify(response).call(resultIsObject(42));
+        verify(response).call(resultIsBoolean(true));
+        verify(response).call(resultIsBoolean(false));
+        verify(response).call(resultIsNumber(0));
+    }
+
+    @Test
+    public void testObjectNonAssignableType() {
+        class CustomType {}
+        Object foo = new Object();
+        Object target = new Object() {
+            @TestJavascriptInterface
+            public Object getFoo() {
+                return foo;
+            }
+            @TestJavascriptInterface
+            public boolean exposedNonAssignableTypeMethodWithBooleanObject(Boolean value) {
+                return true;
+            }
+            @TestJavascriptInterface
+            public boolean exposedNonAssignableTypeMethodWithCustomObject(CustomType custom) {
+                return true;
+            }
+        };
+        when(mIdAllocator.getObjectId(foo, TestJavascriptInterface.class)).thenReturn(42);
+        when(mIdAllocator.getObjectById(42)).thenReturn(foo);
+
+        RemoteObject remoteObject = newRemoteObjectImpl(target, TestJavascriptInterface.class);
+        RemoteObject.InvokeMethodResponse response = mock(RemoteObject.InvokeMethodResponse.class);
+        remoteObject.invokeMethod("getFoo", new RemoteInvocationArgument[] {}, response);
+        remoteObject.invokeMethod("exposedNonAssignableTypeMethodWithBooleanObject",
+                new RemoteInvocationArgument[] {objectIdArgument(42)}, response);
+        remoteObject.invokeMethod("exposedNonAssignableTypeMethodWithCustomObject",
+                new RemoteInvocationArgument[] {objectIdArgument(42)}, response);
+
+        verify(response).call(resultIsObject(42));
+        verify(response, times(2)).call(resultHasError(RemoteInvocationError.NON_ASSIGNABLE_TYPES));
+    }
+
+    @Test
     public void testResultConversionVoid() {
         Object target = new Object() {
             @TestJavascriptInterface
@@ -986,6 +1055,12 @@
         return argument;
     }
 
+    private RemoteInvocationArgument objectIdArgument(int objectId) {
+        RemoteInvocationArgument argument = new RemoteInvocationArgument();
+        argument.setObjectIdValue(objectId);
+        return argument;
+    }
+
     private RemoteInvocationArgument arrayArgument(RemoteInvocationArgument... elements) {
         RemoteInvocationArgument argument = new RemoteInvocationArgument();
         argument.setArrayValue(elements);
diff --git a/content/public/common/drop_data_unittest.cc b/content/public/common/drop_data_unittest.cc
index 596eea3f..8c40db86 100644
--- a/content/public/common/drop_data_unittest.cc
+++ b/content/public/common/drop_data_unittest.cc
@@ -13,7 +13,7 @@
 
 #if defined(OS_WIN)
 #include "base/strings/utf_string_conversions.h"
-#define CONVERT_IF_NEEDED(x) base::UTF8ToUTF16((x))
+#define CONVERT_IF_NEEDED(x) base::UTF8ToWide((x))
 #else
 #define CONVERT_IF_NEEDED(x) x
 #endif
diff --git a/content/test/data/accessibility/aria/aria-hidden-described-by-expected-blink.txt b/content/test/data/accessibility/aria/aria-hidden-described-by-expected-blink.txt
index 8eb6cd846..7f61695 100644
--- a/content/test/data/accessibility/aria/aria-hidden-described-by-expected-blink.txt
+++ b/content/test/data/accessibility/aria/aria-hidden-described-by-expected-blink.txt
@@ -3,15 +3,10 @@
 ++++genericContainer ignored
 ++++++genericContainer ignored
 ++++++++genericContainer ignored invisible name='span-1'
-++++++++++staticText ignored invisible
 ++++++++++genericContainer ignored invisible name='span-2'
-++++++++++staticText ignored invisible
 ++++++++++genericContainer ignored invisible description='span-4' name='span-3' descriptionFrom=relatedElement describedbyIds=genericContainer
-++++++++++++staticText ignored invisible
 ++++++++++++genericContainer ignored invisible name='span-4'
-++++++++++++staticText ignored invisible
-++++++++++staticText ignored invisible
 ++++++++genericContainer description='span-1' name='span-A' descriptionFrom=relatedElement describedbyIds=genericContainer
 ++++++++genericContainer description='span-2' name='span-B' descriptionFrom=relatedElement describedbyIds=genericContainer
 ++++++++genericContainer description='span-3' name='span-C' descriptionFrom=relatedElement describedbyIds=genericContainer
-++++++++genericContainer description='span-4' name='span-D' descriptionFrom=relatedElement describedbyIds=genericContainer
+++++++++genericContainer description='span-4' name='span-D' descriptionFrom=relatedElement describedbyIds=genericContainer
\ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-hidden-focused-button-expected-blink.txt b/content/test/data/accessibility/aria/aria-hidden-focused-button-expected-blink.txt
index cf8de32c..450905cf 100644
--- a/content/test/data/accessibility/aria/aria-hidden-focused-button-expected-blink.txt
+++ b/content/test/data/accessibility/aria/aria-hidden-focused-button-expected-blink.txt
@@ -4,7 +4,5 @@
 ++++++genericContainer ignored invisible
 ++++++++button invisible name='Button 1'
 ++++++++++staticText ignored invisible name='Button 1'
-++++++++staticText ignored invisible name=' '
 ++++++++button invisible name='Button 2'
-++++++++++staticText ignored invisible name='Button 2'
-++++++++staticText ignored invisible
+++++++++++staticText ignored invisible name='Button 2'
\ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-hidden-focused-input-expected-blink.txt b/content/test/data/accessibility/aria/aria-hidden-focused-input-expected-blink.txt
index c857001..6842572 100644
--- a/content/test/data/accessibility/aria/aria-hidden-focused-input-expected-blink.txt
+++ b/content/test/data/accessibility/aria/aria-hidden-focused-input-expected-blink.txt
@@ -3,6 +3,4 @@
 ++++genericContainer ignored
 ++++++genericContainer ignored invisible
 ++++++++textField invisible name='input 1'
-++++++++staticText ignored invisible name=' '
-++++++++textField invisible name='input 2'
-++++++++staticText ignored invisible
+++++++++textField invisible name='input 2'
\ No newline at end of file
diff --git a/content/test/data/accessibility/aria/aria-hidden-single-descendant-expected-blink.txt b/content/test/data/accessibility/aria/aria-hidden-single-descendant-expected-blink.txt
index d16d2ca2..351797b4 100644
--- a/content/test/data/accessibility/aria/aria-hidden-single-descendant-expected-blink.txt
+++ b/content/test/data/accessibility/aria/aria-hidden-single-descendant-expected-blink.txt
@@ -4,7 +4,6 @@
 ++++++genericContainer ignored invisible
 ++++++++button invisible name='expect invisible subtree'
 ++++++++++staticText ignored invisible name='expect invisible subtree'
-++++++++staticText ignored invisible
 ++++++genericContainer
 ++++++++button name='expect visible subtree'
 ++++++++++staticText name='expect visible subtree'
diff --git a/content/test/data/accessibility/aria/aria-hidden-single-descendant-visibility-hidden-expected-blink.txt b/content/test/data/accessibility/aria/aria-hidden-single-descendant-visibility-hidden-expected-blink.txt
index 0bc43546..2e7c237 100644
--- a/content/test/data/accessibility/aria/aria-hidden-single-descendant-visibility-hidden-expected-blink.txt
+++ b/content/test/data/accessibility/aria/aria-hidden-single-descendant-visibility-hidden-expected-blink.txt
@@ -5,15 +5,13 @@
 ++++++++genericContainer ignored invisible
 ++++++++++button ignored invisible name='expect invisible subtree'
 ++++++++++++staticText ignored invisible name='expect invisible subtree'
-++++++++++staticText ignored invisible
 ++++++++genericContainer invisible
 ++++++++++button ignored invisible name='expect invisible subtree'
 ++++++++genericContainer ignored invisible
 ++++++++++button invisible name='expect invisible subtree'
 ++++++++++++staticText ignored invisible name='expect invisible subtree'
-++++++++++staticText ignored invisible
 ++++++++genericContainer
 ++++++++++button name='expect visible subtree'
 ++++++++++++staticText name='expect visible subtree'
 ++++++++++++++inlineTextBox name='expect visible subtree'
-++++++group name='Done'
+++++++group name='Done'
\ No newline at end of file
diff --git a/content/test/data/accessibility/css/before-after-block-expected-blink.txt b/content/test/data/accessibility/css/before-after-block-expected-blink.txt
new file mode 100644
index 0000000..1cadc25
--- /dev/null
+++ b/content/test/data/accessibility/css/before-after-block-expected-blink.txt
@@ -0,0 +1,11 @@
+rootWebArea htmlTag='#document'
+++genericContainer ignored htmlTag='html'
+++++genericContainer ignored htmlTag='body'
+++++++genericContainer ignored htmlTag='div'
+++++++++staticText name='A'
+++++++++++inlineTextBox name='A'
+++++++++genericContainer ignored htmlTag='::before'
+++++++++staticText name='bold'
+++++++++++inlineTextBox name='bold'
+++++++++staticText name=' element'
+++++++++++inlineTextBox name=' element'
\ No newline at end of file
diff --git a/content/test/data/accessibility/css/before-after-block.html b/content/test/data/accessibility/css/before-after-block.html
new file mode 100644
index 0000000..06c0b7ea
--- /dev/null
+++ b/content/test/data/accessibility/css/before-after-block.html
@@ -0,0 +1,12 @@
+<!--
+@BLINK-ALLOW:htmlTag*
+-->
+<html>
+<head><style>
+  b::before, i::after {
+    content: "";
+    display: block;
+  }
+</style></head>
+<body><div>A <b>bold</b> element</div></body>
+</html>
\ No newline at end of file
diff --git a/content/test/data/accessibility/css/before-after-code-expected-blink.txt b/content/test/data/accessibility/css/before-after-code-expected-blink.txt
new file mode 100644
index 0000000..e9b332d
--- /dev/null
+++ b/content/test/data/accessibility/css/before-after-code-expected-blink.txt
@@ -0,0 +1,59 @@
+rootWebArea
+++genericContainer ignored
+++++genericContainer ignored
+++++++genericContainer
+++++++++staticText name='start'
+++++++++++inlineTextBox name='start'
+++++++genericContainer ignored
+++++++++staticText name='text with '
+++++++++++inlineTextBox name='text with '
+++++++++staticText name='['
+++++++++++inlineTextBox name='['
+++++++++staticText name=':before'
+++++++++++inlineTextBox name=':before'
+++++++++staticText name=']'
+++++++++++inlineTextBox name=']'
+++++++++staticText name=' and '
+++++++++++inlineTextBox name=' and '
+++++++++staticText name='['
+++++++++++inlineTextBox name='['
+++++++++staticText name=':after'
+++++++++++inlineTextBox name=':after'
+++++++++staticText name=']'
+++++++++++inlineTextBox name=']'
+++++++++staticText name=' content, then a'
+++++++++++inlineTextBox name='content, then a'
+++++++++genericContainer ignored
+++++++++++staticText name='  '
+++++++++staticText name='bold'
+++++++++++inlineTextBox name='bold'
+++++++++staticText name=' element with a '
+++++++++++inlineTextBox name=' element '
+++++++++++inlineTextBox name='with a '
+++++++++staticText name='['
+++++++++++inlineTextBox name='['
+++++++++staticText name='block'
+++++++++++inlineTextBox name='block'
+++++++++staticText name=']'
+++++++++++inlineTextBox name=']'
+++++++++staticText name=' before content then a '
+++++++++++inlineTextBox name='before content '
+++++++++++inlineTextBox name='then a '
+++++++++staticText name='italic'
+++++++++++inlineTextBox name='italic'
+++++++++genericContainer ignored
+++++++++++staticText name='  '
+++++++++staticText name='element with a '
+++++++++++inlineTextBox name='element with a '
+++++++++staticText name='['
+++++++++++inlineTextBox name='['
+++++++++staticText name='block'
+++++++++++inlineTextBox name='block'
+++++++++staticText name=']'
+++++++++++inlineTextBox name=']'
+++++++++staticText name=' after content'
+++++++++++inlineTextBox name=' after '
+++++++++++inlineTextBox name='content'
+++++++genericContainer
+++++++++staticText name='end'
+++++++++++inlineTextBox name='end'
\ No newline at end of file
diff --git a/content/test/data/accessibility/css/before-after-code-expected-uia-win.txt b/content/test/data/accessibility/css/before-after-code-expected-uia-win.txt
new file mode 100644
index 0000000..2e24e69
--- /dev/null
+++ b/content/test/data/accessibility/css/before-after-code-expected-uia-win.txt
@@ -0,0 +1,28 @@
+Document
+++Group IsControlElement=false
+++++Text Name='start'
+++Text Name='text with '
+++Text Name='['
+++Text Name=':before'
+++Text Name=']'
+++Text Name=' and '
+++Text Name='['
+++Text Name=':after'
+++Text Name=']'
+++Text Name=' content, then a'
+++Text Name='  '
+++Text Name='bold'
+++Text Name=' element with a '
+++Text Name='['
+++Text Name='block'
+++Text Name=']'
+++Text Name=' before content then a '
+++Text Name='italic'
+++Text Name='  '
+++Text Name='element with a '
+++Text Name='['
+++Text Name='block'
+++Text Name=']'
+++Text Name=' after content'
+++Group IsControlElement=false
+++++Text Name='end'
\ No newline at end of file
diff --git a/content/test/data/accessibility/css/before-after-code.html b/content/test/data/accessibility/css/before-after-code.html
new file mode 100644
index 0000000..71eaabf
--- /dev/null
+++ b/content/test/data/accessibility/css/before-after-code.html
@@ -0,0 +1,32 @@
+<html>
+<head><style>
+  div {
+    width: 100px;
+  }
+  code::before {
+    content: "[";
+  }
+  code::after {
+    content: "]";
+  }
+  b::before, i::after {
+    width: 5px;
+    height: 5px;
+    content: "";
+    display: block;
+    background: black;
+  }
+</style></head>
+<body>
+  <div>start</div>
+  <div>
+    text with <code>:before</code>
+    and <code>:after</code> content,
+    then a <b>bold</b> element with a
+    <code>block</code> before content
+    then a <i>italic</i> element with
+    a <code>block</code> after content
+  </div>
+  <div>end</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/content/test/data/accessibility/css/content-visibility-to-hidden-expected-blink.txt b/content/test/data/accessibility/css/content-visibility-to-hidden-expected-blink.txt
new file mode 100644
index 0000000..75c56af
--- /dev/null
+++ b/content/test/data/accessibility/css/content-visibility-to-hidden-expected-blink.txt
@@ -0,0 +1,7 @@
+rootWebArea name='done'
+++genericContainer ignored
+++++genericContainer ignored
+++++++genericContainer
+++++++++genericContainer className='hidden' name='Label'
+++++++++++genericContainer ignored invisible
+++++++++++genericContainer ignored invisible
\ No newline at end of file
diff --git a/content/test/data/accessibility/css/content-visibility-to-hidden.html b/content/test/data/accessibility/css/content-visibility-to-hidden.html
new file mode 100644
index 0000000..0344c815
--- /dev/null
+++ b/content/test/data/accessibility/css/content-visibility-to-hidden.html
@@ -0,0 +1,27 @@
+<!--
+@BLINK-ALLOW:className*
+@WAIT-FOR:done
+-->
+<style>
+.hidden {
+  content-visibility: hidden;
+}
+</style>
+<div id="container">
+  <div id="target" aria-labelledby="target_label">
+    target
+    <div id="child">
+      child
+    </div>
+    <div id="target_label">Label</div>
+  </div>
+</div>
+
+<script>
+  document.addEventListener('DOMContentLoaded', () => {
+    setTimeout(() => {
+      document.querySelector('#target').classList.add("hidden");
+      document.title='done';
+    }, 50);
+  });
+</script>
diff --git a/content/test/data/accessibility/css/pseudo-with-code-expected-uia-win.txt b/content/test/data/accessibility/css/pseudo-with-code-expected-uia-win.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/content/test/data/accessibility/css/pseudo-with-code-expected-uia-win.txt
diff --git a/content/test/data/accessibility/css/pseudo-with-code.html b/content/test/data/accessibility/css/pseudo-with-code.html
new file mode 100644
index 0000000..71eaabf
--- /dev/null
+++ b/content/test/data/accessibility/css/pseudo-with-code.html
@@ -0,0 +1,32 @@
+<html>
+<head><style>
+  div {
+    width: 100px;
+  }
+  code::before {
+    content: "[";
+  }
+  code::after {
+    content: "]";
+  }
+  b::before, i::after {
+    width: 5px;
+    height: 5px;
+    content: "";
+    display: block;
+    background: black;
+  }
+</style></head>
+<body>
+  <div>start</div>
+  <div>
+    text with <code>:before</code>
+    and <code>:after</code> content,
+    then a <b>bold</b> element with a
+    <code>block</code> before content
+    then a <i>italic</i> element with
+    a <code>block</code> after content
+  </div>
+  <div>end</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt
index a3993e4..62df9b4 100644
--- a/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt
@@ -702,6 +702,124 @@
 # All platforms, Vulkan backend
 crbug.com/1114284 [ linux angle-swiftshader passthrough google-0xffff ] conformance/uniforms/out-of-bounds-uniform-array-access.html [ RetryOnFailure ]
 
+# Windows. All backends.
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/buffers/buffer-data-dynamic-delay.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/canvas/buffer-offscreen-test.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/canvas/buffer-preserve-test.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/canvas/framebuffer-bindings-unaffected-on-resize.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/canvas/rapid-resizing.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/canvas/texture-bindings-unaffected-on-resize.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/context/context-attribute-preserve-drawing-buffer.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/context/context-hidden-alpha.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/context/context-no-alpha-fbo-with-alpha.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/context/deleted-object-behavior.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/context/user-defined-properties-on-context.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/extensions/oes-texture-float-with-video.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/extensions/oes-texture-half-float-with-video.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/extensions/webgl-draw-buffers.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/glsl/bugs/loop-if-loop-gradient.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/glsl/bugs/qualcomm-crash.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/glsl/bugs/qualcomm-loop-with-continue-crash.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/glsl/bugs/sketchfab-lighting-shader-crash.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/glsl/misc/shader-with-non-reserved-words.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/more/functions/readPixelsBadArgs.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/more/functions/texImage2DHTML.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/more/functions/texSubImage2DHTML.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/offscreencanvas/context-attribute-preserve-drawing-buffer.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/renderbuffers/framebuffer-state-restoration.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/rendering/color-mask-preserved-during-implicit-clears.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/rendering/draw-webgl-to-canvas-2d-repeatedly.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/rendering/many-draw-calls.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/rendering/scissor-rect-repeated-rendering.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/state/state-uneffected-after-compositing.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/image_bitmap_from_video/tex-2d-alpha-alpha-unsigned_byte.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/image_bitmap_from_video/tex-2d-luminance-luminance-unsigned_byte.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/image_bitmap_from_video/tex-2d-luminance_alpha-luminance_alpha-unsigned_byte.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/image_bitmap_from_video/tex-2d-rgb-rgb-unsigned_byte.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/image_bitmap_from_video/tex-2d-rgb-rgb-unsigned_short_5_6_5.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_byte.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/misc/exif-orientation.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/misc/origin-clean-conformance-offscreencanvas.html [ Failure ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/misc/origin-clean-conformance.html [ Failure ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/misc/tex-video-using-tex-unit-non-zero.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/misc/texture-corner-case-videos.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/misc/texture-npot-video.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/misc/texture-upload-size.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/misc/texture-video-transparent.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/video/tex-2d-alpha-alpha-unsigned_byte.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/video/tex-2d-luminance-luminance-unsigned_byte.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/video/tex-2d-luminance_alpha-luminance_alpha-unsigned_byte.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/video/tex-2d-rgb-rgb-unsigned_byte.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/video/tex-2d-rgb-rgb-unsigned_short_5_6_5.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/video/tex-2d-rgba-rgba-unsigned_byte.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/video/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/textures/video/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/uniforms/out-of-bounds-uniform-array-access.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] conformance/uniforms/uniform-samplers-test.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] deqp/data/gles2/shaders/conversions.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] deqp/data/gles2/shaders/functions.html [ Skip ]
+crbug.com/1170944 [ win google angle-swiftshader passthrough ] deqp/data/gles2/shaders/linkage.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/buffers/buffer-data-dynamic-delay.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/canvas/buffer-offscreen-test.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/canvas/buffer-preserve-test.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/canvas/framebuffer-bindings-unaffected-on-resize.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/canvas/rapid-resizing.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/canvas/texture-bindings-unaffected-on-resize.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/context/context-attribute-preserve-drawing-buffer.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/context/context-hidden-alpha.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/context/context-no-alpha-fbo-with-alpha.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/context/deleted-object-behavior.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/context/user-defined-properties-on-context.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/extensions/oes-texture-float-with-video.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/extensions/oes-texture-half-float-with-video.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/extensions/webgl-draw-buffers.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/glsl/bugs/loop-if-loop-gradient.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/glsl/bugs/qualcomm-crash.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/glsl/bugs/qualcomm-loop-with-continue-crash.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/glsl/bugs/sketchfab-lighting-shader-crash.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/glsl/misc/shader-with-non-reserved-words.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/more/functions/readPixelsBadArgs.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/more/functions/texImage2DHTML.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/more/functions/texSubImage2DHTML.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/offscreencanvas/context-attribute-preserve-drawing-buffer.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/renderbuffers/framebuffer-state-restoration.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/rendering/color-mask-preserved-during-implicit-clears.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/rendering/draw-webgl-to-canvas-2d-repeatedly.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/rendering/many-draw-calls.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/rendering/scissor-rect-repeated-rendering.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/state/state-uneffected-after-compositing.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/image_bitmap_from_video/tex-2d-alpha-alpha-unsigned_byte.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/image_bitmap_from_video/tex-2d-luminance-luminance-unsigned_byte.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/image_bitmap_from_video/tex-2d-luminance_alpha-luminance_alpha-unsigned_byte.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/image_bitmap_from_video/tex-2d-rgb-rgb-unsigned_byte.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/image_bitmap_from_video/tex-2d-rgb-rgb-unsigned_short_5_6_5.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_byte.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/misc/exif-orientation.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/misc/origin-clean-conformance-offscreencanvas.html [ Failure ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/misc/origin-clean-conformance.html [ Failure ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/misc/tex-video-using-tex-unit-non-zero.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/misc/texture-corner-case-videos.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/misc/texture-npot-video.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/misc/texture-upload-size.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/misc/texture-video-transparent.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/video/tex-2d-alpha-alpha-unsigned_byte.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/video/tex-2d-luminance-luminance-unsigned_byte.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/video/tex-2d-luminance_alpha-luminance_alpha-unsigned_byte.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/video/tex-2d-rgb-rgb-unsigned_byte.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/video/tex-2d-rgb-rgb-unsigned_short_5_6_5.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/video/tex-2d-rgba-rgba-unsigned_byte.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/video/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/textures/video/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/uniforms/out-of-bounds-uniform-array-access.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] conformance/uniforms/uniform-samplers-test.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] deqp/data/gles2/shaders/conversions.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] deqp/data/gles2/shaders/functions.html [ Skip ]
+crbug.com/1170944 [ win google swiftshader-gl no-passthrough ] deqp/data/gles2/shaders/linkage.html [ Skip ]
+
 # Mac. All backends.
 crbug.com/1099960 [ mac angle-swiftshader passthrough ] conformance/context/context-no-alpha-fbo-with-alpha.html [ Failure ]
 crbug.com/1099960 [ mac angle-swiftshader passthrough ] conformance/rendering/color-mask-preserved-during-implicit-clears.html [ Failure ]
diff --git a/infra/config/generated/commit-queue.cfg b/infra/config/generated/commit-queue.cfg
index 56ee2a3..0624e307 100644
--- a/infra/config/generated/commit-queue.cfg
+++ b/infra/config/generated/commit-queue.cfg
@@ -952,6 +952,10 @@
         includable_only: true
       }
       builders {
+        name: "chromium/try/lacros-amd64-generic-rel"
+        includable_only: true
+      }
+      builders {
         name: "chromium/try/layout_test_leak_detection"
         includable_only: true
       }
diff --git a/infra/config/generated/cr-buildbucket.cfg b/infra/config/generated/cr-buildbucket.cfg
index 6e77442..a98a5d5 100644
--- a/infra/config/generated/cr-buildbucket.cfg
+++ b/infra/config/generated/cr-buildbucket.cfg
@@ -40494,6 +40494,67 @@
       }
     }
     builders {
+      name: "lacros-amd64-generic-rel"
+      swarming_host: "chromium-swarm.appspot.com"
+      swarming_tags: "vpython:native-python-wrapper"
+      dimensions: "builder:lacros-amd64-generic-rel"
+      dimensions: "cores:8"
+      dimensions: "cpu:x86-64"
+      dimensions: "os:Ubuntu-16.04"
+      dimensions: "pool:luci.chromium.try"
+      exe {
+        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
+        cipd_version: "refs/heads/master"
+        cmd: "recipes"
+      }
+      properties: "{\"$build/goma\":{\"enable_ats\":true,\"rpc_extra_params\":\"?prod\",\"server_host\":\"goma.chromium.org\",\"use_luci_auth\":true},\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"$recipe_engine/isolated\":{\"server\":\"https://isolateserver.appspot.com\"},\"builder_group\":\"tryserver.chromium.chromiumos\",\"recipe\":\"chromium_trybot\"}"
+      execution_timeout_secs: 14400
+      expiration_secs: 7200
+      caches {
+        name: "win_toolchain"
+        path: "win_toolchain"
+      }
+      build_numbers: YES
+      service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
+      task_template_canary_percentage {
+        value: 5
+      }
+      experiments {
+        key: "chromium.resultdb.result_sink"
+        value: 100
+      }
+      experiments {
+        key: "chromium.resultdb.result_sink.junit_tests"
+        value: 100
+      }
+      experiments {
+        key: "luci.use_realms"
+        value: 100
+      }
+      resultdb {
+        enable: true
+        bq_exports {
+          project: "luci-resultdb"
+          dataset: "chromium"
+          table: "try_test_results"
+          test_results {}
+        }
+        bq_exports {
+          project: "luci-resultdb"
+          dataset: "chromium"
+          table: "gpu_try_test_results"
+          test_results {
+            predicate {
+              test_id_regexp: "ninja://(chrome/test:|content/test:fuchsia_)telemetry_gpu_integration_test/.+"
+            }
+          }
+        }
+        history_options {
+          use_invocation_timestamp: true
+        }
+      }
+    }
+    builders {
       name: "layout_test_leak_detection"
       swarming_host: "chromium-swarm.appspot.com"
       swarming_tags: "vpython:native-python-wrapper"
diff --git a/infra/config/generated/luci-milo.cfg b/infra/config/generated/luci-milo.cfg
index 0008dabd..d605882 100644
--- a/infra/config/generated/luci-milo.cfg
+++ b/infra/config/generated/luci-milo.cfg
@@ -1931,6 +1931,9 @@
     name: "buildbucket/luci.chromium.try/ios-simulator-full-configs"
   }
   builders {
+    name: "buildbucket/luci.chromium.try/lacros-amd64-generic-rel"
+  }
+  builders {
     name: "buildbucket/luci.chromium.try/linux-blink-rel"
   }
   builders {
@@ -12452,6 +12455,9 @@
     name: "buildbucket/luci.chromium.try/ios14-sdk-simulator"
   }
   builders {
+    name: "buildbucket/luci.chromium.try/lacros-amd64-generic-rel"
+  }
+  builders {
     name: "buildbucket/luci.chromium.try/layout_test_leak_detection"
   }
   builders {
@@ -13207,6 +13213,9 @@
     name: "buildbucket/luci.chromium.try/gpu-fyi-try-chromeos-kevin"
   }
   builders {
+    name: "buildbucket/luci.chromium.try/lacros-amd64-generic-rel"
+  }
+  builders {
     name: "buildbucket/luci.chromium.try/linux-cfm-rel"
   }
   builders {
diff --git a/infra/config/subprojects/chromium/try.star b/infra/config/subprojects/chromium/try.star
index a722975..812fdc3 100644
--- a/infra/config/subprojects/chromium/try.star
+++ b/infra/config/subprojects/chromium/try.star
@@ -673,6 +673,12 @@
 )
 
 try_.chromium_chromiumos_builder(
+    name = "lacros-amd64-generic-rel",
+    builderless = not settings.is_master,
+    main_list_view = "try",
+)
+
+try_.chromium_chromiumos_builder(
     name = "linux-chromeos-compile-dbg",
     branch_selector = branches.STANDARD_MILESTONE,
     builderless = not settings.is_master,
diff --git a/ios/chrome/app/strings/resources/ios_chromium_strings_en-GB.xtb b/ios/chrome/app/strings/resources/ios_chromium_strings_en-GB.xtb
index 54cf063..2d78fbb 100644
--- a/ios/chrome/app/strings/resources/ios_chromium_strings_en-GB.xtb
+++ b/ios/chrome/app/strings/resources/ios_chromium_strings_en-GB.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="en-GB">
 <translation id="102360288709523007">Help make Chromium better by sending usage statistics and crash reports to Google.</translation>
+<translation id="1130979953299110755">By signing out, your bookmarks, history, passwords and other Chromium data will no longer be synced to your Google Account.</translation>
 <translation id="1185134272377778587">About Chromium</translation>
 <translation id="1257458525759135959">To save images, tap on settings to let Chromium add to your photos</translation>
 <translation id="1361748954329991663">Chromium is out of date. If no update is available in the <ph name="BEGIN_LINK" />app store<ph name="END_LINK" />, it's possible that your device doesn't support new versions of Chromium anymore.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
index b9b48f14..c57e9d8 100644
--- a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
@@ -606,6 +606,7 @@
 <translation id="7203585745079012652">Speak Answers Back</translation>
 <translation id="7207383424303353046">New: Open sites in Chrome automatically by making it your default browser app. <ph name="BEGIN_LINK" />Open settings<ph name="END_LINK" /></translation>
 <translation id="721597782417389033">Invalid card nickname</translation>
+<translation id="722989956228261714">Sign out…</translation>
 <translation id="7265758999917665941">Never for this site</translation>
 <translation id="7272437679830969316">Can't verify your identity. Password not copied.</translation>
 <translation id="7291368939935408496">Preparing Passwords…</translation>
diff --git a/ios/chrome/browser/ui/ntp/incognito_view.mm b/ios/chrome/browser/ui/ntp/incognito_view.mm
index cd5a735..62e1ae5 100644
--- a/ios/chrome/browser/ui/ntp/incognito_view.mm
+++ b/ios/chrome/browser/ui/ntp/incognito_view.mm
@@ -391,7 +391,8 @@
   subtitleLabel.font = BodyFont();
   subtitleLabel.textColor = bodyTextColor;
   subtitleLabel.numberOfLines = 0;
-  subtitleLabel.text = l10n_util::GetNSString(IDS_NEW_TAB_OTR_SUBTITLE);
+  subtitleLabel.text =
+      l10n_util::GetNSString(IDS_NEW_TAB_OTR_SUBTITLE_WITH_READING_LIST);
   subtitleLabel.adjustsFontForContentSizeCategory = YES;
 
   UIButton* learnMoreButton = [UIButton buttonWithType:UIButtonTypeCustom];
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 f0d8c719..10550252 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 @@
-d6eb9ce335ccf73325ca4e5854cfd3b32c33c748
\ No newline at end of file
+f3a759e57336d4a88f8c42828cd14d61a723c740
\ 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 2a7e40b..e3d2f79 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 @@
-544b7ae5fc6ee498c612f7f9524f3ff934e26a23
\ No newline at end of file
+02bad2268fa2457f9c62b61d8f7bee798addda78
\ 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 3badcbe..86a60a5 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 @@
-afb2e3b05e54bdeedcea31d8a246a3916d133095
\ No newline at end of file
+158ad8f498c92dc187420189089122eb5ac7d728
\ 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 17295bc..08d9259 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 @@
-24eb3d58ac80c4f6b507afb5d191a92e547b60fa
\ No newline at end of file
+d37898a05d26c7160371b0d9fd9dba7fecb0724f
\ 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 d924c415..589db8b 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 @@
-4523bc4e85acd071b943690d0a6853ec92860f2c
\ No newline at end of file
+60301f46c8114ad70fab6031d78096bc73ce3541
\ 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 0ce5d667..51b9d632 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 @@
-1f8846186ca1117b45fd07da07c5eba5a2ca5c10
\ No newline at end of file
+ffb9224b7e92530e3f1ecd4de55e5c71760f67ea
\ 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 ec2974a..e77a370 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 @@
-4d3e3d7053a6143302feb1d8637bf1746567ed0a
\ No newline at end of file
+608252a9cb009da159f02adc0c146eec149dcfd1
\ 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 ad3c7ef..97f5a70 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 @@
-95912df9aa3fa663a4de8a2935d14094a9cf3665
\ No newline at end of file
+c487a6d81a37a7247f2dbdf6985e84951c2ac019
\ No newline at end of file
diff --git a/media/base/audio_buffer.cc b/media/base/audio_buffer.cc
index ad6bd58c..99cbfb6a 100644
--- a/media/base/audio_buffer.cc
+++ b/media/base/audio_buffer.cc
@@ -14,6 +14,29 @@
 
 namespace media {
 
+namespace {
+
+// TODO(https://crbug.com/619628): Use vector instructions to speed this up.
+template <class SourceSampleTypeTraits>
+void CopyConvertFromInterleaved(
+    const typename SourceSampleTypeTraits::ValueType* source_buffer,
+    int num_frames_to_write,
+    const std::vector<float*> dest) {
+  const int channels = dest.size();
+  for (int ch = 0; ch < channels; ++ch) {
+    float* dest_data = dest[ch];
+    for (int target_frame_index = 0, read_pos_in_source = ch;
+         target_frame_index < num_frames_to_write;
+         ++target_frame_index, read_pos_in_source += channels) {
+      auto source_value = source_buffer[read_pos_in_source];
+      dest_data[target_frame_index] =
+          SourceSampleTypeTraits::ToFloat(source_value);
+    }
+  }
+}
+
+}  // namespace
+
 static base::TimeDelta CalculateDuration(int frames, double sample_rate) {
   DCHECK_GT(sample_rate, 0);
   return base::TimeDelta::FromMicroseconds(
@@ -332,6 +355,72 @@
   }
 }
 
+void AudioBuffer::ReadAllFrames(const std::vector<float*>& dest) const {
+  // Deinterleave each channel (if necessary) and convert to 32bit
+  // floating-point with nominal range -1.0 -> +1.0 (if necessary).
+
+  // |dest| must have the same number of channels, and the number of frames
+  // specified must be in range.
+  DCHECK(!end_of_stream());
+  CHECK_EQ(dest.size(), static_cast<size_t>(channel_count_));
+  DCHECK(!IsBitstreamFormat());
+
+  if (!data_) {
+    // Special case for an empty buffer.
+    for (int i = 0; i < channel_count_; ++i)
+      memset(dest[i], 0, adjusted_frame_count_ * sizeof(float));
+    return;
+  }
+
+  // Note: The conversion steps below will clip values to [1.0, -1.0f].
+
+  if (sample_format_ == kSampleFormatPlanarF32) {
+    for (int ch = 0; ch < channel_count_; ++ch) {
+      float* dest_data = dest[ch];
+      const float* source_data =
+          reinterpret_cast<const float*>(channel_data_[ch]);
+      for (int i = 0; i < adjusted_frame_count_; ++i)
+        dest_data[i] = Float32SampleTypeTraits::FromFloat(source_data[i]);
+    }
+    return;
+  }
+
+  if (sample_format_ == kSampleFormatPlanarS16) {
+    // Format is planar signed16. Convert each value into float and insert into
+    // output channel data.
+    for (int ch = 0; ch < channel_count_; ++ch) {
+      const int16_t* source_data =
+          reinterpret_cast<const int16_t*>(channel_data_[ch]);
+      float* dest_data = dest[ch];
+      for (int i = 0; i < adjusted_frame_count_; ++i)
+        dest_data[i] = SignedInt16SampleTypeTraits::ToFloat(source_data[i]);
+    }
+    return;
+  }
+
+  const uint8_t* source_data = data_.get();
+
+  if (sample_format_ == kSampleFormatF32) {
+    CopyConvertFromInterleaved<Float32SampleTypeTraits>(
+        reinterpret_cast<const float*>(source_data), adjusted_frame_count_,
+        dest);
+  } else if (sample_format_ == kSampleFormatU8) {
+    CopyConvertFromInterleaved<UnsignedInt8SampleTypeTraits>(
+        source_data, adjusted_frame_count_, dest);
+  } else if (sample_format_ == kSampleFormatS16) {
+    CopyConvertFromInterleaved<SignedInt16SampleTypeTraits>(
+        reinterpret_cast<const int16_t*>(source_data), adjusted_frame_count_,
+        dest);
+  } else if (sample_format_ == kSampleFormatS24 ||
+             sample_format_ == kSampleFormatS32) {
+    CopyConvertFromInterleaved<SignedInt32SampleTypeTraits>(
+        reinterpret_cast<const int32_t*>(source_data), adjusted_frame_count_,
+        dest);
+  } else {
+    NOTREACHED() << "Unsupported audio sample type: " << sample_format_;
+  }
+}
+
 void AudioBuffer::TrimStart(int frames_to_trim) {
   CHECK_GE(frames_to_trim, 0);
   CHECK_LE(frames_to_trim, adjusted_frame_count_);
diff --git a/media/base/audio_buffer.h b/media/base/audio_buffer.h
index 55adc828..9a90ef1 100644
--- a/media/base/audio_buffer.h
+++ b/media/base/audio_buffer.h
@@ -131,6 +131,14 @@
                   int dest_frame_offset,
                   AudioBus* dest) const;
 
+  // Copy all |adjusted_frame_count_| frames into |dest|. Each of |dest|'s
+  // elements correspond to a different channel. It's the caller's
+  // responsibility to make sure enough memory per channel was allocated.
+  // The frames are converted and clipped from their source format into planar
+  // float32 data.
+  // Note: Bitstream formats are not supported.
+  void ReadAllFrames(const std::vector<float*>& dest) const;
+
   // Trim an AudioBuffer by removing |frames_to_trim| frames from the start.
   // Timestamp and duration are adjusted to reflect the fewer frames.
   // Note that repeated calls to TrimStart() may result in timestamp() and
diff --git a/media/base/audio_buffer_unittest.cc b/media/base/audio_buffer_unittest.cc
index c769bd5a..3a30db2 100644
--- a/media/base/audio_buffer_unittest.cc
+++ b/media/base/audio_buffer_unittest.cc
@@ -7,6 +7,7 @@
 #include <limits>
 #include <memory>
 
+#include "base/test/gtest_util.h"
 #include "media/base/audio_buffer.h"
 #include "media/base/audio_bus.h"
 #include "media/base/test_helpers.h"
@@ -36,6 +37,14 @@
   }
 }
 
+static std::vector<float*> WrapChannelsAsVector(AudioBus* bus) {
+  std::vector<float*> channels(bus->channels());
+  for (size_t ch = 0; ch < channels.size(); ++ch)
+    channels[ch] = bus->channel(ch);
+
+  return channels;
+}
+
 static void VerifyBus(AudioBus* bus,
                       int frames,
                       float start,
@@ -253,6 +262,15 @@
   EXPECT_EQ(frames, bus->GetBitstreamFrames());
   EXPECT_EQ(data_size, bus->GetBitstreamDataSize());
   VerifyBitstreamAudioBus(bus.get(), data_size, 1, 1);
+
+#if GTEST_HAS_DEATH_TEST
+  auto vector_backing = AudioBus::Create(channels, frames);
+  std::vector<float*> wrapped_channels =
+      WrapChannelsAsVector(vector_backing.get());
+
+  // ReadAllFrames() does not support bitstream formats.
+  EXPECT_DCHECK_DEATH(buffer->ReadAllFrames(wrapped_channels));
+#endif  // GTEST_HAS_DEATH_TEST
 }
 
 TEST(AudioBufferTest, ReadU8) {
@@ -272,6 +290,12 @@
   for (int i = 0; i < frames; ++i)
     buffer->ReadFrames(1, i, i, bus.get());
   VerifyBus(bus.get(), frames, 0, 1.0f / 127.0f);
+
+  // Verify ReadAllFrames() works for U8.
+  bus->Zero();
+  std::vector<float*> wrapped_channels = WrapChannelsAsVector(bus.get());
+  buffer->ReadAllFrames(wrapped_channels);
+  VerifyBus(bus.get(), frames, 0, 1.0f / 127.0f);
 }
 
 TEST(AudioBufferTest, ReadS16) {
@@ -293,6 +317,13 @@
     buffer->ReadFrames(1, i, i, bus.get());
   VerifyBus(bus.get(), frames, 1.0f / std::numeric_limits<int16_t>::max(),
             1.0f / std::numeric_limits<int16_t>::max());
+
+  // Verify ReadAllFrames() works for S16.
+  bus->Zero();
+  std::vector<float*> wrapped_channels = WrapChannelsAsVector(bus.get());
+  buffer->ReadAllFrames(wrapped_channels);
+  VerifyBus(bus.get(), frames, 1.0f / std::numeric_limits<int16_t>::max(),
+            1.0f / std::numeric_limits<int16_t>::max());
 }
 
 TEST(AudioBufferTest, ReadS32) {
@@ -313,6 +344,13 @@
   buffer->ReadFrames(10, 10, 0, bus.get());
   VerifyBus(bus.get(), 10, 11.0f / std::numeric_limits<int32_t>::max(),
             1.0f / std::numeric_limits<int32_t>::max());
+
+  // Verify ReadAllFrames() works for S32.
+  bus->Zero();
+  std::vector<float*> wrapped_channels = WrapChannelsAsVector(bus.get());
+  buffer->ReadAllFrames(wrapped_channels);
+  VerifyBus(bus.get(), frames, 1.0f / std::numeric_limits<int32_t>::max(),
+            1.0f / std::numeric_limits<int32_t>::max());
 }
 
 TEST(AudioBufferTest, ReadF32) {
@@ -336,6 +374,12 @@
   bus->Zero();
   buffer->ReadFrames(10, 10, 0, bus.get());
   VerifyBus(bus.get(), 10, 11, 1, ValueType::kFloat);
+
+  // Verify ReadAllFrames() works for F32.
+  bus->Zero();
+  std::vector<float*> wrapped_channels = WrapChannelsAsVector(bus.get());
+  buffer->ReadAllFrames(wrapped_channels);
+  VerifyBus(bus.get(), frames, 1, 1, ValueType::kFloat);
 }
 
 TEST(AudioBufferTest, ReadS16Planar) {
@@ -369,6 +413,13 @@
   buffer->ReadFrames(0, 10, 0, bus.get());
   VerifyBus(bus.get(), frames, 1.0f / std::numeric_limits<int16_t>::max(),
             1.0f / std::numeric_limits<int16_t>::max());
+
+  // Verify ReadAllFrames() works for S16Planar.
+  bus->Zero();
+  std::vector<float*> wrapped_channels = WrapChannelsAsVector(bus.get());
+  buffer->ReadAllFrames(wrapped_channels);
+  VerifyBus(bus.get(), frames, 1.0f / std::numeric_limits<int16_t>::max(),
+            1.0f / std::numeric_limits<int16_t>::max());
 }
 
 TEST(AudioBufferTest, ReadF32Planar) {
@@ -397,6 +448,12 @@
   bus->Zero();
   buffer->ReadFrames(20, 50, 0, bus.get());
   VerifyBus(bus.get(), 20, 51, 1, ValueType::kFloat);
+
+  // Verify ReadAllFrames() works for F32Planar.
+  bus->Zero();
+  std::vector<float*> wrapped_channels = WrapChannelsAsVector(bus.get());
+  buffer->ReadAllFrames(wrapped_channels);
+  VerifyBus(bus.get(), frames, 1, 1, ValueType::kFloat);
 }
 
 TEST(AudioBufferTest, EmptyBuffer) {
@@ -411,10 +468,19 @@
   EXPECT_EQ(base::TimeDelta::FromMilliseconds(10), buffer->duration());
   EXPECT_FALSE(buffer->end_of_stream());
 
-  // Read all 100 frames from the buffer. All data should be 0.
+  // Read all frames from the buffer. All data should be 0.
   std::unique_ptr<AudioBus> bus = AudioBus::Create(channels, frames);
   buffer->ReadFrames(frames, 0, 0, bus.get());
   VerifyBus(bus.get(), frames, 0, 0);
+
+  // Set some data to confirm the overwrite.
+  std::vector<float*> wrapped_channels = WrapChannelsAsVector(bus.get());
+  for (float* wrapped_channel : wrapped_channels)
+    memset(wrapped_channel, 123, frames * sizeof(float));
+
+  // Verify ReadAllFrames() overrites empty buffers.
+  buffer->ReadAllFrames(wrapped_channels);
+  VerifyBus(bus.get(), frames, 0, 0);
 }
 
 TEST(AudioBufferTest, TrimEmptyBuffer) {
diff --git a/media/mojo/services/interface_factory_impl.cc b/media/mojo/services/interface_factory_impl.cc
index d5297d4..f23ab72 100644
--- a/media/mojo/services/interface_factory_impl.cc
+++ b/media/mojo/services/interface_factory_impl.cc
@@ -294,7 +294,7 @@
         FROM_HERE,
         base::BindOnce(
             &InterfaceFactoryImpl::CreateMediaFoundationRendererOnTaskRunner,
-            base::Unretained(this), std::move(task_runner), std::move(receiver),
+            base::Unretained(this), task_runner, std::move(receiver),
             std::move(renderer_extension_receiver)));
     return;
   }
diff --git a/media/renderers/paint_canvas_video_renderer.cc b/media/renderers/paint_canvas_video_renderer.cc
index 80ea11a..62371d1 100644
--- a/media/renderers/paint_canvas_video_renderer.cc
+++ b/media/renderers/paint_canvas_video_renderer.cc
@@ -1040,21 +1040,16 @@
   } else if (video_frame->HasTextures()) {
     DCHECK_EQ(video_frame->coded_size(),
               gfx::Size(image.width(), image.height()));
-    canvas->drawImageRect(
-        image, gfx::RectToSkRect(video_frame->visible_rect()),
-        SkRect::MakeWH(video_frame->visible_rect().width(),
-                       video_frame->visible_rect().height()),
-        SkSamplingOptions(flags.getFilterQuality(),
-                          SkSamplingOptions::kMedium_asMipmapLinear),
-        &video_flags, SkCanvas::kStrict_SrcRectConstraint);
+    canvas->drawImageRect(image, gfx::RectToSkRect(video_frame->visible_rect()),
+                          SkRect::MakeWH(video_frame->visible_rect().width(),
+                                         video_frame->visible_rect().height()),
+                          SkSamplingOptions(flags.getFilterQuality()),
+                          &video_flags, SkCanvas::kStrict_SrcRectConstraint);
   } else {
     DCHECK_EQ(video_frame->visible_rect().size(),
               gfx::Size(image.width(), image.height()));
-    canvas->drawImage(
-        image, 0, 0,
-        SkSamplingOptions(flags.getFilterQuality(),
-                          SkSamplingOptions::kMedium_asMipmapLinear),
-        &video_flags);
+    canvas->drawImage(image, 0, 0, SkSamplingOptions(flags.getFilterQuality()),
+                      &video_flags);
   }
 
   if (need_transform)
diff --git a/third_party/blink/perf_tests/owp_storage/idb-put-all.html b/third_party/blink/perf_tests/owp_storage/idb-put-all.html
deleted file mode 100644
index bbedaec..0000000
--- a/third_party/blink/perf_tests/owp_storage/idb-put-all.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!doctype html>
-<title>IndexedDB Put Test</title>
-<script src="../resources/runner.js"></script>
-<script src="resources/shared.js"></script>
-<script>
-  deleteThenOpen('library',
-    (db) => {
-      const store1 = db.createObjectStore('books_with_index', {keyPath: 'isbn'})
-      store1.createIndex('by_title', 'title')
-      db.createObjectStore('books', {keyPath: 'isbn'})
-    },
-    () => {
-      const test = {
-        description: 'Benchmark modeling the IndexedDB activity of putting a'
-          + ' record into an object store using putAll',
-        unit: 'ms',
-        iterationCount: 20,
-        tracingCategories: 'IndexedDB,Blob',
-        traceEventsToMeasure: ['IDBObjectStore::putAll'],
-        path: 'resources/idb-put-all-runner.html'
-      }
-      PerfTestRunner.measurePageLoadTimeAfterDoneMessage(test);
-    }
-  );
-</script>
diff --git a/third_party/blink/perf_tests/owp_storage/idb-put.html b/third_party/blink/perf_tests/owp_storage/idb-put.html
deleted file mode 100644
index a1679de..0000000
--- a/third_party/blink/perf_tests/owp_storage/idb-put.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!doctype html>
-<title>IndexedDB Put Test</title>
-<script src="../resources/runner.js"></script>
-<script src="resources/shared.js"></script>
-<script>
-  deleteThenOpen('library',
-    (db) => {
-      const store1 = db.createObjectStore('books_with_index', {keyPath: 'isbn'})
-      store1.createIndex('by_title', 'title')
-      db.createObjectStore('books', {keyPath: 'isbn'})
-    },
-    () => {
-      const test = {
-        description: 'Benchmark modeling the IndexedDB activity of putting a'
-          + 'record into an object store',
-        unit: 'ms',
-        iterationCount: 20,
-        tracingCategories: 'IndexedDB,Blob',
-        traceEventsToMeasure: ['IDBObjectStore::put'],
-        path: 'resources/idb-put-runner.html'
-      }
-      PerfTestRunner.measurePageLoadTimeAfterDoneMessage(test);
-    }
-  );
-</script>
diff --git a/third_party/blink/perf_tests/owp_storage/resources/idb-put-all-runner.html b/third_party/blink/perf_tests/owp_storage/resources/idb-put-all-runner.html
deleted file mode 100644
index 3b2270e..0000000
--- a/third_party/blink/perf_tests/owp_storage/resources/idb-put-all-runner.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!doctype html>
-<title>IDB Put Runner</title>
-<script src="resources/shared.js"></script>
-<script>
-  const contents = [];
-  const blobs = [];
-  const values = [];
-
-  function chooseContent(i) {
-    return contents[i % 3];
-  }
-
-  function chooseBlob(i) {
-    return blobs[i % 4];
-  }
-
-  function chooseTitle(i) {
-    let smallTitle = ((i % 20).toString()).repeat(100);
-    let largeTitle = ((i % 20).toString()).repeat(2000);
-    let titles = [smallTitle, largeTitle]
-    return titles[i % 2]
-  }
-
-  function initHelperValues() {
-    contents.push(new Uint8Array(100));
-    contents.push(new Uint8Array(50000));
-    contents.push(new Uint8Array(150000));
-    blobs.push(null)
-    blobs.push(new Uint8Array(1000));
-    blobs.push(new Uint8Array(200000));
-    blobs.push(new Uint8Array(500000));
-    for(let i = 0; i < 100; i++) {
-        let content = chooseContent(i);
-        let blob = chooseBlob(i);
-        let title = chooseTitle(i);
-        values.push({isbn: i, content: content, blob: blob,
-          title: title, author: 'Fred'});
-    }
-  }
-
-  function start() {
-    const openRequest = window.indexedDB.open('library');
-    openRequest.onsuccess = function() {
-      const db = openRequest.result;
-      const txn = db.transaction(['books_with_index','books'],'readwrite');
-      const store1 = txn.objectStore('books_with_index');
-      const store2 = txn.objectStore('books');
-      logToDocumentBody('Starting Benchmark IDB putAll');
-      store1.putAllValues(values);
-      store2.putAllValues(values);
-      logToDocumentBody('Finished Benchmark IDB putAll');
-      txn.oncomplete = () => {
-        reportDone();
-      }
-    }
-  }
-
-  initHelperValues()
-  start();
-</script>
\ No newline at end of file
diff --git a/third_party/blink/perf_tests/owp_storage/resources/idb-put-runner.html b/third_party/blink/perf_tests/owp_storage/resources/idb-put-runner.html
deleted file mode 100644
index 865ff4f7..0000000
--- a/third_party/blink/perf_tests/owp_storage/resources/idb-put-runner.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!doctype html>
-<title>IDB Put Runner</title>
-<script src="resources/shared.js"></script>
-<script>
-  const contents = [];
-  const blobs = [];
-
-  function chooseContent(i) {
-    return contents[i % 3];
-  }
-
-  function chooseBlob(i) {
-    return blobs[i % 4];
-  }
-
-  function chooseTitle(i) {
-    let smallTitle = ((i % 20).toString()).repeat(100);
-    let largeTitle = ((i % 20).toString()).repeat(2000);
-    let titles = [smallTitle, largeTitle]
-    return titles[i % 2]
-  }
-
-  function initHelperValues() {
-    contents.push(new Uint8Array(100));
-    contents.push(new Uint8Array(50000));
-    contents.push(new Uint8Array(150000));
-    blobs.push(null)
-    blobs.push(new Uint8Array(1000));
-    blobs.push(new Uint8Array(200000));
-    blobs.push(new Uint8Array(500000));
-  }
-
-  function start() {
-    const openRequest = window.indexedDB.open('library');
-    openRequest.onsuccess = function() {
-      const db = openRequest.result;
-      const txn = db.transaction(['books_with_index','books'],'readwrite');
-      const store1 = txn.objectStore('books_with_index');
-      const store2 = txn.objectStore('books');
-      logToDocumentBody('Starting Benchmark IDB put');
-      for(let i = 0; i < 100; i++) {
-        logToDocumentBody('Putting books into the library');
-        let content = chooseContent(i);
-        let blob = chooseBlob(i);
-        let title = chooseTitle(i);
-        store1.put({isbn: i, content: content, blob: blob,
-          title: title, author: 'Fred',});
-        store2.put({isbn: i, content: content, blob: blob, title: title,
-          author: 'Fred'});
-      }
-      logToDocumentBody('Finished Benchmark IDB put');
-      txn.oncomplete = () => {
-        reportDone();
-      }
-    }
-  }
-
-  initHelperValues()
-  start();
-</script>
\ No newline at end of file
diff --git a/third_party/blink/public/mojom/remote_objects/remote_objects.mojom b/third_party/blink/public/mojom/remote_objects/remote_objects.mojom
index 04b4681..2d7a4f82 100644
--- a/third_party/blink/public/mojom/remote_objects/remote_objects.mojom
+++ b/third_party/blink/public/mojom/remote_objects/remote_objects.mojom
@@ -89,6 +89,7 @@
   SingletonJavaScriptValue singleton_value;
   array<RemoteInvocationArgument> array_value;
   RemoteTypedArray typed_array_value;
+  int32 object_id_value;
 };
 
 enum RemoteInvocationError {
@@ -96,6 +97,7 @@
   METHOD_NOT_FOUND,
   OBJECT_GET_CLASS_BLOCKED,
   EXCEPTION_THROWN,
+  NON_ASSIGNABLE_TYPES,
 };
 
 union RemoteInvocationResultValue {
diff --git a/third_party/blink/public/mojom/web_feature/web_feature.mojom b/third_party/blink/public/mojom/web_feature/web_feature.mojom
index 60a41ec..1a214e0 100644
--- a/third_party/blink/public/mojom/web_feature/web_feature.mojom
+++ b/third_party/blink/public/mojom/web_feature/web_feature.mojom
@@ -3113,6 +3113,8 @@
   kWindowScreenChange = 3790,
   kXRWebGLDepthInformationTextureAttribute = 3791,
   kXRWebGLBindingGetDepthInformation = 3792,
+  kSessionStorageFirstUsedBeforeFcp = 3793,
+  kSessionStorageFirstUsedAfterFcp = 3794,
 
   // Add new features immediately above this line. Don't change assigned
   // numbers of any item, and don't reuse removed slots.
diff --git a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
index 3b7e05b3..47d7048 100644
--- a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
+++ b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
@@ -381,7 +381,12 @@
     CreateLayer();
     SetNeedsUnbufferedInputEvents(true);
     frame_dispatcher_ = std::make_unique<CanvasResourceDispatcher>(
-        nullptr, surface_layer_bridge_->GetFrameSinkId().client_id(),
+        nullptr,
+        GetPage()
+            ->GetPageScheduler()
+            ->GetAgentGroupScheduler()
+            .CompositorTaskRunner(),
+        surface_layer_bridge_->GetFrameSinkId().client_id(),
         surface_layer_bridge_->GetFrameSinkId().sink_id(),
         CanvasResourceDispatcher::kInvalidPlaceholderCanvasId, size_);
     // We don't actually need the begin frame signal when in low latency mode,
diff --git a/third_party/blink/renderer/core/imagebitmap/image_bitmap.cc b/third_party/blink/renderer/core/imagebitmap/image_bitmap.cc
index b4b1cd2..01cf79e2 100644
--- a/third_party/blink/renderer/core/imagebitmap/image_bitmap.cc
+++ b/third_party/blink/renderer/core/imagebitmap/image_bitmap.cc
@@ -393,8 +393,7 @@
         CreateProvider(image->ContextProviderWrapper(), image_info, image,
                        false /* fallback_to_software */);
     if (resource_provider) {
-      SkSamplingOptions sampling(parsed_options.resize_quality,
-                                 SkSamplingOptions::kMedium_asMipmapLinear);
+      SkSamplingOptions sampling(parsed_options.resize_quality);
       resource_provider->Canvas()->drawImageRect(
           image->PaintImageForCurrentFrame(),
           SkRect::MakeWH(src_image_info.width(), src_image_info.height()),
@@ -420,10 +419,8 @@
   auto sk_image = image->PaintImageForCurrentFrame().GetSwSkImage();
   if (!sk_image)
     return nullptr;
-  sk_image->scalePixels(
-      resized_pixmap,
-      SkSamplingOptions(parsed_options.resize_quality,
-                        SkSamplingOptions::kMedium_asMipmapLinear));
+  sk_image->scalePixels(resized_pixmap,
+                        SkSamplingOptions(parsed_options.resize_quality));
   // Tag the resized Pixmap with the correct color space.
   resized_pixmap.setColorSpace(GetSkImageInfo(image).refColorSpace());
 
diff --git a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm.cc
index 8d50c1b4..1f02628 100644
--- a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm.cc
+++ b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm.cc
@@ -533,11 +533,12 @@
   const bool is_table_block_size_specified = !Style().LogicalHeight().IsAuto();
   LayoutUnit total_table_block_size;
   wtf_size_t section_index = 0;
-  for (const NGBlockNode& section : grouped_children) {
+  for (auto it = grouped_children.begin(); it != grouped_children.end(); ++it) {
     NGTableAlgorithmUtils::ComputeSectionMinimumRowBlockSizes(
-        section, table_grid_inline_size, is_table_block_size_specified,
+        *it, table_grid_inline_size, is_table_block_size_specified,
         column_locations, table_borders, border_spacing.block_size,
-        section_index++, sections, rows, cell_block_constraints);
+        section_index++, it.TreatAsTBody(), sections, rows,
+        cell_block_constraints);
     total_table_block_size += sections->back().block_size;
   }
 
diff --git a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_types.cc b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_types.cc
index 4909218..a3a0b4b 100644
--- a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_types.cc
+++ b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_types.cc
@@ -205,7 +205,8 @@
     const NGLayoutInputNode& section,
     wtf_size_t start_row,
     wtf_size_t rows,
-    LayoutUnit block_size) {
+    LayoutUnit block_size,
+    bool treat_as_tbody) {
   const Length& section_css_block_size = section.Style().LogicalHeight();
   // TODO(crbug.com/1105272): Decide what to do with |Length::IsCalculated()|.
   bool is_constrained =
@@ -213,14 +214,12 @@
   base::Optional<float> percent;
   if (section_css_block_size.IsPercent())
     percent = section_css_block_size.Percent();
-  bool is_tbody =
-      section.GetDOMNode()->HasTagName(html_names::kTbodyTag);
   return Section{start_row,
                  rows,
                  block_size,
                  percent,
                  is_constrained,
-                 is_tbody,
+                 treat_as_tbody,
                  /* needs_redistribution */ false};
 }
 
@@ -316,7 +315,8 @@
   is_constrained |= cell->is_constrained;
 }
 
-NGTableGroupedChildren::NGTableGroupedChildren(const NGBlockNode& table) {
+NGTableGroupedChildren::NGTableGroupedChildren(const NGBlockNode& table)
+    : header(NGBlockNode(nullptr)), footer(NGBlockNode(nullptr)) {
   for (NGLayoutInputNode child = table.FirstChild(); child;
        child = child.NextSibling()) {
     NGBlockNode block_child = To<NGBlockNode>(child);
@@ -329,14 +329,19 @@
           columns.push_back(block_child);
           break;
         case EDisplay::kTableHeaderGroup:
-          headers.push_back(block_child);
+          if (!header)
+            header = block_child;
+          else
+            bodies.push_back(block_child);
           break;
         case EDisplay::kTableRowGroup:
           bodies.push_back(block_child);
           break;
         case EDisplay::kTableFooterGroup:
-          // Footers are displayed in reverse order: first footer at the bottom.
-          footers.push_front(block_child);
+          if (!footer)
+            footer = block_child;
+          else
+            bodies.push_back(block_child);
           break;
         default:
           NOTREACHED() << "unexpected table child";
@@ -356,30 +361,57 @@
 NGTableGroupedChildrenIterator::NGTableGroupedChildrenIterator(
     const NGTableGroupedChildren& grouped_children,
     bool is_end)
-    : grouped_children_(grouped_children), current_vector_(nullptr) {
+    : grouped_children_(grouped_children) {
   if (is_end) {
-    current_vector_ = &grouped_children_.footers;
-    current_iterator_ = current_vector_->end();
+    current_section_ = kEnd;
     return;
   }
+  current_section_ = kNone;
   AdvanceToNonEmptySection();
 }
 
 NGTableGroupedChildrenIterator& NGTableGroupedChildrenIterator::operator++() {
-  ++current_iterator_;
-  if (current_iterator_ == current_vector_->end())
-    AdvanceToNonEmptySection();
+  switch (current_section_) {
+    case kHead:
+    case kFoot:
+      AdvanceToNonEmptySection();
+      break;
+    case kBody:
+      ++body_iterator_;
+      if (body_iterator_ == grouped_children_.bodies.end())
+        AdvanceToNonEmptySection();
+      break;
+    case kEnd:
+      break;
+    case kNone:
+      NOTREACHED();
+      break;
+  }
   return *this;
 }
 
 NGBlockNode NGTableGroupedChildrenIterator::operator*() const {
-  return *current_iterator_;
+  switch (current_section_) {
+    case kHead:
+      return grouped_children_.header;
+    case kFoot:
+      return grouped_children_.footer;
+    case kBody:
+      return *body_iterator_;
+    case kEnd:
+    case kNone:
+      NOTREACHED();
+      return NGBlockNode(nullptr);
+  }
 }
 
 bool NGTableGroupedChildrenIterator::operator==(
     const NGTableGroupedChildrenIterator& rhs) const {
-  return rhs.current_vector_ == current_vector_ &&
-         rhs.current_iterator_ == current_iterator_;
+  if (current_section_ != rhs.current_section_)
+    return false;
+  if (current_section_ == kBody)
+    return rhs.body_iterator_ == body_iterator_;
+  return true;
 }
 
 bool NGTableGroupedChildrenIterator::operator!=(
@@ -388,19 +420,29 @@
 }
 
 void NGTableGroupedChildrenIterator::AdvanceToNonEmptySection() {
-  if (current_vector_ == &grouped_children_.footers)
-    return;
-  if (!current_vector_) {
-    current_vector_ = &grouped_children_.headers;
-  } else if (current_vector_ == &grouped_children_.headers) {
-    current_vector_ = &grouped_children_.bodies;
-  } else if (current_vector_ == &grouped_children_.bodies) {
-    current_vector_ = &grouped_children_.footers;
-  }
-  current_iterator_ = current_vector_->begin();
-  // If new group is empty, recursively advance.
-  if (current_iterator_ == current_vector_->end()) {
-    AdvanceToNonEmptySection();
+  switch (current_section_) {
+    case kNone:
+      current_section_ = kHead;
+      if (!grouped_children_.header)
+        AdvanceToNonEmptySection();
+      break;
+    case kHead:
+      current_section_ = kBody;
+      body_iterator_ = grouped_children_.bodies.begin();
+      if (body_iterator_ == grouped_children_.bodies.end())
+        AdvanceToNonEmptySection();
+      break;
+    case kBody:
+      current_section_ = kFoot;
+      if (!grouped_children_.footer)
+        AdvanceToNonEmptySection();
+      break;
+    case kFoot:
+      current_section_ = kEnd;
+      break;
+    case kEnd:
+      NOTREACHED();
+      break;
   }
 }
 
diff --git a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_types.h b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_types.h
index 4319491..47e7177 100644
--- a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_types.h
+++ b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_types.h
@@ -9,6 +9,7 @@
 #include "base/optional.h"
 #include "third_party/blink/renderer/core/layout/min_max_sizes.h"
 #include "third_party/blink/renderer/core/layout/ng/geometry/ng_box_strut.h"
+#include "third_party/blink/renderer/core/layout/ng/ng_block_node.h"
 #include "third_party/blink/renderer/core/style/computed_style_constants.h"
 #include "third_party/blink/renderer/platform/geometry/length.h"
 #include "third_party/blink/renderer/platform/wtf/ref_counted.h"
@@ -195,7 +196,8 @@
   static Section CreateSection(const NGLayoutInputNode&,
                                wtf_size_t start_row,
                                wtf_size_t rowspan,
-                               LayoutUnit block_size);
+                               LayoutUnit block_size,
+                               bool treat_as_tbody);
 
   static CellBlockConstraint CreateCellBlockConstraint(
       const NGLayoutInputNode&,
@@ -239,9 +241,9 @@
   Vector<NGBlockNode> captions;  // CAPTION
   Vector<NGBlockNode> columns;   // COLGROUP, COL
 
-  Vector<NGBlockNode> headers;  // THEAD
-  Vector<NGBlockNode> bodies;   // TBODY
-  Vector<NGBlockNode> footers;  // TFOOT
+  NGBlockNode header;          // first THEAD
+  Vector<NGBlockNode> bodies;  // TBODY/multiple THEAD/TFOOT
+  NGBlockNode footer;          // first TFOOT
 
   // Default iterators iterate over tbody-like (THEAD/TBODY/TFOOT) elements.
   NGTableGroupedChildrenIterator begin() const;
@@ -251,6 +253,8 @@
 // Iterates table's sections in order:
 // thead, tbody, tfoot
 class NGTableGroupedChildrenIterator {
+  enum CurrentSection { kNone, kHead, kBody, kFoot, kEnd };
+
  public:
   explicit NGTableGroupedChildrenIterator(
       const NGTableGroupedChildren& grouped_children,
@@ -260,12 +264,14 @@
   NGBlockNode operator*() const;
   bool operator==(const NGTableGroupedChildrenIterator& rhs) const;
   bool operator!=(const NGTableGroupedChildrenIterator& rhs) const;
+  // True if section should be treated as tbody
+  bool TreatAsTBody() const { return current_section_ == kBody; }
 
  private:
   void AdvanceToNonEmptySection();
   const NGTableGroupedChildren& grouped_children_;
-  const Vector<NGBlockNode>* current_vector_;
-  Vector<NGBlockNode>::const_iterator current_iterator_;
+  Vector<NGBlockNode>::const_iterator body_iterator_;
+  CurrentSection current_section_{kNone};
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_utils.cc b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_utils.cc
index 8a8ea3c..7895b9b2 100644
--- a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_utils.cc
+++ b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_utils.cc
@@ -465,6 +465,7 @@
     const NGTableBorders& table_borders,
     const LayoutUnit block_border_spacing,
     wtf_size_t section_index,
+    bool treat_section_as_tbody,
     NGTableTypes::Sections* sections,
     NGTableTypes::Rows* rows,
     NGTableTypes::CellBlockConstraints* cell_block_constraints) {
@@ -528,8 +529,9 @@
       section_block_size = section_fixed_block_size;
     }
   }
-  sections->push_back(NGTableTypes::CreateSection(
-      section, start_row, current_row - start_row, section_block_size));
+  sections->push_back(
+      NGTableTypes::CreateSection(section, start_row, current_row - start_row,
+                                  section_block_size, treat_section_as_tbody));
 }
 
 void NGColspanCellTabulator::StartRow() {
diff --git a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_utils.h b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_utils.h
index e1ea7fd..521845a4 100644
--- a/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_utils.h
+++ b/third_party/blink/renderer/core/layout/ng/table/ng_table_layout_algorithm_utils.h
@@ -61,6 +61,7 @@
       const NGTableBorders& table_borders,
       const LayoutUnit block_border_spacing,
       wtf_size_t section_index,
+      bool treat_section_as_tbody,
       NGTableTypes::Sections* sections,
       NGTableTypes::Rows* rows,
       NGTableTypes::CellBlockConstraints* cell_block_constraints);
diff --git a/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.cc b/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.cc
index 9b763a8..9bddf9e 100644
--- a/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.cc
+++ b/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.cc
@@ -12,6 +12,7 @@
 #include "third_party/blink/public/common/privacy_budget/identifiability_metrics.h"
 #include "third_party/blink/public/common/privacy_budget/identifiability_study_settings.h"
 #include "third_party/blink/public/platform/platform.h"
+#include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h"
 #include "third_party/blink/renderer/core/css/css_font_selector.h"
 #include "third_party/blink/renderer/core/css/offscreen_font_selector.h"
 #include "third_party/blink/renderer/core/css/style_engine.h"
@@ -361,11 +362,32 @@
   // If we don't have a valid placeholder_canvas_id_, then this is a standalone
   // OffscreenCanvas, and it should not have a placeholder.
   if (!frame_dispatcher_) {
+    scoped_refptr<base::SingleThreadTaskRunner>
+        agent_group_scheduler_compositor_task_runner;
+    if (auto* global_scope =
+            DynamicTo<WorkerGlobalScope>(GetTopExecutionContext())) {
+      // When OffscreenCanvas is used from Worker, the per-AgentGroupScheduler
+      // |CompositorTaskRunner| can be obtained from |WorkerGlobalScope|.
+      agent_group_scheduler_compositor_task_runner =
+          global_scope->GetAgentGroupSchedulerCompositorTaskRunner();
+    } else {
+      // It is possible to use OffscreenCanvas from the main thread. If
+      // |OffscreenCanvas| is used from the main thread, per-AgentGroupScheduler
+      // |CompositorTaskRunner| can be obtained from |FrameScheduler|.
+      agent_group_scheduler_compositor_task_runner =
+          GetTopExecutionContext()
+              ->GetScheduler()
+              ->ToFrameScheduler()
+              ->GetAgentGroupScheduler()
+              ->CompositorTaskRunner();
+    }
+    DCHECK(agent_group_scheduler_compositor_task_runner);
     // The frame dispatcher connects the current thread of OffscreenCanvas
     // (either main or worker) to the browser process and remains unchanged
     // throughout the lifetime of this OffscreenCanvas.
     frame_dispatcher_ = std::make_unique<CanvasResourceDispatcher>(
-        this, client_id_, sink_id_, placeholder_canvas_id_, size_);
+        this, std::move(agent_group_scheduler_compositor_task_runner),
+        client_id_, sink_id_, placeholder_canvas_id_, size_);
 
     if (HasPlaceholderCanvas())
       frame_dispatcher_->SetPlaceholderCanvasDispatcher(placeholder_canvas_id_);
diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.cc b/third_party/blink/renderer/core/workers/dedicated_worker.cc
index 8551eb2c..2a03e73 100644
--- a/third_party/blink/renderer/core/workers/dedicated_worker.cc
+++ b/third_party/blink/renderer/core/workers/dedicated_worker.cc
@@ -409,18 +409,31 @@
     base::Optional<network::mojom::IPAddressSpace> response_address_space) {
   base::UnguessableToken parent_devtools_token;
   std::unique_ptr<WorkerSettings> settings;
+  scoped_refptr<base::SingleThreadTaskRunner>
+      agent_group_scheduler_compositor_task_runner;
   if (auto* window = DynamicTo<LocalDOMWindow>(GetExecutionContext())) {
+    // When the main thread creates a new DedicatedWorker.
     auto* frame = window->GetFrame();
     if (frame)
       parent_devtools_token = frame->GetDevToolsFrameToken();
     settings = std::make_unique<WorkerSettings>(frame->GetSettings());
+    agent_group_scheduler_compositor_task_runner =
+        GetExecutionContext()
+            ->GetScheduler()
+            ->ToFrameScheduler()
+            ->GetAgentGroupScheduler()
+            ->CompositorTaskRunner();
   } else {
+    // When a DedicatedWorker creates another DedicatedWorker (nested worker).
     WorkerGlobalScope* worker_global_scope =
         To<WorkerGlobalScope>(GetExecutionContext());
     parent_devtools_token =
         worker_global_scope->GetThread()->GetDevToolsWorkerToken();
     settings = WorkerSettings::Copy(worker_global_scope->GetWorkerSettings());
+    agent_group_scheduler_compositor_task_runner =
+        worker_global_scope->GetAgentGroupSchedulerCompositorTaskRunner();
   }
+  DCHECK(agent_group_scheduler_compositor_task_runner);
 
   mojom::blink::ScriptType script_type =
       (options_->type() == "classic") ? mojom::blink::ScriptType::kClassic
@@ -446,7 +459,8 @@
       GetExecutionContext()->GetAgentClusterID(),
       GetExecutionContext()->UkmSourceID(),
       GetExecutionContext()->GetExecutionContextToken(),
-      GetExecutionContext()->CrossOriginIsolatedCapability());
+      GetExecutionContext()->CrossOriginIsolatedCapability(),
+      std::move(agent_group_scheduler_compositor_task_runner));
 }
 
 scoped_refptr<WebWorkerFetchContext>
diff --git a/third_party/blink/renderer/core/workers/global_scope_creation_params.cc b/third_party/blink/renderer/core/workers/global_scope_creation_params.cc
index 6459ea1..5f5332b 100644
--- a/third_party/blink/renderer/core/workers/global_scope_creation_params.cc
+++ b/third_party/blink/renderer/core/workers/global_scope_creation_params.cc
@@ -41,7 +41,9 @@
     base::UnguessableToken agent_cluster_id,
     ukm::SourceId ukm_source_id,
     const base::Optional<ExecutionContextToken>& parent_context_token,
-    bool parent_cross_origin_isolated_capability)
+    bool parent_cross_origin_isolated_capability,
+    scoped_refptr<base::SingleThreadTaskRunner>
+        agent_group_scheduler_compositor_task_runner)
     : script_url(script_url.Copy()),
       script_type(script_type),
       global_scope_name(global_scope_name.IsolatedCopy()),
@@ -73,7 +75,9 @@
       ukm_source_id(ukm_source_id),
       parent_context_token(parent_context_token),
       parent_cross_origin_isolated_capability(
-          parent_cross_origin_isolated_capability) {
+          parent_cross_origin_isolated_capability),
+      agent_group_scheduler_compositor_task_runner(
+          std::move(agent_group_scheduler_compositor_task_runner)) {
   this->origin_trial_tokens = std::make_unique<Vector<String>>();
   if (origin_trial_tokens) {
     for (const String& token : *origin_trial_tokens)
diff --git a/third_party/blink/renderer/core/workers/global_scope_creation_params.h b/third_party/blink/renderer/core/workers/global_scope_creation_params.h
index 69cd96ad..517c976 100644
--- a/third_party/blink/renderer/core/workers/global_scope_creation_params.h
+++ b/third_party/blink/renderer/core/workers/global_scope_creation_params.h
@@ -70,7 +70,9 @@
       ukm::SourceId ukm_source_id = ukm::kInvalidSourceId,
       const base::Optional<ExecutionContextToken>& parent_context_token =
           base::nullopt,
-      bool parent_cross_origin_isolated_capability = false);
+      bool parent_cross_origin_isolated_capability = false,
+      scoped_refptr<base::SingleThreadTaskRunner>
+          agent_group_scheduler_compositor_task_runner = nullptr);
 
   ~GlobalScopeCreationParams() = default;
 
@@ -180,6 +182,11 @@
   // Used by dedicated workers, and set to false when there is no parent.
   const bool parent_cross_origin_isolated_capability;
 
+  // The compositor task runner associated with the |AgentGroupScheduler| this
+  // worker belongs to.
+  scoped_refptr<base::SingleThreadTaskRunner>
+      agent_group_scheduler_compositor_task_runner;
+
   DISALLOW_COPY_AND_ASSIGN(GlobalScopeCreationParams);
 };
 
diff --git a/third_party/blink/renderer/core/workers/worker_global_scope.cc b/third_party/blink/renderer/core/workers/worker_global_scope.cc
index 6d5ddab..befb80d 100644
--- a/third_party/blink/renderer/core/workers/worker_global_scope.cc
+++ b/third_party/blink/renderer/core/workers/worker_global_scope.cc
@@ -543,6 +543,8 @@
       user_agent_(creation_params->user_agent),
       ua_metadata_(creation_params->ua_metadata),
       thread_(thread),
+      agent_group_scheduler_compositor_task_runner_(std::move(
+          creation_params->agent_group_scheduler_compositor_task_runner)),
       time_origin_(time_origin),
       font_selector_(MakeGarbageCollected<OffscreenFontSelector>(this)),
       script_eval_state_(ScriptEvalState::kPauseAfterFetch),
diff --git a/third_party/blink/renderer/core/workers/worker_global_scope.h b/third_party/blink/renderer/core/workers/worker_global_scope.h
index c1005886..4e25c65 100644
--- a/third_party/blink/renderer/core/workers/worker_global_scope.h
+++ b/third_party/blink/renderer/core/workers/worker_global_scope.h
@@ -226,6 +226,11 @@
   // successful and not successful) by the worker.
   FontMatchingMetrics* GetFontMatchingMetrics();
 
+  scoped_refptr<base::SingleThreadTaskRunner>
+  GetAgentGroupSchedulerCompositorTaskRunner() {
+    return agent_group_scheduler_compositor_task_runner_;
+  }
+
  protected:
   WorkerGlobalScope(std::unique_ptr<GlobalScopeCreationParams>,
                     WorkerThread*,
@@ -280,6 +285,11 @@
 
   WorkerThread* thread_;
 
+  // The compositor task runner associated with the |AgentGroupScheduler| this
+  // worker belongs to.
+  scoped_refptr<base::SingleThreadTaskRunner>
+      agent_group_scheduler_compositor_task_runner_;
+
   bool closing_ = false;
 
   const base::TimeTicks time_origin_;
diff --git a/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc b/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc
index c500b15d..9d107ed 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc
@@ -434,82 +434,6 @@
 // Check object state.
 //
 
-bool AXLayoutObject::IsFocused() const {
-  if (!GetDocument())
-    return false;
-
-  // A web area is represented by the Document node in the DOM tree, which isn't
-  // focusable.  Check instead if the frame's selection controller is focused.
-  if (IsWebArea() &&
-      GetDocument()->GetFrame()->Selection().FrameIsFocusedAndActive()) {
-    return true;
-  }
-
-  Element* focused_element = GetDocument()->FocusedElement();
-  return focused_element && focused_element == GetElement();
-}
-
-// aria-grabbed is deprecated in WAI-ARIA 1.1.
-AccessibilityGrabbedState AXLayoutObject::IsGrabbed() const {
-  if (!SupportsARIADragging())
-    return kGrabbedStateUndefined;
-
-  const AtomicString& grabbed = GetAttribute(html_names::kAriaGrabbedAttr);
-  return EqualIgnoringASCIICase(grabbed, "true") ? kGrabbedStateTrue
-                                                 : kGrabbedStateFalse;
-}
-
-AccessibilitySelectedState AXLayoutObject::IsSelected() const {
-  if (!GetLayoutObject() || !GetNode() || !IsSubWidget())
-    return kSelectedStateUndefined;
-
-  // The aria-selected attribute overrides automatic behaviors.
-  bool is_selected;
-  if (HasAOMPropertyOrARIAAttribute(AOMBooleanProperty::kSelected, is_selected))
-    return is_selected ? kSelectedStateTrue : kSelectedStateFalse;
-
-  // The selection should only follow the focus when the aria-selected attribute
-  // is marked as required or implied for this element in the ARIA specs.
-  // If this object can't follow the focus, then we can't say that it's selected
-  // nor that it's not.
-  if (!SelectionShouldFollowFocus())
-    return kSelectedStateUndefined;
-
-  // Selection follows focus, but ONLY in single selection containers, and only
-  // if aria-selected was not present to override.
-  return IsSelectedFromFocus() ? kSelectedStateTrue : kSelectedStateFalse;
-}
-
-// In single selection containers, selection follows focus unless aria_selected
-// is set to false. This is only valid for a subset of elements.
-bool AXLayoutObject::IsSelectedFromFocus() const {
-  if (!SelectionShouldFollowFocus())
-    return false;
-
-  // A tab item can also be selected if it is associated to a focused tabpanel
-  // via the aria-labelledby attribute.
-  if (IsTabItem() && IsTabItemSelected())
-    return kSelectedStateTrue;
-
-  // If not a single selection container, selection does not follow focus.
-  AXObject* container = ContainerWidget();
-  if (!container || container->IsMultiSelectable())
-    return false;
-
-  // If this object is not accessibility focused, then it is not selected from
-  // focus.
-  AXObject* focused_object = AXObjectCache().FocusedObject();
-  if (focused_object != this &&
-      (!focused_object || focused_object->ActiveDescendant() != this))
-    return false;
-
-  // In single selection container and accessibility focused => true if
-  // aria-selected wasn't used as an override.
-  bool is_selected;
-  return !HasAOMPropertyOrARIAAttribute(AOMBooleanProperty::kSelected,
-                                        is_selected);
-}
-
 // Returns true if the object is marked user-select:none
 bool AXLayoutObject::IsNotUserSelectable() const {
   if (!GetLayoutObject())
@@ -522,20 +446,6 @@
   return (style->UserSelect() == EUserSelect::kNone);
 }
 
-// Returns true if the node's aria-selected attribute should be set to true
-// when the node is focused. This is true for only a subset of roles.
-bool AXLayoutObject::SelectionShouldFollowFocus() const {
-  switch (RoleValue()) {
-    case ax::mojom::blink::Role::kListBoxOption:
-    case ax::mojom::blink::Role::kMenuListOption:
-    case ax::mojom::blink::Role::kTab:
-      return true;
-    default:
-      break;
-  }
-  return false;
-}
-
 //
 // Whether objects are ignored, i.e. not included in the tree.
 //
@@ -667,11 +577,6 @@
     return false;
 
   if (layout_object_->IsText()) {
-    if (CanIgnoreTextAsEmpty()) {
-      if (ignored_reasons)
-        ignored_reasons->push_back(IgnoredReason(kAXEmptyText));
-      return true;
-    }
     // Ignore TextAlternative of the list marker for SUMMARY because:
     //  - TextAlternatives for disclosure-* are triangle symbol characters used
     //    to visually indicate the expansion state.
@@ -755,114 +660,6 @@
   return true;
 }
 
-bool AXLayoutObject::HasAriaCellRole(Element* elem) const {
-  DCHECK(elem);
-  const AtomicString& aria_role_str =
-      elem->FastGetAttribute(html_names::kRoleAttr);
-  if (aria_role_str.IsEmpty())
-    return false;
-
-  ax::mojom::blink::Role aria_role = AriaRoleToWebCoreRole(aria_role_str);
-  return aria_role == ax::mojom::blink::Role::kCell ||
-         aria_role == ax::mojom::blink::Role::kColumnHeader ||
-         aria_role == ax::mojom::blink::Role::kRowHeader;
-}
-
-// Return true if whitespace is not necessary to keep adjacent_node separate
-// in screen reader output from surrounding nodes.
-bool AXLayoutObject::CanIgnoreSpaceNextTo(LayoutObject* layout,
-                                          bool is_after) const {
-  if (!layout)
-    return true;
-
-  // If adjacent to a whitespace character, the current space can be ignored.
-  if (layout->IsText()) {
-    auto* layout_text = To<LayoutText>(layout);
-    if (layout_text->HasEmptyText())
-      return false;
-    if (layout_text->GetText().Impl()->ContainsOnlyWhitespaceOrEmpty())
-      return true;
-    auto adjacent_char =
-        is_after ? layout_text->FirstCharacterAfterWhitespaceCollapsing()
-                 : layout_text->LastCharacterAfterWhitespaceCollapsing();
-    return adjacent_char == ' ' || adjacent_char == '\n' ||
-           adjacent_char == '\t';
-  }
-
-  // Keep spaces between images and other visible content.
-  if (layout->IsLayoutImage())
-    return false;
-
-  // Do not keep spaces between blocks.
-  if (!layout->IsLayoutInline())
-    return true;
-
-  // If next to an element that a screen reader will always read separately,
-  // the the space can be ignored.
-  // Elements that are naturally focusable even without a tabindex tend
-  // to be rendered separately even if there is no space between them.
-  // Some ARIA roles act like table cells and don't need adjacent whitespace to
-  // indicate separation.
-  // False negatives are acceptable in that they merely lead to extra whitespace
-  // static text nodes.
-  // TODO(aleventhal) Do we want this? Is it too hard/complex for Braille/Cvox?
-  auto* elem = DynamicTo<Element>(layout->GetNode());
-  if (elem && HasAriaCellRole(elem)) {
-    return true;
-  }
-
-  // Test against the appropriate child text node.
-  auto* layout_inline = To<LayoutInline>(layout);
-  LayoutObject* child =
-      is_after ? layout_inline->FirstChild() : layout_inline->LastChild();
-  return CanIgnoreSpaceNextTo(child, is_after);
-}
-
-bool AXLayoutObject::CanIgnoreTextAsEmpty() const {
-  if (!layout_object_ || !layout_object_->IsText() || !layout_object_->Parent())
-    return false;
-
-  auto* layout_text = To<LayoutText>(layout_object_);
-
-  // Ignore empty text
-  if (layout_text->HasEmptyText()) {
-    return true;
-  }
-
-  // Don't ignore node-less text (e.g. list bullets)
-  Node* node = GetNode();
-  if (!node)
-    return false;
-
-  // Always keep if anything other than collapsible whitespace.
-  if (!layout_text->IsAllCollapsibleWhitespace())
-    return false;
-
-  // Will now look at sibling nodes. We need the closest element to the
-  // whitespace markup-wise, e.g. tag1 in these examples:
-  // [whitespace] <tag1><tag2>x</tag2></tag1>
-  // <span>[whitespace]</span> <tag1><tag2>x</tag2></tag1>
-  Node* prev_node = FlatTreeTraversal::PreviousAbsoluteSibling(*node);
-  if (!prev_node)
-    return true;
-
-  Node* next_node = FlatTreeTraversal::NextSkippingChildren(*node);
-  if (!next_node)
-    return true;
-
-  // Ignore extra whitespace-only text if a sibling will be presented
-  // separately by screen readers whether whitespace is there or not.
-  if (CanIgnoreSpaceNextTo(prev_node->GetLayoutObject(), false) ||
-      CanIgnoreSpaceNextTo(next_node->GetLayoutObject(), true))
-    return true;
-
-  // Text elements with empty whitespace are returned, because of cases
-  // such as <span>Hello</span><span> </span><span>World</span>. Keeping
-  // the whitespace-only node means we now correctly expose "Hello World".
-  // See crbug.com/435765.
-  return false;
-}
-
 //
 // Properties of static elements.
 //
@@ -1198,6 +995,10 @@
 
   // For consistency between the forward and backward directions, try to always
   // return leaf nodes.
+  // TODO(accessibility) It doesn't make sense to return aria-owned nodes here,
+  // as they could be anywhere in the tree, and not on this line.
+  // Should probably only use children from LayoutTreeBuilderTraversal() like
+  // AXNodeObject::TextFromDescendants() does.
   if (result && result->ChildCountIncludingIgnored())
     return result->DeepestFirstChildIncludingIgnored();
   return result;
@@ -1313,6 +1114,10 @@
 
   // For consistency between the forward and backward directions, try to always
   // return leaf nodes.
+  // TODO(accessibility) It doesn't make sense to return aria-owned nodes here,
+  // as they could be anywhere in the tree, and not on this line.
+  // Should probably only use children from LayoutTreeBuilderTraversal() like
+  // AXNodeObject::TextFromDescendants() does.
   if (result && result->ChildCountIncludingIgnored())
     return result->DeepestLastChildIncludingIgnored();
   return result;
@@ -1510,10 +1315,9 @@
   }
 
   LayoutObject* obj = node->GetLayoutObject();
-  if (!obj)
-    return nullptr;
-
   AXObject* result = AXObjectCache().GetOrCreate(obj);
+  if (!result)
+    return nullptr;
   result->UpdateChildrenIfNecessary();
 
   // Allow the element to perform any hit-testing it might need to do to reach
@@ -2205,48 +2009,6 @@
 // Private.
 //
 
-bool AXLayoutObject::IsTabItemSelected() const {
-  if (!IsTabItem() || !GetLayoutObject())
-    return false;
-
-  Node* node = GetNode();
-  if (!node || !node->IsElementNode())
-    return false;
-
-  // The ARIA spec says a tab item can also be selected if it is aria-labeled by
-  // a tabpanel that has keyboard focus inside of it, or if a tabpanel in its
-  // aria-controls list has KB focus inside of it.
-  AXObject* focused_element = AXObjectCache().FocusedObject();
-  if (!focused_element)
-    return false;
-
-  HeapVector<Member<Element>> elements;
-  if (!HasAOMPropertyOrARIAAttribute(AOMRelationListProperty::kControls,
-                                     elements))
-    return false;
-
-  for (const auto& element : elements) {
-    AXObject* tab_panel = AXObjectCache().GetOrCreate(element);
-
-    // A tab item should only control tab panels.
-    if (!tab_panel ||
-        tab_panel->RoleValue() != ax::mojom::blink::Role::kTabPanel) {
-      continue;
-    }
-
-    AXObject* check_focus_element = focused_element;
-    // Check if the focused element is a descendant of the element controlled by
-    // the tab item.
-    while (check_focus_element) {
-      if (tab_panel == check_focus_element)
-        return true;
-      check_focus_element = check_focus_element->ParentObject();
-    }
-  }
-
-  return false;
-}
-
 AXObject* AXLayoutObject::AccessibilityImageMapHitTest(
     HTMLAreaElement* area,
     const IntPoint& point) const {
diff --git a/third_party/blink/renderer/modules/accessibility/ax_layout_object.h b/third_party/blink/renderer/modules/accessibility/ax_layout_object.h
index 9ab5739..56e1df7a 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_layout_object.h
+++ b/third_party/blink/renderer/modules/accessibility/ax_layout_object.h
@@ -89,18 +89,12 @@
   bool IsVisited() const override;
 
   // Check object state.
-  bool IsFocused() const override;
-  // aria-grabbed is deprecated in WAI-ARIA 1.1.
-  AccessibilityGrabbedState IsGrabbed() const override;
-  AccessibilitySelectedState IsSelected() const override;
-  bool IsSelectedFromFocus() const override;
   bool IsNotUserSelectable() const override;
 
   // Whether objects are ignored, i.e. not included in the tree.
   AXObjectInclusion DefaultObjectInclusion(
       IgnoredReasons* = nullptr) const override;
   bool ComputeAccessibilityIsIgnored(IgnoredReasons* = nullptr) const override;
-  bool CanIgnoreTextAsEmpty() const override;
 
   // Properties of static elements.
   ax::mojom::blink::ListStyle GetListStyle() const final;
@@ -172,16 +166,12 @@
       ax::mojom::blink::Role dom_role) const override;
 
  private:
-  bool IsTabItemSelected() const;
   AXObject* AccessibilityImageMapHitTest(HTMLAreaElement*,
                                          const IntPoint&) const;
   bool FindAllTableCellsWithRole(ax::mojom::blink::Role, AXObjectVector&) const;
 
   LayoutRect ComputeElementRect() const;
-  bool CanIgnoreSpaceNextTo(LayoutObject*, bool is_after) const;
-  bool HasAriaCellRole(Element*) const;
   bool IsPlaceholder() const;
-  bool SelectionShouldFollowFocus() const;
 
   static ax::mojom::blink::TextDecorationStyle
   TextDecorationStyleToAXTextDecorationStyle(
diff --git a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
index 9abe035..bab31c67 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
@@ -551,14 +551,6 @@
   return true;
 }
 
-bool AXNodeObject::CanIgnoreTextAsEmpty() const {
-  // Note: it's safe to call AXNodeObject::ComputeAccessibilityIsIgnored,
-  // since that has just the logic we need - but note that
-  // AXLayoutObject::ComputeAccessibilityIsIgnored calls CanIgnoreTextAsEmpty
-  // so that'd create a loop.
-  return ComputeAccessibilityIsIgnored();
-}
-
 static bool IsListElement(Node* node) {
   return IsA<HTMLUListElement>(*node) || IsA<HTMLOListElement>(*node) ||
          IsA<HTMLDListElement>(*node);
@@ -1193,6 +1185,9 @@
 }
 
 void AXNodeObject::Detach() {
+#if DCHECK_IS_ON()
+  DCHECK(!is_adding_children_) << "Cannot Detach |this| during AddChildren()";
+#endif
   AXObject::Detach();
   node_ = nullptr;
 }
@@ -1370,6 +1365,9 @@
 }
 
 bool AXNodeObject::IsOffScreen() const {
+  if (IsDetached())
+    return false;
+  DCHECK(GetNode());
   return DisplayLockUtilities::NearestLockedExclusiveAncestor(*GetNode());
 }
 
@@ -1431,6 +1429,138 @@
   return IsTextControl() || AXObject::IsClickable();
 }
 
+bool AXNodeObject::IsFocused() const {
+  if (!GetDocument())
+    return false;
+
+  // A web area is represented by the Document node in the DOM tree, which isn't
+  // focusable.  Check instead if the frame's selection controller is focused.
+  if (IsWebArea() &&
+      GetDocument()->GetFrame()->Selection().FrameIsFocusedAndActive()) {
+    return true;
+  }
+
+  Element* focused_element = GetDocument()->FocusedElement();
+  return focused_element && focused_element == GetElement();
+}
+
+// aria-grabbed is deprecated in WAI-ARIA 1.1.
+AccessibilityGrabbedState AXNodeObject::IsGrabbed() const {
+  if (!SupportsARIADragging())
+    return kGrabbedStateUndefined;
+
+  const AtomicString& grabbed = GetAttribute(html_names::kAriaGrabbedAttr);
+  return EqualIgnoringASCIICase(grabbed, "true") ? kGrabbedStateTrue
+                                                 : kGrabbedStateFalse;
+}
+
+AccessibilitySelectedState AXNodeObject::IsSelected() const {
+  if (!GetNode() || !GetLayoutObject() || !IsSubWidget())
+    return kSelectedStateUndefined;
+
+  // The aria-selected attribute overrides automatic behaviors.
+  bool is_selected;
+  if (HasAOMPropertyOrARIAAttribute(AOMBooleanProperty::kSelected, is_selected))
+    return is_selected ? kSelectedStateTrue : kSelectedStateFalse;
+
+  // The selection should only follow the focus when the aria-selected attribute
+  // is marked as required or implied for this element in the ARIA specs.
+  // If this object can't follow the focus, then we can't say that it's selected
+  // nor that it's not.
+  if (!SelectionShouldFollowFocus())
+    return kSelectedStateUndefined;
+
+  // Selection follows focus, but ONLY in single selection containers, and only
+  // if aria-selected was not present to override.
+  return IsSelectedFromFocus() ? kSelectedStateTrue : kSelectedStateFalse;
+}
+
+// In single selection containers, selection follows focus unless aria_selected
+// is set to false. This is only valid for a subset of elements.
+bool AXNodeObject::IsSelectedFromFocus() const {
+  if (!SelectionShouldFollowFocus())
+    return false;
+
+  // A tab item can also be selected if it is associated to a focused tabpanel
+  // via the aria-labelledby attribute.
+  if (IsTabItem() && IsTabItemSelected())
+    return kSelectedStateTrue;
+
+  // If not a single selection container, selection does not follow focus.
+  AXObject* container = ContainerWidget();
+  if (!container || container->IsMultiSelectable())
+    return false;
+
+  // If this object is not accessibility focused, then it is not selected from
+  // focus.
+  AXObject* focused_object = AXObjectCache().FocusedObject();
+  if (focused_object != this &&
+      (!focused_object || focused_object->ActiveDescendant() != this))
+    return false;
+
+  // In single selection container and accessibility focused => true if
+  // aria-selected wasn't used as an override.
+  bool is_selected;
+  return !HasAOMPropertyOrARIAAttribute(AOMBooleanProperty::kSelected,
+                                        is_selected);
+}
+
+// Returns true if the node's aria-selected attribute should be set to true
+// when the node is focused. This is true for only a subset of roles.
+bool AXNodeObject::SelectionShouldFollowFocus() const {
+  switch (RoleValue()) {
+    case ax::mojom::blink::Role::kListBoxOption:
+    case ax::mojom::blink::Role::kMenuListOption:
+    case ax::mojom::blink::Role::kTab:
+      return true;
+    default:
+      break;
+  }
+  return false;
+}
+
+bool AXNodeObject::IsTabItemSelected() const {
+  if (!IsTabItem() || !GetLayoutObject())
+    return false;
+
+  Node* node = GetNode();
+  if (!node || !node->IsElementNode())
+    return false;
+
+  // The ARIA spec says a tab item can also be selected if it is aria-labeled by
+  // a tabpanel that has keyboard focus inside of it, or if a tabpanel in its
+  // aria-controls list has KB focus inside of it.
+  AXObject* focused_element = AXObjectCache().FocusedObject();
+  if (!focused_element)
+    return false;
+
+  HeapVector<Member<Element>> elements;
+  if (!HasAOMPropertyOrARIAAttribute(AOMRelationListProperty::kControls,
+                                     elements))
+    return false;
+
+  for (const auto& element : elements) {
+    AXObject* tab_panel = AXObjectCache().GetOrCreate(element);
+
+    // A tab item should only control tab panels.
+    if (!tab_panel ||
+        tab_panel->RoleValue() != ax::mojom::blink::Role::kTabPanel) {
+      continue;
+    }
+
+    AXObject* check_focus_element = focused_element;
+    // Check if the focused element is a descendant of the element controlled by
+    // the tab item.
+    while (check_focus_element) {
+      if (tab_panel == check_focus_element)
+        return true;
+      check_focus_element = check_focus_element->ParentObject();
+    }
+  }
+
+  return false;
+}
+
 AXRestriction AXNodeObject::Restriction() const {
   Element* elem = GetElement();
   if (!elem)
@@ -1506,11 +1636,12 @@
 
   if (GetNode() && IsA<HTMLSummaryElement>(*GetNode())) {
     if (GetNode()->parentNode() &&
-        IsA<HTMLDetailsElement>(GetNode()->parentNode()))
+        IsA<HTMLDetailsElement>(GetNode()->parentNode())) {
       return To<Element>(GetNode()->parentNode())
                      ->FastHasAttribute(html_names::kOpenAttr)
                  ? kExpandedExpanded
                  : kExpandedCollapsed;
+    }
   }
 
   bool expanded = false;
@@ -3264,8 +3395,12 @@
       << "\nParent is " << ToString(true, true) << "\nFirst child is "
       << children_[0]->ToString(true, true);
 #endif
-#define CHECK_ATTACHED() \
-  DCHECK(!IsDetached()) << "Detached adding children: " << ToString(true, true)
+// TODO(aleventhal) Nothing should become detached in the while adding children.
+#define CHECK_ATTACHED()                                                  \
+  if (IsDetached()) {                                                     \
+    NOTREACHED() << "Detached adding children: " << ToString(true, true); \
+    return;                                                               \
+  }
 
   DCHECK(children_dirty_);
   children_dirty_ = false;
@@ -3324,15 +3459,6 @@
   if (!child_obj)
     return;
 
-  // TODO(aleventhal) Move to Is[Layout|Node]ObjectRelevantForAccessibility(),
-  // which is where we decide whether an AXObject can be created at all,
-  // otherwise are create these AXObjects and they use up memory.
-  if (RuntimeEnabledFeatures::AccessibilityExposeIgnoredNodesEnabled() &&
-      child_obj &&
-      child_obj->RoleValue() == ax::mojom::blink::Role::kStaticText &&
-      child_obj->CanIgnoreTextAsEmpty())
-    return;
-
   // <area> children should only be added via AddImageMapChildren(), as the
   // children of an <image usemap>, and never alone or as children of a <map>.
   if (child_obj->IsImageMapLink())
diff --git a/third_party/blink/renderer/modules/accessibility/ax_node_object.h b/third_party/blink/renderer/modules/accessibility/ax_node_object.h
index f8499b0..a275cbe 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_node_object.h
+++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.h
@@ -58,7 +58,6 @@
   AXObjectInclusion ShouldIncludeBasedOnSemantics(
       IgnoredReasons* = nullptr) const;
   bool ComputeAccessibilityIsIgnored(IgnoredReasons* = nullptr) const override;
-  bool CanIgnoreTextAsEmpty() const override;
   const AXObject* InheritsPresentationalRoleFrom() const override;
   ax::mojom::blink::Role DetermineTableSectionRole() const;
   ax::mojom::blink::Role DetermineTableCellRole() const;
@@ -116,7 +115,12 @@
 
   // Check object state.
   bool IsClickable() const final;
+  bool IsFocused() const override;
+  // aria-grabbed is deprecated in WAI-ARIA 1.1.
+  AccessibilityGrabbedState IsGrabbed() const override;
   AccessibilityExpanded IsExpanded() const override;
+  AccessibilitySelectedState IsSelected() const override;
+  bool IsSelectedFromFocus() const override;
   bool IsRequired() const final;
   bool IsControl() const override;
   AXRestriction Restriction() const override;
@@ -290,6 +294,8 @@
   String PlaceholderFromNativeAttribute() const;
   String GetValueContributionToName() const;
   bool UseNameFromSelectedOption() const;
+  bool SelectionShouldFollowFocus() const;
+  virtual bool IsTabItemSelected() const;
 
   void AddNodeChildren();
   void AddLayoutChildren();
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.cc b/third_party/blink/renderer/modules/accessibility/ax_object.cc
index 452c154..67199fc 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_object.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_object.cc
@@ -3319,6 +3319,7 @@
 }
 
 const AXObject::AXObjectVector& AXObject::ChildrenIncludingIgnored() const {
+  DCHECK(!IsDetached());
   return const_cast<AXObject*>(this)->ChildrenIncludingIgnored();
 }
 
@@ -3385,11 +3386,16 @@
 }
 
 AXObject* AXObject::LastChildIncludingIgnored() const {
+  DCHECK(!IsDetached());
   return ChildCountIncludingIgnored() ? *(ChildrenIncludingIgnored().end() - 1)
                                       : nullptr;
 }
 
 AXObject* AXObject::DeepestFirstChildIncludingIgnored() const {
+  if (IsDetached()) {
+    NOTREACHED();
+    return nullptr;
+  }
   if (!ChildCountIncludingIgnored())
     return nullptr;
 
@@ -5081,7 +5087,8 @@
     if (IsAXLayoutObject() && !GetLayoutObject())
       string_builder = string_builder + " missingLayout";
 
-    string_builder = string_builder + " name=";
+    if (!cached_values_only)
+      string_builder = string_builder + " name=";
   } else {
     string_builder = string_builder + ": ";
   }
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.h b/third_party/blink/renderer/modules/accessibility/ax_object.h
index d22ca0b7d..a7c4e604 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_object.h
+++ b/third_party/blink/renderer/modules/accessibility/ax_object.h
@@ -524,7 +524,6 @@
   virtual bool ComputeAccessibilityIsIgnored(IgnoredReasons* = nullptr) const {
     return true;
   }
-  virtual bool CanIgnoreTextAsEmpty() const { return false; }
   bool AccessibilityIsIgnoredByDefault(IgnoredReasons* = nullptr) const;
   virtual AXObjectInclusion DefaultObjectInclusion(
       IgnoredReasons* = nullptr) const;
@@ -861,7 +860,7 @@
   }
   // Called on the AX object after the layout tree determines which is the right
   // AXLayoutObject.
-  virtual AXObject* ElementAccessibilityHitTest(const IntPoint&) const;
+  AXObject* ElementAccessibilityHitTest(const IntPoint&) const;
 
   //
   // High-level accessibility tree access. Other modules should only use these
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc
index 6d8aeb1f..3cc75da 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc
@@ -67,6 +67,7 @@
 #include "third_party/blink/renderer/core/html_names.h"
 #include "third_party/blink/renderer/core/input_type_names.h"
 #include "third_party/blink/renderer/core/layout/api/line_layout_api_shim.h"
+#include "third_party/blink/renderer/core/layout/layout_inline.h"
 #include "third_party/blink/renderer/core/layout/layout_progress.h"
 #include "third_party/blink/renderer/core/layout/layout_table.h"
 #include "third_party/blink/renderer/core/layout/layout_table_cell.h"
@@ -142,6 +143,101 @@
   }
 }
 
+bool HasAriaCellRole(Element* elem) {
+  DCHECK(elem);
+  const AtomicString& role_str = elem->FastGetAttribute(html_names::kRoleAttr);
+  if (role_str.IsEmpty())
+    return false;
+
+  return ui::IsCellOrTableHeader(AXObject::AriaRoleToWebCoreRole(role_str));
+}
+
+// Return true if whitespace is not necessary to keep adjacent_node separate
+// in screen reader output from surrounding nodes.
+bool CanIgnoreSpaceNextTo(LayoutObject* layout_object, bool is_after) {
+  if (!layout_object)
+    return true;
+
+  // If adjacent to a whitespace character, the current space can be ignored.
+  if (layout_object->IsText()) {
+    auto* layout_text = To<LayoutText>(layout_object);
+    if (layout_text->HasEmptyText())
+      return false;
+    if (layout_text->GetText().Impl()->ContainsOnlyWhitespaceOrEmpty())
+      return true;
+    auto adjacent_char =
+        is_after ? layout_text->FirstCharacterAfterWhitespaceCollapsing()
+                 : layout_text->LastCharacterAfterWhitespaceCollapsing();
+    return adjacent_char == ' ' || adjacent_char == '\n' ||
+           adjacent_char == '\t';
+  }
+
+  // Keep spaces between images and other visible content.
+  if (layout_object->IsLayoutImage())
+    return false;
+
+  // Do not keep spaces between blocks.
+  if (!layout_object->IsLayoutInline())
+    return true;
+
+  // If next to an element that a screen reader will always read separately,
+  // the the space can be ignored.
+  // Elements that are naturally focusable even without a tabindex tend
+  // to be rendered separately even if there is no space between them.
+  // Some ARIA roles act like table cells and don't need adjacent whitespace to
+  // indicate separation.
+  // False negatives are acceptable in that they merely lead to extra whitespace
+  // static text nodes.
+  auto* elem = DynamicTo<Element>(layout_object->GetNode());
+  if (elem && HasAriaCellRole(elem))
+    return true;
+
+  // Test against the appropriate child text node.
+  auto* layout_inline = To<LayoutInline>(layout_object);
+  LayoutObject* child =
+      is_after ? layout_inline->FirstChild() : layout_inline->LastChild();
+  return CanIgnoreSpaceNextTo(child, is_after);
+}
+
+bool IsTextRelevantForAccessibility(const LayoutText& layout_text) {
+  DCHECK(layout_text.Parent());
+  Node* node = layout_text.GetNode();
+  DCHECK(node);  // Anonymous text is processed earlier, doesn't reach here.
+
+  // Ignore empty text.
+  if (layout_text.HasEmptyText())
+    return false;
+
+  // Always keep if anything other than collapsible whitespace.
+  if (!layout_text.IsAllCollapsibleWhitespace() || layout_text.IsBR())
+    return true;
+
+  // Will now look at sibling nodes. We need the closest element to the
+  // whitespace markup-wise, e.g. tag1 in these examples:
+  // [whitespace] <tag1><tag2>x</tag2></tag1>
+  // <span>[whitespace]</span> <tag1><tag2>x</tag2></tag1>
+  Node* prev_node = FlatTreeTraversal::PreviousAbsoluteSibling(*node);
+  if (!prev_node)
+    return false;
+
+  Node* next_node = FlatTreeTraversal::NextSkippingChildren(*node);
+  if (!next_node)
+    return false;
+
+  // Ignore extra whitespace-only text if a sibling will be presented
+  // separately by screen readers whether whitespace is there or not.
+  if (CanIgnoreSpaceNextTo(prev_node->GetLayoutObject(), false) ||
+      CanIgnoreSpaceNextTo(next_node->GetLayoutObject(), true)) {
+    return false;
+  }
+
+  // Text elements with empty whitespace are returned, because of cases
+  // such as <span>Hello</span><span> </span><span>World</span>. Keeping
+  // the whitespace-only node means we now correctly expose "Hello World".
+  // See crbug.com/435765.
+  return true;
+}
+
 bool IsLayoutObjectRelevantForAccessibility(const LayoutObject& layout_object) {
   if (layout_object.IsAnonymous()) {
     // Anonymous means there is no DOM node, and it's been inserted by the
@@ -149,8 +245,11 @@
     // inserted as a parent of an inline where there are block siblings.
 
     // Visible anonymous content (text, image, layout quotes) is relevant.
-    if (!layout_object.CanHaveChildren())
+    if (!layout_object.CanHaveChildren()) {
+      if (layout_object.IsText())
+        return !To<LayoutText>(layout_object).HasEmptyText();
       return true;
+    }
 
     // Anonymous containers are not relevant, unless inside a pseudo element.
     // Allowing anonymous pseudo elements ensures that all visible descendant
@@ -159,6 +258,9 @@
     return IsPseudoElementDescendant(layout_object);
   }
 
+  if (layout_object.IsText())
+    return IsTextRelevantForAccessibility(To<LayoutText>(layout_object));
+
   Node* node = layout_object.GetNode();
   DCHECK(node) << "Non-anonymous layout objects always have a node";
 
@@ -172,11 +274,46 @@
   return true;
 }
 
-bool IsNodeRelevantForAccessibility(const Node* node, bool parent_ax_known) {
+bool IsNodeRelevantForAccessibility(const Node* node,
+                                    bool parent_ax_known,
+                                    bool is_layout_object_relevant) {
   if (!node || !node->isConnected())
     return false;
 
-  if (!node->IsElementNode() && !node->IsTextNode() && !node->IsDocumentNode())
+  if (node->IsDocumentNode())
+    return true;
+
+  if (node->IsTextNode()) {
+    // Layout has more info available to determine if whitespace is relevant.
+    // If display-locked, layout object may be missing or stale:
+    // Assume that all display-locked text nodes are relevant.
+    if (DisplayLockUtilities::NearestLockedInclusiveAncestor(*node))
+      return true;
+
+    // If rendered, decision is from IsLayoutObjectRelevantForAccessibility().
+    if (node->GetLayoutObject())
+      return is_layout_object_relevant;
+
+    // If unrendered + no parent, it is in a shadow tree. Consider irrelevant.
+    if (!node->parentElement()) {
+      DCHECK(node->IsInShadowTree());
+      return false;
+    }
+
+    // If unrendered and in <canvas>, consider even whitespace relevant.
+    // TODO(aleventhal) Consider including all text, even unrendered whitespace,
+    // whether or not in <canvas>. For now this matches previous behavior.
+    // Including all text would allow simply returning true at this point.
+    if (node->parentElement()->IsInCanvasSubtree())
+      return true;
+
+    // Must be unrendered because of CSS. Consider relevant if non-whitespace.
+    // Allowing rendered non-whitespace to be considered relevant will allow
+    // use for accessible relations such as labelledby and describedby.
+    return !To<Text>(node)->ContainsOnlyWhitespaceOrEmpty();
+  }
+
+  if (!node->IsElementNode())
     return false;  // Only documents, elements and text nodes get ax objects.
 
   if (IsA<HTMLAreaElement>(node) &&
@@ -255,6 +392,11 @@
 }
 
 void AXObjectCacheImpl::Dispose() {
+#if DCHECK_IS_ON()
+  DCHECK(!has_been_disposed_) << "Something is wrong, trying to dispose twice.";
+  has_been_disposed_ = true;
+#endif
+
   for (auto& entry : objects_) {
     AXObject* obj = entry.value;
     obj->Detach();
@@ -263,9 +405,6 @@
 
   permission_observer_receiver_.reset();
 
-#if DCHECK_IS_ON()
-  has_been_disposed_ = true;
-#endif
 }
 
 AXObject* AXObjectCacheImpl::Root() {
@@ -395,7 +534,16 @@
     Invalidate(ax_id);
   }
 
-  return objects_.at(ax_id);
+  AXObject* result = objects_.at(ax_id);
+#if DCHECK_IS_ON()
+  DCHECK(result) << "Had AXID for Node but no entry in objects_";
+  DCHECK(result->IsAXNodeObject());
+  // Do not allow detached objects except when disposing entire tree.
+  DCHECK(!result->IsDetached() || has_been_disposed_)
+      << "Detached AXNodeObject in map: "
+      << "AXID#" << ax_id << " Node=" << node;
+#endif
+  return result;
 }
 
 AXObject* AXObjectCacheImpl::Get(const Node* node) {
@@ -431,13 +579,31 @@
     Invalidate(node_id);
   }
 
-  if (layout_id)
-    return objects_.at(layout_id);
-
+  if (layout_id) {
+    AXObject* result = objects_.at(layout_id);
+#if DCHECK_IS_ON()
+    DCHECK(result) << "Had AXID for LayoutObject but no entry in objects_";
+    DCHECK(result->IsAXLayoutObject());
+    // Do not allow detached objects except when disposing entire tree.
+    DCHECK(!result->IsDetached() || has_been_disposed_)
+        << "Detached AXLayoutObject in map: "
+        << "AXID#" << layout_id << " LayoutObject=" << layout_object;
+#endif
+    return result;
+  }
   if (!node_id)
     return nullptr;
 
-  return objects_.at(node_id);
+  AXObject* result = objects_.at(node_id);
+#if DCHECK_IS_ON()
+  DCHECK(result) << "Had AXID for Node but no entry in objects_";
+  DCHECK(result->IsAXNodeObject());
+  // Do not allow detached objects except when disposing entire tree.
+  DCHECK(!result->IsDetached() || has_been_disposed_)
+      << "Detached AXNodeObject in map: "
+      << "AXID#" << node_id << " Node=" << node;
+#endif
+  return result;
 }
 
 AXObject* AXObjectCacheImpl::Get(AbstractInlineTextBox* inline_text_box) {
@@ -449,7 +615,16 @@
   if (!ax_id)
     return nullptr;
 
-  return objects_.at(ax_id);
+  AXObject* result = objects_.at(ax_id);
+#if DCHECK_IS_ON()
+  DCHECK(result) << "Had AXID for inline text box but no entry in objects_";
+  DCHECK(result->IsAXInlineTextBox());
+  // Do not allow detached objects except when disposing entire tree.
+  DCHECK(!result->IsDetached() || has_been_disposed_)
+      << "Detached AXInlineTextBox in map: "
+      << "AXID#" << ax_id << " Node=" << inline_text_box->GetText();
+#endif
+  return result;
 }
 
 void AXObjectCacheImpl::Invalidate(AXID ax_id) {
@@ -480,7 +655,16 @@
   if (!ax_id)
     return nullptr;
 
-  return objects_.at(ax_id);
+  AXObject* result = objects_.at(ax_id);
+#if DCHECK_IS_ON()
+  DCHECK(result) << "Had AXID for accessible_node but no entry in objects_";
+  DCHECK(result->IsVirtualObject());
+  // Do not allow detached objects except when disposing entire tree.
+  DCHECK(!result->IsDetached() || has_been_disposed_)
+      << "Detached AXVirtualObject in map: "
+      << "AXID#" << ax_id << " Node=" << accessible_node->element();
+#endif
+  return result;
 }
 
 AXObject* AXObjectCacheImpl::CreateFromRenderer(LayoutObject* layout_object) {
@@ -593,7 +777,17 @@
                                            AXObject* parent_if_known,
                                            AXID use_axid) {
   DCHECK(node);
-  if (!IsNodeRelevantForAccessibility(node, parent_if_known))
+
+  // If the node has a layout object, prefer using that as the primary key for
+  // the AXObject, with the exception of the HTMLAreaElement and nodes within
+  // a locked subtree, which are created based on its node.
+  LayoutObject* layout_object = node->GetLayoutObject();
+  if (layout_object && IsLayoutObjectRelevantForAccessibility(*layout_object) &&
+      !DisplayLockUtilities::NearestLockedExclusiveAncestor(*node)) {
+    return CreateAndInit(layout_object, parent_if_known, use_axid);
+  }
+
+  if (!IsNodeRelevantForAccessibility(node, parent_if_known, false))
     return nullptr;
 
 #if DCHECK_IS_ON()
@@ -606,15 +800,6 @@
       << "Unclean document at lifecycle " << document->Lifecycle().ToString();
 #endif  // DCHECK_IS_ON()
 
-  // If the node has a layout object, prefer using that as the primary key for
-  // the AXObject, with the exception of the HTMLAreaElement and nodes within
-  // a locked subtree, which are created based on its node.
-  LayoutObject* layout_object = node->GetLayoutObject();
-  if (layout_object && IsLayoutObjectRelevantForAccessibility(*layout_object) &&
-      !DisplayLockUtilities::NearestLockedExclusiveAncestor(*node)) {
-    return CreateAndInit(layout_object, parent_if_known, use_axid);
-  }
-
   // Return null if inside a shadow tree of something that can't have children,
   // for example, an <img> has a user agent shadow root containing a <span> for
   // the alt text. Do not create an accessible for that as it would be unable
@@ -672,7 +857,7 @@
 
   Node* node = layout_object->GetNode();
 
-  if (node && !IsNodeRelevantForAccessibility(node, parent_if_known))
+  if (node && !IsNodeRelevantForAccessibility(node, parent_if_known, true))
     return nullptr;
 
   // Return null if inside a shadow tree of something that can't have children,
diff --git a/third_party/blink/renderer/modules/remote_objects/remote_object.cc b/third_party/blink/renderer/modules/remote_objects/remote_object.cc
index c4fb1d11..e71b19ed 100644
--- a/third_party/blink/renderer/modules/remote_objects/remote_object.cc
+++ b/third_party/blink/renderer/modules/remote_objects/remote_object.cc
@@ -31,6 +31,8 @@
       return "invoking Object.getClass() is not permitted";
     case mojom::blink::RemoteInvocationError::EXCEPTION_THROWN:
       return "an exception was thrown";
+    case mojom::blink::RemoteInvocationError::NON_ASSIGNABLE_TYPES:
+      return "an incompatible object type passed to method parameter";
     default:
       return String::Format("unknown RemoteInvocationError value: %d", value);
   }
@@ -165,8 +167,22 @@
         std::move(remote_typed_array));
   }
 
+  if (js_value->IsArrayBuffer() || js_value->IsArrayBufferView()) {
+    // If ArrayBuffer or ArrayBufferView is not a TypedArray, we should treat it
+    // as undefined.
+    return mojom::blink::RemoteInvocationArgument::NewSingletonValue(
+        mojom::blink::SingletonJavaScriptValue::kUndefined);
+  }
+
   if (js_value->IsObject()) {
     v8::Local<v8::Object> object_val = js_value.As<v8::Object>();
+
+    RemoteObject* remote_object = nullptr;
+    if (gin::ConvertFromV8(isolate, object_val, &remote_object)) {
+      return mojom::blink::RemoteInvocationArgument::NewObjectIdValue(
+          remote_object->object_id());
+    }
+
     v8::Local<v8::Value> length_value;
     v8::TryCatch try_catch(isolate);
     v8::MaybeLocal<v8::Value> maybe_length_value = object_val->Get(
diff --git a/third_party/blink/renderer/modules/remote_objects/remote_object.h b/third_party/blink/renderer/modules/remote_objects/remote_object.h
index 6c12a5e3..72eeb6013 100644
--- a/third_party/blink/renderer/modules/remote_objects/remote_object.h
+++ b/third_party/blink/renderer/modules/remote_objects/remote_object.h
@@ -37,6 +37,8 @@
   std::vector<std::string> EnumerateNamedProperties(
       v8::Isolate* isolate) override;
 
+  int32_t object_id() const { return object_id_; }
+
  private:
   static void RemoteObjectInvokeCallback(
       const v8::FunctionCallbackInfo<v8::Value>& info);
diff --git a/third_party/blink/renderer/modules/webcodecs/BUILD.gn b/third_party/blink/renderer/modules/webcodecs/BUILD.gn
index 01a7bf8..d0dcc6c 100644
--- a/third_party/blink/renderer/modules/webcodecs/BUILD.gn
+++ b/third_party/blink/renderer/modules/webcodecs/BUILD.gn
@@ -82,6 +82,7 @@
   testonly = true
   sources = [
     "audio_decoder_broker_test.cc",
+    "audio_frame_test.cc",
     "decoder_selector_test.cc",
     "encoded_video_chunk_test.cc",
     "image_decoder_external_test.cc",
diff --git a/third_party/blink/renderer/modules/webcodecs/audio_frame.cc b/third_party/blink/renderer/modules/webcodecs/audio_frame.cc
index 7a15007..1c7110c 100644
--- a/third_party/blink/renderer/modules/webcodecs/audio_frame.cc
+++ b/third_party/blink/renderer/modules/webcodecs/audio_frame.cc
@@ -30,27 +30,14 @@
   auto converted_data =
       media::AudioBus::Create(buffer->channel_count(), buffer->frame_count());
 
+  std::vector<float*> wrapped_channels(buffer_->numberOfChannels());
+  for (size_t ch = 0; ch < wrapped_channels.size(); ++ch)
+    wrapped_channels[ch] = buffer_->getChannelData(ch)->Data();
+
   // Copy the frames, converting from |buffer|'s internal format to float.
-  // TODO(https://crbug.com/1171840): Add a version of
-  // media::AudioBus::ReadFrame that can directly read into |buffer_|'s data.
   // TODO(chcunningham): Avoid this copy by refactoring blink::AudioBuffer to
   // ref a media::AudioBuffer and only copy for calls to copyToChannel().
-  buffer->ReadFrames(converted_data->frames(), 0 /* source_frame_offset */,
-                     0 /* dest_frame_offset */, converted_data.get());
-
-  CopyDataToInternalBuffer(converted_data.get());
-}
-
-void AudioFrame::CopyDataToInternalBuffer(media::AudioBus* data) {
-  DCHECK_EQ(static_cast<int>(buffer_->numberOfChannels()), data->channels());
-  DCHECK_EQ(static_cast<int>(buffer_->length()), data->frames());
-
-  for (int i = 0; i < data->channels(); ++i) {
-    size_t byte_length = buffer_->getChannelData(i)->byteLength();
-    DCHECK_EQ(byte_length, data->frames() * sizeof(float));
-    float* buffer_data_dest = buffer_->getChannelData(i)->Data();
-    memcpy(data->channel(i), buffer_data_dest, byte_length);
-  }
+  buffer->ReadAllFrames(wrapped_channels);
 }
 
 std::unique_ptr<AudioFrameSerializationData>
@@ -69,7 +56,7 @@
     size_t byte_length = buffer_->getChannelData(i)->byteLength();
     DCHECK_EQ(byte_length, data_copy->frames() * sizeof(float));
     float* buffer_data_src = buffer_->getChannelData(i)->Data();
-    memcpy(buffer_data_src, data_copy->channel(i), byte_length);
+    memcpy(data_copy->channel(i), buffer_data_src, byte_length);
   }
 
   return AudioFrameSerializationData::Wrap(
@@ -87,7 +74,16 @@
   // Copy the frames.
   // TODO(https://crbug.com/1168418): Avoid this copy by refactoring
   // blink::AudioBuffer accept a serializable audio data backing object.
-  CopyDataToInternalBuffer(data_bus);
+  DCHECK_EQ(static_cast<int>(buffer_->numberOfChannels()),
+            data_bus->channels());
+  DCHECK_EQ(static_cast<int>(buffer_->length()), data_bus->frames());
+
+  for (int i = 0; i < data_bus->channels(); ++i) {
+    size_t byte_length = buffer_->getChannelData(i)->byteLength();
+    DCHECK_EQ(byte_length, data_bus->frames() * sizeof(float));
+    float* buffer_data_dest = buffer_->getChannelData(i)->Data();
+    memcpy(buffer_data_dest, data_bus->channel(i), byte_length);
+  }
 }
 
 void AudioFrame::close() {
diff --git a/third_party/blink/renderer/modules/webcodecs/audio_frame.h b/third_party/blink/renderer/modules/webcodecs/audio_frame.h
index c4c35d0a..ab27cdda 100644
--- a/third_party/blink/renderer/modules/webcodecs/audio_frame.h
+++ b/third_party/blink/renderer/modules/webcodecs/audio_frame.h
@@ -39,8 +39,6 @@
   void Trace(Visitor*) const override;
 
  private:
-  void CopyDataToInternalBuffer(media::AudioBus* data);
-
   uint64_t timestamp_;
   Member<AudioBuffer> buffer_;
 };
diff --git a/third_party/blink/renderer/modules/webcodecs/audio_frame_test.cc b/third_party/blink/renderer/modules/webcodecs/audio_frame_test.cc
new file mode 100644
index 0000000..2ff6a379
--- /dev/null
+++ b/third_party/blink/renderer/modules/webcodecs/audio_frame_test.cc
@@ -0,0 +1,158 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/renderer/modules/webcodecs/audio_frame.h"
+#include "media/base/test_helpers.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_testing.h"
+#include "third_party/blink/renderer/bindings/modules/v8/v8_audio_frame_init.h"
+#include "third_party/blink/renderer/modules/webaudio/audio_buffer.h"
+#include "third_party/blink/renderer/modules/webcodecs/audio_frame_serialization_data.h"
+#include "third_party/blink/renderer/platform/heap/thread_state.h"
+#include "ui/gfx/geometry/rect.h"
+#include "ui/gfx/geometry/size.h"
+
+namespace blink {
+
+namespace {
+// Default test values
+constexpr uint64_t kTimestampInMicroSeconds = 1234;
+constexpr int kChannels = 2;
+constexpr int kFrames = 20;
+constexpr int kSampleRate = 8000;
+}  // namespace
+
+class AudioFrameTest : public testing::Test {
+ protected:
+  AudioBuffer* CreateDefaultAudioBuffer() {
+    auto* audio_buffer =
+        AudioBuffer::CreateUninitialized(kChannels, kFrames, kSampleRate);
+    for (int ch = 0; ch < kChannels; ++ch) {
+      float* buffer_data = audio_buffer->getChannelData(ch)->Data();
+      for (int i = 0; i < kFrames; ++i) {
+        buffer_data[i] = static_cast<float>((i + ch * kFrames) / 1000.0f);
+      }
+    }
+    return audio_buffer;
+  }
+
+  AudioFrameInit* CreateDefaultAudioFrameInit(AudioBuffer* buffer) {
+    auto* audio_frame_init = AudioFrameInit::Create();
+    audio_frame_init->setBuffer(buffer);
+    audio_frame_init->setTimestamp(kTimestampInMicroSeconds);
+    return audio_frame_init;
+  }
+};
+
+TEST_F(AudioFrameTest, ConstructFromMediaBuffer) {
+  const media::ChannelLayout channel_layout =
+      media::ChannelLayout::CHANNEL_LAYOUT_STEREO;
+  const int channels = ChannelLayoutToChannelCount(channel_layout);
+  constexpr base::TimeDelta timestamp =
+      base::TimeDelta::FromMicroseconds(kTimestampInMicroSeconds);
+  constexpr int kStart = 1;
+  constexpr int kIncrement = 1;
+  scoped_refptr<media::AudioBuffer> media_buffer =
+      media::MakeAudioBuffer<int16_t>(media::SampleFormat::kSampleFormatS16,
+                                      channel_layout, channels, kSampleRate,
+                                      kStart, kIncrement, kFrames, timestamp);
+
+  auto* frame = MakeGarbageCollected<AudioFrame>(media_buffer);
+
+  EXPECT_EQ(frame->timestamp(), kTimestampInMicroSeconds);
+
+  EXPECT_TRUE(frame->buffer());
+  EXPECT_EQ(frame->buffer()->numberOfChannels(),
+            static_cast<unsigned>(channels));
+  EXPECT_EQ(frame->buffer()->length(), static_cast<uint32_t>(kFrames));
+
+  // The buffer's internal int16_t value should have been converted to float32.
+  constexpr float kFloatIncrement =
+      static_cast<float>(kIncrement) / std::numeric_limits<int16_t>::max();
+  constexpr float kFloatStart =
+      static_cast<float>(kStart) / std::numeric_limits<int16_t>::max();
+
+  // Verify the data was properly converted.
+  for (int ch = 0; ch < channels; ++ch) {
+    float* internal_channel = frame->buffer()->getChannelData(ch)->Data();
+    float start_value = kFloatStart + ch * kFloatIncrement * kFrames;
+    for (int i = 0; i < kFrames; ++i) {
+      float expected_value = start_value + i * kFloatIncrement;
+      ASSERT_FLOAT_EQ(expected_value, internal_channel[i])
+          << "i=" << i << ", ch=" << ch;
+    }
+  }
+}
+
+TEST_F(AudioFrameTest, ConstructFromAudioFrameInit) {
+  auto* audio_buffer = CreateDefaultAudioBuffer();
+
+  auto* audio_frame_init = CreateDefaultAudioFrameInit(audio_buffer);
+
+  auto* frame = MakeGarbageCollected<AudioFrame>(audio_frame_init);
+
+  EXPECT_EQ(frame->timestamp(), kTimestampInMicroSeconds);
+  EXPECT_EQ(frame->buffer(), audio_buffer);
+}
+
+TEST_F(AudioFrameTest, VerifySerializationData) {
+  auto* audio_buffer = CreateDefaultAudioBuffer();
+
+  // Create a frame from the audio buffer.
+  auto* audio_frame_init = CreateDefaultAudioFrameInit(audio_buffer);
+  auto* frame = MakeGarbageCollected<AudioFrame>(audio_frame_init);
+
+  // Serialize the data from the frame.
+  std::unique_ptr<AudioFrameSerializationData> data =
+      frame->GetSerializationData();
+
+  // Make sure attributes match.
+  EXPECT_EQ(data->timestamp(),
+            base::TimeDelta::FromMicroseconds(kTimestampInMicroSeconds));
+  EXPECT_EQ(data->sample_rate(), kSampleRate);
+  EXPECT_EQ(data->data()->channels(), kChannels);
+  EXPECT_EQ(data->data()->frames(), kFrames);
+
+  // Make sure the data matches.
+  for (int ch = 0; ch < kChannels; ++ch) {
+    float* buffer_data = audio_buffer->getChannelData(ch)->Data();
+    float* serialized_data = data->data()->channel(ch);
+    for (int i = 0; i < kFrames; ++i) {
+      ASSERT_FLOAT_EQ(buffer_data[i], serialized_data[i])
+          << "i=" << i << ", ch=" << ch;
+    }
+  }
+}
+
+TEST_F(AudioFrameTest, ConstructFromSerializationData) {
+  // Create a default frame.
+  auto* audio_buffer = CreateDefaultAudioBuffer();
+  auto* audio_frame_init = CreateDefaultAudioFrameInit(audio_buffer);
+  auto* original_frame = MakeGarbageCollected<AudioFrame>(audio_frame_init);
+
+  // Get a copy of the serialization data, and create a new frame from it.
+  std::unique_ptr<AudioFrameSerializationData> data =
+      original_frame->GetSerializationData();
+
+  auto* new_frame = MakeGarbageCollected<AudioFrame>(std::move(data));
+
+  // Make sure attributes match.
+  EXPECT_EQ(original_frame->timestamp(), new_frame->timestamp());
+  EXPECT_EQ(original_frame->buffer()->sampleRate(),
+            new_frame->buffer()->sampleRate());
+  EXPECT_EQ(original_frame->buffer()->numberOfChannels(),
+            new_frame->buffer()->numberOfChannels());
+  EXPECT_EQ(original_frame->buffer()->length(), new_frame->buffer()->length());
+
+  // Make sure the data matches.
+  for (int ch = 0; ch < kChannels; ++ch) {
+    float* orig_data = original_frame->buffer()->getChannelData(ch)->Data();
+    float* new_data = new_frame->buffer()->getChannelData(ch)->Data();
+    for (int i = 0; i < kFrames; ++i) {
+      ASSERT_FLOAT_EQ(orig_data[i], new_data[i]) << "i=" << i << ", ch=" << ch;
+    }
+  }
+}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher.cc b/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher.cc
index 86e16750..afab4f9 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher.cc
+++ b/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher.cc
@@ -51,6 +51,8 @@
 
 CanvasResourceDispatcher::CanvasResourceDispatcher(
     CanvasResourceDispatcherClient* client,
+    scoped_refptr<base::SingleThreadTaskRunner>
+        agent_group_scheduler_compositor_task_runner,
     uint32_t client_id,
     uint32_t sink_id,
     int canvas_id,
@@ -61,7 +63,9 @@
       needs_begin_frame_(false),
       placeholder_canvas_id_(canvas_id),
       num_unreclaimed_frames_posted_(0),
-      client_(client) {
+      client_(client),
+      agent_group_scheduler_compositor_task_runner_(
+          std::move(agent_group_scheduler_compositor_task_runner)) {
   // Frameless canvas pass an invalid |frame_sink_id_|; don't create mojo
   // channel for this special case.
   if (!frame_sink_id_.is_valid())
@@ -144,7 +148,7 @@
   // until it is returned.
   canvas_resource->Transfer();
   PostCrossThreadTask(
-      *Thread::MainThread()->Scheduler()->CompositorTaskRunner(), FROM_HERE,
+      *agent_group_scheduler_compositor_task_runner_, FROM_HERE,
       CrossThreadBindOnce(UpdatePlaceholderImage, placeholder_canvas_id_,
                           std::move(canvas_resource), resource_id));
 }
@@ -423,7 +427,7 @@
                                 placeholder_canvas_id);
   } else {
     PostCrossThreadTask(
-        *Thread::MainThread()->Scheduler()->CompositorTaskRunner(), FROM_HERE,
+        *agent_group_scheduler_compositor_task_runner_, FROM_HERE,
         CrossThreadBindOnce(UpdatePlaceholderDispatcher, this->GetWeakPtr(),
                             WTF::Passed(std::move(dispatcher_task_runner)),
                             placeholder_canvas_id));
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher.h b/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher.h
index b8549ab..a828bca 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher.h
+++ b/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher.h
@@ -42,6 +42,8 @@
   };
 
   CanvasResourceDispatcher(CanvasResourceDispatcherClient*,
+                           scoped_refptr<base::SingleThreadTaskRunner>
+                               agent_group_scheduler_compositor_task_runner,
                            uint32_t client_id,
                            uint32_t sink_id,
                            int placeholder_canvas_id,
@@ -142,6 +144,9 @@
 
   CanvasResourceDispatcherClient* client_;
 
+  scoped_refptr<base::SingleThreadTaskRunner>
+      agent_group_scheduler_compositor_task_runner_;
+
   base::WeakPtrFactory<CanvasResourceDispatcher> weak_ptr_factory_{this};
 };
 
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher_test.cc b/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher_test.cc
index 97525af..870ec0bd 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher_test.cc
+++ b/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher_test.cc
@@ -44,6 +44,7 @@
  public:
   MockCanvasResourceDispatcher()
       : CanvasResourceDispatcher(nullptr /* client */,
+                                 base::ThreadTaskRunnerHandle::Get(),
                                  kClientId,
                                  kSinkId,
                                  0 /* placeholder_canvas_id* */,
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource_provider_test.cc b/third_party/blink/renderer/platform/graphics/canvas_resource_provider_test.cc
index d33fa4ae..8d0b2b9 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_resource_provider_test.cc
+++ b/third_party/blink/renderer/platform/graphics/canvas_resource_provider_test.cc
@@ -318,8 +318,8 @@
 
   MockCanvasResourceDispatcherClient client;
   CanvasResourceDispatcher resource_dispatcher(
-      &client, 1 /* client_id */, 1 /* sink_id */,
-      1 /* placeholder_canvas_id */, kSize);
+      &client, base::ThreadTaskRunnerHandle::Get(), 1 /* client_id */,
+      1 /* sink_id */, 1 /* placeholder_canvas_id */, kSize);
 
   auto provider = CanvasResourceProvider::CreateSharedBitmapProvider(
       kSize, kLow_SkFilterQuality, kColorParams,
diff --git a/third_party/blink/renderer/platform/graphics/graphics_context.cc b/third_party/blink/renderer/platform/graphics/graphics_context.cc
index 11c70b6..2994510 100644
--- a/third_party/blink/renderer/platform/graphics/graphics_context.cc
+++ b/third_party/blink/renderer/platform/graphics/graphics_context.cc
@@ -314,8 +314,7 @@
   PaintFlags flags;
   flags.setBlendMode(op);
   SkSamplingOptions sampling(
-      static_cast<SkFilterQuality>(ImageInterpolationQuality()),
-      SkSamplingOptions::kMedium_asMipmapLinear);
+      static_cast<SkFilterQuality>(ImageInterpolationQuality()));
   canvas_->save();
   canvas_->concat(SkMatrix::RectToRect(src, dest));
   canvas_->drawImage(PaintImageBuilder::WithDefault()
diff --git a/third_party/blink/renderer/platform/graphics/graphics_context.h b/third_party/blink/renderer/platform/graphics/graphics_context.h
index 94ab958..d7d00cb 100644
--- a/third_party/blink/renderer/platform/graphics/graphics_context.h
+++ b/third_party/blink/renderer/platform/graphics/graphics_context.h
@@ -159,8 +159,7 @@
 
   SkSamplingOptions ImageSamplingOptions() const {
     return SkSamplingOptions(
-        static_cast<SkFilterQuality>(ImageInterpolationQuality()),
-        SkSamplingOptions::kMedium_asMipmapLinear);
+        static_cast<SkFilterQuality>(ImageInterpolationQuality()));
   }
 
   // Specify the device scale factor which may change the way document markers
@@ -390,8 +389,7 @@
   SkSamplingOptions ComputeSamplingOptions(Image* image,
                                            const FloatRect& dest,
                                            const FloatRect& src) const {
-    return SkSamplingOptions(ComputeFilterQuality(image, dest, src),
-                             SkSamplingOptions::kMedium_asMipmapLinear);
+    return SkSamplingOptions(ComputeFilterQuality(image, dest, src));
   }
 
   // Sets target URL of a clickable area.
diff --git a/third_party/blink/web_tests/FlagExpectations/use-vulkan=swiftshader b/third_party/blink/web_tests/FlagExpectations/use-vulkan=swiftshader
index afbe54c..cf3a6e1e 100644
--- a/third_party/blink/web_tests/FlagExpectations/use-vulkan=swiftshader
+++ b/third_party/blink/web_tests/FlagExpectations/use-vulkan=swiftshader
@@ -15,18 +15,13 @@
 css3/background/background-repeat-round-padding.html [ Skip ]
 css3/blending/background-blend-mode-default-value.html [ Skip ]
 css3/blending/background-blend-mode-gradient-image.html [ Skip ]
-css3/blending/background-blend-mode-image-color.html [ Skip ]
 css3/blending/background-blend-mode-image-image.html [ Skip ]
-css3/blending/background-blend-mode-image-svg.html [ Skip ]
 css3/blending/background-blend-mode-multiple-background-layers.html [ Skip ]
 css3/blending/background-blend-mode-single-layer-no-blending.html [ Skip ]
 css3/blending/background-blend-mode-tiled-gradient.html [ Skip ]
-css3/blending/effect-background-blend-mode.html [ Skip ]
-css3/blending/effect-background-blend-mode-stacking.html [ Skip ]
 css3/blending/effect-background-blend-mode-tiled.html [ Skip ]
 css3/blending/mix-blend-mode-isolated-group-1.html [ Skip ]
 css3/blending/mix-blend-mode-isolated-group-2.html [ Skip ]
-css3/blending/mix-blend-mode-isolated-group-3.html [ Skip ]
 css3/masking/mask-repeat-round-auto1.html [ Skip ]
 css3/masking/mask-repeat-round-border.html [ Skip ]
 css3/masking/mask-repeat-round-content.html [ Skip ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index 22a50a1c..5805b61d 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -4448,7 +4448,7 @@
 crbug.com/908347 media/autoplay/webaudio-audio-context-resume.html [ Failure Pass ]
 
 # Sheriff 2018-11-29
-crbug.com/910139 http/tests/custom-elements/form-submission-file.html [ Crash Pass ]
+crbug.com/910139 custom-elements/form-submission-file.html [ Crash Pass ]
 
 # TODO: re-enable the below flakiness suppression when removing this line
 crbug.com/1131901 transforms/shadows.html [ Pass Failure ]
diff --git a/third_party/blink/web_tests/accessibility/aria-hidden-hides-all-elements.html b/third_party/blink/web_tests/accessibility/aria-hidden-hides-all-elements.html
index 6f17159..6eb0da5c 100644
--- a/third_party/blink/web_tests/accessibility/aria-hidden-hides-all-elements.html
+++ b/third_party/blink/web_tests/accessibility/aria-hidden-hides-all-elements.html
@@ -25,33 +25,37 @@
 </div>
 
 <script>
-function testChildren(parent, expected_unignored_child_indices) {
+function expectUnignoredChildren(parent, expected_unignored_child_indices) {
     for (let i = 0; i < parent.childrenCount; i++) {
-      if (expected_unignored_child_indices.includes(i))
-        assert_false(parent.childAtIndex(i).isIgnored);
-      else
-        assert_true(parent.childAtIndex(i).isIgnored);
+      let child = parent.childAtIndex(i);
+      if (expected_unignored_child_indices.includes(i)) {
+        assert_false(child.isIgnored,
+                    'Child#' + i + ' (' + child.role + ') ignored state: ');
+      }
+      else {
+        assert_true(child.isIgnored,
+                    'Child#' + i + ' (' + child.role + ') ignored state: ');
+      }
     }
 }
 
 test(function(t) {
     var content = accessibilityController.accessibleElementById("main");
-    assert_equals(content.childrenCount, 17);
+    assert_equals(content.childrenCount, 9);
     assert_true(content.isIgnored);
-    testChildren(content, [0, 2, 4, 6, 11]);
-    document.getElementById("ul").tabIndex = -1;
+    expectUnignoredChildren(content, [0, 1, 2, 3, 6]);
 
-    assert_equals(content.childrenCount, 17,
-                      "Making list focusable should not impact if it's hidden");
+    document.getElementById("ul").tabIndex = -1;
+    assert_equals(content.childrenCount, 9,
+                      "Making list focusable should make it unignored");
     assert_true(content.isIgnored);
-    testChildren(content, [0, 2, 4, 6, 10, 11]);
+    expectUnignoredChildren(content, [0, 1, 2, 3, 5, 6]);
 
     document.getElementById("ul").removeAttribute("tabindex");
-
-    assert_equals(content.childrenCount, 17,
-                          "Making list unfocusable should make it hidden again");
+    assert_equals(content.childrenCount, 9,
+                          "Making list unfocusable should make it ignored again");
     assert_true(content.isIgnored);
-    testChildren(content, [0, 2, 4, 6, 11]);
+    expectUnignoredChildren(content, [0, 1, 2, 3, 6]);
 });
 </script>
 
diff --git a/third_party/blink/web_tests/http/tests/accessibility/file-upload-button-name.html b/third_party/blink/web_tests/accessibility/file-upload-button-name.html
similarity index 77%
rename from third_party/blink/web_tests/http/tests/accessibility/file-upload-button-name.html
rename to third_party/blink/web_tests/accessibility/file-upload-button-name.html
index 3a1971b..984793eba 100644
--- a/third_party/blink/web_tests/http/tests/accessibility/file-upload-button-name.html
+++ b/third_party/blink/web_tests/accessibility/file-upload-button-name.html
@@ -1,16 +1,17 @@
 <!DOCTYPE HTML>
 <html>
 <head>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
+<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="file:///gen/third_party/blink/public/mojom/choosers/file_chooser.mojom.js"></script>
+<script src="../wpt_internal/forms/resources/mock-file-chooser.js"></script>
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
 </head>
 <body>
 
 <input id="filetype" type="file">
 
-<script type="module">
-import  '/wpt_internal/forms/resources/mock-file-chooser.js';
-
+<script>
 async_test((t) => {
     testRunner.waitUntilDone();
 
diff --git a/third_party/blink/web_tests/accessibility/file-upload-button-with-axpress-expected.txt b/third_party/blink/web_tests/accessibility/file-upload-button-with-axpress-expected.txt
new file mode 100644
index 0000000..cca2cbc
--- /dev/null
+++ b/third_party/blink/web_tests/accessibility/file-upload-button-with-axpress-expected.txt
@@ -0,0 +1,10 @@
+CONSOLE MESSAGE: line 5: FileChooser: opened; mode=kOpen
+This tests that when AXPress is used DOMActivate will be handled by the input file type.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+DOMActivate was called
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/third_party/blink/web_tests/accessibility/file-upload-button-with-axpress.html b/third_party/blink/web_tests/accessibility/file-upload-button-with-axpress.html
new file mode 100644
index 0000000..736c35b2
--- /dev/null
+++ b/third_party/blink/web_tests/accessibility/file-upload-button-with-axpress.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML>
+<html>
+<body>
+<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="file:///gen/third_party/blink/public/mojom/choosers/file_chooser.mojom.js"></script>
+<script src="../wpt_internal/forms/resources/mock-file-chooser.js"></script>
+<script src="../resources/js-test.js"></script>
+
+<input id="filetype" type="file">
+
+<div id="description"></div>
+<div id="console"></div>
+
+<script>
+
+description("This tests that when AXPress is used DOMActivate will be handled by the input file type.")
+
+if (window.testRunner && window.accessibilityController) {
+    testRunner.waitUntilDone();
+    
+    var inputFile = document.getElementById("filetype");
+
+    inputFile.addEventListener("DOMActivate", function() { 
+        debug("DOMActivate was called"); 
+    });
+    mockFileChooserFactory.addEventListener('open', e => testRunner.notifyDone());
+
+    accessibilityController.accessibleElementById("filetype").press();
+}
+
+</script>
+
+</body>
+</html>
diff --git a/third_party/blink/web_tests/accessibility/multiple-text-nodes.html b/third_party/blink/web_tests/accessibility/multiple-text-nodes.html
index 7b0e63cc..9780ee9 100644
--- a/third_party/blink/web_tests/accessibility/multiple-text-nodes.html
+++ b/third_party/blink/web_tests/accessibility/multiple-text-nodes.html
@@ -6,18 +6,30 @@
 </head>
 <body>
 
-  <button id="button">before<span id="span"></span> <span id="span2"></span>
+  <!-- No space in final name; it is redundant at the end of the button -->
+  <button id="buttonA">before<span id="spanA1"></span> <span id="spanA2"></span>
+    </button>
+
+  <!-- Space in final name, to separate "before" and "after" -->
+  <button id="buttonB">before<span id="spanB1"></span> <span id="spanB2"></span>after
     </button>
 
 <script>
 test((t) => {
   // Remove the spans, so the button will have multiple contiguous text children
-  button.removeChild(span);
-  button.removeChild(span2);
-  var axButton = accessibilityController.accessibleElementById('button');
-  assert_equals(axButton.name, "before ");
+  buttonA.removeChild(spanA1);
+  buttonA.removeChild(spanA2);
+  var axButton = accessibilityController.accessibleElementById('buttonA');
+  assert_equals(axButton.name, "before");
 }, "Multiple text node children do not result in duplicated text");
 
+test((t) => {
+  // Remove the spans, so the button will have multiple contiguous text children
+  buttonB.removeChild(spanB1);
+  buttonB.removeChild(spanB2);
+  var axButton = accessibilityController.accessibleElementById('buttonB');
+  assert_equals(axButton.name, "before after");
+}, "Removing text nodes does not result in duplicated text but keeps necessary space");
 
 </script>
 </body>
diff --git a/third_party/blink/web_tests/css3/blending/background-blend-mode-crossfade-image-gradient-expected.png b/third_party/blink/web_tests/css3/blending/background-blend-mode-crossfade-image-gradient-expected.png
index 4729210..6a8edd1a 100644
--- a/third_party/blink/web_tests/css3/blending/background-blend-mode-crossfade-image-gradient-expected.png
+++ b/third_party/blink/web_tests/css3/blending/background-blend-mode-crossfade-image-gradient-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/background-blend-mode-default-value-expected.png b/third_party/blink/web_tests/css3/blending/background-blend-mode-default-value-expected.png
index 556c28f..a90d2ad 100644
--- a/third_party/blink/web_tests/css3/blending/background-blend-mode-default-value-expected.png
+++ b/third_party/blink/web_tests/css3/blending/background-blend-mode-default-value-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/background-blend-mode-different-image-formats-expected.png b/third_party/blink/web_tests/css3/blending/background-blend-mode-different-image-formats-expected.png
index a73fab0..4ec9d00 100644
--- a/third_party/blink/web_tests/css3/blending/background-blend-mode-different-image-formats-expected.png
+++ b/third_party/blink/web_tests/css3/blending/background-blend-mode-different-image-formats-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/background-blend-mode-gradient-image-expected.png b/third_party/blink/web_tests/css3/blending/background-blend-mode-gradient-image-expected.png
index cb3b727..7d7b7573 100644
--- a/third_party/blink/web_tests/css3/blending/background-blend-mode-gradient-image-expected.png
+++ b/third_party/blink/web_tests/css3/blending/background-blend-mode-gradient-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/background-blend-mode-image-color-expected.png b/third_party/blink/web_tests/css3/blending/background-blend-mode-image-color-expected.png
index 24297d4..1289d9b 100644
--- a/third_party/blink/web_tests/css3/blending/background-blend-mode-image-color-expected.png
+++ b/third_party/blink/web_tests/css3/blending/background-blend-mode-image-color-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/background-blend-mode-image-image-expected.png b/third_party/blink/web_tests/css3/blending/background-blend-mode-image-image-expected.png
index b9dd801..30f8e57 100644
--- a/third_party/blink/web_tests/css3/blending/background-blend-mode-image-image-expected.png
+++ b/third_party/blink/web_tests/css3/blending/background-blend-mode-image-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/background-blend-mode-image-svg-expected.png b/third_party/blink/web_tests/css3/blending/background-blend-mode-image-svg-expected.png
index 1a50c556..9a7e8c1 100644
--- a/third_party/blink/web_tests/css3/blending/background-blend-mode-image-svg-expected.png
+++ b/third_party/blink/web_tests/css3/blending/background-blend-mode-image-svg-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/background-blend-mode-multiple-background-layers-expected.png b/third_party/blink/web_tests/css3/blending/background-blend-mode-multiple-background-layers-expected.png
index 677ac1a4..d084364c 100644
--- a/third_party/blink/web_tests/css3/blending/background-blend-mode-multiple-background-layers-expected.png
+++ b/third_party/blink/web_tests/css3/blending/background-blend-mode-multiple-background-layers-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/background-blend-mode-single-layer-no-blending-expected.png b/third_party/blink/web_tests/css3/blending/background-blend-mode-single-layer-no-blending-expected.png
index 0e01c17..8f8923d3 100644
--- a/third_party/blink/web_tests/css3/blending/background-blend-mode-single-layer-no-blending-expected.png
+++ b/third_party/blink/web_tests/css3/blending/background-blend-mode-single-layer-no-blending-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/background-blend-mode-tiled-gradient-expected.png b/third_party/blink/web_tests/css3/blending/background-blend-mode-tiled-gradient-expected.png
index 7e1f17a..1f97125f 100644
--- a/third_party/blink/web_tests/css3/blending/background-blend-mode-tiled-gradient-expected.png
+++ b/third_party/blink/web_tests/css3/blending/background-blend-mode-tiled-gradient-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/effect-background-blend-mode-expected.png b/third_party/blink/web_tests/css3/blending/effect-background-blend-mode-expected.png
index c45c187..7f470c5 100644
--- a/third_party/blink/web_tests/css3/blending/effect-background-blend-mode-expected.png
+++ b/third_party/blink/web_tests/css3/blending/effect-background-blend-mode-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/effect-background-blend-mode-stacking-expected.png b/third_party/blink/web_tests/css3/blending/effect-background-blend-mode-stacking-expected.png
index 07e72ce..ba479cb 100644
--- a/third_party/blink/web_tests/css3/blending/effect-background-blend-mode-stacking-expected.png
+++ b/third_party/blink/web_tests/css3/blending/effect-background-blend-mode-stacking-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/effect-background-blend-mode-tiled-expected.png b/third_party/blink/web_tests/css3/blending/effect-background-blend-mode-tiled-expected.png
index 6ad9d3e7..977864d 100644
--- a/third_party/blink/web_tests/css3/blending/effect-background-blend-mode-tiled-expected.png
+++ b/third_party/blink/web_tests/css3/blending/effect-background-blend-mode-tiled-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolated-group-2-expected.png b/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolated-group-2-expected.png
index 8a053a0..cfb4d9f 100644
--- a/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolated-group-2-expected.png
+++ b/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolated-group-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolated-group-3-expected.png b/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolated-group-3-expected.png
index 5b44808..ed5410c 100644
--- a/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolated-group-3-expected.png
+++ b/third_party/blink/web_tests/css3/blending/mix-blend-mode-isolated-group-3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/http/tests/custom-elements/form-submission-file.html b/third_party/blink/web_tests/custom-elements/form-submission-file.html
similarity index 84%
rename from third_party/blink/web_tests/http/tests/custom-elements/form-submission-file.html
rename to third_party/blink/web_tests/custom-elements/form-submission-file.html
index cd52523b..ae59b94 100644
--- a/third_party/blink/web_tests/http/tests/custom-elements/form-submission-file.html
+++ b/third_party/blink/web_tests/custom-elements/form-submission-file.html
@@ -1,12 +1,13 @@
 <!DOCTYPE html>
-<script src="/forms-test-resources/common.js"></script>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
+<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="file:///gen/third_party/blink/public/mojom/choosers/file_chooser.mojom.js"></script>
+<script src="../wpt_internal/forms/resources/mock-file-chooser.js"></script>
+<script src="../fast/forms/resources/common.js"></script>
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
 <div id="container"></div>
 <input type=file multiple>
-<script type="module">
-import {mockFileChooserFactory} from '/wpt_internal/forms/resources/mock-file-chooser.js';
-
+<script>
 class MyControl extends HTMLElement {
   static get formAssociated() { return true; }
 
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
index 380d3ad..cb06263 100644
--- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
+++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
@@ -1529,13 +1529,6 @@
    },
    "clipboard-apis": {
     "events": {
-     "copy-event-manual.html": [
-      "9f9f1950e7cad11da8cc9e8984f130e182d64d64",
-      [
-       null,
-       {}
-      ]
-     ],
      "cut-event-manual.html": [
       "72c11ec3b98a7839ba6ba22b0340664dcc9782c2",
       [
@@ -106471,6 +106464,19 @@
        {}
       ]
      ],
+     "row-group-order.html": [
+      "06c0f3bd9651a188c06cfd8a7bf14f07f0ce2c20",
+      [
+       null,
+       [
+        [
+         "/css/css-tables/row-group-order-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
      "row-margin-border-padding.html": [
       "c6606d941e86f36f12216f28520f6dcb66ef7926",
       [
@@ -175290,7 +175296,7 @@
      []
     ],
     "clipboard-item.https-expected.txt": [
-     "ad40535728dfb53f4cf848ff76abb21ea293977a",
+     "1b3edb5c2a64b1ef4a865aed18259d0a16491b4a",
      []
     ],
     "feature-policy": {
@@ -203160,6 +203166,10 @@
       "aa3e68e6ab2830a817f8612e240888c2cc6e7a6a",
       []
      ],
+     "row-group-order-ref.html": [
+      "63087671c5fbd5921724df8675bbda13cf0c758c",
+      []
+     ],
      "row-margin-border-padding-ref.html": [
       "68cbcfc9c1ec6aa1fb940f5b26735e3b2fa3587e",
       []
@@ -212863,7 +212873,7 @@
       []
      ],
      "idlharness-expected.txt": [
-      "185f987311fa7012cb2845c1f662923286e9f66f",
+      "ecd26b905f4377d88478fac04e1920ffeacaae6f",
       []
      ],
      "insertRule-from-script-ref.html": [
@@ -225774,7 +225784,7 @@
          []
         ],
         "transformations.yaml": [
-         "eca6b16b089b322792c0c0cab5ff48febe9ffcd8",
+         "ffb1e85ec041d5516d133a04edfa597710ff57ef",
          []
         ],
         "video.yaml": [
@@ -226803,7 +226813,7 @@
       []
      ],
      "idlharness.https_include=HTML._-expected.txt": [
-      "bab3797c65d51f33aa9fdfffd34ef383a70d447a",
+      "2116f87b1ef53f45f30d7e2d4098775d491b5ce4",
       []
      ],
      "idlharness.worker-expected.txt": [
@@ -231043,7 +231053,7 @@
         []
        ],
        "legend-display-expected.txt": [
-        "d13c68baee91d0acb8c72d68bb94b2cd3dae8e0e",
+        "69bb94fef61c6ce28d49dbe285f1d8b263204a0d",
         []
        ],
        "legend-display-none-rendering-ref.html": [
@@ -237336,7 +237346,7 @@
      []
     ],
     "html.idl": [
-     "bb44c1327471ec25b7fefac25758335ea0ae7c51",
+     "7f2eba2c7aee694e788e9c3f52cdb4f23315730d",
      []
     ],
     "idle-detection.tentative.idl": [
@@ -244504,7 +244514,7 @@
      ]
     },
     "idlharness.js": [
-     "994a0d82ef444bf4566dc27a81487e70d9e284ea",
+     "5a97b273f2bed196d6ddd85c5596decff1bf87ae",
      []
     ],
     "idlharness.js.headers": [
@@ -275419,7 +275429,7 @@
      ]
     ],
     "async-navigator-clipboard-basics.https.html": [
-     "8fbcd11e7e963240f41e2e1ce6c9a0ae26979d3a",
+     "61808a52ceb9b6272a6ce495d328a8feaaf9411a",
      [
       null,
       {}
@@ -275496,7 +275506,7 @@
      ]
     ],
     "clipboard-item.https.html": [
-     "afec778eb99e8605a4c5a1001a2576e1e246b27c",
+     "50af54ccb670979ab86089f10edbc732e8eb1eed",
      [
       null,
       {}
@@ -275547,6 +275557,17 @@
       ]
      ]
     },
+    "events": {
+     "copy-event.html": [
+      "c8c0593a988066decebb1420c7994ee224d5587c",
+      [
+       null,
+       {
+        "testdriver": true
+       }
+      ]
+     ]
+    },
     "feature-policy": {
      "clipboard-read": {
       "clipboard-read-disabled-by-feature-policy.tentative.https.sub.html": [
@@ -290621,6 +290642,20 @@
         {}
        ]
       ],
+      "grid-auto-repeat-min-size-003.html": [
+       "ffaaab33aef998f35a543392b2f3fa99e473b9ed",
+       [
+        null,
+        {}
+       ]
+      ],
+      "grid-auto-repeat-min-size-004.html": [
+       "8d2eda79023adab581e70dd4ef3bdd80ccca9e12",
+       [
+        null,
+        {}
+       ]
+      ],
       "grid-change-auto-repeat-tracks.html": [
        "c2d17ec615f0f092e54c0c4792ca4a03bc1cfe8a",
        [
@@ -307705,7 +307740,7 @@
       ]
      ],
      "DOMMatrix2DInit-validate-fixup.html": [
-      "480d67a481d30965a734cdf76c60646a464823b8",
+      "a7257aa2882cf1d88fa4a15314efe071b30a8f4e",
       [
        null,
        {}
@@ -347771,6 +347806,13 @@
          {}
         ]
        ],
+       "2d.transformation.setTransform.3d.html": [
+        "bcafbd15990880b00a5e93f07dba4b07108edbf6",
+        [
+         null,
+         {}
+        ]
+       ],
        "2d.transformation.setTransform.multiple.html": [
         "7e90537113eea070fa5213554e101870aa6f5541",
         [
@@ -363170,7 +363212,7 @@
         ]
        ],
        "legend-display.html": [
-        "914547fc6cdde3e464b28eb7cc9737d17305f9af",
+        "b6c57a67baf06b4fc9043b8140a97e593f80a83f",
         [
          null,
          {}
@@ -423510,7 +423552,7 @@
      ]
     ],
     "urlsearchparams-foreach.any.js": [
-     "7969a0cb11a2712bbbfc2a42c4856f5576531884",
+     "ff19643ac220d123be45f01af45fedde8d2d05c1",
      [
       "url/urlsearchparams-foreach.any.html",
       {}
diff --git a/third_party/blink/web_tests/external/wpt/clipboard-apis/async-navigator-clipboard-basics.https.html b/third_party/blink/web_tests/external/wpt/clipboard-apis/async-navigator-clipboard-basics.https.html
index 8fbcd11e..61808a5 100644
--- a/third_party/blink/web_tests/external/wpt/clipboard-apis/async-navigator-clipboard-basics.https.html
+++ b/third_party/blink/web_tests/external/wpt/clipboard-apis/async-navigator-clipboard-basics.https.html
@@ -47,6 +47,11 @@
 }, 'navigator.clipboard.writeText() fails (expect DOMString)');
 
 promise_test(async () => {
+  const item = new ClipboardItem({'text/plain': 'test'});
+  await navigator.clipboard.write([item]);
+}, 'navigator.clipboard.write({string : DOMString}) succeeds');
+
+promise_test(async () => {
   const fetched = await fetch('/clipboard-apis/resources/greenbox.png');
   const image = await fetched.blob();
   const item = new ClipboardItem({'image/png': image});
@@ -64,6 +69,11 @@
   await navigator.clipboard.write([item]);
 }, 'navigator.clipboard.write([text + png] succeeds');
 
+promise_test(async t => {
+  const item = new ClipboardItem({'image/png': 'not an image'});
+  await promise_rejects_js(t, TypeError, navigator.clipboard.write([item]));
+}, 'navigator.clipboard.write(image/png DOMString) fails');
+
 promise_test(async () => {
   const result = await navigator.clipboard.read();
   assert_true(result instanceof Object);
diff --git a/third_party/blink/web_tests/external/wpt/clipboard-apis/clipboard-item.https-expected.txt b/third_party/blink/web_tests/external/wpt/clipboard-apis/clipboard-item.https-expected.txt
index ad40535..1b3edb5 100644
--- a/third_party/blink/web_tests/external/wpt/clipboard-apis/clipboard-item.https-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/clipboard-apis/clipboard-item.https-expected.txt
@@ -10,5 +10,7 @@
 PASS getType(DOMString valid type) succeeds with correct output
 PASS getType(DOMString invalid type) succeeds with correct output
 PASS getType(DOMString type) rejects correctly when querying for missing type
+FAIL getType(DOMString valid type) converts DOMString to Blob promise_test: Unhandled rejection with value: object "TypeError: Failed to construct 'ClipboardItem': Failed to convert value to 'Blob'."
+FAIL getType(DOMString invalid type) converts DOMString to Blob promise_test: Unhandled rejection with value: object "TypeError: Failed to construct 'ClipboardItem': Failed to convert value to 'Blob'."
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/clipboard-apis/clipboard-item.https.html b/third_party/blink/web_tests/external/wpt/clipboard-apis/clipboard-item.https.html
index afec778..50af54c 100644
--- a/third_party/blink/web_tests/external/wpt/clipboard-apis/clipboard-item.https.html
+++ b/third_party/blink/web_tests/external/wpt/clipboard-apis/clipboard-item.https.html
@@ -89,4 +89,24 @@
   promise_rejects_dom(t, "NotFoundError", item.getType('type not in item'));
   promise_rejects_dom(t, "NotFoundError", item.getType('text/plain:subtype'));
 }, "getType(DOMString type) rejects correctly when querying for missing type");
+
+promise_test(async () => {
+  const item =
+      new ClipboardItem({'text/plain': 'abc', 'not a/real type': 'xxx'});
+  const blob = await item.getType('text/plain');
+  assert_equals(blob.type, 'text/plain');
+
+  const text = await (new Response(blob)).text();
+  assert_equals(text, 'abc');
+}, "getType(DOMString valid type) converts DOMString to Blob");
+
+promise_test(async () => {
+  const item =
+      new ClipboardItem({'text/plain': 'abc', 'not a/real type': 'xxx'});
+  const blob = await item.getType('not a/real type');
+  assert_equals(blob.type, 'not a/real type');
+
+  const text = await (new Response(blob)).text();
+  assert_equals(text, 'xxx');
+}, "getType(DOMString invalid type) converts DOMString to Blob");
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/clipboard-apis/events/copy-event-manual.html b/third_party/blink/web_tests/external/wpt/clipboard-apis/events/copy-event-manual.html
deleted file mode 100644
index 9f9f1950..0000000
--- a/third_party/blink/web_tests/external/wpt/clipboard-apis/events/copy-event-manual.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html>
-<title>The copy event</title>
-<link rel="help" href="https://w3c.github.io/clipboard-apis/#clipboard-event-copy">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<div id=log></div>
-<p>Select and copy any part of this text to continue.
-<script>
-setup({explicit_timeout: true});
-async_test(t => {
-  document.oncopy = t.step_func_done(event => {
-    // Nothing can be asserted about the event target until
-    // https://github.com/w3c/clipboard-apis/issues/70 is resolved.
-    // assert_equals(event.target, document.body, 'event.target');
-    assert_true(event.isTrusted, 'event.isTrusted');
-    assert_true(event.composed, 'event.composed');
-  });
-});
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/clipboard-apis/events/copy-event.html b/third_party/blink/web_tests/external/wpt/clipboard-apis/events/copy-event.html
new file mode 100644
index 0000000..c8c0593
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/clipboard-apis/events/copy-event.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<title>The copy event</title>
+<link rel="help" href="https://w3c.github.io/clipboard-apis/#clipboard-event-copy">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<div id=log></div>
+<button id="copy">Trigger copy</button>
+<input id="copyTarget" value="this text should be copied">
+<script>
+async_test(t => {
+  let button = document.getElementById("copy");
+
+  button.addEventListener("click", function(e) {
+    let input = document.getElementById("copyTarget");
+    input.focus();
+    input.select();
+    document.execCommand("copy");
+  });
+
+  document.oncopy = t.step_func_done(event => {
+    // Nothing can be asserted about the event target until
+    // https://github.com/w3c/clipboard-apis/issues/70 is resolved.
+    // assert_equals(event.target, document.body, 'event.target');
+    assert_true(event.isTrusted, 'event.isTrusted');
+    assert_true(event.composed, 'event.composed');
+  });
+
+  test_driver.click(button);
+});
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-tables/row-group-order-ref.html b/third_party/blink/web_tests/external/wpt/css/css-tables/row-group-order-ref.html
new file mode 100644
index 0000000..6308767
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-tables/row-group-order-ref.html
@@ -0,0 +1,60 @@
+<!doctype html>
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+  table {
+    font: 8px Ahem;
+    border-collapse: collapse;
+  }
+  thead, tbody, tfoot {
+    border: 10px solid;
+  }
+  .first {
+    border-color: green;
+  }
+  .second {
+    border-color: blue;
+  }
+  .third {
+    border-color: yellow;
+  }
+  tbody {
+    border-color: orange;
+  }
+  td {
+    width: 50px;
+    height: 50px;
+  }
+</style>
+
+<table>
+  <tbody class="first">
+    <tr><td>head 1</td></tr>
+  </tbody>
+  <tbody>
+    <tr><td>body 1</td></tr>
+  </tbody>
+  <tbody class="second">
+    <tr><td>head 2</td></tr>
+  </tbody>
+  <tbody>
+    <tr><td>body 2</td></tr>
+  </tbody>
+  <tbody class="third">
+    <tr><td>head 3</td></tr>
+  </tbody>
+  <tbody>
+    <tr><td>body 3</td></tr>
+  </tbody>
+  <tbody class="second">
+    <tr><td>foot 2</td></tr>
+  </tbody>
+  <tbody>
+    <tr><td>body 4</td></tr>
+  </tbody>
+  <tbody class="third">
+    <tr><td>foot 3</td></tr>
+  </tbody>
+  <tbody class="first">
+    <tr><td>foot 1</td></tr>
+  </tbody>
+</table>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-tables/row-group-order.html b/third_party/blink/web_tests/external/wpt/css/css-tables/row-group-order.html
new file mode 100644
index 0000000..06c0f3b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-tables/row-group-order.html
@@ -0,0 +1,64 @@
+<!doctype html>
+<title>CSS Test: Table section ordering</title>
+<link rel="author" href="mailto:atotic@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/CSS22/tables.html#table-display">
+<link rel="match" href="row-group-order-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+  table {
+    font: 8px Ahem;
+    border-collapse: collapse;
+  }
+  thead, tbody, tfoot {
+    border: 10px solid;
+  }
+  .first {
+    border-color: green;
+  }
+  .second {
+    border-color: blue;
+  }
+  .third {
+    border-color: yellow;
+  }
+  tbody {
+    border-color: orange;
+  }
+  td {
+    width: 50px;
+    height: 50px;
+  }
+</style>
+
+<table>
+  <tbody>
+    <tr><td>body 1</td></tr>
+  </tbody>
+  <thead class="first">
+    <tr><td>head 1</td></tr>
+  </thead>
+  <thead class="second">
+    <tr><td>head 2</td></tr>
+  </thead>
+  <tbody>
+    <tr><td>body 2</td></tr>
+  </tbody>
+  <thead class="third">
+    <tr><td>head 3</td></tr>
+  </thead>
+  <tfoot class="first">
+    <tr><td>foot 1</td></tr>
+  </tfoot>
+  <tbody>
+    <tr><td>body 3</td></tr>
+  </tbody>
+  <tfoot class="second">
+    <tr><td>foot 2</td></tr>
+  </tfoot>
+  <tbody>
+    <tr><td>body 4</td></tr>
+  </tbody>
+  <tfoot class="third">
+    <tr><td>foot 3</td></tr>
+  </tfoot>
+</table>
diff --git a/third_party/blink/web_tests/external/wpt/css/cssom/idlharness-expected.txt b/third_party/blink/web_tests/external/wpt/css/cssom/idlharness-expected.txt
index 185f987..ecd26b9 100644
--- a/third_party/blink/web_tests/external/wpt/css/cssom/idlharness-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/css/cssom/idlharness-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 435 tests; 380 PASS, 55 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 437 tests; 382 PASS, 55 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS idl_test setup
 PASS idl_test validation
 PASS Partial interface CSSStyleSheet: original interface defined
@@ -419,6 +419,8 @@
 PASS CSS namespace: [[Extensible]] is true
 PASS CSS namespace: [[Prototype]] is Object.prototype
 PASS CSS namespace: typeof is "object"
+PASS CSS namespace: has no length property
+PASS CSS namespace: has no name property
 PASS CSS namespace: operation escape(CSSOMString)
 PASS SVGElement interface: attribute style
 PASS SVGElement interface: svg_element must inherit property "style" with the proper type
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt
index bab3797..2116f87 100644
--- a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 3738 tests; 3709 PASS, 29 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 3732 tests; 3709 PASS, 23 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS idl_test setup
 PASS idl_test validation
 PASS Partial interface Document: original interface defined
@@ -3619,9 +3619,6 @@
 PASS HTMLMarqueeElement interface: attribute trueSpeed
 PASS HTMLMarqueeElement interface: attribute vspace
 PASS HTMLMarqueeElement interface: attribute width
-FAIL HTMLMarqueeElement interface: attribute onbounce assert_true: The prototype object must have a property "onbounce" expected true got false
-FAIL HTMLMarqueeElement interface: attribute onfinish assert_true: The prototype object must have a property "onfinish" expected true got false
-FAIL HTMLMarqueeElement interface: attribute onstart assert_true: The prototype object must have a property "onstart" expected true got false
 PASS HTMLMarqueeElement interface: operation start()
 PASS HTMLMarqueeElement interface: operation stop()
 PASS HTMLMarqueeElement must be primary interface of document.createElement("marquee")
@@ -3637,9 +3634,6 @@
 PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "trueSpeed" with the proper type
 PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "vspace" with the proper type
 PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "width" with the proper type
-FAIL HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onbounce" with the proper type assert_inherits: property "onbounce" not found in prototype chain
-FAIL HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onfinish" with the proper type assert_inherits: property "onfinish" not found in prototype chain
-FAIL HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onstart" with the proper type assert_inherits: property "onstart" not found in prototype chain
 PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "start()" with the proper type
 PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "stop()" with the proper type
 PASS HTMLFrameSetElement interface: existence and properties of interface object
diff --git a/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-expected.txt b/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-expected.txt
index d13c68ba..69bb94f 100644
--- a/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-expected.txt
@@ -1,4 +1,5 @@
 This is a testharness.js-based test.
+Found 108 tests; 28 PASS, 80 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS rendered legend with display: block
 PASS rendered legend with display: table
 FAIL rendered legend with display: table-row-group assert_equals: display: table-row-group is not supported expected "table-row-group" but got "block"
@@ -10,12 +11,13 @@
 FAIL rendered legend with display: table-column assert_equals: display: table-column is not supported expected "table-column" but got "block"
 FAIL rendered legend with display: table-caption assert_equals: display: table-caption is not supported expected "table-caption" but got "block"
 PASS rendered legend with display: list-item
-FAIL rendered legend with display: flow assert_equals: display: flow is not supported expected "flow" but got "block"
+PASS rendered legend with display: flow
 PASS rendered legend with display: flow-root
 FAIL rendered legend with display: run-in assert_equals: display: run-in is not supported expected "run-in" but got "block"
 FAIL rendered legend with display: inline assert_equals: display: inline is not supported expected "inline" but got "block"
 FAIL rendered legend with display: inline-block assert_equals: display: inline-block is not supported expected "inline-block" but got "block"
 FAIL rendered legend with display: inline-table assert_equals: display: inline-table is not supported expected "inline-table" but got "table"
+FAIL rendered legend with display: block ruby assert_equals: display: block ruby is not supported expected "block ruby" but got "block"
 FAIL rendered legend with display: ruby assert_equals: display: ruby is not supported expected "ruby" but got "block"
 FAIL rendered legend with display: ruby-base assert_equals: display: ruby-base is not supported expected "ruby-base" but got "block"
 FAIL rendered legend with display: ruby-text assert_equals: display: ruby-text is not supported expected "ruby-text" but got "block"
@@ -25,5 +27,86 @@
 FAIL rendered legend with display: inline-grid assert_equals: display: inline-grid is not supported expected "inline-grid" but got "grid"
 PASS rendered legend with display: flex
 FAIL rendered legend with display: inline-flex assert_equals: display: inline-flex is not supported expected "inline-flex" but got "flex"
+PASS rendered legend with display: block; overflow:hidden
+PASS rendered legend with display: table; overflow:hidden
+FAIL rendered legend with display: table-row-group; overflow:hidden assert_equals: display: table-row-group is not supported expected "table-row-group" but got "block"
+FAIL rendered legend with display: table-header-group; overflow:hidden assert_equals: display: table-header-group is not supported expected "table-header-group" but got "block"
+FAIL rendered legend with display: table-footer-group; overflow:hidden assert_equals: display: table-footer-group is not supported expected "table-footer-group" but got "block"
+FAIL rendered legend with display: table-row; overflow:hidden assert_equals: display: table-row is not supported expected "table-row" but got "block"
+FAIL rendered legend with display: table-cell; overflow:hidden assert_equals: display: table-cell is not supported expected "table-cell" but got "block"
+FAIL rendered legend with display: table-column-group; overflow:hidden assert_equals: display: table-column-group is not supported expected "table-column-group" but got "block"
+FAIL rendered legend with display: table-column; overflow:hidden assert_equals: display: table-column is not supported expected "table-column" but got "block"
+FAIL rendered legend with display: table-caption; overflow:hidden assert_equals: display: table-caption is not supported expected "table-caption" but got "block"
+PASS rendered legend with display: list-item; overflow:hidden
+PASS rendered legend with display: flow; overflow:hidden
+PASS rendered legend with display: flow-root; overflow:hidden
+FAIL rendered legend with display: run-in; overflow:hidden assert_equals: display: run-in is not supported expected "run-in" but got "block"
+FAIL rendered legend with display: inline; overflow:hidden assert_equals: display: inline is not supported expected "inline" but got "block"
+FAIL rendered legend with display: inline-block; overflow:hidden assert_equals: display: inline-block is not supported expected "inline-block" but got "block"
+FAIL rendered legend with display: inline-table; overflow:hidden assert_equals: display: inline-table is not supported expected "inline-table" but got "table"
+FAIL rendered legend with display: block ruby; overflow:hidden assert_equals: display: block ruby is not supported expected "block ruby" but got "block"
+FAIL rendered legend with display: ruby; overflow:hidden assert_equals: display: ruby is not supported expected "ruby" but got "block"
+FAIL rendered legend with display: ruby-base; overflow:hidden assert_equals: display: ruby-base is not supported expected "ruby-base" but got "block"
+FAIL rendered legend with display: ruby-text; overflow:hidden assert_equals: display: ruby-text is not supported expected "ruby-text" but got "block"
+FAIL rendered legend with display: ruby-base-container; overflow:hidden assert_equals: display: ruby-base-container is not supported expected "ruby-base-container" but got "block"
+FAIL rendered legend with display: ruby-text-container; overflow:hidden assert_equals: display: ruby-text-container is not supported expected "ruby-text-container" but got "block"
+PASS rendered legend with display: grid; overflow:hidden
+FAIL rendered legend with display: inline-grid; overflow:hidden assert_equals: display: inline-grid is not supported expected "inline-grid" but got "grid"
+PASS rendered legend with display: flex; overflow:hidden
+FAIL rendered legend with display: inline-flex; overflow:hidden assert_equals: display: inline-flex is not supported expected "inline-flex" but got "flex"
+PASS rendered legend with display: block; columns:1
+PASS rendered legend with display: table; columns:1
+FAIL rendered legend with display: table-row-group; columns:1 assert_equals: display: table-row-group is not supported expected "table-row-group" but got "block"
+FAIL rendered legend with display: table-header-group; columns:1 assert_equals: display: table-header-group is not supported expected "table-header-group" but got "block"
+FAIL rendered legend with display: table-footer-group; columns:1 assert_equals: display: table-footer-group is not supported expected "table-footer-group" but got "block"
+FAIL rendered legend with display: table-row; columns:1 assert_equals: display: table-row is not supported expected "table-row" but got "block"
+FAIL rendered legend with display: table-cell; columns:1 assert_equals: display: table-cell is not supported expected "table-cell" but got "block"
+FAIL rendered legend with display: table-column-group; columns:1 assert_equals: display: table-column-group is not supported expected "table-column-group" but got "block"
+FAIL rendered legend with display: table-column; columns:1 assert_equals: display: table-column is not supported expected "table-column" but got "block"
+FAIL rendered legend with display: table-caption; columns:1 assert_equals: display: table-caption is not supported expected "table-caption" but got "block"
+PASS rendered legend with display: list-item; columns:1
+PASS rendered legend with display: flow; columns:1
+PASS rendered legend with display: flow-root; columns:1
+FAIL rendered legend with display: run-in; columns:1 assert_equals: display: run-in is not supported expected "run-in" but got "block"
+FAIL rendered legend with display: inline; columns:1 assert_equals: display: inline is not supported expected "inline" but got "block"
+FAIL rendered legend with display: inline-block; columns:1 assert_equals: display: inline-block is not supported expected "inline-block" but got "block"
+FAIL rendered legend with display: inline-table; columns:1 assert_equals: display: inline-table is not supported expected "inline-table" but got "table"
+FAIL rendered legend with display: block ruby; columns:1 assert_equals: display: block ruby is not supported expected "block ruby" but got "block"
+FAIL rendered legend with display: ruby; columns:1 assert_equals: display: ruby is not supported expected "ruby" but got "block"
+FAIL rendered legend with display: ruby-base; columns:1 assert_equals: display: ruby-base is not supported expected "ruby-base" but got "block"
+FAIL rendered legend with display: ruby-text; columns:1 assert_equals: display: ruby-text is not supported expected "ruby-text" but got "block"
+FAIL rendered legend with display: ruby-base-container; columns:1 assert_equals: display: ruby-base-container is not supported expected "ruby-base-container" but got "block"
+FAIL rendered legend with display: ruby-text-container; columns:1 assert_equals: display: ruby-text-container is not supported expected "ruby-text-container" but got "block"
+PASS rendered legend with display: grid; columns:1
+FAIL rendered legend with display: inline-grid; columns:1 assert_equals: display: inline-grid is not supported expected "inline-grid" but got "grid"
+PASS rendered legend with display: flex; columns:1
+FAIL rendered legend with display: inline-flex; columns:1 assert_equals: display: inline-flex is not supported expected "inline-flex" but got "flex"
+PASS rendered legend with display: block; overflow:hidden;columns:1
+PASS rendered legend with display: table; overflow:hidden;columns:1
+FAIL rendered legend with display: table-row-group; overflow:hidden;columns:1 assert_equals: display: table-row-group is not supported expected "table-row-group" but got "block"
+FAIL rendered legend with display: table-header-group; overflow:hidden;columns:1 assert_equals: display: table-header-group is not supported expected "table-header-group" but got "block"
+FAIL rendered legend with display: table-footer-group; overflow:hidden;columns:1 assert_equals: display: table-footer-group is not supported expected "table-footer-group" but got "block"
+FAIL rendered legend with display: table-row; overflow:hidden;columns:1 assert_equals: display: table-row is not supported expected "table-row" but got "block"
+FAIL rendered legend with display: table-cell; overflow:hidden;columns:1 assert_equals: display: table-cell is not supported expected "table-cell" but got "block"
+FAIL rendered legend with display: table-column-group; overflow:hidden;columns:1 assert_equals: display: table-column-group is not supported expected "table-column-group" but got "block"
+FAIL rendered legend with display: table-column; overflow:hidden;columns:1 assert_equals: display: table-column is not supported expected "table-column" but got "block"
+FAIL rendered legend with display: table-caption; overflow:hidden;columns:1 assert_equals: display: table-caption is not supported expected "table-caption" but got "block"
+PASS rendered legend with display: list-item; overflow:hidden;columns:1
+PASS rendered legend with display: flow; overflow:hidden;columns:1
+PASS rendered legend with display: flow-root; overflow:hidden;columns:1
+FAIL rendered legend with display: run-in; overflow:hidden;columns:1 assert_equals: display: run-in is not supported expected "run-in" but got "block"
+FAIL rendered legend with display: inline; overflow:hidden;columns:1 assert_equals: display: inline is not supported expected "inline" but got "block"
+FAIL rendered legend with display: inline-block; overflow:hidden;columns:1 assert_equals: display: inline-block is not supported expected "inline-block" but got "block"
+FAIL rendered legend with display: inline-table; overflow:hidden;columns:1 assert_equals: display: inline-table is not supported expected "inline-table" but got "table"
+FAIL rendered legend with display: block ruby; overflow:hidden;columns:1 assert_equals: display: block ruby is not supported expected "block ruby" but got "block"
+FAIL rendered legend with display: ruby; overflow:hidden;columns:1 assert_equals: display: ruby is not supported expected "ruby" but got "block"
+FAIL rendered legend with display: ruby-base; overflow:hidden;columns:1 assert_equals: display: ruby-base is not supported expected "ruby-base" but got "block"
+FAIL rendered legend with display: ruby-text; overflow:hidden;columns:1 assert_equals: display: ruby-text is not supported expected "ruby-text" but got "block"
+FAIL rendered legend with display: ruby-base-container; overflow:hidden;columns:1 assert_equals: display: ruby-base-container is not supported expected "ruby-base-container" but got "block"
+FAIL rendered legend with display: ruby-text-container; overflow:hidden;columns:1 assert_equals: display: ruby-text-container is not supported expected "ruby-text-container" but got "block"
+PASS rendered legend with display: grid; overflow:hidden;columns:1
+FAIL rendered legend with display: inline-grid; overflow:hidden;columns:1 assert_equals: display: inline-grid is not supported expected "inline-grid" but got "grid"
+PASS rendered legend with display: flex; overflow:hidden;columns:1
+FAIL rendered legend with display: inline-flex; overflow:hidden;columns:1 assert_equals: display: inline-flex is not supported expected "inline-flex" but got "flex"
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display.html b/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display.html
index 914547f..b6c57a6 100644
--- a/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display.html
+++ b/third_party/blink/web_tests/external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display.html
@@ -2,6 +2,9 @@
 <title>rendered legend and CSS display</title>
 <script src=/resources/testharness.js></script>
 <script src=/resources/testharnessreport.js></script>
+<style>
+legend { width:initial; }
+</style>
 <fieldset><legend id="ref">x</legend></fieldset>
 <fieldset><legend id="test">x</legend></fieldset>
 <script>
@@ -10,22 +13,28 @@
   const testElm = document.querySelector('#test');
   const values = ['block', 'table', 'table-row-group', 'table-header-group', 'table-footer-group', 'table-row', 'table-cell',
                   'table-column-group', 'table-column', 'table-caption', 'list-item', 'flow', 'flow-root','run-in','inline',
-                  'inline-block', 'inline-table', 'ruby', 'ruby-base', 'ruby-text', 'ruby-base-container', 'ruby-text-container',
+                  'inline-block', 'inline-table', 'block ruby', 'ruby', 'ruby-base', 'ruby-text', 'ruby-base-container', 'ruby-text-container',
                   'grid', 'inline-grid', 'flex', 'inline-flex'];
+  const extraStyle = ['', 'overflow:hidden', 'columns:1', 'overflow:hidden;columns:1'];
 
-  for (const val of values) {
-    test(() => {
-      testElm.style.removeProperty('display');
-      testElm.style.display = val;
-      const computed = getComputedStyle(testElm);
-      // Note that computed value is different from the used value.
-      // E.g., if ruby is not supported, the following assertion will
-      // fail as the computed value of display will be block.
-      // If ruby is supported, computed.display will return "ruby",
-      // but the used value is supposed to be "block".
-      assert_equals(computed.display, val, `display: ${val} is not supported`);
-      assert_equals(computed.width, refStyle.width, 'width');
-      assert_equals(testElm.offsetLeft, refElm.offsetLeft, 'offsetLeft');
-    }, `rendered legend with display: ${val}`);
+  for (const style of extraStyle) {
+    for (const val of values) {
+      test(() => {
+        testElm.style.removeProperty('display');
+        testElm.style = style;
+        testElm.style.display = val;
+        const computed = getComputedStyle(testElm);
+        // Note that computed value is different from the used value.
+        // E.g., if ruby is not supported, the following assertion will
+        // fail as the computed value of display will be block.
+        // If ruby is supported, computed.display will return "ruby",
+        // but the used value is supposed to be "block ruby".
+        // Also, 'flow' is serialized as 'block' for legacy reasons.
+        let expected = val == 'flow' ? 'block' : val;
+        assert_equals(computed.display, expected, `display: ${val} is not supported`);
+        assert_equals(computed.width, refStyle.width, 'width');
+        assert_equals(testElm.offsetLeft, refElm.offsetLeft, 'offsetLeft');
+      }, `rendered legend with display: ${val}` + (style == '' ? '' : "; " + style));
+    }
   }
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/html.idl b/third_party/blink/web_tests/external/wpt/interfaces/html.idl
index bb44c13..7f2eba2 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/html.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/html.idl
@@ -2396,10 +2396,6 @@
   [CEReactions] attribute unsigned long vspace;
   [CEReactions] attribute DOMString width;
 
-  attribute EventHandler onbounce;
-  attribute EventHandler onfinish;
-  attribute EventHandler onstart;
-
   undefined start();
   undefined stop();
 };
diff --git a/third_party/blink/web_tests/external/wpt/resources/idlharness.js b/third_party/blink/web_tests/external/wpt/resources/idlharness.js
index 994a0d82..5a97b27 100644
--- a/third_party/blink/web_tests/external/wpt/resources/idlharness.js
+++ b/third_party/blink/web_tests/external/wpt/resources/idlharness.js
@@ -3483,6 +3483,22 @@
     subsetTestByKey(this.name, test, () => {
         assert_equals(typeof namespaceObject, "object");
     }, `${this.name} namespace: typeof is "object"`);
+
+    subsetTestByKey(this.name, test, () => {
+        assert_equals(
+            Object.getOwnPropertyDescriptor(namespaceObject, "length"),
+            undefined,
+            "length property must be undefined"
+        );
+    }, `${this.name} namespace: has no length property`);
+
+    subsetTestByKey(this.name, test, () => {
+        assert_equals(
+            Object.getOwnPropertyDescriptor(namespaceObject, "name"),
+            undefined,
+            "name property must be undefined"
+        );
+    }, `${this.name} namespace: has no name property`);
 };
 
 IdlNamespace.prototype.test = function ()
diff --git a/third_party/blink/web_tests/external/wpt/url/urlsearchparams-foreach.any.js b/third_party/blink/web_tests/external/wpt/url/urlsearchparams-foreach.any.js
index 7969a0c..ff19643 100644
--- a/third_party/blink/web_tests/external/wpt/url/urlsearchparams-foreach.any.js
+++ b/third_party/blink/web_tests/external/wpt/url/urlsearchparams-foreach.any.js
@@ -14,7 +14,7 @@
     let a = new URL("http://a.b/c?a=1&b=2&c=3&d=4");
     let b = a.searchParams;
     var c = [];
-    for (i of b) {
+    for (const i of b) {
         a.search = "x=1&y=2&z=3";
         c.push(i);
     }
@@ -26,7 +26,7 @@
 test(function() {
     let a = new URL("http://a.b/c");
     let b = a.searchParams;
-    for (i of b) {
+    for (const i of b) {
         assert_unreached(i);
     }
 }, "empty");
@@ -35,7 +35,7 @@
     const url = new URL("http://localhost/query?param0=0&param1=1&param2=2");
     const searchParams = url.searchParams;
     const seen = [];
-    for (param of searchParams) {
+    for (const param of searchParams) {
         if (param[0] === 'param0') {
             searchParams.delete('param1');
         }
@@ -50,7 +50,7 @@
     const url = new URL("http://localhost/query?param0=0&param1=1&param2=2");
     const searchParams = url.searchParams;
     const seen = [];
-    for (param of searchParams) {
+    for (const param of searchParams) {
         if (param[0] === 'param0') {
             searchParams.delete('param0');
             // 'param1=1' is now in the first slot, so the next iteration will see 'param2=2'.
@@ -66,7 +66,7 @@
     const url = new URL("http://localhost/query?param0=0&param1=1&param2=2");
     const searchParams = url.searchParams;
     const seen = [];
-    for (param of searchParams) {
+    for (const param of searchParams) {
         seen.push(param[0]);
         searchParams.delete(param[0]);
     }
diff --git a/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize05-expected.png b/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize05-expected.png
index 99a2bac0..50d0c4e9 100644
--- a/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize05-expected.png
+++ b/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize05-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize09-expected.png b/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize09-expected.png
index 1a68762..5045e48 100644
--- a/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize09-expected.png
+++ b/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize09-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize10-expected.png b/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize10-expected.png
index eb7287f6..18c7735 100644
--- a/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize10-expected.png
+++ b/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize10-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize11-expected.png b/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize11-expected.png
index 666d63a4..ef16225 100644
--- a/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize11-expected.png
+++ b/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize11-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize18-expected.png b/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize18-expected.png
index 102e479..b16289d8 100644
--- a/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize18-expected.png
+++ b/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize18-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize19-expected.png b/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize19-expected.png
index f40b6672..caf1f2b 100644
--- a/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize19-expected.png
+++ b/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize19-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize21-expected.png b/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize21-expected.png
index 102e479..b16289d8 100644
--- a/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize21-expected.png
+++ b/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize21-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize22-expected.png b/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize22-expected.png
index 5e4fb02..d6a8962 100644
--- a/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize22-expected.png
+++ b/third_party/blink/web_tests/fast/backgrounds/size/backgroundSize22-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/backgrounds/size/contain-and-cover-expected.png b/third_party/blink/web_tests/fast/backgrounds/size/contain-and-cover-expected.png
index 14d14d0..3e6a928 100644
--- a/third_party/blink/web_tests/fast/backgrounds/size/contain-and-cover-expected.png
+++ b/third_party/blink/web_tests/fast/backgrounds/size/contain-and-cover-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/backgrounds/size/contain-and-cover-zoomed-expected.png b/third_party/blink/web_tests/fast/backgrounds/size/contain-and-cover-zoomed-expected.png
index 4ecc22d5..5976c1a 100644
--- a/third_party/blink/web_tests/fast/backgrounds/size/contain-and-cover-zoomed-expected.png
+++ b/third_party/blink/web_tests/fast/backgrounds/size/contain-and-cover-zoomed-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/borders/border-image-massive-scale-expected.png b/third_party/blink/web_tests/fast/borders/border-image-massive-scale-expected.png
deleted file mode 100644
index 26806d4..0000000
--- a/third_party/blink/web_tests/fast/borders/border-image-massive-scale-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/fast/borders/border-image-rotate-transform-expected.png b/third_party/blink/web_tests/fast/borders/border-image-rotate-transform-expected.png
deleted file mode 100644
index 2fd40b2..0000000
--- a/third_party/blink/web_tests/fast/borders/border-image-rotate-transform-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/fast/borders/border-image-scale-transform-expected.png b/third_party/blink/web_tests/fast/borders/border-image-scale-transform-expected.png
deleted file mode 100644
index 010cd21..0000000
--- a/third_party/blink/web_tests/fast/borders/border-image-scale-transform-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/fast/borders/inline-mask-overlay-image-outset-expected.png b/third_party/blink/web_tests/fast/borders/inline-mask-overlay-image-outset-expected.png
deleted file mode 100644
index 8bb0a288..0000000
--- a/third_party/blink/web_tests/fast/borders/inline-mask-overlay-image-outset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/fast/reflections/reflection-masks-expected.png b/third_party/blink/web_tests/fast/reflections/reflection-masks-expected.png
index 33d1e4f..16a75a3d 100644
--- a/third_party/blink/web_tests/fast/reflections/reflection-masks-expected.png
+++ b/third_party/blink/web_tests/fast/reflections/reflection-masks-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/reflections/reflection-masks-opacity-expected.png b/third_party/blink/web_tests/fast/reflections/reflection-masks-opacity-expected.png
index 84acb46..8982998 100644
--- a/third_party/blink/web_tests/fast/reflections/reflection-masks-opacity-expected.png
+++ b/third_party/blink/web_tests/fast/reflections/reflection-masks-opacity-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/table/border-collapsing/adjacent-row-groups-multi.html b/third_party/blink/web_tests/fast/table/border-collapsing/adjacent-row-groups-multi.html
deleted file mode 100644
index 05320d6..0000000
--- a/third_party/blink/web_tests/fast/table/border-collapsing/adjacent-row-groups-multi.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE html>
-
-<html>
-<head>
-<style>
-  table { border-collapse: collapse; }
-  thead, tbody, tfoot { border: 1em solid; }
-  .first { border-color: green; }
-  .second { border-color: blue; }
-  tbody { border-color: orange; }
-  td { width: 50px; height: 50px;}
-</style>
-</head>
-
-<body>
-<p>Test for Bugzilla <a href="https://bugs.webkit.org/show_bug.cgi?id=86885">Bug 86885</a>: CSS2.1 failure: border-conflict-element021a.</p>
-<p>When two adjacent table row groups (thead, tbody, tfoot) have the same border-width and the same border-style in a 'border-collapse: collapse' table, then the color of the border from the topmost table row group wins: so, a thead wins over a tbody which wins over tfoot.</p>
-<p>This test verifies the aforementioned sceanario when more than one header and/or footer is specified. The first thead specified in the page should be rendered at the top of the table; similarly the first tfoot specified in the page should be rendered as the last section of the table. In this case both the top-most and the bottom-most sections should be displayed in green color. Also, there should be no overlap of border-colors at the corners.</p>
-
-<table>
-    <thead class="first">
-        <tr><td></td></tr>
-    </thead>
-   	<thead class="second">
-        <tr><td></td></tr>
-    </thead>
-    <tbody>
-        <tr><td></td></tr>
-    </tbody>
-    <tfoot class="first">
-        <tr><td></td></tr>
-    </tfoot>
-    <tfoot class="second">
-        <tr><td></td></tr>
-    </tfoot>
-</table>
-
-</body>
-</html>
diff --git a/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-blob-resize-expected.png b/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-blob-resize-expected.png
index 8cbfc267..99586a4 100644
--- a/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-blob-resize-expected.png
+++ b/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-blob-resize-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-canvas-resize-expected.png b/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-canvas-resize-expected.png
index 8cbfc267..99586a4 100644
--- a/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-canvas-resize-expected.png
+++ b/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-canvas-resize-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-image-resize-expected.png b/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-image-resize-expected.png
index 8cbfc267..99586a4 100644
--- a/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-image-resize-expected.png
+++ b/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-image-resize-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-imageData-resize-expected.png b/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-imageData-resize-expected.png
index 8cbfc267..99586a4 100644
--- a/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-imageData-resize-expected.png
+++ b/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-imageData-resize-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-offscreen-canvas-resize-expected.png b/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-offscreen-canvas-resize-expected.png
index 8cbfc267..99586a4 100644
--- a/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-offscreen-canvas-resize-expected.png
+++ b/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-offscreen-canvas-resize-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-video-resize-expected.png b/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-video-resize-expected.png
index 2328a0e..7d4b620d8 100644
--- a/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-video-resize-expected.png
+++ b/third_party/blink/web_tests/fast/webgl/texImage-imageBitmap-from-video-resize-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/css3/blending/effect-background-blend-mode-stacking-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/css3/blending/effect-background-blend-mode-stacking-expected.png
index 96ff48c..2a3487b 100644
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/css3/blending/effect-background-blend-mode-stacking-expected.png
+++ b/third_party/blink/web_tests/flag-specific/composite-after-paint/css3/blending/effect-background-blend-mode-stacking-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/fast/borders/inline-mask-overlay-image-outset-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/fast/borders/inline-mask-overlay-image-outset-expected.png
deleted file mode 100644
index 8bb0a288..0000000
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/fast/borders/inline-mask-overlay-image-outset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/tables/mozilla/bugs/bug101674-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/tables/mozilla/bugs/bug101674-expected.png
deleted file mode 100644
index cb29e64..0000000
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/tables/mozilla/bugs/bug101674-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/tables/mozilla/bugs/bug1296-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/tables/mozilla/bugs/bug1296-expected.png
deleted file mode 100644
index 212b0d3..0000000
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/tables/mozilla/bugs/bug1296-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/tables/mozilla/bugs/bug1430-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/tables/mozilla/bugs/bug1430-expected.png
deleted file mode 100644
index 7ca4a524..0000000
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/tables/mozilla/bugs/bug1430-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/tables/mozilla/bugs/bug4093-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/tables/mozilla/bugs/bug4093-expected.png
deleted file mode 100644
index 792d083..0000000
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/tables/mozilla/bugs/bug4093-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/tables/mozilla/bugs/bug4427-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/tables/mozilla/bugs/bug4427-expected.png
deleted file mode 100644
index 4f38f98..0000000
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/tables/mozilla/bugs/bug4427-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/composite-after-paint/tables/mozilla/bugs/bug625-expected.png b/third_party/blink/web_tests/flag-specific/composite-after-paint/tables/mozilla/bugs/bug625-expected.png
deleted file mode 100644
index 8e95cae..0000000
--- a/third_party/blink/web_tests/flag-specific/composite-after-paint/tables/mozilla/bugs/bug625-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/borders/inline-mask-overlay-image-outset-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/borders/inline-mask-overlay-image-outset-expected.png
index 49cfdf61..826d515 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/borders/inline-mask-overlay-image-outset-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/borders/inline-mask-overlay-image-outset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/http/tests/misc/slow-loading-image-in-pattern-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/http/tests/misc/slow-loading-image-in-pattern-expected.png
index f451693..e6ce6bd 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/http/tests/misc/slow-loading-image-in-pattern-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/http/tests/misc/slow-loading-image-in-pattern-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug101674-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug101674-expected.png
index 8029608..734dc2f 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug101674-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug101674-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug1296-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug1296-expected.png
index 3af7173f..a35e038a 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug1296-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug1296-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug1430-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug1430-expected.png
index b2e6590b..01da8ff6 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug1430-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug1430-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug4093-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug4093-expected.png
index e3b6ab3..166913fb 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug4093-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug4093-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug4427-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug4427-expected.png
index f969eba..4a29f8c 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug4427-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug4427-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug625-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug625-expected.png
index 5198087..3912c50 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug625-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug625-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/http/tests/accessibility/file-upload-button-with-axpress.html b/third_party/blink/web_tests/http/tests/accessibility/file-upload-button-with-axpress.html
deleted file mode 100644
index 91dd77d..0000000
--- a/third_party/blink/web_tests/http/tests/accessibility/file-upload-button-with-axpress.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<body>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<input id="filetype" type="file">
-
-<div id="description"></div>
-<div id="console"></div>
-
-<script type="module">
-import {mockFileChooserFactory} from '/wpt_internal/forms/resources/mock-file-chooser.js';
-
-promise_test(async () => {
-  const inputFile = document.getElementById('filetype');
-  const activatePromise = new Promise(
-      resolve => inputFile.addEventListener('DOMActivate', resolve));
-  const openPromise = new Promise(
-      resolve => mockFileChooserFactory.addEventListener('open', resolve));
-  accessibilityController.accessibleElementById('filetype').press();
-  await activatePromise;
-  const {detail} = await openPromise;
-  assert_equals(detail, 'kOpen');
-}, 'when AXPress is used, DOMActivate will be handled by file input elements');
-
-</script>
-</body>
-</html>
diff --git a/third_party/blink/web_tests/images/color-profile-background-image-cover-expected.png b/third_party/blink/web_tests/images/color-profile-background-image-cover-expected.png
index 7b224b3c..d6f8669 100644
--- a/third_party/blink/web_tests/images/color-profile-background-image-cover-expected.png
+++ b/third_party/blink/web_tests/images/color-profile-background-image-cover-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/images/color-profile-background-image-space-expected.png b/third_party/blink/web_tests/images/color-profile-background-image-space-expected.png
index f821b2f..2fa6ca1b 100644
--- a/third_party/blink/web_tests/images/color-profile-background-image-space-expected.png
+++ b/third_party/blink/web_tests/images/color-profile-background-image-space-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/images/color-profile-border-image-expected.png b/third_party/blink/web_tests/images/color-profile-border-image-expected.png
index 5e478a4..a7cd2e4 100644
--- a/third_party/blink/web_tests/images/color-profile-border-image-expected.png
+++ b/third_party/blink/web_tests/images/color-profile-border-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/paint/invalidation/svg/js-update-image-expected.png b/third_party/blink/web_tests/paint/invalidation/svg/js-update-image-expected.png
index a1fd67e3..c93cffd 100644
--- a/third_party/blink/web_tests/paint/invalidation/svg/js-update-image-expected.png
+++ b/third_party/blink/web_tests/paint/invalidation/svg/js-update-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/fuchsia/tables/mozilla/core/bloomberg-expected.png b/third_party/blink/web_tests/platform/fuchsia/tables/mozilla/core/bloomberg-expected.png
index 65d14b2..962ed32 100644
--- a/third_party/blink/web_tests/platform/fuchsia/tables/mozilla/core/bloomberg-expected.png
+++ b/third_party/blink/web_tests/platform/fuchsia/tables/mozilla/core/bloomberg-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/compositing/video/video-controls-layer-creation-expected.png b/third_party/blink/web_tests/platform/linux/compositing/video/video-controls-layer-creation-expected.png
deleted file mode 100644
index 32536c0..0000000
--- a/third_party/blink/web_tests/platform/linux/compositing/video/video-controls-layer-creation-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/backgrounds/size/backgroundSize16-expected.png b/third_party/blink/web_tests/platform/linux/fast/backgrounds/size/backgroundSize16-expected.png
index c57f984..f0e8a7a 100644
--- a/third_party/blink/web_tests/platform/linux/fast/backgrounds/size/backgroundSize16-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/backgrounds/size/backgroundSize16-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/backgrounds/size/contain-and-cover-expected.png b/third_party/blink/web_tests/platform/linux/fast/backgrounds/size/contain-and-cover-expected.png
index 83a5e6f..baa166e 100644
--- a/third_party/blink/web_tests/platform/linux/fast/backgrounds/size/contain-and-cover-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/backgrounds/size/contain-and-cover-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/borders/border-image-border-radius-expected.png b/third_party/blink/web_tests/platform/linux/fast/borders/border-image-border-radius-expected.png
index 8c3b4cd..e19b6b5 100644
--- a/third_party/blink/web_tests/platform/linux/fast/borders/border-image-border-radius-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/borders/border-image-border-radius-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/borders/border-image-scaled-expected.png b/third_party/blink/web_tests/platform/linux/fast/borders/border-image-scaled-expected.png
index 69a4d82..ac934e5 100644
--- a/third_party/blink/web_tests/platform/linux/fast/borders/border-image-scaled-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/borders/border-image-scaled-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/borders/inline-mask-overlay-image-outset-expected.png b/third_party/blink/web_tests/platform/linux/fast/borders/inline-mask-overlay-image-outset-expected.png
index 8bb0a288..a206678 100644
--- a/third_party/blink/web_tests/platform/linux/fast/borders/inline-mask-overlay-image-outset-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/borders/inline-mask-overlay-image-outset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/borders/scaled-border-image-expected.png b/third_party/blink/web_tests/platform/linux/fast/borders/scaled-border-image-expected.png
index 19370fc..8fd99ed 100644
--- a/third_party/blink/web_tests/platform/linux/fast/borders/scaled-border-image-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/borders/scaled-border-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/linux/fast/forms/color-scheme/media/video-overlay-menu-expected.png
index 7f0b4f3..1f2f392 100644
--- a/third_party/blink/web_tests/platform/linux/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/overflow/overflow-of-video-outline-expected.png b/third_party/blink/web_tests/platform/linux/fast/overflow/overflow-of-video-outline-expected.png
index 5253f2c4..6ae3ca2 100644
--- a/third_party/blink/web_tests/platform/linux/fast/overflow/overflow-of-video-outline-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/overflow/overflow-of-video-outline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/http/tests/misc/slow-loading-image-in-pattern-expected.png b/third_party/blink/web_tests/platform/linux/http/tests/misc/slow-loading-image-in-pattern-expected.png
index a3e1fa52..3326cfa 100644
--- a/third_party/blink/web_tests/platform/linux/http/tests/misc/slow-loading-image-in-pattern-expected.png
+++ b/third_party/blink/web_tests/platform/linux/http/tests/misc/slow-loading-image-in-pattern-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/images/color-profile-svg-fill-text-expected.png b/third_party/blink/web_tests/platform/linux/images/color-profile-svg-fill-text-expected.png
index f93b8d64..958b0e2e 100644
--- a/third_party/blink/web_tests/platform/linux/images/color-profile-svg-fill-text-expected.png
+++ b/third_party/blink/web_tests/platform/linux/images/color-profile-svg-fill-text-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/controls-after-reload-expected.png b/third_party/blink/web_tests/platform/linux/media/controls-after-reload-expected.png
index 4aea95e8..7094c019 100644
--- a/third_party/blink/web_tests/platform/linux/media/controls-after-reload-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/controls-after-reload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/controls-layout-direction-expected.png b/third_party/blink/web_tests/platform/linux/media/controls-layout-direction-expected.png
index e5e8d6de..79e5c44 100644
--- a/third_party/blink/web_tests/platform/linux/media/controls-layout-direction-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/controls-layout-direction-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/controls-strict-expected.png b/third_party/blink/web_tests/platform/linux/media/controls-strict-expected.png
index deda1fd..6777f50 100644
--- a/third_party/blink/web_tests/platform/linux/media/controls-strict-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/controls-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/controls-styling-expected.png b/third_party/blink/web_tests/platform/linux/media/controls-styling-expected.png
index c23f5e5..3adb06b 100644
--- a/third_party/blink/web_tests/platform/linux/media/controls-styling-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/controls-styling-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/controls-styling-strict-expected.png b/third_party/blink/web_tests/platform/linux/media/controls-styling-strict-expected.png
index 637142e..3a5ffa2 100644
--- a/third_party/blink/web_tests/platform/linux/media/controls-styling-strict-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/controls-styling-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/controls-without-preload-expected.png b/third_party/blink/web_tests/platform/linux/media/controls-without-preload-expected.png
index 03caecb..94a2754 100644
--- a/third_party/blink/web_tests/platform/linux/media/controls-without-preload-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/controls-without-preload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/controls/paint-controls-webkit-appearance-none-expected.png b/third_party/blink/web_tests/platform/linux/media/controls/paint-controls-webkit-appearance-none-expected.png
index 47e4806..cdeef48 100644
--- a/third_party/blink/web_tests/platform/linux/media/controls/paint-controls-webkit-appearance-none-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/controls/paint-controls-webkit-appearance-none-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/media-controls-clone-expected.png b/third_party/blink/web_tests/platform/linux/media/media-controls-clone-expected.png
index 9c530f5..2be93d1e 100644
--- a/third_party/blink/web_tests/platform/linux/media/media-controls-clone-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/media-controls-clone-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/media-controls-grey-scrubber-expected.png b/third_party/blink/web_tests/platform/linux/media/media-controls-grey-scrubber-expected.png
index 9572b808..3d2ca93 100644
--- a/third_party/blink/web_tests/platform/linux/media/media-controls-grey-scrubber-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/media-controls-grey-scrubber-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/linux/media/video-controls-rendering-expected.png
index 1c39f89..b69e1d20 100644
--- a/third_party/blink/web_tests/platform/linux/media/video-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/video-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/video-display-toggle-expected.png b/third_party/blink/web_tests/platform/linux/media/video-display-toggle-expected.png
index 884b3c8..16fedfd1 100644
--- a/third_party/blink/web_tests/platform/linux/media/video-display-toggle-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/video-display-toggle-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/video-empty-source-expected.png b/third_party/blink/web_tests/platform/linux/media/video-empty-source-expected.png
index e422345..80304120 100644
--- a/third_party/blink/web_tests/platform/linux/media/video-empty-source-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/video-empty-source-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/video-no-audio-expected.png b/third_party/blink/web_tests/platform/linux/media/video-no-audio-expected.png
index 670a2253..07075b7 100644
--- a/third_party/blink/web_tests/platform/linux/media/video-no-audio-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/video-no-audio-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/media/video-zoom-controls-expected.png b/third_party/blink/web_tests/platform/linux/media/video-zoom-controls-expected.png
index e6d5d0d..bdad034 100644
--- a/third_party/blink/web_tests/platform/linux/media/video-zoom-controls-expected.png
+++ b/third_party/blink/web_tests/platform/linux/media/video-zoom-controls-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png b/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png
index ca09d30e..973efec 100644
--- a/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png
+++ b/third_party/blink/web_tests/platform/linux/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/carto.net/selectionlist-expected.png b/third_party/blink/web_tests/platform/linux/svg/carto.net/selectionlist-expected.png
index 70d86a9..c0964d5 100644
--- a/third_party/blink/web_tests/platform/linux/svg/carto.net/selectionlist-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/carto.net/selectionlist-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/createImageElement2-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/createImageElement2-expected.png
index 9132bd44..48aa65b 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/createImageElement2-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/createImageElement2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/image-parent-translation-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/image-parent-translation-expected.png
index 54189e4..f6c8f0c 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/image-parent-translation-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/image-parent-translation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/image-small-width-height-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/image-small-width-height-expected.png
index 7cebb34..1a42687 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/image-small-width-height-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/image-small-width-height-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/pointer-events-image-css-transform-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/pointer-events-image-css-transform-expected.png
index ddec429..8846ef94 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/pointer-events-image-css-transform-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/pointer-events-image-css-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/pointer-events-image-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/pointer-events-image-expected.png
index ddec429..8846ef94 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/pointer-events-image-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/pointer-events-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/custom/text-image-opacity-expected.png b/third_party/blink/web_tests/platform/linux/svg/custom/text-image-opacity-expected.png
index 5207b1b..1c26e2b 100644
--- a/third_party/blink/web_tests/platform/linux/svg/custom/text-image-opacity-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/custom/text-image-opacity-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/hixie/perf/004-expected.png b/third_party/blink/web_tests/platform/linux/svg/hixie/perf/004-expected.png
index 77e9c32..d53f2bc3 100644
--- a/third_party/blink/web_tests/platform/linux/svg/hixie/perf/004-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/hixie/perf/004-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/svg/wicd/test-rightsizing-b-expected.png b/third_party/blink/web_tests/platform/linux/svg/wicd/test-rightsizing-b-expected.png
index a96acb9..9375d058 100644
--- a/third_party/blink/web_tests/platform/linux/svg/wicd/test-rightsizing-b-expected.png
+++ b/third_party/blink/web_tests/platform/linux/svg/wicd/test-rightsizing-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug101674-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug101674-expected.png
index cb29e64..da98207a 100644
--- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug101674-expected.png
+++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug101674-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug11026-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug11026-expected.png
index d6d349b..c1de732 100644
--- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug11026-expected.png
+++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug11026-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug1296-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug1296-expected.png
index 212b0d3..a760f37c 100644
--- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug1296-expected.png
+++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug1296-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug1430-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug1430-expected.png
index 7ca4a524..3f79ad3b 100644
--- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug1430-expected.png
+++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug1430-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug4093-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug4093-expected.png
index 792d083..cedbf63 100644
--- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug4093-expected.png
+++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug4093-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug4427-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug4427-expected.png
index 4f38f98..ec83a623 100644
--- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug4427-expected.png
+++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug4427-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug625-expected.png b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug625-expected.png
index 8e95cae..179ba16 100644
--- a/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug625-expected.png
+++ b/third_party/blink/web_tests/platform/linux/tables/mozilla/bugs/bug625-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-controls-timeline-expected.png b/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-controls-timeline-expected.png
index 3f8bdd44..425df0c 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-controls-timeline-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-controls-timeline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-scrolled-iframe-expected.png b/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-scrolled-iframe-expected.png
index 529e2160..68776a3 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-scrolled-iframe-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/android/fullscreen/video-scrolled-iframe-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
index 61ffa67..4139f3f0 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
index 70ab693..f8b20c1 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
index 6193b01..38d136d 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/media/video-focus-ring-expected.png b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/media/video-focus-ring-expected.png
index d8b4929..e4a35ee 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/media/video-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/dark-color-scheme/media/video-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/color-profile-svg-fill-text-expected.png b/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/color-profile-svg-fill-text-expected.png
index 5c5b8cee..3deefbf0 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/color-profile-svg-fill-text-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/color-profile-svg-fill-text-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/color-profile-image-filter-all-expected.png b/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/color-profile-image-filter-all-expected.png
index 6283ca4..a8f1bf2 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/color-profile-image-filter-all-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/color-profile-image-filter-all-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png b/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png
index fb7a16ce..57ac050 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/compositing/img-layer-object-fit-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/compositing/img-layer-object-fit-expected.png
deleted file mode 100644
index e7aedde..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/compositing/img-layer-object-fit-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/compositing/video/video-controls-layer-creation-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/compositing/video/video-controls-layer-creation-expected.png
deleted file mode 100644
index 8c401b6..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/compositing/video/video-controls-layer-creation-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/css3/blending/background-blend-mode-different-image-formats-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/css3/blending/background-blend-mode-different-image-formats-expected.png
deleted file mode 100644
index 4ec9d00..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/css3/blending/background-blend-mode-different-image-formats-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/css3/blending/background-blend-mode-multiple-background-layers-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/css3/blending/background-blend-mode-multiple-background-layers-expected.png
deleted file mode 100644
index d084364c..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/css3/blending/background-blend-mode-multiple-background-layers-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/clipboard-apis/clipboard-item.https-expected.txt b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/clipboard-apis/clipboard-item.https-expected.txt
new file mode 100644
index 0000000..ad40535
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/clipboard-apis/clipboard-item.https-expected.txt
@@ -0,0 +1,14 @@
+This is a testharness.js-based test.
+PASS ClipboardItem({string, Blob}) succeeds with different types
+PASS ClipboardItem() succeeds with empty options
+PASS ClipboardItem({}) fails with empty dictionary input
+PASS ClipboardItem(Blob) fails
+PASS ClipboardItem() fails with null input
+PASS ClipboardItem() fails with no input
+PASS types() returns correct values
+FAIL raw() returns correct values, defaulting to false assert_equals: expected (boolean) false but got (undefined) undefined
+PASS getType(DOMString valid type) succeeds with correct output
+PASS getType(DOMString invalid type) succeeds with correct output
+PASS getType(DOMString type) rejects correctly when querying for missing type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/css/cssom/idlharness-expected.txt b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/css/cssom/idlharness-expected.txt
new file mode 100644
index 0000000..185f987
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/css/cssom/idlharness-expected.txt
@@ -0,0 +1,441 @@
+This is a testharness.js-based test.
+Found 435 tests; 380 PASS, 55 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS idl_test validation
+PASS Partial interface CSSStyleSheet: original interface defined
+PASS Partial interface CSSStyleSheet: member names are unique
+PASS Partial interface mixin DocumentOrShadowRoot: original interface mixin defined
+PASS Partial interface mixin DocumentOrShadowRoot: member names are unique
+PASS Partial interface Window: original interface defined
+PASS Partial interface Window: member names are unique
+PASS Partial interface mixin DocumentOrShadowRoot[2]: member names are unique
+PASS Partial interface HTMLLinkElement: member names are unique
+PASS Partial interface HTMLStyleElement: member names are unique
+PASS Partial interface Window[2]: member names are unique
+PASS ProcessingInstruction includes LinkStyle: member names are unique
+PASS HTMLElement includes ElementCSSInlineStyle: member names are unique
+PASS HTMLElement includes GlobalEventHandlers: member names are unique
+PASS HTMLElement includes DocumentAndElementEventHandlers: member names are unique
+PASS HTMLElement includes ElementContentEditable: member names are unique
+PASS HTMLElement includes HTMLOrSVGElement: member names are unique
+PASS SVGElement includes ElementCSSInlineStyle: member names are unique
+PASS SVGElement includes GlobalEventHandlers: member names are unique
+PASS SVGElement includes DocumentAndElementEventHandlers: member names are unique
+PASS SVGElement includes SVGElementInstance: member names are unique
+PASS SVGElement includes HTMLOrSVGElement: member names are unique
+PASS SVGStyleElement includes LinkStyle: member names are unique
+PASS HTMLLinkElement includes LinkStyle: member names are unique
+PASS HTMLStyleElement includes LinkStyle: member names are unique
+PASS Window includes GlobalEventHandlers: member names are unique
+PASS Window includes WindowEventHandlers: member names are unique
+PASS Window includes WindowOrWorkerGlobalScope: member names are unique
+PASS Window includes AnimationFrameProvider: member names are unique
+PASS Window includes WindowSessionStorage: member names are unique
+PASS Window includes WindowLocalStorage: member names are unique
+PASS Document includes NonElementParentNode: member names are unique
+PASS Document includes DocumentOrShadowRoot: member names are unique
+PASS Document includes ParentNode: member names are unique
+PASS Document includes XPathEvaluatorBase: member names are unique
+PASS DocumentFragment includes NonElementParentNode: member names are unique
+PASS DocumentFragment includes ParentNode: member names are unique
+PASS ShadowRoot includes DocumentOrShadowRoot: member names are unique
+PASS Element includes ParentNode: member names are unique
+PASS Element includes NonDocumentTypeChildNode: member names are unique
+PASS Element includes ChildNode: member names are unique
+PASS Element includes Slottable: member names are unique
+PASS CharacterData includes NonDocumentTypeChildNode: member names are unique
+PASS CharacterData includes ChildNode: member names are unique
+PASS MediaList interface: existence and properties of interface object
+PASS MediaList interface object length
+PASS MediaList interface object name
+PASS MediaList interface: existence and properties of interface prototype object
+PASS MediaList interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaList interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaList interface: attribute mediaText
+PASS MediaList interface: stringifier
+PASS MediaList interface: attribute length
+PASS MediaList interface: operation item(unsigned long)
+PASS MediaList interface: operation appendMedium(CSSOMString)
+PASS MediaList interface: operation deleteMedium(CSSOMString)
+PASS MediaList must be primary interface of sheet.media
+PASS Stringification of sheet.media
+PASS MediaList interface: sheet.media must inherit property "mediaText" with the proper type
+PASS MediaList interface: sheet.media must inherit property "length" with the proper type
+PASS MediaList interface: sheet.media must inherit property "item(unsigned long)" with the proper type
+PASS MediaList interface: calling item(unsigned long) on sheet.media with too few arguments must throw TypeError
+PASS MediaList interface: sheet.media must inherit property "appendMedium(CSSOMString)" with the proper type
+PASS MediaList interface: calling appendMedium(CSSOMString) on sheet.media with too few arguments must throw TypeError
+PASS MediaList interface: sheet.media must inherit property "deleteMedium(CSSOMString)" with the proper type
+PASS MediaList interface: calling deleteMedium(CSSOMString) on sheet.media with too few arguments must throw TypeError
+PASS StyleSheet interface: existence and properties of interface object
+PASS StyleSheet interface object length
+PASS StyleSheet interface object name
+PASS StyleSheet interface: existence and properties of interface prototype object
+PASS StyleSheet interface: existence and properties of interface prototype object's "constructor" property
+PASS StyleSheet interface: existence and properties of interface prototype object's @@unscopables property
+PASS StyleSheet interface: attribute type
+PASS StyleSheet interface: attribute href
+PASS StyleSheet interface: attribute ownerNode
+PASS StyleSheet interface: attribute parentStyleSheet
+PASS StyleSheet interface: attribute title
+PASS StyleSheet interface: attribute media
+PASS StyleSheet interface: attribute disabled
+FAIL CSSStyleSheet interface: existence and properties of interface object assert_throws_js: interface object didn't throw TypeError when called as a constructor function "function() {
+                new interface_object();
+            }" did not throw
+PASS CSSStyleSheet interface object length
+PASS CSSStyleSheet interface object name
+PASS CSSStyleSheet interface: existence and properties of interface prototype object
+PASS CSSStyleSheet interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSStyleSheet interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSStyleSheet interface: attribute ownerRule
+PASS CSSStyleSheet interface: attribute cssRules
+PASS CSSStyleSheet interface: operation insertRule(CSSOMString, optional unsigned long)
+PASS CSSStyleSheet interface: operation deleteRule(unsigned long)
+PASS CSSStyleSheet interface: attribute rules
+PASS CSSStyleSheet interface: operation addRule(optional DOMString, optional DOMString, optional unsigned long)
+PASS CSSStyleSheet interface: operation removeRule(optional unsigned long)
+PASS CSSStyleSheet must be primary interface of sheet
+PASS Stringification of sheet
+PASS CSSStyleSheet interface: sheet must inherit property "ownerRule" with the proper type
+PASS CSSStyleSheet interface: sheet must inherit property "cssRules" with the proper type
+PASS CSSStyleSheet interface: sheet must inherit property "insertRule(CSSOMString, optional unsigned long)" with the proper type
+PASS CSSStyleSheet interface: calling insertRule(CSSOMString, optional unsigned long) on sheet with too few arguments must throw TypeError
+PASS CSSStyleSheet interface: sheet must inherit property "deleteRule(unsigned long)" with the proper type
+PASS CSSStyleSheet interface: calling deleteRule(unsigned long) on sheet with too few arguments must throw TypeError
+PASS CSSStyleSheet interface: sheet must inherit property "rules" with the proper type
+PASS CSSStyleSheet interface: sheet must inherit property "addRule(optional DOMString, optional DOMString, optional unsigned long)" with the proper type
+PASS CSSStyleSheet interface: calling addRule(optional DOMString, optional DOMString, optional unsigned long) on sheet with too few arguments must throw TypeError
+PASS CSSStyleSheet interface: sheet must inherit property "removeRule(optional unsigned long)" with the proper type
+PASS CSSStyleSheet interface: calling removeRule(optional unsigned long) on sheet with too few arguments must throw TypeError
+PASS StyleSheet interface: sheet must inherit property "type" with the proper type
+PASS StyleSheet interface: sheet must inherit property "href" with the proper type
+PASS StyleSheet interface: sheet must inherit property "ownerNode" with the proper type
+PASS StyleSheet interface: sheet must inherit property "parentStyleSheet" with the proper type
+PASS StyleSheet interface: sheet must inherit property "title" with the proper type
+PASS StyleSheet interface: sheet must inherit property "media" with the proper type
+PASS StyleSheet interface: sheet must inherit property "disabled" with the proper type
+PASS StyleSheetList interface: existence and properties of interface object
+PASS StyleSheetList interface object length
+PASS StyleSheetList interface object name
+PASS StyleSheetList interface: existence and properties of interface prototype object
+PASS StyleSheetList interface: existence and properties of interface prototype object's "constructor" property
+PASS StyleSheetList interface: existence and properties of interface prototype object's @@unscopables property
+PASS StyleSheetList interface: operation item(unsigned long)
+PASS StyleSheetList interface: attribute length
+PASS StyleSheetList must be primary interface of document.styleSheets
+PASS Stringification of document.styleSheets
+PASS StyleSheetList interface: document.styleSheets must inherit property "item(unsigned long)" with the proper type
+PASS StyleSheetList interface: calling item(unsigned long) on document.styleSheets with too few arguments must throw TypeError
+PASS StyleSheetList interface: document.styleSheets must inherit property "length" with the proper type
+PASS CSSRuleList interface: existence and properties of interface object
+PASS CSSRuleList interface object length
+PASS CSSRuleList interface object name
+PASS CSSRuleList interface: existence and properties of interface prototype object
+PASS CSSRuleList interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSRuleList interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSRuleList interface: operation item(unsigned long)
+PASS CSSRuleList interface: attribute length
+PASS CSSRuleList must be primary interface of sheet.cssRules
+PASS Stringification of sheet.cssRules
+PASS CSSRuleList interface: sheet.cssRules must inherit property "item(unsigned long)" with the proper type
+PASS CSSRuleList interface: calling item(unsigned long) on sheet.cssRules with too few arguments must throw TypeError
+PASS CSSRuleList interface: sheet.cssRules must inherit property "length" with the proper type
+PASS CSSRule interface: existence and properties of interface object
+PASS CSSRule interface object length
+PASS CSSRule interface object name
+PASS CSSRule interface: existence and properties of interface prototype object
+PASS CSSRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSRule interface: attribute cssText
+PASS CSSRule interface: attribute parentRule
+PASS CSSRule interface: attribute parentStyleSheet
+PASS CSSRule interface: attribute type
+PASS CSSRule interface: constant STYLE_RULE on interface object
+PASS CSSRule interface: constant STYLE_RULE on interface prototype object
+PASS CSSRule interface: constant CHARSET_RULE on interface object
+PASS CSSRule interface: constant CHARSET_RULE on interface prototype object
+PASS CSSRule interface: constant IMPORT_RULE on interface object
+PASS CSSRule interface: constant IMPORT_RULE on interface prototype object
+PASS CSSRule interface: constant MEDIA_RULE on interface object
+PASS CSSRule interface: constant MEDIA_RULE on interface prototype object
+PASS CSSRule interface: constant FONT_FACE_RULE on interface object
+PASS CSSRule interface: constant FONT_FACE_RULE on interface prototype object
+PASS CSSRule interface: constant PAGE_RULE on interface object
+PASS CSSRule interface: constant PAGE_RULE on interface prototype object
+FAIL CSSRule interface: constant MARGIN_RULE on interface object assert_own_property: expected property "MARGIN_RULE" missing
+FAIL CSSRule interface: constant MARGIN_RULE on interface prototype object assert_own_property: expected property "MARGIN_RULE" missing
+PASS CSSRule interface: constant NAMESPACE_RULE on interface object
+PASS CSSRule interface: constant NAMESPACE_RULE on interface prototype object
+PASS CSSStyleRule interface: existence and properties of interface object
+PASS CSSStyleRule interface object length
+PASS CSSStyleRule interface object name
+PASS CSSStyleRule interface: existence and properties of interface prototype object
+PASS CSSStyleRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSStyleRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSStyleRule interface: attribute selectorText
+PASS CSSStyleRule interface: attribute style
+PASS CSSStyleRule must be primary interface of sheet.cssRules[4]
+PASS Stringification of sheet.cssRules[4]
+PASS CSSStyleRule interface: sheet.cssRules[4] must inherit property "selectorText" with the proper type
+PASS CSSStyleRule interface: sheet.cssRules[4] must inherit property "style" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "cssText" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "parentRule" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "parentStyleSheet" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "type" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "STYLE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "CHARSET_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "IMPORT_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "MEDIA_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "FONT_FACE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "PAGE_RULE" with the proper type
+FAIL CSSRule interface: sheet.cssRules[4] must inherit property "MARGIN_RULE" with the proper type assert_inherits: property "MARGIN_RULE" not found in prototype chain
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "NAMESPACE_RULE" with the proper type
+PASS CSSImportRule interface: existence and properties of interface object
+PASS CSSImportRule interface object length
+PASS CSSImportRule interface object name
+PASS CSSImportRule interface: existence and properties of interface prototype object
+PASS CSSImportRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSImportRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSImportRule interface: attribute href
+PASS CSSImportRule interface: attribute media
+PASS CSSImportRule interface: attribute styleSheet
+PASS CSSImportRule must be primary interface of sheet.cssRules[0]
+PASS Stringification of sheet.cssRules[0]
+PASS CSSImportRule interface: sheet.cssRules[0] must inherit property "href" with the proper type
+PASS CSSImportRule interface: sheet.cssRules[0] must inherit property "media" with the proper type
+PASS CSSImportRule interface: sheet.cssRules[0] must inherit property "styleSheet" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "cssText" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "parentRule" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "parentStyleSheet" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "type" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "STYLE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "CHARSET_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "IMPORT_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "MEDIA_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "FONT_FACE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "PAGE_RULE" with the proper type
+FAIL CSSRule interface: sheet.cssRules[0] must inherit property "MARGIN_RULE" with the proper type assert_inherits: property "MARGIN_RULE" not found in prototype chain
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "NAMESPACE_RULE" with the proper type
+PASS CSSGroupingRule interface: existence and properties of interface object
+PASS CSSGroupingRule interface object length
+PASS CSSGroupingRule interface object name
+PASS CSSGroupingRule interface: existence and properties of interface prototype object
+PASS CSSGroupingRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSGroupingRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSGroupingRule interface: attribute cssRules
+FAIL CSSGroupingRule interface: operation insertRule(CSSOMString, optional unsigned long) assert_equals: property has wrong .length expected 1 but got 2
+PASS CSSGroupingRule interface: operation deleteRule(unsigned long)
+FAIL CSSPageRule interface: existence and properties of interface object assert_equals: prototype of CSSPageRule is not CSSGroupingRule expected function "function CSSGroupingRule() { [native code] }" but got function "function CSSRule() { [native code] }"
+PASS CSSPageRule interface object length
+PASS CSSPageRule interface object name
+FAIL CSSPageRule interface: existence and properties of interface prototype object assert_equals: prototype of CSSPageRule.prototype is not CSSGroupingRule.prototype expected object "[object CSSGroupingRule]" but got object "[object CSSRule]"
+PASS CSSPageRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSPageRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSPageRule interface: attribute selectorText
+PASS CSSPageRule interface: attribute style
+PASS CSSPageRule must be primary interface of sheet.cssRules[2]
+PASS Stringification of sheet.cssRules[2]
+PASS CSSPageRule interface: sheet.cssRules[2] must inherit property "selectorText" with the proper type
+PASS CSSPageRule interface: sheet.cssRules[2] must inherit property "style" with the proper type
+FAIL CSSGroupingRule interface: sheet.cssRules[2] must inherit property "cssRules" with the proper type assert_inherits: property "cssRules" not found in prototype chain
+FAIL CSSGroupingRule interface: sheet.cssRules[2] must inherit property "insertRule(CSSOMString, optional unsigned long)" with the proper type assert_inherits: property "insertRule" not found in prototype chain
+FAIL CSSGroupingRule interface: calling insertRule(CSSOMString, optional unsigned long) on sheet.cssRules[2] with too few arguments must throw TypeError assert_inherits: property "insertRule" not found in prototype chain
+FAIL CSSGroupingRule interface: sheet.cssRules[2] must inherit property "deleteRule(unsigned long)" with the proper type assert_inherits: property "deleteRule" not found in prototype chain
+FAIL CSSGroupingRule interface: calling deleteRule(unsigned long) on sheet.cssRules[2] with too few arguments must throw TypeError assert_inherits: property "deleteRule" not found in prototype chain
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "cssText" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "parentRule" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "parentStyleSheet" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "type" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "STYLE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "CHARSET_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "IMPORT_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "MEDIA_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "FONT_FACE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "PAGE_RULE" with the proper type
+FAIL CSSRule interface: sheet.cssRules[2] must inherit property "MARGIN_RULE" with the proper type assert_inherits: property "MARGIN_RULE" not found in prototype chain
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "NAMESPACE_RULE" with the proper type
+FAIL CSSMarginRule interface: existence and properties of interface object assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface object length assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface object name assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface: attribute name assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface: attribute style assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule must be primary interface of sheet.cssRules[2].cssRules[0] assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL Stringification of sheet.cssRules[2].cssRules[0] assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSMarginRule interface: sheet.cssRules[2].cssRules[0] must inherit property "name" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSMarginRule interface: sheet.cssRules[2].cssRules[0] must inherit property "style" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "cssText" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "parentRule" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "parentStyleSheet" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "type" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "STYLE_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "CHARSET_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "IMPORT_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "MEDIA_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "FONT_FACE_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "PAGE_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "MARGIN_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "NAMESPACE_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+PASS CSSNamespaceRule interface: existence and properties of interface object
+PASS CSSNamespaceRule interface object length
+PASS CSSNamespaceRule interface object name
+PASS CSSNamespaceRule interface: existence and properties of interface prototype object
+PASS CSSNamespaceRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSNamespaceRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSNamespaceRule interface: attribute namespaceURI
+PASS CSSNamespaceRule interface: attribute prefix
+PASS CSSNamespaceRule must be primary interface of sheet.cssRules[1]
+PASS Stringification of sheet.cssRules[1]
+PASS CSSNamespaceRule interface: sheet.cssRules[1] must inherit property "namespaceURI" with the proper type
+PASS CSSNamespaceRule interface: sheet.cssRules[1] must inherit property "prefix" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "cssText" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "parentRule" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "parentStyleSheet" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "type" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "STYLE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "CHARSET_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "IMPORT_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "MEDIA_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "FONT_FACE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "PAGE_RULE" with the proper type
+FAIL CSSRule interface: sheet.cssRules[1] must inherit property "MARGIN_RULE" with the proper type assert_inherits: property "MARGIN_RULE" not found in prototype chain
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "NAMESPACE_RULE" with the proper type
+PASS CSSStyleDeclaration interface: existence and properties of interface object
+PASS CSSStyleDeclaration interface object length
+PASS CSSStyleDeclaration interface object name
+PASS CSSStyleDeclaration interface: existence and properties of interface prototype object
+PASS CSSStyleDeclaration interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSStyleDeclaration interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSStyleDeclaration interface: attribute cssText
+PASS CSSStyleDeclaration interface: attribute length
+PASS CSSStyleDeclaration interface: operation item(unsigned long)
+PASS CSSStyleDeclaration interface: operation getPropertyValue(CSSOMString)
+PASS CSSStyleDeclaration interface: operation getPropertyPriority(CSSOMString)
+PASS CSSStyleDeclaration interface: operation setProperty(CSSOMString, CSSOMString, optional CSSOMString)
+PASS CSSStyleDeclaration interface: operation removeProperty(CSSOMString)
+PASS CSSStyleDeclaration interface: attribute parentRule
+PASS CSSStyleDeclaration interface: attribute cssFloat
+PASS CSSStyleDeclaration must be primary interface of sheet.cssRules[4].style
+PASS Stringification of sheet.cssRules[4].style
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "cssText" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "length" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "item(unsigned long)" with the proper type
+PASS CSSStyleDeclaration interface: calling item(unsigned long) on sheet.cssRules[4].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "getPropertyValue(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on sheet.cssRules[4].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "getPropertyPriority(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on sheet.cssRules[4].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "setProperty(CSSOMString, CSSOMString, optional CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, optional CSSOMString) on sheet.cssRules[4].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "removeProperty(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on sheet.cssRules[4].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "parentRule" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "cssFloat" with the proper type
+PASS CSSStyleDeclaration must be primary interface of sheet.cssRules[2].style
+PASS Stringification of sheet.cssRules[2].style
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "cssText" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "length" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "item(unsigned long)" with the proper type
+PASS CSSStyleDeclaration interface: calling item(unsigned long) on sheet.cssRules[2].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "getPropertyValue(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on sheet.cssRules[2].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "getPropertyPriority(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on sheet.cssRules[2].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "setProperty(CSSOMString, CSSOMString, optional CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, optional CSSOMString) on sheet.cssRules[2].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "removeProperty(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on sheet.cssRules[2].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "parentRule" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "cssFloat" with the proper type
+FAIL CSSStyleDeclaration must be primary interface of sheet.cssRules[2].cssRules[0].style assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL Stringification of sheet.cssRules[2].cssRules[0].style assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "cssText" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "length" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "item(unsigned long)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: calling item(unsigned long) on sheet.cssRules[2].cssRules[0].style with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "getPropertyValue(CSSOMString)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on sheet.cssRules[2].cssRules[0].style with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "getPropertyPriority(CSSOMString)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on sheet.cssRules[2].cssRules[0].style with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "setProperty(CSSOMString, CSSOMString, optional CSSOMString)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, optional CSSOMString) on sheet.cssRules[2].cssRules[0].style with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "removeProperty(CSSOMString)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on sheet.cssRules[2].cssRules[0].style with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "parentRule" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "cssFloat" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+PASS CSSStyleDeclaration must be primary interface of style_element.style
+PASS Stringification of style_element.style
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "cssText" with the proper type
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "length" with the proper type
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "item(unsigned long)" with the proper type
+PASS CSSStyleDeclaration interface: calling item(unsigned long) on style_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "getPropertyValue(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on style_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "getPropertyPriority(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on style_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "setProperty(CSSOMString, CSSOMString, optional CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, optional CSSOMString) on style_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "removeProperty(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on style_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "parentRule" with the proper type
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "cssFloat" with the proper type
+PASS CSSStyleDeclaration must be primary interface of svg_element.style
+PASS Stringification of svg_element.style
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "cssText" with the proper type
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "length" with the proper type
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "item(unsigned long)" with the proper type
+PASS CSSStyleDeclaration interface: calling item(unsigned long) on svg_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "getPropertyValue(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on svg_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "getPropertyPriority(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on svg_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "setProperty(CSSOMString, CSSOMString, optional CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, optional CSSOMString) on svg_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "removeProperty(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on svg_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "parentRule" with the proper type
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "cssFloat" with the proper type
+PASS CSSStyleDeclaration must be primary interface of getComputedStyle(svg_element)
+PASS Stringification of getComputedStyle(svg_element)
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "cssText" with the proper type
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "length" with the proper type
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "item(unsigned long)" with the proper type
+PASS CSSStyleDeclaration interface: calling item(unsigned long) on getComputedStyle(svg_element) with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "getPropertyValue(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on getComputedStyle(svg_element) with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "getPropertyPriority(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on getComputedStyle(svg_element) with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "setProperty(CSSOMString, CSSOMString, optional CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, optional CSSOMString) on getComputedStyle(svg_element) with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "removeProperty(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on getComputedStyle(svg_element) with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "parentRule" with the proper type
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "cssFloat" with the proper type
+PASS CSS namespace: extended attributes
+PASS CSS namespace: property descriptor
+PASS CSS namespace: [[Extensible]] is true
+PASS CSS namespace: [[Prototype]] is Object.prototype
+PASS CSS namespace: typeof is "object"
+PASS CSS namespace: operation escape(CSSOMString)
+PASS SVGElement interface: attribute style
+PASS SVGElement interface: svg_element must inherit property "style" with the proper type
+PASS SVGStyleElement interface: attribute sheet
+PASS HTMLElement interface: attribute style
+PASS HTMLElement interface: style_element must inherit property "style" with the proper type
+PASS HTMLElement interface: document.createElement("unknownelement") must inherit property "style" with the proper type
+PASS HTMLLinkElement interface: attribute sheet
+PASS HTMLStyleElement interface: attribute sheet
+PASS Window interface: operation getComputedStyle(Element, optional CSSOMString?)
+PASS Window interface: window must inherit property "getComputedStyle(Element, optional CSSOMString?)" with the proper type
+PASS Window interface: calling getComputedStyle(Element, optional CSSOMString?) on window with too few arguments must throw TypeError
+PASS Document interface: attribute styleSheets
+PASS Document interface: document must inherit property "styleSheets" with the proper type
+PASS Document interface: new Document() must inherit property "styleSheets" with the proper type
+PASS ShadowRoot interface: attribute styleSheets
+PASS ProcessingInstruction interface: attribute sheet
+PASS ProcessingInstruction interface: xmlss_pi must inherit property "sheet" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt
new file mode 100644
index 0000000..bab3797
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/html/dom/idlharness.https_include=HTML._-expected.txt
@@ -0,0 +1,3742 @@
+This is a testharness.js-based test.
+Found 3738 tests; 3709 PASS, 29 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS idl_test validation
+PASS Partial interface Document: original interface defined
+PASS Partial interface Document: member names are unique
+PASS Partial interface mixin DocumentOrShadowRoot: original interface mixin defined
+PASS Partial interface mixin DocumentOrShadowRoot: member names are unique
+PASS Partial interface mixin NavigatorID: original interface mixin defined
+PASS Partial interface mixin NavigatorID: member names are unique
+PASS Partial interface HTMLAnchorElement: original interface defined
+PASS Partial interface HTMLAnchorElement: member names are unique
+PASS Partial interface HTMLAreaElement: original interface defined
+PASS Partial interface HTMLAreaElement: member names are unique
+PASS Partial interface HTMLBodyElement: original interface defined
+PASS Partial interface HTMLBodyElement: member names are unique
+PASS Partial interface HTMLBRElement: original interface defined
+PASS Partial interface HTMLBRElement: member names are unique
+PASS Partial interface HTMLTableCaptionElement: original interface defined
+PASS Partial interface HTMLTableCaptionElement: member names are unique
+PASS Partial interface HTMLTableColElement: original interface defined
+PASS Partial interface HTMLTableColElement: member names are unique
+PASS Partial interface HTMLDivElement: original interface defined
+PASS Partial interface HTMLDivElement: member names are unique
+PASS Partial interface HTMLDListElement: original interface defined
+PASS Partial interface HTMLDListElement: member names are unique
+PASS Partial interface HTMLEmbedElement: original interface defined
+PASS Partial interface HTMLEmbedElement: member names are unique
+PASS Partial interface HTMLHeadingElement: original interface defined
+PASS Partial interface HTMLHeadingElement: member names are unique
+PASS Partial interface HTMLHRElement: original interface defined
+PASS Partial interface HTMLHRElement: member names are unique
+PASS Partial interface HTMLHtmlElement: original interface defined
+PASS Partial interface HTMLHtmlElement: member names are unique
+PASS Partial interface HTMLIFrameElement: original interface defined
+PASS Partial interface HTMLIFrameElement: member names are unique
+PASS Partial interface HTMLImageElement: original interface defined
+PASS Partial interface HTMLImageElement: member names are unique
+PASS Partial interface HTMLInputElement: original interface defined
+PASS Partial interface HTMLInputElement: member names are unique
+PASS Partial interface HTMLLegendElement: original interface defined
+PASS Partial interface HTMLLegendElement: member names are unique
+PASS Partial interface HTMLLIElement: original interface defined
+PASS Partial interface HTMLLIElement: member names are unique
+PASS Partial interface HTMLLinkElement: original interface defined
+PASS Partial interface HTMLLinkElement: member names are unique
+PASS Partial interface HTMLMenuElement: original interface defined
+PASS Partial interface HTMLMenuElement: member names are unique
+PASS Partial interface HTMLMetaElement: original interface defined
+PASS Partial interface HTMLMetaElement: member names are unique
+PASS Partial interface HTMLObjectElement: original interface defined
+PASS Partial interface HTMLObjectElement: member names are unique
+PASS Partial interface HTMLOListElement: original interface defined
+PASS Partial interface HTMLOListElement: member names are unique
+PASS Partial interface HTMLParagraphElement: original interface defined
+PASS Partial interface HTMLParagraphElement: member names are unique
+PASS Partial interface HTMLParamElement: original interface defined
+PASS Partial interface HTMLParamElement: member names are unique
+PASS Partial interface HTMLPreElement: original interface defined
+PASS Partial interface HTMLPreElement: member names are unique
+PASS Partial interface HTMLStyleElement: original interface defined
+PASS Partial interface HTMLStyleElement: member names are unique
+PASS Partial interface HTMLScriptElement: original interface defined
+PASS Partial interface HTMLScriptElement: member names are unique
+PASS Partial interface HTMLTableElement: original interface defined
+PASS Partial interface HTMLTableElement: member names are unique
+PASS Partial interface HTMLTableSectionElement: original interface defined
+PASS Partial interface HTMLTableSectionElement: member names are unique
+PASS Partial interface HTMLTableCellElement: original interface defined
+PASS Partial interface HTMLTableCellElement: member names are unique
+PASS Partial interface HTMLTableRowElement: original interface defined
+PASS Partial interface HTMLTableRowElement: member names are unique
+PASS Partial interface HTMLUListElement: original interface defined
+PASS Partial interface HTMLUListElement: member names are unique
+PASS Partial interface Document[2]: original interface defined
+PASS Partial interface Document[2]: member names are unique
+PASS Partial interface Window: original interface defined
+PASS Partial interface Window: member names are unique
+PASS Partial interface Document[3]: member names are unique
+PASS Partial interface mixin DocumentOrShadowRoot[2]: member names are unique
+PASS Partial interface UIEvent: member names are unique
+PASS Document includes GlobalEventHandlers: member names are unique
+PASS Document includes DocumentAndElementEventHandlers: member names are unique
+PASS Document includes NonElementParentNode: member names are unique
+PASS Document includes DocumentOrShadowRoot: member names are unique
+PASS Document includes ParentNode: member names are unique
+PASS Document includes XPathEvaluatorBase: member names are unique
+PASS HTMLElement includes GlobalEventHandlers: member names are unique
+PASS HTMLElement includes DocumentAndElementEventHandlers: member names are unique
+PASS HTMLElement includes ElementContentEditable: member names are unique
+PASS HTMLElement includes HTMLOrSVGElement: member names are unique
+PASS HTMLElement includes ElementCSSInlineStyle: member names are unique
+PASS HTMLLinkElement includes LinkStyle: member names are unique
+PASS HTMLStyleElement includes LinkStyle: member names are unique
+PASS HTMLBodyElement includes WindowEventHandlers: member names are unique
+PASS HTMLAnchorElement includes HTMLHyperlinkElementUtils: member names are unique
+PASS HTMLAreaElement includes HTMLHyperlinkElementUtils: member names are unique
+PASS CanvasRenderingContext2D includes CanvasState: member names are unique
+PASS CanvasRenderingContext2D includes CanvasTransform: member names are unique
+PASS CanvasRenderingContext2D includes CanvasCompositing: member names are unique
+PASS CanvasRenderingContext2D includes CanvasImageSmoothing: member names are unique
+PASS CanvasRenderingContext2D includes CanvasFillStrokeStyles: member names are unique
+PASS CanvasRenderingContext2D includes CanvasShadowStyles: member names are unique
+PASS CanvasRenderingContext2D includes CanvasFilters: member names are unique
+PASS CanvasRenderingContext2D includes CanvasRect: member names are unique
+PASS CanvasRenderingContext2D includes CanvasDrawPath: member names are unique
+PASS CanvasRenderingContext2D includes CanvasUserInterface: member names are unique
+PASS CanvasRenderingContext2D includes CanvasText: member names are unique
+PASS CanvasRenderingContext2D includes CanvasDrawImage: member names are unique
+PASS CanvasRenderingContext2D includes CanvasImageData: member names are unique
+PASS CanvasRenderingContext2D includes CanvasPathDrawingStyles: member names are unique
+PASS CanvasRenderingContext2D includes CanvasTextDrawingStyles: member names are unique
+PASS CanvasRenderingContext2D includes CanvasPath: member names are unique
+PASS Path2D includes CanvasPath: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasState: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasTransform: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasCompositing: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasImageSmoothing: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasFillStrokeStyles: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasShadowStyles: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasFilters: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasRect: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasDrawPath: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasText: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasDrawImage: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasImageData: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasPathDrawingStyles: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasTextDrawingStyles: member names are unique
+PASS OffscreenCanvasRenderingContext2D includes CanvasPath: member names are unique
+PASS ElementInternals includes ARIAMixin: member names are unique
+PASS Window includes GlobalEventHandlers: member names are unique
+PASS Window includes WindowEventHandlers: member names are unique
+PASS Window includes WindowOrWorkerGlobalScope: member names are unique
+PASS Window includes AnimationFrameProvider: member names are unique
+PASS Window includes WindowSessionStorage: member names are unique
+PASS Window includes WindowLocalStorage: member names are unique
+PASS WorkerGlobalScope includes WindowOrWorkerGlobalScope: member names are unique
+PASS Navigator includes NavigatorID: member names are unique
+PASS Navigator includes NavigatorLanguage: member names are unique
+PASS Navigator includes NavigatorOnLine: member names are unique
+PASS Navigator includes NavigatorContentUtils: member names are unique
+PASS Navigator includes NavigatorCookies: member names are unique
+PASS Navigator includes NavigatorPlugins: member names are unique
+PASS Navigator includes NavigatorConcurrentHardware: member names are unique
+PASS DedicatedWorkerGlobalScope includes AnimationFrameProvider: member names are unique
+PASS Worker includes AbstractWorker: member names are unique
+PASS SharedWorker includes AbstractWorker: member names are unique
+PASS WorkerNavigator includes NavigatorID: member names are unique
+PASS WorkerNavigator includes NavigatorLanguage: member names are unique
+PASS WorkerNavigator includes NavigatorOnLine: member names are unique
+PASS WorkerNavigator includes NavigatorConcurrentHardware: member names are unique
+PASS HTMLFrameSetElement includes WindowEventHandlers: member names are unique
+PASS Element includes ARIAMixin: member names are unique
+PASS Element includes ParentNode: member names are unique
+PASS Element includes NonDocumentTypeChildNode: member names are unique
+PASS Element includes ChildNode: member names are unique
+PASS Element includes Slottable: member names are unique
+PASS SVGElement includes GlobalEventHandlers: member names are unique
+PASS SVGElement includes DocumentAndElementEventHandlers: member names are unique
+PASS SVGElement includes SVGElementInstance: member names are unique
+PASS SVGElement includes HTMLOrSVGElement: member names are unique
+PASS SVGElement includes ElementCSSInlineStyle: member names are unique
+PASS SVGGraphicsElement includes SVGTests: member names are unique
+PASS SVGSVGElement includes SVGFitToViewBox: member names are unique
+PASS SVGSVGElement includes WindowEventHandlers: member names are unique
+PASS SVGImageElement includes SVGURIReference: member names are unique
+PASS SVGScriptElement includes SVGURIReference: member names are unique
+PASS SVGAElement includes SVGURIReference: member names are unique
+FAIL SVGAElement includes HTMLHyperlinkElementUtils: member names are unique assert_true: member href is unique expected true got false
+PASS DocumentFragment includes NonElementParentNode: member names are unique
+PASS DocumentFragment includes ParentNode: member names are unique
+PASS ShadowRoot includes DocumentOrShadowRoot: member names are unique
+PASS HTMLAllCollection interface: existence and properties of interface object
+PASS HTMLAllCollection interface object length
+PASS HTMLAllCollection interface object name
+PASS HTMLAllCollection interface: existence and properties of interface prototype object
+PASS HTMLAllCollection interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLAllCollection interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLAllCollection interface: attribute length
+PASS HTMLAllCollection interface: operation namedItem(DOMString)
+PASS HTMLAllCollection interface: operation item(optional DOMString)
+PASS HTMLAllCollection must be primary interface of document.all
+PASS Stringification of document.all
+PASS HTMLAllCollection interface: document.all must inherit property "length" with the proper type
+PASS HTMLAllCollection interface: document.all must inherit property "namedItem(DOMString)" with the proper type
+PASS HTMLAllCollection interface: calling namedItem(DOMString) on document.all with too few arguments must throw TypeError
+PASS HTMLAllCollection interface: document.all must inherit property "item(optional DOMString)" with the proper type
+PASS HTMLAllCollection interface: calling item(optional DOMString) on document.all with too few arguments must throw TypeError
+PASS HTMLFormControlsCollection interface: existence and properties of interface object
+PASS HTMLFormControlsCollection interface object length
+PASS HTMLFormControlsCollection interface object name
+PASS HTMLFormControlsCollection interface: existence and properties of interface prototype object
+PASS HTMLFormControlsCollection interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFormControlsCollection interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFormControlsCollection interface: operation namedItem(DOMString)
+PASS HTMLFormControlsCollection must be primary interface of document.createElement("form").elements
+PASS Stringification of document.createElement("form").elements
+PASS HTMLFormControlsCollection interface: document.createElement("form").elements must inherit property "namedItem(DOMString)" with the proper type
+PASS HTMLFormControlsCollection interface: calling namedItem(DOMString) on document.createElement("form").elements with too few arguments must throw TypeError
+PASS HTMLOptionsCollection interface: existence and properties of interface object
+PASS HTMLOptionsCollection interface object length
+PASS HTMLOptionsCollection interface object name
+PASS HTMLOptionsCollection interface: existence and properties of interface prototype object
+PASS HTMLOptionsCollection interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLOptionsCollection interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLOptionsCollection interface: attribute length
+PASS HTMLOptionsCollection interface: operation add((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?)
+PASS HTMLOptionsCollection interface: operation remove(long)
+PASS HTMLOptionsCollection interface: attribute selectedIndex
+PASS HTMLOptionsCollection must be primary interface of document.createElement("select").options
+PASS Stringification of document.createElement("select").options
+PASS HTMLOptionsCollection interface: document.createElement("select").options must inherit property "length" with the proper type
+PASS HTMLOptionsCollection interface: document.createElement("select").options must inherit property "add((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?)" with the proper type
+PASS HTMLOptionsCollection interface: calling add((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?) on document.createElement("select").options with too few arguments must throw TypeError
+PASS HTMLOptionsCollection interface: document.createElement("select").options must inherit property "remove(long)" with the proper type
+PASS HTMLOptionsCollection interface: calling remove(long) on document.createElement("select").options with too few arguments must throw TypeError
+PASS HTMLOptionsCollection interface: document.createElement("select").options must inherit property "selectedIndex" with the proper type
+PASS HTMLElement interface: existence and properties of interface object
+PASS HTMLElement interface object length
+PASS HTMLElement interface object name
+PASS HTMLElement interface: existence and properties of interface prototype object
+PASS HTMLElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLElement interface: attribute title
+PASS HTMLElement interface: attribute lang
+PASS HTMLElement interface: attribute translate
+PASS HTMLElement interface: attribute dir
+PASS HTMLElement interface: attribute hidden
+PASS HTMLElement interface: operation click()
+PASS HTMLElement interface: attribute accessKey
+FAIL HTMLElement interface: attribute accessKeyLabel assert_true: The prototype object must have a property "accessKeyLabel" expected true got false
+PASS HTMLElement interface: attribute draggable
+PASS HTMLElement interface: attribute spellcheck
+PASS HTMLElement interface: attribute autocapitalize
+PASS HTMLElement interface: attribute innerText
+PASS HTMLElement interface: operation attachInternals()
+PASS HTMLElement interface: attribute onabort
+PASS HTMLElement interface: attribute onauxclick
+PASS HTMLElement interface: attribute onblur
+PASS HTMLElement interface: attribute oncancel
+PASS HTMLElement interface: attribute oncanplay
+PASS HTMLElement interface: attribute oncanplaythrough
+PASS HTMLElement interface: attribute onchange
+PASS HTMLElement interface: attribute onclick
+PASS HTMLElement interface: attribute onclose
+PASS HTMLElement interface: attribute oncontextmenu
+PASS HTMLElement interface: attribute oncuechange
+PASS HTMLElement interface: attribute ondblclick
+PASS HTMLElement interface: attribute ondrag
+PASS HTMLElement interface: attribute ondragend
+PASS HTMLElement interface: attribute ondragenter
+PASS HTMLElement interface: attribute ondragleave
+PASS HTMLElement interface: attribute ondragover
+PASS HTMLElement interface: attribute ondragstart
+PASS HTMLElement interface: attribute ondrop
+PASS HTMLElement interface: attribute ondurationchange
+PASS HTMLElement interface: attribute onemptied
+PASS HTMLElement interface: attribute onended
+PASS HTMLElement interface: attribute onerror
+PASS HTMLElement interface: attribute onfocus
+PASS HTMLElement interface: attribute onformdata
+PASS HTMLElement interface: attribute oninput
+PASS HTMLElement interface: attribute oninvalid
+PASS HTMLElement interface: attribute onkeydown
+PASS HTMLElement interface: attribute onkeypress
+PASS HTMLElement interface: attribute onkeyup
+PASS HTMLElement interface: attribute onload
+PASS HTMLElement interface: attribute onloadeddata
+PASS HTMLElement interface: attribute onloadedmetadata
+PASS HTMLElement interface: attribute onloadstart
+PASS HTMLElement interface: attribute onmousedown
+PASS HTMLElement interface: attribute onmouseenter
+PASS HTMLElement interface: attribute onmouseleave
+PASS HTMLElement interface: attribute onmousemove
+PASS HTMLElement interface: attribute onmouseout
+PASS HTMLElement interface: attribute onmouseover
+PASS HTMLElement interface: attribute onmouseup
+PASS HTMLElement interface: attribute onpause
+PASS HTMLElement interface: attribute onplay
+PASS HTMLElement interface: attribute onplaying
+PASS HTMLElement interface: attribute onprogress
+PASS HTMLElement interface: attribute onratechange
+PASS HTMLElement interface: attribute onreset
+PASS HTMLElement interface: attribute onresize
+PASS HTMLElement interface: attribute onscroll
+FAIL HTMLElement interface: attribute onsecuritypolicyviolation assert_true: The prototype object must have a property "onsecuritypolicyviolation" expected true got false
+PASS HTMLElement interface: attribute onseeked
+PASS HTMLElement interface: attribute onseeking
+PASS HTMLElement interface: attribute onselect
+FAIL HTMLElement interface: attribute onslotchange assert_true: The prototype object must have a property "onslotchange" expected true got false
+PASS HTMLElement interface: attribute onstalled
+PASS HTMLElement interface: attribute onsubmit
+PASS HTMLElement interface: attribute onsuspend
+PASS HTMLElement interface: attribute ontimeupdate
+PASS HTMLElement interface: attribute ontoggle
+PASS HTMLElement interface: attribute onvolumechange
+PASS HTMLElement interface: attribute onwaiting
+PASS HTMLElement interface: attribute onwebkitanimationend
+PASS HTMLElement interface: attribute onwebkitanimationiteration
+PASS HTMLElement interface: attribute onwebkitanimationstart
+PASS HTMLElement interface: attribute onwebkittransitionend
+PASS HTMLElement interface: attribute onwheel
+PASS HTMLElement interface: attribute oncopy
+PASS HTMLElement interface: attribute oncut
+PASS HTMLElement interface: attribute onpaste
+PASS HTMLElement interface: attribute contentEditable
+PASS HTMLElement interface: attribute enterKeyHint
+PASS HTMLElement interface: attribute isContentEditable
+PASS HTMLElement interface: attribute inputMode
+PASS HTMLElement interface: attribute dataset
+PASS HTMLElement interface: attribute nonce
+PASS HTMLElement interface: attribute autofocus
+PASS HTMLElement interface: attribute tabIndex
+PASS HTMLElement interface: operation focus(optional FocusOptions)
+PASS HTMLElement interface: operation blur()
+PASS HTMLElement must be primary interface of document.createElement("noscript")
+PASS Stringification of document.createElement("noscript")
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "title" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "lang" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "translate" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "dir" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "hidden" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "click()" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "accessKey" with the proper type
+FAIL HTMLElement interface: document.createElement("noscript") must inherit property "accessKeyLabel" with the proper type assert_inherits: property "accessKeyLabel" not found in prototype chain
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "draggable" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "spellcheck" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "autocapitalize" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "innerText" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "attachInternals()" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onabort" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onauxclick" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onblur" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncancel" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncanplay" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncanplaythrough" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onchange" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onclick" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onclose" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncontextmenu" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncuechange" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondblclick" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondrag" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragend" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragenter" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragleave" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragover" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondragstart" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondrop" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ondurationchange" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onemptied" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onended" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onerror" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onfocus" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onformdata" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oninput" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oninvalid" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onkeydown" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onkeypress" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onkeyup" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onload" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onloadeddata" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onloadedmetadata" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onloadstart" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmousedown" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseenter" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseleave" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmousemove" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseout" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseover" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onmouseup" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onpause" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onplay" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onplaying" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onprogress" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onratechange" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onreset" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onresize" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onscroll" with the proper type
+FAIL HTMLElement interface: document.createElement("noscript") must inherit property "onsecuritypolicyviolation" with the proper type assert_inherits: property "onsecuritypolicyviolation" not found in prototype chain
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onseeked" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onseeking" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onselect" with the proper type
+FAIL HTMLElement interface: document.createElement("noscript") must inherit property "onslotchange" with the proper type assert_inherits: property "onslotchange" not found in prototype chain
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onstalled" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onsubmit" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onsuspend" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ontimeupdate" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "ontoggle" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onvolumechange" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwaiting" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwebkitanimationend" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwebkitanimationiteration" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwebkitanimationstart" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwebkittransitionend" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onwheel" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncopy" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "oncut" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "onpaste" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "contentEditable" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "enterKeyHint" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "isContentEditable" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "inputMode" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "dataset" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "nonce" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "autofocus" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "tabIndex" with the proper type
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "focus(optional FocusOptions)" with the proper type
+PASS HTMLElement interface: calling focus(optional FocusOptions) on document.createElement("noscript") with too few arguments must throw TypeError
+PASS HTMLElement interface: document.createElement("noscript") must inherit property "blur()" with the proper type
+PASS HTMLUnknownElement interface: existence and properties of interface object
+PASS HTMLUnknownElement interface object length
+PASS HTMLUnknownElement interface object name
+PASS HTMLUnknownElement interface: existence and properties of interface prototype object
+PASS HTMLUnknownElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLUnknownElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLUnknownElement must be primary interface of document.createElement("bgsound")
+PASS Stringification of document.createElement("bgsound")
+PASS HTMLHtmlElement interface: existence and properties of interface object
+PASS HTMLHtmlElement interface object length
+PASS HTMLHtmlElement interface object name
+PASS HTMLHtmlElement interface: existence and properties of interface prototype object
+PASS HTMLHtmlElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLHtmlElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLHtmlElement interface: attribute version
+PASS HTMLHtmlElement must be primary interface of document.createElement("html")
+PASS Stringification of document.createElement("html")
+PASS HTMLHtmlElement interface: document.createElement("html") must inherit property "version" with the proper type
+PASS HTMLHeadElement interface: existence and properties of interface object
+PASS HTMLHeadElement interface object length
+PASS HTMLHeadElement interface object name
+PASS HTMLHeadElement interface: existence and properties of interface prototype object
+PASS HTMLHeadElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLHeadElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLHeadElement must be primary interface of document.createElement("head")
+PASS Stringification of document.createElement("head")
+PASS HTMLTitleElement interface: existence and properties of interface object
+PASS HTMLTitleElement interface object length
+PASS HTMLTitleElement interface object name
+PASS HTMLTitleElement interface: existence and properties of interface prototype object
+PASS HTMLTitleElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTitleElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTitleElement interface: attribute text
+PASS HTMLTitleElement must be primary interface of document.createElement("title")
+PASS Stringification of document.createElement("title")
+PASS HTMLTitleElement interface: document.createElement("title") must inherit property "text" with the proper type
+PASS HTMLBaseElement interface: existence and properties of interface object
+PASS HTMLBaseElement interface object length
+PASS HTMLBaseElement interface object name
+PASS HTMLBaseElement interface: existence and properties of interface prototype object
+PASS HTMLBaseElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLBaseElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLBaseElement interface: attribute href
+PASS HTMLBaseElement interface: attribute target
+PASS HTMLBaseElement must be primary interface of document.createElement("base")
+PASS Stringification of document.createElement("base")
+PASS HTMLBaseElement interface: document.createElement("base") must inherit property "href" with the proper type
+PASS HTMLBaseElement interface: document.createElement("base") must inherit property "target" with the proper type
+PASS HTMLLinkElement interface: existence and properties of interface object
+PASS HTMLLinkElement interface object length
+PASS HTMLLinkElement interface object name
+PASS HTMLLinkElement interface: existence and properties of interface prototype object
+PASS HTMLLinkElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLLinkElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLLinkElement interface: attribute href
+PASS HTMLLinkElement interface: attribute crossOrigin
+PASS HTMLLinkElement interface: attribute rel
+PASS HTMLLinkElement interface: attribute as
+PASS HTMLLinkElement interface: attribute relList
+PASS HTMLLinkElement interface: attribute media
+PASS HTMLLinkElement interface: attribute integrity
+PASS HTMLLinkElement interface: attribute hreflang
+PASS HTMLLinkElement interface: attribute type
+PASS HTMLLinkElement interface: attribute sizes
+PASS HTMLLinkElement interface: attribute imageSrcset
+PASS HTMLLinkElement interface: attribute imageSizes
+PASS HTMLLinkElement interface: attribute referrerPolicy
+PASS HTMLLinkElement interface: attribute disabled
+PASS HTMLLinkElement interface: attribute charset
+PASS HTMLLinkElement interface: attribute rev
+PASS HTMLLinkElement interface: attribute target
+PASS HTMLLinkElement must be primary interface of document.createElement("link")
+PASS Stringification of document.createElement("link")
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "href" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "crossOrigin" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "rel" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "as" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "relList" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "media" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "integrity" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "hreflang" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "type" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "sizes" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "imageSrcset" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "imageSizes" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "referrerPolicy" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "disabled" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "charset" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "rev" with the proper type
+PASS HTMLLinkElement interface: document.createElement("link") must inherit property "target" with the proper type
+PASS HTMLMetaElement interface: existence and properties of interface object
+PASS HTMLMetaElement interface object length
+PASS HTMLMetaElement interface object name
+PASS HTMLMetaElement interface: existence and properties of interface prototype object
+PASS HTMLMetaElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMetaElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMetaElement interface: attribute name
+PASS HTMLMetaElement interface: attribute httpEquiv
+PASS HTMLMetaElement interface: attribute content
+PASS HTMLMetaElement interface: attribute scheme
+PASS HTMLMetaElement must be primary interface of document.createElement("meta")
+PASS Stringification of document.createElement("meta")
+PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "name" with the proper type
+PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "httpEquiv" with the proper type
+PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "content" with the proper type
+PASS HTMLMetaElement interface: document.createElement("meta") must inherit property "scheme" with the proper type
+PASS HTMLStyleElement interface: existence and properties of interface object
+PASS HTMLStyleElement interface object length
+PASS HTMLStyleElement interface object name
+PASS HTMLStyleElement interface: existence and properties of interface prototype object
+PASS HTMLStyleElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLStyleElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLStyleElement interface: attribute media
+PASS HTMLStyleElement interface: attribute type
+PASS HTMLStyleElement must be primary interface of document.createElement("style")
+PASS Stringification of document.createElement("style")
+PASS HTMLStyleElement interface: document.createElement("style") must inherit property "media" with the proper type
+PASS HTMLStyleElement interface: document.createElement("style") must inherit property "type" with the proper type
+PASS HTMLBodyElement interface: existence and properties of interface object
+PASS HTMLBodyElement interface object length
+PASS HTMLBodyElement interface object name
+PASS HTMLBodyElement interface: existence and properties of interface prototype object
+PASS HTMLBodyElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLBodyElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLBodyElement interface: attribute text
+PASS HTMLBodyElement interface: attribute link
+PASS HTMLBodyElement interface: attribute vLink
+PASS HTMLBodyElement interface: attribute aLink
+PASS HTMLBodyElement interface: attribute bgColor
+PASS HTMLBodyElement interface: attribute background
+PASS HTMLBodyElement interface: attribute onafterprint
+PASS HTMLBodyElement interface: attribute onbeforeprint
+PASS HTMLBodyElement interface: attribute onbeforeunload
+PASS HTMLBodyElement interface: attribute onhashchange
+PASS HTMLBodyElement interface: attribute onlanguagechange
+PASS HTMLBodyElement interface: attribute onmessage
+PASS HTMLBodyElement interface: attribute onmessageerror
+PASS HTMLBodyElement interface: attribute onoffline
+PASS HTMLBodyElement interface: attribute ononline
+PASS HTMLBodyElement interface: attribute onpagehide
+PASS HTMLBodyElement interface: attribute onpageshow
+PASS HTMLBodyElement interface: attribute onpopstate
+PASS HTMLBodyElement interface: attribute onrejectionhandled
+PASS HTMLBodyElement interface: attribute onstorage
+PASS HTMLBodyElement interface: attribute onunhandledrejection
+PASS HTMLBodyElement interface: attribute onunload
+PASS HTMLBodyElement must be primary interface of document.createElement("body")
+PASS Stringification of document.createElement("body")
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "text" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "link" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "vLink" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "aLink" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "bgColor" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "background" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onafterprint" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onbeforeprint" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onbeforeunload" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onhashchange" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onlanguagechange" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onmessage" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onmessageerror" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onoffline" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "ononline" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onpagehide" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onpageshow" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onpopstate" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onrejectionhandled" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onstorage" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onunhandledrejection" with the proper type
+PASS HTMLBodyElement interface: document.createElement("body") must inherit property "onunload" with the proper type
+PASS HTMLHeadingElement interface: existence and properties of interface object
+PASS HTMLHeadingElement interface object length
+PASS HTMLHeadingElement interface object name
+PASS HTMLHeadingElement interface: existence and properties of interface prototype object
+PASS HTMLHeadingElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLHeadingElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLHeadingElement interface: attribute align
+PASS HTMLHeadingElement must be primary interface of document.createElement("h1")
+PASS Stringification of document.createElement("h1")
+PASS HTMLHeadingElement interface: document.createElement("h1") must inherit property "align" with the proper type
+PASS HTMLParagraphElement interface: existence and properties of interface object
+PASS HTMLParagraphElement interface object length
+PASS HTMLParagraphElement interface object name
+PASS HTMLParagraphElement interface: existence and properties of interface prototype object
+PASS HTMLParagraphElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLParagraphElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLParagraphElement interface: attribute align
+PASS HTMLParagraphElement must be primary interface of document.createElement("p")
+PASS Stringification of document.createElement("p")
+PASS HTMLParagraphElement interface: document.createElement("p") must inherit property "align" with the proper type
+PASS HTMLHRElement interface: existence and properties of interface object
+PASS HTMLHRElement interface object length
+PASS HTMLHRElement interface object name
+PASS HTMLHRElement interface: existence and properties of interface prototype object
+PASS HTMLHRElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLHRElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLHRElement interface: attribute align
+PASS HTMLHRElement interface: attribute color
+PASS HTMLHRElement interface: attribute noShade
+PASS HTMLHRElement interface: attribute size
+PASS HTMLHRElement interface: attribute width
+PASS HTMLHRElement must be primary interface of document.createElement("hr")
+PASS Stringification of document.createElement("hr")
+PASS HTMLHRElement interface: document.createElement("hr") must inherit property "align" with the proper type
+PASS HTMLHRElement interface: document.createElement("hr") must inherit property "color" with the proper type
+PASS HTMLHRElement interface: document.createElement("hr") must inherit property "noShade" with the proper type
+PASS HTMLHRElement interface: document.createElement("hr") must inherit property "size" with the proper type
+PASS HTMLHRElement interface: document.createElement("hr") must inherit property "width" with the proper type
+PASS HTMLPreElement interface: existence and properties of interface object
+PASS HTMLPreElement interface object length
+PASS HTMLPreElement interface object name
+PASS HTMLPreElement interface: existence and properties of interface prototype object
+PASS HTMLPreElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLPreElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLPreElement interface: attribute width
+PASS HTMLPreElement must be primary interface of document.createElement("pre")
+PASS Stringification of document.createElement("pre")
+PASS HTMLPreElement interface: document.createElement("pre") must inherit property "width" with the proper type
+PASS HTMLPreElement must be primary interface of document.createElement("listing")
+PASS Stringification of document.createElement("listing")
+PASS HTMLPreElement interface: document.createElement("listing") must inherit property "width" with the proper type
+PASS HTMLPreElement must be primary interface of document.createElement("xmp")
+PASS Stringification of document.createElement("xmp")
+PASS HTMLPreElement interface: document.createElement("xmp") must inherit property "width" with the proper type
+PASS HTMLQuoteElement interface: existence and properties of interface object
+PASS HTMLQuoteElement interface object length
+PASS HTMLQuoteElement interface object name
+PASS HTMLQuoteElement interface: existence and properties of interface prototype object
+PASS HTMLQuoteElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLQuoteElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLQuoteElement interface: attribute cite
+PASS HTMLQuoteElement must be primary interface of document.createElement("blockquote")
+PASS Stringification of document.createElement("blockquote")
+PASS HTMLQuoteElement interface: document.createElement("blockquote") must inherit property "cite" with the proper type
+PASS HTMLQuoteElement must be primary interface of document.createElement("q")
+PASS Stringification of document.createElement("q")
+PASS HTMLQuoteElement interface: document.createElement("q") must inherit property "cite" with the proper type
+PASS HTMLOListElement interface: existence and properties of interface object
+PASS HTMLOListElement interface object length
+PASS HTMLOListElement interface object name
+PASS HTMLOListElement interface: existence and properties of interface prototype object
+PASS HTMLOListElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLOListElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLOListElement interface: attribute reversed
+PASS HTMLOListElement interface: attribute start
+PASS HTMLOListElement interface: attribute type
+PASS HTMLOListElement interface: attribute compact
+PASS HTMLUListElement interface: existence and properties of interface object
+PASS HTMLUListElement interface object length
+PASS HTMLUListElement interface object name
+PASS HTMLUListElement interface: existence and properties of interface prototype object
+PASS HTMLUListElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLUListElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLUListElement interface: attribute compact
+PASS HTMLUListElement interface: attribute type
+PASS HTMLMenuElement interface: existence and properties of interface object
+PASS HTMLMenuElement interface object length
+PASS HTMLMenuElement interface object name
+PASS HTMLMenuElement interface: existence and properties of interface prototype object
+PASS HTMLMenuElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMenuElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMenuElement interface: attribute compact
+PASS HTMLMenuElement must be primary interface of document.createElement("menu")
+PASS Stringification of document.createElement("menu")
+PASS HTMLMenuElement interface: document.createElement("menu") must inherit property "compact" with the proper type
+PASS HTMLLIElement interface: existence and properties of interface object
+PASS HTMLLIElement interface object length
+PASS HTMLLIElement interface object name
+PASS HTMLLIElement interface: existence and properties of interface prototype object
+PASS HTMLLIElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLLIElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLLIElement interface: attribute value
+PASS HTMLLIElement interface: attribute type
+PASS HTMLLIElement must be primary interface of document.createElement("li")
+PASS Stringification of document.createElement("li")
+PASS HTMLLIElement interface: document.createElement("li") must inherit property "value" with the proper type
+PASS HTMLLIElement interface: document.createElement("li") must inherit property "type" with the proper type
+PASS HTMLDListElement interface: existence and properties of interface object
+PASS HTMLDListElement interface object length
+PASS HTMLDListElement interface object name
+PASS HTMLDListElement interface: existence and properties of interface prototype object
+PASS HTMLDListElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDListElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDListElement interface: attribute compact
+PASS HTMLDivElement interface: existence and properties of interface object
+PASS HTMLDivElement interface object length
+PASS HTMLDivElement interface object name
+PASS HTMLDivElement interface: existence and properties of interface prototype object
+PASS HTMLDivElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDivElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDivElement interface: attribute align
+PASS HTMLDivElement must be primary interface of document.createElement("div")
+PASS Stringification of document.createElement("div")
+PASS HTMLDivElement interface: document.createElement("div") must inherit property "align" with the proper type
+PASS HTMLAnchorElement interface: existence and properties of interface object
+PASS HTMLAnchorElement interface object length
+PASS HTMLAnchorElement interface object name
+PASS HTMLAnchorElement interface: existence and properties of interface prototype object
+PASS HTMLAnchorElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLAnchorElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLAnchorElement interface: attribute target
+PASS HTMLAnchorElement interface: attribute download
+PASS HTMLAnchorElement interface: attribute ping
+PASS HTMLAnchorElement interface: attribute rel
+PASS HTMLAnchorElement interface: attribute relList
+PASS HTMLAnchorElement interface: attribute hreflang
+PASS HTMLAnchorElement interface: attribute type
+PASS HTMLAnchorElement interface: attribute text
+PASS HTMLAnchorElement interface: attribute referrerPolicy
+PASS HTMLAnchorElement interface: attribute coords
+PASS HTMLAnchorElement interface: attribute charset
+PASS HTMLAnchorElement interface: attribute name
+PASS HTMLAnchorElement interface: attribute rev
+PASS HTMLAnchorElement interface: attribute shape
+PASS HTMLAnchorElement interface: attribute href
+PASS HTMLAnchorElement interface: stringifier
+PASS HTMLAnchorElement interface: attribute origin
+PASS HTMLAnchorElement interface: attribute protocol
+PASS HTMLAnchorElement interface: attribute username
+PASS HTMLAnchorElement interface: attribute password
+PASS HTMLAnchorElement interface: attribute host
+PASS HTMLAnchorElement interface: attribute hostname
+PASS HTMLAnchorElement interface: attribute port
+PASS HTMLAnchorElement interface: attribute pathname
+PASS HTMLAnchorElement interface: attribute search
+PASS HTMLAnchorElement interface: attribute hash
+PASS HTMLAnchorElement must be primary interface of document.createElement("a")
+PASS Stringification of document.createElement("a")
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "target" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "download" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "ping" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "rel" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "relList" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "hreflang" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "type" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "text" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "referrerPolicy" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "coords" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "charset" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "name" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "rev" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "shape" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "href" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "origin" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "protocol" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "username" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "password" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "host" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "hostname" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "port" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "pathname" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "search" with the proper type
+PASS HTMLAnchorElement interface: document.createElement("a") must inherit property "hash" with the proper type
+PASS HTMLDataElement interface: existence and properties of interface object
+PASS HTMLDataElement interface object length
+PASS HTMLDataElement interface object name
+PASS HTMLDataElement interface: existence and properties of interface prototype object
+PASS HTMLDataElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDataElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDataElement interface: attribute value
+PASS HTMLDataElement must be primary interface of document.createElement("data")
+PASS Stringification of document.createElement("data")
+PASS HTMLDataElement interface: document.createElement("data") must inherit property "value" with the proper type
+PASS HTMLTimeElement interface: existence and properties of interface object
+PASS HTMLTimeElement interface object length
+PASS HTMLTimeElement interface object name
+PASS HTMLTimeElement interface: existence and properties of interface prototype object
+PASS HTMLTimeElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTimeElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTimeElement interface: attribute dateTime
+PASS HTMLTimeElement must be primary interface of document.createElement("time")
+PASS Stringification of document.createElement("time")
+PASS HTMLTimeElement interface: document.createElement("time") must inherit property "dateTime" with the proper type
+PASS HTMLSpanElement interface: existence and properties of interface object
+PASS HTMLSpanElement interface object length
+PASS HTMLSpanElement interface object name
+PASS HTMLSpanElement interface: existence and properties of interface prototype object
+PASS HTMLSpanElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLSpanElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLSpanElement must be primary interface of document.createElement("span")
+PASS Stringification of document.createElement("span")
+PASS HTMLBRElement interface: existence and properties of interface object
+PASS HTMLBRElement interface object length
+PASS HTMLBRElement interface object name
+PASS HTMLBRElement interface: existence and properties of interface prototype object
+PASS HTMLBRElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLBRElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLBRElement interface: attribute clear
+PASS HTMLBRElement must be primary interface of document.createElement("br")
+PASS Stringification of document.createElement("br")
+PASS HTMLBRElement interface: document.createElement("br") must inherit property "clear" with the proper type
+PASS HTMLModElement interface: existence and properties of interface object
+PASS HTMLModElement interface object length
+PASS HTMLModElement interface object name
+PASS HTMLModElement interface: existence and properties of interface prototype object
+PASS HTMLModElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLModElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLModElement interface: attribute cite
+PASS HTMLModElement interface: attribute dateTime
+PASS HTMLModElement must be primary interface of document.createElement("ins")
+PASS Stringification of document.createElement("ins")
+PASS HTMLModElement interface: document.createElement("ins") must inherit property "cite" with the proper type
+PASS HTMLModElement interface: document.createElement("ins") must inherit property "dateTime" with the proper type
+PASS HTMLModElement must be primary interface of document.createElement("del")
+PASS Stringification of document.createElement("del")
+PASS HTMLModElement interface: document.createElement("del") must inherit property "cite" with the proper type
+PASS HTMLModElement interface: document.createElement("del") must inherit property "dateTime" with the proper type
+PASS HTMLPictureElement interface: existence and properties of interface object
+PASS HTMLPictureElement interface object length
+PASS HTMLPictureElement interface object name
+PASS HTMLPictureElement interface: existence and properties of interface prototype object
+PASS HTMLPictureElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLPictureElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLPictureElement must be primary interface of document.createElement("picture")
+PASS Stringification of document.createElement("picture")
+PASS HTMLSourceElement interface: existence and properties of interface object
+PASS HTMLSourceElement interface object length
+PASS HTMLSourceElement interface object name
+PASS HTMLSourceElement interface: existence and properties of interface prototype object
+PASS HTMLSourceElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLSourceElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLSourceElement interface: attribute src
+PASS HTMLSourceElement interface: attribute type
+PASS HTMLSourceElement interface: attribute srcset
+PASS HTMLSourceElement interface: attribute sizes
+PASS HTMLSourceElement interface: attribute media
+PASS HTMLSourceElement must be primary interface of document.createElement("source")
+PASS Stringification of document.createElement("source")
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "src" with the proper type
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "type" with the proper type
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "srcset" with the proper type
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "sizes" with the proper type
+PASS HTMLSourceElement interface: document.createElement("source") must inherit property "media" with the proper type
+PASS HTMLImageElement interface: existence and properties of interface object
+PASS HTMLImageElement interface object length
+PASS HTMLImageElement interface object name
+PASS HTMLImageElement interface: named constructor
+PASS HTMLImageElement interface: named constructor object
+PASS HTMLImageElement interface: named constructor prototype property
+PASS HTMLImageElement interface: named constructor name
+PASS HTMLImageElement interface: named constructor length
+PASS HTMLImageElement interface: named constructor without 'new'
+PASS HTMLImageElement interface: existence and properties of interface prototype object
+PASS HTMLImageElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLImageElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLImageElement interface: attribute alt
+PASS HTMLImageElement interface: attribute src
+PASS HTMLImageElement interface: attribute srcset
+PASS HTMLImageElement interface: attribute sizes
+PASS HTMLImageElement interface: attribute crossOrigin
+PASS HTMLImageElement interface: attribute useMap
+PASS HTMLImageElement interface: attribute isMap
+PASS HTMLImageElement interface: attribute width
+PASS HTMLImageElement interface: attribute height
+PASS HTMLImageElement interface: attribute naturalWidth
+PASS HTMLImageElement interface: attribute naturalHeight
+PASS HTMLImageElement interface: attribute complete
+PASS HTMLImageElement interface: attribute currentSrc
+PASS HTMLImageElement interface: attribute referrerPolicy
+PASS HTMLImageElement interface: attribute decoding
+PASS HTMLImageElement interface: attribute loading
+PASS HTMLImageElement interface: operation decode()
+PASS HTMLImageElement interface: attribute name
+PASS HTMLImageElement interface: attribute lowsrc
+PASS HTMLImageElement interface: attribute align
+PASS HTMLImageElement interface: attribute hspace
+PASS HTMLImageElement interface: attribute vspace
+PASS HTMLImageElement interface: attribute longDesc
+PASS HTMLImageElement interface: attribute border
+PASS HTMLImageElement must be primary interface of document.createElement("img")
+PASS Stringification of document.createElement("img")
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "alt" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "src" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "srcset" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "sizes" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "crossOrigin" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "useMap" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "isMap" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "width" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "height" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "naturalWidth" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "naturalHeight" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "complete" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "currentSrc" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "referrerPolicy" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "decoding" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "loading" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "decode()" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "name" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "lowsrc" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "align" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "hspace" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "vspace" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "longDesc" with the proper type
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "border" with the proper type
+PASS HTMLImageElement must be primary interface of new Image()
+PASS Stringification of new Image()
+PASS HTMLImageElement interface: new Image() must inherit property "alt" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "src" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "srcset" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "sizes" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "crossOrigin" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "useMap" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "isMap" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "width" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "height" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "naturalWidth" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "naturalHeight" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "complete" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "currentSrc" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "referrerPolicy" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "decoding" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "loading" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "decode()" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "name" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "lowsrc" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "align" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "hspace" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "vspace" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "longDesc" with the proper type
+PASS HTMLImageElement interface: new Image() must inherit property "border" with the proper type
+PASS HTMLIFrameElement interface: existence and properties of interface object
+PASS HTMLIFrameElement interface object length
+PASS HTMLIFrameElement interface object name
+PASS HTMLIFrameElement interface: existence and properties of interface prototype object
+PASS HTMLIFrameElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLIFrameElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLIFrameElement interface: attribute src
+PASS HTMLIFrameElement interface: attribute srcdoc
+PASS HTMLIFrameElement interface: attribute name
+PASS HTMLIFrameElement interface: attribute sandbox
+PASS HTMLIFrameElement interface: attribute allow
+PASS HTMLIFrameElement interface: attribute allowFullscreen
+PASS HTMLIFrameElement interface: attribute width
+PASS HTMLIFrameElement interface: attribute height
+PASS HTMLIFrameElement interface: attribute referrerPolicy
+PASS HTMLIFrameElement interface: attribute loading
+PASS HTMLIFrameElement interface: attribute contentDocument
+PASS HTMLIFrameElement interface: attribute contentWindow
+PASS HTMLIFrameElement interface: operation getSVGDocument()
+PASS HTMLIFrameElement interface: attribute align
+PASS HTMLIFrameElement interface: attribute scrolling
+PASS HTMLIFrameElement interface: attribute frameBorder
+PASS HTMLIFrameElement interface: attribute longDesc
+PASS HTMLIFrameElement interface: attribute marginHeight
+PASS HTMLIFrameElement interface: attribute marginWidth
+PASS HTMLEmbedElement interface: existence and properties of interface object
+PASS HTMLEmbedElement interface object length
+PASS HTMLEmbedElement interface object name
+PASS HTMLEmbedElement interface: existence and properties of interface prototype object
+PASS HTMLEmbedElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLEmbedElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLEmbedElement interface: attribute src
+PASS HTMLEmbedElement interface: attribute type
+PASS HTMLEmbedElement interface: attribute width
+PASS HTMLEmbedElement interface: attribute height
+PASS HTMLEmbedElement interface: operation getSVGDocument()
+PASS HTMLEmbedElement interface: attribute align
+PASS HTMLEmbedElement interface: attribute name
+PASS HTMLEmbedElement must be primary interface of document.createElement("embed")
+PASS Stringification of document.createElement("embed")
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "src" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "type" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "width" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "height" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "getSVGDocument()" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "align" with the proper type
+PASS HTMLEmbedElement interface: document.createElement("embed") must inherit property "name" with the proper type
+PASS HTMLObjectElement interface: existence and properties of interface object
+PASS HTMLObjectElement interface object length
+PASS HTMLObjectElement interface object name
+PASS HTMLObjectElement interface: existence and properties of interface prototype object
+PASS HTMLObjectElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLObjectElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLObjectElement interface: attribute data
+PASS HTMLObjectElement interface: attribute type
+PASS HTMLObjectElement interface: attribute name
+PASS HTMLObjectElement interface: attribute useMap
+PASS HTMLObjectElement interface: attribute form
+PASS HTMLObjectElement interface: attribute width
+PASS HTMLObjectElement interface: attribute height
+PASS HTMLObjectElement interface: attribute contentDocument
+PASS HTMLObjectElement interface: attribute contentWindow
+PASS HTMLObjectElement interface: operation getSVGDocument()
+PASS HTMLObjectElement interface: attribute willValidate
+PASS HTMLObjectElement interface: attribute validity
+PASS HTMLObjectElement interface: attribute validationMessage
+PASS HTMLObjectElement interface: operation checkValidity()
+PASS HTMLObjectElement interface: operation reportValidity()
+PASS HTMLObjectElement interface: operation setCustomValidity(DOMString)
+PASS HTMLObjectElement interface: attribute align
+PASS HTMLObjectElement interface: attribute archive
+PASS HTMLObjectElement interface: attribute code
+PASS HTMLObjectElement interface: attribute declare
+PASS HTMLObjectElement interface: attribute hspace
+PASS HTMLObjectElement interface: attribute standby
+PASS HTMLObjectElement interface: attribute vspace
+PASS HTMLObjectElement interface: attribute codeBase
+PASS HTMLObjectElement interface: attribute codeType
+PASS HTMLObjectElement interface: attribute border
+PASS HTMLObjectElement must be primary interface of document.createElement("object")
+PASS Stringification of document.createElement("object")
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "data" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "type" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "name" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "useMap" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "form" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "width" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "height" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "contentDocument" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "contentWindow" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "getSVGDocument()" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "willValidate" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "validity" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "validationMessage" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "checkValidity()" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "reportValidity()" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLObjectElement interface: calling setCustomValidity(DOMString) on document.createElement("object") with too few arguments must throw TypeError
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "align" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "archive" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "code" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "declare" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "hspace" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "standby" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "vspace" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "codeBase" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "codeType" with the proper type
+PASS HTMLObjectElement interface: document.createElement("object") must inherit property "border" with the proper type
+PASS HTMLParamElement interface: existence and properties of interface object
+PASS HTMLParamElement interface object length
+PASS HTMLParamElement interface object name
+PASS HTMLParamElement interface: existence and properties of interface prototype object
+PASS HTMLParamElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLParamElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLParamElement interface: attribute name
+PASS HTMLParamElement interface: attribute value
+PASS HTMLParamElement interface: attribute type
+PASS HTMLParamElement interface: attribute valueType
+PASS HTMLParamElement must be primary interface of document.createElement("param")
+PASS Stringification of document.createElement("param")
+PASS HTMLParamElement interface: document.createElement("param") must inherit property "name" with the proper type
+PASS HTMLParamElement interface: document.createElement("param") must inherit property "value" with the proper type
+PASS HTMLParamElement interface: document.createElement("param") must inherit property "type" with the proper type
+PASS HTMLParamElement interface: document.createElement("param") must inherit property "valueType" with the proper type
+PASS HTMLVideoElement interface: existence and properties of interface object
+PASS HTMLVideoElement interface object length
+PASS HTMLVideoElement interface object name
+PASS HTMLVideoElement interface: existence and properties of interface prototype object
+PASS HTMLVideoElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLVideoElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLVideoElement interface: attribute width
+PASS HTMLVideoElement interface: attribute height
+PASS HTMLVideoElement interface: attribute videoWidth
+PASS HTMLVideoElement interface: attribute videoHeight
+PASS HTMLVideoElement interface: attribute poster
+PASS HTMLVideoElement interface: attribute playsInline
+PASS HTMLVideoElement must be primary interface of document.createElement("video")
+PASS Stringification of document.createElement("video")
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "width" with the proper type
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "height" with the proper type
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "videoWidth" with the proper type
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "videoHeight" with the proper type
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "poster" with the proper type
+PASS HTMLVideoElement interface: document.createElement("video") must inherit property "playsInline" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "error" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "src" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "srcObject" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "currentSrc" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "crossOrigin" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "NETWORK_EMPTY" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "NETWORK_IDLE" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "NETWORK_LOADING" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "NETWORK_NO_SOURCE" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "networkState" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "preload" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "buffered" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "load()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "canPlayType(DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling canPlayType(DOMString) on document.createElement("video") with too few arguments must throw TypeError
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_NOTHING" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_METADATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_CURRENT_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_FUTURE_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "HAVE_ENOUGH_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "readyState" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "seeking" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "currentTime" with the proper type
+FAIL HTMLMediaElement interface: document.createElement("video") must inherit property "fastSeek(double)" with the proper type assert_inherits: property "fastSeek" not found in prototype chain
+FAIL HTMLMediaElement interface: calling fastSeek(double) on document.createElement("video") with too few arguments must throw TypeError assert_inherits: property "fastSeek" not found in prototype chain
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "duration" with the proper type
+FAIL HTMLMediaElement interface: document.createElement("video") must inherit property "getStartDate()" with the proper type assert_inherits: property "getStartDate" not found in prototype chain
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "paused" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "defaultPlaybackRate" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "playbackRate" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "preservesPitch" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "played" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "seekable" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "ended" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "autoplay" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "loop" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "play()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "pause()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "controls" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "volume" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "muted" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "defaultMuted" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "audioTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "videoTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "textTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("video") must inherit property "addTextTrack(TextTrackKind, optional DOMString, optional DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind, optional DOMString, optional DOMString) on document.createElement("video") with too few arguments must throw TypeError
+PASS HTMLAudioElement interface: existence and properties of interface object
+PASS HTMLAudioElement interface object length
+PASS HTMLAudioElement interface object name
+PASS HTMLAudioElement interface: named constructor
+PASS HTMLAudioElement interface: named constructor object
+PASS HTMLAudioElement interface: named constructor prototype property
+PASS HTMLAudioElement interface: named constructor name
+PASS HTMLAudioElement interface: named constructor length
+PASS HTMLAudioElement interface: named constructor without 'new'
+PASS HTMLAudioElement interface: existence and properties of interface prototype object
+PASS HTMLAudioElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLAudioElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLAudioElement must be primary interface of document.createElement("audio")
+PASS Stringification of document.createElement("audio")
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "error" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "src" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "srcObject" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "currentSrc" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "crossOrigin" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "NETWORK_EMPTY" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "NETWORK_IDLE" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "NETWORK_LOADING" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "NETWORK_NO_SOURCE" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "networkState" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "preload" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "buffered" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "load()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "canPlayType(DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling canPlayType(DOMString) on document.createElement("audio") with too few arguments must throw TypeError
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_NOTHING" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_METADATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_CURRENT_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_FUTURE_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "HAVE_ENOUGH_DATA" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "readyState" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "seeking" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "currentTime" with the proper type
+FAIL HTMLMediaElement interface: document.createElement("audio") must inherit property "fastSeek(double)" with the proper type assert_inherits: property "fastSeek" not found in prototype chain
+FAIL HTMLMediaElement interface: calling fastSeek(double) on document.createElement("audio") with too few arguments must throw TypeError assert_inherits: property "fastSeek" not found in prototype chain
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "duration" with the proper type
+FAIL HTMLMediaElement interface: document.createElement("audio") must inherit property "getStartDate()" with the proper type assert_inherits: property "getStartDate" not found in prototype chain
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "paused" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "defaultPlaybackRate" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "playbackRate" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "preservesPitch" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "played" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "seekable" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "ended" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "autoplay" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "loop" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "play()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "pause()" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "controls" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "volume" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "muted" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "defaultMuted" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "audioTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "videoTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "textTracks" with the proper type
+PASS HTMLMediaElement interface: document.createElement("audio") must inherit property "addTextTrack(TextTrackKind, optional DOMString, optional DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind, optional DOMString, optional DOMString) on document.createElement("audio") with too few arguments must throw TypeError
+PASS HTMLAudioElement must be primary interface of new Audio()
+PASS Stringification of new Audio()
+PASS HTMLMediaElement interface: new Audio() must inherit property "error" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "src" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "srcObject" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "currentSrc" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "crossOrigin" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "NETWORK_EMPTY" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "NETWORK_IDLE" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "NETWORK_LOADING" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "NETWORK_NO_SOURCE" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "networkState" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "preload" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "buffered" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "load()" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "canPlayType(DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling canPlayType(DOMString) on new Audio() with too few arguments must throw TypeError
+PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_NOTHING" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_METADATA" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_CURRENT_DATA" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_FUTURE_DATA" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "HAVE_ENOUGH_DATA" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "readyState" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "seeking" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "currentTime" with the proper type
+FAIL HTMLMediaElement interface: new Audio() must inherit property "fastSeek(double)" with the proper type assert_inherits: property "fastSeek" not found in prototype chain
+FAIL HTMLMediaElement interface: calling fastSeek(double) on new Audio() with too few arguments must throw TypeError assert_inherits: property "fastSeek" not found in prototype chain
+PASS HTMLMediaElement interface: new Audio() must inherit property "duration" with the proper type
+FAIL HTMLMediaElement interface: new Audio() must inherit property "getStartDate()" with the proper type assert_inherits: property "getStartDate" not found in prototype chain
+PASS HTMLMediaElement interface: new Audio() must inherit property "paused" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "defaultPlaybackRate" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "playbackRate" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "preservesPitch" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "played" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "seekable" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "ended" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "autoplay" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "loop" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "play()" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "pause()" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "controls" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "volume" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "muted" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "defaultMuted" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "audioTracks" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "videoTracks" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "textTracks" with the proper type
+PASS HTMLMediaElement interface: new Audio() must inherit property "addTextTrack(TextTrackKind, optional DOMString, optional DOMString)" with the proper type
+PASS HTMLMediaElement interface: calling addTextTrack(TextTrackKind, optional DOMString, optional DOMString) on new Audio() with too few arguments must throw TypeError
+PASS HTMLTrackElement interface: existence and properties of interface object
+PASS HTMLTrackElement interface object length
+PASS HTMLTrackElement interface object name
+PASS HTMLTrackElement interface: existence and properties of interface prototype object
+PASS HTMLTrackElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTrackElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTrackElement interface: attribute kind
+PASS HTMLTrackElement interface: attribute src
+PASS HTMLTrackElement interface: attribute srclang
+PASS HTMLTrackElement interface: attribute label
+PASS HTMLTrackElement interface: attribute default
+PASS HTMLTrackElement interface: constant NONE on interface object
+PASS HTMLTrackElement interface: constant NONE on interface prototype object
+PASS HTMLTrackElement interface: constant LOADING on interface object
+PASS HTMLTrackElement interface: constant LOADING on interface prototype object
+PASS HTMLTrackElement interface: constant LOADED on interface object
+PASS HTMLTrackElement interface: constant LOADED on interface prototype object
+PASS HTMLTrackElement interface: constant ERROR on interface object
+PASS HTMLTrackElement interface: constant ERROR on interface prototype object
+PASS HTMLTrackElement interface: attribute readyState
+PASS HTMLTrackElement interface: attribute track
+PASS HTMLTrackElement must be primary interface of document.createElement("track")
+PASS Stringification of document.createElement("track")
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "kind" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "src" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "srclang" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "label" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "default" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "NONE" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "LOADING" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "LOADED" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "ERROR" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "readyState" with the proper type
+PASS HTMLTrackElement interface: document.createElement("track") must inherit property "track" with the proper type
+PASS HTMLMediaElement interface: existence and properties of interface object
+PASS HTMLMediaElement interface object length
+PASS HTMLMediaElement interface object name
+PASS HTMLMediaElement interface: existence and properties of interface prototype object
+PASS HTMLMediaElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMediaElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMediaElement interface: attribute error
+PASS HTMLMediaElement interface: attribute src
+PASS HTMLMediaElement interface: attribute srcObject
+PASS HTMLMediaElement interface: attribute currentSrc
+PASS HTMLMediaElement interface: attribute crossOrigin
+PASS HTMLMediaElement interface: constant NETWORK_EMPTY on interface object
+PASS HTMLMediaElement interface: constant NETWORK_EMPTY on interface prototype object
+PASS HTMLMediaElement interface: constant NETWORK_IDLE on interface object
+PASS HTMLMediaElement interface: constant NETWORK_IDLE on interface prototype object
+PASS HTMLMediaElement interface: constant NETWORK_LOADING on interface object
+PASS HTMLMediaElement interface: constant NETWORK_LOADING on interface prototype object
+PASS HTMLMediaElement interface: constant NETWORK_NO_SOURCE on interface object
+PASS HTMLMediaElement interface: constant NETWORK_NO_SOURCE on interface prototype object
+PASS HTMLMediaElement interface: attribute networkState
+PASS HTMLMediaElement interface: attribute preload
+PASS HTMLMediaElement interface: attribute buffered
+PASS HTMLMediaElement interface: operation load()
+PASS HTMLMediaElement interface: operation canPlayType(DOMString)
+PASS HTMLMediaElement interface: constant HAVE_NOTHING on interface object
+PASS HTMLMediaElement interface: constant HAVE_NOTHING on interface prototype object
+PASS HTMLMediaElement interface: constant HAVE_METADATA on interface object
+PASS HTMLMediaElement interface: constant HAVE_METADATA on interface prototype object
+PASS HTMLMediaElement interface: constant HAVE_CURRENT_DATA on interface object
+PASS HTMLMediaElement interface: constant HAVE_CURRENT_DATA on interface prototype object
+PASS HTMLMediaElement interface: constant HAVE_FUTURE_DATA on interface object
+PASS HTMLMediaElement interface: constant HAVE_FUTURE_DATA on interface prototype object
+PASS HTMLMediaElement interface: constant HAVE_ENOUGH_DATA on interface object
+PASS HTMLMediaElement interface: constant HAVE_ENOUGH_DATA on interface prototype object
+PASS HTMLMediaElement interface: attribute readyState
+PASS HTMLMediaElement interface: attribute seeking
+PASS HTMLMediaElement interface: attribute currentTime
+FAIL HTMLMediaElement interface: operation fastSeek(double) assert_own_property: interface prototype object missing non-static operation expected property "fastSeek" missing
+PASS HTMLMediaElement interface: attribute duration
+FAIL HTMLMediaElement interface: operation getStartDate() assert_own_property: interface prototype object missing non-static operation expected property "getStartDate" missing
+PASS HTMLMediaElement interface: attribute paused
+PASS HTMLMediaElement interface: attribute defaultPlaybackRate
+PASS HTMLMediaElement interface: attribute playbackRate
+PASS HTMLMediaElement interface: attribute preservesPitch
+PASS HTMLMediaElement interface: attribute played
+PASS HTMLMediaElement interface: attribute seekable
+PASS HTMLMediaElement interface: attribute ended
+PASS HTMLMediaElement interface: attribute autoplay
+PASS HTMLMediaElement interface: attribute loop
+PASS HTMLMediaElement interface: operation play()
+PASS HTMLMediaElement interface: operation pause()
+PASS HTMLMediaElement interface: attribute controls
+PASS HTMLMediaElement interface: attribute volume
+PASS HTMLMediaElement interface: attribute muted
+PASS HTMLMediaElement interface: attribute defaultMuted
+PASS HTMLMediaElement interface: attribute audioTracks
+PASS HTMLMediaElement interface: attribute videoTracks
+PASS HTMLMediaElement interface: attribute textTracks
+PASS HTMLMediaElement interface: operation addTextTrack(TextTrackKind, optional DOMString, optional DOMString)
+PASS HTMLMapElement interface: existence and properties of interface object
+PASS HTMLMapElement interface object length
+PASS HTMLMapElement interface object name
+PASS HTMLMapElement interface: existence and properties of interface prototype object
+PASS HTMLMapElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMapElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMapElement interface: attribute name
+PASS HTMLMapElement interface: attribute areas
+PASS HTMLMapElement must be primary interface of document.createElement("map")
+PASS Stringification of document.createElement("map")
+PASS HTMLMapElement interface: document.createElement("map") must inherit property "name" with the proper type
+PASS HTMLMapElement interface: document.createElement("map") must inherit property "areas" with the proper type
+PASS HTMLAreaElement interface: existence and properties of interface object
+PASS HTMLAreaElement interface object length
+PASS HTMLAreaElement interface object name
+PASS HTMLAreaElement interface: existence and properties of interface prototype object
+PASS HTMLAreaElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLAreaElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLAreaElement interface: attribute alt
+PASS HTMLAreaElement interface: attribute coords
+PASS HTMLAreaElement interface: attribute shape
+PASS HTMLAreaElement interface: attribute target
+PASS HTMLAreaElement interface: attribute download
+PASS HTMLAreaElement interface: attribute ping
+PASS HTMLAreaElement interface: attribute rel
+PASS HTMLAreaElement interface: attribute relList
+PASS HTMLAreaElement interface: attribute referrerPolicy
+PASS HTMLAreaElement interface: attribute noHref
+PASS HTMLAreaElement interface: attribute href
+PASS HTMLAreaElement interface: stringifier
+PASS HTMLAreaElement interface: attribute origin
+PASS HTMLAreaElement interface: attribute protocol
+PASS HTMLAreaElement interface: attribute username
+PASS HTMLAreaElement interface: attribute password
+PASS HTMLAreaElement interface: attribute host
+PASS HTMLAreaElement interface: attribute hostname
+PASS HTMLAreaElement interface: attribute port
+PASS HTMLAreaElement interface: attribute pathname
+PASS HTMLAreaElement interface: attribute search
+PASS HTMLAreaElement interface: attribute hash
+PASS HTMLAreaElement must be primary interface of document.createElement("area")
+PASS Stringification of document.createElement("area")
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "alt" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "coords" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "shape" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "target" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "download" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "ping" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "rel" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "relList" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "referrerPolicy" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "noHref" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "href" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "origin" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "protocol" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "username" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "password" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "host" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "hostname" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "port" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "pathname" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "search" with the proper type
+PASS HTMLAreaElement interface: document.createElement("area") must inherit property "hash" with the proper type
+PASS HTMLTableElement interface: existence and properties of interface object
+PASS HTMLTableElement interface object length
+PASS HTMLTableElement interface object name
+PASS HTMLTableElement interface: existence and properties of interface prototype object
+PASS HTMLTableElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableElement interface: attribute caption
+PASS HTMLTableElement interface: operation createCaption()
+PASS HTMLTableElement interface: operation deleteCaption()
+PASS HTMLTableElement interface: attribute tHead
+PASS HTMLTableElement interface: operation createTHead()
+PASS HTMLTableElement interface: operation deleteTHead()
+PASS HTMLTableElement interface: attribute tFoot
+PASS HTMLTableElement interface: operation createTFoot()
+PASS HTMLTableElement interface: operation deleteTFoot()
+PASS HTMLTableElement interface: attribute tBodies
+PASS HTMLTableElement interface: operation createTBody()
+PASS HTMLTableElement interface: attribute rows
+PASS HTMLTableElement interface: operation insertRow(optional long)
+PASS HTMLTableElement interface: operation deleteRow(long)
+PASS HTMLTableElement interface: attribute align
+PASS HTMLTableElement interface: attribute border
+PASS HTMLTableElement interface: attribute frame
+PASS HTMLTableElement interface: attribute rules
+PASS HTMLTableElement interface: attribute summary
+PASS HTMLTableElement interface: attribute width
+PASS HTMLTableElement interface: attribute bgColor
+PASS HTMLTableElement interface: attribute cellPadding
+PASS HTMLTableElement interface: attribute cellSpacing
+PASS HTMLTableElement must be primary interface of document.createElement("table")
+PASS Stringification of document.createElement("table")
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "caption" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "createCaption()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "deleteCaption()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "tHead" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "createTHead()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "deleteTHead()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "tFoot" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "createTFoot()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "deleteTFoot()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "tBodies" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "createTBody()" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "rows" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "insertRow(optional long)" with the proper type
+PASS HTMLTableElement interface: calling insertRow(optional long) on document.createElement("table") with too few arguments must throw TypeError
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "deleteRow(long)" with the proper type
+PASS HTMLTableElement interface: calling deleteRow(long) on document.createElement("table") with too few arguments must throw TypeError
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "align" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "border" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "frame" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "rules" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "summary" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "width" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "bgColor" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "cellPadding" with the proper type
+PASS HTMLTableElement interface: document.createElement("table") must inherit property "cellSpacing" with the proper type
+PASS HTMLTableCaptionElement interface: existence and properties of interface object
+PASS HTMLTableCaptionElement interface object length
+PASS HTMLTableCaptionElement interface object name
+PASS HTMLTableCaptionElement interface: existence and properties of interface prototype object
+PASS HTMLTableCaptionElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableCaptionElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableCaptionElement interface: attribute align
+PASS HTMLTableCaptionElement must be primary interface of document.createElement("caption")
+PASS Stringification of document.createElement("caption")
+PASS HTMLTableCaptionElement interface: document.createElement("caption") must inherit property "align" with the proper type
+PASS HTMLTableColElement interface: existence and properties of interface object
+PASS HTMLTableColElement interface object length
+PASS HTMLTableColElement interface object name
+PASS HTMLTableColElement interface: existence and properties of interface prototype object
+PASS HTMLTableColElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableColElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableColElement interface: attribute span
+PASS HTMLTableColElement interface: attribute align
+PASS HTMLTableColElement interface: attribute ch
+PASS HTMLTableColElement interface: attribute chOff
+PASS HTMLTableColElement interface: attribute vAlign
+PASS HTMLTableColElement interface: attribute width
+PASS HTMLTableColElement must be primary interface of document.createElement("colgroup")
+PASS Stringification of document.createElement("colgroup")
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "span" with the proper type
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "align" with the proper type
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "ch" with the proper type
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "chOff" with the proper type
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "vAlign" with the proper type
+PASS HTMLTableColElement interface: document.createElement("colgroup") must inherit property "width" with the proper type
+PASS HTMLTableColElement must be primary interface of document.createElement("col")
+PASS Stringification of document.createElement("col")
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "span" with the proper type
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "align" with the proper type
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "ch" with the proper type
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "chOff" with the proper type
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "vAlign" with the proper type
+PASS HTMLTableColElement interface: document.createElement("col") must inherit property "width" with the proper type
+PASS HTMLTableSectionElement interface: existence and properties of interface object
+PASS HTMLTableSectionElement interface object length
+PASS HTMLTableSectionElement interface object name
+PASS HTMLTableSectionElement interface: existence and properties of interface prototype object
+PASS HTMLTableSectionElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableSectionElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableSectionElement interface: attribute rows
+PASS HTMLTableSectionElement interface: operation insertRow(optional long)
+PASS HTMLTableSectionElement interface: operation deleteRow(long)
+PASS HTMLTableSectionElement interface: attribute align
+PASS HTMLTableSectionElement interface: attribute ch
+PASS HTMLTableSectionElement interface: attribute chOff
+PASS HTMLTableSectionElement interface: attribute vAlign
+PASS HTMLTableSectionElement must be primary interface of document.createElement("tbody")
+PASS Stringification of document.createElement("tbody")
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "rows" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "insertRow(optional long)" with the proper type
+PASS HTMLTableSectionElement interface: calling insertRow(optional long) on document.createElement("tbody") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "deleteRow(long)" with the proper type
+PASS HTMLTableSectionElement interface: calling deleteRow(long) on document.createElement("tbody") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "align" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "ch" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "chOff" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "vAlign" with the proper type
+PASS HTMLTableSectionElement must be primary interface of document.createElement("thead")
+PASS Stringification of document.createElement("thead")
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "rows" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "insertRow(optional long)" with the proper type
+PASS HTMLTableSectionElement interface: calling insertRow(optional long) on document.createElement("thead") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "deleteRow(long)" with the proper type
+PASS HTMLTableSectionElement interface: calling deleteRow(long) on document.createElement("thead") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "align" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "ch" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "chOff" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("thead") must inherit property "vAlign" with the proper type
+PASS HTMLTableSectionElement must be primary interface of document.createElement("tfoot")
+PASS Stringification of document.createElement("tfoot")
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "rows" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "insertRow(optional long)" with the proper type
+PASS HTMLTableSectionElement interface: calling insertRow(optional long) on document.createElement("tfoot") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "deleteRow(long)" with the proper type
+PASS HTMLTableSectionElement interface: calling deleteRow(long) on document.createElement("tfoot") with too few arguments must throw TypeError
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "align" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "ch" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "chOff" with the proper type
+PASS HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "vAlign" with the proper type
+PASS HTMLTableRowElement interface: existence and properties of interface object
+PASS HTMLTableRowElement interface object length
+PASS HTMLTableRowElement interface object name
+PASS HTMLTableRowElement interface: existence and properties of interface prototype object
+PASS HTMLTableRowElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableRowElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableRowElement interface: attribute rowIndex
+PASS HTMLTableRowElement interface: attribute sectionRowIndex
+PASS HTMLTableRowElement interface: attribute cells
+PASS HTMLTableRowElement interface: operation insertCell(optional long)
+PASS HTMLTableRowElement interface: operation deleteCell(long)
+PASS HTMLTableRowElement interface: attribute align
+PASS HTMLTableRowElement interface: attribute ch
+PASS HTMLTableRowElement interface: attribute chOff
+PASS HTMLTableRowElement interface: attribute vAlign
+PASS HTMLTableRowElement interface: attribute bgColor
+PASS HTMLTableRowElement must be primary interface of document.createElement("tr")
+PASS Stringification of document.createElement("tr")
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "rowIndex" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "sectionRowIndex" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "cells" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "insertCell(optional long)" with the proper type
+PASS HTMLTableRowElement interface: calling insertCell(optional long) on document.createElement("tr") with too few arguments must throw TypeError
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "deleteCell(long)" with the proper type
+PASS HTMLTableRowElement interface: calling deleteCell(long) on document.createElement("tr") with too few arguments must throw TypeError
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "align" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "ch" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "chOff" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "vAlign" with the proper type
+PASS HTMLTableRowElement interface: document.createElement("tr") must inherit property "bgColor" with the proper type
+PASS HTMLTableCellElement interface: existence and properties of interface object
+PASS HTMLTableCellElement interface object length
+PASS HTMLTableCellElement interface object name
+PASS HTMLTableCellElement interface: existence and properties of interface prototype object
+PASS HTMLTableCellElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTableCellElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTableCellElement interface: attribute colSpan
+PASS HTMLTableCellElement interface: attribute rowSpan
+PASS HTMLTableCellElement interface: attribute headers
+PASS HTMLTableCellElement interface: attribute cellIndex
+PASS HTMLTableCellElement interface: attribute scope
+PASS HTMLTableCellElement interface: attribute abbr
+PASS HTMLTableCellElement interface: attribute align
+PASS HTMLTableCellElement interface: attribute axis
+PASS HTMLTableCellElement interface: attribute height
+PASS HTMLTableCellElement interface: attribute width
+PASS HTMLTableCellElement interface: attribute ch
+PASS HTMLTableCellElement interface: attribute chOff
+PASS HTMLTableCellElement interface: attribute noWrap
+PASS HTMLTableCellElement interface: attribute vAlign
+PASS HTMLTableCellElement interface: attribute bgColor
+PASS HTMLTableCellElement must be primary interface of document.createElement("td")
+PASS Stringification of document.createElement("td")
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "colSpan" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "rowSpan" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "headers" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "cellIndex" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "scope" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "abbr" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "align" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "axis" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "height" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "width" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "ch" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "chOff" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "noWrap" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "vAlign" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("td") must inherit property "bgColor" with the proper type
+PASS HTMLTableCellElement must be primary interface of document.createElement("th")
+PASS Stringification of document.createElement("th")
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "colSpan" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "rowSpan" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "headers" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "cellIndex" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "scope" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "abbr" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "align" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "axis" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "height" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "width" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "ch" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "chOff" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "noWrap" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "vAlign" with the proper type
+PASS HTMLTableCellElement interface: document.createElement("th") must inherit property "bgColor" with the proper type
+PASS HTMLFormElement interface: existence and properties of interface object
+PASS HTMLFormElement interface object length
+PASS HTMLFormElement interface object name
+PASS HTMLFormElement interface: existence and properties of interface prototype object
+PASS HTMLFormElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFormElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFormElement interface: attribute acceptCharset
+PASS HTMLFormElement interface: attribute action
+PASS HTMLFormElement interface: attribute autocomplete
+PASS HTMLFormElement interface: attribute enctype
+PASS HTMLFormElement interface: attribute encoding
+PASS HTMLFormElement interface: attribute method
+PASS HTMLFormElement interface: attribute name
+PASS HTMLFormElement interface: attribute noValidate
+PASS HTMLFormElement interface: attribute target
+FAIL HTMLFormElement interface: attribute rel assert_true: The prototype object must have a property "rel" expected true got false
+FAIL HTMLFormElement interface: attribute relList assert_true: The prototype object must have a property "relList" expected true got false
+PASS HTMLFormElement interface: attribute elements
+PASS HTMLFormElement interface: attribute length
+PASS HTMLFormElement interface: operation submit()
+PASS HTMLFormElement interface: operation requestSubmit(optional HTMLElement?)
+PASS HTMLFormElement interface: operation reset()
+PASS HTMLFormElement interface: operation checkValidity()
+PASS HTMLFormElement interface: operation reportValidity()
+PASS HTMLFormElement must be primary interface of document.createElement("form")
+PASS Stringification of document.createElement("form")
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "acceptCharset" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "action" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "autocomplete" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "enctype" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "encoding" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "method" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "name" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "noValidate" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "target" with the proper type
+FAIL HTMLFormElement interface: document.createElement("form") must inherit property "rel" with the proper type assert_inherits: property "rel" not found in prototype chain
+FAIL HTMLFormElement interface: document.createElement("form") must inherit property "relList" with the proper type assert_inherits: property "relList" not found in prototype chain
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "elements" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "length" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "submit()" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "requestSubmit(optional HTMLElement?)" with the proper type
+PASS HTMLFormElement interface: calling requestSubmit(optional HTMLElement?) on document.createElement("form") with too few arguments must throw TypeError
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "reset()" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "checkValidity()" with the proper type
+PASS HTMLFormElement interface: document.createElement("form") must inherit property "reportValidity()" with the proper type
+PASS HTMLLabelElement interface: existence and properties of interface object
+PASS HTMLLabelElement interface object length
+PASS HTMLLabelElement interface object name
+PASS HTMLLabelElement interface: existence and properties of interface prototype object
+PASS HTMLLabelElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLLabelElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLLabelElement interface: attribute form
+PASS HTMLLabelElement interface: attribute htmlFor
+PASS HTMLLabelElement interface: attribute control
+PASS HTMLLabelElement must be primary interface of document.createElement("label")
+PASS Stringification of document.createElement("label")
+PASS HTMLLabelElement interface: document.createElement("label") must inherit property "form" with the proper type
+PASS HTMLLabelElement interface: document.createElement("label") must inherit property "htmlFor" with the proper type
+PASS HTMLLabelElement interface: document.createElement("label") must inherit property "control" with the proper type
+PASS HTMLInputElement interface: existence and properties of interface object
+PASS HTMLInputElement interface object length
+PASS HTMLInputElement interface object name
+PASS HTMLInputElement interface: existence and properties of interface prototype object
+PASS HTMLInputElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLInputElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLInputElement interface: attribute accept
+PASS HTMLInputElement interface: attribute alt
+PASS HTMLInputElement interface: attribute autocomplete
+PASS HTMLInputElement interface: attribute defaultChecked
+PASS HTMLInputElement interface: attribute checked
+PASS HTMLInputElement interface: attribute dirName
+PASS HTMLInputElement interface: attribute disabled
+PASS HTMLInputElement interface: attribute form
+PASS HTMLInputElement interface: attribute files
+PASS HTMLInputElement interface: attribute formAction
+PASS HTMLInputElement interface: attribute formEnctype
+PASS HTMLInputElement interface: attribute formMethod
+PASS HTMLInputElement interface: attribute formNoValidate
+PASS HTMLInputElement interface: attribute formTarget
+PASS HTMLInputElement interface: attribute height
+PASS HTMLInputElement interface: attribute indeterminate
+PASS HTMLInputElement interface: attribute list
+PASS HTMLInputElement interface: attribute max
+PASS HTMLInputElement interface: attribute maxLength
+PASS HTMLInputElement interface: attribute min
+PASS HTMLInputElement interface: attribute minLength
+PASS HTMLInputElement interface: attribute multiple
+PASS HTMLInputElement interface: attribute name
+PASS HTMLInputElement interface: attribute pattern
+PASS HTMLInputElement interface: attribute placeholder
+PASS HTMLInputElement interface: attribute readOnly
+PASS HTMLInputElement interface: attribute required
+PASS HTMLInputElement interface: attribute size
+PASS HTMLInputElement interface: attribute src
+PASS HTMLInputElement interface: attribute step
+PASS HTMLInputElement interface: attribute type
+PASS HTMLInputElement interface: attribute defaultValue
+PASS HTMLInputElement interface: attribute value
+PASS HTMLInputElement interface: attribute valueAsDate
+PASS HTMLInputElement interface: attribute valueAsNumber
+PASS HTMLInputElement interface: attribute width
+PASS HTMLInputElement interface: operation stepUp(optional long)
+PASS HTMLInputElement interface: operation stepDown(optional long)
+PASS HTMLInputElement interface: attribute willValidate
+PASS HTMLInputElement interface: attribute validity
+PASS HTMLInputElement interface: attribute validationMessage
+PASS HTMLInputElement interface: operation checkValidity()
+PASS HTMLInputElement interface: operation reportValidity()
+PASS HTMLInputElement interface: operation setCustomValidity(DOMString)
+PASS HTMLInputElement interface: attribute labels
+PASS HTMLInputElement interface: operation select()
+PASS HTMLInputElement interface: attribute selectionStart
+PASS HTMLInputElement interface: attribute selectionEnd
+PASS HTMLInputElement interface: attribute selectionDirection
+PASS HTMLInputElement interface: operation setRangeText(DOMString)
+PASS HTMLInputElement interface: operation setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)
+PASS HTMLInputElement interface: operation setSelectionRange(unsigned long, unsigned long, optional DOMString)
+PASS HTMLInputElement interface: attribute align
+PASS HTMLInputElement interface: attribute useMap
+PASS HTMLInputElement must be primary interface of document.createElement("input")
+PASS Stringification of document.createElement("input")
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on document.createElement("input") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: document.createElement("input") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("text")
+PASS Stringification of createInput("text")
+PASS HTMLInputElement interface: createInput("text") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on createInput("text") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("text") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("text") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("hidden")
+PASS Stringification of createInput("hidden")
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on createInput("hidden") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("hidden") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("search")
+PASS Stringification of createInput("search")
+PASS HTMLInputElement interface: createInput("search") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on createInput("search") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("search") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("search") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("tel")
+PASS Stringification of createInput("tel")
+PASS HTMLInputElement interface: createInput("tel") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on createInput("tel") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("tel") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("tel") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("url")
+PASS Stringification of createInput("url")
+PASS HTMLInputElement interface: createInput("url") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on createInput("url") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("url") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("url") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("email")
+PASS Stringification of createInput("email")
+PASS HTMLInputElement interface: createInput("email") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on createInput("email") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("email") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("email") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("password")
+PASS Stringification of createInput("password")
+PASS HTMLInputElement interface: createInput("password") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on createInput("password") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("password") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("password") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("date")
+PASS Stringification of createInput("date")
+PASS HTMLInputElement interface: createInput("date") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on createInput("date") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("date") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("date") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("month")
+PASS Stringification of createInput("month")
+PASS HTMLInputElement interface: createInput("month") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on createInput("month") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("month") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("month") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("week")
+PASS Stringification of createInput("week")
+PASS HTMLInputElement interface: createInput("week") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on createInput("week") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("week") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("week") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("time")
+PASS Stringification of createInput("time")
+PASS HTMLInputElement interface: createInput("time") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on createInput("time") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("time") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("time") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("datetime-local")
+PASS Stringification of createInput("datetime-local")
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on createInput("datetime-local") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("datetime-local") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("number")
+PASS Stringification of createInput("number")
+PASS HTMLInputElement interface: createInput("number") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on createInput("number") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("number") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("number") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("range")
+PASS Stringification of createInput("range")
+PASS HTMLInputElement interface: createInput("range") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on createInput("range") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("range") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("range") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("color")
+PASS Stringification of createInput("color")
+PASS HTMLInputElement interface: createInput("color") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on createInput("color") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("color") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("color") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("checkbox")
+PASS Stringification of createInput("checkbox")
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on createInput("checkbox") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("checkbox") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("radio")
+PASS Stringification of createInput("radio")
+PASS HTMLInputElement interface: createInput("radio") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on createInput("radio") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("radio") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("radio") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("file")
+PASS Stringification of createInput("file")
+PASS HTMLInputElement interface: createInput("file") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on createInput("file") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("file") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("file") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("submit")
+PASS Stringification of createInput("submit")
+PASS HTMLInputElement interface: createInput("submit") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on createInput("submit") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("submit") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("submit") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("image")
+PASS Stringification of createInput("image")
+PASS HTMLInputElement interface: createInput("image") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on createInput("image") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("image") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("image") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("reset")
+PASS Stringification of createInput("reset")
+PASS HTMLInputElement interface: createInput("reset") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on createInput("reset") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("reset") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("reset") must inherit property "useMap" with the proper type
+PASS HTMLInputElement must be primary interface of createInput("button")
+PASS Stringification of createInput("button")
+PASS HTMLInputElement interface: createInput("button") must inherit property "accept" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "alt" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "autocomplete" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "defaultChecked" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "checked" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "dirName" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "disabled" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "form" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "files" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "formAction" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "formEnctype" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "formMethod" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "formNoValidate" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "formTarget" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "height" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "indeterminate" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "list" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "max" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "maxLength" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "min" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "minLength" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "multiple" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "name" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "pattern" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "placeholder" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "readOnly" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "required" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "size" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "src" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "step" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "type" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "defaultValue" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "value" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "valueAsDate" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "valueAsNumber" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "width" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "stepUp(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepUp(optional long) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "stepDown(optional long)" with the proper type
+PASS HTMLInputElement interface: calling stepDown(optional long) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "willValidate" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "validity" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "validationMessage" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "checkValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "reportValidity()" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "labels" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "select()" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "selectionStart" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "selectionEnd" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "selectionDirection" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLInputElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLInputElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on createInput("button") with too few arguments must throw TypeError
+PASS HTMLInputElement interface: createInput("button") must inherit property "align" with the proper type
+PASS HTMLInputElement interface: createInput("button") must inherit property "useMap" with the proper type
+PASS HTMLButtonElement interface: existence and properties of interface object
+PASS HTMLButtonElement interface object length
+PASS HTMLButtonElement interface object name
+PASS HTMLButtonElement interface: existence and properties of interface prototype object
+PASS HTMLButtonElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLButtonElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLButtonElement interface: attribute disabled
+PASS HTMLButtonElement interface: attribute form
+PASS HTMLButtonElement interface: attribute formAction
+PASS HTMLButtonElement interface: attribute formEnctype
+PASS HTMLButtonElement interface: attribute formMethod
+PASS HTMLButtonElement interface: attribute formNoValidate
+PASS HTMLButtonElement interface: attribute formTarget
+PASS HTMLButtonElement interface: attribute name
+PASS HTMLButtonElement interface: attribute type
+PASS HTMLButtonElement interface: attribute value
+PASS HTMLButtonElement interface: attribute willValidate
+PASS HTMLButtonElement interface: attribute validity
+PASS HTMLButtonElement interface: attribute validationMessage
+PASS HTMLButtonElement interface: operation checkValidity()
+PASS HTMLButtonElement interface: operation reportValidity()
+PASS HTMLButtonElement interface: operation setCustomValidity(DOMString)
+PASS HTMLButtonElement interface: attribute labels
+PASS HTMLButtonElement must be primary interface of document.createElement("button")
+PASS Stringification of document.createElement("button")
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "disabled" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "form" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formAction" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formEnctype" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formMethod" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formNoValidate" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "formTarget" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "name" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "type" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "value" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "willValidate" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "validity" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "validationMessage" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "checkValidity()" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "reportValidity()" with the proper type
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLButtonElement interface: calling setCustomValidity(DOMString) on document.createElement("button") with too few arguments must throw TypeError
+PASS HTMLButtonElement interface: document.createElement("button") must inherit property "labels" with the proper type
+PASS HTMLSelectElement interface: existence and properties of interface object
+PASS HTMLSelectElement interface object length
+PASS HTMLSelectElement interface object name
+PASS HTMLSelectElement interface: existence and properties of interface prototype object
+PASS HTMLSelectElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLSelectElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLSelectElement interface: attribute autocomplete
+PASS HTMLSelectElement interface: attribute disabled
+PASS HTMLSelectElement interface: attribute form
+PASS HTMLSelectElement interface: attribute multiple
+PASS HTMLSelectElement interface: attribute name
+PASS HTMLSelectElement interface: attribute required
+PASS HTMLSelectElement interface: attribute size
+PASS HTMLSelectElement interface: attribute type
+PASS HTMLSelectElement interface: attribute options
+PASS HTMLSelectElement interface: attribute length
+PASS HTMLSelectElement interface: operation item(unsigned long)
+PASS HTMLSelectElement interface: operation namedItem(DOMString)
+PASS HTMLSelectElement interface: operation add((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?)
+PASS HTMLSelectElement interface: operation remove()
+PASS HTMLSelectElement interface: operation remove(long)
+PASS HTMLSelectElement interface: attribute selectedOptions
+PASS HTMLSelectElement interface: attribute selectedIndex
+PASS HTMLSelectElement interface: attribute value
+PASS HTMLSelectElement interface: attribute willValidate
+PASS HTMLSelectElement interface: attribute validity
+PASS HTMLSelectElement interface: attribute validationMessage
+PASS HTMLSelectElement interface: operation checkValidity()
+PASS HTMLSelectElement interface: operation reportValidity()
+PASS HTMLSelectElement interface: operation setCustomValidity(DOMString)
+PASS HTMLSelectElement interface: attribute labels
+PASS HTMLSelectElement must be primary interface of document.createElement("select")
+PASS Stringification of document.createElement("select")
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "autocomplete" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "disabled" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "form" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "multiple" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "name" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "required" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "size" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "type" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "options" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "length" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "item(unsigned long)" with the proper type
+PASS HTMLSelectElement interface: calling item(unsigned long) on document.createElement("select") with too few arguments must throw TypeError
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "namedItem(DOMString)" with the proper type
+PASS HTMLSelectElement interface: calling namedItem(DOMString) on document.createElement("select") with too few arguments must throw TypeError
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "add((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?)" with the proper type
+PASS HTMLSelectElement interface: calling add((HTMLOptionElement or HTMLOptGroupElement), optional (HTMLElement or long)?) on document.createElement("select") with too few arguments must throw TypeError
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "remove()" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "remove(long)" with the proper type
+PASS HTMLSelectElement interface: calling remove(long) on document.createElement("select") with too few arguments must throw TypeError
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "selectedOptions" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "selectedIndex" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "value" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "willValidate" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "validity" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "validationMessage" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "checkValidity()" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "reportValidity()" with the proper type
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLSelectElement interface: calling setCustomValidity(DOMString) on document.createElement("select") with too few arguments must throw TypeError
+PASS HTMLSelectElement interface: document.createElement("select") must inherit property "labels" with the proper type
+PASS HTMLDataListElement interface: existence and properties of interface object
+PASS HTMLDataListElement interface object length
+PASS HTMLDataListElement interface object name
+PASS HTMLDataListElement interface: existence and properties of interface prototype object
+PASS HTMLDataListElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDataListElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDataListElement interface: attribute options
+PASS HTMLDataListElement must be primary interface of document.createElement("datalist")
+PASS Stringification of document.createElement("datalist")
+PASS HTMLDataListElement interface: document.createElement("datalist") must inherit property "options" with the proper type
+PASS HTMLOptGroupElement interface: existence and properties of interface object
+PASS HTMLOptGroupElement interface object length
+PASS HTMLOptGroupElement interface object name
+PASS HTMLOptGroupElement interface: existence and properties of interface prototype object
+PASS HTMLOptGroupElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLOptGroupElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLOptGroupElement interface: attribute disabled
+PASS HTMLOptGroupElement interface: attribute label
+PASS HTMLOptGroupElement must be primary interface of document.createElement("optgroup")
+PASS Stringification of document.createElement("optgroup")
+PASS HTMLOptGroupElement interface: document.createElement("optgroup") must inherit property "disabled" with the proper type
+PASS HTMLOptGroupElement interface: document.createElement("optgroup") must inherit property "label" with the proper type
+PASS HTMLOptionElement interface: existence and properties of interface object
+PASS HTMLOptionElement interface object length
+PASS HTMLOptionElement interface object name
+PASS HTMLOptionElement interface: named constructor
+PASS HTMLOptionElement interface: named constructor object
+PASS HTMLOptionElement interface: named constructor prototype property
+PASS HTMLOptionElement interface: named constructor name
+PASS HTMLOptionElement interface: named constructor length
+PASS HTMLOptionElement interface: named constructor without 'new'
+PASS HTMLOptionElement interface: existence and properties of interface prototype object
+PASS HTMLOptionElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLOptionElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLOptionElement interface: attribute disabled
+PASS HTMLOptionElement interface: attribute form
+PASS HTMLOptionElement interface: attribute label
+PASS HTMLOptionElement interface: attribute defaultSelected
+PASS HTMLOptionElement interface: attribute selected
+PASS HTMLOptionElement interface: attribute value
+PASS HTMLOptionElement interface: attribute text
+PASS HTMLOptionElement interface: attribute index
+PASS HTMLOptionElement must be primary interface of document.createElement("option")
+PASS Stringification of document.createElement("option")
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "disabled" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "form" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "label" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "defaultSelected" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "selected" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "value" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "text" with the proper type
+PASS HTMLOptionElement interface: document.createElement("option") must inherit property "index" with the proper type
+PASS HTMLOptionElement must be primary interface of new Option()
+PASS Stringification of new Option()
+PASS HTMLOptionElement interface: new Option() must inherit property "disabled" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "form" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "label" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "defaultSelected" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "selected" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "value" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "text" with the proper type
+PASS HTMLOptionElement interface: new Option() must inherit property "index" with the proper type
+PASS HTMLTextAreaElement interface: existence and properties of interface object
+PASS HTMLTextAreaElement interface object length
+PASS HTMLTextAreaElement interface object name
+PASS HTMLTextAreaElement interface: existence and properties of interface prototype object
+PASS HTMLTextAreaElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTextAreaElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTextAreaElement interface: attribute autocomplete
+PASS HTMLTextAreaElement interface: attribute cols
+PASS HTMLTextAreaElement interface: attribute dirName
+PASS HTMLTextAreaElement interface: attribute disabled
+PASS HTMLTextAreaElement interface: attribute form
+PASS HTMLTextAreaElement interface: attribute maxLength
+PASS HTMLTextAreaElement interface: attribute minLength
+PASS HTMLTextAreaElement interface: attribute name
+PASS HTMLTextAreaElement interface: attribute placeholder
+PASS HTMLTextAreaElement interface: attribute readOnly
+PASS HTMLTextAreaElement interface: attribute required
+PASS HTMLTextAreaElement interface: attribute rows
+PASS HTMLTextAreaElement interface: attribute wrap
+PASS HTMLTextAreaElement interface: attribute type
+PASS HTMLTextAreaElement interface: attribute defaultValue
+PASS HTMLTextAreaElement interface: attribute value
+PASS HTMLTextAreaElement interface: attribute textLength
+PASS HTMLTextAreaElement interface: attribute willValidate
+PASS HTMLTextAreaElement interface: attribute validity
+PASS HTMLTextAreaElement interface: attribute validationMessage
+PASS HTMLTextAreaElement interface: operation checkValidity()
+PASS HTMLTextAreaElement interface: operation reportValidity()
+PASS HTMLTextAreaElement interface: operation setCustomValidity(DOMString)
+PASS HTMLTextAreaElement interface: attribute labels
+PASS HTMLTextAreaElement interface: operation select()
+PASS HTMLTextAreaElement interface: attribute selectionStart
+PASS HTMLTextAreaElement interface: attribute selectionEnd
+PASS HTMLTextAreaElement interface: attribute selectionDirection
+PASS HTMLTextAreaElement interface: operation setRangeText(DOMString)
+PASS HTMLTextAreaElement interface: operation setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)
+PASS HTMLTextAreaElement interface: operation setSelectionRange(unsigned long, unsigned long, optional DOMString)
+PASS HTMLTextAreaElement must be primary interface of document.createElement("textarea")
+PASS Stringification of document.createElement("textarea")
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "autocomplete" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "cols" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "dirName" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "disabled" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "form" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "maxLength" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "minLength" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "name" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "placeholder" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "readOnly" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "required" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "rows" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "wrap" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "type" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "defaultValue" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "value" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "textLength" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "willValidate" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "validity" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "validationMessage" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "checkValidity()" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "reportValidity()" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLTextAreaElement interface: calling setCustomValidity(DOMString) on document.createElement("textarea") with too few arguments must throw TypeError
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "labels" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "select()" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "selectionStart" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "selectionEnd" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "selectionDirection" with the proper type
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setRangeText(DOMString)" with the proper type
+PASS HTMLTextAreaElement interface: calling setRangeText(DOMString) on document.createElement("textarea") with too few arguments must throw TypeError
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode)" with the proper type
+PASS HTMLTextAreaElement interface: calling setRangeText(DOMString, unsigned long, unsigned long, optional SelectionMode) on document.createElement("textarea") with too few arguments must throw TypeError
+PASS HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setSelectionRange(unsigned long, unsigned long, optional DOMString)" with the proper type
+PASS HTMLTextAreaElement interface: calling setSelectionRange(unsigned long, unsigned long, optional DOMString) on document.createElement("textarea") with too few arguments must throw TypeError
+PASS HTMLOutputElement interface: existence and properties of interface object
+PASS HTMLOutputElement interface object length
+PASS HTMLOutputElement interface object name
+PASS HTMLOutputElement interface: existence and properties of interface prototype object
+PASS HTMLOutputElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLOutputElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLOutputElement interface: attribute htmlFor
+PASS HTMLOutputElement interface: attribute form
+PASS HTMLOutputElement interface: attribute name
+PASS HTMLOutputElement interface: attribute type
+PASS HTMLOutputElement interface: attribute defaultValue
+PASS HTMLOutputElement interface: attribute value
+PASS HTMLOutputElement interface: attribute willValidate
+PASS HTMLOutputElement interface: attribute validity
+PASS HTMLOutputElement interface: attribute validationMessage
+PASS HTMLOutputElement interface: operation checkValidity()
+PASS HTMLOutputElement interface: operation reportValidity()
+PASS HTMLOutputElement interface: operation setCustomValidity(DOMString)
+PASS HTMLOutputElement interface: attribute labels
+PASS HTMLOutputElement must be primary interface of document.createElement("output")
+PASS Stringification of document.createElement("output")
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "htmlFor" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "form" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "name" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "type" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "defaultValue" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "value" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "willValidate" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "validity" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "validationMessage" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "checkValidity()" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "reportValidity()" with the proper type
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "setCustomValidity(DOMString)" with the proper type
+PASS HTMLOutputElement interface: calling setCustomValidity(DOMString) on document.createElement("output") with too few arguments must throw TypeError
+PASS HTMLOutputElement interface: document.createElement("output") must inherit property "labels" with the proper type
+PASS HTMLProgressElement interface: existence and properties of interface object
+PASS HTMLProgressElement interface object length
+PASS HTMLProgressElement interface object name
+PASS HTMLProgressElement interface: existence and properties of interface prototype object
+PASS HTMLProgressElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLProgressElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLProgressElement interface: attribute value
+PASS HTMLProgressElement interface: attribute max
+PASS HTMLProgressElement interface: attribute position
+PASS HTMLProgressElement interface: attribute labels
+PASS HTMLProgressElement must be primary interface of document.createElement("progress")
+PASS Stringification of document.createElement("progress")
+PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "value" with the proper type
+PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "max" with the proper type
+PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "position" with the proper type
+PASS HTMLProgressElement interface: document.createElement("progress") must inherit property "labels" with the proper type
+PASS HTMLMeterElement interface: existence and properties of interface object
+PASS HTMLMeterElement interface object length
+PASS HTMLMeterElement interface object name
+PASS HTMLMeterElement interface: existence and properties of interface prototype object
+PASS HTMLMeterElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMeterElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMeterElement interface: attribute value
+PASS HTMLMeterElement interface: attribute min
+PASS HTMLMeterElement interface: attribute max
+PASS HTMLMeterElement interface: attribute low
+PASS HTMLMeterElement interface: attribute high
+PASS HTMLMeterElement interface: attribute optimum
+PASS HTMLMeterElement interface: attribute labels
+PASS HTMLMeterElement must be primary interface of document.createElement("meter")
+PASS Stringification of document.createElement("meter")
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "value" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "min" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "max" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "low" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "high" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "optimum" with the proper type
+PASS HTMLMeterElement interface: document.createElement("meter") must inherit property "labels" with the proper type
+PASS HTMLFieldSetElement interface: existence and properties of interface object
+PASS HTMLFieldSetElement interface object length
+PASS HTMLFieldSetElement interface object name
+PASS HTMLFieldSetElement interface: existence and properties of interface prototype object
+PASS HTMLFieldSetElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFieldSetElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFieldSetElement interface: attribute disabled
+PASS HTMLFieldSetElement interface: attribute form
+PASS HTMLFieldSetElement interface: attribute name
+PASS HTMLFieldSetElement interface: attribute type
+PASS HTMLFieldSetElement interface: attribute elements
+PASS HTMLFieldSetElement interface: attribute willValidate
+PASS HTMLFieldSetElement interface: attribute validity
+PASS HTMLFieldSetElement interface: attribute validationMessage
+PASS HTMLFieldSetElement interface: operation checkValidity()
+PASS HTMLFieldSetElement interface: operation reportValidity()
+PASS HTMLFieldSetElement interface: operation setCustomValidity(DOMString)
+PASS HTMLLegendElement interface: existence and properties of interface object
+PASS HTMLLegendElement interface object length
+PASS HTMLLegendElement interface object name
+PASS HTMLLegendElement interface: existence and properties of interface prototype object
+PASS HTMLLegendElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLLegendElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLLegendElement interface: attribute form
+PASS HTMLLegendElement interface: attribute align
+PASS HTMLLegendElement must be primary interface of document.createElement("legend")
+PASS Stringification of document.createElement("legend")
+PASS HTMLLegendElement interface: document.createElement("legend") must inherit property "form" with the proper type
+PASS HTMLLegendElement interface: document.createElement("legend") must inherit property "align" with the proper type
+PASS HTMLDetailsElement interface: existence and properties of interface object
+PASS HTMLDetailsElement interface object length
+PASS HTMLDetailsElement interface object name
+PASS HTMLDetailsElement interface: existence and properties of interface prototype object
+PASS HTMLDetailsElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDetailsElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDetailsElement interface: attribute open
+PASS HTMLDetailsElement must be primary interface of document.createElement("details")
+PASS Stringification of document.createElement("details")
+PASS HTMLDetailsElement interface: document.createElement("details") must inherit property "open" with the proper type
+PASS HTMLDialogElement interface: existence and properties of interface object
+PASS HTMLDialogElement interface object length
+PASS HTMLDialogElement interface object name
+PASS HTMLDialogElement interface: existence and properties of interface prototype object
+PASS HTMLDialogElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDialogElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDialogElement interface: attribute open
+PASS HTMLDialogElement interface: attribute returnValue
+PASS HTMLDialogElement interface: operation show()
+PASS HTMLDialogElement interface: operation showModal()
+PASS HTMLDialogElement interface: operation close(optional DOMString)
+PASS HTMLScriptElement interface: existence and properties of interface object
+PASS HTMLScriptElement interface object length
+PASS HTMLScriptElement interface object name
+PASS HTMLScriptElement interface: existence and properties of interface prototype object
+PASS HTMLScriptElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLScriptElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLScriptElement interface: attribute src
+PASS HTMLScriptElement interface: attribute type
+PASS HTMLScriptElement interface: attribute noModule
+PASS HTMLScriptElement interface: attribute async
+PASS HTMLScriptElement interface: attribute defer
+PASS HTMLScriptElement interface: attribute crossOrigin
+PASS HTMLScriptElement interface: attribute text
+PASS HTMLScriptElement interface: attribute integrity
+PASS HTMLScriptElement interface: attribute referrerPolicy
+PASS HTMLScriptElement interface: attribute charset
+PASS HTMLScriptElement interface: attribute event
+PASS HTMLScriptElement interface: attribute htmlFor
+PASS HTMLScriptElement must be primary interface of document.createElement("script")
+PASS Stringification of document.createElement("script")
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "src" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "type" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "noModule" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "async" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "defer" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "crossOrigin" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "text" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "integrity" with the proper type
+FAIL HTMLScriptElement interface: document.createElement("script") must inherit property "referrerPolicy" with the proper type assert_equals: expected "string" but got "object"
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "charset" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "event" with the proper type
+PASS HTMLScriptElement interface: document.createElement("script") must inherit property "htmlFor" with the proper type
+PASS HTMLTemplateElement interface: existence and properties of interface object
+PASS HTMLTemplateElement interface object length
+PASS HTMLTemplateElement interface object name
+PASS HTMLTemplateElement interface: existence and properties of interface prototype object
+PASS HTMLTemplateElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLTemplateElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLTemplateElement interface: attribute content
+PASS HTMLTemplateElement must be primary interface of document.createElement("template")
+PASS Stringification of document.createElement("template")
+PASS HTMLTemplateElement interface: document.createElement("template") must inherit property "content" with the proper type
+PASS HTMLSlotElement interface: existence and properties of interface object
+PASS HTMLSlotElement interface object length
+PASS HTMLSlotElement interface object name
+PASS HTMLSlotElement interface: existence and properties of interface prototype object
+PASS HTMLSlotElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLSlotElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLSlotElement interface: attribute name
+PASS HTMLSlotElement interface: operation assignedNodes(optional AssignedNodesOptions)
+PASS HTMLSlotElement interface: operation assignedElements(optional AssignedNodesOptions)
+PASS HTMLSlotElement must be primary interface of document.createElement("slot")
+PASS Stringification of document.createElement("slot")
+PASS HTMLSlotElement interface: document.createElement("slot") must inherit property "name" with the proper type
+PASS HTMLSlotElement interface: document.createElement("slot") must inherit property "assignedNodes(optional AssignedNodesOptions)" with the proper type
+PASS HTMLSlotElement interface: calling assignedNodes(optional AssignedNodesOptions) on document.createElement("slot") with too few arguments must throw TypeError
+PASS HTMLSlotElement interface: document.createElement("slot") must inherit property "assignedElements(optional AssignedNodesOptions)" with the proper type
+PASS HTMLSlotElement interface: calling assignedElements(optional AssignedNodesOptions) on document.createElement("slot") with too few arguments must throw TypeError
+PASS HTMLCanvasElement interface: existence and properties of interface object
+PASS HTMLCanvasElement interface object length
+PASS HTMLCanvasElement interface object name
+PASS HTMLCanvasElement interface: existence and properties of interface prototype object
+PASS HTMLCanvasElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLCanvasElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLCanvasElement interface: attribute width
+PASS HTMLCanvasElement interface: attribute height
+PASS HTMLCanvasElement interface: operation getContext(DOMString, optional any)
+PASS HTMLCanvasElement interface: operation toDataURL(optional DOMString, optional any)
+PASS HTMLCanvasElement interface: operation toBlob(BlobCallback, optional DOMString, optional any)
+PASS HTMLCanvasElement interface: operation transferControlToOffscreen()
+PASS HTMLCanvasElement must be primary interface of document.createElement("canvas")
+PASS Stringification of document.createElement("canvas")
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "width" with the proper type
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "height" with the proper type
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "getContext(DOMString, optional any)" with the proper type
+PASS HTMLCanvasElement interface: calling getContext(DOMString, optional any) on document.createElement("canvas") with too few arguments must throw TypeError
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "toDataURL(optional DOMString, optional any)" with the proper type
+PASS HTMLCanvasElement interface: calling toDataURL(optional DOMString, optional any) on document.createElement("canvas") with too few arguments must throw TypeError
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "toBlob(BlobCallback, optional DOMString, optional any)" with the proper type
+PASS HTMLCanvasElement interface: calling toBlob(BlobCallback, optional DOMString, optional any) on document.createElement("canvas") with too few arguments must throw TypeError
+PASS HTMLCanvasElement interface: document.createElement("canvas") must inherit property "transferControlToOffscreen()" with the proper type
+PASS HTMLMarqueeElement interface: existence and properties of interface object
+PASS HTMLMarqueeElement interface object length
+PASS HTMLMarqueeElement interface object name
+PASS HTMLMarqueeElement interface: existence and properties of interface prototype object
+PASS HTMLMarqueeElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLMarqueeElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLMarqueeElement interface: attribute behavior
+PASS HTMLMarqueeElement interface: attribute bgColor
+PASS HTMLMarqueeElement interface: attribute direction
+PASS HTMLMarqueeElement interface: attribute height
+PASS HTMLMarqueeElement interface: attribute hspace
+PASS HTMLMarqueeElement interface: attribute loop
+PASS HTMLMarqueeElement interface: attribute scrollAmount
+PASS HTMLMarqueeElement interface: attribute scrollDelay
+PASS HTMLMarqueeElement interface: attribute trueSpeed
+PASS HTMLMarqueeElement interface: attribute vspace
+PASS HTMLMarqueeElement interface: attribute width
+FAIL HTMLMarqueeElement interface: attribute onbounce assert_true: The prototype object must have a property "onbounce" expected true got false
+FAIL HTMLMarqueeElement interface: attribute onfinish assert_true: The prototype object must have a property "onfinish" expected true got false
+FAIL HTMLMarqueeElement interface: attribute onstart assert_true: The prototype object must have a property "onstart" expected true got false
+PASS HTMLMarqueeElement interface: operation start()
+PASS HTMLMarqueeElement interface: operation stop()
+PASS HTMLMarqueeElement must be primary interface of document.createElement("marquee")
+PASS Stringification of document.createElement("marquee")
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "behavior" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "bgColor" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "direction" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "height" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "hspace" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "loop" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "scrollAmount" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "scrollDelay" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "trueSpeed" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "vspace" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "width" with the proper type
+FAIL HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onbounce" with the proper type assert_inherits: property "onbounce" not found in prototype chain
+FAIL HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onfinish" with the proper type assert_inherits: property "onfinish" not found in prototype chain
+FAIL HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onstart" with the proper type assert_inherits: property "onstart" not found in prototype chain
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "start()" with the proper type
+PASS HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "stop()" with the proper type
+PASS HTMLFrameSetElement interface: existence and properties of interface object
+PASS HTMLFrameSetElement interface object length
+PASS HTMLFrameSetElement interface object name
+PASS HTMLFrameSetElement interface: existence and properties of interface prototype object
+PASS HTMLFrameSetElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFrameSetElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFrameSetElement interface: attribute cols
+PASS HTMLFrameSetElement interface: attribute rows
+PASS HTMLFrameSetElement interface: attribute onafterprint
+PASS HTMLFrameSetElement interface: attribute onbeforeprint
+PASS HTMLFrameSetElement interface: attribute onbeforeunload
+PASS HTMLFrameSetElement interface: attribute onhashchange
+PASS HTMLFrameSetElement interface: attribute onlanguagechange
+PASS HTMLFrameSetElement interface: attribute onmessage
+PASS HTMLFrameSetElement interface: attribute onmessageerror
+PASS HTMLFrameSetElement interface: attribute onoffline
+PASS HTMLFrameSetElement interface: attribute ononline
+PASS HTMLFrameSetElement interface: attribute onpagehide
+PASS HTMLFrameSetElement interface: attribute onpageshow
+PASS HTMLFrameSetElement interface: attribute onpopstate
+PASS HTMLFrameSetElement interface: attribute onrejectionhandled
+PASS HTMLFrameSetElement interface: attribute onstorage
+PASS HTMLFrameSetElement interface: attribute onunhandledrejection
+PASS HTMLFrameSetElement interface: attribute onunload
+PASS HTMLFrameSetElement must be primary interface of document.createElement("frameset")
+PASS Stringification of document.createElement("frameset")
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "cols" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "rows" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onafterprint" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onbeforeprint" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onbeforeunload" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onhashchange" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onlanguagechange" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onmessage" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onmessageerror" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onoffline" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "ononline" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpagehide" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpageshow" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpopstate" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onrejectionhandled" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onstorage" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onunhandledrejection" with the proper type
+PASS HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onunload" with the proper type
+PASS HTMLFrameElement interface: existence and properties of interface object
+PASS HTMLFrameElement interface object length
+PASS HTMLFrameElement interface object name
+PASS HTMLFrameElement interface: existence and properties of interface prototype object
+PASS HTMLFrameElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFrameElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFrameElement interface: attribute name
+PASS HTMLFrameElement interface: attribute scrolling
+PASS HTMLFrameElement interface: attribute src
+PASS HTMLFrameElement interface: attribute frameBorder
+PASS HTMLFrameElement interface: attribute longDesc
+PASS HTMLFrameElement interface: attribute noResize
+PASS HTMLFrameElement interface: attribute contentDocument
+PASS HTMLFrameElement interface: attribute contentWindow
+PASS HTMLFrameElement interface: attribute marginHeight
+PASS HTMLFrameElement interface: attribute marginWidth
+PASS HTMLFrameElement must be primary interface of document.createElement("frame")
+PASS Stringification of document.createElement("frame")
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "name" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "scrolling" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "src" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "frameBorder" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "longDesc" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "noResize" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "contentDocument" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "contentWindow" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "marginHeight" with the proper type
+PASS HTMLFrameElement interface: document.createElement("frame") must inherit property "marginWidth" with the proper type
+PASS HTMLDirectoryElement interface: existence and properties of interface object
+PASS HTMLDirectoryElement interface object length
+PASS HTMLDirectoryElement interface object name
+PASS HTMLDirectoryElement interface: existence and properties of interface prototype object
+PASS HTMLDirectoryElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLDirectoryElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLDirectoryElement interface: attribute compact
+PASS HTMLDirectoryElement must be primary interface of document.createElement("dir")
+PASS Stringification of document.createElement("dir")
+PASS HTMLDirectoryElement interface: document.createElement("dir") must inherit property "compact" with the proper type
+PASS HTMLFontElement interface: existence and properties of interface object
+PASS HTMLFontElement interface object length
+PASS HTMLFontElement interface object name
+PASS HTMLFontElement interface: existence and properties of interface prototype object
+PASS HTMLFontElement interface: existence and properties of interface prototype object's "constructor" property
+PASS HTMLFontElement interface: existence and properties of interface prototype object's @@unscopables property
+PASS HTMLFontElement interface: attribute color
+PASS HTMLFontElement interface: attribute face
+PASS HTMLFontElement interface: attribute size
+PASS HTMLFontElement must be primary interface of document.createElement("font")
+PASS Stringification of document.createElement("font")
+PASS HTMLFontElement interface: document.createElement("font") must inherit property "color" with the proper type
+PASS HTMLFontElement interface: document.createElement("font") must inherit property "face" with the proper type
+PASS HTMLFontElement interface: document.createElement("font") must inherit property "size" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-expected.txt b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-expected.txt
new file mode 100644
index 0000000..d13c68ba
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-expected.txt
@@ -0,0 +1,29 @@
+This is a testharness.js-based test.
+PASS rendered legend with display: block
+PASS rendered legend with display: table
+FAIL rendered legend with display: table-row-group assert_equals: display: table-row-group is not supported expected "table-row-group" but got "block"
+FAIL rendered legend with display: table-header-group assert_equals: display: table-header-group is not supported expected "table-header-group" but got "block"
+FAIL rendered legend with display: table-footer-group assert_equals: display: table-footer-group is not supported expected "table-footer-group" but got "block"
+FAIL rendered legend with display: table-row assert_equals: display: table-row is not supported expected "table-row" but got "block"
+FAIL rendered legend with display: table-cell assert_equals: display: table-cell is not supported expected "table-cell" but got "block"
+FAIL rendered legend with display: table-column-group assert_equals: display: table-column-group is not supported expected "table-column-group" but got "block"
+FAIL rendered legend with display: table-column assert_equals: display: table-column is not supported expected "table-column" but got "block"
+FAIL rendered legend with display: table-caption assert_equals: display: table-caption is not supported expected "table-caption" but got "block"
+PASS rendered legend with display: list-item
+FAIL rendered legend with display: flow assert_equals: display: flow is not supported expected "flow" but got "block"
+PASS rendered legend with display: flow-root
+FAIL rendered legend with display: run-in assert_equals: display: run-in is not supported expected "run-in" but got "block"
+FAIL rendered legend with display: inline assert_equals: display: inline is not supported expected "inline" but got "block"
+FAIL rendered legend with display: inline-block assert_equals: display: inline-block is not supported expected "inline-block" but got "block"
+FAIL rendered legend with display: inline-table assert_equals: display: inline-table is not supported expected "inline-table" but got "table"
+FAIL rendered legend with display: ruby assert_equals: display: ruby is not supported expected "ruby" but got "block"
+FAIL rendered legend with display: ruby-base assert_equals: display: ruby-base is not supported expected "ruby-base" but got "block"
+FAIL rendered legend with display: ruby-text assert_equals: display: ruby-text is not supported expected "ruby-text" but got "block"
+FAIL rendered legend with display: ruby-base-container assert_equals: display: ruby-base-container is not supported expected "ruby-base-container" but got "block"
+FAIL rendered legend with display: ruby-text-container assert_equals: display: ruby-text-container is not supported expected "ruby-text-container" but got "block"
+PASS rendered legend with display: grid
+FAIL rendered legend with display: inline-grid assert_equals: display: inline-grid is not supported expected "inline-grid" but got "grid"
+PASS rendered legend with display: flex
+FAIL rendered legend with display: inline-flex assert_equals: display: inline-flex is not supported expected "inline-flex" but got "flex"
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/background-repeat-with-background-color-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/background-repeat-with-background-color-expected.png
deleted file mode 100644
index 2416fef2..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/background-repeat-with-background-color-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize05-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize05-expected.png
deleted file mode 100644
index 50d0c4e9..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize05-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize09-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize09-expected.png
deleted file mode 100644
index 5045e48..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize09-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize10-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize10-expected.png
deleted file mode 100644
index 18c7735..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize10-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize11-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize11-expected.png
deleted file mode 100644
index ef16225..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize11-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize15-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize15-expected.png
deleted file mode 100644
index 97e1451..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize15-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize18-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize18-expected.png
deleted file mode 100644
index b16289d8..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize18-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize19-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize19-expected.png
deleted file mode 100644
index caf1f2b..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize19-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize21-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize21-expected.png
deleted file mode 100644
index b16289d8..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize21-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize22-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize22-expected.png
deleted file mode 100644
index d6a8962..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/backgrounds/size/backgroundSize22-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-01-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-01-expected.png
deleted file mode 100644
index e394e18..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-01-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-border-radius-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-border-radius-expected.png
deleted file mode 100644
index 5883c51..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-border-radius-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-longhand-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-longhand-expected.png
deleted file mode 100644
index e394e18..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-longhand-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-outset-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-outset-expected.png
deleted file mode 100644
index d0c19ae..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-outset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-outset-in-shorthand-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-outset-in-shorthand-expected.png
deleted file mode 100644
index d0c19ae..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-outset-in-shorthand-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-repeat-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-repeat-expected.png
deleted file mode 100644
index e394e18..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-repeat-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-scaled-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-scaled-expected.png
deleted file mode 100644
index e9c00e3..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-scaled-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-scrambled-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-scrambled-expected.png
deleted file mode 100644
index e394e18..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-scrambled-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-slices-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-slices-expected.png
deleted file mode 100644
index 7666df9..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-slices-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-source-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-source-expected.png
deleted file mode 100644
index e394e18..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-source-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/inline-mask-overlay-image-outset-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/inline-mask-overlay-image-outset-expected.png
deleted file mode 100644
index 10a6893d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/inline-mask-overlay-image-outset-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/scaled-border-image-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/scaled-border-image-expected.png
deleted file mode 100644
index 56f9da5..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/scaled-border-image-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/forms/color-scheme/media/video-overlay-menu-expected.png
deleted file mode 100644
index 70f9f23d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/reflections/reflection-masks-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/reflections/reflection-masks-expected.png
deleted file mode 100644
index 16a75a3d..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/reflections/reflection-masks-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/reflections/reflection-masks-opacity-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/reflections/reflection-masks-opacity-expected.png
deleted file mode 100644
index 8982998..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/reflections/reflection-masks-opacity-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/webgl/texImage-imageBitmap-from-blob-resize-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/webgl/texImage-imageBitmap-from-blob-resize-expected.png
deleted file mode 100644
index 99586a4..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/webgl/texImage-imageBitmap-from-blob-resize-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/webgl/texImage-imageBitmap-from-canvas-resize-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/webgl/texImage-imageBitmap-from-canvas-resize-expected.png
deleted file mode 100644
index 99586a4..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/webgl/texImage-imageBitmap-from-canvas-resize-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/webgl/texImage-imageBitmap-from-image-resize-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/webgl/texImage-imageBitmap-from-image-resize-expected.png
deleted file mode 100644
index 99586a4..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/webgl/texImage-imageBitmap-from-image-resize-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/webgl/texImage-imageBitmap-from-imageData-resize-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/webgl/texImage-imageBitmap-from-imageData-resize-expected.png
deleted file mode 100644
index 99586a4..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/webgl/texImage-imageBitmap-from-imageData-resize-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/webgl/texImage-imageBitmap-from-offscreen-canvas-resize-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/webgl/texImage-imageBitmap-from-offscreen-canvas-resize-expected.png
deleted file mode 100644
index 99586a4..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/webgl/texImage-imageBitmap-from-offscreen-canvas-resize-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/http/tests/misc/slow-loading-image-in-pattern-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/http/tests/misc/slow-loading-image-in-pattern-expected.png
deleted file mode 100644
index 5778442..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/http/tests/misc/slow-loading-image-in-pattern-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/images/color-profile-background-image-cover-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/images/color-profile-background-image-cover-expected.png
deleted file mode 100644
index d6f8669..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/images/color-profile-background-image-cover-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/images/color-profile-background-image-space-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/images/color-profile-background-image-space-expected.png
deleted file mode 100644
index 2fa6ca1b..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/images/color-profile-background-image-space-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/images/color-profile-border-image-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/images/color-profile-border-image-expected.png
deleted file mode 100644
index a7cd2e4..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/images/color-profile-border-image-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/images/color-profile-border-image-source-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/images/color-profile-border-image-source-expected.png
deleted file mode 100644
index e394e18..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/images/color-profile-border-image-source-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/images/color-profile-svg-fill-text-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/images/color-profile-svg-fill-text-expected.png
deleted file mode 100644
index d9d108b..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/images/color-profile-svg-fill-text-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/images/sprite-no-bleed-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/images/sprite-no-bleed-expected.png
deleted file mode 100644
index 143e3672..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/images/sprite-no-bleed-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/controls-after-reload-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/controls-after-reload-expected.png
deleted file mode 100644
index d7ee63f0..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/controls-after-reload-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/controls-strict-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/controls-strict-expected.png
deleted file mode 100644
index 70f3b153..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/controls-strict-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/controls-styling-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/controls-styling-expected.png
deleted file mode 100644
index 22a52af0..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/controls-styling-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/controls-styling-strict-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/controls-styling-strict-expected.png
deleted file mode 100644
index 0448d1b..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/controls-styling-strict-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/controls-without-preload-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/controls-without-preload-expected.png
deleted file mode 100644
index b7c4ffff..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/controls-without-preload-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/controls/paint-controls-webkit-appearance-none-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/controls/paint-controls-webkit-appearance-none-expected.png
deleted file mode 100644
index a028cfff..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/controls/paint-controls-webkit-appearance-none-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/video-display-toggle-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/video-display-toggle-expected.png
deleted file mode 100644
index d6f39d5b..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/video-display-toggle-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/video-no-audio-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/video-no-audio-expected.png
deleted file mode 100644
index a3c6c063..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/video-no-audio-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/video-poster-scale-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/video-poster-scale-expected.png
deleted file mode 100644
index 026f161e..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/video-poster-scale-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/video-zoom-controls-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/video-zoom-controls-expected.png
deleted file mode 100644
index 5f7482c..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/media/video-zoom-controls-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/paint/invalidation/svg/js-update-image-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/paint/invalidation/svg/js-update-image-expected.png
deleted file mode 100644
index c93cffd..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/paint/invalidation/svg/js-update-image-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/convolution-crash-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/convolution-crash-expected.png
deleted file mode 100644
index 1adac69..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/convolution-crash-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/createImageElement-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/createImageElement-expected.png
deleted file mode 100644
index 3f310b22..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/createImageElement-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/createImageElement2-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/createImageElement2-expected.png
deleted file mode 100644
index e8414fa1..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/createImageElement2-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/image-parent-translation-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/image-parent-translation-expected.png
deleted file mode 100644
index 5b93bd5b..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/image-parent-translation-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/image-small-width-height-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/image-small-width-height-expected.png
deleted file mode 100644
index f29b1a9a..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/image-small-width-height-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/js-update-image-and-display-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/js-update-image-and-display-expected.png
deleted file mode 100644
index c93cffd..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/js-update-image-and-display-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/js-update-image-and-display2-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/js-update-image-and-display2-expected.png
deleted file mode 100644
index c93cffd..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/js-update-image-and-display2-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/js-update-image-and-display3-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/js-update-image-and-display3-expected.png
deleted file mode 100644
index c93cffd..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/js-update-image-and-display3-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/pointer-events-image-css-transform-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/pointer-events-image-css-transform-expected.png
deleted file mode 100644
index 324d16e5..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/pointer-events-image-css-transform-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/pointer-events-image-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/pointer-events-image-expected.png
deleted file mode 100644
index 324d16e5..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/pointer-events-image-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/text-image-opacity-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/text-image-opacity-expected.png
deleted file mode 100644
index 0587824..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/text-image-opacity-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/use-on-g-containing-foreignObject-and-image-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/use-on-g-containing-foreignObject-and-image-expected.png
deleted file mode 100644
index 6ba300a..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/custom/use-on-g-containing-foreignObject-and-image-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-dom-preserveAspectRatio-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-dom-preserveAspectRatio-attr-expected.png
deleted file mode 100644
index 682509b..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-dom-preserveAspectRatio-attr-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-dom-width-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-dom-width-attr-expected.png
deleted file mode 100644
index 3a6c4546..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-dom-width-attr-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-dom-x-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-dom-x-attr-expected.png
deleted file mode 100644
index 3a6c4546..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-dom-x-attr-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-dom-y-attr-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-dom-y-attr-expected.png
deleted file mode 100644
index 3a6c4546..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-dom-y-attr-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-svgdom-height-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-svgdom-height-prop-expected.png
deleted file mode 100644
index 3a6c4546..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-svgdom-height-prop-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-svgdom-preserveAspectRatio-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-svgdom-preserveAspectRatio-prop-expected.png
deleted file mode 100644
index 3a6c4546..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-svgdom-preserveAspectRatio-prop-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-svgdom-width-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-svgdom-width-prop-expected.png
deleted file mode 100644
index 3a6c4546..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-svgdom-width-prop-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-svgdom-x-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-svgdom-x-prop-expected.png
deleted file mode 100644
index 3a6c4546..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-svgdom-x-prop-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-svgdom-y-prop-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-svgdom-y-prop-expected.png
deleted file mode 100644
index 3a6c4546..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/dynamic-updates/SVGImageElement-svgdom-y-prop-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/wicd/test-rightsizing-b-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/wicd/test-rightsizing-b-expected.png
deleted file mode 100644
index 909c1c7..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/wicd/test-rightsizing-b-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/tables/mozilla/bugs/bug11026-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/tables/mozilla/bugs/bug11026-expected.png
deleted file mode 100644
index e3c6d78..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/tables/mozilla/bugs/bug11026-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/tables/mozilla/bugs/bug4093-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/tables/mozilla/bugs/bug4093-expected.png
deleted file mode 100644
index 570e2c2..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/tables/mozilla/bugs/bug4093-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/dark-color-scheme/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
deleted file mode 100644
index e7b148c..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/exotic-color-space/images/color-profile-group-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/exotic-color-space/images/color-profile-group-expected.png
deleted file mode 100644
index 5c047a2..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/exotic-color-space/images/color-profile-group-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/exotic-color-space/images/color-profile-svg-fill-text-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/exotic-color-space/images/color-profile-svg-fill-text-expected.png
deleted file mode 100644
index e17e9ce..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/exotic-color-space/images/color-profile-svg-fill-text-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/exotic-color-space/images/sprite-no-bleed-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/exotic-color-space/images/sprite-no-bleed-expected.png
deleted file mode 100644
index 8ce49a4a..0000000
--- a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/exotic-color-space/images/sprite-no-bleed-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-border-radius-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-border-radius-expected.png
new file mode 100644
index 0000000..cb230c1
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-border-radius-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-filter-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-filter-expected.png
new file mode 100644
index 0000000..0af66ee
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-filter-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-image-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-image-expected.png
new file mode 100644
index 0000000..fbbb309
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/color-profile-border-image-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/color-profile-border-image-expected.png
new file mode 100644
index 0000000..f83899f
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/color-profile-border-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/color-profile-image-canvas-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/color-profile-image-canvas-expected.png
new file mode 100644
index 0000000..200168c
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/color-profile-image-canvas-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/color-profile-image-canvas-pattern-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/color-profile-image-canvas-pattern-expected.png
new file mode 100644
index 0000000..e492aa9a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/color-profile-image-canvas-pattern-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/color-profile-image-filter-all-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/color-profile-image-filter-all-expected.png
new file mode 100644
index 0000000..ffd96a8
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/color-profile-image-filter-all-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/color-profile-object-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/color-profile-object-expected.png
new file mode 100644
index 0000000..5e115ce5
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/color-profile-object-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-filter-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-filter-expected.png
new file mode 100644
index 0000000..0af66ee
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-filter-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-image-expected.png b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-image-expected.png
new file mode 100644
index 0000000..fbbb309
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_block_frag/external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-expected.txt b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_block_frag/external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-expected.txt
new file mode 100644
index 0000000..d13c68ba
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/layout_ng_block_frag/external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-expected.txt
@@ -0,0 +1,29 @@
+This is a testharness.js-based test.
+PASS rendered legend with display: block
+PASS rendered legend with display: table
+FAIL rendered legend with display: table-row-group assert_equals: display: table-row-group is not supported expected "table-row-group" but got "block"
+FAIL rendered legend with display: table-header-group assert_equals: display: table-header-group is not supported expected "table-header-group" but got "block"
+FAIL rendered legend with display: table-footer-group assert_equals: display: table-footer-group is not supported expected "table-footer-group" but got "block"
+FAIL rendered legend with display: table-row assert_equals: display: table-row is not supported expected "table-row" but got "block"
+FAIL rendered legend with display: table-cell assert_equals: display: table-cell is not supported expected "table-cell" but got "block"
+FAIL rendered legend with display: table-column-group assert_equals: display: table-column-group is not supported expected "table-column-group" but got "block"
+FAIL rendered legend with display: table-column assert_equals: display: table-column is not supported expected "table-column" but got "block"
+FAIL rendered legend with display: table-caption assert_equals: display: table-caption is not supported expected "table-caption" but got "block"
+PASS rendered legend with display: list-item
+FAIL rendered legend with display: flow assert_equals: display: flow is not supported expected "flow" but got "block"
+PASS rendered legend with display: flow-root
+FAIL rendered legend with display: run-in assert_equals: display: run-in is not supported expected "run-in" but got "block"
+FAIL rendered legend with display: inline assert_equals: display: inline is not supported expected "inline" but got "block"
+FAIL rendered legend with display: inline-block assert_equals: display: inline-block is not supported expected "inline-block" but got "block"
+FAIL rendered legend with display: inline-table assert_equals: display: inline-table is not supported expected "inline-table" but got "table"
+FAIL rendered legend with display: ruby assert_equals: display: ruby is not supported expected "ruby" but got "block"
+FAIL rendered legend with display: ruby-base assert_equals: display: ruby-base is not supported expected "ruby-base" but got "block"
+FAIL rendered legend with display: ruby-text assert_equals: display: ruby-text is not supported expected "ruby-text" but got "block"
+FAIL rendered legend with display: ruby-base-container assert_equals: display: ruby-base-container is not supported expected "ruby-base-container" but got "block"
+FAIL rendered legend with display: ruby-text-container assert_equals: display: ruby-text-container is not supported expected "ruby-text-container" but got "block"
+PASS rendered legend with display: grid
+FAIL rendered legend with display: inline-grid assert_equals: display: inline-grid is not supported expected "inline-grid" but got "grid"
+PASS rendered legend with display: flex
+FAIL rendered legend with display: inline-flex assert_equals: display: inline-flex is not supported expected "inline-flex" but got "flex"
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/link-disabled-old-behavior/external/wpt/css/cssom/idlharness-expected.txt b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/link-disabled-old-behavior/external/wpt/css/cssom/idlharness-expected.txt
new file mode 100644
index 0000000..185f987
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/link-disabled-old-behavior/external/wpt/css/cssom/idlharness-expected.txt
@@ -0,0 +1,441 @@
+This is a testharness.js-based test.
+Found 435 tests; 380 PASS, 55 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS idl_test validation
+PASS Partial interface CSSStyleSheet: original interface defined
+PASS Partial interface CSSStyleSheet: member names are unique
+PASS Partial interface mixin DocumentOrShadowRoot: original interface mixin defined
+PASS Partial interface mixin DocumentOrShadowRoot: member names are unique
+PASS Partial interface Window: original interface defined
+PASS Partial interface Window: member names are unique
+PASS Partial interface mixin DocumentOrShadowRoot[2]: member names are unique
+PASS Partial interface HTMLLinkElement: member names are unique
+PASS Partial interface HTMLStyleElement: member names are unique
+PASS Partial interface Window[2]: member names are unique
+PASS ProcessingInstruction includes LinkStyle: member names are unique
+PASS HTMLElement includes ElementCSSInlineStyle: member names are unique
+PASS HTMLElement includes GlobalEventHandlers: member names are unique
+PASS HTMLElement includes DocumentAndElementEventHandlers: member names are unique
+PASS HTMLElement includes ElementContentEditable: member names are unique
+PASS HTMLElement includes HTMLOrSVGElement: member names are unique
+PASS SVGElement includes ElementCSSInlineStyle: member names are unique
+PASS SVGElement includes GlobalEventHandlers: member names are unique
+PASS SVGElement includes DocumentAndElementEventHandlers: member names are unique
+PASS SVGElement includes SVGElementInstance: member names are unique
+PASS SVGElement includes HTMLOrSVGElement: member names are unique
+PASS SVGStyleElement includes LinkStyle: member names are unique
+PASS HTMLLinkElement includes LinkStyle: member names are unique
+PASS HTMLStyleElement includes LinkStyle: member names are unique
+PASS Window includes GlobalEventHandlers: member names are unique
+PASS Window includes WindowEventHandlers: member names are unique
+PASS Window includes WindowOrWorkerGlobalScope: member names are unique
+PASS Window includes AnimationFrameProvider: member names are unique
+PASS Window includes WindowSessionStorage: member names are unique
+PASS Window includes WindowLocalStorage: member names are unique
+PASS Document includes NonElementParentNode: member names are unique
+PASS Document includes DocumentOrShadowRoot: member names are unique
+PASS Document includes ParentNode: member names are unique
+PASS Document includes XPathEvaluatorBase: member names are unique
+PASS DocumentFragment includes NonElementParentNode: member names are unique
+PASS DocumentFragment includes ParentNode: member names are unique
+PASS ShadowRoot includes DocumentOrShadowRoot: member names are unique
+PASS Element includes ParentNode: member names are unique
+PASS Element includes NonDocumentTypeChildNode: member names are unique
+PASS Element includes ChildNode: member names are unique
+PASS Element includes Slottable: member names are unique
+PASS CharacterData includes NonDocumentTypeChildNode: member names are unique
+PASS CharacterData includes ChildNode: member names are unique
+PASS MediaList interface: existence and properties of interface object
+PASS MediaList interface object length
+PASS MediaList interface object name
+PASS MediaList interface: existence and properties of interface prototype object
+PASS MediaList interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaList interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaList interface: attribute mediaText
+PASS MediaList interface: stringifier
+PASS MediaList interface: attribute length
+PASS MediaList interface: operation item(unsigned long)
+PASS MediaList interface: operation appendMedium(CSSOMString)
+PASS MediaList interface: operation deleteMedium(CSSOMString)
+PASS MediaList must be primary interface of sheet.media
+PASS Stringification of sheet.media
+PASS MediaList interface: sheet.media must inherit property "mediaText" with the proper type
+PASS MediaList interface: sheet.media must inherit property "length" with the proper type
+PASS MediaList interface: sheet.media must inherit property "item(unsigned long)" with the proper type
+PASS MediaList interface: calling item(unsigned long) on sheet.media with too few arguments must throw TypeError
+PASS MediaList interface: sheet.media must inherit property "appendMedium(CSSOMString)" with the proper type
+PASS MediaList interface: calling appendMedium(CSSOMString) on sheet.media with too few arguments must throw TypeError
+PASS MediaList interface: sheet.media must inherit property "deleteMedium(CSSOMString)" with the proper type
+PASS MediaList interface: calling deleteMedium(CSSOMString) on sheet.media with too few arguments must throw TypeError
+PASS StyleSheet interface: existence and properties of interface object
+PASS StyleSheet interface object length
+PASS StyleSheet interface object name
+PASS StyleSheet interface: existence and properties of interface prototype object
+PASS StyleSheet interface: existence and properties of interface prototype object's "constructor" property
+PASS StyleSheet interface: existence and properties of interface prototype object's @@unscopables property
+PASS StyleSheet interface: attribute type
+PASS StyleSheet interface: attribute href
+PASS StyleSheet interface: attribute ownerNode
+PASS StyleSheet interface: attribute parentStyleSheet
+PASS StyleSheet interface: attribute title
+PASS StyleSheet interface: attribute media
+PASS StyleSheet interface: attribute disabled
+FAIL CSSStyleSheet interface: existence and properties of interface object assert_throws_js: interface object didn't throw TypeError when called as a constructor function "function() {
+                new interface_object();
+            }" did not throw
+PASS CSSStyleSheet interface object length
+PASS CSSStyleSheet interface object name
+PASS CSSStyleSheet interface: existence and properties of interface prototype object
+PASS CSSStyleSheet interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSStyleSheet interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSStyleSheet interface: attribute ownerRule
+PASS CSSStyleSheet interface: attribute cssRules
+PASS CSSStyleSheet interface: operation insertRule(CSSOMString, optional unsigned long)
+PASS CSSStyleSheet interface: operation deleteRule(unsigned long)
+PASS CSSStyleSheet interface: attribute rules
+PASS CSSStyleSheet interface: operation addRule(optional DOMString, optional DOMString, optional unsigned long)
+PASS CSSStyleSheet interface: operation removeRule(optional unsigned long)
+PASS CSSStyleSheet must be primary interface of sheet
+PASS Stringification of sheet
+PASS CSSStyleSheet interface: sheet must inherit property "ownerRule" with the proper type
+PASS CSSStyleSheet interface: sheet must inherit property "cssRules" with the proper type
+PASS CSSStyleSheet interface: sheet must inherit property "insertRule(CSSOMString, optional unsigned long)" with the proper type
+PASS CSSStyleSheet interface: calling insertRule(CSSOMString, optional unsigned long) on sheet with too few arguments must throw TypeError
+PASS CSSStyleSheet interface: sheet must inherit property "deleteRule(unsigned long)" with the proper type
+PASS CSSStyleSheet interface: calling deleteRule(unsigned long) on sheet with too few arguments must throw TypeError
+PASS CSSStyleSheet interface: sheet must inherit property "rules" with the proper type
+PASS CSSStyleSheet interface: sheet must inherit property "addRule(optional DOMString, optional DOMString, optional unsigned long)" with the proper type
+PASS CSSStyleSheet interface: calling addRule(optional DOMString, optional DOMString, optional unsigned long) on sheet with too few arguments must throw TypeError
+PASS CSSStyleSheet interface: sheet must inherit property "removeRule(optional unsigned long)" with the proper type
+PASS CSSStyleSheet interface: calling removeRule(optional unsigned long) on sheet with too few arguments must throw TypeError
+PASS StyleSheet interface: sheet must inherit property "type" with the proper type
+PASS StyleSheet interface: sheet must inherit property "href" with the proper type
+PASS StyleSheet interface: sheet must inherit property "ownerNode" with the proper type
+PASS StyleSheet interface: sheet must inherit property "parentStyleSheet" with the proper type
+PASS StyleSheet interface: sheet must inherit property "title" with the proper type
+PASS StyleSheet interface: sheet must inherit property "media" with the proper type
+PASS StyleSheet interface: sheet must inherit property "disabled" with the proper type
+PASS StyleSheetList interface: existence and properties of interface object
+PASS StyleSheetList interface object length
+PASS StyleSheetList interface object name
+PASS StyleSheetList interface: existence and properties of interface prototype object
+PASS StyleSheetList interface: existence and properties of interface prototype object's "constructor" property
+PASS StyleSheetList interface: existence and properties of interface prototype object's @@unscopables property
+PASS StyleSheetList interface: operation item(unsigned long)
+PASS StyleSheetList interface: attribute length
+PASS StyleSheetList must be primary interface of document.styleSheets
+PASS Stringification of document.styleSheets
+PASS StyleSheetList interface: document.styleSheets must inherit property "item(unsigned long)" with the proper type
+PASS StyleSheetList interface: calling item(unsigned long) on document.styleSheets with too few arguments must throw TypeError
+PASS StyleSheetList interface: document.styleSheets must inherit property "length" with the proper type
+PASS CSSRuleList interface: existence and properties of interface object
+PASS CSSRuleList interface object length
+PASS CSSRuleList interface object name
+PASS CSSRuleList interface: existence and properties of interface prototype object
+PASS CSSRuleList interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSRuleList interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSRuleList interface: operation item(unsigned long)
+PASS CSSRuleList interface: attribute length
+PASS CSSRuleList must be primary interface of sheet.cssRules
+PASS Stringification of sheet.cssRules
+PASS CSSRuleList interface: sheet.cssRules must inherit property "item(unsigned long)" with the proper type
+PASS CSSRuleList interface: calling item(unsigned long) on sheet.cssRules with too few arguments must throw TypeError
+PASS CSSRuleList interface: sheet.cssRules must inherit property "length" with the proper type
+PASS CSSRule interface: existence and properties of interface object
+PASS CSSRule interface object length
+PASS CSSRule interface object name
+PASS CSSRule interface: existence and properties of interface prototype object
+PASS CSSRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSRule interface: attribute cssText
+PASS CSSRule interface: attribute parentRule
+PASS CSSRule interface: attribute parentStyleSheet
+PASS CSSRule interface: attribute type
+PASS CSSRule interface: constant STYLE_RULE on interface object
+PASS CSSRule interface: constant STYLE_RULE on interface prototype object
+PASS CSSRule interface: constant CHARSET_RULE on interface object
+PASS CSSRule interface: constant CHARSET_RULE on interface prototype object
+PASS CSSRule interface: constant IMPORT_RULE on interface object
+PASS CSSRule interface: constant IMPORT_RULE on interface prototype object
+PASS CSSRule interface: constant MEDIA_RULE on interface object
+PASS CSSRule interface: constant MEDIA_RULE on interface prototype object
+PASS CSSRule interface: constant FONT_FACE_RULE on interface object
+PASS CSSRule interface: constant FONT_FACE_RULE on interface prototype object
+PASS CSSRule interface: constant PAGE_RULE on interface object
+PASS CSSRule interface: constant PAGE_RULE on interface prototype object
+FAIL CSSRule interface: constant MARGIN_RULE on interface object assert_own_property: expected property "MARGIN_RULE" missing
+FAIL CSSRule interface: constant MARGIN_RULE on interface prototype object assert_own_property: expected property "MARGIN_RULE" missing
+PASS CSSRule interface: constant NAMESPACE_RULE on interface object
+PASS CSSRule interface: constant NAMESPACE_RULE on interface prototype object
+PASS CSSStyleRule interface: existence and properties of interface object
+PASS CSSStyleRule interface object length
+PASS CSSStyleRule interface object name
+PASS CSSStyleRule interface: existence and properties of interface prototype object
+PASS CSSStyleRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSStyleRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSStyleRule interface: attribute selectorText
+PASS CSSStyleRule interface: attribute style
+PASS CSSStyleRule must be primary interface of sheet.cssRules[4]
+PASS Stringification of sheet.cssRules[4]
+PASS CSSStyleRule interface: sheet.cssRules[4] must inherit property "selectorText" with the proper type
+PASS CSSStyleRule interface: sheet.cssRules[4] must inherit property "style" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "cssText" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "parentRule" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "parentStyleSheet" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "type" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "STYLE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "CHARSET_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "IMPORT_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "MEDIA_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "FONT_FACE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "PAGE_RULE" with the proper type
+FAIL CSSRule interface: sheet.cssRules[4] must inherit property "MARGIN_RULE" with the proper type assert_inherits: property "MARGIN_RULE" not found in prototype chain
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "NAMESPACE_RULE" with the proper type
+PASS CSSImportRule interface: existence and properties of interface object
+PASS CSSImportRule interface object length
+PASS CSSImportRule interface object name
+PASS CSSImportRule interface: existence and properties of interface prototype object
+PASS CSSImportRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSImportRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSImportRule interface: attribute href
+PASS CSSImportRule interface: attribute media
+PASS CSSImportRule interface: attribute styleSheet
+PASS CSSImportRule must be primary interface of sheet.cssRules[0]
+PASS Stringification of sheet.cssRules[0]
+PASS CSSImportRule interface: sheet.cssRules[0] must inherit property "href" with the proper type
+PASS CSSImportRule interface: sheet.cssRules[0] must inherit property "media" with the proper type
+PASS CSSImportRule interface: sheet.cssRules[0] must inherit property "styleSheet" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "cssText" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "parentRule" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "parentStyleSheet" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "type" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "STYLE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "CHARSET_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "IMPORT_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "MEDIA_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "FONT_FACE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "PAGE_RULE" with the proper type
+FAIL CSSRule interface: sheet.cssRules[0] must inherit property "MARGIN_RULE" with the proper type assert_inherits: property "MARGIN_RULE" not found in prototype chain
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "NAMESPACE_RULE" with the proper type
+PASS CSSGroupingRule interface: existence and properties of interface object
+PASS CSSGroupingRule interface object length
+PASS CSSGroupingRule interface object name
+PASS CSSGroupingRule interface: existence and properties of interface prototype object
+PASS CSSGroupingRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSGroupingRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSGroupingRule interface: attribute cssRules
+FAIL CSSGroupingRule interface: operation insertRule(CSSOMString, optional unsigned long) assert_equals: property has wrong .length expected 1 but got 2
+PASS CSSGroupingRule interface: operation deleteRule(unsigned long)
+FAIL CSSPageRule interface: existence and properties of interface object assert_equals: prototype of CSSPageRule is not CSSGroupingRule expected function "function CSSGroupingRule() { [native code] }" but got function "function CSSRule() { [native code] }"
+PASS CSSPageRule interface object length
+PASS CSSPageRule interface object name
+FAIL CSSPageRule interface: existence and properties of interface prototype object assert_equals: prototype of CSSPageRule.prototype is not CSSGroupingRule.prototype expected object "[object CSSGroupingRule]" but got object "[object CSSRule]"
+PASS CSSPageRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSPageRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSPageRule interface: attribute selectorText
+PASS CSSPageRule interface: attribute style
+PASS CSSPageRule must be primary interface of sheet.cssRules[2]
+PASS Stringification of sheet.cssRules[2]
+PASS CSSPageRule interface: sheet.cssRules[2] must inherit property "selectorText" with the proper type
+PASS CSSPageRule interface: sheet.cssRules[2] must inherit property "style" with the proper type
+FAIL CSSGroupingRule interface: sheet.cssRules[2] must inherit property "cssRules" with the proper type assert_inherits: property "cssRules" not found in prototype chain
+FAIL CSSGroupingRule interface: sheet.cssRules[2] must inherit property "insertRule(CSSOMString, optional unsigned long)" with the proper type assert_inherits: property "insertRule" not found in prototype chain
+FAIL CSSGroupingRule interface: calling insertRule(CSSOMString, optional unsigned long) on sheet.cssRules[2] with too few arguments must throw TypeError assert_inherits: property "insertRule" not found in prototype chain
+FAIL CSSGroupingRule interface: sheet.cssRules[2] must inherit property "deleteRule(unsigned long)" with the proper type assert_inherits: property "deleteRule" not found in prototype chain
+FAIL CSSGroupingRule interface: calling deleteRule(unsigned long) on sheet.cssRules[2] with too few arguments must throw TypeError assert_inherits: property "deleteRule" not found in prototype chain
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "cssText" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "parentRule" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "parentStyleSheet" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "type" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "STYLE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "CHARSET_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "IMPORT_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "MEDIA_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "FONT_FACE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "PAGE_RULE" with the proper type
+FAIL CSSRule interface: sheet.cssRules[2] must inherit property "MARGIN_RULE" with the proper type assert_inherits: property "MARGIN_RULE" not found in prototype chain
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "NAMESPACE_RULE" with the proper type
+FAIL CSSMarginRule interface: existence and properties of interface object assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface object length assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface object name assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface: attribute name assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface: attribute style assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule must be primary interface of sheet.cssRules[2].cssRules[0] assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL Stringification of sheet.cssRules[2].cssRules[0] assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSMarginRule interface: sheet.cssRules[2].cssRules[0] must inherit property "name" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSMarginRule interface: sheet.cssRules[2].cssRules[0] must inherit property "style" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "cssText" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "parentRule" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "parentStyleSheet" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "type" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "STYLE_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "CHARSET_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "IMPORT_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "MEDIA_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "FONT_FACE_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "PAGE_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "MARGIN_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "NAMESPACE_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+PASS CSSNamespaceRule interface: existence and properties of interface object
+PASS CSSNamespaceRule interface object length
+PASS CSSNamespaceRule interface object name
+PASS CSSNamespaceRule interface: existence and properties of interface prototype object
+PASS CSSNamespaceRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSNamespaceRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSNamespaceRule interface: attribute namespaceURI
+PASS CSSNamespaceRule interface: attribute prefix
+PASS CSSNamespaceRule must be primary interface of sheet.cssRules[1]
+PASS Stringification of sheet.cssRules[1]
+PASS CSSNamespaceRule interface: sheet.cssRules[1] must inherit property "namespaceURI" with the proper type
+PASS CSSNamespaceRule interface: sheet.cssRules[1] must inherit property "prefix" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "cssText" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "parentRule" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "parentStyleSheet" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "type" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "STYLE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "CHARSET_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "IMPORT_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "MEDIA_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "FONT_FACE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "PAGE_RULE" with the proper type
+FAIL CSSRule interface: sheet.cssRules[1] must inherit property "MARGIN_RULE" with the proper type assert_inherits: property "MARGIN_RULE" not found in prototype chain
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "NAMESPACE_RULE" with the proper type
+PASS CSSStyleDeclaration interface: existence and properties of interface object
+PASS CSSStyleDeclaration interface object length
+PASS CSSStyleDeclaration interface object name
+PASS CSSStyleDeclaration interface: existence and properties of interface prototype object
+PASS CSSStyleDeclaration interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSStyleDeclaration interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSStyleDeclaration interface: attribute cssText
+PASS CSSStyleDeclaration interface: attribute length
+PASS CSSStyleDeclaration interface: operation item(unsigned long)
+PASS CSSStyleDeclaration interface: operation getPropertyValue(CSSOMString)
+PASS CSSStyleDeclaration interface: operation getPropertyPriority(CSSOMString)
+PASS CSSStyleDeclaration interface: operation setProperty(CSSOMString, CSSOMString, optional CSSOMString)
+PASS CSSStyleDeclaration interface: operation removeProperty(CSSOMString)
+PASS CSSStyleDeclaration interface: attribute parentRule
+PASS CSSStyleDeclaration interface: attribute cssFloat
+PASS CSSStyleDeclaration must be primary interface of sheet.cssRules[4].style
+PASS Stringification of sheet.cssRules[4].style
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "cssText" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "length" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "item(unsigned long)" with the proper type
+PASS CSSStyleDeclaration interface: calling item(unsigned long) on sheet.cssRules[4].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "getPropertyValue(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on sheet.cssRules[4].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "getPropertyPriority(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on sheet.cssRules[4].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "setProperty(CSSOMString, CSSOMString, optional CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, optional CSSOMString) on sheet.cssRules[4].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "removeProperty(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on sheet.cssRules[4].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "parentRule" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "cssFloat" with the proper type
+PASS CSSStyleDeclaration must be primary interface of sheet.cssRules[2].style
+PASS Stringification of sheet.cssRules[2].style
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "cssText" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "length" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "item(unsigned long)" with the proper type
+PASS CSSStyleDeclaration interface: calling item(unsigned long) on sheet.cssRules[2].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "getPropertyValue(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on sheet.cssRules[2].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "getPropertyPriority(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on sheet.cssRules[2].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "setProperty(CSSOMString, CSSOMString, optional CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, optional CSSOMString) on sheet.cssRules[2].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "removeProperty(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on sheet.cssRules[2].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "parentRule" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "cssFloat" with the proper type
+FAIL CSSStyleDeclaration must be primary interface of sheet.cssRules[2].cssRules[0].style assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL Stringification of sheet.cssRules[2].cssRules[0].style assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "cssText" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "length" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "item(unsigned long)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: calling item(unsigned long) on sheet.cssRules[2].cssRules[0].style with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "getPropertyValue(CSSOMString)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on sheet.cssRules[2].cssRules[0].style with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "getPropertyPriority(CSSOMString)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on sheet.cssRules[2].cssRules[0].style with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "setProperty(CSSOMString, CSSOMString, optional CSSOMString)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, optional CSSOMString) on sheet.cssRules[2].cssRules[0].style with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "removeProperty(CSSOMString)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on sheet.cssRules[2].cssRules[0].style with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "parentRule" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "cssFloat" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+PASS CSSStyleDeclaration must be primary interface of style_element.style
+PASS Stringification of style_element.style
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "cssText" with the proper type
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "length" with the proper type
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "item(unsigned long)" with the proper type
+PASS CSSStyleDeclaration interface: calling item(unsigned long) on style_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "getPropertyValue(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on style_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "getPropertyPriority(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on style_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "setProperty(CSSOMString, CSSOMString, optional CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, optional CSSOMString) on style_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "removeProperty(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on style_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "parentRule" with the proper type
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "cssFloat" with the proper type
+PASS CSSStyleDeclaration must be primary interface of svg_element.style
+PASS Stringification of svg_element.style
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "cssText" with the proper type
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "length" with the proper type
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "item(unsigned long)" with the proper type
+PASS CSSStyleDeclaration interface: calling item(unsigned long) on svg_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "getPropertyValue(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on svg_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "getPropertyPriority(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on svg_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "setProperty(CSSOMString, CSSOMString, optional CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, optional CSSOMString) on svg_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "removeProperty(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on svg_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "parentRule" with the proper type
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "cssFloat" with the proper type
+PASS CSSStyleDeclaration must be primary interface of getComputedStyle(svg_element)
+PASS Stringification of getComputedStyle(svg_element)
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "cssText" with the proper type
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "length" with the proper type
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "item(unsigned long)" with the proper type
+PASS CSSStyleDeclaration interface: calling item(unsigned long) on getComputedStyle(svg_element) with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "getPropertyValue(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on getComputedStyle(svg_element) with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "getPropertyPriority(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on getComputedStyle(svg_element) with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "setProperty(CSSOMString, CSSOMString, optional CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, optional CSSOMString) on getComputedStyle(svg_element) with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "removeProperty(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on getComputedStyle(svg_element) with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "parentRule" with the proper type
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "cssFloat" with the proper type
+PASS CSS namespace: extended attributes
+PASS CSS namespace: property descriptor
+PASS CSS namespace: [[Extensible]] is true
+PASS CSS namespace: [[Prototype]] is Object.prototype
+PASS CSS namespace: typeof is "object"
+PASS CSS namespace: operation escape(CSSOMString)
+PASS SVGElement interface: attribute style
+PASS SVGElement interface: svg_element must inherit property "style" with the proper type
+PASS SVGStyleElement interface: attribute sheet
+PASS HTMLElement interface: attribute style
+PASS HTMLElement interface: style_element must inherit property "style" with the proper type
+PASS HTMLElement interface: document.createElement("unknownelement") must inherit property "style" with the proper type
+PASS HTMLLinkElement interface: attribute sheet
+PASS HTMLStyleElement interface: attribute sheet
+PASS Window interface: operation getComputedStyle(Element, optional CSSOMString?)
+PASS Window interface: window must inherit property "getComputedStyle(Element, optional CSSOMString?)" with the proper type
+PASS Window interface: calling getComputedStyle(Element, optional CSSOMString?) on window with too few arguments must throw TypeError
+PASS Document interface: attribute styleSheets
+PASS Document interface: document must inherit property "styleSheets" with the proper type
+PASS Document interface: new Document() must inherit property "styleSheets" with the proper type
+PASS ShadowRoot interface: attribute styleSheets
+PASS ProcessingInstruction interface: attribute sheet
+PASS ProcessingInstruction interface: xmlss_pi must inherit property "sheet" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/raw-clipboard/external/wpt/clipboard-apis/clipboard-item.https-expected.txt b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/raw-clipboard/external/wpt/clipboard-apis/clipboard-item.https-expected.txt
new file mode 100644
index 0000000..77ef423
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/raw-clipboard/external/wpt/clipboard-apis/clipboard-item.https-expected.txt
@@ -0,0 +1,14 @@
+This is a testharness.js-based test.
+PASS ClipboardItem({string, Blob}) succeeds with different types
+PASS ClipboardItem() succeeds with empty options
+PASS ClipboardItem({}) fails with empty dictionary input
+PASS ClipboardItem(Blob) fails
+PASS ClipboardItem() fails with null input
+PASS ClipboardItem() fails with no input
+PASS types() returns correct values
+PASS raw() returns correct values, defaulting to false
+PASS getType(DOMString valid type) succeeds with correct output
+PASS getType(DOMString invalid type) succeeds with correct output
+PASS getType(DOMString type) rejects correctly when querying for missing type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/compositing/video/video-controls-layer-creation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/compositing/video/video-controls-layer-creation-expected.png
index e705046..1d286bb 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/compositing/video/video-controls-layer-creation-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/compositing/video/video-controls-layer-creation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/borders/inline-mask-overlay-image-outset-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/borders/inline-mask-overlay-image-outset-expected.png
index e370307d..ff6277b4 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/borders/inline-mask-overlay-image-outset-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/borders/inline-mask-overlay-image-outset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/color-scheme/media/video-overlay-menu-expected.png
index 76fb5ec..ede47a6c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/fast/overflow/overflow-of-video-outline-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/fast/overflow/overflow-of-video-outline-expected.png
index 868ebcc..d1605bc 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/fast/overflow/overflow-of-video-outline-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/fast/overflow/overflow-of-video-outline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-after-reload-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-after-reload-expected.png
index 0be2815a..72fc40a 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-after-reload-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-after-reload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-layout-direction-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-layout-direction-expected.png
index f805da63..213d8a9 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-layout-direction-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-layout-direction-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-strict-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-strict-expected.png
index 569e316..dbd8bfd2 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-strict-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-expected.png
index b6132cb..07d3fb6 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-strict-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-strict-expected.png
index f3dc9f55..de714b00 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-strict-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-styling-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-without-preload-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-without-preload-expected.png
index bfe96cd53..b4618e26 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-without-preload-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls-without-preload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls/paint-controls-webkit-appearance-none-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls/paint-controls-webkit-appearance-none-expected.png
index abab0e7..611aab8 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/controls/paint-controls-webkit-appearance-none-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/controls/paint-controls-webkit-appearance-none-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/media-controls-clone-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/media-controls-clone-expected.png
index 5a7ab65..b00b9c7f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/media-controls-clone-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/media-controls-clone-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/media-controls-grey-scrubber-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/media-controls-grey-scrubber-expected.png
index e6e87e6..562dab3 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/media-controls-grey-scrubber-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/media-controls-grey-scrubber-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-controls-rendering-expected.png
index ebee22c..e55051c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-display-toggle-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-display-toggle-expected.png
index cb3359a2..89283089 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-display-toggle-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-display-toggle-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-empty-source-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-empty-source-expected.png
index 1f3bd47..a861e1e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-empty-source-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-empty-source-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-no-audio-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-no-audio-expected.png
index 8cc53d7..22bd1c0a 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-no-audio-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-no-audio-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-zoom-controls-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-zoom-controls-expected.png
index e78d1ae..0f51338 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/media/video-zoom-controls-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/media/video-zoom-controls-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/tables/mozilla/bugs/bug4093-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/tables/mozilla/bugs/bug4093-expected.png
index e463648..322b2243 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/tables/mozilla/bugs/bug4093-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/tables/mozilla/bugs/bug4093-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
index 272d59a..d5edf0e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
index 30048ad..b2b018e 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
index db3cdb9f..2308d4f0 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/media/video-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/media/video-focus-ring-expected.png
index d40608d..d36d0e7 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/media/video-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.12/virtual/dark-color-scheme/media/video-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/fast/overflow/overflow-of-video-outline-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/fast/overflow/overflow-of-video-outline-expected.png
index 9dddf6d..76d2b83 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.13/fast/overflow/overflow-of-video-outline-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.13/fast/overflow/overflow-of-video-outline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/controls-layout-direction-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/controls-layout-direction-expected.png
index d490dd2..558872f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/controls-layout-direction-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.13/media/controls-layout-direction-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/media-controls-clone-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/media-controls-clone-expected.png
index 9d3c8f2..26b80831 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/media-controls-clone-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.13/media/media-controls-clone-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/media-controls-grey-scrubber-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/media-controls-grey-scrubber-expected.png
index c326a6d..877187d3 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/media-controls-grey-scrubber-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.13/media/media-controls-grey-scrubber-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/media/video-empty-source-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/media/video-empty-source-expected.png
index ef951e0c..f2a2c837 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.13/media/video-empty-source-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.13/media/video-empty-source-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
new file mode 100644
index 0000000..e27e6c08
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
new file mode 100644
index 0000000..76fd87a
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/media/video-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/media/video-focus-ring-expected.png
index 314a261e..b0175cac 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/media/video-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.13/virtual/dark-color-scheme/media/video-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/compositing/video/video-controls-layer-creation-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/compositing/video/video-controls-layer-creation-expected.png
index 7efabade..83f838a 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/compositing/video/video-controls-layer-creation-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/compositing/video/video-controls-layer-creation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/fast/forms/color-scheme/media/video-overlay-menu-expected.png
index bf6353f..eba67052 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/fast/overflow/overflow-of-video-outline-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/fast/overflow/overflow-of-video-outline-expected.png
index 99c49c0..279dbdb8 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/fast/overflow/overflow-of-video-outline-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/fast/overflow/overflow-of-video-outline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-after-reload-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-after-reload-expected.png
index e723ed4..bb3085d5 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-after-reload-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-after-reload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-layout-direction-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-layout-direction-expected.png
index 37a5e6ee..5dbdb4f 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-layout-direction-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-layout-direction-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-strict-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-strict-expected.png
index 610e8f9b..66db921 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-strict-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-styling-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-styling-expected.png
index 65db7a6..f9916ed 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-styling-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-styling-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-styling-strict-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-styling-strict-expected.png
index 2d3a799..7c49b56 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-styling-strict-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-styling-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-without-preload-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-without-preload-expected.png
index 7902ec2..e619bfd 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-without-preload-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/media/controls-without-preload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/controls/paint-controls-webkit-appearance-none-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/controls/paint-controls-webkit-appearance-none-expected.png
index 2a53caa5..ff0ede83 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/controls/paint-controls-webkit-appearance-none-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/media/controls/paint-controls-webkit-appearance-none-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/media-controls-clone-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/media-controls-clone-expected.png
index 53d53b64..314ee140 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/media-controls-clone-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/media/media-controls-clone-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/media-controls-grey-scrubber-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/media-controls-grey-scrubber-expected.png
index a005a14c..deccb02 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/media-controls-grey-scrubber-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/media/media-controls-grey-scrubber-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/video-controls-rendering-expected.png
index 152578bf..125df1f4 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/video-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/media/video-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/video-display-toggle-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/video-display-toggle-expected.png
index 06e15a7..a11c49a 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/video-display-toggle-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/media/video-display-toggle-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/video-empty-source-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/video-empty-source-expected.png
index f00ea222..dba91d8 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/video-empty-source-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/media/video-empty-source-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/media/video-no-audio-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/media/video-no-audio-expected.png
index bc66ff2..dfc3b13 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/media/video-no-audio-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/media/video-no-audio-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/tables/mozilla/bugs/bug4093-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/tables/mozilla/bugs/bug4093-expected.png
index 19953d5f3..d62eda0 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/tables/mozilla/bugs/bug4093-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/tables/mozilla/bugs/bug4093-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/tables/mozilla_expected_failures/bugs/bug89315-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/tables/mozilla_expected_failures/bugs/bug89315-expected.png
deleted file mode 100644
index 1cc31c3c..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.14/tables/mozilla_expected_failures/bugs/bug89315-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
index 76a108e..e27e6c08 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
index fded683c..76fd87a 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/dark-color-scheme/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
index f4fdaef7..acea3cf 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/dark-color-scheme/media/video-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/dark-color-scheme/media/video-focus-ring-expected.png
index 2107c3c..aca486d 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/dark-color-scheme/media/video-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/dark-color-scheme/media/video-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/gpu-rasterization/images/color-profile-image-filter-all-expected.png b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/gpu-rasterization/images/color-profile-image-filter-all-expected.png
index 27ae3a4..6f42eeed 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.14/virtual/gpu-rasterization/images/color-profile-image-filter-all-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.14/virtual/gpu-rasterization/images/color-profile-image-filter-all-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/tables/mozilla_expected_failures/bugs/bug89315-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/tables/mozilla_expected_failures/bugs/bug89315-expected.png
deleted file mode 100644
index cff5d8e..0000000
--- a/third_party/blink/web_tests/platform/mac-mac10.15/tables/mozilla_expected_failures/bugs/bug89315-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
rename to third_party/blink/web_tests/platform/mac-mac10.15/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
new file mode 100644
index 0000000..650cae3
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png
index eba7d4f..8082783c 100644
--- a/third_party/blink/web_tests/platform/mac-mac10.15/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png
+++ b/third_party/blink/web_tests/platform/mac-mac10.15/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/compositing/img-layer-object-fit-expected.png b/third_party/blink/web_tests/platform/mac/compositing/img-layer-object-fit-expected.png
index 3d308b8..e7aedde 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/img-layer-object-fit-expected.png
+++ b/third_party/blink/web_tests/platform/mac/compositing/img-layer-object-fit-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/compositing/video/video-controls-layer-creation-expected.png b/third_party/blink/web_tests/platform/mac/compositing/video/video-controls-layer-creation-expected.png
index f391025..8c401b6 100644
--- a/third_party/blink/web_tests/platform/mac/compositing/video/video-controls-layer-creation-expected.png
+++ b/third_party/blink/web_tests/platform/mac/compositing/video/video-controls-layer-creation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/backgrounds/background-repeat-with-background-color-expected.png b/third_party/blink/web_tests/platform/mac/fast/backgrounds/background-repeat-with-background-color-expected.png
index d30b5517..2416fef2 100644
--- a/third_party/blink/web_tests/platform/mac/fast/backgrounds/background-repeat-with-background-color-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/backgrounds/background-repeat-with-background-color-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/backgrounds/size/backgroundSize15-expected.png b/third_party/blink/web_tests/platform/mac/fast/backgrounds/size/backgroundSize15-expected.png
index 1f934317..97e1451 100644
--- a/third_party/blink/web_tests/platform/mac/fast/backgrounds/size/backgroundSize15-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/backgrounds/size/backgroundSize15-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/backgrounds/size/backgroundSize16-expected.png b/third_party/blink/web_tests/platform/mac/fast/backgrounds/size/backgroundSize16-expected.png
index 49513dd..71bdbd4 100644
--- a/third_party/blink/web_tests/platform/mac/fast/backgrounds/size/backgroundSize16-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/backgrounds/size/backgroundSize16-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-01-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-01-expected.png
index 06d86b5a..e394e18 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-01-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-01-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-border-radius-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-border-radius-expected.png
index 920f42a3..5883c51 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-border-radius-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-border-radius-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-longhand-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-longhand-expected.png
index 06d86b5a..e394e18 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-longhand-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-longhand-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-massive-scale-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-massive-scale-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-massive-scale-expected.png
rename to third_party/blink/web_tests/platform/mac/fast/borders/border-image-massive-scale-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-outset-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-outset-expected.png
index bb60c6e..d0c19ae 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-outset-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-outset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-outset-in-shorthand-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-outset-in-shorthand-expected.png
index bb60c6e..d0c19ae 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-outset-in-shorthand-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-outset-in-shorthand-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-repeat-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-repeat-expected.png
index 06d86b5a..e394e18 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-repeat-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-repeat-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-repeat-round-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-repeat-round-expected.png
index ab36b23..633c8ad2 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-repeat-round-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-repeat-round-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-rotate-transform-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-rotate-transform-expected.png
new file mode 100644
index 0000000..1fd6fab5
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-rotate-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-scale-transform-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-scale-transform-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac-mac-arm11.0/fast/borders/border-image-scale-transform-expected.png
rename to third_party/blink/web_tests/platform/mac/fast/borders/border-image-scale-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-scaled-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-scaled-expected.png
index ec491ce..e9c00e3 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-scaled-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-scaled-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-scrambled-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-scrambled-expected.png
index 06d86b5a..e394e18 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-scrambled-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-scrambled-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-slices-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-slices-expected.png
index 0298778..7666df9 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-slices-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-slices-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-source-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-source-expected.png
index 06d86b5a..e394e18 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/border-image-source-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/border-image-source-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/inline-mask-overlay-image-outset-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/inline-mask-overlay-image-outset-expected.png
index 20ae3bf..10a6893d 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/inline-mask-overlay-image-outset-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/inline-mask-overlay-image-outset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/borders/scaled-border-image-expected.png b/third_party/blink/web_tests/platform/mac/fast/borders/scaled-border-image-expected.png
index 0bec3e2..56f9da5 100644
--- a/third_party/blink/web_tests/platform/mac/fast/borders/scaled-border-image-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/borders/scaled-border-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac/fast/forms/color-scheme/media/video-overlay-menu-expected.png
index 9e516ce..70f9f23d 100644
--- a/third_party/blink/web_tests/platform/mac/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/overflow/overflow-of-video-outline-expected.png b/third_party/blink/web_tests/platform/mac/fast/overflow/overflow-of-video-outline-expected.png
index 25a2d0a..6b71c1f 100644
--- a/third_party/blink/web_tests/platform/mac/fast/overflow/overflow-of-video-outline-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/overflow/overflow-of-video-outline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/http/tests/misc/slow-loading-image-in-pattern-expected.png b/third_party/blink/web_tests/platform/mac/http/tests/misc/slow-loading-image-in-pattern-expected.png
index 4f419da..5778442 100644
--- a/third_party/blink/web_tests/platform/mac/http/tests/misc/slow-loading-image-in-pattern-expected.png
+++ b/third_party/blink/web_tests/platform/mac/http/tests/misc/slow-loading-image-in-pattern-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/images/color-profile-border-image-source-expected.png b/third_party/blink/web_tests/platform/mac/images/color-profile-border-image-source-expected.png
index 06d86b5a..e394e18 100644
--- a/third_party/blink/web_tests/platform/mac/images/color-profile-border-image-source-expected.png
+++ b/third_party/blink/web_tests/platform/mac/images/color-profile-border-image-source-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/images/color-profile-group-expected.png b/third_party/blink/web_tests/platform/mac/images/color-profile-group-expected.png
index 5f5a2d8..b983e63 100644
--- a/third_party/blink/web_tests/platform/mac/images/color-profile-group-expected.png
+++ b/third_party/blink/web_tests/platform/mac/images/color-profile-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/images/color-profile-svg-fill-text-expected.png b/third_party/blink/web_tests/platform/mac/images/color-profile-svg-fill-text-expected.png
index 875f387c..d9d108b 100644
--- a/third_party/blink/web_tests/platform/mac/images/color-profile-svg-fill-text-expected.png
+++ b/third_party/blink/web_tests/platform/mac/images/color-profile-svg-fill-text-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/images/sprite-no-bleed-expected.png b/third_party/blink/web_tests/platform/mac/images/sprite-no-bleed-expected.png
index 15b414a..143e3672 100644
--- a/third_party/blink/web_tests/platform/mac/images/sprite-no-bleed-expected.png
+++ b/third_party/blink/web_tests/platform/mac/images/sprite-no-bleed-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/controls-after-reload-expected.png b/third_party/blink/web_tests/platform/mac/media/controls-after-reload-expected.png
index 36062e0..d7ee63f0 100644
--- a/third_party/blink/web_tests/platform/mac/media/controls-after-reload-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/controls-after-reload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/controls-layout-direction-expected.png b/third_party/blink/web_tests/platform/mac/media/controls-layout-direction-expected.png
index 531e2cb..2959460 100644
--- a/third_party/blink/web_tests/platform/mac/media/controls-layout-direction-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/controls-layout-direction-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/controls-strict-expected.png b/third_party/blink/web_tests/platform/mac/media/controls-strict-expected.png
index 6045a22..70f3b153 100644
--- a/third_party/blink/web_tests/platform/mac/media/controls-strict-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/controls-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/controls-styling-expected.png b/third_party/blink/web_tests/platform/mac/media/controls-styling-expected.png
index 9aebb1c..22a52af0 100644
--- a/third_party/blink/web_tests/platform/mac/media/controls-styling-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/controls-styling-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/controls-styling-strict-expected.png b/third_party/blink/web_tests/platform/mac/media/controls-styling-strict-expected.png
index dd3d1519..0448d1b 100644
--- a/third_party/blink/web_tests/platform/mac/media/controls-styling-strict-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/controls-styling-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/controls-without-preload-expected.png b/third_party/blink/web_tests/platform/mac/media/controls-without-preload-expected.png
index fe68995..b7c4ffff 100644
--- a/third_party/blink/web_tests/platform/mac/media/controls-without-preload-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/controls-without-preload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/controls/paint-controls-webkit-appearance-none-expected.png b/third_party/blink/web_tests/platform/mac/media/controls/paint-controls-webkit-appearance-none-expected.png
index c613f41..a028cfff 100644
--- a/third_party/blink/web_tests/platform/mac/media/controls/paint-controls-webkit-appearance-none-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/controls/paint-controls-webkit-appearance-none-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/media-controls-clone-expected.png b/third_party/blink/web_tests/platform/mac/media/media-controls-clone-expected.png
index ab4d9b7..60a2818 100644
--- a/third_party/blink/web_tests/platform/mac/media/media-controls-clone-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/media-controls-clone-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/media-controls-grey-scrubber-expected.png b/third_party/blink/web_tests/platform/mac/media/media-controls-grey-scrubber-expected.png
index e13a47a..98e9d38 100644
--- a/third_party/blink/web_tests/platform/mac/media/media-controls-grey-scrubber-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/media-controls-grey-scrubber-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac/media/video-controls-rendering-expected.png
index 7ed217bd..3221e806 100644
--- a/third_party/blink/web_tests/platform/mac/media/video-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/video-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/video-display-toggle-expected.png b/third_party/blink/web_tests/platform/mac/media/video-display-toggle-expected.png
index 49ea67b1..d6f39d5b 100644
--- a/third_party/blink/web_tests/platform/mac/media/video-display-toggle-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/video-display-toggle-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/video-empty-source-expected.png b/third_party/blink/web_tests/platform/mac/media/video-empty-source-expected.png
index 2aa8302..6a09559d 100644
--- a/third_party/blink/web_tests/platform/mac/media/video-empty-source-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/video-empty-source-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/video-no-audio-expected.png b/third_party/blink/web_tests/platform/mac/media/video-no-audio-expected.png
index e7ff72a..a3c6c063 100644
--- a/third_party/blink/web_tests/platform/mac/media/video-no-audio-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/video-no-audio-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/video-poster-scale-expected.png b/third_party/blink/web_tests/platform/mac/media/video-poster-scale-expected.png
index 1f2082c..026f161e 100644
--- a/third_party/blink/web_tests/platform/mac/media/video-poster-scale-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/video-poster-scale-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/media/video-zoom-controls-expected.png b/third_party/blink/web_tests/platform/mac/media/video-zoom-controls-expected.png
index f669551..5f7482c 100644
--- a/third_party/blink/web_tests/platform/mac/media/video-zoom-controls-expected.png
+++ b/third_party/blink/web_tests/platform/mac/media/video-zoom-controls-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png b/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png
index ae8d1de1..48b88ca 100644
--- a/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png
+++ b/third_party/blink/web_tests/platform/mac/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/carto.net/selectionlist-expected.png b/third_party/blink/web_tests/platform/mac/svg/carto.net/selectionlist-expected.png
deleted file mode 100644
index e0012d650..0000000
--- a/third_party/blink/web_tests/platform/mac/svg/carto.net/selectionlist-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/createImageElement2-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/createImageElement2-expected.png
index ec2c4ed3..e8414fa1 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/createImageElement2-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/createImageElement2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/image-parent-translation-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/image-parent-translation-expected.png
index 35eead6..5b93bd5b 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/image-parent-translation-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/image-parent-translation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/image-small-width-height-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/image-small-width-height-expected.png
index a3d0ecb..f29b1a9a 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/image-small-width-height-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/image-small-width-height-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/pointer-events-image-css-transform-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/pointer-events-image-css-transform-expected.png
index d81ab707..324d16e5 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/pointer-events-image-css-transform-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/pointer-events-image-css-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/pointer-events-image-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/pointer-events-image-expected.png
index d81ab707..324d16e5 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/pointer-events-image-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/pointer-events-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/custom/text-image-opacity-expected.png b/third_party/blink/web_tests/platform/mac/svg/custom/text-image-opacity-expected.png
index a062fa2..0587824 100644
--- a/third_party/blink/web_tests/platform/mac/svg/custom/text-image-opacity-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/custom/text-image-opacity-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/hixie/perf/004-expected.png b/third_party/blink/web_tests/platform/mac/svg/hixie/perf/004-expected.png
index 67fc67d..8e686679 100644
--- a/third_party/blink/web_tests/platform/mac/svg/hixie/perf/004-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/hixie/perf/004-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/wicd/test-rightsizing-b-expected.png b/third_party/blink/web_tests/platform/mac/svg/wicd/test-rightsizing-b-expected.png
index 8a0b001..909c1c7 100644
--- a/third_party/blink/web_tests/platform/mac/svg/wicd/test-rightsizing-b-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/wicd/test-rightsizing-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug101674-expected.png b/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug101674-expected.png
index 629eaa23..d4034c73 100644
--- a/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug101674-expected.png
+++ b/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug101674-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug11026-expected.png b/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug11026-expected.png
index 17c6c3f..e3c6d78 100644
--- a/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug11026-expected.png
+++ b/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug11026-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug1296-expected.png b/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug1296-expected.png
index ec74c32..0b1b2c41 100644
--- a/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug1296-expected.png
+++ b/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug1296-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug1430-expected.png b/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug1430-expected.png
index b9a2a47f..8779b37 100644
--- a/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug1430-expected.png
+++ b/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug1430-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug4093-expected.png b/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug4093-expected.png
index dfe0f06..570e2c2 100644
--- a/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug4093-expected.png
+++ b/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug4093-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug4427-expected.png b/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug4427-expected.png
index 7eaae918..c73d28e3 100644
--- a/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug4427-expected.png
+++ b/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug4427-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug625-expected.png b/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug625-expected.png
index 7b7f1e5..98fb2c8 100644
--- a/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug625-expected.png
+++ b/third_party/blink/web_tests/platform/mac/tables/mozilla/bugs/bug625-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
index 3ae7528..5fcc5c5 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
index 2ceb5867..650cae3 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
index 5bc988cf..e7b148c 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/media/video-focus-ring-expected.png b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/media/video-focus-ring-expected.png
index 88e74c85..0d6a11cd 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/media/video-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/dark-color-scheme/media/video-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/color-profile-background-image-cover-expected.png b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/color-profile-background-image-cover-expected.png
deleted file mode 100644
index d9f2105f..0000000
--- a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/color-profile-background-image-cover-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/color-profile-background-image-space-expected.png b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/color-profile-background-image-space-expected.png
deleted file mode 100644
index af63757..0000000
--- a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/color-profile-background-image-space-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/color-profile-border-image-expected.png b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/color-profile-border-image-expected.png
deleted file mode 100644
index e42cc9b..0000000
--- a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/color-profile-border-image-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/color-profile-group-expected.png b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/color-profile-group-expected.png
index 5c184def..5c047a2 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/color-profile-group-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/color-profile-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/color-profile-svg-fill-text-expected.png b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/color-profile-svg-fill-text-expected.png
index 8bb7fdd..e17e9ce 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/color-profile-svg-fill-text-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/color-profile-svg-fill-text-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/sprite-no-bleed-expected.png b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/sprite-no-bleed-expected.png
index 938f13d..8ce49a4a 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/sprite-no-bleed-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/sprite-no-bleed-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-border-radius-expected.png b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-border-radius-expected.png
index cb230c1..b863cf3 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-border-radius-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-border-radius-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-filter-expected.png b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-filter-expected.png
index 0af66ee..5729eed 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-filter-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-filter-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-image-expected.png b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-image-expected.png
index fbbb309..b1d16f5c 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-image-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/color-profile-image-filter-all-expected.png b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/color-profile-image-filter-all-expected.png
index ffd96a8..157a19d 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/color-profile-image-filter-all-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/color-profile-image-filter-all-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png
index 218f5efb..bb647f8 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/sprite-no-bleed-expected.png b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/sprite-no-bleed-expected.png
index fc2b68a..d290410 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/sprite-no-bleed-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/sprite-no-bleed-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-filter-expected.png b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-filter-expected.png
index 0af66ee..5729eed 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-filter-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-filter-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-image-expected.png b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-image-expected.png
index fbbb309..b1d16f5c 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-image-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/compositing/img-layer-object-fit-expected.png b/third_party/blink/web_tests/platform/win/compositing/img-layer-object-fit-expected.png
index 22fb7a1b..05b33c8 100644
--- a/third_party/blink/web_tests/platform/win/compositing/img-layer-object-fit-expected.png
+++ b/third_party/blink/web_tests/platform/win/compositing/img-layer-object-fit-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/blending/mix-blend-mode-isolated-group-1-expected.png b/third_party/blink/web_tests/platform/win/css3/blending/mix-blend-mode-isolated-group-1-expected.png
deleted file mode 100644
index 3430ffa..0000000
--- a/third_party/blink/web_tests/platform/win/css3/blending/mix-blend-mode-isolated-group-1-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/blending/mix-blend-mode-isolated-group-3-expected.png b/third_party/blink/web_tests/platform/win/css3/blending/mix-blend-mode-isolated-group-3-expected.png
deleted file mode 100644
index ccae4c3c..0000000
--- a/third_party/blink/web_tests/platform/win/css3/blending/mix-blend-mode-isolated-group-3-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/backgrounds/background-repeat-with-background-color-expected.png b/third_party/blink/web_tests/platform/win/fast/backgrounds/background-repeat-with-background-color-expected.png
index b518763..05d37bb 100644
--- a/third_party/blink/web_tests/platform/win/fast/backgrounds/background-repeat-with-background-color-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/backgrounds/background-repeat-with-background-color-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/backgrounds/size/backgroundSize15-expected.png b/third_party/blink/web_tests/platform/win/fast/backgrounds/size/backgroundSize15-expected.png
index 4bfb1156..c216689 100644
--- a/third_party/blink/web_tests/platform/win/fast/backgrounds/size/backgroundSize15-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/backgrounds/size/backgroundSize15-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/backgrounds/size/backgroundSize16-expected.png b/third_party/blink/web_tests/platform/win/fast/backgrounds/size/backgroundSize16-expected.png
index bb71ea6..4209f86 100644
--- a/third_party/blink/web_tests/platform/win/fast/backgrounds/size/backgroundSize16-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/backgrounds/size/backgroundSize16-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/border-image-01-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/border-image-01-expected.png
index 57fe61a..c5d5c00 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/border-image-01-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/border-image-01-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/border-image-border-radius-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/border-image-border-radius-expected.png
index b4d8bb9c..78fddf5 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/border-image-border-radius-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/border-image-border-radius-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/border-image-longhand-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/border-image-longhand-expected.png
index 57fe61a..c5d5c00 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/border-image-longhand-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/border-image-longhand-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/border-image-massive-scale-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/border-image-massive-scale-expected.png
index 3a9e0842..21c590d 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/border-image-massive-scale-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/border-image-massive-scale-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/border-image-outset-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/border-image-outset-expected.png
index 64d0f5a..5f06ac9 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/border-image-outset-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/border-image-outset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/border-image-outset-in-shorthand-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/border-image-outset-in-shorthand-expected.png
index 64d0f5a..5f06ac9 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/border-image-outset-in-shorthand-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/border-image-outset-in-shorthand-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/border-image-repeat-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/border-image-repeat-expected.png
index 57fe61a..c5d5c00 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/border-image-repeat-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/border-image-repeat-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/border-image-repeat-round-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/border-image-repeat-round-expected.png
index 0432d9f..6533731 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/border-image-repeat-round-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/border-image-repeat-round-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/border-image-rotate-transform-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/border-image-rotate-transform-expected.png
index b42a74c..a01228d 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/border-image-rotate-transform-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/border-image-rotate-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/border-image-scale-transform-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/border-image-scale-transform-expected.png
index 701ec30..cfe9d071 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/border-image-scale-transform-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/border-image-scale-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/border-image-scaled-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/border-image-scaled-expected.png
index 2d6afb7..22c08644 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/border-image-scaled-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/border-image-scaled-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/border-image-scrambled-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/border-image-scrambled-expected.png
index 57fe61a..c5d5c00 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/border-image-scrambled-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/border-image-scrambled-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/border-image-slices-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/border-image-slices-expected.png
index 51fc474..d8e429e 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/border-image-slices-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/border-image-slices-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/border-image-source-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/border-image-source-expected.png
index 57fe61a..c5d5c00 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/border-image-source-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/border-image-source-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/inline-mask-overlay-image-outset-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/inline-mask-overlay-image-outset-expected.png
index ee65da5..b6ee18a 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/inline-mask-overlay-image-outset-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/inline-mask-overlay-image-outset-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/borders/scaled-border-image-expected.png b/third_party/blink/web_tests/platform/win/fast/borders/scaled-border-image-expected.png
index 3976ab0d..c389b73 100644
--- a/third_party/blink/web_tests/platform/win/fast/borders/scaled-border-image-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/borders/scaled-border-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/win/fast/forms/color-scheme/media/video-overlay-menu-expected.png
index dadb289e..d7d099ed 100644
--- a/third_party/blink/web_tests/platform/win/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/overflow/overflow-of-video-outline-expected.png b/third_party/blink/web_tests/platform/win/fast/overflow/overflow-of-video-outline-expected.png
index 1ccd49edb..48cd305 100644
--- a/third_party/blink/web_tests/platform/win/fast/overflow/overflow-of-video-outline-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/overflow/overflow-of-video-outline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/http/tests/misc/slow-loading-image-in-pattern-expected.png b/third_party/blink/web_tests/platform/win/http/tests/misc/slow-loading-image-in-pattern-expected.png
index 5a76e6a7..5655c4ee 100644
--- a/third_party/blink/web_tests/platform/win/http/tests/misc/slow-loading-image-in-pattern-expected.png
+++ b/third_party/blink/web_tests/platform/win/http/tests/misc/slow-loading-image-in-pattern-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/images/color-profile-border-image-source-expected.png b/third_party/blink/web_tests/platform/win/images/color-profile-border-image-source-expected.png
index 57fe61a..c5d5c00 100644
--- a/third_party/blink/web_tests/platform/win/images/color-profile-border-image-source-expected.png
+++ b/third_party/blink/web_tests/platform/win/images/color-profile-border-image-source-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/images/color-profile-group-expected.png b/third_party/blink/web_tests/platform/win/images/color-profile-group-expected.png
index 18227e5..7330059 100644
--- a/third_party/blink/web_tests/platform/win/images/color-profile-group-expected.png
+++ b/third_party/blink/web_tests/platform/win/images/color-profile-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/images/color-profile-svg-fill-text-expected.png b/third_party/blink/web_tests/platform/win/images/color-profile-svg-fill-text-expected.png
index 5a3051e7..ef99b9e3 100644
--- a/third_party/blink/web_tests/platform/win/images/color-profile-svg-fill-text-expected.png
+++ b/third_party/blink/web_tests/platform/win/images/color-profile-svg-fill-text-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/images/sprite-no-bleed-expected.png b/third_party/blink/web_tests/platform/win/images/sprite-no-bleed-expected.png
index 5f054dd..e0e3356 100644
--- a/third_party/blink/web_tests/platform/win/images/sprite-no-bleed-expected.png
+++ b/third_party/blink/web_tests/platform/win/images/sprite-no-bleed-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/controls-after-reload-expected.png b/third_party/blink/web_tests/platform/win/media/controls-after-reload-expected.png
index 2953838..1a53ec73 100644
--- a/third_party/blink/web_tests/platform/win/media/controls-after-reload-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/controls-after-reload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/controls-layout-direction-expected.png b/third_party/blink/web_tests/platform/win/media/controls-layout-direction-expected.png
index ec7b2a2..a5b4626 100644
--- a/third_party/blink/web_tests/platform/win/media/controls-layout-direction-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/controls-layout-direction-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/controls-strict-expected.png b/third_party/blink/web_tests/platform/win/media/controls-strict-expected.png
index 03fb4ab..6c003a5 100644
--- a/third_party/blink/web_tests/platform/win/media/controls-strict-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/controls-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/controls-styling-expected.png b/third_party/blink/web_tests/platform/win/media/controls-styling-expected.png
index 5ebc1e76..19b2c19 100644
--- a/third_party/blink/web_tests/platform/win/media/controls-styling-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/controls-styling-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/controls-styling-strict-expected.png b/third_party/blink/web_tests/platform/win/media/controls-styling-strict-expected.png
index 82f69f54..a5a10c5 100644
--- a/third_party/blink/web_tests/platform/win/media/controls-styling-strict-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/controls-styling-strict-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/controls-without-preload-expected.png b/third_party/blink/web_tests/platform/win/media/controls-without-preload-expected.png
index 8ccd3e2..2889b4b 100644
--- a/third_party/blink/web_tests/platform/win/media/controls-without-preload-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/controls-without-preload-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/controls/paint-controls-webkit-appearance-none-expected.png b/third_party/blink/web_tests/platform/win/media/controls/paint-controls-webkit-appearance-none-expected.png
index f687768..7897e95 100644
--- a/third_party/blink/web_tests/platform/win/media/controls/paint-controls-webkit-appearance-none-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/controls/paint-controls-webkit-appearance-none-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/media-controls-clone-expected.png b/third_party/blink/web_tests/platform/win/media/media-controls-clone-expected.png
index 366c0684..31adecc5 100644
--- a/third_party/blink/web_tests/platform/win/media/media-controls-clone-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/media-controls-clone-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/media-controls-grey-scrubber-expected.png b/third_party/blink/web_tests/platform/win/media/media-controls-grey-scrubber-expected.png
index cb26ec4..8e06338 100644
--- a/third_party/blink/web_tests/platform/win/media/media-controls-grey-scrubber-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/media-controls-grey-scrubber-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/win/media/video-controls-rendering-expected.png
index 513458d..f7c989bc 100644
--- a/third_party/blink/web_tests/platform/win/media/video-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/video-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/video-display-toggle-expected.png b/third_party/blink/web_tests/platform/win/media/video-display-toggle-expected.png
index 9c2605b..07b08d7 100644
--- a/third_party/blink/web_tests/platform/win/media/video-display-toggle-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/video-display-toggle-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/video-empty-source-expected.png b/third_party/blink/web_tests/platform/win/media/video-empty-source-expected.png
index 1f76877f..78be5a4b 100644
--- a/third_party/blink/web_tests/platform/win/media/video-empty-source-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/video-empty-source-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/video-no-audio-expected.png b/third_party/blink/web_tests/platform/win/media/video-no-audio-expected.png
index 86e52323..fdb47fa5 100644
--- a/third_party/blink/web_tests/platform/win/media/video-no-audio-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/video-no-audio-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/video-poster-scale-expected.png b/third_party/blink/web_tests/platform/win/media/video-poster-scale-expected.png
index fcf21d300..cc44af8 100644
--- a/third_party/blink/web_tests/platform/win/media/video-poster-scale-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/video-poster-scale-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/media/video-zoom-controls-expected.png b/third_party/blink/web_tests/platform/win/media/video-zoom-controls-expected.png
index be6e10b..4d4c821 100644
--- a/third_party/blink/web_tests/platform/win/media/video-zoom-controls-expected.png
+++ b/third_party/blink/web_tests/platform/win/media/video-zoom-controls-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png b/third_party/blink/web_tests/platform/win/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png
index 8fb2d8a..2cc03902 100644
--- a/third_party/blink/web_tests/platform/win/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png
+++ b/third_party/blink/web_tests/platform/win/paint/invalidation/svg/animated-path-inside-transformed-html-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/carto.net/selectionlist-expected.png b/third_party/blink/web_tests/platform/win/svg/carto.net/selectionlist-expected.png
index 248972d1..b24a8205 100644
--- a/third_party/blink/web_tests/platform/win/svg/carto.net/selectionlist-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/carto.net/selectionlist-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/createImageElement2-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/createImageElement2-expected.png
index c09915e0..4a834963 100644
--- a/third_party/blink/web_tests/platform/win/svg/custom/createImageElement2-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/custom/createImageElement2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/image-parent-translation-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/image-parent-translation-expected.png
index 54eb732..4ee9d8b 100644
--- a/third_party/blink/web_tests/platform/win/svg/custom/image-parent-translation-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/custom/image-parent-translation-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/image-small-width-height-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/image-small-width-height-expected.png
index 149f9f2..290e16f 100644
--- a/third_party/blink/web_tests/platform/win/svg/custom/image-small-width-height-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/custom/image-small-width-height-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/pointer-events-image-css-transform-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/pointer-events-image-css-transform-expected.png
index fd3be98..f290187 100644
--- a/third_party/blink/web_tests/platform/win/svg/custom/pointer-events-image-css-transform-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/custom/pointer-events-image-css-transform-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/pointer-events-image-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/pointer-events-image-expected.png
index fd3be98..f290187 100644
--- a/third_party/blink/web_tests/platform/win/svg/custom/pointer-events-image-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/custom/pointer-events-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/custom/text-image-opacity-expected.png b/third_party/blink/web_tests/platform/win/svg/custom/text-image-opacity-expected.png
index a70d01d..b139a65 100644
--- a/third_party/blink/web_tests/platform/win/svg/custom/text-image-opacity-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/custom/text-image-opacity-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/hixie/perf/004-expected.png b/third_party/blink/web_tests/platform/win/svg/hixie/perf/004-expected.png
index 70ed0cd..10a2fb9 100644
--- a/third_party/blink/web_tests/platform/win/svg/hixie/perf/004-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/hixie/perf/004-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/wicd/test-rightsizing-b-expected.png b/third_party/blink/web_tests/platform/win/svg/wicd/test-rightsizing-b-expected.png
index ee41415b..574c7e1a 100644
--- a/third_party/blink/web_tests/platform/win/svg/wicd/test-rightsizing-b-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/wicd/test-rightsizing-b-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug101674-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug101674-expected.png
index ae3586977..f4b8e99 100644
--- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug101674-expected.png
+++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug101674-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug11026-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug11026-expected.png
index c359af8..0bc1bb5 100644
--- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug11026-expected.png
+++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug11026-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug1296-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug1296-expected.png
index 0d6b686..ff3226219 100644
--- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug1296-expected.png
+++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug1296-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug1430-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug1430-expected.png
index 762c126..1384698 100644
--- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug1430-expected.png
+++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug1430-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug4093-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug4093-expected.png
index 49b2fce..6d11e0b6 100644
--- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug4093-expected.png
+++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug4093-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug4427-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug4427-expected.png
index abadcd3..e9d98ad 100644
--- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug4427-expected.png
+++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug4427-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug625-expected.png b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug625-expected.png
index 59b54814..e4c500c 100644
--- a/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug625-expected.png
+++ b/third_party/blink/web_tests/platform/win/tables/mozilla/bugs/bug625-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
index 00c8478..1e180fe 100644
--- a/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
index 1ba009c5..4a642cc 100644
--- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/media/video-controls-rendering-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
index 694cf4b0..5d2029d 100644
--- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/media/video-controls-rendering-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/media/video-focus-ring-expected.png b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/media/video-focus-ring-expected.png
index 0805ec3..6dcbab3 100644
--- a/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/media/video-focus-ring-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/dark-color-scheme/media/video-focus-ring-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/color-profile-background-image-cover-expected.png b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/color-profile-background-image-cover-expected.png
index ad98a77..54d4331 100644
--- a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/color-profile-background-image-cover-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/color-profile-background-image-cover-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/color-profile-background-image-space-expected.png b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/color-profile-background-image-space-expected.png
index a118435..7c5b1e2 100644
--- a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/color-profile-background-image-space-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/color-profile-background-image-space-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/color-profile-border-image-expected.png b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/color-profile-border-image-expected.png
index df9a5bd..1df1e9ac 100644
--- a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/color-profile-border-image-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/color-profile-border-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/color-profile-group-expected.png b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/color-profile-group-expected.png
index 9a15d7a..7f2072ae 100644
--- a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/color-profile-group-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/color-profile-group-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/color-profile-svg-fill-text-expected.png b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/color-profile-svg-fill-text-expected.png
index f672f80..aa1a8a8 100644
--- a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/color-profile-svg-fill-text-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/color-profile-svg-fill-text-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/sprite-no-bleed-expected.png b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/sprite-no-bleed-expected.png
index 078ef5e3..f65b905 100644
--- a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/sprite-no-bleed-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/sprite-no-bleed-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-border-radius-expected.png b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-border-radius-expected.png
index 2911490..57e153c6 100644
--- a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-border-radius-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-border-radius-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-filter-expected.png b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-filter-expected.png
index 17f2233d..1c80966 100644
--- a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-filter-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-filter-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-image-expected.png b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-image-expected.png
index b3adb7a..b143e8e 100644
--- a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-image-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/color-profile-image-filter-all-expected.png b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/color-profile-image-filter-all-expected.png
index 60234a68..b5234b8 100644
--- a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/color-profile-image-filter-all-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/color-profile-image-filter-all-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png
index 5b2d1bb..07d8705 100644
--- a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/color-profile-svg-fill-text-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/sprite-no-bleed-expected.png b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/sprite-no-bleed-expected.png
index 0fa4605..415a0c8a 100644
--- a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/sprite-no-bleed-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/sprite-no-bleed-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-filter-expected.png b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-filter-expected.png
index 17f2233d..1c80966 100644
--- a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-filter-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-filter-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-image-expected.png b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-image-expected.png
index b3adb7a..b143e8e 100644
--- a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-image-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
new file mode 100644
index 0000000..1e180fe
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win7/virtual/controls-refresh-hc/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win7/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png b/third_party/blink/web_tests/platform/win7/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
new file mode 100644
index 0000000..4a642cc
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win7/virtual/dark-color-scheme/fast/forms/color-scheme/media/video-overlay-menu-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/carto.net/selectionlist-expected.png b/third_party/blink/web_tests/svg/carto.net/selectionlist-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac-mac-arm11.0/svg/carto.net/selectionlist-expected.png
rename to third_party/blink/web_tests/svg/carto.net/selectionlist-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/custom/convolution-crash-expected.png b/third_party/blink/web_tests/svg/custom/convolution-crash-expected.png
index 3e68843..1adac69 100644
--- a/third_party/blink/web_tests/svg/custom/convolution-crash-expected.png
+++ b/third_party/blink/web_tests/svg/custom/convolution-crash-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/custom/createImageElement-expected.png b/third_party/blink/web_tests/svg/custom/createImageElement-expected.png
index 2891367..3f310b22 100644
--- a/third_party/blink/web_tests/svg/custom/createImageElement-expected.png
+++ b/third_party/blink/web_tests/svg/custom/createImageElement-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/custom/js-update-image-and-display-expected.png b/third_party/blink/web_tests/svg/custom/js-update-image-and-display-expected.png
index a1fd67e3..c93cffd 100644
--- a/third_party/blink/web_tests/svg/custom/js-update-image-and-display-expected.png
+++ b/third_party/blink/web_tests/svg/custom/js-update-image-and-display-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/custom/js-update-image-and-display2-expected.png b/third_party/blink/web_tests/svg/custom/js-update-image-and-display2-expected.png
index a1fd67e3..c93cffd 100644
--- a/third_party/blink/web_tests/svg/custom/js-update-image-and-display2-expected.png
+++ b/third_party/blink/web_tests/svg/custom/js-update-image-and-display2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/custom/js-update-image-and-display3-expected.png b/third_party/blink/web_tests/svg/custom/js-update-image-and-display3-expected.png
index a1fd67e3..c93cffd 100644
--- a/third_party/blink/web_tests/svg/custom/js-update-image-and-display3-expected.png
+++ b/third_party/blink/web_tests/svg/custom/js-update-image-and-display3-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/custom/use-on-g-containing-foreignObject-and-image-expected.png b/third_party/blink/web_tests/svg/custom/use-on-g-containing-foreignObject-and-image-expected.png
index 0c585a35..6ba300a 100644
--- a/third_party/blink/web_tests/svg/custom/use-on-g-containing-foreignObject-and-image-expected.png
+++ b/third_party/blink/web_tests/svg/custom/use-on-g-containing-foreignObject-and-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-dom-preserveAspectRatio-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-dom-preserveAspectRatio-attr-expected.png
index b5047100..682509b 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-dom-preserveAspectRatio-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-dom-preserveAspectRatio-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-dom-width-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-dom-width-attr-expected.png
index 1641a7e2..3a6c4546 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-dom-width-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-dom-width-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-dom-x-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-dom-x-attr-expected.png
index 1641a7e2..3a6c4546 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-dom-x-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-dom-x-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-dom-y-attr-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-dom-y-attr-expected.png
index 1641a7e2..3a6c4546 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-dom-y-attr-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-dom-y-attr-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-svgdom-height-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-svgdom-height-prop-expected.png
index 1641a7e2..3a6c4546 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-svgdom-height-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-svgdom-height-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-svgdom-preserveAspectRatio-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-svgdom-preserveAspectRatio-prop-expected.png
index 1641a7e2..3a6c4546 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-svgdom-preserveAspectRatio-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-svgdom-preserveAspectRatio-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-svgdom-width-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-svgdom-width-prop-expected.png
index 1641a7e2..3a6c4546 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-svgdom-width-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-svgdom-width-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-svgdom-x-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-svgdom-x-prop-expected.png
index 1641a7e2..3a6c4546 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-svgdom-x-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-svgdom-x-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-svgdom-y-prop-expected.png b/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-svgdom-y-prop-expected.png
index 1641a7e2..3a6c4546 100644
--- a/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-svgdom-y-prop-expected.png
+++ b/third_party/blink/web_tests/svg/dynamic-updates/SVGImageElement-svgdom-y-prop-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/exotic-color-space/images/color-profile-background-image-cover-expected.png b/third_party/blink/web_tests/virtual/exotic-color-space/images/color-profile-background-image-cover-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/exotic-color-space/images/color-profile-background-image-cover-expected.png
rename to third_party/blink/web_tests/virtual/exotic-color-space/images/color-profile-background-image-cover-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/exotic-color-space/images/color-profile-background-image-space-expected.png b/third_party/blink/web_tests/virtual/exotic-color-space/images/color-profile-background-image-space-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/exotic-color-space/images/color-profile-background-image-space-expected.png
rename to third_party/blink/web_tests/virtual/exotic-color-space/images/color-profile-background-image-space-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/exotic-color-space/images/color-profile-border-image-expected.png b/third_party/blink/web_tests/virtual/exotic-color-space/images/color-profile-border-image-expected.png
similarity index 100%
rename from third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/exotic-color-space/images/color-profile-border-image-expected.png
rename to third_party/blink/web_tests/virtual/exotic-color-space/images/color-profile-border-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-image-profile-match-expected.png b/third_party/blink/web_tests/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-image-profile-match-expected.png
index 18c5489..b6a8beb3d 100644
--- a/third_party/blink/web_tests/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-image-profile-match-expected.png
+++ b/third_party/blink/web_tests/virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-image-profile-match-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-background-image-cover-expected.png b/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-background-image-cover-expected.png
index da14a0e..646c8f5b 100644
--- a/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-background-image-cover-expected.png
+++ b/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-background-image-cover-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-background-image-repeat-expected.png b/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-background-image-repeat-expected.png
index 890d278e..ea05163 100644
--- a/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-background-image-repeat-expected.png
+++ b/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-background-image-repeat-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-background-image-space-expected.png b/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-background-image-space-expected.png
index 7d74fd8..49066a42 100644
--- a/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-background-image-space-expected.png
+++ b/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-background-image-space-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-border-image-expected.png b/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-border-image-expected.png
index f83899f..74f98aa 100644
--- a/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-border-image-expected.png
+++ b/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-border-image-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-image-canvas-expected.png b/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-image-canvas-expected.png
index 200168c..991881b 100644
--- a/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-image-canvas-expected.png
+++ b/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-image-canvas-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-image-canvas-pattern-expected.png b/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-image-canvas-pattern-expected.png
index e492aa9a..73c5b63 100644
--- a/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-image-canvas-pattern-expected.png
+++ b/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-image-canvas-pattern-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-mask-image-svg-expected.png b/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-mask-image-svg-expected.png
index c9069e3..81359a85 100644
--- a/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-mask-image-svg-expected.png
+++ b/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-mask-image-svg-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-object-expected.png b/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-object-expected.png
index 5e115ce5..aaf631d 100644
--- a/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-object-expected.png
+++ b/third_party/blink/web_tests/virtual/gpu-rasterization/images/color-profile-object-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/gpu-rasterization/images/rgb-png-with-cmyk-color-profile-expected.png b/third_party/blink/web_tests/virtual/gpu-rasterization/images/rgb-png-with-cmyk-color-profile-expected.png
index dfe9984..8b04cc0 100644
--- a/third_party/blink/web_tests/virtual/gpu-rasterization/images/rgb-png-with-cmyk-color-profile-expected.png
+++ b/third_party/blink/web_tests/virtual/gpu-rasterization/images/rgb-png-with-cmyk-color-profile-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/gpu-rasterization/images/ycbcr-with-cmyk-color-profile-expected.png b/third_party/blink/web_tests/virtual/gpu-rasterization/images/ycbcr-with-cmyk-color-profile-expected.png
index 2128d87..f72a8cc 100644
--- a/third_party/blink/web_tests/virtual/gpu-rasterization/images/ycbcr-with-cmyk-color-profile-expected.png
+++ b/third_party/blink/web_tests/virtual/gpu-rasterization/images/ycbcr-with-cmyk-color-profile-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-image-profile-match-expected.png b/third_party/blink/web_tests/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-image-profile-match-expected.png
index 18c5489..b6a8beb3d 100644
--- a/third_party/blink/web_tests/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-image-profile-match-expected.png
+++ b/third_party/blink/web_tests/virtual/gpu-rasterization/images/yuv-decode-eligible/color-profile-image-profile-match-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/gpu-rasterization/images/yuv-decode-eligible/webp-no-color-profile-lossy-expected.png b/third_party/blink/web_tests/virtual/gpu-rasterization/images/yuv-decode-eligible/webp-no-color-profile-lossy-expected.png
index 63a272b..bfb9484 100644
--- a/third_party/blink/web_tests/virtual/gpu-rasterization/images/yuv-decode-eligible/webp-no-color-profile-lossy-expected.png
+++ b/third_party/blink/web_tests/virtual/gpu-rasterization/images/yuv-decode-eligible/webp-no-color-profile-lossy-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-positioned-items-padding-001-expected.txt b/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-positioned-items-padding-001-expected.txt
new file mode 100644
index 0000000..ee98a6f
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-positioned-items-padding-001-expected.txt
@@ -0,0 +1,163 @@
+This is a testharness.js-based test.
+FAIL .grid 1 assert_equals: 
+<div class="grid">
+  <div class="absolute" style="grid-column: auto / 1; grid-row: auto / 1;" data-offset-x="0" data-offset-y="0" data-expected-width="15" data-expected-height="15">
+  </div>
+  <div class="absolute" style="grid-column: 1 / 2; grid-row: auto / 1;" data-offset-x="15" data-offset-y="0" data-expected-width="100" data-expected-height="15">
+  </div>
+  <div class="absolute" style="grid-column: auto / 1; grid-row: 1 / 2;" data-offset-x="0" data-offset-y="15" data-expected-width="15" data-expected-height="50">
+  </div>
+  <div class="absolute" style="grid-column: 3 / auto; grid-row: 3 / auto;" data-offset-x="315" data-offset-y="215" data-expected-width="215" data-expected-height="115">
+  </div>
+  <div class="absolute" style="grid-column: 2 / 3; grid-row: 3 / auto;" data-offset-x="115" data-offset-y="215" data-expected-width="200" data-expected-height="115">
+  </div>
+  <div class="absolute" style="grid-column: 3 / auto; grid-row: 2 / 3;" data-offset-x="315" data-offset-y="65" data-expected-width="215" data-expected-height="150">
+  </div>
+</div>
+width expected 15 but got 530
+FAIL .grid 2 assert_equals: 
+<div class="grid">
+  <div class="absolute" style="grid-column: -5 / 1; grid-row: -5 / 1;" data-offset-x="0" data-offset-y="0" data-expected-width="15" data-expected-height="15">
+  </div>
+  <div class="absolute" style="grid-column: 1 / 2; grid-row: -5 / 1;" data-offset-x="15" data-offset-y="0" data-expected-width="100" data-expected-height="15">
+  </div>
+  <div class="absolute" style="grid-column: -5 / 1; grid-row: 1 / 2;" data-offset-x="0" data-offset-y="15" data-expected-width="15" data-expected-height="50">
+  </div>
+  <div class="absolute" style="grid-column: 3 / 5; grid-row: 3 / 5;" data-offset-x="315" data-offset-y="215" data-expected-width="215" data-expected-height="115">
+  </div>
+  <div class="absolute" style="grid-column: 2 / 3; grid-row: 3 / 5;" data-offset-x="115" data-offset-y="215" data-expected-width="200" data-expected-height="115">
+  </div>
+  <div class="absolute" style="grid-column: 3 / 5; grid-row: 2 / 3;" data-offset-x="315" data-offset-y="65" data-expected-width="215" data-expected-height="150">
+  </div>
+</div>
+width expected 15 but got 530
+FAIL .grid 3 assert_equals: 
+<div class="grid">
+  <div class="absolute" style="grid-column: span 2 / 1; grid-row: span 2 / 1;" data-offset-x="0" data-offset-y="0" data-expected-width="15" data-expected-height="15">
+  </div>
+  <div class="absolute" style="grid-column: 1 / 2; grid-row: span 2 / 1;" data-offset-x="15" data-offset-y="0" data-expected-width="100" data-expected-height="15">
+  </div>
+  <div class="absolute" style="grid-column: span 2 / 1; grid-row: 1 / 2;" data-offset-x="0" data-offset-y="15" data-expected-width="15" data-expected-height="50">
+  </div>
+  <div class="absolute" style="grid-column: 3 / span 2; grid-row: 3 / span 2;" data-offset-x="315" data-offset-y="215" data-expected-width="215" data-expected-height="115">
+  </div>
+  <div class="absolute" style="grid-column: 2 / 3; grid-row: 3 / span 2;" data-offset-x="115" data-offset-y="215" data-expected-width="200" data-expected-height="115">
+  </div>
+  <div class="absolute" style="grid-column: 3 / span 2; grid-row: 2 / 3;" data-offset-x="315" data-offset-y="65" data-expected-width="215" data-expected-height="150">
+  </div>
+</div>
+width expected 15 but got 530
+FAIL .grid 4 assert_equals: 
+<div class="grid">
+  <div class="absolute" style="grid-column: foo / 1; grid-row: foo / 1;" data-offset-x="15" data-offset-y="15" data-expected-width="515" data-expected-height="315">
+  </div>
+  <div class="absolute" style="grid-column: 1 / 2; grid-row: foo / 1;" data-offset-x="15" data-offset-y="15" data-expected-width="100" data-expected-height="315">
+  </div>
+  <div class="absolute" style="grid-column: foo / 1; grid-row: 1 / 2;" data-offset-x="15" data-offset-y="15" data-expected-width="515" data-expected-height="50">
+  </div>
+  <div class="absolute" style="grid-column: 3 / foo; grid-row: 3 / foo;" data-offset-x="315" data-offset-y="215" data-expected-width="215" data-expected-height="115">
+  </div>
+  <div class="absolute" style="grid-column: 2 / 3; grid-row: 3 / foo;" data-offset-x="115" data-offset-y="215" data-expected-width="200" data-expected-height="115">
+  </div>
+  <div class="absolute" style="grid-column: 3 / foo; grid-row: 2 / 3;" data-offset-x="315" data-offset-y="65" data-expected-width="215" data-expected-height="150">
+  </div>
+</div>
+width expected 215 but got 530
+FAIL .grid 5 assert_equals: 
+<div class="grid directionRTL">
+  <div class="absolute" style="grid-column: auto / 1; grid-row: auto / 1;" data-offset-x="515" data-offset-y="0" data-expected-width="15" data-expected-height="15">
+  </div>
+  <div class="absolute" style="grid-column: 1 / 2; grid-row: auto / 1;" data-offset-x="415" data-offset-y="0" data-expected-width="100" data-expected-height="15">
+  </div>
+  <div class="absolute" style="grid-column: auto / 1; grid-row: 1 / 2;" data-offset-x="515" data-offset-y="15" data-expected-width="15" data-expected-height="50">
+  </div>
+  <div class="absolute" style="grid-column: 3 / auto; grid-row: 3 / auto;" data-offset-x="0" data-offset-y="215" data-expected-width="215" data-expected-height="115">
+  </div>
+  <div class="absolute" style="grid-column: 2 / 3; grid-row: 3 / auto;" data-offset-x="215" data-offset-y="215" data-expected-width="200" data-expected-height="115">
+  </div>
+  <div class="absolute" style="grid-column: 3 / auto; grid-row: 2 / 3;" data-offset-x="0" data-offset-y="65" data-expected-width="215" data-expected-height="150">
+  </div>
+</div>
+width expected 15 but got 530
+FAIL .grid 6 assert_equals: 
+<div class="grid directionRTL">
+  <div class="absolute" style="grid-column: -5 / 1; grid-row: -5 / 1;" data-offset-x="515" data-offset-y="0" data-expected-width="15" data-expected-height="15">
+  </div>
+  <div class="absolute" style="grid-column: 1 / 2; grid-row: -5 / 1;" data-offset-x="415" data-offset-y="0" data-expected-width="100" data-expected-height="15">
+  </div>
+  <div class="absolute" style="grid-column: -5 / 1; grid-row: 1 / 2;" data-offset-x="515" data-offset-y="15" data-expected-width="15" data-expected-height="50">
+  </div>
+  <div class="absolute" style="grid-column: 3 / 5; grid-row: 3 / 5;" data-offset-x="0" data-offset-y="215" data-expected-width="215" data-expected-height="115">
+  </div>
+  <div class="absolute" style="grid-column: 2 / 3; grid-row: 3 / 5;" data-offset-x="215" data-offset-y="215" data-expected-width="200" data-expected-height="115">
+  </div>
+  <div class="absolute" style="grid-column: 3 / 5; grid-row: 2 / 3;" data-offset-x="0" data-offset-y="65" data-expected-width="215" data-expected-height="150">
+  </div>
+</div>
+width expected 15 but got 530
+FAIL .grid 7 assert_equals: 
+<div class="grid directionRTL">
+  <div class="absolute" style="grid-column: span 2 / 1; grid-row: span 2 / 1;" data-offset-x="515" data-offset-y="0" data-expected-width="15" data-expected-height="15">
+  </div>
+  <div class="absolute" style="grid-column: 1 / 2; grid-row: span 2 / 1;" data-offset-x="415" data-offset-y="0" data-expected-width="100" data-expected-height="15">
+  </div>
+  <div class="absolute" style="grid-column: span 2 / 1; grid-row: 1 / 2;" data-offset-x="515" data-offset-y="15" data-expected-width="15" data-expected-height="50">
+  </div>
+  <div class="absolute" style="grid-column: 3 / span 2; grid-row: 3 / span 2;" data-offset-x="0" data-offset-y="215" data-expected-width="215" data-expected-height="115">
+  </div>
+  <div class="absolute" style="grid-column: 2 / 3; grid-row: 3 / span 2;" data-offset-x="215" data-offset-y="215" data-expected-width="200" data-expected-height="115">
+  </div>
+  <div class="absolute" style="grid-column: 3 / span 2; grid-row: 2 / 3;" data-offset-x="0" data-offset-y="65" data-expected-width="215" data-expected-height="150">
+  </div>
+</div>
+width expected 15 but got 530
+FAIL .grid 8 assert_equals: 
+<div class="grid directionRTL">
+  <div class="absolute" style="grid-column: foo / 1; grid-row: foo / 1;" data-offset-x="0" data-offset-y="15" data-expected-width="515" data-expected-height="315">
+  </div>
+  <div class="absolute" style="grid-column: 1 / 2; grid-row: foo / 1;" data-offset-x="415" data-offset-y="15" data-expected-width="100" data-expected-height="315">
+  </div>
+  <div class="absolute" style="grid-column: foo / 1; grid-row: 1 / 2;" data-offset-x="0" data-offset-y="15" data-expected-width="515" data-expected-height="50">
+  </div>
+  <div class="absolute" style="grid-column: 3 / foo; grid-row: 3 / foo;" data-offset-x="0" data-offset-y="215" data-expected-width="215" data-expected-height="115">
+  </div>
+  <div class="absolute" style="grid-column: 2 / 3; grid-row: 3 / foo;" data-offset-x="215" data-offset-y="215" data-expected-width="200" data-expected-height="115">
+  </div>
+  <div class="absolute" style="grid-column: 3 / foo; grid-row: 2 / 3;" data-offset-x="0" data-offset-y="65" data-expected-width="215" data-expected-height="150">
+  </div>
+</div>
+width expected 215 but got 530
+FAIL .grid 9 assert_equals: 
+<div class="grid autoFit gap">
+  <div class="absolute" style="grid-column: auto / 1; grid-row: auto / 1;" data-offset-x="0" data-offset-y="0" data-expected-width="15" data-expected-height="15">
+  </div>
+  <div class="absolute" style="grid-column: -1 / auto; grid-row: -1 / auto;" data-offset-x="15" data-offset-y="15" data-expected-width="515" data-expected-height="315">
+  </div>
+</div>
+width expected 15 but got 530
+FAIL .grid 10 assert_equals: 
+<div class="grid autoFit gap">
+  <div class="absolute" style="grid-column: auto / 2; grid-row: auto / 2;" data-offset-x="0" data-offset-y="0" data-expected-width="15" data-expected-height="15">
+  </div>
+  <div class="absolute" style="grid-column: -2 / auto; grid-row: -2 / auto;" data-offset-x="15" data-offset-y="15" data-expected-width="515" data-expected-height="315">
+  </div>
+</div>
+width expected 15 but got 45
+FAIL .grid 11 assert_equals: 
+<div class="grid autoFit directionRTL gap">
+  <div class="absolute" style="grid-column: auto / 1; grid-row: auto / 1;" data-offset-x="515" data-offset-y="0" data-expected-width="15" data-expected-height="15">
+  </div>
+  <div class="absolute" style="grid-column: -1 / auto; grid-row: -1 / auto;" data-offset-x="0" data-offset-y="15" data-expected-width="515" data-expected-height="315">
+  </div>
+</div>
+width expected 15 but got 530
+FAIL .grid 12 assert_equals: 
+<div class="grid autoFit directionRTL gap">
+  <div class="absolute" style="grid-column: auto / 2; grid-row: auto / 2;" data-offset-x="515" data-offset-y="0" data-expected-width="15" data-expected-height="15">
+  </div>
+  <div class="absolute" style="grid-column: -2 / auto; grid-row: -2 / auto;" data-offset-x="0" data-offset-y="15" data-expected-width="515" data-expected-height="315">
+  </div>
+</div>
+width expected 15 but got 45
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/virtual/layout_ng_block_frag/external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-expected.txt b/third_party/blink/web_tests/virtual/layout_ng_block_frag/external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-expected.txt
new file mode 100644
index 0000000..69bb94f
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/layout_ng_block_frag/external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display-expected.txt
@@ -0,0 +1,112 @@
+This is a testharness.js-based test.
+Found 108 tests; 28 PASS, 80 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS rendered legend with display: block
+PASS rendered legend with display: table
+FAIL rendered legend with display: table-row-group assert_equals: display: table-row-group is not supported expected "table-row-group" but got "block"
+FAIL rendered legend with display: table-header-group assert_equals: display: table-header-group is not supported expected "table-header-group" but got "block"
+FAIL rendered legend with display: table-footer-group assert_equals: display: table-footer-group is not supported expected "table-footer-group" but got "block"
+FAIL rendered legend with display: table-row assert_equals: display: table-row is not supported expected "table-row" but got "block"
+FAIL rendered legend with display: table-cell assert_equals: display: table-cell is not supported expected "table-cell" but got "block"
+FAIL rendered legend with display: table-column-group assert_equals: display: table-column-group is not supported expected "table-column-group" but got "block"
+FAIL rendered legend with display: table-column assert_equals: display: table-column is not supported expected "table-column" but got "block"
+FAIL rendered legend with display: table-caption assert_equals: display: table-caption is not supported expected "table-caption" but got "block"
+PASS rendered legend with display: list-item
+PASS rendered legend with display: flow
+PASS rendered legend with display: flow-root
+FAIL rendered legend with display: run-in assert_equals: display: run-in is not supported expected "run-in" but got "block"
+FAIL rendered legend with display: inline assert_equals: display: inline is not supported expected "inline" but got "block"
+FAIL rendered legend with display: inline-block assert_equals: display: inline-block is not supported expected "inline-block" but got "block"
+FAIL rendered legend with display: inline-table assert_equals: display: inline-table is not supported expected "inline-table" but got "table"
+FAIL rendered legend with display: block ruby assert_equals: display: block ruby is not supported expected "block ruby" but got "block"
+FAIL rendered legend with display: ruby assert_equals: display: ruby is not supported expected "ruby" but got "block"
+FAIL rendered legend with display: ruby-base assert_equals: display: ruby-base is not supported expected "ruby-base" but got "block"
+FAIL rendered legend with display: ruby-text assert_equals: display: ruby-text is not supported expected "ruby-text" but got "block"
+FAIL rendered legend with display: ruby-base-container assert_equals: display: ruby-base-container is not supported expected "ruby-base-container" but got "block"
+FAIL rendered legend with display: ruby-text-container assert_equals: display: ruby-text-container is not supported expected "ruby-text-container" but got "block"
+PASS rendered legend with display: grid
+FAIL rendered legend with display: inline-grid assert_equals: display: inline-grid is not supported expected "inline-grid" but got "grid"
+PASS rendered legend with display: flex
+FAIL rendered legend with display: inline-flex assert_equals: display: inline-flex is not supported expected "inline-flex" but got "flex"
+PASS rendered legend with display: block; overflow:hidden
+PASS rendered legend with display: table; overflow:hidden
+FAIL rendered legend with display: table-row-group; overflow:hidden assert_equals: display: table-row-group is not supported expected "table-row-group" but got "block"
+FAIL rendered legend with display: table-header-group; overflow:hidden assert_equals: display: table-header-group is not supported expected "table-header-group" but got "block"
+FAIL rendered legend with display: table-footer-group; overflow:hidden assert_equals: display: table-footer-group is not supported expected "table-footer-group" but got "block"
+FAIL rendered legend with display: table-row; overflow:hidden assert_equals: display: table-row is not supported expected "table-row" but got "block"
+FAIL rendered legend with display: table-cell; overflow:hidden assert_equals: display: table-cell is not supported expected "table-cell" but got "block"
+FAIL rendered legend with display: table-column-group; overflow:hidden assert_equals: display: table-column-group is not supported expected "table-column-group" but got "block"
+FAIL rendered legend with display: table-column; overflow:hidden assert_equals: display: table-column is not supported expected "table-column" but got "block"
+FAIL rendered legend with display: table-caption; overflow:hidden assert_equals: display: table-caption is not supported expected "table-caption" but got "block"
+PASS rendered legend with display: list-item; overflow:hidden
+PASS rendered legend with display: flow; overflow:hidden
+PASS rendered legend with display: flow-root; overflow:hidden
+FAIL rendered legend with display: run-in; overflow:hidden assert_equals: display: run-in is not supported expected "run-in" but got "block"
+FAIL rendered legend with display: inline; overflow:hidden assert_equals: display: inline is not supported expected "inline" but got "block"
+FAIL rendered legend with display: inline-block; overflow:hidden assert_equals: display: inline-block is not supported expected "inline-block" but got "block"
+FAIL rendered legend with display: inline-table; overflow:hidden assert_equals: display: inline-table is not supported expected "inline-table" but got "table"
+FAIL rendered legend with display: block ruby; overflow:hidden assert_equals: display: block ruby is not supported expected "block ruby" but got "block"
+FAIL rendered legend with display: ruby; overflow:hidden assert_equals: display: ruby is not supported expected "ruby" but got "block"
+FAIL rendered legend with display: ruby-base; overflow:hidden assert_equals: display: ruby-base is not supported expected "ruby-base" but got "block"
+FAIL rendered legend with display: ruby-text; overflow:hidden assert_equals: display: ruby-text is not supported expected "ruby-text" but got "block"
+FAIL rendered legend with display: ruby-base-container; overflow:hidden assert_equals: display: ruby-base-container is not supported expected "ruby-base-container" but got "block"
+FAIL rendered legend with display: ruby-text-container; overflow:hidden assert_equals: display: ruby-text-container is not supported expected "ruby-text-container" but got "block"
+PASS rendered legend with display: grid; overflow:hidden
+FAIL rendered legend with display: inline-grid; overflow:hidden assert_equals: display: inline-grid is not supported expected "inline-grid" but got "grid"
+PASS rendered legend with display: flex; overflow:hidden
+FAIL rendered legend with display: inline-flex; overflow:hidden assert_equals: display: inline-flex is not supported expected "inline-flex" but got "flex"
+PASS rendered legend with display: block; columns:1
+PASS rendered legend with display: table; columns:1
+FAIL rendered legend with display: table-row-group; columns:1 assert_equals: display: table-row-group is not supported expected "table-row-group" but got "block"
+FAIL rendered legend with display: table-header-group; columns:1 assert_equals: display: table-header-group is not supported expected "table-header-group" but got "block"
+FAIL rendered legend with display: table-footer-group; columns:1 assert_equals: display: table-footer-group is not supported expected "table-footer-group" but got "block"
+FAIL rendered legend with display: table-row; columns:1 assert_equals: display: table-row is not supported expected "table-row" but got "block"
+FAIL rendered legend with display: table-cell; columns:1 assert_equals: display: table-cell is not supported expected "table-cell" but got "block"
+FAIL rendered legend with display: table-column-group; columns:1 assert_equals: display: table-column-group is not supported expected "table-column-group" but got "block"
+FAIL rendered legend with display: table-column; columns:1 assert_equals: display: table-column is not supported expected "table-column" but got "block"
+FAIL rendered legend with display: table-caption; columns:1 assert_equals: display: table-caption is not supported expected "table-caption" but got "block"
+PASS rendered legend with display: list-item; columns:1
+PASS rendered legend with display: flow; columns:1
+PASS rendered legend with display: flow-root; columns:1
+FAIL rendered legend with display: run-in; columns:1 assert_equals: display: run-in is not supported expected "run-in" but got "block"
+FAIL rendered legend with display: inline; columns:1 assert_equals: display: inline is not supported expected "inline" but got "block"
+FAIL rendered legend with display: inline-block; columns:1 assert_equals: display: inline-block is not supported expected "inline-block" but got "block"
+FAIL rendered legend with display: inline-table; columns:1 assert_equals: display: inline-table is not supported expected "inline-table" but got "table"
+FAIL rendered legend with display: block ruby; columns:1 assert_equals: display: block ruby is not supported expected "block ruby" but got "block"
+FAIL rendered legend with display: ruby; columns:1 assert_equals: display: ruby is not supported expected "ruby" but got "block"
+FAIL rendered legend with display: ruby-base; columns:1 assert_equals: display: ruby-base is not supported expected "ruby-base" but got "block"
+FAIL rendered legend with display: ruby-text; columns:1 assert_equals: display: ruby-text is not supported expected "ruby-text" but got "block"
+FAIL rendered legend with display: ruby-base-container; columns:1 assert_equals: display: ruby-base-container is not supported expected "ruby-base-container" but got "block"
+FAIL rendered legend with display: ruby-text-container; columns:1 assert_equals: display: ruby-text-container is not supported expected "ruby-text-container" but got "block"
+PASS rendered legend with display: grid; columns:1
+FAIL rendered legend with display: inline-grid; columns:1 assert_equals: display: inline-grid is not supported expected "inline-grid" but got "grid"
+PASS rendered legend with display: flex; columns:1
+FAIL rendered legend with display: inline-flex; columns:1 assert_equals: display: inline-flex is not supported expected "inline-flex" but got "flex"
+PASS rendered legend with display: block; overflow:hidden;columns:1
+PASS rendered legend with display: table; overflow:hidden;columns:1
+FAIL rendered legend with display: table-row-group; overflow:hidden;columns:1 assert_equals: display: table-row-group is not supported expected "table-row-group" but got "block"
+FAIL rendered legend with display: table-header-group; overflow:hidden;columns:1 assert_equals: display: table-header-group is not supported expected "table-header-group" but got "block"
+FAIL rendered legend with display: table-footer-group; overflow:hidden;columns:1 assert_equals: display: table-footer-group is not supported expected "table-footer-group" but got "block"
+FAIL rendered legend with display: table-row; overflow:hidden;columns:1 assert_equals: display: table-row is not supported expected "table-row" but got "block"
+FAIL rendered legend with display: table-cell; overflow:hidden;columns:1 assert_equals: display: table-cell is not supported expected "table-cell" but got "block"
+FAIL rendered legend with display: table-column-group; overflow:hidden;columns:1 assert_equals: display: table-column-group is not supported expected "table-column-group" but got "block"
+FAIL rendered legend with display: table-column; overflow:hidden;columns:1 assert_equals: display: table-column is not supported expected "table-column" but got "block"
+FAIL rendered legend with display: table-caption; overflow:hidden;columns:1 assert_equals: display: table-caption is not supported expected "table-caption" but got "block"
+PASS rendered legend with display: list-item; overflow:hidden;columns:1
+PASS rendered legend with display: flow; overflow:hidden;columns:1
+PASS rendered legend with display: flow-root; overflow:hidden;columns:1
+FAIL rendered legend with display: run-in; overflow:hidden;columns:1 assert_equals: display: run-in is not supported expected "run-in" but got "block"
+FAIL rendered legend with display: inline; overflow:hidden;columns:1 assert_equals: display: inline is not supported expected "inline" but got "block"
+FAIL rendered legend with display: inline-block; overflow:hidden;columns:1 assert_equals: display: inline-block is not supported expected "inline-block" but got "block"
+FAIL rendered legend with display: inline-table; overflow:hidden;columns:1 assert_equals: display: inline-table is not supported expected "inline-table" but got "table"
+FAIL rendered legend with display: block ruby; overflow:hidden;columns:1 assert_equals: display: block ruby is not supported expected "block ruby" but got "block"
+FAIL rendered legend with display: ruby; overflow:hidden;columns:1 assert_equals: display: ruby is not supported expected "ruby" but got "block"
+FAIL rendered legend with display: ruby-base; overflow:hidden;columns:1 assert_equals: display: ruby-base is not supported expected "ruby-base" but got "block"
+FAIL rendered legend with display: ruby-text; overflow:hidden;columns:1 assert_equals: display: ruby-text is not supported expected "ruby-text" but got "block"
+FAIL rendered legend with display: ruby-base-container; overflow:hidden;columns:1 assert_equals: display: ruby-base-container is not supported expected "ruby-base-container" but got "block"
+FAIL rendered legend with display: ruby-text-container; overflow:hidden;columns:1 assert_equals: display: ruby-text-container is not supported expected "ruby-text-container" but got "block"
+PASS rendered legend with display: grid; overflow:hidden;columns:1
+FAIL rendered legend with display: inline-grid; overflow:hidden;columns:1 assert_equals: display: inline-grid is not supported expected "inline-grid" but got "grid"
+PASS rendered legend with display: flex; overflow:hidden;columns:1
+FAIL rendered legend with display: inline-flex; overflow:hidden;columns:1 assert_equals: display: inline-flex is not supported expected "inline-flex" but got "flex"
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/virtual/link-disabled-old-behavior/external/wpt/css/cssom/idlharness-expected.txt b/third_party/blink/web_tests/virtual/link-disabled-old-behavior/external/wpt/css/cssom/idlharness-expected.txt
new file mode 100644
index 0000000..ecd26b9
--- /dev/null
+++ b/third_party/blink/web_tests/virtual/link-disabled-old-behavior/external/wpt/css/cssom/idlharness-expected.txt
@@ -0,0 +1,443 @@
+This is a testharness.js-based test.
+Found 437 tests; 382 PASS, 55 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS idl_test setup
+PASS idl_test validation
+PASS Partial interface CSSStyleSheet: original interface defined
+PASS Partial interface CSSStyleSheet: member names are unique
+PASS Partial interface mixin DocumentOrShadowRoot: original interface mixin defined
+PASS Partial interface mixin DocumentOrShadowRoot: member names are unique
+PASS Partial interface Window: original interface defined
+PASS Partial interface Window: member names are unique
+PASS Partial interface mixin DocumentOrShadowRoot[2]: member names are unique
+PASS Partial interface HTMLLinkElement: member names are unique
+PASS Partial interface HTMLStyleElement: member names are unique
+PASS Partial interface Window[2]: member names are unique
+PASS ProcessingInstruction includes LinkStyle: member names are unique
+PASS HTMLElement includes ElementCSSInlineStyle: member names are unique
+PASS HTMLElement includes GlobalEventHandlers: member names are unique
+PASS HTMLElement includes DocumentAndElementEventHandlers: member names are unique
+PASS HTMLElement includes ElementContentEditable: member names are unique
+PASS HTMLElement includes HTMLOrSVGElement: member names are unique
+PASS SVGElement includes ElementCSSInlineStyle: member names are unique
+PASS SVGElement includes GlobalEventHandlers: member names are unique
+PASS SVGElement includes DocumentAndElementEventHandlers: member names are unique
+PASS SVGElement includes SVGElementInstance: member names are unique
+PASS SVGElement includes HTMLOrSVGElement: member names are unique
+PASS SVGStyleElement includes LinkStyle: member names are unique
+PASS HTMLLinkElement includes LinkStyle: member names are unique
+PASS HTMLStyleElement includes LinkStyle: member names are unique
+PASS Window includes GlobalEventHandlers: member names are unique
+PASS Window includes WindowEventHandlers: member names are unique
+PASS Window includes WindowOrWorkerGlobalScope: member names are unique
+PASS Window includes AnimationFrameProvider: member names are unique
+PASS Window includes WindowSessionStorage: member names are unique
+PASS Window includes WindowLocalStorage: member names are unique
+PASS Document includes NonElementParentNode: member names are unique
+PASS Document includes DocumentOrShadowRoot: member names are unique
+PASS Document includes ParentNode: member names are unique
+PASS Document includes XPathEvaluatorBase: member names are unique
+PASS DocumentFragment includes NonElementParentNode: member names are unique
+PASS DocumentFragment includes ParentNode: member names are unique
+PASS ShadowRoot includes DocumentOrShadowRoot: member names are unique
+PASS Element includes ParentNode: member names are unique
+PASS Element includes NonDocumentTypeChildNode: member names are unique
+PASS Element includes ChildNode: member names are unique
+PASS Element includes Slottable: member names are unique
+PASS CharacterData includes NonDocumentTypeChildNode: member names are unique
+PASS CharacterData includes ChildNode: member names are unique
+PASS MediaList interface: existence and properties of interface object
+PASS MediaList interface object length
+PASS MediaList interface object name
+PASS MediaList interface: existence and properties of interface prototype object
+PASS MediaList interface: existence and properties of interface prototype object's "constructor" property
+PASS MediaList interface: existence and properties of interface prototype object's @@unscopables property
+PASS MediaList interface: attribute mediaText
+PASS MediaList interface: stringifier
+PASS MediaList interface: attribute length
+PASS MediaList interface: operation item(unsigned long)
+PASS MediaList interface: operation appendMedium(CSSOMString)
+PASS MediaList interface: operation deleteMedium(CSSOMString)
+PASS MediaList must be primary interface of sheet.media
+PASS Stringification of sheet.media
+PASS MediaList interface: sheet.media must inherit property "mediaText" with the proper type
+PASS MediaList interface: sheet.media must inherit property "length" with the proper type
+PASS MediaList interface: sheet.media must inherit property "item(unsigned long)" with the proper type
+PASS MediaList interface: calling item(unsigned long) on sheet.media with too few arguments must throw TypeError
+PASS MediaList interface: sheet.media must inherit property "appendMedium(CSSOMString)" with the proper type
+PASS MediaList interface: calling appendMedium(CSSOMString) on sheet.media with too few arguments must throw TypeError
+PASS MediaList interface: sheet.media must inherit property "deleteMedium(CSSOMString)" with the proper type
+PASS MediaList interface: calling deleteMedium(CSSOMString) on sheet.media with too few arguments must throw TypeError
+PASS StyleSheet interface: existence and properties of interface object
+PASS StyleSheet interface object length
+PASS StyleSheet interface object name
+PASS StyleSheet interface: existence and properties of interface prototype object
+PASS StyleSheet interface: existence and properties of interface prototype object's "constructor" property
+PASS StyleSheet interface: existence and properties of interface prototype object's @@unscopables property
+PASS StyleSheet interface: attribute type
+PASS StyleSheet interface: attribute href
+PASS StyleSheet interface: attribute ownerNode
+PASS StyleSheet interface: attribute parentStyleSheet
+PASS StyleSheet interface: attribute title
+PASS StyleSheet interface: attribute media
+PASS StyleSheet interface: attribute disabled
+FAIL CSSStyleSheet interface: existence and properties of interface object assert_throws_js: interface object didn't throw TypeError when called as a constructor function "function() {
+                new interface_object();
+            }" did not throw
+PASS CSSStyleSheet interface object length
+PASS CSSStyleSheet interface object name
+PASS CSSStyleSheet interface: existence and properties of interface prototype object
+PASS CSSStyleSheet interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSStyleSheet interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSStyleSheet interface: attribute ownerRule
+PASS CSSStyleSheet interface: attribute cssRules
+PASS CSSStyleSheet interface: operation insertRule(CSSOMString, optional unsigned long)
+PASS CSSStyleSheet interface: operation deleteRule(unsigned long)
+PASS CSSStyleSheet interface: attribute rules
+PASS CSSStyleSheet interface: operation addRule(optional DOMString, optional DOMString, optional unsigned long)
+PASS CSSStyleSheet interface: operation removeRule(optional unsigned long)
+PASS CSSStyleSheet must be primary interface of sheet
+PASS Stringification of sheet
+PASS CSSStyleSheet interface: sheet must inherit property "ownerRule" with the proper type
+PASS CSSStyleSheet interface: sheet must inherit property "cssRules" with the proper type
+PASS CSSStyleSheet interface: sheet must inherit property "insertRule(CSSOMString, optional unsigned long)" with the proper type
+PASS CSSStyleSheet interface: calling insertRule(CSSOMString, optional unsigned long) on sheet with too few arguments must throw TypeError
+PASS CSSStyleSheet interface: sheet must inherit property "deleteRule(unsigned long)" with the proper type
+PASS CSSStyleSheet interface: calling deleteRule(unsigned long) on sheet with too few arguments must throw TypeError
+PASS CSSStyleSheet interface: sheet must inherit property "rules" with the proper type
+PASS CSSStyleSheet interface: sheet must inherit property "addRule(optional DOMString, optional DOMString, optional unsigned long)" with the proper type
+PASS CSSStyleSheet interface: calling addRule(optional DOMString, optional DOMString, optional unsigned long) on sheet with too few arguments must throw TypeError
+PASS CSSStyleSheet interface: sheet must inherit property "removeRule(optional unsigned long)" with the proper type
+PASS CSSStyleSheet interface: calling removeRule(optional unsigned long) on sheet with too few arguments must throw TypeError
+PASS StyleSheet interface: sheet must inherit property "type" with the proper type
+PASS StyleSheet interface: sheet must inherit property "href" with the proper type
+PASS StyleSheet interface: sheet must inherit property "ownerNode" with the proper type
+PASS StyleSheet interface: sheet must inherit property "parentStyleSheet" with the proper type
+PASS StyleSheet interface: sheet must inherit property "title" with the proper type
+PASS StyleSheet interface: sheet must inherit property "media" with the proper type
+PASS StyleSheet interface: sheet must inherit property "disabled" with the proper type
+PASS StyleSheetList interface: existence and properties of interface object
+PASS StyleSheetList interface object length
+PASS StyleSheetList interface object name
+PASS StyleSheetList interface: existence and properties of interface prototype object
+PASS StyleSheetList interface: existence and properties of interface prototype object's "constructor" property
+PASS StyleSheetList interface: existence and properties of interface prototype object's @@unscopables property
+PASS StyleSheetList interface: operation item(unsigned long)
+PASS StyleSheetList interface: attribute length
+PASS StyleSheetList must be primary interface of document.styleSheets
+PASS Stringification of document.styleSheets
+PASS StyleSheetList interface: document.styleSheets must inherit property "item(unsigned long)" with the proper type
+PASS StyleSheetList interface: calling item(unsigned long) on document.styleSheets with too few arguments must throw TypeError
+PASS StyleSheetList interface: document.styleSheets must inherit property "length" with the proper type
+PASS CSSRuleList interface: existence and properties of interface object
+PASS CSSRuleList interface object length
+PASS CSSRuleList interface object name
+PASS CSSRuleList interface: existence and properties of interface prototype object
+PASS CSSRuleList interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSRuleList interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSRuleList interface: operation item(unsigned long)
+PASS CSSRuleList interface: attribute length
+PASS CSSRuleList must be primary interface of sheet.cssRules
+PASS Stringification of sheet.cssRules
+PASS CSSRuleList interface: sheet.cssRules must inherit property "item(unsigned long)" with the proper type
+PASS CSSRuleList interface: calling item(unsigned long) on sheet.cssRules with too few arguments must throw TypeError
+PASS CSSRuleList interface: sheet.cssRules must inherit property "length" with the proper type
+PASS CSSRule interface: existence and properties of interface object
+PASS CSSRule interface object length
+PASS CSSRule interface object name
+PASS CSSRule interface: existence and properties of interface prototype object
+PASS CSSRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSRule interface: attribute cssText
+PASS CSSRule interface: attribute parentRule
+PASS CSSRule interface: attribute parentStyleSheet
+PASS CSSRule interface: attribute type
+PASS CSSRule interface: constant STYLE_RULE on interface object
+PASS CSSRule interface: constant STYLE_RULE on interface prototype object
+PASS CSSRule interface: constant CHARSET_RULE on interface object
+PASS CSSRule interface: constant CHARSET_RULE on interface prototype object
+PASS CSSRule interface: constant IMPORT_RULE on interface object
+PASS CSSRule interface: constant IMPORT_RULE on interface prototype object
+PASS CSSRule interface: constant MEDIA_RULE on interface object
+PASS CSSRule interface: constant MEDIA_RULE on interface prototype object
+PASS CSSRule interface: constant FONT_FACE_RULE on interface object
+PASS CSSRule interface: constant FONT_FACE_RULE on interface prototype object
+PASS CSSRule interface: constant PAGE_RULE on interface object
+PASS CSSRule interface: constant PAGE_RULE on interface prototype object
+FAIL CSSRule interface: constant MARGIN_RULE on interface object assert_own_property: expected property "MARGIN_RULE" missing
+FAIL CSSRule interface: constant MARGIN_RULE on interface prototype object assert_own_property: expected property "MARGIN_RULE" missing
+PASS CSSRule interface: constant NAMESPACE_RULE on interface object
+PASS CSSRule interface: constant NAMESPACE_RULE on interface prototype object
+PASS CSSStyleRule interface: existence and properties of interface object
+PASS CSSStyleRule interface object length
+PASS CSSStyleRule interface object name
+PASS CSSStyleRule interface: existence and properties of interface prototype object
+PASS CSSStyleRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSStyleRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSStyleRule interface: attribute selectorText
+PASS CSSStyleRule interface: attribute style
+PASS CSSStyleRule must be primary interface of sheet.cssRules[4]
+PASS Stringification of sheet.cssRules[4]
+PASS CSSStyleRule interface: sheet.cssRules[4] must inherit property "selectorText" with the proper type
+PASS CSSStyleRule interface: sheet.cssRules[4] must inherit property "style" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "cssText" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "parentRule" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "parentStyleSheet" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "type" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "STYLE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "CHARSET_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "IMPORT_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "MEDIA_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "FONT_FACE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "PAGE_RULE" with the proper type
+FAIL CSSRule interface: sheet.cssRules[4] must inherit property "MARGIN_RULE" with the proper type assert_inherits: property "MARGIN_RULE" not found in prototype chain
+PASS CSSRule interface: sheet.cssRules[4] must inherit property "NAMESPACE_RULE" with the proper type
+PASS CSSImportRule interface: existence and properties of interface object
+PASS CSSImportRule interface object length
+PASS CSSImportRule interface object name
+PASS CSSImportRule interface: existence and properties of interface prototype object
+PASS CSSImportRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSImportRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSImportRule interface: attribute href
+PASS CSSImportRule interface: attribute media
+PASS CSSImportRule interface: attribute styleSheet
+PASS CSSImportRule must be primary interface of sheet.cssRules[0]
+PASS Stringification of sheet.cssRules[0]
+PASS CSSImportRule interface: sheet.cssRules[0] must inherit property "href" with the proper type
+PASS CSSImportRule interface: sheet.cssRules[0] must inherit property "media" with the proper type
+PASS CSSImportRule interface: sheet.cssRules[0] must inherit property "styleSheet" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "cssText" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "parentRule" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "parentStyleSheet" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "type" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "STYLE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "CHARSET_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "IMPORT_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "MEDIA_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "FONT_FACE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "PAGE_RULE" with the proper type
+FAIL CSSRule interface: sheet.cssRules[0] must inherit property "MARGIN_RULE" with the proper type assert_inherits: property "MARGIN_RULE" not found in prototype chain
+PASS CSSRule interface: sheet.cssRules[0] must inherit property "NAMESPACE_RULE" with the proper type
+PASS CSSGroupingRule interface: existence and properties of interface object
+PASS CSSGroupingRule interface object length
+PASS CSSGroupingRule interface object name
+PASS CSSGroupingRule interface: existence and properties of interface prototype object
+PASS CSSGroupingRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSGroupingRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSGroupingRule interface: attribute cssRules
+FAIL CSSGroupingRule interface: operation insertRule(CSSOMString, optional unsigned long) assert_equals: property has wrong .length expected 1 but got 2
+PASS CSSGroupingRule interface: operation deleteRule(unsigned long)
+FAIL CSSPageRule interface: existence and properties of interface object assert_equals: prototype of CSSPageRule is not CSSGroupingRule expected function "function CSSGroupingRule() { [native code] }" but got function "function CSSRule() { [native code] }"
+PASS CSSPageRule interface object length
+PASS CSSPageRule interface object name
+FAIL CSSPageRule interface: existence and properties of interface prototype object assert_equals: prototype of CSSPageRule.prototype is not CSSGroupingRule.prototype expected object "[object CSSGroupingRule]" but got object "[object CSSRule]"
+PASS CSSPageRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSPageRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSPageRule interface: attribute selectorText
+PASS CSSPageRule interface: attribute style
+PASS CSSPageRule must be primary interface of sheet.cssRules[2]
+PASS Stringification of sheet.cssRules[2]
+PASS CSSPageRule interface: sheet.cssRules[2] must inherit property "selectorText" with the proper type
+PASS CSSPageRule interface: sheet.cssRules[2] must inherit property "style" with the proper type
+FAIL CSSGroupingRule interface: sheet.cssRules[2] must inherit property "cssRules" with the proper type assert_inherits: property "cssRules" not found in prototype chain
+FAIL CSSGroupingRule interface: sheet.cssRules[2] must inherit property "insertRule(CSSOMString, optional unsigned long)" with the proper type assert_inherits: property "insertRule" not found in prototype chain
+FAIL CSSGroupingRule interface: calling insertRule(CSSOMString, optional unsigned long) on sheet.cssRules[2] with too few arguments must throw TypeError assert_inherits: property "insertRule" not found in prototype chain
+FAIL CSSGroupingRule interface: sheet.cssRules[2] must inherit property "deleteRule(unsigned long)" with the proper type assert_inherits: property "deleteRule" not found in prototype chain
+FAIL CSSGroupingRule interface: calling deleteRule(unsigned long) on sheet.cssRules[2] with too few arguments must throw TypeError assert_inherits: property "deleteRule" not found in prototype chain
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "cssText" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "parentRule" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "parentStyleSheet" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "type" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "STYLE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "CHARSET_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "IMPORT_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "MEDIA_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "FONT_FACE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "PAGE_RULE" with the proper type
+FAIL CSSRule interface: sheet.cssRules[2] must inherit property "MARGIN_RULE" with the proper type assert_inherits: property "MARGIN_RULE" not found in prototype chain
+PASS CSSRule interface: sheet.cssRules[2] must inherit property "NAMESPACE_RULE" with the proper type
+FAIL CSSMarginRule interface: existence and properties of interface object assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface object length assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface object name assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface: attribute name assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule interface: attribute style assert_own_property: self does not have own property "CSSMarginRule" expected property "CSSMarginRule" missing
+FAIL CSSMarginRule must be primary interface of sheet.cssRules[2].cssRules[0] assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL Stringification of sheet.cssRules[2].cssRules[0] assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSMarginRule interface: sheet.cssRules[2].cssRules[0] must inherit property "name" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSMarginRule interface: sheet.cssRules[2].cssRules[0] must inherit property "style" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "cssText" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "parentRule" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "parentStyleSheet" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "type" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "STYLE_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "CHARSET_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "IMPORT_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "MEDIA_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "FONT_FACE_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "PAGE_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "MARGIN_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSRule interface: sheet.cssRules[2].cssRules[0] must inherit property "NAMESPACE_RULE" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+PASS CSSNamespaceRule interface: existence and properties of interface object
+PASS CSSNamespaceRule interface object length
+PASS CSSNamespaceRule interface object name
+PASS CSSNamespaceRule interface: existence and properties of interface prototype object
+PASS CSSNamespaceRule interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSNamespaceRule interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSNamespaceRule interface: attribute namespaceURI
+PASS CSSNamespaceRule interface: attribute prefix
+PASS CSSNamespaceRule must be primary interface of sheet.cssRules[1]
+PASS Stringification of sheet.cssRules[1]
+PASS CSSNamespaceRule interface: sheet.cssRules[1] must inherit property "namespaceURI" with the proper type
+PASS CSSNamespaceRule interface: sheet.cssRules[1] must inherit property "prefix" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "cssText" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "parentRule" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "parentStyleSheet" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "type" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "STYLE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "CHARSET_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "IMPORT_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "MEDIA_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "FONT_FACE_RULE" with the proper type
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "PAGE_RULE" with the proper type
+FAIL CSSRule interface: sheet.cssRules[1] must inherit property "MARGIN_RULE" with the proper type assert_inherits: property "MARGIN_RULE" not found in prototype chain
+PASS CSSRule interface: sheet.cssRules[1] must inherit property "NAMESPACE_RULE" with the proper type
+PASS CSSStyleDeclaration interface: existence and properties of interface object
+PASS CSSStyleDeclaration interface object length
+PASS CSSStyleDeclaration interface object name
+PASS CSSStyleDeclaration interface: existence and properties of interface prototype object
+PASS CSSStyleDeclaration interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSStyleDeclaration interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSStyleDeclaration interface: attribute cssText
+PASS CSSStyleDeclaration interface: attribute length
+PASS CSSStyleDeclaration interface: operation item(unsigned long)
+PASS CSSStyleDeclaration interface: operation getPropertyValue(CSSOMString)
+PASS CSSStyleDeclaration interface: operation getPropertyPriority(CSSOMString)
+PASS CSSStyleDeclaration interface: operation setProperty(CSSOMString, CSSOMString, optional CSSOMString)
+PASS CSSStyleDeclaration interface: operation removeProperty(CSSOMString)
+PASS CSSStyleDeclaration interface: attribute parentRule
+PASS CSSStyleDeclaration interface: attribute cssFloat
+PASS CSSStyleDeclaration must be primary interface of sheet.cssRules[4].style
+PASS Stringification of sheet.cssRules[4].style
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "cssText" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "length" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "item(unsigned long)" with the proper type
+PASS CSSStyleDeclaration interface: calling item(unsigned long) on sheet.cssRules[4].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "getPropertyValue(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on sheet.cssRules[4].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "getPropertyPriority(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on sheet.cssRules[4].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "setProperty(CSSOMString, CSSOMString, optional CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, optional CSSOMString) on sheet.cssRules[4].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "removeProperty(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on sheet.cssRules[4].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "parentRule" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[4].style must inherit property "cssFloat" with the proper type
+PASS CSSStyleDeclaration must be primary interface of sheet.cssRules[2].style
+PASS Stringification of sheet.cssRules[2].style
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "cssText" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "length" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "item(unsigned long)" with the proper type
+PASS CSSStyleDeclaration interface: calling item(unsigned long) on sheet.cssRules[2].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "getPropertyValue(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on sheet.cssRules[2].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "getPropertyPriority(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on sheet.cssRules[2].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "setProperty(CSSOMString, CSSOMString, optional CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, optional CSSOMString) on sheet.cssRules[2].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "removeProperty(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on sheet.cssRules[2].style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "parentRule" with the proper type
+PASS CSSStyleDeclaration interface: sheet.cssRules[2].style must inherit property "cssFloat" with the proper type
+FAIL CSSStyleDeclaration must be primary interface of sheet.cssRules[2].cssRules[0].style assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL Stringification of sheet.cssRules[2].cssRules[0].style assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "cssText" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "length" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "item(unsigned long)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: calling item(unsigned long) on sheet.cssRules[2].cssRules[0].style with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "getPropertyValue(CSSOMString)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on sheet.cssRules[2].cssRules[0].style with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "getPropertyPriority(CSSOMString)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on sheet.cssRules[2].cssRules[0].style with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "setProperty(CSSOMString, CSSOMString, optional CSSOMString)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, optional CSSOMString) on sheet.cssRules[2].cssRules[0].style with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "removeProperty(CSSOMString)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on sheet.cssRules[2].cssRules[0].style with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "parentRule" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+FAIL CSSStyleDeclaration interface: sheet.cssRules[2].cssRules[0].style must inherit property "cssFloat" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Cannot read property '0' of undefined"
+PASS CSSStyleDeclaration must be primary interface of style_element.style
+PASS Stringification of style_element.style
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "cssText" with the proper type
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "length" with the proper type
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "item(unsigned long)" with the proper type
+PASS CSSStyleDeclaration interface: calling item(unsigned long) on style_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "getPropertyValue(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on style_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "getPropertyPriority(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on style_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "setProperty(CSSOMString, CSSOMString, optional CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, optional CSSOMString) on style_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "removeProperty(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on style_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "parentRule" with the proper type
+PASS CSSStyleDeclaration interface: style_element.style must inherit property "cssFloat" with the proper type
+PASS CSSStyleDeclaration must be primary interface of svg_element.style
+PASS Stringification of svg_element.style
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "cssText" with the proper type
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "length" with the proper type
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "item(unsigned long)" with the proper type
+PASS CSSStyleDeclaration interface: calling item(unsigned long) on svg_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "getPropertyValue(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on svg_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "getPropertyPriority(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on svg_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "setProperty(CSSOMString, CSSOMString, optional CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, optional CSSOMString) on svg_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "removeProperty(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on svg_element.style with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "parentRule" with the proper type
+PASS CSSStyleDeclaration interface: svg_element.style must inherit property "cssFloat" with the proper type
+PASS CSSStyleDeclaration must be primary interface of getComputedStyle(svg_element)
+PASS Stringification of getComputedStyle(svg_element)
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "cssText" with the proper type
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "length" with the proper type
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "item(unsigned long)" with the proper type
+PASS CSSStyleDeclaration interface: calling item(unsigned long) on getComputedStyle(svg_element) with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "getPropertyValue(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on getComputedStyle(svg_element) with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "getPropertyPriority(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on getComputedStyle(svg_element) with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "setProperty(CSSOMString, CSSOMString, optional CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, optional CSSOMString) on getComputedStyle(svg_element) with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "removeProperty(CSSOMString)" with the proper type
+PASS CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on getComputedStyle(svg_element) with too few arguments must throw TypeError
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "parentRule" with the proper type
+PASS CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "cssFloat" with the proper type
+PASS CSS namespace: extended attributes
+PASS CSS namespace: property descriptor
+PASS CSS namespace: [[Extensible]] is true
+PASS CSS namespace: [[Prototype]] is Object.prototype
+PASS CSS namespace: typeof is "object"
+PASS CSS namespace: has no length property
+PASS CSS namespace: has no name property
+PASS CSS namespace: operation escape(CSSOMString)
+PASS SVGElement interface: attribute style
+PASS SVGElement interface: svg_element must inherit property "style" with the proper type
+PASS SVGStyleElement interface: attribute sheet
+PASS HTMLElement interface: attribute style
+PASS HTMLElement interface: style_element must inherit property "style" with the proper type
+PASS HTMLElement interface: document.createElement("unknownelement") must inherit property "style" with the proper type
+PASS HTMLLinkElement interface: attribute sheet
+PASS HTMLStyleElement interface: attribute sheet
+PASS Window interface: operation getComputedStyle(Element, optional CSSOMString?)
+PASS Window interface: window must inherit property "getComputedStyle(Element, optional CSSOMString?)" with the proper type
+PASS Window interface: calling getComputedStyle(Element, optional CSSOMString?) on window with too few arguments must throw TypeError
+PASS Document interface: attribute styleSheets
+PASS Document interface: document must inherit property "styleSheets" with the proper type
+PASS Document interface: new Document() must inherit property "styleSheets" with the proper type
+PASS ShadowRoot interface: attribute styleSheets
+PASS ProcessingInstruction interface: attribute sheet
+PASS ProcessingInstruction interface: xmlss_pi must inherit property "sheet" with the proper type
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/virtual/raw-clipboard/external/wpt/clipboard-apis/clipboard-item.https-expected.txt b/third_party/blink/web_tests/virtual/raw-clipboard/external/wpt/clipboard-apis/clipboard-item.https-expected.txt
index 77ef423..6c37861b 100644
--- a/third_party/blink/web_tests/virtual/raw-clipboard/external/wpt/clipboard-apis/clipboard-item.https-expected.txt
+++ b/third_party/blink/web_tests/virtual/raw-clipboard/external/wpt/clipboard-apis/clipboard-item.https-expected.txt
@@ -10,5 +10,7 @@
 PASS getType(DOMString valid type) succeeds with correct output
 PASS getType(DOMString invalid type) succeeds with correct output
 PASS getType(DOMString type) rejects correctly when querying for missing type
+FAIL getType(DOMString valid type) converts DOMString to Blob promise_test: Unhandled rejection with value: object "TypeError: Failed to construct 'ClipboardItem': Failed to convert value to 'Blob'."
+FAIL getType(DOMString invalid type) converts DOMString to Blob promise_test: Unhandled rejection with value: object "TypeError: Failed to construct 'ClipboardItem': Failed to convert value to 'Blob'."
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-click.html b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-click.html
index 97208340..92e2660 100644
--- a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-click.html
+++ b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-click.html
@@ -1,11 +1,12 @@
 <!DOCTYPE html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
+<script src="/gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="/gen/third_party/blink/public/mojom/choosers/file_chooser.mojom.js"></script>
+<script src="../resources/mock-file-chooser.js"></script>
 <title>INPUT TYPE=FILE and click events</title>
 <input type="file">
-<script type="module">
-import {mockFileChooserFactory} from '../resources/mock-file-chooser.js';
-
+<script>
 promise_test(async _ => {
   const file = document.querySelector('input');
   const x = file.offsetLeft + file.offsetWidth / 2;
diff --git a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-key-enter.html b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-key-enter.html
index 5baad1a..e871c3b 100644
--- a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-key-enter.html
+++ b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-key-enter.html
@@ -1,11 +1,12 @@
 <!DOCTYPE html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
+<script src="/gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="/gen/third_party/blink/public/mojom/choosers/file_chooser.mojom.js"></script>
+<script src="../resources/mock-file-chooser.js"></script>
 <title>INPUT TYPE=FILE and key events - Enter key</title>
 <input type="file">
-<script type="module">
-import {mockFileChooserFactory} from '../resources/mock-file-chooser.js';
-
+<script>
 promise_test(async _ => {
   const promise = new Promise(
       resolve => mockFileChooserFactory.addEventListener('open', resolve));
diff --git a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-key-other.html b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-key-other.html
index 3883612..1b444e8 100644
--- a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-key-other.html
+++ b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-key-other.html
@@ -1,11 +1,12 @@
 <!DOCTYPE html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
+<script src="/gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="/gen/third_party/blink/public/mojom/choosers/file_chooser.mojom.js"></script>
+<script src="../resources/mock-file-chooser.js"></script>
 <title>INPUT TYPE=FILE and key events - Other keys</title>
 <input type="file">
-<script type="module">
-import {mockFileChooserFactory} from '../resources/mock-file-chooser.js';
-
+<script>
 promise_test(_ => {
   const promise = new Promise((resolve, reject) => {
     mockFileChooserFactory.addEventListener(
diff --git a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-key-space.html b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-key-space.html
index 0186516c..49561bda 100644
--- a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-key-space.html
+++ b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-key-space.html
@@ -1,11 +1,12 @@
 <!DOCTYPE html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
+<script src="/gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="/gen/third_party/blink/public/mojom/choosers/file_chooser.mojom.js"></script>
+<script src="../resources/mock-file-chooser.js"></script>
 <title>INPUT TYPE=FILE and key events - Space key</title>
 <input type="file">
-<script type="module">
-import {mockFileChooserFactory} from '../resources/mock-file-chooser.js';
-
+<script>
 promise_test(async _ => {
   const promise = new Promise(
       resolve => mockFileChooserFactory.addEventListener('open', resolve));
diff --git a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-click.html b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-click.html
index 6dc4492..b8e22384 100644
--- a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-click.html
+++ b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-click.html
@@ -1,11 +1,12 @@
 <!DOCTYPE html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
+<script src="/gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="/gen/third_party/blink/public/mojom/choosers/file_chooser.mojom.js"></script>
+<script src="../resources/mock-file-chooser.js"></script>
 <title>INPUT TYPE=FILE WEBKITDIRECTORY and click events</title>
 <input type="file" webkitdirectory>
-<script type="module">
-import {mockFileChooserFactory} from '../resources/mock-file-chooser.js';
-
+<script>
 promise_test(async _ => {
   const promise = new Promise(
       resolve => mockFileChooserFactory.addEventListener('open', resolve));
diff --git a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-enter-prevent-keypress.html b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-enter-prevent-keypress.html
index 7355e36..48d5f158 100644
--- a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-enter-prevent-keypress.html
+++ b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-enter-prevent-keypress.html
@@ -1,11 +1,12 @@
 <!DOCTYPE html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
+<script src="/gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="/gen/third_party/blink/public/mojom/choosers/file_chooser.mojom.js"></script>
+<script src="../resources/mock-file-chooser.js"></script>
 <title>INPUT TYPE=FILE WEBKITDIRECTORY and key events - Enter keypress prevented</title>
 <input type="file" webkitdirectory>
-<script type="module">
-import {mockFileChooserFactory} from '../resources/mock-file-chooser.js';
-
+<script>
 promise_test(async _ => {
   const promise = new Promise(
       resolve => mockFileChooserFactory.addEventListener('open', resolve));
diff --git a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-enter-prevent-keyup.html b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-enter-prevent-keyup.html
index e132658..c5b5e78c 100644
--- a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-enter-prevent-keyup.html
+++ b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-enter-prevent-keyup.html
@@ -1,11 +1,12 @@
 <!DOCTYPE html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
+<script src="/gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="/gen/third_party/blink/public/mojom/choosers/file_chooser.mojom.js"></script>
+<script src="../resources/mock-file-chooser.js"></script>
 <title>INPUT TYPE=FILE WEBKITDIRECTORY and key events - Enter keyup prevented</title>
 <input type="file" webkitdirectory>
-<script type="module">
-import {mockFileChooserFactory} from '../resources/mock-file-chooser.js';
-
+<script>
 promise_test(_ => {
   const promise = new Promise((resolve, reject) => {
     mockFileChooserFactory.addEventListener(
diff --git a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-enter.html b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-enter.html
index cb4bfc6c..22d7f481 100644
--- a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-enter.html
+++ b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-enter.html
@@ -1,11 +1,12 @@
 <!DOCTYPE html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
+<script src="/gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="/gen/third_party/blink/public/mojom/choosers/file_chooser.mojom.js"></script>
+<script src="../resources/mock-file-chooser.js"></script>
 <title>INPUT TYPE=FILE WEBKITDIRECTORY and key events - Enter key</title>
 <input type="file" webkitdirectory>
-<script type="module">
-import {mockFileChooserFactory} from '../resources/mock-file-chooser.js';
-
+<script>
 promise_test(async _ => {
   const promise = new Promise(
       resolve => mockFileChooserFactory.addEventListener('open', resolve));
diff --git a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-other.html b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-other.html
index c3007ab8..2892a245 100644
--- a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-other.html
+++ b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-other.html
@@ -1,11 +1,12 @@
 <!DOCTYPE html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
+<script src="/gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="/gen/third_party/blink/public/mojom/choosers/file_chooser.mojom.js"></script>
+<script src="../resources/mock-file-chooser.js"></script>
 <title>INPUT TYPE=FILE WEBKITDIRECTORY and key events - Other keys</title>
 <input type="file" webkitdirectory>
-<script type="module">
-import {mockFileChooserFactory} from '../resources/mock-file-chooser.js';
-
+<script>
 promise_test(_ => {
   const promise = new Promise((resolve, reject) => {
     mockFileChooserFactory.addEventListener(
diff --git a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-space.html b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-space.html
index 64967140..e1851b8 100644
--- a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-space.html
+++ b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-space.html
@@ -1,11 +1,12 @@
 <!DOCTYPE html>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
+<script src="/gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="/gen/third_party/blink/public/mojom/choosers/file_chooser.mojom.js"></script>
+<script src="../resources/mock-file-chooser.js"></script>
 <title>INPUT TYPE=FILE WEBKITDIRECTORY and key events - Space key</title>
 <input type="file" webkitdirectory>
-<script type="module">
-import {mockFileChooserFactory} from '../resources/mock-file-chooser.js';
-
+<script>
 promise_test(async _ => {
   const promise = new Promise(
       resolve => mockFileChooserFactory.addEventListener('open', resolve));
diff --git a/third_party/blink/web_tests/wpt_internal/forms/file/file-webkitRelativePath.html b/third_party/blink/web_tests/wpt_internal/forms/file/file-webkitRelativePath.html
index ca214908..5528179 100644
--- a/third_party/blink/web_tests/wpt_internal/forms/file/file-webkitRelativePath.html
+++ b/third_party/blink/web_tests/wpt_internal/forms/file/file-webkitRelativePath.html
@@ -3,12 +3,14 @@
 <title>Test webkitRelativePath IDL attribute</title>
 </head>
 <body>
+<script src="/gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
+<script src="/gen/third_party/blink/public/mojom/choosers/file_chooser.mojom.js"></script>
+<script src="../resources/mock-file-chooser.js"></script>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
-<input type="file" webkitdirectory>
-<script type="module">
-import {mockFileChooserFactory} from '../resources/mock-file-chooser.js';
 
+<input type="file" webkitdirectory>
+<script>
 // This is an automated-version of external/wpt/entries-api/file-webkitRelativePath-manual.html
 
 function clickElement(e) {
diff --git a/third_party/blink/web_tests/wpt_internal/forms/resources/mock-file-chooser.js b/third_party/blink/web_tests/wpt_internal/forms/resources/mock-file-chooser.js
index a5cae36..f32214b4 100644
--- a/third_party/blink/web_tests/wpt_internal/forms/resources/mock-file-chooser.js
+++ b/third_party/blink/web_tests/wpt_internal/forms/resources/mock-file-chooser.js
@@ -1,17 +1,21 @@
-import {FileChooser, FileChooserParams_Mode, FileChooserReceiver} from '/gen/third_party/blink/public/mojom/choosers/file_chooser.mojom.m.js';
+(function() {
+
+// This function stabilize the line number in console messages from this script.
+function log(str) {
+  console.log(str);
+}
 
 class MockFileChooserFactory extends EventTarget {
   constructor() {
     super();
     this.paths_ = [];
     this.baseDir_ = undefined;
-    this.receiver_ = undefined;
+    this.bindingSet_ = new mojo.BindingSet(blink.mojom.FileChooser);
     this.interceptor_ =
-        new MojoInterfaceInterceptor(FileChooser.$interfaceName);
+        new MojoInterfaceInterceptor(blink.mojom.FileChooser.name);
     this.interceptor_.oninterfacerequest = e => {
-      this.receiver_ = new FileChooserReceiver(
-          new MockFileChooser(this, this.paths_, this.baseDir_));
-      this.receiver_.$.bindHandle(e.handle);
+      this.bindingSet_.addBinding(
+          new MockFileChooser(this, this.paths_, this.baseDir_), e.handle);
       this.paths_ = [];
     };
     this.interceptor_.start();
@@ -25,7 +29,7 @@
 }
 
 function modeToString(mode) {
-  let Mode = FileChooserParams_Mode;
+  let Mode = blink.mojom.FileChooserParams.Mode;
   switch (mode) {
   case Mode.kOpen:
     return 'kOpen';
@@ -49,6 +53,7 @@
 
   openFileChooser(params) {
     this.params_ = params;
+    log(`FileChooser: opened; mode=${modeToString(params.mode)}`);
 
     this.factory_.dispatchEvent(
         new CustomEvent('open', {detail: modeToString(params.mode)}));
@@ -62,10 +67,19 @@
   }
 
   chooseFiles_(resolve) {
+    if (this.paths_.length > 0) {
+      log('FileChooser: selected: ' + this.paths_);
+    } else {
+      log('FileChooser: canceled');
+    }
     const file_info_list = [];
     for (const path of this.paths_) {
-      const nativeFile = {filePath: toFilePath(path), displayName: {data: []}};
-      file_info_list.push({nativeFile});
+      file_info_list.push(new blink.mojom.FileChooserFileInfo({
+          nativeFile: {
+              filePath: toFilePath(path),
+              displayName: {data:[]}
+          }
+      }));
     }
     const basePath = this.baseDir_ || '';
     resolve({result: {files: file_info_list,
@@ -91,4 +105,6 @@
   return {path: string16Path};
 }
 
-export const mockFileChooserFactory = new MockFileChooserFactory();
+window.mockFileChooserFactory = new MockFileChooserFactory();
+
+})();
diff --git a/third_party/widevine/cdm/widevine.gni b/third_party/widevine/cdm/widevine.gni
index b8993da..5b7734b8 100644
--- a/third_party/widevine/cdm/widevine.gni
+++ b/third_party/widevine/cdm/widevine.gni
@@ -47,11 +47,6 @@
 # Widevine CDM is bundled as part of Google Chrome builds.
 bundle_widevine_cdm = enable_library_widevine_cdm && is_chrome_branded
 
-# TODO(crbug.com/1111381): Remove this when MacOS ARM64 CDM is checked in.
-if (is_mac && target_cpu == "arm64") {
-  bundle_widevine_cdm = false
-}
-
 # Enable Widevine CDM host verification, which will sign additional binaries
 # with Widevine certs and copy signature files as needed.
 enable_widevine_cdm_host_verification =
diff --git a/tools/clang/scripts/build.py b/tools/clang/scripts/build.py
index 60c6a90e..41df350c 100755
--- a/tools/clang/scripts/build.py
+++ b/tools/clang/scripts/build.py
@@ -22,6 +22,7 @@
 import shutil
 import subprocess
 import sys
+import tempfile
 
 from update import (CDS_URL, CHROMIUM_DIR, CLANG_REVISION, LLVM_BUILD_DIR,
                     FORCE_HEAD_REVISION_FILE, PACKAGE_VERSION, RELEASE_VERSION,
@@ -45,10 +46,12 @@
     CHROMIUM_DIR, 'third_party', 'android_ndk')
 FUCHSIA_SDK_DIR = os.path.join(CHROMIUM_DIR, 'third_party', 'fuchsia-sdk',
                                'sdk')
+HOST_CLANG_DIR = os.path.join(LLVM_BUILD_TOOLS_DIR, 'pinned-clang')
 
 BUG_REPORT_URL = ('https://crbug.com and run'
                   ' tools/clang/scripts/process_crashreports.py'
                   ' (only works inside Google) which will upload a report')
+UPDATE_PY_URL = 'https://raw.githubusercontent.com/chromium/chromium/master/tools/clang/scripts/update.py'
 
 
 win_sdk_dir = None
@@ -324,6 +327,22 @@
   args.gcc_toolchain = gcc_dir
 
 
+def DownloadHostClang():
+  """Download update.py and run it."""
+  if not os.path.exists(HOST_CLANG_DIR):
+    tempfile_name = ""
+    with tempfile.NamedTemporaryFile(delete=False) as f:
+      DownloadUrl(UPDATE_PY_URL, f)
+      tempfile_name = f.name
+    print("Running update.py")
+    code = subprocess.call(
+        [sys.executable, tempfile_name, '--output-dir=' + HOST_CLANG_DIR])
+    os.remove(tempfile_name)
+    if code != 0:
+      print("update.py failed.")
+      sys.exit(1)
+
+
 def VerifyVersionOfBuiltClangMatchesVERSION():
   """Checks that `clang --version` outputs RELEASE_VERSION. If this
   fails, update.RELEASE_VERSION is out-of-date and needs to be updated (possibly
@@ -708,6 +727,8 @@
       cxxflags.append('--gcc-toolchain=' + args.gcc_toolchain)
 
     print('Bootstrap compiler installed.')
+  else:
+    DownloadHostClang()
 
   if args.pgo:
     print('Building instrumented compiler')
@@ -992,6 +1013,7 @@
       android_args = base_cmake_args + [
         '-DCMAKE_C_COMPILER=' + os.path.join(LLVM_BUILD_DIR, 'bin/clang'),
         '-DCMAKE_CXX_COMPILER=' + os.path.join(LLVM_BUILD_DIR, 'bin/clang++'),
+        '-DLLVM_USE_LINKER=' + os.path.join(HOST_CLANG_DIR, 'bin/ld.lld'), 
         '-DLLVM_CONFIG_PATH=' + os.path.join(LLVM_BUILD_DIR, 'bin/llvm-config'),
         '-DCMAKE_C_FLAGS=' + ' '.join(cflags),
         '-DCMAKE_CXX_FLAGS=' + ' '.join(cflags),
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl
index 2ba7d28c..792415e 100644
--- a/tools/mb/mb_config.pyl
+++ b/tools/mb/mb_config.pyl
@@ -889,6 +889,7 @@
       'chromeos-kevin-rel': 'chromeos_kevin',
       'gpu-fyi-try-chromeos-amd64-generic': 'gpu_tests_chromeos_amd64_release_trybot_dcheck_off_no_symbols',
       'gpu-fyi-try-chromeos-kevin': 'gpu_tests_chromeos_kevin_release_trybot_dcheck_off_no_symbols',
+      'lacros-amd64-generic-rel': 'chromeos_amd64-generic_lacros_rel',
       'linux-chromeos-inverse-fieldtrials-fyi-rel': 'chromeos_with_codecs_release_trybot_invert_fieldtrials',
       'linux-chromeos-rel': 'chromeos_with_codecs_release_trybot_code_coverage',
       'linux-chromeos-compile-dbg': 'chromeos_with_codecs_debug_bot',
diff --git a/tools/mb/mb_config_expectations/tryserver.chromium.chromiumos.json b/tools/mb/mb_config_expectations/tryserver.chromium.chromiumos.json
index 03b88a2..2846c18 100644
--- a/tools/mb/mb_config_expectations/tryserver.chromium.chromiumos.json
+++ b/tools/mb/mb_config_expectations/tryserver.chromium.chromiumos.json
@@ -90,6 +90,34 @@
       "use_goma": true
     }
   },
+  "lacros-amd64-generic-rel": {
+    "args_file": "//build/args/chromeos/amd64-generic.gni",
+    "gn_args": {
+      "chromeos_is_browser_only": true,
+      "cros_host_sysroot": "//build/linux/debian_sid_amd64-sysroot",
+      "cros_v8_snapshot_sysroot": "//build/linux/debian_sid_amd64-sysroot",
+      "enable_linux_installer": false,
+      "is_chromeos_device": true,
+      "ozone_platform_headless": true,
+      "ozone_platform_wayland": true,
+      "ozone_platform_x11": false,
+      "rtc_use_pipewire": false,
+      "target_os": "chromeos",
+      "use_custom_libcxx": false,
+      "use_custom_libcxx_for_host": true,
+      "use_evdev_gestures": false,
+      "use_gio": false,
+      "use_glib": false,
+      "use_goma": true,
+      "use_gtk": false,
+      "use_ozone": true,
+      "use_pangocairo": false,
+      "use_pulseaudio": false,
+      "use_system_libsync": false,
+      "use_v8_context_snapshot": false,
+      "use_vaapi": false
+    }
+  },
   "linux-cfm-rel": {
     "gn_args": {
       "dcheck_always_on": true,
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 837c922..6d060f1f 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -31257,6 +31257,8 @@
   <int value="3790" label="WindowScreenChange"/>
   <int value="3791" label="XRWebGLDepthInformationTextureAttribute"/>
   <int value="3792" label="XRWebGLBindingGetDepthInformation"/>
+  <int value="3793" label="SessionStorageFirstUsedBeforeFcp"/>
+  <int value="3794" label="SessionStorageFirstUsedAfterFcp"/>
 </enum>
 
 <enum name="FeaturePolicyAllowlistType">
@@ -59094,6 +59096,18 @@
   <int value="9" label="SetLocalAnswerResolved"/>
 </enum>
 
+<enum name="PeerConnectionBundleUsage">
+  <int value="0" label="There are no m-lines"/>
+  <int value="1" label="No BUNDLE, datachannel-only"/>
+  <int value="2" label="No BUNDLE, at most one audio/video m-line"/>
+  <int value="3" label="No BUNDLE, more than one audio/video m-line"/>
+  <int value="4" label="Using BUNDLE, datachannel-only"/>
+  <int value="5" label="Using BUNDLE, at most one audio/video m-line"/>
+  <int value="6" label="Using BUNDLE, more than one audio/video m-line"/>
+  <int value="7" label="No BUNDLE, legacy plan-b"/>
+  <int value="8" label="Using BUNDLE, legacy plan-b"/>
+</enum>
+
 <enum name="PeerConnectionCallSetupState">
   <int value="0" label="NotStarted"/>
   <int value="1" label="Started"/>
diff --git a/tools/metrics/histograms/histograms_xml/web_rtc/histograms.xml b/tools/metrics/histograms/histograms_xml/web_rtc/histograms.xml
index 45325761..7419d369d 100644
--- a/tools/metrics/histograms/histograms_xml/web_rtc/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/web_rtc/histograms.xml
@@ -1188,6 +1188,17 @@
   </summary>
 </histogram>
 
+<histogram name="WebRTC.PeerConnection.BundleUsage"
+    enum="PeerConnectionBundleUsage" expires_after="2022-01-01">
+  <owner>hta@chromium.org</owner>
+  <owner>webrtc-dev@chromium.org</owner>
+  <summary>
+    Determines whether BUNDLE is used in remote offers or answers. Recorded
+    during setRemoteDescription calls. Distinguishes between simple, complex,
+    datachannel-only and legacy plan-b usage.
+  </summary>
+</histogram>
+
 <histogram name="WebRTC.PeerConnection.CandidatePairType{IPProtocolType}"
     enum="IceCandidatePairTypes" expires_after="2020-04-05">
   <owner>qingsi@google.com</owner>
diff --git a/tools/metrics/structured/PRESUBMIT.py b/tools/metrics/structured/PRESUBMIT.py
index d53f74bf..43aa17c8 100644
--- a/tools/metrics/structured/PRESUBMIT.py
+++ b/tools/metrics/structured/PRESUBMIT.py
@@ -9,37 +9,37 @@
 """
 
 STRUCTURED_XML = 'structured.xml'
+STRUCTURED_OLD_XML = 'structured.old.xml'
+
 
 def CheckChange(input_api, output_api):
   """ Checks that structured.xml is pretty-printed and well-formatted. """
-  for f in input_api.AffectedTextFiles():
-    p = f.AbsoluteLocalPath()
-    if (input_api.basename(p) == STRUCTURED_XML
-        and input_api.os_path.dirname(p) == input_api.PresubmitLocalPath()):
-      cwd = input_api.os_path.dirname(p)
+  errors = []
 
+  for file in input_api.AffectedTextFiles():
+    path = file.AbsoluteLocalPath()
+    basename = input_api.basename(path)
+    if input_api.os_path.dirname(path) != input_api.PresubmitLocalPath():
+      continue
+
+    if basename == STRUCTURED_XML:
+      cwd = input_api.os_path.dirname(path)
       exit_code = input_api.subprocess.call(
           [input_api.python_executable, 'pretty_print.py', '--presubmit'],
           cwd=cwd)
       if exit_code != 0:
-        return [
+        errors.append(
             output_api.PresubmitError(
-                '%s is not prettified; run git cl format to fix.' %
-                STRUCTURED_XML),
-        ]
+                STRUCTURED_XML +
+                ' is not prettified; run git cl format to fix.'))
+    elif basename == STRUCTURED_OLD_XML:
+      errors.append(
+          output_api.PresubmitError(
+              STRUCTURED_OLD_XML +
+              ' exists after formatting; please remove before upload.'))
 
-      exit_code = input_api.subprocess.call(
-          [input_api.python_executable, 'validate_format.py', '--presubmit'],
-          cwd=cwd)
-      if exit_code != 0:
-        return [
-            output_api.PresubmitError(
-                '%s does not pass format validation; run %s/validate_format.py '
-                'and fix the reported error(s) or warning(s).' %
-                (STRUCTURED_XML, input_api.PresubmitLocalPath())),
-        ]
+  return errors
 
-  return []
 
 def CheckChangeOnUpload(input_api, output_api):
   return CheckChange(input_api, output_api)
diff --git a/tools/metrics/structured/codegen.py b/tools/metrics/structured/codegen.py
index 8526d49b..74047cd 100644
--- a/tools/metrics/structured/codegen.py
+++ b/tools/metrics/structured/codegen.py
@@ -1,4 +1,5 @@
-# Copyright 2019 The Chromium Authors. All rights reserved.
+# -*- coding: utf-8 -*-
+# Copyright 2021 The Chromium Authors. All rights reserved.
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
@@ -8,143 +9,159 @@
 import os
 import re
 import struct
-from model import _EVENT_TYPE
-from model import _PROJECT_TYPE
-from model import _METRIC_TYPE
 
 
-def sanitize_name(name):
-  return re.sub('[^0-9a-zA-Z_]', '_', name)
+class Util:
+  """Helpers for generating C++."""
+
+  @staticmethod
+  def sanitize_name(name):
+    return re.sub('[^0-9a-zA-Z_]', '_', name)
+
+  @staticmethod
+  def camel_to_snake(name):
+    pat = '((?<=[a-z0-9])[A-Z]|(?!^)[A-Z](?=[a-z]))'
+    return re.sub(pat, r'_\1', name).lower()
+
+  @staticmethod
+  def hash_name(name):
+    # This must match the hash function in chromium's
+    # //base/metrics/metric_hashes.cc. >Q means 8 bytes, big endian.
+    name = name.encode('utf-8')
+    md5 = hashlib.md5(name)
+    return struct.unpack('>Q', md5.digest()[:8])[0]
+
+  @staticmethod
+  def event_name_hash(project_name, event_name):
+    """Make the name hash for an event.
+
+    This gets uploaded in the StructuredEventProto.event_name_hash field. It is
+    the sole means of recording which event from structured.xml a
+    StructuredEventProto instance represents.
+
+    To avoid naming collisions, it must contain three pieces of information:
+     - the name of the event itself
+     - the name of the event's project, to avoid collisions with events of the
+       same name in other projects
+     - an identifier that this comes from chromium, to avoid collisions with
+       events and projects of the same name defined in cros's structured.xml
+
+    This must use sanitized names for the project and event.
+    """
+    event_name = Util.sanitize_name(event_name)
+    project_name = Util.sanitize_name(project_name)
+    # TODO(crbug.com/1148168): Once the minimum python version is 3.6+, rewrite
+    # this .format and others using f-strings.
+    return Util.hash_name('chrome::{}::{}'.format(project_name, event_name))
 
 
-def camel_to_snake(name):
-  pat = '((?<=[a-z0-9])[A-Z]|(?!^)[A-Z](?=[a-z]))'
-  return re.sub(pat, r'_\1', name).lower()
+class FileInfo:
+  """Codegen-related info about a file."""
+
+  def __init__(self, dirname, basename):
+    self.dirname = dirname
+    self.basename = basename
+    self.filepath = os.path.join(dirname, basename)
+
+    # This takes the last three components of the filepath for use in the
+    # header guard, ie. METRICS_STRUCTURED_STRUCTURED_EVENTS_H_
+    relative_path = os.sep.join(self.filepath.split(os.sep)[-3:])
+    self.guard_path = Util.sanitize_name(relative_path).upper()
 
 
-def HashName(name):
-  # This must match the hash function in base/metrics/metric_hashes.cc
-  # >Q: 8 bytes, big endian.
-  return struct.unpack('>Q', hashlib.md5(name).digest()[:8])[0]
+class ProjectInfo:
+  """Codegen-related info about a project."""
 
+  def __init__(self, project):
+    self.name = Util.sanitize_name(project.name)
+    self.namespace = Util.camel_to_snake(self.name)
+    self.name_hash = Util.hash_name(self.name)
 
-class FileInfo(object):
-  def __init__(self, relpath, basename):
-    self.dir_path = relpath
-    self.guard_path = sanitize_name(os.path.join(relpath, basename)).upper()
-
-
-class ProjectInfo(object):
-  def __init__(self, project_obj):
-    self.name = sanitize_name(project_obj['name'])
-    self.namespace = camel_to_snake(self.name)
-    self.name_hash = HashName(self.name)
-
-    id_type = project_obj['id']['text']
-    if id_type == 'uma':
+    if project.id == 'uma':
       self.id_type = 'kUmaId'
-    elif id_type == 'per-project':
+    elif project.id == 'per-project':
       self.id_type = 'kProjectId'
-    elif id_type == 'none':
+    elif project.id == 'none':
       self.id_type = 'kUnidentified'
-    else:
-      raise Exception(
-          "Structured metrics project '{}' has invalid id field '{}'".format(
-              self.name, id_type))
 
 
-class EventInfo(object):
-  def __init__(self, event_obj):
-    self.raw_name = event_obj['name']
-    self.name = sanitize_name(event_obj['name'])
-    self.name_hash = HashName(event_obj['name'])
+class EventInfo:
+  """Codegen-related info about an event."""
+
+  def __init__(self, event, project_info):
+    self.name = Util.sanitize_name(event.name)
+    self.name_hash = Util.event_name_hash(project_info.name, self.name)
 
 
-class MetricInfo(object):
-  def __init__(self, json_obj):
-    self.raw_name = json_obj['name']
-    self.name = sanitize_name(json_obj['name'])
-    self.hash = HashName(json_obj['name'])
-    if json_obj['kind'] == 'hashed-string':
+class MetricInfo:
+  """Codegen-related info about a metric."""
+
+  def __init__(self, metric):
+    self.name = Util.sanitize_name(metric.name)
+    self.hash = Util.hash_name(metric.name)
+
+    if metric.type == 'hmac-string':
       self.type = 'std::string&'
       self.setter = 'AddStringMetric'
-    elif json_obj['kind'] == 'int':
+    elif metric.type == 'int':
       self.type = 'int'
       self.setter = 'AddIntMetric'
     else:
-      raise Exception("Unexpected metric kind: " + json_obj['kind'])
+      raise ValueError('Invalid metric type.')
 
 
-class Template(object):
+class Template:
   """Template for producing code from structured.xml."""
 
-  def __init__(self, basename, file_template, project_template, event_template,
-               metric_template):
+  def __init__(self, model, dirname, basename, file_template, project_template,
+               event_template, metric_template):
+    self.model = model
+    self.dirname = dirname
     self.basename = basename
     self.file_template = file_template
     self.project_template = project_template
     self.event_template = event_template
     self.metric_template = metric_template
 
-  def _StampMetricCode(self, file_info, event_info, metric):
-    """Stamp a metric by creating name hash constant based on the metric name,
-    and a setter method."""
-    return self.metric_template.format(
-        file=file_info,
-        event=event_info,
-        metric=MetricInfo(metric))
+  def write_file(self):
+    file_info = FileInfo(self.dirname, self.basename)
+    with open(file_info.filepath, 'w') as f:
+      f.write(self._stamp_file(file_info))
 
-  def _StampEventCode(self, file_info, project_info, event):
-    """Stamp an event class by creating a skeleton of the class based on the
-    event name, and then stamping code for each metric within it."""
-    event_info = EventInfo(event)
+  def _stamp_file(self, file_info):
+    project_code = ''.join(
+        self._stamp_project(file_info, p) for p in self.model.projects)
+
+    project_names = sorted([p.name for p in self.model.projects])
+    project_hashes_list = [
+        'UINT64_C({})'.format(Util.hash_name(n)) for n in project_names
+    ]
+    project_hashes_literal = '{' + ', '.join(project_hashes_list) + '}'
+
+    return self.file_template.format(file=file_info,
+                                     project_code=project_code,
+                                     project_hashes=project_hashes_literal)
+
+  def _stamp_project(self, file_info, project):
+    project_info = ProjectInfo(project)
+    event_code = ''.join(
+        self._stamp_event(file_info, project_info, event)
+        for event in project.events)
+    return self.project_template.format(file=file_info,
+                                        project=project_info,
+                                        event_code=event_code)
+
+  def _stamp_event(self, file_info, project_info, event):
+    event_info = EventInfo(event, project_info)
     metric_code = ''.join(
-        self._StampMetricCode(file_info, event_info, metric)
-        for metric in event[_METRIC_TYPE.tag])
+        self._stamp_metric(file_info, event_info, metric)
+        for metric in event.metrics)
     return self.event_template.format(file=file_info,
                                       project=project_info,
                                       event=event_info,
                                       metric_code=metric_code)
 
-  def _StampProjectCode(self, file_info, project):
-    """Stamp a project by stamping classes for all constituent events."""
-    project_info = ProjectInfo(project)
-    event_code = ''.join(
-        self._StampEventCode(file_info, project_info, event)
-        for event in project[_EVENT_TYPE.tag])
-    return self.project_template.format(file=file_info,
-                                        project=project_info,
-                                        event_code=event_code)
-
-  def _StampFileCode(self, relpath, data):
-    """Stamp a file by creating a class for each event within each project, and
-    a list of all project name hashes."""
-    file_info = FileInfo(relpath, self.basename)
-
-    project_code = [
-        self._StampProjectCode(file_info, project)
-        for project in data[_PROJECT_TYPE.tag]
-    ]
-    project_code = ''.join(project_code)
-
-    project_names = {project['name'] for project in data[_PROJECT_TYPE.tag]}
-    project_name_hashes = [
-        'UINT64_C(%s)' % HashName(name) for name in sorted(list(project_names))
-    ]
-    project_name_hashes = '{' + ', '.join(project_name_hashes) + '}'
-
-    return self.file_template.format(file=file_info,
-                                     project_code=project_code,
-                                     project_name_hashes=project_name_hashes)
-
-  def WriteFile(self, outdir, relpath, data):
-    """Generates code and writes it to a file.
-
-    Args:
-      relpath: The path to the file in the source tree.
-      rootdir: The root of the path the file should be written to.
-      data: The parsed structured.xml data.
-    """
-    output = open(os.path.join(outdir, self.basename), 'w')
-    output.write(self._StampFileCode(relpath, data))
-    output.close()
+  def _stamp_metric(self, file_info, event_info, metric):
+    return self.metric_template.format(file=file_info,
+                                       event=event_info,
+                                       metric=MetricInfo(metric))
diff --git a/tools/metrics/structured/codegen_unittest.py b/tools/metrics/structured/codegen_unittest.py
new file mode 100755
index 0000000..c195480
--- /dev/null
+++ b/tools/metrics/structured/codegen_unittest.py
@@ -0,0 +1,50 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+"""Tests for codegen.py.
+"""
+
+# TODO(crbug.com/1148168): Set up these tests to run on the tryjobs.
+
+import unittest
+from codegen import Util
+
+
+class CodegenTest(unittest.TestCase):
+  """Tests for codegen.py"""
+
+  def test_sanitize_name(self):
+    self.assertEqual(Util.sanitize_name('My Metric.Or::Event/Or/Project_name'),
+                     'My_Metric_Or__Event_Or_Project_name')
+
+  def test_camel_to_snake(self):
+    def check(camel, expected_snake):
+      self.assertEqual(Util.camel_to_snake(camel), expected_snake)
+
+    check('already_snake_case', 'already_snake_case')
+    check('ConvertFromCamelCase', 'convert_from_camel_case')
+    check('HTTPAcronymAtStart', 'http_acronym_at_start')
+    check('AcronymInHTTPMiddle', 'acronym_in_http_middle')
+    check('AcronymAtEndHTTP', 'acronym_at_end_http')
+
+  def test_hash_name(self):
+    # This was generated using the function in Chromium's
+    # //base/metrics/metrics_hashes.cc.
+    known_good_hash = 11096769389970233700
+    self.assertEqual(Util.hash_name('known good hash'), known_good_hash)
+
+  def test_event_name_hash(self):
+    # This was generated using the function in Chromium's
+    # //base/metrics/metrics_hashes.cc for the string
+    # cros::TestProjectOne::TestEventOne
+    event_name_hash = 16542188217976373364
+    project_name = 'TestProjectOne'
+    event_name = 'TestEventOne'
+    self.assertEqual(Util.event_name_hash(project_name, event_name),
+                     event_name_hash)
+
+
+if __name__ == '__main__':
+  unittest.main()
diff --git a/tools/metrics/structured/compile_time_validation.py b/tools/metrics/structured/compile_time_validation.py
deleted file mode 100644
index 18255d4..0000000
--- a/tools/metrics/structured/compile_time_validation.py
+++ /dev/null
@@ -1,82 +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.
-"""Verifies that structured.xml is well-structured."""
-
-from collections import Counter
-from model import _METRIC_TYPE
-from model import _EVENT_TYPE
-from model import _PROJECT_TYPE
-
-
-def projectsHaveRequiredFields(data):
-  """Check that projects have all fields required for compilation."""
-  valid_id_types = {'none', 'per-project', 'uma'}
-
-  for project in data[_PROJECT_TYPE.tag]:
-    if 'name' not in project:
-      raise Exception('Structured metrics project has no name')
-
-    if 'id' not in project:
-      raise Exception("Structured metrics project '{}' has no id field.".format(
-          project['name']))
-    if project['id']['text'] not in valid_id_types:
-      raise Exception(
-          "Structured metrics project '{}' has invalid id field.".format(
-              project['name']))
-
-  name_counts = Counter(
-      project['name']
-      for project in data[_PROJECT_TYPE.tag])
-  for name, count in name_counts.items():
-    if count != 1:
-      raise Exception(
-          "Structured metrics projects have duplicate name '{}'.".format(name))
-
-
-def metricNamesUniqueWithinEvent(data):
-  """Check that no two metrics within an event have the same name."""
-  for project in data[_PROJECT_TYPE.tag]:
-    for event in project[_EVENT_TYPE.tag]:
-      name_counts = Counter(
-        metric['name']
-        for metric in event[_METRIC_TYPE.tag])
-
-      for name, count in name_counts.items():
-        if count != 1:
-          raise Exception(("Structured metrics project '{}' and event '{}' has "
-                           "duplicated metric name '{}'.").format(
-                             project['name'], event['name'], name))
-
-
-def eventNamesUniqueWithinProject(data):
-  """Check that no two events in a project have the same name."""
-  for project in data[_PROJECT_TYPE.tag]:
-    name_counts = Counter(
-      event['name']
-      for event in project[_EVENT_TYPE.tag])
-
-    for name, count in name_counts.items():
-      if count != 1:
-        raise Exception(
-            "Structured metrics project '{}' has events with duplicate "
-            "name '{}'.".format(project['name'], name))
-
-
-def projectNamesUnique(data):
-  """Check that no two projects have the same name."""
-  name_counts = Counter(
-      project['name']
-      for project in data[_PROJECT_TYPE.tag])
-
-  for name, count in name_counts.items():
-    if count != 1:
-      raise Exception(
-          "Structured metrics projects have duplicate name '{}'.".format(name))
-
-
-def validate(data):
-  projectsHaveRequiredFields(data)
-  projectNamesUnique(data)
-  eventNamesUniqueWithinProject(data)
-  metricNamesUniqueWithinEvent(data)
diff --git a/tools/metrics/structured/gen_events.py b/tools/metrics/structured/gen_events.py
index 8d8e678..f0200ec 100755
--- a/tools/metrics/structured/gen_events.py
+++ b/tools/metrics/structured/gen_events.py
@@ -1,35 +1,50 @@
-#!/usr/bin/env python
-# Copyright 2019 The Chromium Authors. All rights reserved.
+#!/usr/bin/env python3
+# 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.
 
 """A utility for generating classes for structured metrics events.
 
-It takes as input a structured.xml file describing all events and produces a
-c++ header and implementation file exposing builders for those events.
+Takes as input a structured.xml file describing all events and produces a C++
+header and implementation file exposing builders for those events.
 """
 
 import argparse
 import sys
 
+import codegen
 import model
-import events_template
-import compile_time_validation
+import templates
 
 parser = argparse.ArgumentParser(
   description='Generate structured metrics events')
 parser.add_argument('--input', help='Path to structured.xml')
 parser.add_argument('--output', help='Path to generated files.')
 
-def main(argv):
-  args = parser.parse_args()
 
-  data = model.XML_TYPE.Parse(open(args.input).read())
-  relpath = 'components/metrics/structured'
-  compile_time_validation.validate(data)
-  events_template.WriteFiles(args.output, relpath, data)
+def main():
+  args = parser.parse_args()
+  data = model.Model(open(args.input).read())
+
+  codegen.Template(
+      data,
+      args.output,
+      'structured_events.h',
+      file_template=templates.HEADER_FILE_TEMPLATE,
+      project_template=templates.HEADER_PROJECT_TEMPLATE,
+      event_template=templates.HEADER_EVENT_TEMPLATE,
+      metric_template=templates.HEADER_METRIC_TEMPLATE).write_file()
+
+  codegen.Template(data,
+      args.output,
+      'structured_events.cc',
+      file_template=templates.IMPL_FILE_TEMPLATE,
+      project_template=templates.IMPL_PROJECT_TEMPLATE,
+      event_template=templates.IMPL_EVENT_TEMPLATE,
+      metric_template=templates.IMPL_METRIC_TEMPLATE).write_file()
 
   return 0
 
-if '__main__' == __name__:
-  sys.exit(main(sys.argv))
+
+if __name__ == '__main__':
+  sys.exit(main())
diff --git a/tools/metrics/structured/model.py b/tools/metrics/structured/model.py
index ef073cc..1b32dcb 100644
--- a/tools/metrics/structured/model.py
+++ b/tools/metrics/structured/model.py
@@ -1,99 +1,222 @@
-# Copyright 2019 The Chromium Authors. All rights reserved.
+# -*- coding: utf-8 -*-
+# Copyright 2021 The Chromium Authors. All rights reserved.
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-import os
-import sys
+"""Model of a structured metrics description xml file.
 
-sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common'))
-import models
+This marshals an XML string into a Model, and validates that the XML is
+semantically correct. The model can also be used to create a canonically
+formatted version XML.
+"""
 
-# Helpers
+import xml.etree.ElementTree as ET
+import textwrap as tw
+import model_util as util
 
-# A key for sorting XML nodes by the value of |attribute|.
-_LOWERCASE_FN = lambda attribute: (lambda node: node.get(attribute).lower())
-# A constant function as the sorting key for nodes whose orderings should be
-# kept as given in the XML file within their parent node.
-_KEEP_ORDER = lambda node: 1
 
-# Model definitions
+def wrap(text, indent):
+  wrapper = tw.TextWrapper(width=80,
+                           initial_indent=indent,
+                           subsequent_indent=indent)
+  return wrapper.fill(tw.dedent(text))
 
-_OBSOLETE_TYPE = models.TextNodeType('obsolete')
-_OWNER_TYPE = models.TextNodeType('owner', single_line=True)
-_ID_TYPE = models.TextNodeType('id', single_line=True)
-_SUMMARY_TYPE = models.TextNodeType('summary')
 
-_METRIC_TYPE =  models.ObjectNodeType(
-    'metric',
-    attributes=[
-      ('name', unicode, r'^[A-Za-z0-9_.]+$'),
-      ('kind', unicode, r'^(?i)(|hashed-string|int)$'),
-    ],
-    alphabetization=[
-        (_OBSOLETE_TYPE.tag, lambda _: 1),
-        (_SUMMARY_TYPE.tag, lambda _: 2),
-    ],
-    children=[
-        models.ChildType(_OBSOLETE_TYPE.tag, _OBSOLETE_TYPE, multiple=False),
-        models.ChildType(_OWNER_TYPE.tag, _OWNER_TYPE, multiple=True),
-        models.ChildType(_SUMMARY_TYPE.tag, _SUMMARY_TYPE, multiple=False),
-    ])
+# TODO(crbug.com/1148168): This can be removed and replaced with textwrap.indent
+# once this is run under python3.
+def indent(text, prefix):
+  return '\n'.join(prefix + line if line else '' for line in text.split('\n'))
 
-_EVENT_TYPE = models.ObjectNodeType('event',
-    attributes=[('name', unicode, r'^[A-Z][A-Za-z0-9.]*$'),],
-    alphabetization=[
-        (_OBSOLETE_TYPE.tag, lambda _: 1),
-        (_OWNER_TYPE.tag, lambda _: 2),
-        (_SUMMARY_TYPE.tag, lambda _: 3),
-        (_METRIC_TYPE.tag,
-         _LOWERCASE_FN('name')),
-    ],
-    extra_newlines=(1, 1, 1),
-    children=[
-        models.ChildType(_OBSOLETE_TYPE.tag, _OBSOLETE_TYPE, multiple=False),
-        models.ChildType(_OWNER_TYPE.tag, _OWNER_TYPE, multiple=True),
-        models.ChildType(_SUMMARY_TYPE.tag, _SUMMARY_TYPE, multiple=False),
-        models.ChildType(_METRIC_TYPE.tag, _METRIC_TYPE, multiple=True),
-    ])
 
-_PROJECT_TYPE = models.ObjectNodeType('project',
-    attributes=[
-        ('name', unicode, r'^[A-Z][A-Za-z0-9.]*$'),
-    ],
-    alphabetization=[
-        (_OBSOLETE_TYPE.tag, lambda _: 1),
-        (_OWNER_TYPE.tag, lambda _: 2),
-        (_ID_TYPE.tag, lambda _: 3),
-        (_SUMMARY_TYPE.tag, lambda _: 4),
-    ],
-    extra_newlines=(1, 1, 1),
-    children=[
-        models.ChildType(_OBSOLETE_TYPE.tag, _OBSOLETE_TYPE, multiple=False),
-        models.ChildType(_OWNER_TYPE.tag, _OWNER_TYPE, multiple=True),
-        models.ChildType(_ID_TYPE.tag, _ID_TYPE, multiple=False),
-        models.ChildType(_SUMMARY_TYPE.tag, _SUMMARY_TYPE, multiple=False),
-        models.ChildType(_EVENT_TYPE.tag, _EVENT_TYPE, multiple=True),
-    ])
+class Model:
+  """Represents all projects in the structured.xml file.
 
-CONFIGURATION_TYPE = models.ObjectNodeType(
-    'structured-metrics',
-    alphabetization=[(_PROJECT_TYPE.tag, _LOWERCASE_FN('name'))],
-    extra_newlines=(2, 1, 1),
-    indent=False,
-    children=[
-        models.ChildType(_PROJECT_TYPE.tag, _PROJECT_TYPE, multiple=True),
-    ])
+  A Model is initialized with an XML string representing the top-level of
+  the structured.xml file. This file is built from three building blocks:
+  metrics, events, and projects. These have the following attributes.
 
-XML_TYPE = models.DocumentType(CONFIGURATION_TYPE)
+    METRIC
+    - summary
+    - data type
 
-def PrettifyXML(original_xml):
-  """Parses the original xml and return a pretty printed version.
+    EVENT
+    - summary
+    - one or more metrics
 
-  Args:
-    original_xml: A string containing the original xml file contents.
+    PROJECT
+    - summary
+    - id specifier
+    - one or more owners
+    - one or more events
 
-  Returns:
-    A pretty-printed xml string, or None if the config contains errors.
+  The following is an example input XML.
+
+    <structured-metrics>
+    <project name="MyProject">
+      <owner>owner@chromium.org</owner>
+      <id>none</id>
+      <summary> My project. </summary>
+
+      <event name="MyEvent">
+        <summary> My event. </summary>
+        <metric name="MyMetric" type="int">
+          <summary> My metric. </summary>
+        </metric>
+      </event>
+    </project>
+    </structured-metrics>
+
+  Calling str(model) will return a canonically formatted XML string.
   """
-  config = XML_TYPE.Parse(original_xml)
-  return XML_TYPE.PrettyPrint(config)
+
+  OWNER_REGEX = r'^.+@(chromium\.org|google\.com)$'
+  NAME_REGEX = r'^[A-Za-z0-9_.]+$'
+  TYPE_REGEX = r'^(hmac-string|int)$'
+  ID_REGEX = r'^(none|per-project|uma)$'
+
+  def __init__(self, xml_string):
+    elem = ET.fromstring(xml_string)
+    util.check_attributes(elem, set())
+    util.check_children(elem, {'project'})
+    util.check_child_names_unique(elem, 'project')
+
+    projects = util.get_compound_children(elem, 'project')
+    self.projects = [Project(p) for p in projects]
+
+  def __repr__(self):
+    projects = '\n\n'.join(str(p) for p in self.projects)
+
+    result = tw.dedent("""\
+               <structured-metrics>
+
+               {projects}
+
+               </structured-metrics>""")
+    return result.format(projects=projects)
+
+
+class Project:
+  """Represents a single structured metrics project.
+
+  A Project is initialized with an XML node representing one project, eg:
+
+    <project name="MyProject">
+      <owner>owner@chromium.org</owner>
+      <id>none</id>
+      <summary> My project. </summary>
+
+      <event name="MyEvent">
+        <summary> My event. </summary>
+        <metric name="MyMetric" type="int">
+          <summary> My metric. </summary>
+        </metric>
+      </event>
+    </project>
+
+  Calling str(project) will return a canonically formatted XML string.
+  """
+
+  def __init__(self, elem):
+    util.check_attributes(elem, {'name'})
+    util.check_children(elem, {'id', 'summary', 'owner', 'event'})
+    util.check_child_names_unique(elem, 'event')
+
+    self.name = util.get_attr(elem, 'name', Model.NAME_REGEX)
+    self.id = util.get_text_child(elem, 'id', Model.ID_REGEX)
+    self.summary = util.get_text_child(elem, 'summary')
+    self.owners = util.get_text_children(elem, 'owner', Model.OWNER_REGEX)
+
+    self.events = [Event(e) for e in util.get_compound_children(elem, 'event')]
+
+  def __repr__(self):
+    events = '\n\n'.join(str(e) for e in self.events)
+    events = indent(events, '  ')
+    summary = wrap(self.summary, indent='    ')
+    owners = '\n'.join('  <owner>{}</owner>'.format(o) for o in self.owners)
+
+    result = tw.dedent("""\
+               <project name="{name}">
+               {owners}
+                 <id>{id}</id>
+                 <summary>
+               {summary}
+                 </summary>
+
+               {events}
+               </project>""")
+    return result.format(name=self.name,
+                         owners=owners,
+                         id=self.id,
+                         summary=summary,
+                         events=events)
+
+
+class Event:
+  """Represents a single structured metrics event.
+
+  An Event is initialized with an XML node representing one event, eg:
+
+    <event name="MyEvent">
+      <summary> My event. </summary>
+      <metric name="MyMetric" type="int">
+        <summary> My metric. </summary>
+      </metric>
+    </event>
+
+  Calling str(event) will return a canonically formatted XML string.
+  """
+
+  def __init__(self, elem):
+    util.check_attributes(elem, {'name'})
+    util.check_children(elem, {'summary', 'metric'})
+    util.check_child_names_unique(elem, 'metric')
+
+    self.name = util.get_attr(elem, 'name', Model.NAME_REGEX)
+    self.summary = util.get_text_child(elem, 'summary')
+    self.metrics = [
+        Metric(m) for m in util.get_compound_children(elem, 'metric')
+    ]
+
+  def __repr__(self):
+    metrics = '\n'.join(str(m) for m in self.metrics)
+    metrics = indent(metrics, '  ')
+    summary = wrap(self.summary, indent='    ')
+    result = tw.dedent("""\
+               <event name="{name}">
+                 <summary>
+               {summary}
+                 </summary>
+               {metrics}
+               </event>""")
+    return result.format(name=self.name, summary=summary, metrics=metrics)
+
+
+class Metric:
+  """Represents a single metric.
+
+  A Metric is initialized with an XML node representing one metric, eg:
+
+    <metric name="MyMetric" type="int">
+      <summary> My metric. </summary>
+    </metric>
+
+  Calling str(metric) will return a canonically formatted XML string.
+  """
+
+  def __init__(self, elem):
+    util.check_attributes(elem, {'name', 'type'})
+    util.check_children(elem, {'summary'})
+
+    self.name = util.get_attr(elem, 'name', Model.NAME_REGEX)
+    self.type = util.get_attr(elem, 'type', Model.TYPE_REGEX)
+    self.summary = util.get_text_child(elem, 'summary')
+
+  def __repr__(self):
+    summary = wrap(self.summary, indent='    ')
+    result = tw.dedent("""\
+               <metric name="{name}" type="{type}">
+                 <summary>
+               {summary}
+                 </summary>
+               </metric>""")
+    return result.format(name=self.name, type=self.type, summary=summary)
diff --git a/tools/metrics/structured/model_unittest.py b/tools/metrics/structured/model_unittest.py
new file mode 100755
index 0000000..aac8a10
--- /dev/null
+++ b/tools/metrics/structured/model_unittest.py
@@ -0,0 +1,299 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+"""Tests for model.py.
+"""
+
+# TODO(crbug.com/1148168): Set up these tests to run on the tryjobs.
+
+import unittest
+from model import Model
+
+
+class ModelTest(unittest.TestCase):
+  """Tests for model.py"""
+
+  def assert_project(self, project, name, id_, summary, owners):
+    self.assertEqual(project.name, name)
+    self.assertEqual(project.id, id_)
+    self.assertEqual(project.summary.strip(), summary)
+    self.assertEqual(len(project.owners), len(owners))
+    for actual, expected in zip(project.owners, owners):
+      self.assertEqual(actual, expected)
+
+  def assert_event(self, event, name, summary):
+    self.assertEqual(event.name, name)
+    self.assertEqual(event.summary.strip(), summary)
+
+  def assert_metric(self, metric, name, type_, summary):
+    self.assertEqual(metric.name, name)
+    self.assertEqual(metric.type, type_)
+    self.assertEqual(metric.summary.strip(), summary)
+
+  def assert_model_raises(self, xml):
+    raised = False
+    try:
+      Model(xml)
+    except ValueError:
+      raised = True
+    self.assertTrue(raised)
+
+  def test_valid_xml(self):
+    xml = """\
+          <structured-metrics>
+          <project name="ProjectOne">
+            <owner>test1@chromium.org</owner>
+            <owner>test2@chromium.org</owner>
+            <id>none</id>
+            <summary> Test project. </summary>
+
+            <event name="EventOne">
+              <summary> Test event. </summary>
+              <metric name="MetricOne" type="int">
+                <summary> Test metric. </summary>
+              </metric>
+              <metric name="MetricTwo" type="hmac-string">
+                <summary> Test metric. </summary>
+              </metric>
+            </event>
+
+            <event name="EventTwo">
+              <summary> Test event. </summary>
+              <metric name="MetricThree" type="int">
+                <summary> Test metric. </summary>
+              </metric>
+            </event>
+          </project>
+
+          <project name="ProjectTwo">
+            <owner>test@chromium.org</owner>
+            <id>uma</id>
+            <summary> Test project. </summary>
+
+            <event name="EventThree">
+              <summary> Test event. </summary>
+              <metric name="MetricFour" type="int">
+                <summary> Test metric. </summary>
+              </metric>
+            </event>
+          </project>
+          </structured-metrics>"""
+
+    data = Model(xml)
+
+    self.assertEqual(len(data.projects), 2)
+    project_one, project_two = data.projects
+    self.assert_project(project_one, 'ProjectOne', 'none', 'Test project.',
+                        ('test1@chromium.org', 'test2@chromium.org'))
+    self.assert_project(project_two, 'ProjectTwo', 'uma', 'Test project.',
+                        ('test@chromium.org', ))
+
+    self.assertEqual(len(project_one.events), 2)
+    self.assertEqual(len(project_two.events), 1)
+    event_one, event_two = project_one.events
+    event_three, = project_two.events
+    self.assert_event(event_one, 'EventOne', 'Test event.')
+    self.assert_event(event_two, 'EventTwo', 'Test event.')
+    self.assert_event(event_three, 'EventThree', 'Test event.')
+
+    self.assertEqual(len(event_one.metrics), 2)
+    self.assertEqual(len(event_two.metrics), 1)
+    self.assertEqual(len(event_three.metrics), 1)
+    metric_one, metric_two = event_one.metrics
+    metric_three, = event_two.metrics
+    metric_four, = event_three.metrics
+    self.assert_metric(metric_one, 'MetricOne', 'int', 'Test metric.')
+    self.assert_metric(metric_two, 'MetricTwo', 'hmac-string', 'Test metric.')
+    self.assert_metric(metric_three, 'MetricThree', 'int', 'Test metric.')
+    self.assert_metric(metric_four, 'MetricFour', 'int', 'Test metric.')
+
+  def test_owners_validation(self):
+    # No owner for project.
+    self.assert_model_raises("""\
+        <structured-metrics>
+        <project name="project">
+        <id>uma</id>
+        <summary> Test project. </summary>
+        <event name="EventThree">
+          <summary> Test event. </summary>
+          <metric name="MetricFour" type="int">
+            <summary> Test metric. </summary>
+          </metric>
+        </event>
+        </project>
+        </structured-metrics>""")
+
+    # Owner is username not email.
+    self.assert_model_raises("""\
+        <structured-metrics>
+        <project name="project">
+          <owner>test@</owner>
+          <id>uma</id>
+          <summary> Test project. </summary>
+          <event name="EventThree">
+            <summary> Test event. </summary>
+            <metric name="MetricFour" type="int">
+              <summary> Test metric. </summary>
+            </metric>
+          </event>
+        </project>
+        </structured-metrics>""")
+
+  def test_id_validation(self):
+    # Missing ID
+    self.assert_model_raises("""\
+        <structured-metrics>
+        <project name="MyProject">
+          <owner>test@chromium.org</owner>
+          <summary> Test project. </summary>
+          <event name="MyEvent">
+            <summary> Test event. </summary>
+            <metric name="MyMetric" type="int">
+              <summary> Test metric. </summary>
+            </metric>
+          </event>
+        </project>
+        </structured-metrics>""")
+
+    # Invalid ID
+    self.assert_model_raises("""\
+        <structured-metrics>
+        <project name="MyProject">
+          <owner>test@chromium.org</owner>
+          <id>invalid value</id>
+          <summary> Test project. </summary>
+          <event name="MyEvent">
+            <summary> Test event. </summary>
+            <metric name="MyMetric" type="int">
+              <summary> Test metric. </summary>
+            </metric>
+          </event>
+        </project>
+        </structured-metrics>""")
+
+  def test_type_validation(self):
+    # Missing type
+    self.assert_model_raises("""\
+        <structured-metrics>
+        <project name="MyProject">
+          <owner>test@chromium.org</owner>
+          <id>none</id>
+          <summary> Test project. </summary>
+          <event name="MyEvent">
+            <summary> Test event. </summary>
+            <metric name="MyMetric">
+              <summary> Test metric. </summary>
+            </metric>
+          </event>
+        </project>
+        </structured-metrics>""")
+
+    # Invalid type
+    self.assert_model_raises("""\
+        <structured-metrics>
+        <project name="MyProject">
+          <owner>test@chromium.org</owner>
+          <id>none</id>
+          <summary> Test project. </summary>
+          <event name="MyEvent">
+            <summary> Test event. </summary>
+            <metric name="MyMetric" type="invalid value">
+              <summary> Test metric. </summary>
+            </metric>
+          </event>
+        </project>
+        </structured-metrics>""")
+
+  def test_duplicate_summaries(self):
+    self.assert_model_raises("""\
+        <structured-metrics>
+        <project name="MyProject">
+          <owner>test@chromium.org</owner>
+          <id>none</id>
+          <summary> Test project. </summary>
+          <summary> Test project. </summary>
+          <event name="MyEvent">
+            <summary> Test event. </summary>
+            <metric name="MyMetric" type="int">
+              <summary> Test metric. </summary>
+            </metric>
+          </event>
+        </project>
+        </structured-metrics>""")
+
+  def test_duplicate_project_names(self):
+    # Two projects with name "Duplicate"
+    self.assert_model_raises("""\
+        <structured-metrics>
+        <project name="Duplicate">
+          <owner>test@</owner>
+          <id>uma</id>
+          <summary> Test project. </summary>
+          <event name="MyEvent">
+            <summary> Test event. </summary>
+            <metric name="MyMetric" type="int">
+              <summary> Test metric. </summary>
+            </metric>
+          </event>
+        </project>
+        <project name="Duplicate">
+          <owner>test@</owner>
+          <id>uma</id>
+          <summary> Test project. </summary>
+          <event name="MyEvent">
+            <summary> Test event. </summary>
+            <metric name="MyMetric" type="int">
+              <summary> Test metric. </summary>
+            </metric>
+          </event>
+        </project>
+        </structured-metrics>""")
+
+  def test_duplicate_event_names(self):
+    # Two events with name "Duplicate"
+    self.assert_model_raises("""\
+        <structured-metrics>
+        <project name="MyProject">
+          <owner>test@</owner>
+          <id>uma</id>
+          <summary> Test project. </summary>
+          <event name="Duplicate">
+            <summary> Test event. </summary>
+            <metric name="MyMetric" type="int">
+              <summary> Test metric. </summary>
+            </metric>
+          </event>
+          <event name="Duplicate">
+            <summary> Test event. </summary>
+            <metric name="MyMetric" type="int">
+              <summary> Test metric. </summary>
+            </metric>
+          </event>
+        </project>
+        </structured-metrics>""")
+
+  def test_duplicate_metric_names(self):
+    # Two metrics with name "Duplicate"
+    self.assert_model_raises("""\
+        <structured-metrics>
+        <project name="MyProject">
+          <owner>test@</owner>
+          <id>uma</id>
+          <summary> Test project. </summary>
+          <event name="MyEvent">
+            <summary> Test event. </summary>
+            <metric name="Duplicate" type="int">
+              <summary> Test metric. </summary>
+            </metric>
+            <metric name="Duplicate" type="int">
+              <summary> Test metric. </summary>
+            </metric>
+          </event>
+        </project>
+        </structured-metrics>""")
+
+
+if __name__ == '__main__':
+  unittest.main()
diff --git a/tools/metrics/structured/model_util.py b/tools/metrics/structured/model_util.py
new file mode 100644
index 0000000..af1afc4
--- /dev/null
+++ b/tools/metrics/structured/model_util.py
@@ -0,0 +1,127 @@
+# -*- coding: utf-8 -*-
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+"""Utilities for parsing structured.xml.
+
+Functions in this module raise an error if constraints on the format of the
+structured.xml file are not met.
+
+Functions use the concept of 'compound' and 'text' XML nodes.
+ - compound nodes can have attributes and child nodes, but no text
+ - text nodes can have text, but no attributes or child nodes
+"""
+
+import collections
+import re
+
+
+def error(elem, msg):
+  """Raise a nicely formatted error with some context."""
+  name = elem.attrib.get('name', None)
+  name = name + ' ' if name else ''
+  msg = 'Structured metrics error, {} node {}{}.'.format(elem.tag, name, msg)
+  raise ValueError(msg)
+
+
+def get_attr(elem, tag, regex=None):
+  """Get an attribute.
+
+  Error if it is missing, optionally error if it doesn't match the provided
+  regex.
+  """
+  attr = elem.attrib.get(tag, None)
+  if not attr:
+    error(elem, "missing attribute '{}'".format(tag))
+  if regex and not re.match(regex, attr):
+    error(elem, ("has '{}' attribute '{}' which does "
+                 "not match regex '{}'").format(tag, attr, regex))
+  return attr
+
+
+def get_compound_children(elem, tag):
+  """Get all child nodes of `elem` with tag `tag`.
+
+  Error if none exist, or a child is not a compound node.
+  """
+  children = elem.findall(tag)
+  if not children:
+    error(elem, "missing node '{}'".format(tag))
+  for child in children:
+    if child.text and child.text.strip():
+      error(child, "contains text, but shouldn't")
+  return children
+
+
+def get_compound_child(elem, tag):
+  """Get the child of `elem` with tag `tag`.
+
+  Error if there isn't exactly one matching child, or it isn't compound.
+  """
+  children = elem.findall(tag)
+  if len(children) != 1:
+    error(elem, "needs exactly one '{}' node".format(tag))
+  return children[0]
+
+
+def get_text_children(elem, tag, regex=None):
+  """Get the text of all child nodes of `elem` with tag `tag`.
+
+  Error if none exist, or a child is not a text node. Optionally ensure the
+  text matches `regex`.
+  """
+  children = elem.findall(tag)
+  if not children:
+    error(elem, "missing node '{}'".format(tag))
+
+  result = []
+  for child in children:
+    check_attributes(child, set())
+    check_children(child, set())
+    text = child.text.strip()
+    if not text:
+      error(elem, "missing text in '{}'".format(tag))
+    if regex and not re.match(regex, text):
+      error(elem, ("has '{}' node '{}' which does "
+                   "not match regex '{}'").format(tag, text, regex))
+    result.append(text)
+  return result
+
+
+def get_text_child(elem, tag, regex=None):
+  """Get the text of the child of `elem` with tag `tag`.
+
+  Error if there isn't exactly one matching child, or it isn't a text node.
+  Optionally ensure the text matches `regex`.
+  """
+  result = get_text_children(elem, tag, regex)
+  if len(result) != 1:
+    error(elem, "needs exactly one '{}' node".format(tag))
+  return result[0]
+
+
+def check_attributes(elem, expected_attrs):
+  """Ensure `elem` has no attributes except those in `expected_attrs`."""
+  actual_attrs = set(elem.attrib.keys())
+  unexpected_attrs = actual_attrs - set(expected_attrs)
+  if unexpected_attrs:
+    attrs = ' '.join(unexpected_attrs)
+    error(elem, 'has unexpected attributes: ' + attrs)
+
+
+def check_children(elem, expected_children):
+  """Ensure `elem` has no children without tags in `expected_children`."""
+  actual_children = {child.tag for child in elem}
+  unexpected_children = actual_children - set(expected_children)
+  if unexpected_children:
+    children = ' '.join(unexpected_children)
+    error(elem, 'has unexpected nodes: ' + children)
+
+
+def check_child_names_unique(elem, tag):
+  """Ensure uniqueness of the 'name' of all children of `elem` with `tag`."""
+  names = [child.attrib.get('name', None) for child in elem if child.tag == tag]
+  name_counts = collections.Counter(names)
+  has_duplicates = any(c > 1 for c in name_counts.values())
+  if has_duplicates:
+    error(elem, 'has {} nodes with duplicate names'.format(tag))
diff --git a/tools/metrics/structured/pretty_print.py b/tools/metrics/structured/pretty_print.py
index 105f6f2..749695f 100755
--- a/tools/metrics/structured/pretty_print.py
+++ b/tools/metrics/structured/pretty_print.py
@@ -12,8 +12,11 @@
 import presubmit_util
 
 def main(argv):
-  presubmit_util.DoPresubmitMain(argv, 'structured.xml', 'structured.old.xml',
-                                 model.PrettifyXML)
+  dirname = os.path.dirname(os.path.realpath(__file__))
+  xml = dirname + '/structured.xml'
+  old_xml = dirname + '/structured.old.xml'
+  presubmit_util.DoPresubmitMain(argv, xml,
+                                 old_xml, lambda x: repr(model.Model(x)))
 
 
 if '__main__' == __name__:
diff --git a/tools/metrics/structured/structured.xml b/tools/metrics/structured/structured.xml
index bf8c45b..db1cd99a 100644
--- a/tools/metrics/structured/structured.xml
+++ b/tools/metrics/structured/structured.xml
@@ -1,5 +1,3 @@
-<!-- Structured metrics is under development and isn't available for use yet. -->
-
 <structured-metrics>
 
 <project name="Hindsight">
@@ -9,26 +7,27 @@
   <summary>
     Project for recording CrOSActions.
   </summary>
+
   <event name="CrOSActionEvent.FileOpened">
     <summary>
       Records whenever a file is opened in the File App on ChromeOS.
     </summary>
-    <metric name="Filename" kind="hashed-string">
+    <metric name="Filename" type="hmac-string">
       <summary>
         The absolute path of the file.
       </summary>
     </metric>
-    <metric name="OpenType" kind="int">
+    <metric name="OpenType" type="int">
       <summary>
-        The kind of file open, defined in FileTaskObserver::OpenType.
+        The type of file open, defined in FileTaskObserver::OpenType.
       </summary>
     </metric>
-    <metric name="SequenceId" kind="int">
+    <metric name="SequenceId" type="int">
       <summary>
         Sequence of this action across all CrOSActionEvent.
       </summary>
     </metric>
-    <metric name="TimeSinceLastAction" kind="int">
+    <metric name="TimeSinceLastAction" type="int">
       <summary>
         Time in milliseconds since last CrOSActionLogging.
       </summary>
@@ -39,62 +38,66 @@
     <summary>
       Records information about the launch of an item from ChromeOS launcher.
     </summary>
-    <metric name="Query" kind="hashed-string">
+    <metric name="Query" type="hmac-string">
       <summary>
         The search query associated with this launch.
       </summary>
     </metric>
-    <metric name="ResultType" kind="int">
+    <metric name="ResultType" type="int">
       <summary>
-        Which kind of search provider the launched result was created by.
+        Which type of search provider the launched result was created by.
       </summary>
     </metric>
-    <metric name="SearchResultId" kind="hashed-string">
+    <metric name="SearchResultId" type="hmac-string">
       <summary>
         The ID of the launched result result. For example, the app ID for app
         results, or the URL for omnibox results.
       </summary>
     </metric>
-    <metric name="SequenceId" kind="int">
+    <metric name="SequenceId" type="int">
       <summary>
         Sequence of this action across all CrOSActionEvent.
       </summary>
     </metric>
-    <metric name="TimeSinceLastAction" kind="int"/>
+    <metric name="TimeSinceLastAction" type="int">
+      <summary>
+        Time in milliseconds since last CrOSActionLogging.
+      </summary>
+    </metric>
   </event>
 
   <event name="CrOSActionEvent.SettingChanged">
     <summary>
       Records when a setting is changed; only records quick settings for now.
     </summary>
-    <metric name="CurrentValue" kind="int">
+    <metric name="CurrentValue" type="int">
       <summary>
         Value of the setting after the change.
       </summary>
     </metric>
-    <metric name="PreviousValue" kind="int">
+    <metric name="PreviousValue" type="int">
       <summary>
         Value of the setting before the change.
       </summary>
     </metric>
-    <metric name="SequenceId" kind="int">
+    <metric name="SequenceId" type="int">
       <summary>
         Sequence of this action across all CrOSActionEvent.
       </summary>
     </metric>
-    <metric name="SettingId" kind="int">
+    <metric name="SettingId" type="int">
       <summary>
         The setting id (in ash::ml::UserSettingsEvent::Event::SettingId) that
         represents the type of the changed setting.
       </summary>
     </metric>
-    <metric name="SettingType" kind="int">
+    <metric name="SettingType" type="int">
       <summary>
         Enum that represents where the settings event originated from (in
         ash::ml::UserSettingsEvent::Event::SettingType).
       </summary>
     </metric>
-    <metric name="TimeSinceLastAction" kind="int">
+    <metric name="TimeSinceLastAction" type="int">
       <summary>
         Time in milliseconds since last CrOSActionLogging.
       </summary>
@@ -105,27 +108,27 @@
     <summary>
       Records a tab activity of navigating to a new url.
     </summary>
-    <metric name="PageTransition" kind="int">
+    <metric name="PageTransition" type="int">
       <summary>
         The types of transition between pages. See more on ui::PageTransition.
       </summary>
     </metric>
-    <metric name="SequenceId" kind="int">
+    <metric name="SequenceId" type="int">
       <summary>
         Sequence of this action across all CrOSActionEvent.
       </summary>
     </metric>
-    <metric name="TimeSinceLastAction" kind="int">
+    <metric name="TimeSinceLastAction" type="int">
       <summary>
         Time in milliseconds since last CrOSActionLogging.
       </summary>
     </metric>
-    <metric name="URL" kind="hashed-string">
+    <metric name="URL" type="hmac-string">
       <summary>
         The URL of the current event.
       </summary>
     </metric>
-    <metric name="Visibility" kind="int">
+    <metric name="Visibility" type="int">
       <summary>
         The visibility of this url, see more on content::Visibility.
       </summary>
@@ -136,27 +139,27 @@
     <summary>
       Records a tab activity of opening a new url with ctrl+click.
     </summary>
-    <metric name="SequenceId" kind="int">
+    <metric name="SequenceId" type="int">
       <summary>
         Sequence of this action across all CrOSActionEvent.
       </summary>
     </metric>
-    <metric name="TimeSinceLastAction" kind="int">
+    <metric name="TimeSinceLastAction" type="int">
       <summary>
         Time in milliseconds since last CrOSActionLogging.
       </summary>
     </metric>
-    <metric name="URL" kind="hashed-string">
+    <metric name="URL" type="hmac-string">
       <summary>
         The URL of the current event.
       </summary>
     </metric>
-    <metric name="URLOpened" kind="hashed-string">
+    <metric name="URLOpened" type="hmac-string">
       <summary>
         The URL that is opened from the current url.
       </summary>
     </metric>
-    <metric name="WindowOpenDisposition" kind="int">
+    <metric name="WindowOpenDisposition" type="int">
       <summary>
         Enum that indicates where the new tab is opened, see more on
         WindowOpenDisposition.
@@ -168,23 +171,22 @@
     <summary>
       Records a tab activity of reactivating an existing tab.
     </summary>
-    <metric name="SequenceId" kind="int">
+    <metric name="SequenceId" type="int">
       <summary>
         Sequence of this action across all CrOSActionEvent.
       </summary>
     </metric>
-    <metric name="TimeSinceLastAction" kind="int">
+    <metric name="TimeSinceLastAction" type="int">
       <summary>
         Time in milliseconds since last CrOSActionLogging.
       </summary>
     </metric>
-    <metric name="URL" kind="hashed-string">
+    <metric name="URL" type="hmac-string">
       <summary>
         The URL of the current event.
       </summary>
     </metric>
   </event>
-
 </project>
 
 <project name="LauncherUsage">
@@ -193,6 +195,7 @@
   <summary>
     See event summary.
   </summary>
+
   <event name="LauncherUsage">
     <summary>
       Records information about the launch of an item (such as an app or a file)
@@ -200,48 +203,47 @@
       originating from any launcher UI component, and this is the only
       circumstance that records events.
     </summary>
-    <metric name="App" kind="hashed-string">
+    <metric name="App" type="hmac-string">
       <summary>
-        App ID of the most-recently-opened app when this launch occured. This
-        can be an app ID of a Chrome app, Arc++ app, or PWA.
+        App ID of the most-recently-opened app when this launch occured. This can be
+        an app ID of a Chrome app, Arc++ app, or PWA.
       </summary>
     </metric>
-    <metric name="Domain" kind="hashed-string">
+    <metric name="Domain" type="hmac-string">
       <summary>
         The most-recently-visited domain when this launch ocurred.
       </summary>
     </metric>
-    <metric name="Hour" kind="int">
+    <metric name="Hour" type="int">
       <summary>
         The hour of launch. This is the user's local time rounded to the nearest
         hour, 0 to 23 inclusive.
       </summary>
     </metric>
-    <metric name="ProviderType" kind="int">
+    <metric name="ProviderType" type="int">
       <summary>
-        Which kind of search provider the launched result was created by. This
-        comes from the RankingItemType enum.
+        Which type of search provider the launched result was created by. This comes
+        from the RankingItemType enum.
       </summary>
     </metric>
-    <metric name="SearchQuery" kind="hashed-string">
+    <metric name="SearchQuery" type="hmac-string">
       <summary>
-        The search query associated with this launch. Before hashing, the query
-        is the empty string if there was no search query.
+        The search query associated with this launch. Before hashing, the query is
+        the empty string if there was no search query.
       </summary>
     </metric>
-    <metric name="SearchQueryLength" kind="int">
+    <metric name="SearchQueryLength" type="int">
       <summary>
-        String length of the search query associated with this launch. If there
-        was no query, this is zero.
+        String length of the search query associated with this launch. If there was
+        no query, this is zero.
       </summary>
     </metric>
-    <metric name="Target" kind="hashed-string">
+    <metric name="Target" type="hmac-string">
       <summary>
         The target item of this launch, eg. an app ID, filepath, or omnibox URL.
       </summary>
     </metric>
   </event>
-
 </project>
 
 <project name="TestProjectOne">
@@ -250,22 +252,22 @@
   <summary>
     Project for unit testing, do not use.
   </summary>
+
   <event name="TestEventOne">
     <summary>
       Event for unit testing, do not use.
     </summary>
-    <metric name="TestMetricOne" kind="hashed-string">
+    <metric name="TestMetricOne" type="hmac-string">
       <summary>
         A per-user keyed hashed value.
       </summary>
     </metric>
-    <metric name="TestMetricTwo" kind="int">
+    <metric name="TestMetricTwo" type="int">
       <summary>
         An unhashed value, recorded as-is.
       </summary>
     </metric>
   </event>
-
 </project>
 
 <project name="TestProjectTwo">
@@ -274,11 +276,12 @@
   <summary>
     Project for unit testing, do not use.
   </summary>
+
   <event name="TestEventThree">
     <summary>
       Event for unit testing, do not use.
     </summary>
-    <metric name="TestMetricFour" kind="hashed-string">
+    <metric name="TestMetricFour" type="hmac-string">
       <summary>
         A per-user keyed hashed value.
       </summary>
@@ -289,13 +292,12 @@
     <summary>
       Event for unit testing, do not use.
     </summary>
-    <metric name="TestMetricThree" kind="hashed-string">
+    <metric name="TestMetricThree" type="hmac-string">
       <summary>
         A per-user keyed hashed value.
       </summary>
     </metric>
   </event>
-
 </project>
 
-</structured-metrics>
+</structured-metrics>
\ No newline at end of file
diff --git a/tools/metrics/structured/events_template.py b/tools/metrics/structured/templates.py
similarity index 67%
rename from tools/metrics/structured/events_template.py
rename to tools/metrics/structured/templates.py
index d1d35c1..0b18e35de 100644
--- a/tools/metrics/structured/events_template.py
+++ b/tools/metrics/structured/templates.py
@@ -1,15 +1,9 @@
-# Copyright 2019 The Chromium Authors. All rights reserved.
+# -*- coding: utf-8 -*-
+# 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.
-
 """Templates for generating event classes for structured metrics."""
 
-import codegen
-
-########
-# HEADER
-########
-
 HEADER_FILE_TEMPLATE = """\
 // Generated from gen_events.py. DO NOT EDIT!
 // source: structured.xml
@@ -26,7 +20,7 @@
 namespace structured {{
 namespace events {{
 
-constexpr uint64_t kProjectNameHashes[] = {project_name_hashes};
+constexpr uint64_t kProjectNameHashes[] = {project_hashes};
 
 {project_code}
 
@@ -66,21 +60,12 @@
 
 """
 
-HEADER = codegen.Template(basename="structured_events.h",
-                          file_template=HEADER_FILE_TEMPLATE,
-                          project_template=HEADER_PROJECT_TEMPLATE,
-                          event_template=HEADER_EVENT_TEMPLATE,
-                          metric_template=HEADER_METRIC_TEMPLATE)
-
-######
-# IMPL
-######
-
 IMPL_FILE_TEMPLATE = """\
 // Generated from gen_events.py. DO NOT EDIT!
 // source: structured.xml
 
-#include "{file.dir_path}/structured_events.h"
+// #include "{file.dirname}/structured_events.h"
+#include "components/metrics/structured/structured_events.h"
 
 namespace metrics {{
 namespace structured {{
@@ -113,14 +98,3 @@
 }}
 
 """
-
-IMPL = codegen.Template(basename="structured_events.cc",
-                        file_template=IMPL_FILE_TEMPLATE,
-                        project_template=IMPL_PROJECT_TEMPLATE,
-                        event_template=IMPL_EVENT_TEMPLATE,
-                        metric_template=IMPL_METRIC_TEMPLATE)
-
-
-def WriteFiles(outdir, relpath, data):
-  HEADER.WriteFile(outdir, relpath, data)
-  IMPL.WriteFile(outdir, relpath, data)
diff --git a/tools/metrics/structured/validate_format.py b/tools/metrics/structured/validate_format.py
deleted file mode 100755
index 1bb39c89..0000000
--- a/tools/metrics/structured/validate_format.py
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2019 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-"""Verifies that the structured.xml file is well-formatted."""
-
-import os
-import re
-import sys
-from xml.dom import minidom
-
-sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common'))
-import path_util
-
-STRUCTURED_XML = path_util.GetInputFile(('tools/metrics/structured/'
-                                         'structured.xml'))
-
-
-def checkElementOwners(config, element_tag):
-  """Check that every element with the given tag has at least one owner."""
-  errors = []
-
-  for node in config.getElementsByTagName(element_tag):
-    name = node.getAttribute('name')
-    owner_nodes = node.getElementsByTagName('owner')
-
-    # Check <owner> tag is present for each element.
-    if not owner_nodes:
-      errors.append(
-          "<owner> tag is required for %s '%s'." % (element_tag, name))
-      continue
-
-    for owner_node in owner_nodes:
-      # Check <owner> tag actually has some content.
-      if not owner_node.childNodes:
-        errors.append("<owner> tag for '%s' should not be empty." % name)
-      for email in owner_node.childNodes:
-        # Check <owner> tag's content is an email address, not a username.
-        if not re.match('^.+@(chromium\.org|google\.com)$', email.data):
-          errors.append("<owner> tag for %s '%s' expects a Chromium or "
-                        "Google email address, instead found '%s'." %
-                        (element_tag, name, email.data.strip()))
-
-  return errors
-
-
-def checkElementsNotDuplicated(config, element_tag):
-  errors = []
-  elements = set()
-
-  for node in config.getElementsByTagName(element_tag):
-    name = node.getAttribute('name')
-    # Check for duplicate names.
-    if name in elements:
-      errors.append("duplicate %s name '%s'" % (element_tag, name))
-    elements.add(name)
-
-  return errors
-
-
-def main():
-  with open(STRUCTURED_XML, 'r') as config_file:
-    document = minidom.parse(config_file)
-    [config] = document.getElementsByTagName('structured-metrics')
-    errors = []
-
-    errors.extend(checkElementOwners(config, 'project'))
-    errors.extend(checkElementsNotDuplicated(config, 'project'))
-    for project in document.getElementsByTagName('project'):
-      errors.extend(checkElementsNotDuplicated(project, 'event'))
-      for event in project.getElementsByTagName('event'):
-        errors.extend(checkElementsNotDuplicated(event, 'metric'))
-
-    if errors:
-      return 'ERRORS:' + ''.join('\n  ' + e for e in errors)
-
-if __name__ == '__main__':
-  sys.exit(main())
diff --git a/tools/perf/core/shard_maps/timing_data/android-pixel2-perf_timing.json b/tools/perf/core/shard_maps/timing_data/android-pixel2-perf_timing.json
index 645bc2a..ffd5b60e 100644
--- a/tools/perf/core/shard_maps/timing_data/android-pixel2-perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/android-pixel2-perf_timing.json
@@ -900,14 +900,6 @@
         "name": "blink_perf.owp_storage/idb-load-docs.html"
     },
     {
-        "duration": "27.0",
-        "name": "blink_perf.owp_storage/idb-put-all.html"
-    },
-    {
-        "duration": "33.0",
-        "name": "blink_perf.owp_storage/idb-put.html"
-    },
-    {
         "duration": "18.0",
         "name": "blink_perf.paint/appending-text.html"
     },
diff --git a/tools/perf/core/shard_maps/timing_data/android-pixel2_webview-perf_timing.json b/tools/perf/core/shard_maps/timing_data/android-pixel2_webview-perf_timing.json
index 586ee29..c0210291 100644
--- a/tools/perf/core/shard_maps/timing_data/android-pixel2_webview-perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/android-pixel2_webview-perf_timing.json
@@ -900,14 +900,6 @@
         "name": "blink_perf.owp_storage/idb-load-docs.html"
     },
     {
-        "duration": "25.0",
-        "name": "blink_perf.owp_storage/idb-put-all.html"
-    },
-    {
-        "duration": "30.0",
-        "name": "blink_perf.owp_storage/idb-put.html"
-    },
-    {
         "duration": "13.0",
         "name": "blink_perf.paint/appending-text.html"
     },
diff --git a/tools/perf/core/shard_maps/timing_data/android_nexus5x_webview_perf_timing.json b/tools/perf/core/shard_maps/timing_data/android_nexus5x_webview_perf_timing.json
index c2b9874..fabd982 100644
--- a/tools/perf/core/shard_maps/timing_data/android_nexus5x_webview_perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/android_nexus5x_webview_perf_timing.json
@@ -900,14 +900,6 @@
         "name": "blink_perf.owp_storage/idb-load-docs.html"
     },
     {
-        "duration": "50.0",
-        "name": "blink_perf.owp_storage/idb-put-all.html"
-    },
-    {
-        "duration": "56.0",
-        "name": "blink_perf.owp_storage/idb-put.html"
-    },
-    {
         "duration": "0.0",
         "name": "blink_perf.paint/appending-text.html"
     },
diff --git a/tools/perf/core/shard_maps/timing_data/linux-perf_timing.json b/tools/perf/core/shard_maps/timing_data/linux-perf_timing.json
index 896dee5..c16167d 100644
--- a/tools/perf/core/shard_maps/timing_data/linux-perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/linux-perf_timing.json
@@ -900,14 +900,6 @@
         "name": "blink_perf.owp_storage/idb-load-docs.html"
     },
     {
-        "duration": "10.0",
-        "name": "blink_perf.owp_storage/idb-put-all.html"
-    },
-    {
-        "duration": "12.0",
-        "name": "blink_perf.owp_storage/idb-put.html"
-    },
-    {
         "duration": "9.0",
         "name": "blink_perf.paint/appending-text.html"
     },
diff --git a/tools/perf/core/shard_maps/timing_data/mac-10_12_laptop_low_end-perf_timing.json b/tools/perf/core/shard_maps/timing_data/mac-10_12_laptop_low_end-perf_timing.json
index 0b7725c..5aad3fd 100644
--- a/tools/perf/core/shard_maps/timing_data/mac-10_12_laptop_low_end-perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/mac-10_12_laptop_low_end-perf_timing.json
@@ -940,14 +940,6 @@
         "name": "blink_perf.owp_storage/idb-load-docs.html"
     },
     {
-        "duration": "35.0",
-        "name": "blink_perf.owp_storage/idb-put-all.html"
-    },
-    {
-        "duration": "38.0",
-        "name": "blink_perf.owp_storage/idb-put.html"
-    },
-    {
         "duration": "15.0",
         "name": "blink_perf.paint/appending-text.html"
     },
diff --git a/tools/perf/core/shard_maps/timing_data/mac-10_13_laptop_high_end-perf_timing.json b/tools/perf/core/shard_maps/timing_data/mac-10_13_laptop_high_end-perf_timing.json
index e293fa3..0cfcc17 100644
--- a/tools/perf/core/shard_maps/timing_data/mac-10_13_laptop_high_end-perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/mac-10_13_laptop_high_end-perf_timing.json
@@ -900,14 +900,6 @@
         "name": "blink_perf.owp_storage/idb-load-docs.html"
     },
     {
-        "duration": "23.0",
-        "name": "blink_perf.owp_storage/idb-put-all.html"
-    },
-    {
-        "duration": "26.0",
-        "name": "blink_perf.owp_storage/idb-put.html"
-    },
-    {
         "duration": "11.0",
         "name": "blink_perf.paint/appending-text.html"
     },
diff --git a/tools/perf/core/shard_maps/timing_data/mac-arm_dtk_arm-perf_timing.json b/tools/perf/core/shard_maps/timing_data/mac-arm_dtk_arm-perf_timing.json
index 881dfa08..13a8391b 100644
--- a/tools/perf/core/shard_maps/timing_data/mac-arm_dtk_arm-perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/mac-arm_dtk_arm-perf_timing.json
@@ -900,14 +900,6 @@
         "name": "blink_perf.owp_storage/idb-load-docs.html"
     },
     {
-        "duration": "56.0",
-        "name": "blink_perf.owp_storage/idb-put-all.html"
-    },
-    {
-        "duration": "59.0",
-        "name": "blink_perf.owp_storage/idb-put.html"
-    },
-    {
         "duration": "14.0",
         "name": "blink_perf.paint/appending-text.html"
     },
diff --git a/tools/perf/core/shard_maps/timing_data/win-10-perf_timing.json b/tools/perf/core/shard_maps/timing_data/win-10-perf_timing.json
index 1d6f3379..5f4e453 100644
--- a/tools/perf/core/shard_maps/timing_data/win-10-perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/win-10-perf_timing.json
@@ -900,14 +900,6 @@
         "name": "blink_perf.owp_storage/idb-load-docs.html"
     },
     {
-        "duration": "128.0",
-        "name": "blink_perf.owp_storage/idb-put-all.html"
-    },
-    {
-        "duration": "121.0",
-        "name": "blink_perf.owp_storage/idb-put.html"
-    },
-    {
         "duration": "11.0",
         "name": "blink_perf.paint/appending-text.html"
     },
diff --git a/tools/perf/core/shard_maps/timing_data/win-10_laptop_low_end-perf_timing.json b/tools/perf/core/shard_maps/timing_data/win-10_laptop_low_end-perf_timing.json
index 115558e..fb11c38 100644
--- a/tools/perf/core/shard_maps/timing_data/win-10_laptop_low_end-perf_timing.json
+++ b/tools/perf/core/shard_maps/timing_data/win-10_laptop_low_end-perf_timing.json
@@ -900,14 +900,6 @@
         "name": "blink_perf.owp_storage/idb-load-docs.html"
     },
     {
-        "duration": "43.0",
-        "name": "blink_perf.owp_storage/idb-put-all.html"
-    },
-    {
-        "duration": "50.0",
-        "name": "blink_perf.owp_storage/idb-put.html"
-    },
-    {
         "duration": "25.0",
         "name": "blink_perf.paint/appending-text.html"
     },
diff --git a/tools/perf/expectations.config b/tools/perf/expectations.config
index b4ed1176..a5359d94 100644
--- a/tools/perf/expectations.config
+++ b/tools/perf/expectations.config
@@ -362,7 +362,6 @@
 crbug.com/1147969 [ fuchsia ] system_health.memory_desktop/browse:media:youtubetv:2019 [ Skip ]
 crbug.com/1147969 [ fuchsia ] system_health.memory_desktop/browse:news:cnn:2020 [ Skip ]
 crbug.com/1147969 [ fuchsia ] system_health.memory_desktop/browse:news:reddit:2020 [ Skip ]
-crbug.com/1147969 [ linux ] system_health.memory_desktop/browse:news:reddit:2020 [ Skip ]
 crbug.com/1147969 [ fuchsia ] system_health.memory_desktop/browse:search:google_india:2018 [ Skip ]
 crbug.com/1147969 [ fuchsia ] system_health.memory_desktop/browse:social:facebook_infinite_scroll:2018 [ Skip ]
 crbug.com/1147969 [ fuchsia ] system_health.memory_desktop/browse:social:twitter:2018 [ Skip ]
diff --git a/tools/style_variable_generator/colors_test_expected.protojson b/tools/style_variable_generator/colors_test_expected.protojson
index f965eef..b605cd6 100644
--- a/tools/style_variable_generator/colors_test_expected.protojson
+++ b/tools/style_variable_generator/colors_test_expected.protojson
@@ -1,25 +1,36 @@
-/* This file is generated from:
- *  additional_colors_test.json5
- *  colors_test_palette.json5
- *  colors_test.json5
- */
-palette_colors: {
-  google_grey_900: {
-    light_value: 0xFF202124,
-    dark_value: 0xFF202124
+# This file is generated from:
+#   additional_colors_test.json5
+#   colors_test_palette.json5
+#   colors_test.json5
+palette_colors: [
+  {
+    key: "google_grey_900",
+    value: {
+      light_value: 0xFF202124,
+      dark_value: 0xFF202124
+    }
   }
-}
-test_colors: {
-  text_color_primary: {
-    light_value: 0xFF202124,
-    dark_value: 0xFFFFFFFF
+]
+test_colors: [
+  {
+    key: "text_color_primary",
+    value: {
+      light_value: 0xFF202124,
+      dark_value: 0xFFFFFFFF
+    }
   },
-  toggle_color: {
-    light_value: 0x19202124,
-    dark_value: 0x19FFFFFF
+  {
+    key: "toggle_color",
+    value: {
+      light_value: 0x19202124,
+      dark_value: 0x19FFFFFF
+    }
   },
-  text_color: {
-    light_value: 0xFF000000,
-    dark_value: 0xFFFFFFFF
+  {
+    key: "text_color",
+    value: {
+      light_value: 0xFF000000,
+      dark_value: 0xFFFFFFFF
+    }
   }
-}
+]
diff --git a/tools/style_variable_generator/proto_json_generator.tmpl b/tools/style_variable_generator/proto_json_generator.tmpl
index a115534..784f6b8 100644
--- a/tools/style_variable_generator/proto_json_generator.tmpl
+++ b/tools/style_variable_generator/proto_json_generator.tmpl
@@ -1,15 +1,17 @@
-/* This file is generated from:
+# This file is generated from:
 {%- for path in in_files %}
- *  {{path}}
+#   {{path}}
 {%-  endfor %}
- */
 {% for field in fields -%}
-{{field.name}}: {
-{%-   for obj in field['values'] %}
-  {{obj.name}}: {
-    light_value: {{obj.mode_values[Modes.LIGHT] | proto_color}},
-    dark_value: {{obj.mode_values[Modes.DARK] | proto_color}}
+{{field.name}}: [
+  {%-   for obj in field['values'] %}
+  {
+    key: "{{obj.name}}",
+    value: {
+      light_value: {{obj.mode_values[Modes.LIGHT] | proto_color}},
+      dark_value: {{obj.mode_values[Modes.DARK] | proto_color}}
+    }
   }{{ "," if not loop.last }}
-{%-    endfor %}
-}
+  {%-    endfor %}
+]
 {%  endfor -%}
diff --git a/ui/accessibility/ax_node_position.cc b/ui/accessibility/ax_node_position.cc
index 3a853b1..17ac632 100644
--- a/ui/accessibility/ax_node_position.cc
+++ b/ui/accessibility/ax_node_position.cc
@@ -49,6 +49,124 @@
   return AXPositionInstance(new AXNodePosition(*this));
 }
 
+base::string16 AXNodePosition::GetText() const {
+  if (IsNullPosition())
+    return base::string16();
+
+  // Special case, if a node has only ignored descendants, i.e., it appears to
+  // be empty to assistive software, on some platforms we need to still treat it
+  // as a character and a word boundary. We achieve this by adding an embedded
+  // object character in the text representation used by this class, but we
+  // don't expose that character to assistive software that tries to retrieve
+  // the node's inner text.
+  if (IsEmptyObjectReplacedByCharacter())
+    return AXNode::kEmbeddedCharacter;
+
+  const AXNode* anchor = GetAnchor();
+  DCHECK(anchor);
+  switch (g_ax_embedded_object_behavior) {
+    case AXEmbeddedObjectBehavior::kSuppressCharacter:
+      return base::UTF8ToUTF16(anchor->GetInnerText());
+    case AXEmbeddedObjectBehavior::kExposeCharacter:
+      return anchor->GetHypertext();
+  }
+}
+
+bool AXNodePosition::IsInLineBreak() const {
+  if (IsNullPosition())
+    return false;
+  DCHECK(GetAnchor());
+  return GetAnchor()->IsLineBreak();
+}
+
+bool AXNodePosition::IsInTextObject() const {
+  if (IsNullPosition())
+    return false;
+  DCHECK(GetAnchor());
+  return GetAnchor()->IsText();
+}
+
+bool AXNodePosition::IsInWhiteSpace() const {
+  if (IsNullPosition())
+    return false;
+  DCHECK(GetAnchor());
+  return GetAnchor()->IsLineBreak() ||
+         base::ContainsOnlyChars(GetText(), base::kWhitespaceUTF16);
+}
+
+// This override is an optimized version AXPosition::MaxTextOffset. Instead of
+// concatenating the strings in GetText() to then get their text length, we sum
+// the lengths of the individual strings. This is faster than concatenating the
+// strings first and then taking their length, especially when the process
+// is recursive.
+int AXNodePosition::MaxTextOffset() const {
+  if (IsNullPosition())
+    return INVALID_OFFSET;
+
+  if (IsEmptyObjectReplacedByCharacter())
+    return 1;
+
+  const AXNode* anchor = GetAnchor();
+  DCHECK(anchor);
+  // TODO(nektar): Replace with PlatformChildCount when AXNodePosition and
+  // BrowserAccessibilityPosition will be merged.
+  if (!AnchorChildCount() || anchor->IsText())
+    return base::UTF8ToUTF16(anchor->GetInnerText()).length();
+
+  int text_length = 0;
+  // This is an optimization over retrieving the text of the whole subtree and
+  // then finding its length. It saves time by adding lengths instead of
+  // concatenating strings.
+  for (int i = 0; i < AnchorChildCount(); ++i)
+    text_length += CreateChildPositionAt(i)->MaxTextOffset();
+
+  return text_length;
+}
+
+bool AXNodePosition::IsEmbeddedObjectInParent() const {
+  switch (g_ax_embedded_object_behavior) {
+    case AXEmbeddedObjectBehavior::kSuppressCharacter:
+      return false;
+    case AXEmbeddedObjectBehavior::kExposeCharacter:
+      // We expose an "object replacement character" for all nodes except
+      // textual nodes as well as nodes that are invisible to platform APIs, AKA
+      // nodes that are descendants of platform leaves. In the former case,
+      // textual nodes are represented by their actual text in the text of their
+      // parent nodes, in order to maintain compatibility with how Firefox
+      // exposes text in IAccessibleText. For the latter case, an example of a
+      // platform leaf is a plain text field because all of the accessibility
+      // subtree inside the text field is not visible to platform APIs.
+      //
+      // Please note that for navigational purposes, we need to expose an
+      // "object replacement character" in empty controls, such as in an empty
+      // text field. The presence or the absence of accessible content inside a
+      // control might alter whether an "object replacement character" would be
+      // exposed in that control, in contrast to ordinary text such as in the
+      // case of a non-empty simple text field which should only have textual
+      // nodes inside it. This is because empty controls need to act as a word
+      // and character boundary. See
+      // "AXPosition::IsEmptyObjectReplacedByCharacter()" for more information.
+      return !IsNullPosition() && !GetAnchor()->IsText() &&
+             !GetAnchor()->IsChildOfLeaf();
+  }
+}
+
+bool AXNodePosition::IsInLineBreakingObject() const {
+  if (IsNullPosition())
+    return false;
+  DCHECK(GetAnchor());
+  return GetAnchor()->data().GetBoolAttribute(
+             ax::mojom::BoolAttribute::kIsLineBreakingObject) &&
+         !GetAnchor()->IsInListMarker();
+}
+
+ax::mojom::Role AXNodePosition::GetAnchorRole() const {
+  if (IsNullPosition())
+    return ax::mojom::Role::kNone;
+  DCHECK(GetAnchor());
+  return GetRole(GetAnchor());
+}
+
 void AXNodePosition::AnchorChild(int child_index,
                                  AXTreeID* tree_id,
                                  AXNodeID* child_id) const {
@@ -178,124 +296,6 @@
   return node->tree()->GetAXTreeID();
 }
 
-base::string16 AXNodePosition::GetText() const {
-  if (IsNullPosition())
-    return base::string16();
-
-  // Special case, if a node has only ignored descendants, i.e., it appears to
-  // be empty to assistive software, on some platforms we need to still treat it
-  // as a character and a word boundary. We achieve this by adding an embedded
-  // object character in the text representation used by this class, but we
-  // don't expose that character to assistive software that tries to retrieve
-  // the node's inner text.
-  if (IsEmptyObjectReplacedByCharacter())
-    return AXNode::kEmbeddedCharacter;
-
-  const AXNode* anchor = GetAnchor();
-  DCHECK(anchor);
-  switch (g_ax_embedded_object_behavior) {
-    case AXEmbeddedObjectBehavior::kSuppressCharacter:
-      return base::UTF8ToUTF16(anchor->GetInnerText());
-    case AXEmbeddedObjectBehavior::kExposeCharacter:
-      return anchor->GetHypertext();
-  }
-}
-
-bool AXNodePosition::IsInLineBreak() const {
-  if (IsNullPosition())
-    return false;
-  DCHECK(GetAnchor());
-  return GetAnchor()->IsLineBreak();
-}
-
-bool AXNodePosition::IsInTextObject() const {
-  if (IsNullPosition())
-    return false;
-  DCHECK(GetAnchor());
-  return GetAnchor()->IsText();
-}
-
-bool AXNodePosition::IsInWhiteSpace() const {
-  if (IsNullPosition())
-    return false;
-  DCHECK(GetAnchor());
-  return GetAnchor()->IsLineBreak() ||
-         base::ContainsOnlyChars(GetText(), base::kWhitespaceUTF16);
-}
-
-// This override is an optimized version AXPosition::MaxTextOffset. Instead of
-// concatenating the strings in GetText() to then get their text length, we sum
-// the lengths of the individual strings. This is faster than concatenating the
-// strings first and then taking their length, especially when the process
-// is recursive.
-int AXNodePosition::MaxTextOffset() const {
-  if (IsNullPosition())
-    return INVALID_OFFSET;
-
-  if (IsEmptyObjectReplacedByCharacter())
-    return 1;
-
-  const AXNode* anchor = GetAnchor();
-  DCHECK(anchor);
-  // TODO(nektar): Replace with PlatformChildCount when AXNodePosition and
-  // BrowserAccessibilityPosition will be merged.
-  if (!AnchorChildCount() || anchor->IsText())
-    return base::UTF8ToUTF16(anchor->GetInnerText()).length();
-
-  int text_length = 0;
-  // This is an optimization over retrieving the text of the whole subtree and
-  // then finding its length. It saves time by adding lengths instead of
-  // concatenating strings.
-  for (int i = 0; i < AnchorChildCount(); ++i)
-    text_length += CreateChildPositionAt(i)->MaxTextOffset();
-
-  return text_length;
-}
-
-bool AXNodePosition::IsEmbeddedObjectInParent() const {
-  switch (g_ax_embedded_object_behavior) {
-    case AXEmbeddedObjectBehavior::kSuppressCharacter:
-      return false;
-    case AXEmbeddedObjectBehavior::kExposeCharacter:
-      // We expose an "object replacement character" for all nodes except
-      // textual nodes as well as nodes that are invisible to platform APIs, AKA
-      // nodes that are descendants of platform leaves. In the former case,
-      // textual nodes are represented by their actual text in the text of their
-      // parent nodes, in order to maintain compatibility with how Firefox
-      // exposes text in IAccessibleText. For the latter case, an example of a
-      // platform leaf is a plain text field because all of the accessibility
-      // subtree inside the text field is not visible to platform APIs.
-      //
-      // Please note that for navigational purposes, we need to expose an
-      // "object replacement character" in empty controls, such as in an empty
-      // text field. The presence or the absence of accessible content inside a
-      // control might alter whether an "object replacement character" would be
-      // exposed in that control, in contrast to ordinary text such as in the
-      // case of a non-empty simple text field which should only have textual
-      // nodes inside it. This is because empty controls need to act as a word
-      // and character boundary. See
-      // "AXPosition::IsEmptyObjectReplacedByCharacter()" for more information.
-      return !IsNullPosition() && !GetAnchor()->IsText() &&
-             !GetAnchor()->IsChildOfLeaf();
-  }
-}
-
-bool AXNodePosition::IsInLineBreakingObject() const {
-  if (IsNullPosition())
-    return false;
-  DCHECK(GetAnchor());
-  return GetAnchor()->data().GetBoolAttribute(
-             ax::mojom::BoolAttribute::kIsLineBreakingObject) &&
-         !GetAnchor()->IsInListMarker();
-}
-
-ax::mojom::Role AXNodePosition::GetAnchorRole() const {
-  if (IsNullPosition())
-    return ax::mojom::Role::kNone;
-  DCHECK(GetAnchor());
-  return GetRole(GetAnchor());
-}
-
 ax::mojom::Role AXNodePosition::GetRole(AXNode* node) const {
   return node->data().role;
 }
diff --git a/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb b/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb
index 1b0d620..da6b1f2 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb
@@ -186,6 +186,7 @@
 <translation id="299638574917407533">French (Canada)</translation>
 <translation id="3003633581067744647">Switch to thumbnail view</translation>
 <translation id="3007214526293698309">Fix ratio</translation>
+<translation id="3029114385395636667">Enable Google Docs Offline to make Docs, Sheets and Slides available offline.</translation>
 <translation id="303198083543495566">Geography</translation>
 <translation id="3047197340186497470">Chinese Dayi</translation>
 <translation id="3057861065630527966">Backup your photos and videos</translation>
@@ -280,6 +281,7 @@
 <translation id="4124935795427217608">Unicorn</translation>
 <translation id="4158739975813877944">Open play list</translation>
 <translation id="4159731583141908892"><ph name="FILE_NAME" /> moved.</translation>
+<translation id="4186579485882418952">Enable offline</translation>
 <translation id="4193154014135846272">Google document</translation>
 <translation id="4197674956721858839">Zip selection</translation>
 <translation id="4202378258276439759">Spanish (Latin America)</translation>
diff --git a/ui/file_manager/file_manager/BUILD.gn b/ui/file_manager/file_manager/BUILD.gn
index adaee11..371191e 100644
--- a/ui/file_manager/file_manager/BUILD.gn
+++ b/ui/file_manager/file_manager/BUILD.gn
@@ -101,6 +101,7 @@
     "foreground/images/files/ui/quick_view/filetype_video.png",
     "foreground/images/files/ui/quick_view/2x/filetype_video.png",
     "foreground/images/files/ui/refresh.svg",
+    "foreground/images/files/ui/restore.svg",
     "foreground/images/files/ui/search.png",
     "foreground/images/files/ui/search.svg",
     "foreground/images/files/ui/search_clear_filled.svg",
diff --git a/ui/file_manager/file_manager/common/js/util.js b/ui/file_manager/file_manager/common/js/util.js
index d576f20..6e535d5 100644
--- a/ui/file_manager/file_manager/common/js/util.js
+++ b/ui/file_manager/file_manager/common/js/util.js
@@ -53,50 +53,37 @@
 };
 
 /**
+ * Mapping table of file error name to i18n localized error name.
+ *
+ * @const @enum {string}
+ */
+util.FileErrorLocalizedName = {
+  'InvalidModificationError': 'FILE_ERROR_INVALID_MODIFICATION',
+  'InvalidStateError': 'FILE_ERROR_INVALID_STATE',
+  'NoModificationAllowedError': 'FILE_ERROR_NO_MODIFICATION_ALLOWED',
+  'NotFoundError': 'FILE_ERROR_NOT_FOUND',
+  'NotReadableError': 'FILE_ERROR_NOT_READABLE',
+  'PathExistsError': 'FILE_ERROR_PATH_EXISTS',
+  'QuotaExceededError': 'FILE_ERROR_QUOTA_EXCEEDED',
+  'SecurityError': 'FILE_ERROR_SECURITY',
+};
+Object.freeze(util.FileErrorLocalizedName);
+
+/**
+ * Returns i18n localized error name for file error |name|.
+ *
  * @param {?string|undefined} name File error name.
  * @return {string} Translated file error string.
  */
 util.getFileErrorString = name => {
-  let errorString;
-
-  switch (name) {
-    case 'NotFoundError':
-      errorString = 'FILE_ERROR_NOT_FOUND';
-      break;
-    case 'SecurityError':
-      errorString = 'FILE_ERROR_SECURITY';
-      break;
-    case 'NotReadableError':
-      errorString = 'FILE_ERROR_NOT_READABLE';
-      break;
-    case 'NoModificationAllowedError':
-      errorString = 'FILE_ERROR_NO_MODIFICATION_ALLOWED';
-      break;
-    case 'InvalidStateError':
-      errorString = 'FILE_ERROR_INVALID_STATE';
-      break;
-    case 'InvalidModificationError':
-      errorString = 'FILE_ERROR_INVALID_MODIFICATION';
-      break;
-    case 'PathExistsError':
-      errorString = 'FILE_ERROR_PATH_EXISTS';
-      break;
-    case 'QuotaExceededError':
-      errorString = 'FILE_ERROR_QUOTA_EXCEEDED';
-      break;
-    default:
-      errorString = 'FILE_ERROR_GENERIC';
-      break;
-  }
-
-  return loadTimeData.getString(errorString);
+  const error = util.FileErrorLocalizedName[name] || 'FILE_ERROR_GENERIC';
+  return loadTimeData.getString(error);
 };
 
 /**
  * Mapping table for FileError.code style enum to DOMError.name string.
  *
- * @enum {string}
- * @const
+ * @const @enum {string}
  */
 util.FileError = {
   ABORT_ERR: 'AbortError',
diff --git a/ui/file_manager/file_manager/common/js/util_unittest.m.js b/ui/file_manager/file_manager/common/js/util_unittest.m.js
index f1534b8..c879dd0 100644
--- a/ui/file_manager/file_manager/common/js/util_unittest.m.js
+++ b/ui/file_manager/file_manager/common/js/util_unittest.m.js
@@ -317,3 +317,30 @@
   assertEquals(util.bytesToString(2 * PB + 647 * TB, 3), '2.632 PB');
   assertEquals(util.bytesToString(200 * PB + 647 * TB, 1), '200.63 PB');
 }
+
+/**
+ * Tests the util.getFileErrorString helper for undefined, null, or empty
+ * string error name input, which should output an i18n FILE_ERROR_GENERIC
+ * error name.
+ *
+ * Also tests pre-defined error names ('NotFoundError' and 'PathExistsError'
+ * here), which should output their associated i18n error names.
+ */
+export function testGetFileErrorString() {
+  let i18nErrorName;
+
+  i18nErrorName = util.getFileErrorString(undefined);
+  assertEquals(i18nErrorName, 'FILE_ERROR_GENERIC');
+
+  i18nErrorName = util.getFileErrorString(null);
+  assertEquals(i18nErrorName, 'FILE_ERROR_GENERIC');
+
+  i18nErrorName = util.getFileErrorString('');
+  assertEquals(i18nErrorName, 'FILE_ERROR_GENERIC');
+
+  i18nErrorName = util.getFileErrorString('NotFoundError');
+  assertEquals(i18nErrorName, 'FILE_ERROR_NOT_FOUND');
+
+  i18nErrorName = util.getFileErrorString('PathExistsError');
+  assertEquals(i18nErrorName, 'FILE_ERROR_PATH_EXISTS');
+}
diff --git a/ui/file_manager/file_manager/foreground/js/directory_model.js b/ui/file_manager/file_manager/foreground/js/directory_model.js
index ea4c2be..1432c167 100644
--- a/ui/file_manager/file_manager/foreground/js/directory_model.js
+++ b/ui/file_manager/file_manager/foreground/js/directory_model.js
@@ -71,6 +71,13 @@
     this.ignoreCurrentDirectoryDeletion_ = false;
 
     this.directoryChangeQueue_ = new AsyncUtil.Queue();
+
+    /**
+     * Number of running directory change trackers.
+     * @private {number}
+     */
+    this.numChangeTrackerRunning_ = 0;
+
     this.rescanAggregator_ =
         new AsyncUtil.Aggregator(this.rescanSoon.bind(this, true), 500);
 
@@ -1166,6 +1173,7 @@
 
       start: function() {
         if (!this.active_) {
+          this.dm_.numChangeTrackerRunning_++;
           this.dm_.addEventListener(
               'directory-changed', this.onDirectoryChange_);
           this.active_ = true;
@@ -1175,6 +1183,7 @@
 
       stop: function() {
         if (this.active_) {
+          this.dm_.numChangeTrackerRunning_--;
           this.dm_.removeEventListener(
               'directory-changed', this.onDirectoryChange_);
           this.active_ = false;
@@ -1292,8 +1301,11 @@
       // asynchronous call.
       event.added[0].resolveDisplayRoot().then((displayRoot) => {
         // Only change directory if "currentDir" hasn't changed during the
-        // display root resolution.
-        if (currentDir === this.getCurrentDirEntry()) {
+        // display root resolution and if there isn't a directory change in
+        // progress, because other part of the system will eventually change the
+        // directory.
+        if (currentDir === this.getCurrentDirEntry() &&
+            this.numChangeTrackerRunning_ === 0) {
           this.changeDirectoryEntry(event.added[0].displayRoot);
         }
       });