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

Reply via email to