Changeset 207468 in webkit
- Timestamp:
- Oct 18, 2016 10:13:53 AM (8 years ago)
- Location:
- trunk
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r207464 r207468 1 2016-10-18 Chris Dumez <cdumez@apple.com> 2 3 Update TrackEvent to stop using legacy [ConstructorTemplate=Event] 4 https://bugs.webkit.org/show_bug.cgi?id=163580 5 6 Reviewed by Sam Weinig. 7 8 Update existing test to reflect behavior change. We now correctly throw a TypeError 9 when passing an unexpected track object type to the TrackEvent constructor. 10 11 * fast/events/constructors/track-event-constructor-expected.txt: 12 * fast/events/constructors/track-event-constructor.html: 13 1 14 2016-10-18 Nael Ouedraogo <nael.ouedraogo@crf.canon.fr> 2 15 -
trunk/LayoutTests/fast/events/constructors/track-event-constructor-expected.txt
r99261 r207468 15 15 PASS new TrackEvent('TrackEvent', { bubbles: true, cancelable: true }).track is null 16 16 17 *** Bubbles and cancelable true, invalid track *** 18 PASS new TrackEvent('TrackEvent', { bubbles: true, cancelable: true, track: HTMLTrackElement }).bubbles is true 19 PASS new TrackEvent('TrackEvent', { bubbles: true, cancelable: true, track: HTMLTrackElement }).cancelable is true 20 PASS new TrackEvent('TrackEvent', { bubbles: true, cancelable: true, track: HTMLTrackElement }).track is null 21 22 *** Initialize 'track' with a invalid values *** 23 PASS new TrackEvent('TrackEvent', { track: 10 }).track is null 24 PASS new TrackEvent('TrackEvent', { track: 'string' }).track is null 25 PASS new TrackEvent('TrackEvent', { track: emptyObject }).track is null 26 PASS new TrackEvent('TrackEvent', { track: document }).track is null 17 *** Invalid track *** 18 PASS new TrackEvent('TrackEvent', { track: HTMLTrackElement }) threw exception TypeError: Type error. 19 PASS new TrackEvent('TrackEvent', { track: 10 }) threw exception TypeError: Type error. 20 PASS new TrackEvent('TrackEvent', { track: 'string' }) threw exception TypeError: Type error. 21 PASS new TrackEvent('TrackEvent', { track: emptyObject }) threw exception TypeError: Type error. 22 PASS new TrackEvent('TrackEvent', { track: document }) threw exception TypeError: Type error. 27 23 28 24 *** Bubbles and cancelable true, valid track *** 29 PASS new TrackEvent('TrackEvent', { bubbles: true, cancelable: true, track: HTMLTrackElement}).bubbles is true30 PASS new TrackEvent('TrackEvent', { bubbles: true, cancelable: true, track: HTMLTrackElement}).cancelable is true25 PASS new TrackEvent('TrackEvent', { bubbles: true, cancelable: true, track: trackElement.track }).bubbles is true 26 PASS new TrackEvent('TrackEvent', { bubbles: true, cancelable: true, track: trackElement.track }).cancelable is true 31 27 PASS new TrackEvent('TrackEvent', { track: trackElement.track }).track is trackElement.track 32 28 -
trunk/LayoutTests/fast/events/constructors/track-event-constructor.html
r155267 r207468 27 27 shouldBeNull("new TrackEvent('TrackEvent', { bubbles: true, cancelable: true }).track"); 28 28 29 debug("<br>*** Bubbles and cancelable true, invalid track ***"); 30 shouldBe("new TrackEvent('TrackEvent', { bubbles: true, cancelable: true, track: HTMLTrackElement }).bubbles", "true"); 31 shouldBe("new TrackEvent('TrackEvent', { bubbles: true, cancelable: true, track: HTMLTrackElement }).cancelable", "true"); 32 shouldBeNull("new TrackEvent('TrackEvent', { bubbles: true, cancelable: true, track: HTMLTrackElement }).track"); 33 34 debug("<br>*** Initialize 'track' with a invalid values ***"); 35 shouldBeNull("new TrackEvent('TrackEvent', { track: 10 }).track"); 36 shouldBeNull("new TrackEvent('TrackEvent', { track: \'string\' }).track"); 29 debug("<br>*** Invalid track ***"); 30 shouldThrowErrorName("new TrackEvent('TrackEvent', { track: HTMLTrackElement })", "TypeError"); 31 shouldThrowErrorName("new TrackEvent('TrackEvent', { track: 10 })", "TypeError"); 32 shouldThrowErrorName("new TrackEvent('TrackEvent', { track: \'string\' })", "TypeError"); 37 33 emptyObject = { }; 38 should BeNull("new TrackEvent('TrackEvent', { track: emptyObject }).track");39 should BeNull("new TrackEvent('TrackEvent', { track: document }).track");34 shouldThrowErrorName("new TrackEvent('TrackEvent', { track: emptyObject })", "TypeError"); 35 shouldThrowErrorName("new TrackEvent('TrackEvent', { track: document })", "TypeError"); 40 36 41 37 debug("<br>*** Bubbles and cancelable true, valid track ***"); 42 shouldBe("new TrackEvent('TrackEvent', { bubbles: true, cancelable: true, track: HTMLTrackElement}).bubbles", "true");43 shouldBe("new TrackEvent('TrackEvent', { bubbles: true, cancelable: true, track: HTMLTrackElement}).cancelable", "true");38 shouldBe("new TrackEvent('TrackEvent', { bubbles: true, cancelable: true, track: trackElement.track }).bubbles", "true"); 39 shouldBe("new TrackEvent('TrackEvent', { bubbles: true, cancelable: true, track: trackElement.track }).cancelable", "true"); 44 40 shouldBe("new TrackEvent('TrackEvent', { track: trackElement.track }).track", "trackElement.track"); 45 41 -
trunk/LayoutTests/imported/w3c/ChangeLog
r207380 r207468 1 2016-10-18 Chris Dumez <cdumez@apple.com> 2 3 Update TrackEvent to stop using legacy [ConstructorTemplate=Event] 4 https://bugs.webkit.org/show_bug.cgi?id=163580 5 6 Reviewed by Sam Weinig. 7 8 Incorporate https://github.com/w3c/web-platform-tests/pull/3999 as the 9 test was incorrect. Rebaseline now that we are passing the test. 10 11 * web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/TrackEvent/constructor-expected.txt: 12 * web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/TrackEvent/constructor.html: 13 1 14 2016-10-15 Chris Dumez <cdumez@apple.com> 2 15 -
trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/TrackEvent/constructor-expected.txt
r189476 r207468 1 1 2 2 PASS TrackEvent constructor, one arg 3 FAIL TrackEvent constructor, two args assert_equals: ev.track expected object "[object Object]" but got null 3 PASS TrackEvent constructor, two args 4 4 -
trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/TrackEvent/constructor.html
r189476 r207468 14 14 }, document.title+', one arg'); 15 15 test(function(){ 16 var obj = {}; 17 var ev = new TrackEvent('foo', {track:obj}); 16 var video = document.createElement('video'); 17 var testTrack = video.addTextTrack('subtitles', 'foo', 'foo'); 18 var ev = new TrackEvent('foo', {track: testTrack}); 18 19 assert_true(ev instanceof TrackEvent, 'ev instanceof TrackEvent'); 19 20 assert_true(ev instanceof Event, 'ev instanceof Event'); 20 assert_equals(ev.track, obj, 'ev.track');21 assert_equals(ev.track, testTrack, 'ev.track'); 21 22 ev.track = {}; 22 assert_equals(ev.track, obj, 'ev.track after assignment');23 assert_equals(ev.track, testTrack, 'ev.track after assignment'); 23 24 }, document.title+', two args'); 24 25 </script> -
trunk/Source/WebCore/ChangeLog
r207467 r207468 1 2016-10-18 Chris Dumez <cdumez@apple.com> 2 3 Update TrackEvent to stop using legacy [ConstructorTemplate=Event] 4 https://bugs.webkit.org/show_bug.cgi?id=163580 5 6 Reviewed by Sam Weinig. 7 8 Update TrackEvent to stop using legacy [ConstructorTemplate=Event] 9 and use a regular constructor as in the specification: 10 - https://html.spec.whatwg.org/#the-trackevent-interface 11 12 No new tests, updated existing tests. 13 14 * html/track/TrackEvent.cpp: 15 (WebCore::TrackEvent::TrackEvent): 16 * html/track/TrackEvent.h: 17 * html/track/TrackEvent.idl: 18 1 19 2016-10-18 Commit Queue <commit-queue@webkit.org> 2 20 -
trunk/Source/WebCore/html/track/TrackEvent.cpp
r200943 r207468 40 40 } 41 41 42 TrackEvent::TrackEvent(const AtomicString& type, const TrackEventInit& initializer) 43 : Event(type, initializer) 44 , m_track(initializer.track) 42 TrackEvent::TrackEvent(const AtomicString& type, const Init& initializer, IsTrusted isTrusted) 43 : Event(type, initializer, isTrusted) 45 44 { 45 if (initializer.track) { 46 m_track = std::experimental::visit([](const auto& trackbase) -> TrackBase* { 47 return trackbase.get(); 48 }, *initializer.track); 49 } 46 50 } 47 51 -
trunk/Source/WebCore/html/track/TrackEvent.h
r200943 r207468 29 29 #if ENABLE(VIDEO_TRACK) 30 30 31 #include "AudioTrack.h" 31 32 #include "Event.h" 32 #include "TrackBase.h" 33 #include "TextTrack.h" 34 #include "VideoTrack.h" 33 35 34 36 namespace WebCore { 35 36 struct TrackEventInit : public EventInit {37 RefPtr<TrackBase> track;38 };39 37 40 38 class TrackEvent final : public Event { … … 47 45 } 48 46 49 static Ref<TrackEvent> createForBindings(const AtomicString& type, const TrackEventInit& initializer) 47 using TrackEventTrack = std::experimental::variant<RefPtr<VideoTrack>, RefPtr<AudioTrack>, RefPtr<TextTrack>>; 48 49 struct Init : public EventInit { 50 Optional<TrackEventTrack> track; 51 }; 52 53 static Ref<TrackEvent> create(const AtomicString& type, const Init& initializer, IsTrusted isTrusted = IsTrusted::No) 50 54 { 51 return adoptRef(*new TrackEvent(type, initializer ));55 return adoptRef(*new TrackEvent(type, initializer, isTrusted)); 52 56 } 53 57 … … 58 62 private: 59 63 TrackEvent(const AtomicString& type, bool canBubble, bool cancelable, Ref<TrackBase>&&); 60 TrackEvent(const AtomicString& type, const TrackEventInit& initializer);64 TrackEvent(const AtomicString& type, const Init& initializer, IsTrusted); 61 65 62 66 RefPtr<TrackBase> m_track; -
trunk/Source/WebCore/html/track/TrackEvent.idl
r207302 r207468 26 26 [ 27 27 Conditional=VIDEO_TRACK, 28 LegacyConstructorTemplate=Event28 Constructor(DOMString type, optional TrackEventInit eventInitDict) 29 29 ] interface TrackEvent : Event { 30 [ LegacyInitializedByEventConstructor, CustomGetter] readonly attribute objecttrack;30 [CustomGetter] readonly attribute (VideoTrack or AudioTrack or TextTrack)? track; 31 31 }; 32 32 33 dictionary TrackEventInit : EventInit { 34 (VideoTrack or AudioTrack or TextTrack)? track = null; 35 };
Note: See TracChangeset
for help on using the changeset viewer.