OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011, 2012 Apple Inc. All rights reserved. | 2 * Copyright (C) 2011, 2012 Apple Inc. All rights reserved. |
3 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. | 3 * Copyright (C) 2011, 2012 Google Inc. All rights 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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 class MediaControlOverlayEnclosureElement; | 49 class MediaControlOverlayEnclosureElement; |
50 class MediaControlOverlayPlayButtonElement; | 50 class MediaControlOverlayPlayButtonElement; |
51 class MediaControlPanelElement; | 51 class MediaControlPanelElement; |
52 class MediaControlPanelEnclosureElement; | 52 class MediaControlPanelEnclosureElement; |
53 class MediaControlPlayButtonElement; | 53 class MediaControlPlayButtonElement; |
54 class MediaControlRemainingTimeDisplayElement; | 54 class MediaControlRemainingTimeDisplayElement; |
55 class MediaControlTextTrackListElement; | 55 class MediaControlTextTrackListElement; |
56 class MediaControlTimelineElement; | 56 class MediaControlTimelineElement; |
57 class MediaControlToggleClosedCaptionsButtonElement; | 57 class MediaControlToggleClosedCaptionsButtonElement; |
58 class MediaControlVolumeSliderElement; | 58 class MediaControlVolumeSliderElement; |
| 59 class MediaDownloadInProductHelpManager; |
59 class ShadowRoot; | 60 class ShadowRoot; |
60 | 61 |
61 // Default implementation of the core/ MediaControls interface used by | 62 // Default implementation of the core/ MediaControls interface used by |
62 // HTMLMediaElement. | 63 // HTMLMediaElement. |
63 class MODULES_EXPORT MediaControlsImpl final : public HTMLDivElement, | 64 class MODULES_EXPORT MediaControlsImpl final : public HTMLDivElement, |
64 public MediaControls { | 65 public MediaControls { |
65 USING_GARBAGE_COLLECTED_MIXIN(MediaControlsImpl); | 66 USING_GARBAGE_COLLECTED_MIXIN(MediaControlsImpl); |
66 WTF_MAKE_NONCOPYABLE(MediaControlsImpl); | 67 WTF_MAKE_NONCOPYABLE(MediaControlsImpl); |
67 | 68 |
68 public: | 69 public: |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 void ToggleOverflowMenu(); | 110 void ToggleOverflowMenu(); |
110 bool OverflowMenuVisible(); | 111 bool OverflowMenuVisible(); |
111 | 112 |
112 void ShowOverlayCastButtonIfNeeded(); | 113 void ShowOverlayCastButtonIfNeeded(); |
113 | 114 |
114 // Methods call by the scrubber. | 115 // Methods call by the scrubber. |
115 void BeginScrubbing(); | 116 void BeginScrubbing(); |
116 void EndScrubbing(); | 117 void EndScrubbing(); |
117 void UpdateCurrentTimeDisplay(); | 118 void UpdateCurrentTimeDisplay(); |
118 | 119 |
| 120 // Methods used for Download In-product help. |
| 121 const MediaControlDownloadButtonElement& DownloadButton() const; |
| 122 void DidDismissDownloadInProductHelp(); |
| 123 MediaDownloadInProductHelpManager* DownloadInProductHelp(); |
| 124 |
119 DECLARE_VIRTUAL_TRACE(); | 125 DECLARE_VIRTUAL_TRACE(); |
120 | 126 |
121 private: | 127 private: |
122 // MediaControlsMediaEventListener is a component that is listening to events | 128 // MediaControlsMediaEventListener is a component that is listening to events |
123 // and calling the appropriate callback on MediaControlsImpl. The object is | 129 // and calling the appropriate callback on MediaControlsImpl. The object is |
124 // split from MedaiControlsImpl to reduce boilerplate and ease reading. In | 130 // split from MedaiControlsImpl to reduce boilerplate and ease reading. In |
125 // order to not expose accessors only for this component, a friendship is | 131 // order to not expose accessors only for this component, a friendship is |
126 // declared. | 132 // declared. |
127 friend class MediaControlsMediaEventListener; | 133 friend class MediaControlsMediaEventListener; |
128 // Same as above but handles the menus hiding when the window is interacted | 134 // Same as above but handles the menus hiding when the window is interacted |
129 // with, allowing MediaControlsImpl to not have the boilerplate. | 135 // with, allowing MediaControlsImpl to not have the boilerplate. |
130 friend class MediaControlsWindowEventListener; | 136 friend class MediaControlsWindowEventListener; |
131 | 137 |
132 // For tests. | 138 // For tests. |
133 friend class MediaControlsOrientationLockDelegateTest; | 139 friend class MediaControlsOrientationLockDelegateTest; |
134 friend class MediaControlsOrientationLockAndRotateToFullscreenDelegateTest; | 140 friend class MediaControlsOrientationLockAndRotateToFullscreenDelegateTest; |
135 friend class MediaControlsRotateToFullscreenDelegateTest; | 141 friend class MediaControlsRotateToFullscreenDelegateTest; |
136 friend class MediaControlsImplTest; | 142 friend class MediaControlsImplTest; |
| 143 friend class MediaControlsImplInProductHelpTest; |
137 | 144 |
138 // Need to be members of MediaControls for private member access. | 145 // Need to be members of MediaControls for private member access. |
139 class BatchedControlUpdate; | 146 class BatchedControlUpdate; |
140 class MediaControlsResizeObserverDelegate; | 147 class MediaControlsResizeObserverDelegate; |
141 class MediaElementMutationCallback; | 148 class MediaElementMutationCallback; |
142 | 149 |
143 void Invalidate(Element*); | 150 void Invalidate(Element*); |
144 | 151 |
145 // Notify us that our controls enclosure has changed size. | 152 // Notify us that our controls enclosure has changed size. |
146 void NotifyElementSizeChanged(DOMRectReadOnly* new_size); | 153 void NotifyElementSizeChanged(DOMRectReadOnly* new_size); |
(...skipping 11 matching lines...) Expand all Loading... |
158 enum HideBehaviorFlags { | 165 enum HideBehaviorFlags { |
159 kIgnoreNone = 0, | 166 kIgnoreNone = 0, |
160 kIgnoreVideoHover = 1 << 0, | 167 kIgnoreVideoHover = 1 << 0, |
161 kIgnoreFocus = 1 << 1, | 168 kIgnoreFocus = 1 << 1, |
162 kIgnoreControlsHover = 1 << 2, | 169 kIgnoreControlsHover = 1 << 2, |
163 kIgnoreWaitForTimer = 1 << 3, | 170 kIgnoreWaitForTimer = 1 << 3, |
164 }; | 171 }; |
165 | 172 |
166 bool ShouldHideMediaControls(unsigned behavior_flags = 0) const; | 173 bool ShouldHideMediaControls(unsigned behavior_flags = 0) const; |
167 void HideMediaControlsTimerFired(TimerBase*); | 174 void HideMediaControlsTimerFired(TimerBase*); |
| 175 void StartHideMediaControlsIfNecessary(); |
168 void StartHideMediaControlsTimer(); | 176 void StartHideMediaControlsTimer(); |
169 void StopHideMediaControlsTimer(); | 177 void StopHideMediaControlsTimer(); |
170 void ResetHideMediaControlsTimer(); | 178 void ResetHideMediaControlsTimer(); |
171 | 179 |
172 void ElementSizeChangedTimerFired(TimerBase*); | 180 void ElementSizeChangedTimerFired(TimerBase*); |
173 | 181 |
174 void HideAllMenus(); | 182 void HideAllMenus(); |
175 | 183 |
176 // Hide elements that don't fit, and show those things that we want which | 184 // Hide elements that don't fit, and show those things that we want which |
177 // do fit. This requires that m_effectiveWidth and m_effectiveHeight are | 185 // do fit. This requires that m_effectiveWidth and m_effectiveHeight are |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 Member<ResizeObserver> resize_observer_; | 252 Member<ResizeObserver> resize_observer_; |
245 | 253 |
246 // Watches the media element for attribute changes and updates media controls | 254 // Watches the media element for attribute changes and updates media controls |
247 // as necessary. | 255 // as necessary. |
248 Member<MediaElementMutationCallback> element_mutation_callback_; | 256 Member<MediaElementMutationCallback> element_mutation_callback_; |
249 | 257 |
250 TaskRunnerTimer<MediaControlsImpl> element_size_changed_timer_; | 258 TaskRunnerTimer<MediaControlsImpl> element_size_changed_timer_; |
251 IntSize size_; | 259 IntSize size_; |
252 | 260 |
253 bool keep_showing_until_timer_fires_ : 1; | 261 bool keep_showing_until_timer_fires_ : 1; |
| 262 |
| 263 Member<MediaDownloadInProductHelpManager> download_iph_manager_; |
254 }; | 264 }; |
255 | 265 |
256 DEFINE_ELEMENT_TYPE_CASTS(MediaControlsImpl, IsMediaControls()); | 266 DEFINE_ELEMENT_TYPE_CASTS(MediaControlsImpl, IsMediaControls()); |
257 | 267 |
258 } // namespace blink | 268 } // namespace blink |
259 | 269 |
260 #endif | 270 #endif |
OLD | NEW |