Title: [180766] trunk/Source
Revision
180766
Author
beid...@apple.com
Date
2015-02-27 10:33:39 -0800 (Fri, 27 Feb 2015)

Log Message

Add API to remove a single content filter.
<rdar://problem/19977764> and https://bugs.webkit.org/show_bug.cgi?id=142088

Reviewed by Sam Weinig.

Source/WebCore:

* page/UserContentController.cpp:
(WebCore::UserContentController::removeUserContentFilter):
* page/UserContentController.h:

Source/WebKit2:

* Shared/WebPageGroupData.h:

* UIProcess/API/C/WKPageGroup.cpp:
(WKPageGroupRemoveUserContentFilter):

* UIProcess/API/C/WKPageGroup.h:
* UIProcess/API/Cocoa/WKUserContentController.mm:
(-[WKUserContentController _removeUserContentFilter:]):

* UIProcess/API/Cocoa/WKUserContentControllerPrivate.h:
* UIProcess/UserContent/WebUserContentControllerProxy.cpp:
(WebKit::WebUserContentControllerProxy::WebUserContentControllerProxy):
(WebKit::WebUserContentControllerProxy::addProcess):
(WebKit::WebUserContentControllerProxy::addUserContentFilter):
(WebKit::WebUserContentControllerProxy::removeUserContentFilter):
(WebKit::WebUserContentControllerProxy::removeAllUserContentFilters):
* UIProcess/UserContent/WebUserContentControllerProxy.h:

* UIProcess/WebPageGroup.cpp:
(WebKit::WebPageGroup::addUserContentFilter):
(WebKit::WebPageGroup::removeUserContentFilter):
* UIProcess/WebPageGroup.h:

* WebProcess/UserContent/WebUserContentController.cpp:
(WebKit::WebUserContentController::removeUserContentFilter):
* WebProcess/UserContent/WebUserContentController.h:
* WebProcess/UserContent/WebUserContentController.messages.in:

* WebProcess/WebPage/WebPageGroupProxy.cpp:
(WebKit::WebPageGroupProxy::WebPageGroupProxy):
(WebKit::WebPageGroupProxy::removeUserContentFilter):
* WebProcess/WebPage/WebPageGroupProxy.h:
* WebProcess/WebPage/WebPageGroupProxy.messages.in:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (180765 => 180766)


--- trunk/Source/WebCore/ChangeLog	2015-02-27 18:09:46 UTC (rev 180765)
+++ trunk/Source/WebCore/ChangeLog	2015-02-27 18:33:39 UTC (rev 180766)
@@ -1,3 +1,14 @@
+2015-02-27  Brady Eidson  <beid...@apple.com>
+
+        Add API to remove a single content filter.
+        <rdar://problem/19977764> and https://bugs.webkit.org/show_bug.cgi?id=142088
+
+        Reviewed by Sam Weinig.
+
+        * page/UserContentController.cpp:
+        (WebCore::UserContentController::removeUserContentFilter):
+        * page/UserContentController.h:
+
 2015-02-26  Brent Fulgham  <bfulg...@apple.com>
 
         [Win] Remove remaining SafariTheme cruft

Modified: trunk/Source/WebCore/page/UserContentController.cpp (180765 => 180766)


--- trunk/Source/WebCore/page/UserContentController.cpp	2015-02-27 18:09:46 UTC (rev 180765)
+++ trunk/Source/WebCore/page/UserContentController.cpp	2015-02-27 18:33:39 UTC (rev 180766)
@@ -187,6 +187,14 @@
     m_contentExtensionBackend->setRuleList(name, ContentExtensions::ExtensionsManager::createRuleList(ruleList));
 }
 
+void UserContentController::removeUserContentFilter(const String& name)
+{
+    if (!m_contentExtensionBackend)
+        return;
+
+    m_contentExtensionBackend->removeRuleList(name);
+}
+
 void UserContentController::removeAllUserContentFilters()
 {
     if (!m_contentExtensionBackend)

Modified: trunk/Source/WebCore/page/UserContentController.h (180765 => 180766)


--- trunk/Source/WebCore/page/UserContentController.h	2015-02-27 18:09:46 UTC (rev 180765)
+++ trunk/Source/WebCore/page/UserContentController.h	2015-02-27 18:33:39 UTC (rev 180766)
@@ -81,6 +81,7 @@
 #if ENABLE(CONTENT_EXTENSIONS)
     // FIXME: This should really take a pointer to a compiled UserContentFilter.
     WEBCORE_EXPORT void addUserContentFilter(const String& name, const String& ruleList);
+    WEBCORE_EXPORT void removeUserContentFilter(const String& name);
     WEBCORE_EXPORT void removeAllUserContentFilters();
     
     // FIXME: Consider putting this (and other future content filter predicates) in its own class.

Modified: trunk/Source/WebKit2/ChangeLog (180765 => 180766)


--- trunk/Source/WebKit2/ChangeLog	2015-02-27 18:09:46 UTC (rev 180765)
+++ trunk/Source/WebKit2/ChangeLog	2015-02-27 18:33:39 UTC (rev 180766)
@@ -1,3 +1,44 @@
+2015-02-27  Brady Eidson  <beid...@apple.com>
+
+        Add API to remove a single content filter.
+        <rdar://problem/19977764> and https://bugs.webkit.org/show_bug.cgi?id=142088
+
+        Reviewed by Sam Weinig.
+
+        * Shared/WebPageGroupData.h:
+
+        * UIProcess/API/C/WKPageGroup.cpp:
+        (WKPageGroupRemoveUserContentFilter):
+
+        * UIProcess/API/C/WKPageGroup.h:
+        * UIProcess/API/Cocoa/WKUserContentController.mm:
+        (-[WKUserContentController _removeUserContentFilter:]):
+
+        * UIProcess/API/Cocoa/WKUserContentControllerPrivate.h:
+        * UIProcess/UserContent/WebUserContentControllerProxy.cpp:
+        (WebKit::WebUserContentControllerProxy::WebUserContentControllerProxy):
+        (WebKit::WebUserContentControllerProxy::addProcess):
+        (WebKit::WebUserContentControllerProxy::addUserContentFilter):
+        (WebKit::WebUserContentControllerProxy::removeUserContentFilter):
+        (WebKit::WebUserContentControllerProxy::removeAllUserContentFilters):
+        * UIProcess/UserContent/WebUserContentControllerProxy.h:
+
+        * UIProcess/WebPageGroup.cpp:
+        (WebKit::WebPageGroup::addUserContentFilter):
+        (WebKit::WebPageGroup::removeUserContentFilter):
+        * UIProcess/WebPageGroup.h:
+
+        * WebProcess/UserContent/WebUserContentController.cpp:
+        (WebKit::WebUserContentController::removeUserContentFilter):
+        * WebProcess/UserContent/WebUserContentController.h:
+        * WebProcess/UserContent/WebUserContentController.messages.in:
+
+        * WebProcess/WebPage/WebPageGroupProxy.cpp:
+        (WebKit::WebPageGroupProxy::WebPageGroupProxy):
+        (WebKit::WebPageGroupProxy::removeUserContentFilter):
+        * WebProcess/WebPage/WebPageGroupProxy.h:
+        * WebProcess/WebPage/WebPageGroupProxy.messages.in:
+
 2015-02-26  Anders Carlsson  <ander...@apple.com>
 
         Add API to remove all website data for the given data records

Modified: trunk/Source/WebKit2/Shared/WebPageGroupData.h (180765 => 180766)


--- trunk/Source/WebKit2/Shared/WebPageGroupData.h	2015-02-27 18:09:46 UTC (rev 180765)
+++ trunk/Source/WebKit2/Shared/WebPageGroupData.h	2015-02-27 18:33:39 UTC (rev 180766)
@@ -28,7 +28,8 @@
 
 #include <WebCore/UserScript.h>
 #include <WebCore/UserStyleSheet.h>
-#include <wtf/Vector.h>
+#include <wtf/HashMap.h>
+#include <wtf/text/StringHash.h>
 #include <wtf/text/WTFString.h>
 
 namespace IPC {
@@ -51,7 +52,7 @@
     Vector<WebCore::UserScript> userScripts;
 
 #if ENABLE(CONTENT_EXTENSIONS)
-    Vector<std::pair<String, String>> userContentFilters;
+    HashMap<String, String> userContentFilters;
 #endif
 };
 

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPageGroup.cpp (180765 => 180766)


--- trunk/Source/WebKit2/UIProcess/API/C/WKPageGroup.cpp	2015-02-27 18:09:46 UTC (rev 180765)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPageGroup.cpp	2015-02-27 18:33:39 UTC (rev 180766)
@@ -89,6 +89,17 @@
 #endif
 }
 
+void WKPageGroupRemoveUserContentFilter(WKPageGroupRef pageGroupRef, WKStringRef userContentFilterNameRef)
+{
+#if ENABLE(CONTENT_EXTENSIONS)
+    toImpl(pageGroupRef)->removeUserContentFilter(toWTFString(userContentFilterNameRef));
+#else
+    UNUSED_PARAM(pageGroupRef);
+    UNUSED_PARAM(userContentFilterNameRef);
+#endif
+}
+
+
 void WKPageGroupRemoveAllUserContentFilters(WKPageGroupRef pageGroupRef)
 {
 #if ENABLE(CONTENT_EXTENSIONS)

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPageGroup.h (180765 => 180766)


--- trunk/Source/WebKit2/UIProcess/API/C/WKPageGroup.h	2015-02-27 18:09:46 UTC (rev 180765)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPageGroup.h	2015-02-27 18:33:39 UTC (rev 180766)
@@ -50,6 +50,7 @@
 WK_EXPORT void WKPageGroupRemoveAllUserScripts(WKPageGroupRef pageGroup);
 
 WK_EXPORT void WKPageGroupAddUserContentFilter(WKPageGroupRef pageGroup, WKUserContentFilterRef userContentFilter);
+WK_EXPORT void WKPageGroupRemoveUserContentFilter(WKPageGroupRef pageGroup, WKStringRef userContentFilterName);
 WK_EXPORT void WKPageGroupRemoveAllUserContentFilters(WKPageGroupRef pageGroup);
 
 #ifdef __cplusplus

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUserContentController.mm (180765 => 180766)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUserContentController.mm	2015-02-27 18:09:46 UTC (rev 180765)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUserContentController.mm	2015-02-27 18:33:39 UTC (rev 180766)
@@ -134,6 +134,13 @@
 #endif
 }
 
+- (void)_removeUserContentFilter:(NSString *)userContentFilterName
+{
+#if ENABLE(CONTENT_EXTENSIONS)
+    _userContentControllerProxy->removeUserContentFilter(userContentFilterName);
+#endif
+}
+
 - (void)_removeAllUserContentFilters
 {
 #if ENABLE(CONTENT_EXTENSIONS)

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUserContentControllerPrivate.h (180765 => 180766)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUserContentControllerPrivate.h	2015-02-27 18:09:46 UTC (rev 180765)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUserContentControllerPrivate.h	2015-02-27 18:33:39 UTC (rev 180766)
@@ -32,6 +32,7 @@
 @interface WKUserContentController (WKPrivate)
 
 - (void)_addUserContentFilter:(_WKUserContentFilter *)userContentFilter WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
+- (void)_removeUserContentFilter:(NSString *)userContentFilterName WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
 - (void)_removeAllUserContentFilters WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
 
 @end

Modified: trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.cpp (180765 => 180766)


--- trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.cpp	2015-02-27 18:09:46 UTC (rev 180765)
+++ trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.cpp	2015-02-27 18:33:39 UTC (rev 180766)
@@ -51,9 +51,6 @@
 WebUserContentControllerProxy::WebUserContentControllerProxy()
     : m_identifier(generateIdentifier())
     , m_userScripts(*API::Array::create())
-#if ENABLE(CONTENT_EXTENSIONS)
-    , m_userContentFilters(*API::Array::create())
-#endif
 {
 }
 
@@ -86,7 +83,7 @@
 
 #if ENABLE(CONTENT_EXTENSIONS)
     Vector<std::pair<String, String>> userContentFilters;
-    for (const auto& userContentFilter : m_userContentFilters->elementsOfType<API::UserContentFilter>())
+    for (const auto& userContentFilter : m_userContentFilters.values())
         userContentFilters.append(std::make_pair(userContentFilter->name(), userContentFilter->serializedRules()));
     webProcessProxy.connection()->send(Messages::WebUserContentController::AddUserContentFilters(userContentFilters), m_identifier);
 #endif
@@ -187,7 +184,7 @@
 #if ENABLE(CONTENT_EXTENSIONS)
 void WebUserContentControllerProxy::addUserContentFilter(API::UserContentFilter& userContentFilter)
 {
-    m_userContentFilters->elements().append(&userContentFilter);
+    m_userContentFilters.set(userContentFilter.name(), &userContentFilter);
 
     auto pair = std::make_pair(userContentFilter.name(), userContentFilter.serializedRules());
 
@@ -195,9 +192,17 @@
         process->connection()->send(Messages::WebUserContentController::AddUserContentFilters({ pair }), m_identifier);
 }
 
+void WebUserContentControllerProxy::removeUserContentFilter(const String& name)
+{
+    m_userContentFilters.remove(name);
+
+    for (WebProcessProxy* process : m_processes)
+        process->connection()->send(Messages::WebUserContentController::RemoveUserContentFilter(name), m_identifier);
+}
+
 void WebUserContentControllerProxy::removeAllUserContentFilters()
 {
-    m_userContentFilters->elements().clear();
+    m_userContentFilters.clear();
 
     for (WebProcessProxy* process : m_processes)
         process->connection()->send(Messages::WebUserContentController::RemoveAllUserContentFilters(), m_identifier);

Modified: trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.h (180765 => 180766)


--- trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.h	2015-02-27 18:09:46 UTC (rev 180765)
+++ trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.h	2015-02-27 18:33:39 UTC (rev 180766)
@@ -35,6 +35,7 @@
 #include <wtf/Ref.h>
 #include <wtf/RefCounted.h>
 #include <wtf/Vector.h>
+#include <wtf/text/StringHash.h>
 
 namespace API {
 class Array;
@@ -83,6 +84,7 @@
 
 #if ENABLE(CONTENT_EXTENSIONS)
     void addUserContentFilter(API::UserContentFilter&);
+    void removeUserContentFilter(const String&);
     void removeAllUserContentFilters();
 #endif
 
@@ -99,7 +101,7 @@
     HashMap<uint64_t, RefPtr<WebScriptMessageHandler>> m_scriptMessageHandlers;
 
 #if ENABLE(CONTENT_EXTENSIONS)
-    Ref<API::Array> m_userContentFilters;
+    HashMap<String, RefPtr<API::UserContentFilter>> m_userContentFilters;
 #endif
 };
 

Modified: trunk/Source/WebKit2/UIProcess/WebPageGroup.cpp (180765 => 180766)


--- trunk/Source/WebKit2/UIProcess/WebPageGroup.cpp	2015-02-27 18:09:46 UTC (rev 180765)
+++ trunk/Source/WebKit2/UIProcess/WebPageGroup.cpp	2015-02-27 18:33:39 UTC (rev 180766)
@@ -175,10 +175,16 @@
 #if ENABLE(CONTENT_EXTENSIONS)
 void WebPageGroup::addUserContentFilter(const API::UserContentFilter& userContentFilter)
 {
-    m_data.userContentFilters.append(std::make_pair(userContentFilter.name(), userContentFilter.serializedRules()));
+    m_data.userContentFilters.set(userContentFilter.name(), userContentFilter.serializedRules());
     sendToAllProcessesInGroup(Messages::WebPageGroupProxy::AddUserContentFilter(userContentFilter.name(), userContentFilter.serializedRules()), m_data.pageGroupID);
 }
 
+void WebPageGroup::removeUserContentFilter(const String& contentFilterName)
+{
+    m_data.userContentFilters.remove(contentFilterName);
+    sendToAllProcessesInGroup(Messages::WebPageGroupProxy::RemoveUserContentFilter(contentFilterName), m_data.pageGroupID);
+}
+
 void WebPageGroup::removeAllUserContentFilters()
 {
     m_data.userContentFilters.clear();

Modified: trunk/Source/WebKit2/UIProcess/WebPageGroup.h (180765 => 180766)


--- trunk/Source/WebKit2/UIProcess/WebPageGroup.h	2015-02-27 18:09:46 UTC (rev 180765)
+++ trunk/Source/WebKit2/UIProcess/WebPageGroup.h	2015-02-27 18:33:39 UTC (rev 180766)
@@ -32,6 +32,7 @@
 #include "WebProcessProxy.h"
 #include <wtf/Forward.h>
 #include <wtf/HashSet.h>
+#include <wtf/text/WTFString.h>
 
 namespace WebKit {
 
@@ -67,6 +68,7 @@
 
 #if ENABLE(CONTENT_EXTENSIONS)
     void addUserContentFilter(const API::UserContentFilter&);
+    void removeUserContentFilter(const String&);
     void removeAllUserContentFilters();
 #endif
 

Modified: trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.cpp (180765 => 180766)


--- trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.cpp	2015-02-27 18:09:46 UTC (rev 180765)
+++ trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.cpp	2015-02-27 18:33:39 UTC (rev 180766)
@@ -187,6 +187,11 @@
         m_userContentController->addUserContentFilter(userContentFilter.first, userContentFilter.second);
 }
 
+void WebUserContentController::removeUserContentFilter(const String& name)
+{
+    m_userContentController->removeUserContentFilter(name);
+}
+
 void WebUserContentController::removeAllUserContentFilters()
 {
     m_userContentController->removeAllUserContentFilters();

Modified: trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.h (180765 => 180766)


--- trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.h	2015-02-27 18:09:46 UTC (rev 180765)
+++ trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.h	2015-02-27 18:33:39 UTC (rev 180766)
@@ -62,6 +62,7 @@
 
 #if ENABLE(CONTENT_EXTENSIONS)
     void addUserContentFilters(const Vector<std::pair<String, String>>&);
+    void removeUserContentFilter(const String& name);
     void removeAllUserContentFilters();
 #endif
 

Modified: trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.messages.in (180765 => 180766)


--- trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.messages.in	2015-02-27 18:09:46 UTC (rev 180765)
+++ trunk/Source/WebKit2/WebProcess/UserContent/WebUserContentController.messages.in	2015-02-27 18:33:39 UTC (rev 180766)
@@ -35,6 +35,7 @@
 
 #if ENABLE(CONTENT_EXTENSIONS)
     AddUserContentFilters(Vector<std::pair<String, String>> userContentFilters);
+    RemoveUserContentFilter(String name);
     RemoveAllUserContentFilters();
 #endif
 }

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.cpp (180765 => 180766)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.cpp	2015-02-27 18:09:46 UTC (rev 180765)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.cpp	2015-02-27 18:33:39 UTC (rev 180766)
@@ -54,8 +54,8 @@
         addUserScript(userScript);
 
 #if ENABLE(CONTENT_EXTENSIONS)
-    for (const auto& pair : data.userContentFilters)
-        addUserContentFilter(pair.first, pair.second);
+    for (const auto& slot : data.userContentFilters)
+        addUserContentFilter(slot.key, slot.value);
 #endif
 }
 
@@ -102,6 +102,11 @@
     userContentController().addUserContentFilter(name, serializedRules);
 }
 
+void WebPageGroupProxy::removeUserContentFilter(const String& name)
+{
+    userContentController().removeUserContentFilter(name);
+}
+
 void WebPageGroupProxy::removeAllUserContentFilters()
 {
     userContentController().removeAllUserContentFilters();    

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.h (180765 => 180766)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.h	2015-02-27 18:09:46 UTC (rev 180765)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.h	2015-02-27 18:33:39 UTC (rev 180766)
@@ -65,6 +65,7 @@
 
 #if ENABLE(CONTENT_EXTENSIONS)
     void addUserContentFilter(const String& name, const String& serializedRules);
+    void removeUserContentFilter(const String& name);
     void removeAllUserContentFilters();
 #endif
 

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.messages.in (180765 => 180766)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.messages.in	2015-02-27 18:09:46 UTC (rev 180765)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPageGroupProxy.messages.in	2015-02-27 18:33:39 UTC (rev 180766)
@@ -29,6 +29,7 @@
 
 #if ENABLE(CONTENT_EXTENSIONS)
     AddUserContentFilter(String name, String serializedRules);
+    RemoveUserContentFilter(String name);
     RemoveAllUserContentFilters();
 #endif
 }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to