Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: third_party/WebKit/Source/core/html/HTMLMediaElement.h

Issue 2511143006: Detect change on the intersection of video and viewport. (Closed)
Patch Set: Rebase again. Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights 2 * Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights
3 * reserved. 3 * reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 void attachLayoutTree(const AttachContext& = AttachContext()) override; 326 void attachLayoutTree(const AttachContext& = AttachContext()) override;
327 327
328 void didMoveToNewDocument(Document& oldDocument) override; 328 void didMoveToNewDocument(Document& oldDocument) override;
329 virtual KURL posterImageURL() const { return KURL(); } 329 virtual KURL posterImageURL() const { return KURL(); }
330 330
331 enum DisplayMode { Unknown, Poster, Video }; 331 enum DisplayMode { Unknown, Poster, Video };
332 DisplayMode getDisplayMode() const { return m_displayMode; } 332 DisplayMode getDisplayMode() const { return m_displayMode; }
333 virtual void setDisplayMode(DisplayMode mode) { m_displayMode = mode; } 333 virtual void setDisplayMode(DisplayMode mode) { m_displayMode = mode; }
334 334
335 private: 335 private:
336 // Friend class for testing.
337 friend class MediaElementFillingViewportTest;
338
336 void resetMediaPlayerAndMediaSource(); 339 void resetMediaPlayerAndMediaSource();
337 340
338 bool alwaysCreateUserAgentShadowRoot() const final { return true; } 341 bool alwaysCreateUserAgentShadowRoot() const final { return true; }
339 bool areAuthorShadowsAllowed() const final { return false; } 342 bool areAuthorShadowsAllowed() const final { return false; }
340 343
341 bool supportsFocus() const final; 344 bool supportsFocus() const final;
342 bool isMouseFocusable() const final; 345 bool isMouseFocusable() const final;
343 bool layoutObjectIsNeeded(const ComputedStyle&) override; 346 bool layoutObjectIsNeeded(const ComputedStyle&) override;
344 LayoutObject* createLayoutObject(const ComputedStyle&) override; 347 LayoutObject* createLayoutObject(const ComputedStyle&) override;
345 InsertionNotificationRequest insertedInto(ContainerNode*) final; 348 InsertionNotificationRequest insertedInto(ContainerNode*) final;
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 void scheduleNotifyPlaying(); 536 void scheduleNotifyPlaying();
534 void resolveScheduledPlayPromises(); 537 void resolveScheduledPlayPromises();
535 void rejectScheduledPlayPromises(); 538 void rejectScheduledPlayPromises();
536 void rejectPlayPromises(ExceptionCode, const String&); 539 void rejectPlayPromises(ExceptionCode, const String&);
537 void rejectPlayPromisesInternal(ExceptionCode, const String&); 540 void rejectPlayPromisesInternal(ExceptionCode, const String&);
538 541
539 EnumerationHistogram& showControlsHistogram() const; 542 EnumerationHistogram& showControlsHistogram() const;
540 543
541 void onVisibilityChangedForAutoplay(bool isVisible); 544 void onVisibilityChangedForAutoplay(bool isVisible);
542 545
546 void checkViewportIntersectionChanged();
547 void viewportFillDebouncerTimerFired(TimerBase*);
548
543 UnthrottledThreadTimer<HTMLMediaElement> m_loadTimer; 549 UnthrottledThreadTimer<HTMLMediaElement> m_loadTimer;
544 UnthrottledThreadTimer<HTMLMediaElement> m_progressEventTimer; 550 UnthrottledThreadTimer<HTMLMediaElement> m_progressEventTimer;
545 UnthrottledThreadTimer<HTMLMediaElement> m_playbackProgressTimer; 551 UnthrottledThreadTimer<HTMLMediaElement> m_playbackProgressTimer;
546 UnthrottledThreadTimer<HTMLMediaElement> m_audioTracksTimer; 552 UnthrottledThreadTimer<HTMLMediaElement> m_audioTracksTimer;
553 UnthrottledThreadTimer<HTMLMediaElement> m_viewportFillDebouncerTimer;
547 Member<TimeRanges> m_playedTimeRanges; 554 Member<TimeRanges> m_playedTimeRanges;
548 Member<GenericEventQueue> m_asyncEventQueue; 555 Member<GenericEventQueue> m_asyncEventQueue;
549 556
550 double m_playbackRate; 557 double m_playbackRate;
551 double m_defaultPlaybackRate; 558 double m_defaultPlaybackRate;
552 NetworkState m_networkState; 559 NetworkState m_networkState;
553 ReadyState m_readyState; 560 ReadyState m_readyState;
554 ReadyState m_readyStateMaximum; 561 ReadyState m_readyStateMaximum;
555 KURL m_currentSrc; 562 KURL m_currentSrc;
556 Member<MediaStreamDescriptor> m_srcObject; 563 Member<MediaStreamDescriptor> m_srcObject;
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
636 643
637 bool m_textTracksVisible : 1; 644 bool m_textTracksVisible : 1;
638 bool m_shouldPerformAutomaticTrackSelection : 1; 645 bool m_shouldPerformAutomaticTrackSelection : 1;
639 646
640 bool m_tracksAreReady : 1; 647 bool m_tracksAreReady : 1;
641 bool m_processingPreferenceChange : 1; 648 bool m_processingPreferenceChange : 1;
642 bool m_playingRemotely : 1; 649 bool m_playingRemotely : 1;
643 // Whether this element is in overlay fullscreen mode. 650 // Whether this element is in overlay fullscreen mode.
644 bool m_inOverlayFullscreenVideo : 1; 651 bool m_inOverlayFullscreenVideo : 1;
645 652
653 bool m_mostlyFillingViewport : 1;
654
646 TraceWrapperMember<AudioTrackList> m_audioTracks; 655 TraceWrapperMember<AudioTrackList> m_audioTracks;
647 TraceWrapperMember<VideoTrackList> m_videoTracks; 656 TraceWrapperMember<VideoTrackList> m_videoTracks;
648 TraceWrapperMember<TextTrackList> m_textTracks; 657 TraceWrapperMember<TextTrackList> m_textTracks;
649 HeapVector<Member<TextTrack>> m_textTracksWhenResourceSelectionBegan; 658 HeapVector<Member<TextTrack>> m_textTracksWhenResourceSelectionBegan;
650 659
651 Member<CueTimeline> m_cueTimeline; 660 Member<CueTimeline> m_cueTimeline;
652 661
653 HeapVector<Member<ScriptPromiseResolver>> m_playPromiseResolvers; 662 HeapVector<Member<ScriptPromiseResolver>> m_playPromiseResolvers;
654 TaskHandle m_playPromiseResolveTaskHandle; 663 TaskHandle m_playPromiseResolveTaskHandle;
655 TaskHandle m_playPromiseRejectTaskHandle; 664 TaskHandle m_playPromiseRejectTaskHandle;
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
717 friend class MediaControlsTest; 726 friend class MediaControlsTest;
718 friend class HTMLVideoElementTest; 727 friend class HTMLVideoElementTest;
719 728
720 Member<AutoplayUmaHelper> m_autoplayUmaHelper; 729 Member<AutoplayUmaHelper> m_autoplayUmaHelper;
721 730
722 WebRemotePlaybackClient* m_remotePlaybackClient; 731 WebRemotePlaybackClient* m_remotePlaybackClient;
723 732
724 // class AutoplayVisibilityObserver; 733 // class AutoplayVisibilityObserver;
725 Member<ElementVisibilityObserver> m_autoplayVisibilityObserver; 734 Member<ElementVisibilityObserver> m_autoplayVisibilityObserver;
726 735
736 IntRect m_currentIntersectRect;
737
727 static URLRegistry* s_mediaStreamRegistry; 738 static URLRegistry* s_mediaStreamRegistry;
728 }; 739 };
729 740
730 inline bool isHTMLMediaElement(const HTMLElement& element) { 741 inline bool isHTMLMediaElement(const HTMLElement& element) {
731 return isHTMLAudioElement(element) || isHTMLVideoElement(element); 742 return isHTMLAudioElement(element) || isHTMLVideoElement(element);
732 } 743 }
733 744
734 DEFINE_HTMLELEMENT_TYPE_CASTS_WITH_FUNCTION(HTMLMediaElement); 745 DEFINE_HTMLELEMENT_TYPE_CASTS_WITH_FUNCTION(HTMLMediaElement);
735 746
736 } // namespace blink 747 } // namespace blink
737 748
738 #endif // HTMLMediaElement_h 749 #endif // HTMLMediaElement_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/dom/IntersectionObserver.cpp ('k') | third_party/WebKit/Source/core/html/HTMLMediaElement.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698