Title: [182820] trunk
Revision
182820
Author
beid...@apple.com
Date
2015-04-14 16:47:01 -0700 (Tue, 14 Apr 2015)

Log Message

Make sure media element loads hit content filter extensions.
<rdar://problem/20014012> and https://bugs.webkit.org/show_bug.cgi?id=143731

Reviewed by Jer Noble.

Source/WebCore:

Tests: http/tests/contentextensions/media-filtered.html
       http/tests/contentextensions/text-track-blocked.html

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::parseAttribute): Skip loads that are filtered.

LayoutTests:

* http/tests/contentextensions/media-filtered-expected.txt: Added.
* http/tests/contentextensions/media-filtered.html: Added.
* http/tests/contentextensions/media-filtered.html.json: Added.
* http/tests/contentextensions/text-track-blocked-expected.txt: Added.
* http/tests/contentextensions/text-track-blocked.html: Added.
* http/tests/contentextensions/text-track-blocked.html.json: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (182819 => 182820)


--- trunk/LayoutTests/ChangeLog	2015-04-14 23:45:17 UTC (rev 182819)
+++ trunk/LayoutTests/ChangeLog	2015-04-14 23:47:01 UTC (rev 182820)
@@ -1,3 +1,17 @@
+2015-04-14  Brady Eidson  <beid...@apple.com>
+
+        Make sure media element loads hit content filter extensions.
+        <rdar://problem/20014012> and https://bugs.webkit.org/show_bug.cgi?id=143731
+
+        Reviewed by Jer Noble.
+
+        * http/tests/contentextensions/media-filtered-expected.txt: Added.
+        * http/tests/contentextensions/media-filtered.html: Added.
+        * http/tests/contentextensions/media-filtered.html.json: Added.
+        * http/tests/contentextensions/text-track-blocked-expected.txt: Added.
+        * http/tests/contentextensions/text-track-blocked.html: Added.
+        * http/tests/contentextensions/text-track-blocked.html.json: Added.
+
 2015-04-14  Brent Fulgham  <bfulg...@apple.com>
 
         [Win] Skip failling test due to list box scroll behavior.

Added: trunk/LayoutTests/http/tests/contentextensions/media-filtered-expected.txt (0 => 182820)


--- trunk/LayoutTests/http/tests/contentextensions/media-filtered-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/http/tests/contentextensions/media-filtered-expected.txt	2015-04-14 23:47:01 UTC (rev 182820)
@@ -0,0 +1,12 @@
+CONSOLE MESSAGE: line 14: Video error
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x584
+      RenderText {#text} at (0,0) size 238x18
+        text run at (0,0) width 238: "The following video should not load."
+      RenderBR {BR} at (237,14) size 1x0
+      RenderText {#text} at (0,0) size 0x0
+layer at (8,26) size 300x150
+  RenderVideo {VIDEO} at (0,18) size 300x150

Added: trunk/LayoutTests/http/tests/contentextensions/media-filtered.html (0 => 182820)


--- trunk/LayoutTests/http/tests/contentextensions/media-filtered.html	                        (rev 0)
+++ trunk/LayoutTests/http/tests/contentextensions/media-filtered.html	2015-04-14 23:47:01 UTC (rev 182820)
@@ -0,0 +1,21 @@
+<script>
+if (window.testRunner)
+    testRunner.waitUntilDone();
+
+function videoCanPlay()
+{
+    console.log("Video can play");
+    if (window.testRunner)
+        testRunner.notifyDone();
+}
+
+function videoError()
+{
+    console.log("Video error");
+    if (window.testRunner)
+        testRunner.notifyDone();
+}
+
+</script>
+The following video should not load.<br>
+<video _onerror_="videoError();" _oncanplay_="videoCanPlay();" src="" autoplay></video>

Added: trunk/LayoutTests/http/tests/contentextensions/media-filtered.html.json (0 => 182820)


--- trunk/LayoutTests/http/tests/contentextensions/media-filtered.html.json	                        (rev 0)
+++ trunk/LayoutTests/http/tests/contentextensions/media-filtered.html.json	2015-04-14 23:47:01 UTC (rev 182820)
@@ -0,0 +1,10 @@
+[
+    {
+        "action": {
+            "type": "block"
+        },
+        "trigger": {
+            "url-filter": ".*test.mp4"
+        }
+    }
+]

Added: trunk/LayoutTests/http/tests/contentextensions/text-track-blocked-expected.txt (0 => 182820)


--- trunk/LayoutTests/http/tests/contentextensions/text-track-blocked-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/http/tests/contentextensions/text-track-blocked-expected.txt	2015-04-14 23:47:01 UTC (rev 182820)
@@ -0,0 +1,15 @@
+CONSOLE MESSAGE: line 21: video loaded
+CONSOLE MESSAGE: line 14: vttError
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x584
+      RenderText {#text} at (0,0) size 262x18
+        text run at (0,0) width 262: "The following text track should not load."
+      RenderBR {BR} at (261,14) size 1x0
+      RenderText {#text} at (0,0) size 0x0
+layer at (8,26) size 320x240
+  RenderVideo {VIDEO} at (0,18) size 320x240
+layer at (8,26) size 320x240
+  RenderFlexibleBox {DIV} at (0,0) size 320x240

Added: trunk/LayoutTests/http/tests/contentextensions/text-track-blocked.html (0 => 182820)


--- trunk/LayoutTests/http/tests/contentextensions/text-track-blocked.html	                        (rev 0)
+++ trunk/LayoutTests/http/tests/contentextensions/text-track-blocked.html	2015-04-14 23:47:01 UTC (rev 182820)
@@ -0,0 +1,33 @@
+<script>
+if (window.testRunner)
+    testRunner.waitUntilDone();
+
+function vttLoaded()
+{
+    console.log("vttLoaded");
+    if (window.testRunner)
+        testRunner.notifyDone();
+}
+
+function vttError()
+{
+    console.log("vttError");
+    if (window.testRunner)
+        testRunner.notifyDone();
+}
+
+function videoLoaded()
+{
+	console.log("video loaded");
+	var video = document.getElementById("video");
+	video.textTracks[0].mode = "showing";
+}
+
+</script>
+The following text track should not load.<br>
+<video id="video" src="" autoplay _oncanplay_="videoLoaded();">
+<track id="track" src="" kind="captions" srclang="en" _onload_="vttLoaded();" _onerror_="vttError();"></track>
+</video>
+	
+	
+</video>

Added: trunk/LayoutTests/http/tests/contentextensions/text-track-blocked.html.json (0 => 182820)


--- trunk/LayoutTests/http/tests/contentextensions/text-track-blocked.html.json	                        (rev 0)
+++ trunk/LayoutTests/http/tests/contentextensions/text-track-blocked.html.json	2015-04-14 23:47:01 UTC (rev 182820)
@@ -0,0 +1,10 @@
+[
+    {
+        "action": {
+            "type": "block"
+        },
+        "trigger": {
+            "url-filter": ".*captions-fast.vtt"
+        }
+    }
+]

Modified: trunk/Source/WebCore/ChangeLog (182819 => 182820)


--- trunk/Source/WebCore/ChangeLog	2015-04-14 23:45:17 UTC (rev 182819)
+++ trunk/Source/WebCore/ChangeLog	2015-04-14 23:47:01 UTC (rev 182820)
@@ -1,3 +1,16 @@
+2015-04-14  Brady Eidson  <beid...@apple.com>
+
+        Make sure media element loads hit content filter extensions.
+        <rdar://problem/20014012> and https://bugs.webkit.org/show_bug.cgi?id=143731
+
+        Reviewed by Jer Noble.
+
+        Tests: http/tests/contentextensions/media-filtered.html
+               http/tests/contentextensions/text-track-blocked.html
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::parseAttribute): Skip loads that are filtered.
+
 2015-04-14  Brian Weinstein  <bweinst...@apple.com>
 
         Add SPI to clear HSTS hosts added since a date.

Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (182819 => 182820)


--- trunk/Source/WebCore/html/HTMLMediaElement.cpp	2015-04-14 23:45:17 UTC (rev 182819)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp	2015-04-14 23:47:01 UTC (rev 182820)
@@ -72,6 +72,7 @@
 #include "RenderLayerCompositor.h"
 #include "RenderVideo.h"
 #include "RenderView.h"
+#include "ResourceLoadInfo.h"
 #include "ScriptController.h"
 #include "ScriptSourceCode.h"
 #include "SecurityPolicy.h"
@@ -79,6 +80,7 @@
 #include "Settings.h"
 #include "ShadowRoot.h"
 #include "TimeRanges.h"
+#include "UserContentController.h"
 #include <limits>
 #include <runtime/Uint8Array.h>
 #include <wtf/CurrentTime.h>
@@ -1090,7 +1092,8 @@
         return;
     }
 
-    if (!frame->page()) {
+    Page* page = frame->page();
+    if (!page) {
         mediaLoadingFailed(MediaPlayer::FormatError);
         return;
     }
@@ -1101,6 +1104,19 @@
         return;
     }
 
+#if ENABLE(CONTENT_EXTENSIONS)
+    ResourceRequest request(url);
+    DocumentLoader* documentLoader = frame->loader().documentLoader();
+
+    if (page->userContentController() && documentLoader)
+        page->userContentController()->processContentExtensionRulesForLoad(request, ResourceType::Media, *documentLoader);
+
+    if (request.isNull()) {
+        mediaLoadingFailed(MediaPlayer::FormatError);
+        return;
+    }
+#endif
+
     // The resource fetch algorithm 
     m_networkState = NETWORK_LOADING;
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to