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;