Title: [172293] trunk/Source/WebCore
Revision
172293
Author
[email protected]
Date
2014-08-07 15:27:18 -0700 (Thu, 07 Aug 2014)

Log Message

[Mac] Parental Controls content filter is mistakenly enabled for HTTP responses
https://bugs.webkit.org/show_bug.cgi?id=135730

Reviewed by Brady Eidson.

On the Mac, the WebFilterEvaluator (Parental Controls) content filter should only be enabled for HTTPS
responses. During iOS upstreaming we mistakenly enabled it for HTTP responses as well, and this causes HTTP
responses to be filtered twice -- once by the Parental Controls HTTP proxy and once by WebCore. Revert to the
pre-upstreaming behavior and only enable the content filter for HTTPS responses.

No new tests. Content filtering is not testable from WebKit.

* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::responseReceived): Passed the response to ContentFilter::canHandleResponse().
* platform/ContentFilter.h:
* platform/mac/ContentFilterMac.mm:
(WebCore::ContentFilter::canHandleResponse): Renamed from isEnabled(). Checks the response's scheme on Mac to
determine whether WebFilterEvaluator should be used.
(WebCore::ContentFilter::isEnabled): Deleted.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (172292 => 172293)


--- trunk/Source/WebCore/ChangeLog	2014-08-07 22:26:02 UTC (rev 172292)
+++ trunk/Source/WebCore/ChangeLog	2014-08-07 22:27:18 UTC (rev 172293)
@@ -1,3 +1,25 @@
+2014-08-07  Andy Estes  <[email protected]>
+
+        [Mac] Parental Controls content filter is mistakenly enabled for HTTP responses
+        https://bugs.webkit.org/show_bug.cgi?id=135730
+
+        Reviewed by Brady Eidson.
+
+        On the Mac, the WebFilterEvaluator (Parental Controls) content filter should only be enabled for HTTPS
+        responses. During iOS upstreaming we mistakenly enabled it for HTTP responses as well, and this causes HTTP
+        responses to be filtered twice -- once by the Parental Controls HTTP proxy and once by WebCore. Revert to the
+        pre-upstreaming behavior and only enable the content filter for HTTPS responses.
+
+        No new tests. Content filtering is not testable from WebKit.
+
+        * loader/DocumentLoader.cpp:
+        (WebCore::DocumentLoader::responseReceived): Passed the response to ContentFilter::canHandleResponse().
+        * platform/ContentFilter.h:
+        * platform/mac/ContentFilterMac.mm:
+        (WebCore::ContentFilter::canHandleResponse): Renamed from isEnabled(). Checks the response's scheme on Mac to
+        determine whether WebFilterEvaluator should be used.
+        (WebCore::ContentFilter::isEnabled): Deleted.
+
 2014-08-07  Beth Dakin  <[email protected]>
 
         Fixed backgrounds don't paint in blurred inset areas

Modified: trunk/Source/WebCore/loader/DocumentLoader.cpp (172292 => 172293)


--- trunk/Source/WebCore/loader/DocumentLoader.cpp	2014-08-07 22:26:02 UTC (rev 172292)
+++ trunk/Source/WebCore/loader/DocumentLoader.cpp	2014-08-07 22:27:18 UTC (rev 172293)
@@ -663,7 +663,7 @@
 #endif
 
 #if ENABLE(CONTENT_FILTERING)
-    if (response.url().protocolIsInHTTPFamily() && ContentFilter::isEnabled())
+    if (ContentFilter::canHandleResponse(response))
         m_contentFilter = std::make_unique<ContentFilter>(response);
 #endif
 

Modified: trunk/Source/WebCore/platform/ContentFilter.h (172292 => 172293)


--- trunk/Source/WebCore/platform/ContentFilter.h	2014-08-07 22:26:02 UTC (rev 172292)
+++ trunk/Source/WebCore/platform/ContentFilter.h	2014-08-07 22:27:18 UTC (rev 172293)
@@ -57,7 +57,7 @@
 
 class ContentFilter {
 public:
-    static bool isEnabled();
+    static bool canHandleResponse(const ResourceResponse&);
 
     explicit ContentFilter(const ResourceResponse&);
     ~ContentFilter();

Modified: trunk/Source/WebCore/platform/mac/ContentFilterMac.mm (172292 => 172293)


--- trunk/Source/WebCore/platform/mac/ContentFilterMac.mm	2014-08-07 22:26:02 UTC (rev 172292)
+++ trunk/Source/WebCore/platform/mac/ContentFilterMac.mm	2014-08-07 22:27:18 UTC (rev 172293)
@@ -124,13 +124,23 @@
 #endif
 }
 
-bool ContentFilter::isEnabled()
+bool ContentFilter::canHandleResponse(const ResourceResponse& response)
 {
-    return [getWebFilterEvaluatorClass() isManagedSession]
+    if (!response.url().protocolIsInHTTPFamily())
+        return false;
+
+    if ([getWebFilterEvaluatorClass() isManagedSession]) {
+#if PLATFORM(MAC)
+        if (response.url().protocolIs("https"))
+#endif
+            return true;
+    }
+
 #if HAVE(NE_FILTER_SOURCE)
-        || [getNEFilterSourceClass() filterRequired]
+    return [getNEFilterSourceClass() filterRequired];
+#else
+    return false;
 #endif
-    ;
 }
 
 void ContentFilter::addData(const char* data, int length)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to