Title: [209045] trunk/Source/WebCore
- Revision
- 209045
- Author
- bda...@apple.com
- Date
- 2016-11-28 16:14:53 -0800 (Mon, 28 Nov 2016)
Log Message
Blacklist Netflix for TouchBar support
https://bugs.webkit.org/show_bug.cgi?id=165104
-and corresponding-
rdar://problem/29404778
Reviewed by Tim Horton.
This patch moves the algorithm to
bestMediaElementForShowingPlaybackControlsManager() so that Now Playing can also
use it.
* html/HTMLMediaElement.cpp:
(WebCore::needsPlaybackControlsManagerQuirk):
(WebCore::HTMLMediaElement::bestMediaElementForShowingPlaybackControlsManager):
(WebCore::HTMLMediaElement::updatePlaybackControlsManager):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (209044 => 209045)
--- trunk/Source/WebCore/ChangeLog 2016-11-28 23:58:06 UTC (rev 209044)
+++ trunk/Source/WebCore/ChangeLog 2016-11-29 00:14:53 UTC (rev 209045)
@@ -1,3 +1,20 @@
+2016-11-28 Beth Dakin <bda...@apple.com>
+
+ Blacklist Netflix for TouchBar support
+ https://bugs.webkit.org/show_bug.cgi?id=165104
+ -and corresponding-
+ rdar://problem/29404778
+
+ Reviewed by Tim Horton.
+
+ This patch moves the algorithm to
+ bestMediaElementForShowingPlaybackControlsManager() so that Now Playing can also
+ use it.
+ * html/HTMLMediaElement.cpp:
+ (WebCore::needsPlaybackControlsManagerQuirk):
+ (WebCore::HTMLMediaElement::bestMediaElementForShowingPlaybackControlsManager):
+ (WebCore::HTMLMediaElement::updatePlaybackControlsManager):
+
2016-11-28 Mark Lam <mark....@apple.com>
Fix exception scope verification failures in more miscellaneous files.
Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (209044 => 209045)
--- trunk/Source/WebCore/html/HTMLMediaElement.cpp 2016-11-28 23:58:06 UTC (rev 209044)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp 2016-11-29 00:14:53 UTC (rev 209045)
@@ -567,6 +567,15 @@
updatePlaybackControlsManager();
}
+static bool needsPlaybackControlsManagerQuirk(Page& page)
+{
+ if (!page.settings().needsSiteSpecificQuirks())
+ return false;
+
+ String host = page.mainFrame().document()->url().host();
+ return equalLettersIgnoringASCIICase(host, "www.netflix.com") || host.endsWithIgnoringASCIICase(".netflix.com");
+}
+
HTMLMediaElement* HTMLMediaElement::bestMediaElementForShowingPlaybackControlsManager(MediaElementSession::PlaybackControlsPurpose purpose)
{
auto allSessions = PlatformMediaSessionManager::sharedManager().currentSessionsMatching([] (const PlatformMediaSession& session) {
@@ -591,7 +600,15 @@
if (!strongestSessionCandidate.isVisibleInViewportOrFullscreen && !strongestSessionCandidate.isPlayingAudio && atLeastOneNonCandidateMayBeConfusedForMainContent)
return nullptr;
- return &strongestSessionCandidate.session->element();
+ HTMLMediaElement* strongestElementCandidate = &strongestSessionCandidate.session->element();
+ if (strongestElementCandidate) {
+ if (Page* page = strongestElementCandidate->document().page()) {
+ if (needsPlaybackControlsManagerQuirk(*page))
+ return nullptr;
+ }
+ }
+
+ return strongestElementCandidate;
}
void HTMLMediaElement::registerWithDocument(Document& document)
@@ -7139,15 +7156,6 @@
return renderer && renderer->visibleInViewportState() == RenderElement::VisibleInViewport;
}
-static bool needsPlaybackControlsManagerQuirk(bool needsQuirks, const URL& url)
-{
- if (!needsQuirks)
- return false;
-
- String host = url.host();
- return equalLettersIgnoringASCIICase(host, "www.netflix.com");
-}
-
void HTMLMediaElement::updatePlaybackControlsManager()
{
Page* page = document().page();
@@ -7154,11 +7162,8 @@
if (!page)
return;
- auto bestMediaElement = bestMediaElementForShowingPlaybackControlsManager(MediaElementSession::PlaybackControlsPurpose::ControlsManager);
- bool quirkDisablesPlaybackControlsManager = needsPlaybackControlsManagerQuirk(page->settings().needsSiteSpecificQuirks(), page->mainFrame().document()->url());
-
// FIXME: Ensure that the renderer here should be up to date.
- if (bestMediaElement && !quirkDisablesPlaybackControlsManager)
+ if (auto bestMediaElement = bestMediaElementForShowingPlaybackControlsManager(MediaElementSession::PlaybackControlsPurpose::ControlsManager))
page->chrome().client().setUpPlaybackControlsManager(*bestMediaElement);
else
page->chrome().client().clearPlaybackControlsManager();
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes