Changeset 278618 in webkit
- Timestamp:
- Jun 8, 2021, 10:27:33 AM (5 years ago)
- Location:
- trunk
- Files:
-
- 8 added
- 21 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/TestExpectations (modified) (1 diff)
-
LayoutTests/media/modern-media-controls/overflow-button (added)
-
LayoutTests/media/modern-media-controls/overflow-button/overflow-button-expected.txt (added)
-
LayoutTests/media/modern-media-controls/overflow-button/overflow-button.html (added)
-
LayoutTests/media/modern-media-controls/overflow-support (added)
-
LayoutTests/media/modern-media-controls/overflow-support/chapters-expected.txt (added)
-
LayoutTests/media/modern-media-controls/overflow-support/chapters.html (added)
-
LayoutTests/media/modern-media-controls/overflow-support/playback-speed-expected.txt (added)
-
LayoutTests/media/modern-media-controls/overflow-support/playback-speed.html (added)
-
LayoutTests/platform/mac-wk2/TestExpectations (modified) (1 diff)
-
Source/WTF/ChangeLog (modified) (1 diff)
-
Source/WTF/wtf/PlatformEnableCocoa.h (modified) (1 diff)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp (modified) (7 diffs)
-
Source/WebCore/Modules/modern-media-controls/media/overflow-support.js (modified) (2 diffs)
-
Source/WebCore/en.lproj/Localizable.strings (modified) (2 diffs)
-
Source/WebCore/html/HTMLMediaElement.cpp (modified) (1 diff)
-
Source/WebCore/html/HTMLMediaElement.h (modified) (1 diff)
-
Source/WebCore/rendering/RenderTheme.h (modified) (1 diff)
-
Source/WebCore/rendering/RenderThemeAdwaita.cpp (modified) (1 diff)
-
Source/WebCore/rendering/RenderThemeAdwaita.h (modified) (1 diff)
-
Source/WebCore/rendering/RenderThemeCocoa.h (modified) (2 diffs)
-
Source/WebCore/rendering/RenderThemeCocoa.mm (modified) (4 diffs)
-
Source/WebCore/rendering/RenderThemeWin.cpp (modified) (1 diff)
-
Source/WebCore/rendering/RenderThemeWin.h (modified) (1 diff)
-
Source/WebCore/testing/Internals.cpp (modified) (1 diff)
-
Source/WebCore/testing/Internals.h (modified) (1 diff)
-
Source/WebCore/testing/Internals.idl (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r278610 r278618 1 2021-06-08 Devin Rousso <drousso@apple.com> 2 3 [Modern Media Controls] upstream new features 4 https://bugs.webkit.org/show_bug.cgi?id=226736 5 <rdar://problem/78957464> 6 7 Reviewed by Eric Carlson. 8 9 * media/modern-media-controls/overflow-button/overflow-button.html: Added. 10 * media/modern-media-controls/overflow-button/overflow-button-expected.txt: Added. 11 * media/modern-media-controls/overflow-support/chapters.html: Added. 12 * media/modern-media-controls/overflow-support/chapters-expected.txt: Added. 13 * media/modern-media-controls/overflow-support/playback-speed.html: Added. 14 * media/modern-media-controls/overflow-support/playback-speed-expected.txt: Added. 15 16 * TestExpectations: 17 * platform/mac-wk2/TestExpectations: 18 1 19 2021-06-08 Antoine Quint <graouts@webkit.org> 2 20 -
trunk/LayoutTests/TestExpectations
r278575 r278618 66 66 scrollingcoordinator [ Skip ] 67 67 media/ios [ Skip ] 68 media/modern-media-controls/overflow-support [ Skip ] 68 69 media/modern-media-controls/tracks-support [ Skip ] 69 70 fast/text-autosizing [ Skip ] -
trunk/LayoutTests/platform/mac-wk2/TestExpectations
r277764 r278618 20 20 fast/web-share [ Pass ] 21 21 imported/w3c/web-platform-tests/web-share [ Pass ] 22 media/modern-media-controls/overflow-support [ Pass ] 22 23 media/modern-media-controls/tracks-support [ Pass ] 23 24 scrollingcoordinator [ Pass ] -
trunk/Source/WTF/ChangeLog
r278616 r278618 1 2021-06-08 Devin Rousso <drousso@apple.com> 2 3 [Modern Media Controls] upstream new features 4 https://bugs.webkit.org/show_bug.cgi?id=226736 5 <rdar://problem/78957464> 6 7 Reviewed by Eric Carlson. 8 9 - bring the "Audio"/"Languages" tracks menu to iOS 10 - add a new "Playback Speed" menu on iOS and macOS in the overflow menu 11 - add support for showing the most relevant `<track kind="chapters">` in the overflow menu 12 13 * wtf/PlatformEnableCocoa.h: 14 1 15 2021-06-08 Sam Weinig <weinig@apple.com> 2 16 -
trunk/Source/WTF/wtf/PlatformEnableCocoa.h
r278575 r278618 322 322 #endif 323 323 324 #if !defined(ENABLE_MEDIA_CONTROLS_CONTEXT_MENUS) && PLATFORM(MAC)324 #if !defined(ENABLE_MEDIA_CONTROLS_CONTEXT_MENUS) && (PLATFORM(MAC) || ((PLATFORM(IOS) || PLATFORM(MACCATALYST)) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 150000)) 325 325 #define ENABLE_MEDIA_CONTROLS_CONTEXT_MENUS 1 326 326 #endif -
trunk/Source/WebCore/ChangeLog
r278614 r278618 1 2021-06-08 Devin Rousso <drousso@apple.com> 2 3 [Modern Media Controls] upstream new features 4 https://bugs.webkit.org/show_bug.cgi?id=226736 5 <rdar://problem/78957464> 6 7 Reviewed by Eric Carlson. 8 9 - bring the "Audio"/"Languages" tracks menu to iOS 10 - add a new "Playback Speed" menu in the overflow menu on iOS and macOS 11 - add support for showing the most relevant `<track kind="chapters">` in the overflow menu on iOS and macOS 12 13 Tests: media/modern-media-controls/overflow-button/overflow-button.html 14 media/modern-media-controls/overflow-support/chapters.html 15 media/modern-media-controls/overflow-support/playback-speed.html 16 17 * Modules/mediacontrols/MediaControlsHost.cpp: 18 (WebCore::MediaControlsHost::showMediaControlsContextMenu): 19 * Modules/modern-media-controls/media/overflow-support.js: 20 (OverflowSupport.prototype.get mediaEvents): 21 (OverflowSupport.prototype.get tracksToMonitor): 22 (OverflowSupport.prototype.syncControl): 23 * en.lproj/Localizable.strings: 24 25 * rendering/RenderTheme.h: 26 (WebCore::RenderTheme::mediaControlsScripts): 27 * rendering/RenderThemeAdwaita.cpp: 28 (WebCore::RenderThemeAdwaita::mediaControlsScripts): 29 * rendering/RenderThemeAdwaita.h: 30 * rendering/RenderThemeCocoa.h: 31 * rendering/RenderThemeCocoa.mm: 32 (WebCore::RenderThemeCocoa::purgeCaches): 33 (WebCore::RenderThemeCocoa::mediaControlsScripts): 34 * rendering/RenderThemeWin.h: 35 * rendering/RenderThemeWin.cpp: 36 (WebCore::RenderThemeWin::mediaControlsScripts): 37 Drop the "additional script" and lower the inline capacity of the `Vector`. 38 39 * testing/Internals.idl: 40 * testing/Internals.h: 41 * testing/Internals.cpp: 42 (WebCore::Internals::setMediaControlsHidePlaybackRates): Added. 43 * html/HTMLMediaElement.h: 44 * html/HTMLMediaElement.cpp: 45 (WebCore::HTMLMediaElement::setMediaControlsHidePlaybackRates): Added. 46 Since Playback Rates is always shown, provide a way for tests to turn it off. 47 1 48 2021-06-08 Devin Rousso <drousso@apple.com> 2 49 -
trunk/Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp
r278253 r278618 56 56 #include "RenderTheme.h" 57 57 #include "TextTrack.h" 58 #include "TextTrackCueList.h" 58 59 #include "TextTrackList.h" 59 60 #include "UserGestureIndicator.h" 61 #include "VTTCue.h" 60 62 #include "VoidCallback.h" 61 63 #include <JavaScriptCore/JSCJSValueInlines.h> … … 65 67 #include <wtf/UUID.h> 66 68 #include <wtf/Variant.h> 67 68 #if USE(APPLE_INTERNAL_SDK)69 #include <WebKitAdditions/MediaControlsHostAdditions.cpp>70 #endif71 69 72 70 namespace WebCore { … … 359 357 #if ENABLE(MEDIA_CONTROLS_CONTEXT_MENUS) 360 358 361 #if !defined(MediaControlsHostAdditions_showMediaControlsContextMenu_MenuData)362 #define MediaControlsHostAdditions_showMediaControlsContextMenu_MenuData363 #endif364 365 #if !defined(MediaControlsHostAdditions_showMediaControlsContextMenu_MenuData_switchOn)366 #define MediaControlsHostAdditions_showMediaControlsContextMenu_MenuData_switchOn367 #endif368 369 359 #if ENABLE(CONTEXT_MENUS) && USE(ACCESSIBILITY_CONTEXT_MENUS) 370 360 class MediaControlsContextMenuProvider final : public ContextMenuProvider { … … 507 497 #endif // ENABLE(VIDEO_PRESENTATION_MODE) 508 498 499 enum class PlaybackSpeed { 500 x0_5, 501 x1_0, 502 x1_25, 503 x1_5, 504 x2_0, 505 }; 506 509 507 using MenuData = Variant< 510 508 #if ENABLE(VIDEO_PRESENTATION_MODE) … … 512 510 #endif // ENABLE(VIDEO_PRESENTATION_MODE) 513 511 RefPtr<AudioTrack>, 514 RefPtr<TextTrack> 515 MediaControlsHostAdditions_showMediaControlsContextMenu_MenuData 512 RefPtr<TextTrack>, 513 RefPtr<VTTCue>, 514 PlaybackSpeed 516 515 >; 517 516 HashMap<MenuItemIdentifier, MenuData> idMap; … … 587 586 } 588 587 589 #if defined(MediaControlsHostAdditions_showMediaControlsContextMenu_options) 590 MediaControlsHostAdditions_showMediaControlsContextMenu_options 591 #endif 588 if (optionsJSONObject->getBoolean("includeChapters"_s).value_or(false)) { 589 if (auto* textTracks = mediaElement.textTracks(); textTracks && textTracks->length()) { 590 auto& captionPreferences = page->group().captionPreferences(); 591 592 for (auto& textTrack : captionPreferences.sortedTrackListForMenu(textTracks, { TextTrack::Kind::Chapters })) { 593 Vector<MenuItem> chapterMenuItems; 594 595 if (auto* cues = textTrack->cues()) { 596 for (unsigned i = 0; i < cues->length(); ++i) { 597 auto* cue = cues->item(i); 598 if (!is<VTTCue>(cue)) 599 continue; 600 601 auto& vttCue = downcast<VTTCue>(*cue); 602 chapterMenuItems.append(createMenuItem(makeRefPtr(vttCue), vttCue.text())); 603 } 604 } 605 606 if (!chapterMenuItems.isEmpty()) { 607 items.append(createSubmenu(captionPreferences.displayNameForTrack(textTrack.get()), "list.bullet"_s, WTFMove(chapterMenuItems))); 608 609 /* Only show the first valid chapters track. */ 610 break; 611 } 612 } 613 } 614 } 615 616 if (optionsJSONObject->getBoolean("includePlaybackRates"_s).value_or(false)) { 617 auto playbackRate = mediaElement.playbackRate(); 618 619 items.append(createSubmenu(WEB_UI_STRING_KEY("Playback Speed", "Playback Speed (Media Controls Menu)", "Playback Speed media controls context menu title"), "speedometer"_s, { 620 createMenuItem(PlaybackSpeed::x0_5, WEB_UI_STRING_KEY("0.5×", "0.5× (Media Controls Menu Playback Speed)", "0.5× media controls context menu playback speed label"), playbackRate == 0.5), 621 createMenuItem(PlaybackSpeed::x1_0, WEB_UI_STRING_KEY("1×", "1× (Media Controls Menu Playback Speed)", "1× media controls context menu playback speed label"), playbackRate == 1.0), 622 createMenuItem(PlaybackSpeed::x1_25, WEB_UI_STRING_KEY("1.25×", "1.25× (Media Controls Menu Playback Speed)", "1.25× media controls context menu playback speed label"), playbackRate == 1.25), 623 createMenuItem(PlaybackSpeed::x1_5, WEB_UI_STRING_KEY("1.5×", "1.5× (Media Controls Menu Playback Speed)", "1.5× media controls context menu playback speed label"), playbackRate == 1.5), 624 createMenuItem(PlaybackSpeed::x2_0, WEB_UI_STRING_KEY("2×", "2× (Media Controls Menu Playback Speed)", "2× media controls context menu playback speed label"), playbackRate == 2.0), 625 })); 626 } 592 627 593 628 #if ENABLE(CONTEXT_MENUS) && USE(ACCESSIBILITY_CONTEXT_MENUS) … … 646 681 } 647 682 mediaElement.setSelectedTextTrack(selectedTextTrack.get()); 683 }, 684 [&] (RefPtr<VTTCue>& cue) { 685 mediaElement.setCurrentTime(cue->startMediaTime()); 686 }, 687 [&] (PlaybackSpeed playbackSpeed) { 688 switch (playbackSpeed) { 689 case PlaybackSpeed::x0_5: 690 mediaElement.setDefaultPlaybackRate(0.5); 691 mediaElement.setPlaybackRate(0.5); 692 return; 693 694 case PlaybackSpeed::x1_0: 695 mediaElement.setDefaultPlaybackRate(1.0); 696 mediaElement.setPlaybackRate(1.0); 697 return; 698 699 case PlaybackSpeed::x1_25: 700 mediaElement.setDefaultPlaybackRate(1.25); 701 mediaElement.setPlaybackRate(1.25); 702 return; 703 704 case PlaybackSpeed::x1_5: 705 mediaElement.setDefaultPlaybackRate(1.5); 706 mediaElement.setPlaybackRate(1.5); 707 return; 708 709 case PlaybackSpeed::x2_0: 710 mediaElement.setDefaultPlaybackRate(2.0); 711 mediaElement.setPlaybackRate(2.0); 712 return; 713 } 714 715 ASSERT_NOT_REACHED(); 648 716 } 649 MediaControlsHostAdditions_showMediaControlsContextMenu_MenuData_switchOn650 717 ); 718 651 719 }; 652 720 -
trunk/Source/WebCore/Modules/modern-media-controls/media/overflow-support.js
r273191 r278618 31 31 get mediaEvents() 32 32 { 33 let mediaEvents = []; 34 window["WebKitAdditions.OverflowSupport.prototype.get_mediaEvents"]?.(this, mediaEvents); 35 return mediaEvents; 33 return ["loadstart", "loadedmetadata"]; 36 34 } 37 35 38 36 get tracksToMonitor() 39 37 { 40 let tracksToMonitor = []; 41 window["WebKitAdditions.OverflowSupport.prototype.get_tracksToMonitor"]?.(this, tracksToMonitor); 42 return tracksToMonitor; 38 return [this.mediaController.media.textTracks]; 43 39 } 44 40 … … 58 54 59 55 let defaultContextMenuOptions = {}; 60 window["WebKitAdditions.OverflowSupport.prototype.syncControl"]?.(this, defaultContextMenuOptions); 56 57 if (!this.mediaController.hidePlaybackRates && (!window.MediaStream || !(this.mediaController.media.srcObject instanceof MediaStream))) 58 defaultContextMenuOptions.includePlaybackRates = true; 59 60 for (let textTrack of this.mediaController.media.textTracks) { 61 if (textTrack.kind !== "chapters") 62 continue; 63 64 if (textTrack.mode === "disabled") 65 textTrack.mode = "hidden"; 66 defaultContextMenuOptions.includeChapters = true; 67 } 68 61 69 this.control.defaultContextMenuOptions = defaultContextMenuOptions; 62 70 } -
trunk/Source/WebCore/en.lproj/Localizable.strings
r278586 r278618 98 98 "0 Items" = "0 Items"; 99 99 100 /* 0.5× media controls context menu playback speed label */ 101 "0.5× (Media Controls Menu Playback Speed)" = "0.5×"; 102 100 103 /* Present the element <select multiple> when a single <option> is selected (iOS only) */ 101 104 "1 Item" = "1 Item"; 102 105 106 /* 1× media controls context menu playback speed label */ 107 "1× (Media Controls Menu Playback Speed)" = "1×"; 108 109 /* 1.25× media controls context menu playback speed label */ 110 "1.25× (Media Controls Menu Playback Speed)" = "1.25×"; 111 112 /* 1.5× media controls context menu playback speed label */ 113 "1.5× (Media Controls Menu Playback Speed)" = "1.5×"; 114 103 115 /* Option in segmented control for choosing list type in text editing */ 104 116 "1. 2. 3." = "1. 2. 3."; 105 117 118 /* 2× media controls context menu playback speed label */ 119 "2× (Media Controls Menu Playback Speed)" = "2×"; 120 106 121 /* Menu item title for KEYGEN pop-up menu */ 107 122 "2048 (High Grade)" = "2048 (High Grade)"; … … 707 722 "Play" = "Play"; 708 723 724 /* Playback Speed media controls context menu title */ 725 "Playback Speed (Media Controls Menu)" = "Playback Speed"; 726 709 727 /* accessibility help text for enter full screen button */ 710 728 "Play movie in full screen mode" = "Play movie in full screen mode"; -
trunk/Source/WebCore/html/HTMLMediaElement.cpp
r278580 r278618 7491 7491 } 7492 7492 7493 void HTMLMediaElement::setMediaControlsHidePlaybackRates(bool hidePlaybackRates) 7494 { 7495 setControllerJSProperty("hidePlaybackRates", JSC::jsBoolean(hidePlaybackRates)); 7496 } 7497 7493 7498 unsigned long long HTMLMediaElement::fileSize() const 7494 7499 { -
trunk/Source/WebCore/html/HTMLMediaElement.h
r278580 r278618 495 495 WEBCORE_EXPORT String getCurrentMediaControlsStatus(); 496 496 WEBCORE_EXPORT void setMediaControlsMaximumRightContainerButtonCountOverride(size_t); 497 WEBCORE_EXPORT void setMediaControlsHidePlaybackRates(bool); 497 498 MediaControlsHost* mediaControlsHost() { return m_mediaControlsHost.get(); } 498 499 -
trunk/Source/WebCore/rendering/RenderTheme.h
r275426 r278618 87 87 virtual String mediaControlsStyleSheet() { return String(); } 88 88 virtual String extraMediaControlsStyleSheet() { return String(); } 89 virtual Vector<String, 3> mediaControlsScripts() { return { }; }89 virtual Vector<String, 2> mediaControlsScripts() { return { }; } 90 90 #if ENABLE(MODERN_MEDIA_CONTROLS) 91 91 virtual String mediaControlsBase64StringForIconNameAndType(const String&, const String&) { return String(); } -
trunk/Source/WebCore/rendering/RenderThemeAdwaita.cpp
r275161 r278618 173 173 } 174 174 175 Vector<String, 3> RenderThemeAdwaita::mediaControlsScripts()175 Vector<String, 2> RenderThemeAdwaita::mediaControlsScripts() 176 176 { 177 177 return { StringImpl::createWithoutCopying(mediaControlsAdwaitaJavaScript, sizeof(mediaControlsAdwaitaJavaScript)) }; -
trunk/Source/WebCore/rendering/RenderThemeAdwaita.h
r274607 r278618 38 38 #if ENABLE(VIDEO) 39 39 String extraMediaControlsStyleSheet() final; 40 Vector<String, 3> mediaControlsScripts() final;40 Vector<String, 2> mediaControlsScripts() final; 41 41 #endif 42 42 -
trunk/Source/WebCore/rendering/RenderThemeCocoa.h
r276428 r278618 54 54 #if ENABLE(VIDEO) && ENABLE(MODERN_MEDIA_CONTROLS) 55 55 String mediaControlsStyleSheet() override; 56 Vector<String, 3> mediaControlsScripts() override;56 Vector<String, 2> mediaControlsScripts() override; 57 57 String mediaControlsBase64StringForIconNameAndType(const String&, const String&) override; 58 58 String mediaControlsFormattedStringForDuration(double) override; … … 60 60 String m_mediaControlsLocalizedStringsScript; 61 61 String m_mediaControlsScript; 62 String m_mediaControlsAdditionalScript;63 62 String m_mediaControlsStyleSheet; 64 63 RetainPtr<NSDateComponentsFormatter> m_durationFormatter; -
trunk/Source/WebCore/rendering/RenderThemeCocoa.mm
r274997 r278618 51 51 #endif 52 52 53 #if USE(APPLE_INTERNAL_SDK)54 #include <WebKitAdditions/RenderThemeCocoaAdditions.cpp>55 #endif56 57 53 @interface WebCoreRenderThemeBundle : NSObject 58 54 @end … … 73 69 m_mediaControlsLocalizedStringsScript.clearImplIfNotShared(); 74 70 m_mediaControlsScript.clearImplIfNotShared(); 75 m_mediaControlsAdditionalScript.clearImplIfNotShared();76 71 m_mediaControlsStyleSheet.clearImplIfNotShared(); 77 72 #endif // ENABLE(VIDEO) && ENABLE(MODERN_MEDIA_CONTROLS) … … 189 184 } 190 185 191 Vector<String, 3> RenderThemeCocoa::mediaControlsScripts()186 Vector<String, 2> RenderThemeCocoa::mediaControlsScripts() 192 187 { 193 188 // FIXME: Localized strings are not worth having a script. We should make it JSON data etc. instead. … … 200 195 m_mediaControlsScript = StringImpl::createWithoutCopying(ModernMediaControlsJavaScript, sizeof(ModernMediaControlsJavaScript)); 201 196 202 #if defined(RenderThemeCocoaAdditions_mediaControlsAdditionalScript)203 if (m_mediaControlsAdditionalScript.isEmpty())204 m_mediaControlsAdditionalScript = String(RenderThemeCocoaAdditions_mediaControlsAdditionalScript);205 #endif206 207 197 return { 208 198 m_mediaControlsLocalizedStringsScript, 209 199 m_mediaControlsScript, 210 m_mediaControlsAdditionalScript,211 200 }; 212 201 } -
trunk/Source/WebCore/rendering/RenderThemeWin.cpp
r278521 r278618 1080 1080 } 1081 1081 1082 Vector<String, 3> RenderThemeWin::mediaControlsScripts()1082 Vector<String, 2> RenderThemeWin::mediaControlsScripts() 1083 1083 { 1084 1084 #if ENABLE(MEDIA_CONTROLS_SCRIPT) -
trunk/Source/WebCore/rendering/RenderThemeWin.h
r274607 r278618 122 122 #if ENABLE(VIDEO) 123 123 String mediaControlsStyleSheet() override; 124 Vector<String, 3> mediaControlsScripts() override;124 Vector<String, 2> mediaControlsScripts() override; 125 125 #endif 126 126 -
trunk/Source/WebCore/testing/Internals.cpp
r278575 r278618 4823 4823 } 4824 4824 4825 void Internals::setMediaControlsHidePlaybackRates(HTMLMediaElement& mediaElement, bool hidePlaybackRates) 4826 { 4827 mediaElement.setMediaControlsHidePlaybackRates(hidePlaybackRates); 4828 } 4829 4825 4830 #endif // ENABLE(VIDEO) 4826 4831 -
trunk/Source/WebCore/testing/Internals.h
r278359 r278618 753 753 String getCurrentMediaControlsStatusForElement(HTMLMediaElement&); 754 754 void setMediaControlsMaximumRightContainerButtonCountOverride(HTMLMediaElement&, size_t); 755 void setMediaControlsHidePlaybackRates(HTMLMediaElement&, bool); 755 756 #endif // ENABLE(VIDEO) 756 757 -
trunk/Source/WebCore/testing/Internals.idl
r278359 r278618 786 786 [Conditional=VIDEO] DOMString getCurrentMediaControlsStatusForElement(HTMLMediaElement element); 787 787 [Conditional=VIDEO] undefined setMediaControlsMaximumRightContainerButtonCountOverride(HTMLMediaElement element, unsigned long count); 788 [Conditional=VIDEO] undefined setMediaControlsHidePlaybackRates(HTMLMediaElement element, boolean hidePlaybackRates); 788 789 789 790 DOMString userVisibleString(DOMURL url);
Note:
See TracChangeset
for help on using the changeset viewer.