[web] Use aria-hidden instead of inert for platform view accessibility
diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/platform_views/content_manager.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/platform_views/content_manager.dart
index 0737f82..d27c70c 100644
--- a/engine/src/flutter/lib/web_ui/lib/src/engine/platform_views/content_manager.dart
+++ b/engine/src/flutter/lib/web_ui/lib/src/engine/platform_views/content_manager.dart
@@ -37,6 +37,9 @@
   /// rendering of PlatformViews into the web app.
   static PlatformViewManager instance = PlatformViewManager();
 
+  /// The attribute name used to hide platform views from accessibility.
+  static const String _ariaHiddenAttribute = 'aria-hidden';
+
   // The factory functions, indexed by the viewType
   final Map<String, Function> _factories = <String, Function>{};
 
@@ -119,7 +122,7 @@
   /// The resulting DOM for the `contents` of a Platform View looks like this:
   ///
   /// ```html
-  /// <flt-platform-view id="flt-pv-VIEW_ID" slot="..." inert>
+  /// <flt-platform-view id="flt-pv-VIEW_ID" slot="..." aria-hidden="true">
   ///   <arbitrary-html-elements />
   /// </flt-platform-view-slot>
   /// ```
@@ -132,8 +135,8 @@
   /// what `slot` tag will reveal this `contents`, **without modifying the returned
   /// html from the `factory` function**.
   ///
-  /// By default, platform views are made inert. The semantics layer will remove
-  /// this when a semantic node is created.
+  /// By default, platform views are hidden from accessibility using aria-hidden.
+  /// The semantics layer will remove this when a semantic node is created.
   DomElement renderContent(String viewType, int viewId, Object? params) {
     assert(
       knowsViewType(viewType),
@@ -161,7 +164,7 @@
       _ensureContentCorrectlySized(content, viewType);
       wrapper.append(content);
 
-      wrapper.setAttribute('inert', '');
+      wrapper.setAttribute(_ariaHiddenAttribute, 'true');
 
       return wrapper;
     });
@@ -225,11 +228,9 @@
     }
 
     if (isHidden) {
-      // Hide from screen readers and keyboard navigation
-      wrapper.setAttribute('inert', '');
+      wrapper.setAttribute(_ariaHiddenAttribute, 'true');
     } else {
-      // Make accessible to screen readers and keyboard navigation
-      wrapper.removeAttribute('inert');
+      wrapper.removeAttribute(_ariaHiddenAttribute);
     }
   }
 
diff --git a/engine/src/flutter/lib/web_ui/test/engine/platform_views/content_manager_test.dart b/engine/src/flutter/lib/web_ui/test/engine/platform_views/content_manager_test.dart
index 0b71936..6e7c3fd 100644
--- a/engine/src/flutter/lib/web_ui/test/engine/platform_views/content_manager_test.dart
+++ b/engine/src/flutter/lib/web_ui/test/engine/platform_views/content_manager_test.dart
@@ -248,28 +248,28 @@
         contentManager.registerFactory(viewType, (int id) => createDomHTMLDivElement());
       });
 
-      test('sets inert attribute by default when rendering', () {
+      test('sets aria-hidden attribute by default when rendering', () {
         final DomElement wrapper = contentManager.renderContent(viewType, viewId, null);
 
         expect(
-          wrapper.hasAttribute('inert'),
-          isTrue,
-          reason: 'Platform views should be inert by default for ExcludeSemantics support',
+          wrapper.getAttribute('aria-hidden'),
+          'true',
+          reason: 'Platform views should be aria-hidden by default for ExcludeSemantics support',
         );
       });
 
       test('hides platform view from accessibility when isHidden is true', () {
         final DomElement wrapper = contentManager.renderContent(viewType, viewId, null);
 
-        wrapper.removeAttribute('inert');
-        expect(wrapper.hasAttribute('inert'), isFalse);
+        wrapper.removeAttribute('aria-hidden');
+        expect(wrapper.hasAttribute('aria-hidden'), isFalse);
 
         contentManager.updatePlatformViewAccessibility(viewId, true);
 
         expect(
-          wrapper.hasAttribute('inert'),
-          isTrue,
-          reason: 'inert should be set when isHidden is true',
+          wrapper.getAttribute('aria-hidden'),
+          'true',
+          reason: 'aria-hidden should be set to true when isHidden is true',
         );
       });
 
@@ -277,17 +277,17 @@
         final DomElement wrapper = contentManager.renderContent(viewType, viewId, null);
 
         expect(
-          wrapper.hasAttribute('inert'),
-          isTrue,
-          reason: 'Platform view should start as inert',
+          wrapper.getAttribute('aria-hidden'),
+          'true',
+          reason: 'Platform view should start with aria-hidden=true',
         );
 
         contentManager.updatePlatformViewAccessibility(viewId, false);
 
         expect(
-          wrapper.hasAttribute('inert'),
+          wrapper.hasAttribute('aria-hidden'),
           isFalse,
-          reason: 'inert should be removed when isHidden is false',
+          reason: 'aria-hidden should be removed when isHidden is false',
         );
       });
 
@@ -295,13 +295,13 @@
         final DomElement wrapper = contentManager.renderContent(viewType, viewId, null);
 
         contentManager.updatePlatformViewAccessibility(viewId, false);
-        expect(wrapper.hasAttribute('inert'), isFalse);
+        expect(wrapper.hasAttribute('aria-hidden'), isFalse);
 
         contentManager.updatePlatformViewAccessibility(viewId, true);
-        expect(wrapper.hasAttribute('inert'), isTrue);
+        expect(wrapper.getAttribute('aria-hidden'), 'true');
 
         contentManager.updatePlatformViewAccessibility(viewId, false);
-        expect(wrapper.hasAttribute('inert'), isFalse);
+        expect(wrapper.hasAttribute('aria-hidden'), isFalse);
       });
 
       test('does nothing when viewId does not exist', () {