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

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

Issue 2692903002: Don't show media controls when there is a persistent video. (Closed)
Patch Set: cleanup and tests Created 3 years, 10 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
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 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 127
128 constexpr float kMostlyFillViewportThreshold = 0.85f; 128 constexpr float kMostlyFillViewportThreshold = 0.85f;
129 constexpr double kMostlyFillViewportBecomeStableSeconds = 5; 129 constexpr double kMostlyFillViewportBecomeStableSeconds = 5;
130 constexpr double kCheckViewportIntersectionIntervalSeconds = 1; 130 constexpr double kCheckViewportIntersectionIntervalSeconds = 1;
131 131
132 enum MediaControlsShow { 132 enum MediaControlsShow {
133 MediaControlsShowAttribute = 0, 133 MediaControlsShowAttribute = 0,
134 MediaControlsShowFullscreen, 134 MediaControlsShowFullscreen,
135 MediaControlsShowNoScript, 135 MediaControlsShowNoScript,
136 MediaControlsShowNotShown, 136 MediaControlsShowNotShown,
137 MediaControlsShowDisabledSettings,
137 MediaControlsShowMax 138 MediaControlsShowMax
138 }; 139 };
139 140
140 String urlForLoggingMedia(const KURL& url) { 141 String urlForLoggingMedia(const KURL& url) {
141 static const unsigned maximumURLLengthForLogging = 128; 142 static const unsigned maximumURLLengthForLogging = 128;
142 143
143 if (url.getString().length() < maximumURLLengthForLogging) 144 if (url.getString().length() < maximumURLLengthForLogging)
144 return url.getString(); 145 return url.getString();
145 return url.getString().substring(0, maximumURLLengthForLogging) + "..."; 146 return url.getString().substring(0, maximumURLLengthForLogging) + "...";
146 } 147 }
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 return false; 351 return false;
351 352
352 return url.getString().contains("m3u8"); 353 return url.getString().contains("m3u8");
353 } 354 }
354 355
355 bool HTMLMediaElement::mediaTracksEnabledInternally() { 356 bool HTMLMediaElement::mediaTracksEnabledInternally() {
356 return RuntimeEnabledFeatures::audioVideoTracksEnabled() || 357 return RuntimeEnabledFeatures::audioVideoTracksEnabled() ||
357 RuntimeEnabledFeatures::backgroundVideoTrackOptimizationEnabled(); 358 RuntimeEnabledFeatures::backgroundVideoTrackOptimizationEnabled();
358 } 359 }
359 360
361 void HTMLMediaElement::onMediaControlsEnabledChange(Document* document) {
362 auto it = documentToElementSetMap().find(document);
363 if (it == documentToElementSetMap().end())
364 return;
365 DCHECK(it->value);
366 WeakMediaElementSet& elements = *it->value;
367 for (const auto& element : elements)
368 element->updateControlsVisibility();
369 }
370
360 HTMLMediaElement::HTMLMediaElement(const QualifiedName& tagName, 371 HTMLMediaElement::HTMLMediaElement(const QualifiedName& tagName,
361 Document& document) 372 Document& document)
362 : HTMLElement(tagName, document), 373 : HTMLElement(tagName, document),
363 SuspendableObject(&document), 374 SuspendableObject(&document),
364 m_loadTimer(TaskRunnerHelper::get(TaskType::Unthrottled, &document), 375 m_loadTimer(TaskRunnerHelper::get(TaskType::Unthrottled, &document),
365 this, 376 this,
366 &HTMLMediaElement::loadTimerFired), 377 &HTMLMediaElement::loadTimerFired),
367 m_progressEventTimer( 378 m_progressEventTimer(
368 TaskRunnerHelper::get(TaskType::Unthrottled, &document), 379 TaskRunnerHelper::get(TaskType::Unthrottled, &document),
369 this, 380 this,
(...skipping 1984 matching lines...) Expand 10 before | Expand all | Expand 10 after
2354 return fastHasAttribute(loopAttr); 2365 return fastHasAttribute(loopAttr);
2355 } 2366 }
2356 2367
2357 void HTMLMediaElement::setLoop(bool b) { 2368 void HTMLMediaElement::setLoop(bool b) {
2358 BLINK_MEDIA_LOG << "setLoop(" << (void*)this << ", " << boolString(b) << ")"; 2369 BLINK_MEDIA_LOG << "setLoop(" << (void*)this << ", " << boolString(b) << ")";
2359 setBooleanAttribute(loopAttr, b); 2370 setBooleanAttribute(loopAttr, b);
2360 } 2371 }
2361 2372
2362 bool HTMLMediaElement::shouldShowControls( 2373 bool HTMLMediaElement::shouldShowControls(
2363 const RecordMetricsBehavior recordMetrics) const { 2374 const RecordMetricsBehavior recordMetrics) const {
2375 Settings* settings = document().settings();
2376 if (settings && !settings->getMediaControlsEnabled()) {
2377 if (recordMetrics == RecordMetricsBehavior::DoRecord)
2378 showControlsHistogram().count(MediaControlsShowDisabledSettings);
2379 return false;
2380 }
2381
2364 if (fastHasAttribute(controlsAttr)) { 2382 if (fastHasAttribute(controlsAttr)) {
2365 if (recordMetrics == RecordMetricsBehavior::DoRecord) 2383 if (recordMetrics == RecordMetricsBehavior::DoRecord)
2366 showControlsHistogram().count(MediaControlsShowAttribute); 2384 showControlsHistogram().count(MediaControlsShowAttribute);
2367 return true; 2385 return true;
2368 } 2386 }
2369 2387
2370 if (isFullscreen()) { 2388 if (isFullscreen()) {
2371 if (recordMetrics == RecordMetricsBehavior::DoRecord) 2389 if (recordMetrics == RecordMetricsBehavior::DoRecord)
2372 showControlsHistogram().count(MediaControlsShowFullscreen); 2390 showControlsHistogram().count(MediaControlsShowFullscreen);
2373 return true; 2391 return true;
(...skipping 1752 matching lines...) Expand 10 before | Expand all | Expand 10 after
4126 kMostlyFillViewportBecomeStableSeconds, BLINK_FROM_HERE); 4144 kMostlyFillViewportBecomeStableSeconds, BLINK_FROM_HERE);
4127 } 4145 }
4128 4146
4129 void HTMLMediaElement::viewportFillDebouncerTimerFired(TimerBase*) { 4147 void HTMLMediaElement::viewportFillDebouncerTimerFired(TimerBase*) {
4130 m_mostlyFillingViewport = true; 4148 m_mostlyFillingViewport = true;
4131 if (m_webMediaPlayer) 4149 if (m_webMediaPlayer)
4132 m_webMediaPlayer->becameDominantVisibleContent(m_mostlyFillingViewport); 4150 m_webMediaPlayer->becameDominantVisibleContent(m_mostlyFillingViewport);
4133 } 4151 }
4134 4152
4135 } // namespace blink 4153 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698