haikuwebkit/LayoutTests/accessibility/ios-simulator/video-elements-ios.html

61 lines
1.8 KiB
HTML
Raw Permalink Normal View History

AX: Make video objects accessible on iOS https://bugs.webkit.org/show_bug.cgi?id=177788 <rdar://problem/34778028> Reviewed by Chris Fleizach. Source/WebCore: Exposed certain <video> elements on iOS: 1. If they have no controls attribute set and have playsinline attribute set, that means normally there are custom controls provided. 2. Without autoplay attribute set. From iOS 10, with the motivation to improve performace by replacing GIF with <video>, elements will now honor the autoplay attribute if they have no audio. So normally those <video> elements are not interactive. Also provided functions to let iOS users interact with the video elements: - Play/Pause: accessibilityActivate - Fast forward: accessibilityIncrement - Rewind: accessibilityDecrement Test: accessibility/ios-simulator/video-elements-ios.html * WebCore.xcodeproj/project.pbxproj: * accessibility/AXObjectCache.cpp: (WebCore::createFromRenderer): * accessibility/AccessibilityMediaObject.cpp: Added. (WebCore::AccessibilityMediaObject::AccessibilityMediaObject): (WebCore::AccessibilityMediaObject::~AccessibilityMediaObject): (WebCore::AccessibilityMediaObject::create): (WebCore::AccessibilityMediaObject::computeAccessibilityIsIgnored const): (WebCore::AccessibilityMediaObject::mediaElement const): (WebCore::AccessibilityMediaObject::stringValue const): (WebCore::AccessibilityMediaObject::interactiveVideoDuration const): (WebCore::AccessibilityMediaObject::mediaSeek): (WebCore::AccessibilityMediaObject::toggleMute): (WebCore::AccessibilityMediaObject::increment): (WebCore::AccessibilityMediaObject::decrement): (WebCore::AccessibilityMediaObject::press): (WebCore::AccessibilityMediaObject::hasControlsAttributeSet const): (WebCore::AccessibilityMediaObject::isPlaying const): (WebCore::AccessibilityMediaObject::isMuted const): (WebCore::AccessibilityMediaObject::isAutoplayEnabled const): (WebCore::AccessibilityMediaObject::isPlayingInline const): (WebCore::AccessibilityMediaObject::enterFullscreen const): * accessibility/AccessibilityMediaObject.h: Added. * accessibility/AccessibilityObject.cpp: * accessibility/AccessibilityObject.h: (WebCore::AccessibilityObject::isMediaObject const): * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: (-[WebAccessibilityObjectWrapper accessibilityIsWebInteractiveVideo]): (-[WebAccessibilityObjectWrapper interactiveVideoDescription]): (-[WebAccessibilityObjectWrapper accessibilityIsMediaPlaying]): (-[WebAccessibilityObjectWrapper accessibilityIsMediaMuted]): (-[WebAccessibilityObjectWrapper accessibilityToggleMuteForMedia]): (-[WebAccessibilityObjectWrapper accessibilityVideoEnterFullscreen]): (-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]): (-[WebAccessibilityObjectWrapper stringValueShouldBeUsedInLabel]): (-[WebAccessibilityObjectWrapper accessibilityLabel]): LayoutTests: * accessibility/ios-simulator/video-elements-ios-expected.txt: Added. * accessibility/ios-simulator/video-elements-ios.html: Added. Canonical link: https://commits.webkit.org/194162@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@222887 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-10-04 23:43:13 +00:00
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body id="body">
<video width="320" height="240" playsinline id="video" aria-label="Video label1"></video>
AX: Make video objects accessible on iOS https://bugs.webkit.org/show_bug.cgi?id=177788 <rdar://problem/34778028> Reviewed by Chris Fleizach. Source/WebCore: Exposed certain <video> elements on iOS: 1. If they have no controls attribute set and have playsinline attribute set, that means normally there are custom controls provided. 2. Without autoplay attribute set. From iOS 10, with the motivation to improve performace by replacing GIF with <video>, elements will now honor the autoplay attribute if they have no audio. So normally those <video> elements are not interactive. Also provided functions to let iOS users interact with the video elements: - Play/Pause: accessibilityActivate - Fast forward: accessibilityIncrement - Rewind: accessibilityDecrement Test: accessibility/ios-simulator/video-elements-ios.html * WebCore.xcodeproj/project.pbxproj: * accessibility/AXObjectCache.cpp: (WebCore::createFromRenderer): * accessibility/AccessibilityMediaObject.cpp: Added. (WebCore::AccessibilityMediaObject::AccessibilityMediaObject): (WebCore::AccessibilityMediaObject::~AccessibilityMediaObject): (WebCore::AccessibilityMediaObject::create): (WebCore::AccessibilityMediaObject::computeAccessibilityIsIgnored const): (WebCore::AccessibilityMediaObject::mediaElement const): (WebCore::AccessibilityMediaObject::stringValue const): (WebCore::AccessibilityMediaObject::interactiveVideoDuration const): (WebCore::AccessibilityMediaObject::mediaSeek): (WebCore::AccessibilityMediaObject::toggleMute): (WebCore::AccessibilityMediaObject::increment): (WebCore::AccessibilityMediaObject::decrement): (WebCore::AccessibilityMediaObject::press): (WebCore::AccessibilityMediaObject::hasControlsAttributeSet const): (WebCore::AccessibilityMediaObject::isPlaying const): (WebCore::AccessibilityMediaObject::isMuted const): (WebCore::AccessibilityMediaObject::isAutoplayEnabled const): (WebCore::AccessibilityMediaObject::isPlayingInline const): (WebCore::AccessibilityMediaObject::enterFullscreen const): * accessibility/AccessibilityMediaObject.h: Added. * accessibility/AccessibilityObject.cpp: * accessibility/AccessibilityObject.h: (WebCore::AccessibilityObject::isMediaObject const): * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: (-[WebAccessibilityObjectWrapper accessibilityIsWebInteractiveVideo]): (-[WebAccessibilityObjectWrapper interactiveVideoDescription]): (-[WebAccessibilityObjectWrapper accessibilityIsMediaPlaying]): (-[WebAccessibilityObjectWrapper accessibilityIsMediaMuted]): (-[WebAccessibilityObjectWrapper accessibilityToggleMuteForMedia]): (-[WebAccessibilityObjectWrapper accessibilityVideoEnterFullscreen]): (-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]): (-[WebAccessibilityObjectWrapper stringValueShouldBeUsedInLabel]): (-[WebAccessibilityObjectWrapper accessibilityLabel]): LayoutTests: * accessibility/ios-simulator/video-elements-ios-expected.txt: Added. * accessibility/ios-simulator/video-elements-ios.html: Added. Canonical link: https://commits.webkit.org/194162@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@222887 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-10-04 23:43:13 +00:00
<video width="320" height="240" controls id="video2" aria-label="Video label2">
<source src="../../media/content/counting.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<p id="description"></p>
<div id="console"></div>
<script>
description("This tests the video elements on iOS.");
if (window.accessibilityController) {
jsTestIsAsync = true;
var vid = document.getElementById("video");
var video = accessibilityController.accessibleElementById("video");
shouldBeFalse("video.isIgnored");
AX: Make video objects accessible on iOS https://bugs.webkit.org/show_bug.cgi?id=177788 <rdar://problem/34778028> Reviewed by Chris Fleizach. Source/WebCore: Exposed certain <video> elements on iOS: 1. If they have no controls attribute set and have playsinline attribute set, that means normally there are custom controls provided. 2. Without autoplay attribute set. From iOS 10, with the motivation to improve performace by replacing GIF with <video>, elements will now honor the autoplay attribute if they have no audio. So normally those <video> elements are not interactive. Also provided functions to let iOS users interact with the video elements: - Play/Pause: accessibilityActivate - Fast forward: accessibilityIncrement - Rewind: accessibilityDecrement Test: accessibility/ios-simulator/video-elements-ios.html * WebCore.xcodeproj/project.pbxproj: * accessibility/AXObjectCache.cpp: (WebCore::createFromRenderer): * accessibility/AccessibilityMediaObject.cpp: Added. (WebCore::AccessibilityMediaObject::AccessibilityMediaObject): (WebCore::AccessibilityMediaObject::~AccessibilityMediaObject): (WebCore::AccessibilityMediaObject::create): (WebCore::AccessibilityMediaObject::computeAccessibilityIsIgnored const): (WebCore::AccessibilityMediaObject::mediaElement const): (WebCore::AccessibilityMediaObject::stringValue const): (WebCore::AccessibilityMediaObject::interactiveVideoDuration const): (WebCore::AccessibilityMediaObject::mediaSeek): (WebCore::AccessibilityMediaObject::toggleMute): (WebCore::AccessibilityMediaObject::increment): (WebCore::AccessibilityMediaObject::decrement): (WebCore::AccessibilityMediaObject::press): (WebCore::AccessibilityMediaObject::hasControlsAttributeSet const): (WebCore::AccessibilityMediaObject::isPlaying const): (WebCore::AccessibilityMediaObject::isMuted const): (WebCore::AccessibilityMediaObject::isAutoplayEnabled const): (WebCore::AccessibilityMediaObject::isPlayingInline const): (WebCore::AccessibilityMediaObject::enterFullscreen const): * accessibility/AccessibilityMediaObject.h: Added. * accessibility/AccessibilityObject.cpp: * accessibility/AccessibilityObject.h: (WebCore::AccessibilityObject::isMediaObject const): * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: (-[WebAccessibilityObjectWrapper accessibilityIsWebInteractiveVideo]): (-[WebAccessibilityObjectWrapper interactiveVideoDescription]): (-[WebAccessibilityObjectWrapper accessibilityIsMediaPlaying]): (-[WebAccessibilityObjectWrapper accessibilityIsMediaMuted]): (-[WebAccessibilityObjectWrapper accessibilityToggleMuteForMedia]): (-[WebAccessibilityObjectWrapper accessibilityVideoEnterFullscreen]): (-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]): (-[WebAccessibilityObjectWrapper stringValueShouldBeUsedInLabel]): (-[WebAccessibilityObjectWrapper accessibilityLabel]): LayoutTests: * accessibility/ios-simulator/video-elements-ios-expected.txt: Added. * accessibility/ios-simulator/video-elements-ios.html: Added. Canonical link: https://commits.webkit.org/194162@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@222887 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-10-04 23:43:13 +00:00
var video2 = accessibilityController.accessibleElementById("video2");
shouldBeFalse("video2.isIgnored");
AX: Make video objects accessible on iOS https://bugs.webkit.org/show_bug.cgi?id=177788 <rdar://problem/34778028> Reviewed by Chris Fleizach. Source/WebCore: Exposed certain <video> elements on iOS: 1. If they have no controls attribute set and have playsinline attribute set, that means normally there are custom controls provided. 2. Without autoplay attribute set. From iOS 10, with the motivation to improve performace by replacing GIF with <video>, elements will now honor the autoplay attribute if they have no audio. So normally those <video> elements are not interactive. Also provided functions to let iOS users interact with the video elements: - Play/Pause: accessibilityActivate - Fast forward: accessibilityIncrement - Rewind: accessibilityDecrement Test: accessibility/ios-simulator/video-elements-ios.html * WebCore.xcodeproj/project.pbxproj: * accessibility/AXObjectCache.cpp: (WebCore::createFromRenderer): * accessibility/AccessibilityMediaObject.cpp: Added. (WebCore::AccessibilityMediaObject::AccessibilityMediaObject): (WebCore::AccessibilityMediaObject::~AccessibilityMediaObject): (WebCore::AccessibilityMediaObject::create): (WebCore::AccessibilityMediaObject::computeAccessibilityIsIgnored const): (WebCore::AccessibilityMediaObject::mediaElement const): (WebCore::AccessibilityMediaObject::stringValue const): (WebCore::AccessibilityMediaObject::interactiveVideoDuration const): (WebCore::AccessibilityMediaObject::mediaSeek): (WebCore::AccessibilityMediaObject::toggleMute): (WebCore::AccessibilityMediaObject::increment): (WebCore::AccessibilityMediaObject::decrement): (WebCore::AccessibilityMediaObject::press): (WebCore::AccessibilityMediaObject::hasControlsAttributeSet const): (WebCore::AccessibilityMediaObject::isPlaying const): (WebCore::AccessibilityMediaObject::isMuted const): (WebCore::AccessibilityMediaObject::isAutoplayEnabled const): (WebCore::AccessibilityMediaObject::isPlayingInline const): (WebCore::AccessibilityMediaObject::enterFullscreen const): * accessibility/AccessibilityMediaObject.h: Added. * accessibility/AccessibilityObject.cpp: * accessibility/AccessibilityObject.h: (WebCore::AccessibilityObject::isMediaObject const): * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: (-[WebAccessibilityObjectWrapper accessibilityIsWebInteractiveVideo]): (-[WebAccessibilityObjectWrapper interactiveVideoDescription]): (-[WebAccessibilityObjectWrapper accessibilityIsMediaPlaying]): (-[WebAccessibilityObjectWrapper accessibilityIsMediaMuted]): (-[WebAccessibilityObjectWrapper accessibilityToggleMuteForMedia]): (-[WebAccessibilityObjectWrapper accessibilityVideoEnterFullscreen]): (-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]): (-[WebAccessibilityObjectWrapper stringValueShouldBeUsedInLabel]): (-[WebAccessibilityObjectWrapper accessibilityLabel]): LayoutTests: * accessibility/ios-simulator/video-elements-ios-expected.txt: Added. * accessibility/ios-simulator/video-elements-ios.html: Added. Canonical link: https://commits.webkit.org/194162@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@222887 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-10-04 23:43:13 +00:00
vid.oncanplaythrough = function() {
shouldBe("video.description", "'AXLabel: Video label1, 9 seconds'");
AX: Make video objects accessible on iOS https://bugs.webkit.org/show_bug.cgi?id=177788 <rdar://problem/34778028> Reviewed by Chris Fleizach. Source/WebCore: Exposed certain <video> elements on iOS: 1. If they have no controls attribute set and have playsinline attribute set, that means normally there are custom controls provided. 2. Without autoplay attribute set. From iOS 10, with the motivation to improve performace by replacing GIF with <video>, elements will now honor the autoplay attribute if they have no audio. So normally those <video> elements are not interactive. Also provided functions to let iOS users interact with the video elements: - Play/Pause: accessibilityActivate - Fast forward: accessibilityIncrement - Rewind: accessibilityDecrement Test: accessibility/ios-simulator/video-elements-ios.html * WebCore.xcodeproj/project.pbxproj: * accessibility/AXObjectCache.cpp: (WebCore::createFromRenderer): * accessibility/AccessibilityMediaObject.cpp: Added. (WebCore::AccessibilityMediaObject::AccessibilityMediaObject): (WebCore::AccessibilityMediaObject::~AccessibilityMediaObject): (WebCore::AccessibilityMediaObject::create): (WebCore::AccessibilityMediaObject::computeAccessibilityIsIgnored const): (WebCore::AccessibilityMediaObject::mediaElement const): (WebCore::AccessibilityMediaObject::stringValue const): (WebCore::AccessibilityMediaObject::interactiveVideoDuration const): (WebCore::AccessibilityMediaObject::mediaSeek): (WebCore::AccessibilityMediaObject::toggleMute): (WebCore::AccessibilityMediaObject::increment): (WebCore::AccessibilityMediaObject::decrement): (WebCore::AccessibilityMediaObject::press): (WebCore::AccessibilityMediaObject::hasControlsAttributeSet const): (WebCore::AccessibilityMediaObject::isPlaying const): (WebCore::AccessibilityMediaObject::isMuted const): (WebCore::AccessibilityMediaObject::isAutoplayEnabled const): (WebCore::AccessibilityMediaObject::isPlayingInline const): (WebCore::AccessibilityMediaObject::enterFullscreen const): * accessibility/AccessibilityMediaObject.h: Added. * accessibility/AccessibilityObject.cpp: * accessibility/AccessibilityObject.h: (WebCore::AccessibilityObject::isMediaObject const): * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: (-[WebAccessibilityObjectWrapper accessibilityIsWebInteractiveVideo]): (-[WebAccessibilityObjectWrapper interactiveVideoDescription]): (-[WebAccessibilityObjectWrapper accessibilityIsMediaPlaying]): (-[WebAccessibilityObjectWrapper accessibilityIsMediaMuted]): (-[WebAccessibilityObjectWrapper accessibilityToggleMuteForMedia]): (-[WebAccessibilityObjectWrapper accessibilityVideoEnterFullscreen]): (-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]): (-[WebAccessibilityObjectWrapper stringValueShouldBeUsedInLabel]): (-[WebAccessibilityObjectWrapper accessibilityLabel]): LayoutTests: * accessibility/ios-simulator/video-elements-ios-expected.txt: Added. * accessibility/ios-simulator/video-elements-ios.html: Added. Canonical link: https://commits.webkit.org/194162@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@222887 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-10-04 23:43:13 +00:00
shouldBe("video.stringValue", "'AXValue: 0 seconds'");
// Test play and pause.
shouldBeTrue("vid.paused");
video.press();
shouldBeFalse("vid.paused");
video.press();
shouldBeTrue("vid.paused");
// Test fast forward and rewind.
video.increment();
video.increment();
shouldBe("video.stringValue", "'AXValue: 2 seconds'");
video.decrement();
shouldBe("video.stringValue", "'AXValue: 1 seconds'");
finishJSTest();
};
vid.src = "../../media/content/counting.mp4";
AX: Make video objects accessible on iOS https://bugs.webkit.org/show_bug.cgi?id=177788 <rdar://problem/34778028> Reviewed by Chris Fleizach. Source/WebCore: Exposed certain <video> elements on iOS: 1. If they have no controls attribute set and have playsinline attribute set, that means normally there are custom controls provided. 2. Without autoplay attribute set. From iOS 10, with the motivation to improve performace by replacing GIF with <video>, elements will now honor the autoplay attribute if they have no audio. So normally those <video> elements are not interactive. Also provided functions to let iOS users interact with the video elements: - Play/Pause: accessibilityActivate - Fast forward: accessibilityIncrement - Rewind: accessibilityDecrement Test: accessibility/ios-simulator/video-elements-ios.html * WebCore.xcodeproj/project.pbxproj: * accessibility/AXObjectCache.cpp: (WebCore::createFromRenderer): * accessibility/AccessibilityMediaObject.cpp: Added. (WebCore::AccessibilityMediaObject::AccessibilityMediaObject): (WebCore::AccessibilityMediaObject::~AccessibilityMediaObject): (WebCore::AccessibilityMediaObject::create): (WebCore::AccessibilityMediaObject::computeAccessibilityIsIgnored const): (WebCore::AccessibilityMediaObject::mediaElement const): (WebCore::AccessibilityMediaObject::stringValue const): (WebCore::AccessibilityMediaObject::interactiveVideoDuration const): (WebCore::AccessibilityMediaObject::mediaSeek): (WebCore::AccessibilityMediaObject::toggleMute): (WebCore::AccessibilityMediaObject::increment): (WebCore::AccessibilityMediaObject::decrement): (WebCore::AccessibilityMediaObject::press): (WebCore::AccessibilityMediaObject::hasControlsAttributeSet const): (WebCore::AccessibilityMediaObject::isPlaying const): (WebCore::AccessibilityMediaObject::isMuted const): (WebCore::AccessibilityMediaObject::isAutoplayEnabled const): (WebCore::AccessibilityMediaObject::isPlayingInline const): (WebCore::AccessibilityMediaObject::enterFullscreen const): * accessibility/AccessibilityMediaObject.h: Added. * accessibility/AccessibilityObject.cpp: * accessibility/AccessibilityObject.h: (WebCore::AccessibilityObject::isMediaObject const): * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: (-[WebAccessibilityObjectWrapper accessibilityIsWebInteractiveVideo]): (-[WebAccessibilityObjectWrapper interactiveVideoDescription]): (-[WebAccessibilityObjectWrapper accessibilityIsMediaPlaying]): (-[WebAccessibilityObjectWrapper accessibilityIsMediaMuted]): (-[WebAccessibilityObjectWrapper accessibilityToggleMuteForMedia]): (-[WebAccessibilityObjectWrapper accessibilityVideoEnterFullscreen]): (-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]): (-[WebAccessibilityObjectWrapper stringValueShouldBeUsedInLabel]): (-[WebAccessibilityObjectWrapper accessibilityLabel]): LayoutTests: * accessibility/ios-simulator/video-elements-ios-expected.txt: Added. * accessibility/ios-simulator/video-elements-ios.html: Added. Canonical link: https://commits.webkit.org/194162@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@222887 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-10-04 23:43:13 +00:00
}
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>