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

Side by Side Diff: Source/core/html/shadow/MediaControls.cpp

Issue 297783004: Implement heuristic for showing media controls during playback w/o a mouse (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 7 months 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/html/shadow/MediaControls.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 makeOpaque(); 184 makeOpaque();
185 } 185 }
186 186
187 void MediaControls::show() 187 void MediaControls::show()
188 { 188 {
189 makeOpaque(); 189 makeOpaque();
190 m_panel->setIsDisplayed(true); 190 m_panel->setIsDisplayed(true);
191 m_panel->show(); 191 m_panel->show();
192 } 192 }
193 193
194 void MediaControls::mediaElementFocused()
195 {
196 show();
acolwell GONE FROM CHROMIUM 2014/05/22 00:31:17 Should we have a stopHideMediaControlsTimer() call
fs 2014/05/22 15:48:45 Probably makes sense. Added.
197 }
198
194 void MediaControls::hide() 199 void MediaControls::hide()
195 { 200 {
196 m_panel->setIsDisplayed(false); 201 m_panel->setIsDisplayed(false);
197 m_panel->hide(); 202 m_panel->hide();
198 } 203 }
199 204
200 void MediaControls::makeOpaque() 205 void MediaControls::makeOpaque()
201 { 206 {
202 m_panel->makeOpaque(); 207 m_panel->makeOpaque();
203 } 208 }
204 209
205 void MediaControls::makeTransparent() 210 void MediaControls::makeTransparent()
206 { 211 {
207 m_panel->makeTransparent(); 212 m_panel->makeTransparent();
208 } 213 }
209 214
210 bool MediaControls::shouldHideMediaControls() 215 bool MediaControls::shouldHideMediaControls()
211 { 216 {
212 return !m_panel->hovered(); 217 return !m_panel->hovered();
213 } 218 }
214 219
220 bool MediaControls::shouldShowMediaControls() const
221 {
222 if (m_isMouseOverControls)
223 return true;
224 // Check for 'focus' on the HTMLMediaElement and within the controls/shadow
225 // tree separately (to avoid going through all the potential ancestor hosts
226 // for the focused element.)
227 return mediaElement().focused() || contains(document().focusedElement());
228 }
229
215 void MediaControls::playbackStarted() 230 void MediaControls::playbackStarted()
216 { 231 {
217 m_currentTimeDisplay->show(); 232 m_currentTimeDisplay->show();
218 m_durationDisplay->hide(); 233 m_durationDisplay->hide();
219 234
220 updatePlayState(); 235 updatePlayState();
221 m_timeline->setPosition(mediaElement().currentTime()); 236 m_timeline->setPosition(mediaElement().currentTime());
222 updateCurrentTimeDisplay(); 237 updateCurrentTimeDisplay();
223 238
224 startHideMediaControlsTimer(); 239 startHideMediaControlsTimer();
225 } 240 }
226 241
227 void MediaControls::playbackProgressed() 242 void MediaControls::playbackProgressed()
228 { 243 {
229 m_timeline->setPosition(mediaElement().currentTime()); 244 m_timeline->setPosition(mediaElement().currentTime());
230 updateCurrentTimeDisplay(); 245 updateCurrentTimeDisplay();
231 246
232 if (!m_isMouseOverControls && mediaElement().hasVideo()) 247 if (mediaElement().hasVideo() && !shouldShowMediaControls())
acolwell GONE FROM CHROMIUM 2014/05/22 00:31:17 !shouldShowMediaControls() conceptually seems like
fs 2014/05/22 15:48:45 I integrated should_Show_MediaControls in should_H
233 makeTransparent(); 248 makeTransparent();
234 } 249 }
235 250
236 void MediaControls::playbackStopped() 251 void MediaControls::playbackStopped()
237 { 252 {
238 updatePlayState(); 253 updatePlayState();
239 m_timeline->setPosition(mediaElement().currentTime()); 254 m_timeline->setPosition(mediaElement().currentTime());
240 updateCurrentTimeDisplay(); 255 updateCurrentTimeDisplay();
241 makeOpaque(); 256 makeOpaque();
242 257
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 447
433 void MediaControls::updateTextTrackDisplay() 448 void MediaControls::updateTextTrackDisplay()
434 { 449 {
435 if (!m_textDisplayContainer) 450 if (!m_textDisplayContainer)
436 createTextTrackDisplay(); 451 createTextTrackDisplay();
437 452
438 m_textDisplayContainer->updateDisplay(); 453 m_textDisplayContainer->updateDisplay();
439 } 454 }
440 455
441 } 456 }
OLDNEW
« no previous file with comments | « Source/core/html/shadow/MediaControls.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698