Changeset 241790 in webkit
- Timestamp:
- Feb 20, 2019 2:16:00 AM (5 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 30 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WTF/ChangeLog
r241782 r241790 1 2019-02-20 Adrian Perez de Castro <aperez@igalia.com> 2 3 [WPE][GTK] Enable support for CONTENT_EXTENSIONS 4 https://bugs.webkit.org/show_bug.cgi?id=167941 5 6 Reviewed by Carlos Garcia Campos. 7 8 Add specialization of the refGPtr() and derefGPtr() templates for GMappedFile. 9 10 * wtf/glib/GRefPtr.cpp: 11 (WTF::refGPtr): Added. 12 (WTF::derefGPtr): Added. 13 * wtf/glib/GRefPtr.h: Declare template specializations. 14 1 15 2019-02-19 Commit Queue <commit-queue@webkit.org> 2 16 -
trunk/Source/WTF/wtf/glib/GRefPtr.cpp
r237099 r241790 170 170 } 171 171 172 template <> GMappedFile* refGPtr(GMappedFile* ptr) 173 { 174 if (ptr) 175 g_mapped_file_ref(ptr); 176 return ptr; 177 } 178 179 template <> void derefGPtr(GMappedFile* ptr) 180 { 181 if (ptr) 182 g_mapped_file_unref(ptr); 183 } 184 172 185 } // namespace WTF 173 186 -
trunk/Source/WTF/wtf/glib/GRefPtr.h
r234141 r241790 240 240 template <> WTF_EXPORT_PRIVATE GRegex* refGPtr(GRegex*); 241 241 template <> WTF_EXPORT_PRIVATE void derefGPtr(GRegex*); 242 template <> WTF_EXPORT_PRIVATE GMappedFile* refGPtr(GMappedFile*); 243 template <> WTF_EXPORT_PRIVATE void derefGPtr(GMappedFile*); 242 244 243 245 template <typename T> inline T* refGPtr(T* ptr) -
trunk/Source/WebCore/ChangeLog
r241788 r241790 1 2019-02-20 Adrian Perez de Castro <aperez@igalia.com> 2 3 [WPE][GTK] Enable support for CONTENT_EXTENSIONS 4 https://bugs.webkit.org/show_bug.cgi?id=167941 5 6 Reviewed by Carlos Garcia Campos. 7 8 * platform/gtk/po/POTFILES.in: Added WebKitUserContentFilterStore.cpp 9 to the list of files with translatable strings. 10 1 11 2019-02-19 Simon Fraser <simon.fraser@apple.com> 2 12 -
trunk/Source/WebCore/platform/gtk/po/POTFILES.in
r240431 r241790 20 20 ../../../WebKit/UIProcess/API/glib/WebKitResponsePolicyDecision.cpp 21 21 ../../../WebKit/UIProcess/API/glib/WebKitSettings.cpp 22 ../../../WebKit/UIProcess/API/glib/WebKitUserContentFilterStore.cpp 22 23 ../../../WebKit/UIProcess/API/glib/WebKitUserMediaPermissionRequest.cpp 23 24 ../../../WebKit/UIProcess/API/glib/WebKitWebContext.cpp -
trunk/Source/WebKit/ChangeLog
r241779 r241790 1 2019-02-20 Adrian Perez de Castro <aperez@igalia.com> 2 3 [WPE][GTK] Enable support for CONTENT_EXTENSIONS 4 https://bugs.webkit.org/show_bug.cgi?id=167941 5 6 Reviewed by Carlos Garcia Campos. 7 8 Adds new API to manage a collection of content extensions on disk (including compilation 9 of new ones) using WebKitUserContentFilterStore; the associated WebKitUserContentFilter 10 type (which represents a compiled content extension); and the functions needed to enable 11 and disable them for a given WebKitUserContentManager. 12 13 The WebKitUserContentFilterStore public API is expressed in abstract terms of "saving" 14 filters into the store (which involves compiling the JSON source rule set); and "loading" 15 them back as main operations. This way we do not disclose to users of the API any detail 16 about compilation, nor how contents are laid out on disk, and the documentation explicitly 17 tells about only using the provided functions to manipulate the on-disk contents. This 18 way we allow ourselves some leeway if the implementation needs changing in the future. 19 20 * PlatformGTK.cmake: Added WebKitUserContentFilterStore.h to the list of public API headers. 21 * PlatformWPE.cmake: Ditto. 22 * SourcesGTK.txt: Added WebKitUserContentFilterStore.cpp 23 * SourcesWPE.txt: Ditto. 24 * UIProcess/API/glib/WebKitError.cpp: Add definition of webkit_user_content_filter_error_quark(). 25 * UIProcess/API/glib/WebKitUserContent.cpp: Added WebKitUserContentFilter. 26 (_WebKitUserContentFilter::_WebKitUserContentFilter): 27 (webkit_user_content_filter_ref): 28 (webkit_user_content_filter_unref): 29 (webkit_user_content_filter_get_identifier): 30 (webkitUserContentFilterCreate): 31 (webkitUserContentFilterGetContentRuleList): 32 * UIProcess/API/glib/WebKitUserContentFilterStore.cpp: Added. 33 (toGError): Utility function to convert content extension error codes to GError. 34 (webkit_user_content_filter_store_class_init): 35 (webkit_user_content_filter_store_new): 36 (webkit_user_content_filter_store_get_path): 37 (webkitUserContentFilterStoreSaveBytes): Common function used as final step for all the 38 functions which save (compile) JSON rule sets into the store, to avoid duplicating code. 39 (webkit_user_content_filter_store_save): 40 (webkit_user_content_filter_store_save_finish): 41 (webkit_user_content_filter_store_save_from_file): 42 (webkit_user_content_filter_store_save_from_file_finish): 43 (webkit_user_content_filter_store_remove): 44 (webkit_user_content_filter_store_remove_finish): 45 (webkit_user_content_filter_store_load): 46 (webkit_user_content_filter_store_lookup_finish): 47 (webkit_user_content_filter_store_fetch_identifiers): 48 (webkit_user_content_filter_store_fetch_identifiers_finish): 49 * UIProcess/API/glib/WebKitUserContentManager.cpp: Added definitions for the new API 50 functions to add and remove filters from an user content manager. 51 (webkit_user_content_manager_add_filter): 52 (webkit_user_content_manager_remove_filter): 53 (webkit_user_content_manager_remove_all_filters): 54 * UIProcess/API/glib/WebKitUserContentPrivate.h: Added declarations for 55 webkitUserContentFilterCreate() and webkitUserContentFilterGetContentRuleList(). 56 * UIProcess/API/gtk/WebKitAutocleanups.h: Added autocleanups for WebKitUserContentFilter 57 and WebKitUserContentFilterStore. 58 * UIProcess/API/gtk/WebKitError.h: Added declarations for WEBKIT_USER_CONTENT_FILTER_ERROR 59 plus the associated webkit_user_content_filter_error_quark() function and 60 WebKitUserContentFilterErrror enum. 61 * UIProcess/API/gtk/WebKitUserContent.h: Added declarations for WebKitUserContentFilter 62 and its associated functions. 63 * UIProcess/API/gtk/WebKitUserContentFilterStore.h: Added. 64 * UIProcess/API/gtk/WebKitUserContentManager.h: Added declarations for the functions to 65 add and remove filters from the user content manager. 66 * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: Added new API functions and types to 67 be included in the documentation. 68 * UIProcess/API/gtk/webkit2.h: Added inclusion of WebKitUserContentFilterStore.h 69 * UIProcess/API/wpe/WebKitError.h: Same as for the GTK port header. 70 * UIProcess/API/wpe/WebKitUserContent.h: Same as for the GTK port header. 71 * UIProcess/API/wpe/WebKitUserContentFilterStore.h: Added. 72 * UIProcess/API/wpe/WebKitUserContentManager.h: Same as for the GTK port header. 73 * UIProcess/API/wpe/docs/wpe-0.1-sections.txt: Added new API functions and types to be 74 included in the documentation. 75 * UIProcess/API/wpe/webkit.h: Added inclusion of WebKitUserContentFilterStore.h 76 1 77 2019-02-19 Antti Koivisto <antti@apple.com> 2 78 -
trunk/Source/WebKit/PlatformGTK.cmake
r241224 r241790 110 110 ${WEBKIT_DIR}/UIProcess/API/gtk/WebKitURIUtilities.h 111 111 ${WEBKIT_DIR}/UIProcess/API/gtk/WebKitUserContent.h 112 ${WEBKIT_DIR}/UIProcess/API/gtk/WebKitUserContentFilterStore.h 112 113 ${WEBKIT_DIR}/UIProcess/API/gtk/WebKitUserContentManager.h 113 114 ${WEBKIT_DIR}/UIProcess/API/gtk/WebKitUserMediaPermissionRequest.h -
trunk/Source/WebKit/PlatformWPE.cmake
r241260 r241790 134 134 ${WEBKIT_DIR}/UIProcess/API/wpe/WebKitURIUtilities.h 135 135 ${WEBKIT_DIR}/UIProcess/API/wpe/WebKitUserContent.h 136 ${WEBKIT_DIR}/UIProcess/API/gtk/WebKitUserContentFilterStore.h 136 137 ${WEBKIT_DIR}/UIProcess/API/wpe/WebKitUserContentManager.h 137 138 ${WEBKIT_DIR}/UIProcess/API/wpe/WebKitUserMediaPermissionRequest.h -
trunk/Source/WebKit/SourcesGTK.txt
r241474 r241790 176 176 UIProcess/API/glib/WebKitURIUtilities.cpp @no-unify 177 177 UIProcess/API/glib/WebKitUserContent.cpp @no-unify 178 UIProcess/API/glib/WebKitUserContentFilterStore.cpp @no-unify 178 179 UIProcess/API/glib/WebKitUserContentManager.cpp @no-unify 179 180 UIProcess/API/glib/WebKitUserMediaPermissionRequest.cpp @no-unify -
trunk/Source/WebKit/SourcesWPE.txt
r241474 r241790 158 158 UIProcess/API/glib/WebKitURIUtilities.cpp @no-unify 159 159 UIProcess/API/glib/WebKitUserContent.cpp @no-unify 160 UIProcess/API/glib/WebKitUserContentFilterStore.cpp @no-unify 160 161 UIProcess/API/glib/WebKitUserContentManager.cpp @no-unify 161 162 UIProcess/API/glib/WebKitUserMediaPermissionRequest.cpp @no-unify -
trunk/Source/WebKit/UIProcess/API/glib/WebKitError.cpp
r218553 r241790 72 72 return g_quark_from_static_string("WebKitSnapshotError"); 73 73 } 74 75 G_DEFINE_QUARK(WebKitUserContentFilterError, webkit_user_content_filter_error) -
trunk/Source/WebKit/UIProcess/API/glib/WebKitUserContent.cpp
r235282 r241790 1 1 /* 2 * Copyright (C) 2014 Igalia S.L.2 * Copyright (C) 2014, 2018-2019 Igalia S.L. 3 3 * 4 4 * This library is free software; you can redistribute it and/or … … 318 318 return *userScript->userScript; 319 319 } 320 321 322 struct _WebKitUserContentFilter { 323 _WebKitUserContentFilter(RefPtr<API::ContentRuleList>&& contentRuleList) 324 : identifier(contentRuleList->name().utf8()) 325 , contentRuleList(WTFMove(contentRuleList)) 326 , referenceCount(1) 327 { 328 } 329 330 CString identifier; 331 RefPtr<API::ContentRuleList> contentRuleList; 332 int referenceCount; 333 }; 334 335 G_DEFINE_BOXED_TYPE(WebKitUserContentFilter, webkit_user_content_filter, webkit_user_content_filter_ref, webkit_user_content_filter_unref) 336 337 /** 338 * webkit_user_content_filter_ref: 339 * @user_content_filter: A #WebKitUserContentFilter 340 * 341 * Atomically increments the reference count of @user_content_filter by one. 342 * This function is MT-safe and may be called from any thread. 343 * 344 * Since: 2.24 345 */ 346 WebKitUserContentFilter* webkit_user_content_filter_ref(WebKitUserContentFilter* userContentFilter) 347 { 348 g_return_val_if_fail(userContentFilter, nullptr); 349 g_atomic_int_inc(&userContentFilter->referenceCount); 350 return userContentFilter; 351 } 352 353 /** 354 * webkit_user_content_filter_unref: 355 * @user_content_filter: A #WebKitUserContentFilter 356 * 357 * Atomically decrements the reference count of @user_content_filter by one. 358 * If the reference count drops to 0, all the memory allocated by the 359 * #WebKitUserContentFilter is released. This function is MT-safe and may 360 * be called from any thread. 361 * 362 * Since: 2.24 363 */ 364 void webkit_user_content_filter_unref(WebKitUserContentFilter* userContentFilter) 365 { 366 g_return_if_fail(userContentFilter); 367 if (g_atomic_int_dec_and_test(&userContentFilter->referenceCount)) { 368 userContentFilter->~WebKitUserContentFilter(); 369 fastFree(userContentFilter); 370 } 371 } 372 373 /** 374 * webkit_user_content_filter_get_identifier: 375 * @user_content_filter: A #WebKitUserContentFilter 376 * 377 * Obtain the identifier previously used to save the @user_content_filter in the 378 * #WebKitUserContentFilterStore. 379 * 380 * Returns: (transfer none): the identifier for the filter 381 * 382 * Since: 2.24 383 */ 384 const char* webkit_user_content_filter_get_identifier(WebKitUserContentFilter* userContentFilter) 385 { 386 g_return_val_if_fail(userContentFilter, nullptr); 387 return userContentFilter->identifier.data(); 388 } 389 390 WebKitUserContentFilter* webkitUserContentFilterCreate(RefPtr<API::ContentRuleList>&& contentRuleList) 391 { 392 WebKitUserContentFilter* userContentFilter = static_cast<WebKitUserContentFilter*>(fastMalloc(sizeof(WebKitUserContentFilter))); 393 new (userContentFilter) WebKitUserContentFilter(WTFMove(contentRuleList)); 394 return userContentFilter; 395 } 396 397 API::ContentRuleList& webkitUserContentFilterGetContentRuleList(WebKitUserContentFilter* userContentFilter) 398 { 399 ASSERT(userContentFilter); 400 return *userContentFilter->contentRuleList; 401 } -
trunk/Source/WebKit/UIProcess/API/glib/WebKitUserContentManager.cpp
r235282 r241790 319 319 } 320 320 321 /** 322 * webkit_user_content_manager_add_filter: 323 * @manager: A #WebKitUserContentManager 324 * @filter: A #WebKitUserContentFilter 325 * 326 * Adds a #WebKitUserContentFilter to the given #WebKitUserContentManager. 327 * The same #WebKitUserContentFilter can be reused with multiple 328 * #WebKitUserContentManager instances. 329 * 330 * Filters need to be saved and loaded from #WebKitUserContentFilterStore. 331 * 332 * Since: 2.24 333 */ 334 void webkit_user_content_manager_add_filter(WebKitUserContentManager* manager, WebKitUserContentFilter* filter) 335 { 336 g_return_if_fail(WEBKIT_IS_USER_CONTENT_MANAGER(manager)); 337 g_return_if_fail(filter); 338 manager->priv->userContentController->addContentRuleList(webkitUserContentFilterGetContentRuleList(filter)); 339 } 340 341 /** 342 * webkit_user_content_manager_remove_filter: 343 * @manager: A #WebKitUserContentManager 344 * @filter: A #WebKitUserContentFilter 345 * 346 * Removes a filter from the given #WebKitUserContentManager. 347 * 348 * Since 2.24 349 */ 350 void webkit_user_content_manager_remove_filter(WebKitUserContentManager* manager, WebKitUserContentFilter* filter) 351 { 352 g_return_if_fail(WEBKIT_IS_USER_CONTENT_MANAGER(manager)); 353 g_return_if_fail(filter); 354 manager->priv->userContentController->removeContentRuleList(webkitUserContentFilterGetContentRuleList(filter).name()); 355 } 356 357 /** 358 * webkit_user_content_manager_remove_all_filters: 359 * @manager: A #WebKitUserContentManager 360 * 361 * Removes all content filters from the given #WebKitUserContentManager. 362 * 363 * Since: 2.24 364 */ 365 void webkit_user_content_manager_remove_all_filters(WebKitUserContentManager* manager) 366 { 367 g_return_if_fail(WEBKIT_IS_USER_CONTENT_MANAGER(manager)); 368 manager->priv->userContentController->removeAllContentRuleLists(); 369 } 370 321 371 WebUserContentControllerProxy* webkitUserContentManagerGetUserContentControllerProxy(WebKitUserContentManager* manager) 322 372 { -
trunk/Source/WebKit/UIProcess/API/glib/WebKitUserContentPrivate.h
r235282 r241790 1 1 /* 2 * Copyright (C) 2014 Igalia S.L.2 * Copyright (C) 2014, 2018 Igalia S.L. 3 3 * 4 4 * This library is free software; you can redistribute it and/or … … 21 21 #define WebKitUserContentPrivate_h 22 22 23 #include "APIContentRuleList.h" 23 24 #include "APIUserContentWorld.h" 24 25 #include "APIUserScript.h" … … 31 32 API::UserStyleSheet& webkitUserStyleSheetGetUserStyleSheet(WebKitUserStyleSheet*); 32 33 API::UserContentWorld& webkitUserContentWorld(const char*); 34 API::ContentRuleList& webkitUserContentFilterGetContentRuleList(WebKitUserContentFilter*); 35 WebKitUserContentFilter* webkitUserContentFilterCreate(RefPtr<API::ContentRuleList>&&); 33 36 34 37 #endif // WebKitUserContentPrivate_h -
trunk/Source/WebKit/UIProcess/API/gtk/WebKitAutocleanups.h
r239770 r241790 66 66 G_DEFINE_AUTOPTR_CLEANUP_FUNC (WebKitURIResponse, g_object_unref) 67 67 G_DEFINE_AUTOPTR_CLEANUP_FUNC (WebKitURISchemeRequest, g_object_unref) 68 G_DEFINE_AUTOPTR_CLEANUP_FUNC (WebKitUserContentFilterStore, g_object_unref) 68 69 G_DEFINE_AUTOPTR_CLEANUP_FUNC (WebKitUserContentManager, g_object_unref) 69 70 G_DEFINE_AUTOPTR_CLEANUP_FUNC (WebKitUserMediaPermissionRequest, g_object_unref) … … 84 85 G_DEFINE_AUTOPTR_CLEANUP_FUNC (WebKitUserScript, webkit_user_script_unref) 85 86 G_DEFINE_AUTOPTR_CLEANUP_FUNC (WebKitUserStyleSheet, webkit_user_style_sheet_unref) 87 G_DEFINE_AUTOPTR_CLEANUP_FUNC (WebKitUserContentFilter, webkit_user_content_filter_unref) 86 88 G_DEFINE_AUTOPTR_CLEANUP_FUNC (WebKitWebsiteData, webkit_website_data_unref) 87 89 G_DEFINE_AUTOPTR_CLEANUP_FUNC (WebKitWebViewSessionState, webkit_web_view_session_state_unref) -
trunk/Source/WebKit/UIProcess/API/gtk/WebKitError.h
r218326 r241790 30 30 G_BEGIN_DECLS 31 31 32 #define WEBKIT_NETWORK_ERROR webkit_network_error_quark () 33 #define WEBKIT_POLICY_ERROR webkit_policy_error_quark () 34 #define WEBKIT_PLUGIN_ERROR webkit_plugin_error_quark () 35 #define WEBKIT_DOWNLOAD_ERROR webkit_download_error_quark () 36 #define WEBKIT_PRINT_ERROR webkit_print_error_quark () 37 #define WEBKIT_JAVASCRIPT_ERROR webkit_javascript_error_quark () 38 #define WEBKIT_SNAPSHOT_ERROR webkit_snapshot_error_quark () 32 #define WEBKIT_NETWORK_ERROR webkit_network_error_quark () 33 #define WEBKIT_POLICY_ERROR webkit_policy_error_quark () 34 #define WEBKIT_PLUGIN_ERROR webkit_plugin_error_quark () 35 #define WEBKIT_DOWNLOAD_ERROR webkit_download_error_quark () 36 #define WEBKIT_PRINT_ERROR webkit_print_error_quark () 37 #define WEBKIT_JAVASCRIPT_ERROR webkit_javascript_error_quark () 38 #define WEBKIT_SNAPSHOT_ERROR webkit_snapshot_error_quark () 39 #define WEBKIT_USER_CONTENT_FILTER_ERROR webkit_user_content_filter_error_quark () 39 40 40 41 /** … … 142 143 } WebKitSnapshotError; 143 144 144 WEBKIT_API GQuark 145 webkit_network_error_quark (void); 145 /** 146 * WebKitUserContentFilterError: 147 * @WEBKIT_USER_CONTENT_FILTER_ERROR_INVALID_SOURCE: The JSON source for a content filter is invalid. 148 * @WEBKIT_USER_CONTENT_FILTER_ERROR_NOT_FOUND: The requested content filter could not be found. 149 * 150 * Since: 2.24 151 */ 152 typedef enum { 153 WEBKIT_USER_CONTENT_FILTER_ERROR_INVALID_SOURCE, 154 WEBKIT_USER_CONTENT_FILTER_ERROR_NOT_FOUND, 155 } WebKitUserContentFilterError; 146 156 147 157 WEBKIT_API GQuark 148 webkit_ policy_error_quark(void);158 webkit_network_error_quark (void); 149 159 150 160 WEBKIT_API GQuark 151 webkit_p lugin_error_quark(void);161 webkit_policy_error_quark (void); 152 162 153 163 WEBKIT_API GQuark 154 webkit_ download_error_quark(void);164 webkit_plugin_error_quark (void); 155 165 156 166 WEBKIT_API GQuark 157 webkit_ print_error_quark(void);167 webkit_download_error_quark (void); 158 168 159 169 WEBKIT_API GQuark 160 webkit_ javascript_error_quark(void);170 webkit_print_error_quark (void); 161 171 162 172 WEBKIT_API GQuark 163 webkit_snapshot_error_quark (void); 173 webkit_javascript_error_quark (void); 174 175 WEBKIT_API GQuark 176 webkit_snapshot_error_quark (void); 177 178 WEBKIT_API GQuark 179 webkit_user_content_filter_error_quark (void); 164 180 165 181 G_END_DECLS -
trunk/Source/WebKit/UIProcess/API/gtk/WebKitUserContent.h
r235282 r241790 137 137 const gchar* const *blacklist); 138 138 139 #define WEBKIT_TYPE_USER_CONTENT_FILTER (webkit_user_content_filter_get_type()) 140 141 typedef struct _WebKitUserContentFilter WebKitUserContentFilter; 142 143 WEBKIT_API GType 144 webkit_user_content_filter_get_type (void); 145 146 WEBKIT_API const char* 147 webkit_user_content_filter_get_identifier (WebKitUserContentFilter *user_content_filter); 148 149 WEBKIT_API WebKitUserContentFilter * 150 webkit_user_content_filter_ref (WebKitUserContentFilter *user_content_filter); 151 152 WEBKIT_API void 153 webkit_user_content_filter_unref (WebKitUserContentFilter *user_content_filter); 154 139 155 G_END_DECLS 140 156 -
trunk/Source/WebKit/UIProcess/API/gtk/WebKitUserContentManager.h
r235282 r241790 94 94 webkit_user_content_manager_remove_all_scripts (WebKitUserContentManager *manager); 95 95 96 WEBKIT_API void 97 webkit_user_content_manager_add_filter (WebKitUserContentManager *manager, 98 WebKitUserContentFilter *filter); 99 100 WEBKIT_API void 101 webkit_user_content_manager_remove_filter (WebKitUserContentManager *manager, 102 WebKitUserContentFilter *filter); 103 104 WEBKIT_API void 105 webkit_user_content_manager_remove_all_filters (WebKitUserContentManager *manager); 106 96 107 G_END_DECLS 97 108 -
trunk/Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt
r241258 r241790 97 97 WebKitUserStyleLevel 98 98 WebKitUserScriptInjectionTime 99 WebKitUserContentFilter 99 100 webkit_user_style_sheet_ref 100 101 webkit_user_style_sheet_unref … … 105 106 webkit_user_script_new 106 107 webkit_user_script_new_for_world 108 webkit_user_content_filter_ref 109 webkit_user_content_filter_unref 110 webkit_user_content_filter_get_identifier 107 111 108 112 <SUBSECTION Standard> 109 113 WEBKIT_TYPE_USER_STYLE_SHEET 110 114 WEBKIT_TYPE_USER_SCRIPT 115 WEBKIT_TYPE_USER_CONTENT_FILTER 111 116 112 117 <SUBSECTION Private> 113 118 webkit_user_style_sheet_get_type 114 119 webkit_user_script_get_type 120 webkit_user_content_filter_get_type 115 121 </SECTION> 116 122 … … 128 134 webkit_user_content_manager_register_script_message_handler_in_world 129 135 webkit_user_content_manager_unregister_script_message_handler_in_world 136 webkit_user_content_manager_add_filter 137 webkit_user_content_manager_remove_filter 138 webkit_user_content_manager_remove_all_filters 130 139 131 140 <SUBSECTION Standard> … … 141 150 WebKitUserContentManagerPrivate 142 151 webkit_user_content_manager_get_type 152 </SECTION> 153 154 <SECTION> 155 <FILE>WebKitUserContentFilterStore</FILE> 156 <TITLE>WebKitUserContentFilterStore</TITLE> 157 WebKitUserContentFilterStore 158 webkit_user_content_filter_store_new 159 webkit_user_content_filter_store_get_path 160 webkit_user_content_filter_store_save 161 webkit_user_content_filter_store_save_finish 162 webkit_user_content_filter_store_save_from_file 163 webkit_user_content_filter_store_save_from_file_finish 164 webkit_user_content_filter_store_load 165 webkit_user_content_filter_store_load_finish 166 webkit_user_content_filter_store_remove 167 webkit_user_content_filter_store_remove_finish 168 webkit_user_content_filter_store_fetch_identifiers 169 webkit_user_content_filter_store_fetch_identifiers_finish 170 171 <SUBSECTION Standard> 172 WEBKIT_IS_USER_CONTENT_FILTER_STORE 173 WEBKIT_IS_USER_CONTENT_FILTER_STORE_CLASS 174 WEBKIT_TYPE_USER_CONTENT_FILTER_STORE 175 WEBKIT_USER_CONTENT_FILTER_STORE 176 WEBKIT_USER_CONTENT_FILTER_STORE_CLASS 177 WEBKIT_USER_CONTENT_FILTER_STORE_GET_CLASS 178 WebKitUserContentFilterStoreClass 179 180 <SUBSECTION Private> 181 WebKitUserContentFilterStorePrivate 182 webkit_user_content_filter_store_get_type 143 183 </SECTION> 144 184 … … 945 985 WEBKIT_JAVASCRIPT_ERROR 946 986 WEBKIT_SNAPSHOT_ERROR 987 WEBKIT_USER_CONTENT_FILTER_ERROR 947 988 WebKitNetworkError 948 989 WebKitPluginError … … 952 993 WebKitJavascriptError 953 994 WebKitSnapshotError 995 WebKitUserContentFilterError 954 996 webkit_network_error_quark 955 997 webkit_plugin_error_quark … … 959 1001 webkit_javascript_error_quark 960 1002 webkit_snapshot_error_quark 1003 webkit_user_content_filter_error_quark 961 1004 </SECTION> 962 1005 -
trunk/Source/WebKit/UIProcess/API/gtk/webkit2.h
r240962 r241790 76 76 #include <webkit2/WebKitURIUtilities.h> 77 77 #include <webkit2/WebKitUserContent.h> 78 #include <webkit2/WebKitUserContentFilterStore.h> 78 79 #include <webkit2/WebKitUserContentManager.h> 79 80 #include <webkit2/WebKitUserMediaPermissionRequest.h> -
trunk/Source/WebKit/UIProcess/API/wpe/WebKitError.h
r218553 r241790 30 30 G_BEGIN_DECLS 31 31 32 #define WEBKIT_NETWORK_ERROR webkit_network_error_quark () 33 #define WEBKIT_POLICY_ERROR webkit_policy_error_quark () 34 #define WEBKIT_PLUGIN_ERROR webkit_plugin_error_quark () 35 #define WEBKIT_DOWNLOAD_ERROR webkit_download_error_quark () 36 #define WEBKIT_JAVASCRIPT_ERROR webkit_javascript_error_quark () 37 #define WEBKIT_SNAPSHOT_ERROR webkit_snapshot_error_quark () 32 #define WEBKIT_NETWORK_ERROR webkit_network_error_quark () 33 #define WEBKIT_POLICY_ERROR webkit_policy_error_quark () 34 #define WEBKIT_PLUGIN_ERROR webkit_plugin_error_quark () 35 #define WEBKIT_DOWNLOAD_ERROR webkit_download_error_quark () 36 #define WEBKIT_JAVASCRIPT_ERROR webkit_javascript_error_quark () 37 #define WEBKIT_SNAPSHOT_ERROR webkit_snapshot_error_quark () 38 #define WEBKIT_USER_CONTENT_FILTER_ERROR webkit_user_content_filter_error_quark () 38 39 39 40 /** … … 127 128 } WebKitSnapshotError; 128 129 129 WEBKIT_API GQuark 130 webkit_network_error_quark (void); 130 /** 131 * WebKitUserContentFilterError: 132 * @WEBKIT_USER_CONTENT_FILTER_ERROR_INVALID_SOURCE: The JSON source for a content filter is invalid. 133 * @WEBKIT_USER_CONTENT_FILTER_ERROR_NOT_FOUND: The requested content filter could not be found. 134 * 135 * Since: 2.24 136 */ 137 typedef enum { 138 WEBKIT_USER_CONTENT_FILTER_ERROR_INVALID_SOURCE, 139 WEBKIT_USER_CONTENT_FILTER_ERROR_NOT_FOUND, 140 } WebKitUserContentFilterError; 131 141 132 142 WEBKIT_API GQuark 133 webkit_ policy_error_quark(void);143 webkit_network_error_quark (void); 134 144 135 145 WEBKIT_API GQuark 136 webkit_p lugin_error_quark(void);146 webkit_policy_error_quark (void); 137 147 138 148 WEBKIT_API GQuark 139 webkit_ download_error_quark(void);149 webkit_plugin_error_quark (void); 140 150 141 151 WEBKIT_API GQuark 142 webkit_ javascript_error_quark(void);152 webkit_download_error_quark (void); 143 153 144 154 WEBKIT_API GQuark 145 webkit_snapshot_error_quark (void); 155 webkit_javascript_error_quark (void); 156 157 WEBKIT_API GQuark 158 webkit_snapshot_error_quark (void); 159 160 WEBKIT_API GQuark 161 webkit_user_content_filter_error_quark (void); 146 162 147 163 G_END_DECLS -
trunk/Source/WebKit/UIProcess/API/wpe/WebKitUserContent.h
r235282 r241790 137 137 const gchar* const *blacklist); 138 138 139 #define WEBKIT_TYPE_USER_CONTENT_FILTER (webkit_user_content_filter_get_type()) 140 141 typedef struct _WebKitUserContentFilter WebKitUserContentFilter; 142 143 WEBKIT_API GType 144 webkit_user_content_filter_get_type (void); 145 146 WEBKIT_API const char* 147 webkit_user_content_filter_get_identifier (WebKitUserContentFilter *user_content_filter); 148 149 WEBKIT_API WebKitUserContentFilter * 150 webkit_user_content_filter_ref (WebKitUserContentFilter *user_content_filter); 151 152 WEBKIT_API void 153 webkit_user_content_filter_unref (WebKitUserContentFilter *user_content_filter); 154 139 155 G_END_DECLS 140 156 -
trunk/Source/WebKit/UIProcess/API/wpe/WebKitUserContentManager.h
r235282 r241790 94 94 webkit_user_content_manager_remove_all_scripts (WebKitUserContentManager *manager); 95 95 96 WEBKIT_API void 97 webkit_user_content_manager_add_filter (WebKitUserContentManager *manager, 98 WebKitUserContentFilter *filter); 99 100 WEBKIT_API void 101 webkit_user_content_manager_remove_filter (WebKitUserContentManager *manager, 102 WebKitUserContentFilter *filter); 103 104 WEBKIT_API void 105 webkit_user_content_manager_remove_all_filters (WebKitUserContentManager *manager); 106 96 107 G_END_DECLS 97 108 -
trunk/Source/WebKit/UIProcess/API/wpe/docs/wpe-0.1-sections.txt
r241258 r241790 74 74 WebKitUserStyleLevel 75 75 WebKitUserScriptInjectionTime 76 WebKitUserContentFilter 76 77 webkit_user_style_sheet_ref 77 78 webkit_user_style_sheet_unref … … 82 83 webkit_user_script_new 83 84 webkit_user_script_new_for_world 85 webkit_user_content_filter_ref 86 webkit_user_content_filter_unref 87 webkit_user_content_filter_get_identifier 84 88 85 89 <SUBSECTION Standard> 86 90 WEBKIT_TYPE_USER_STYLE_SHEET 87 91 WEBKIT_TYPE_USER_SCRIPT 92 WEBKIT_TYPE_USER_CONTENT_FILTER 88 93 89 94 <SUBSECTION Private> 90 95 webkit_user_style_sheet_get_type 91 96 webkit_user_script_get_type 97 webkit_user_content_filter_get_type 92 98 </SECTION> 93 99 … … 105 111 webkit_user_content_manager_register_script_message_handler_in_world 106 112 webkit_user_content_manager_unregister_script_message_handler_in_world 113 webkit_user_content_manager_add_filter 114 webkit_user_content_manager_remove_filter 115 webkit_user_content_manager_remove_all_filters 107 116 108 117 <SUBSECTION Standard> … … 118 127 WebKitUserContentManagerPrivate 119 128 webkit_user_content_manager_get_type 129 </SECTION> 130 131 <SECTION> 132 <FILE>WebKitUserContentFilterStore</FILE> 133 <TITLE>WebKitUserContentFilterStore</TITLE> 134 WebKitUserContentFilterStore 135 webkit_user_content_filter_store_new 136 webkit_user_content_filter_store_get_path 137 webkit_user_content_filter_store_save 138 webkit_user_content_filter_store_save_finish 139 webkit_user_content_filter_store_save_from_file 140 webkit_user_content_filter_store_save_from_file_finish 141 webkit_user_content_filter_store_load 142 webkit_user_content_filter_store_load_finish 143 webkit_user_content_filter_store_remove 144 webkit_user_content_filter_store_remove_finish 145 webkit_user_content_filter_store_fetch_identifiers 146 webkit_user_content_filter_store_fetch_identifiers_finish 147 148 <SUBSECTION Standard> 149 WEBKIT_IS_USER_CONTENT_FILTER_STORE 150 WEBKIT_IS_USER_CONTENT_FILTER_STORE_CLASS 151 WEBKIT_TYPE_USER_CONTENT_FILTER_STORE 152 WEBKIT_USER_CONTENT_FILTER_STORE 153 WEBKIT_USER_CONTENT_FILTER_STORE_CLASS 154 WEBKIT_USER_CONTENT_FILTER_STORE_GET_CLASS 155 WebKitUserContentFilterStoreClass 156 157 <SUBSECTION Private> 158 WebKitUserContentFilterStorePrivate 159 webkit_user_content_filter_store_get_type 120 160 </SECTION> 121 161 … … 888 928 WEBKIT_JAVASCRIPT_ERROR 889 929 WEBKIT_SNAPSHOT_ERROR 930 WEBKIT_USER_CONTENT_FILTER_ERROR 890 931 WebKitNetworkError 891 932 WebKitPluginError … … 894 935 WebKitJavascriptError 895 936 WebKitSnapshotError 937 WebKitUserContentFilterError 896 938 webkit_network_error_quark 897 939 webkit_plugin_error_quark … … 900 942 webkit_javascript_error_quark 901 943 webkit_snapshot_error_quark 944 webkit_user_content_filter_error_quark 902 945 </SECTION> 903 946 -
trunk/Source/WebKit/UIProcess/API/wpe/webkit.h
r240962 r241790 70 70 #include <wpe/WebKitURIUtilities.h> 71 71 #include <wpe/WebKitUserContent.h> 72 #include <wpe/WebKitUserContentFilterStore.h> 72 73 #include <wpe/WebKitUserContentManager.h> 73 74 #include <wpe/WebKitUserMediaPermissionRequest.h> -
trunk/Tools/ChangeLog
r241786 r241790 1 2019-02-20 Adrian Perez de Castro <aperez@igalia.com> 2 3 [WPE][GTK] Enable support for CONTENT_EXTENSIONS 4 https://bugs.webkit.org/show_bug.cgi?id=167941 5 6 Reviewed by Carlos Garcia Campos. 7 8 * MiniBrowser/gtk/main.c: 9 (filterSavedCallback): Added. 10 (main): Support loading a JSON rule set file for content filtering. 11 * MiniBrowser/wpe/main.cpp: 12 (filterSavedCallback): Added. 13 (main): Support loading a JSON rule set file for content filtering. 14 * TestWebKitAPI/Tests/WebKitGLib/TestWebKitUserContentFilterStore.cpp: Added. 15 (WTF::refGPtr): Added locally for WebKitUserContentFilter, as it would not be used anywhere else. 16 (WTF::derefGPtr): Ditto. 17 (testEmptyStore): 18 (testSaveInvalidFilter): 19 (testSaveLoadFilter): 20 (testSavedFilterIdentifierMatch): 21 (testRemoveFilter): 22 (testSaveMultipleFilters): 23 (testSaveFilterFromFile): 24 (testFilterPersistence): 25 (beforeAll): 26 (afterAll): 27 * TestWebKitAPI/Tests/WebKitGLib/TestWebKitUserContentManager.cpp: 28 (removeOldInjectedContentAndResetLists): Also reset content filters. 29 (isCSSBlockedForURLAtPath): Added. Tests whether the test filter, which blocks a 30 CSS style sheet, has blocked the load of the CSS by looking at the resulting style of 31 the element affected by the style sheet. 32 (getUserContentFilter): Added. Stores the test filter in a WebKitUserContentFilterStore 33 and returns it to be used by tests. 34 (testUserContentManagerContentFilter): Added. Tests whether adding and removing a filter 35 from the WebKitUserContentManager results in the a CSS style sheet being blocked. 36 (serverCallback): Add support for serving a CSS style sheet for testing. 37 (beforeAll): Add call to testUserContentManagerContentFilter(). 38 * TestWebKitAPI/glib/CMakeLists.txt: Added TestWebKitUserContentFilterStore. 39 1 40 2019-02-19 Keith Rollin <krollin@apple.com> 2 41 -
trunk/Tools/MiniBrowser/gtk/main.c
r239027 r241790 49 49 static gboolean fullScreen; 50 50 static gboolean ignoreTLSErrors; 51 static const char *contentFilter; 51 52 static const char *cookiesFile; 52 53 static const char *cookiesPolicy; … … 113 114 { "ignore-host", 0, 0, G_OPTION_ARG_STRING_ARRAY, &ignoreHosts, "Set proxy ignore hosts", "HOSTS" }, 114 115 { "ignore-tls-errors", 0, 0, G_OPTION_ARG_NONE, &ignoreTLSErrors, "Ignore TLS errors", NULL }, 116 { "content-filter", 0, 0, G_OPTION_ARG_FILENAME, &contentFilter, "JSON with content filtering rules", "FILE" }, 115 117 { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &uriArguments, 0, "[URL…]" }, 116 118 { 0, 0, 0, 0, 0, 0, 0 } … … 472 474 } 473 475 476 typedef struct { 477 GMainLoop *mainLoop; 478 WebKitUserContentFilter *filter; 479 GError *error; 480 } FilterSaveData; 481 482 static void filterSavedCallback(WebKitUserContentFilterStore *store, GAsyncResult *result, FilterSaveData *data) 483 { 484 data->filter = webkit_user_content_filter_store_save_finish(store, result, &data->error); 485 g_main_loop_quit(data->mainLoop); 486 } 487 474 488 int main(int argc, char *argv[]) 475 489 { … … 540 554 g_signal_connect(userContentManager, "script-message-received::aboutData", G_CALLBACK(aboutDataScriptMessageReceivedCallback), webContext); 541 555 556 if (contentFilter) { 557 GFile *contentFilterFile = g_file_new_for_commandline_arg(contentFilter); 558 559 FilterSaveData saveData = { NULL, NULL, NULL }; 560 gchar *filtersPath = g_build_filename(g_get_user_cache_dir(), g_get_prgname(), "filters", NULL); 561 WebKitUserContentFilterStore *store = webkit_user_content_filter_store_new(filtersPath); 562 g_free(filtersPath); 563 564 webkit_user_content_filter_store_save_from_file(store, "GTKMiniBrowserFilter", contentFilterFile, NULL, (GAsyncReadyCallback)filterSavedCallback, &saveData); 565 saveData.mainLoop = g_main_loop_new(NULL, FALSE); 566 g_main_loop_run(saveData.mainLoop); 567 g_object_unref(store); 568 569 if (saveData.filter) 570 webkit_user_content_manager_add_filter(userContentManager, saveData.filter); 571 else 572 g_printerr("Cannot save filter '%s': %s\n", contentFilter, saveData.error->message); 573 574 g_clear_pointer(&saveData.error, g_error_free); 575 g_clear_pointer(&saveData.filter, webkit_user_content_filter_unref); 576 g_main_loop_unref(saveData.mainLoop); 577 g_object_unref(contentFilterFile); 578 } 579 542 580 webkit_web_context_set_automation_allowed(webContext, automationMode); 543 581 g_signal_connect(webContext, "automation-started", G_CALLBACK(automationStartedCallback), NULL); -
trunk/Tools/MiniBrowser/wpe/main.cpp
r240843 r241790 40 40 static gboolean automationMode; 41 41 static gboolean ignoreTLSErrors; 42 static const char* contentFilter; 42 43 static const char* cookiesFile; 43 44 static const char* cookiesPolicy; … … 54 55 { "ignore-host", 0, 0, G_OPTION_ARG_STRING_ARRAY, &ignoreHosts, "Set proxy ignore hosts", "HOSTS" }, 55 56 { "ignore-tls-errors", 0, 0, G_OPTION_ARG_NONE, &ignoreTLSErrors, "Ignore TLS errors", nullptr }, 57 { "content-filter", 0, 0, G_OPTION_ARG_FILENAME, &contentFilter, "JSON with content filtering rules", "FILE" }, 56 58 { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &uriArguments, nullptr, "[URL]" }, 57 59 { nullptr, 0, 0, G_OPTION_ARG_NONE, nullptr, nullptr, nullptr } … … 124 126 return std::make_unique<WPEToolingBackends::HeadlessViewBackend>(width, height); 125 127 return std::make_unique<WPEToolingBackends::WindowViewBackend>(width, height); 128 } 129 130 typedef struct { 131 GMainLoop* mainLoop { nullptr }; 132 WebKitUserContentFilter* filter { nullptr }; 133 GError* error { nullptr }; 134 } FilterSaveData; 135 136 static void filterSavedCallback(WebKitUserContentFilterStore *store, GAsyncResult *result, FilterSaveData *data) 137 { 138 data->filter = webkit_user_content_filter_store_save_finish(store, result, &data->error); 139 g_main_loop_quit(data->mainLoop); 126 140 } 127 141 … … 185 199 WEBKIT_PROCESS_MODEL_SHARED_SECONDARY_PROCESS : WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES); 186 200 201 WebKitUserContentManager* userContentManager = nullptr; 202 if (contentFilter) { 203 GFile* contentFilterFile = g_file_new_for_commandline_arg(contentFilter); 204 205 FilterSaveData saveData = { nullptr, }; 206 gchar* filtersPath = g_build_filename(g_get_user_cache_dir(), g_get_prgname(), "filters", nullptr); 207 WebKitUserContentFilterStore* store = webkit_user_content_filter_store_new(filtersPath); 208 g_free(filtersPath); 209 210 webkit_user_content_filter_store_save_from_file(store, "WPEMiniBrowserFilter", contentFilterFile, nullptr, (GAsyncReadyCallback)filterSavedCallback, &saveData); 211 saveData.mainLoop = g_main_loop_new(nullptr, FALSE); 212 g_main_loop_run(saveData.mainLoop); 213 g_object_unref(store); 214 215 if (saveData.filter) { 216 userContentManager = webkit_user_content_manager_new(); 217 webkit_user_content_manager_add_filter(userContentManager, saveData.filter); 218 } else 219 g_printerr("Cannot save filter '%s': %s\n", contentFilter, saveData.error->message); 220 221 g_clear_pointer(&saveData.error, g_error_free); 222 g_clear_pointer(&saveData.filter, webkit_user_content_filter_unref); 223 g_main_loop_unref(saveData.mainLoop); 224 g_object_unref(contentFilterFile); 225 } 226 187 227 auto* settings = webkit_settings_new_with_settings( 188 228 "enable-developer-extras", TRUE, … … 201 241 "web-context", webContext, 202 242 "settings", settings, 243 "user-content-manager", userContentManager, 203 244 "is-controlled-by-automation", automationMode, 204 245 nullptr)); -
trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitUserContentManager.cpp
r239772 r241790 29 29 30 30 // These are all here so that they can be changed easily, if necessary. 31 static const char* kStyleSheetHTML = "<html><div id=\"styledElement\">Sweet stylez!</div></html>"; 31 static const char* kTestHTML = 32 "<html>\n" 33 " <head><link rel=\"stylesheet\" type=\"text/css\" href=\"/extra.css\"></head>\n" 34 " <body>\n" 35 " <div id=\"styledElement\">Sweet stylez!</div>\n" 36 " <div id=\"otherElement\">Blocked stylez!</div>\n" 37 " </body>\n" 38 "</html>"; 39 40 static const char* kTestCSS = 41 "div#otherElement {\n" 42 " font-weight: bold;\n" 43 "}\n"; 44 32 45 static const char* kInjectedStyleSheet = "#styledElement { font-weight: bold; }"; 33 46 static const char* kStyleSheetTestScript = "getComputedStyle(document.getElementById('styledElement'))['font-weight']"; … … 36 49 static const char* kScriptTestScript = "document.getElementById('item').innerText"; 37 50 static const char* kScriptTestScriptResult = "Generated by a script"; 51 static const char* kScriptTestCSSBlocked = "getComputedStyle(document.getElementById('otherElement'))['font-weight']"; 52 static const char* kScriptTestCSSBlockedResult = "normal"; 53 static const char* kJSONFilter = 54 "[\n" 55 " {\n" 56 " \"trigger\": {\n" 57 " \"url-filter\": \".*\",\n" 58 " \"resource-type\": [\"style-sheet\"]\n" 59 " },\n" 60 " \"action\": {\n" 61 " \"type\": \"block\"\n" 62 " }\n" 63 " }\n" 64 "]\n"; 38 65 39 66 static void testWebViewNewWithUserContentManager(Test* test, gconstpointer) … … 98 125 webkit_user_content_manager_remove_all_style_sheets(userContentManager); 99 126 webkit_user_content_manager_remove_all_scripts(userContentManager); 127 webkit_user_content_manager_remove_all_filters(userContentManager); 100 128 101 129 while (*whitelist) { … … 405 433 #endif 406 434 435 static bool isCSSBlockedForURLAtPath(WebViewTest* test, const char* path) 436 { 437 test->loadURI(kServer->getURIForPath(path).data()); 438 test->waitUntilLoadFinished(); 439 440 GUniqueOutPtr<GError> error; 441 WebKitJavascriptResult* javascriptResult = test->runJavaScriptAndWaitUntilFinished(kScriptTestCSSBlocked, &error.outPtr()); 442 g_assert_nonnull(javascriptResult); 443 g_assert_no_error(error.get()); 444 445 GUniquePtr<char> valueString(WebViewTest::javascriptResultToCString(javascriptResult)); 446 return !g_strcmp0(valueString.get(), kScriptTestCSSBlockedResult); 447 } 448 449 static WebKitUserContentFilter* getUserContentFilter(WebViewTest* test) 450 { 451 GUniquePtr<char> filtersPath(g_build_filename(test->dataDirectory(), "filters", nullptr)); 452 WebKitUserContentFilterStore* store = webkit_user_content_filter_store_new(filtersPath.get()); 453 test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(store)); 454 455 struct Data { 456 GMainLoop* mainLoop; 457 WebKitUserContentFilter* filter; 458 }; 459 Data data { test->m_mainLoop, nullptr, }; 460 461 GRefPtr<GBytes> source = adoptGRef(g_bytes_new_static(kJSONFilter, strlen(kJSONFilter))); 462 webkit_user_content_filter_store_save(store, "TestFilter", source.get(), nullptr, [](GObject* sourceObject, GAsyncResult* result, void* userData) { 463 auto* data = static_cast<Data*>(userData); 464 GUniqueOutPtr<GError> error; 465 data->filter = webkit_user_content_filter_store_save_finish(WEBKIT_USER_CONTENT_FILTER_STORE(sourceObject), result, &error.outPtr()); 466 g_assert_nonnull(data->filter); 467 g_assert_no_error(error.get()); 468 g_main_loop_quit(data->mainLoop); 469 }, &data); 470 g_main_loop_run(data.mainLoop); 471 472 g_object_unref(store); 473 474 g_assert_nonnull(data.filter); 475 return data.filter; 476 } 477 478 static void testUserContentManagerContentFilter(WebViewTest* test, gconstpointer) 479 { 480 char* whitelist[] = { nullptr, nullptr, nullptr }; 481 char* blacklist[] = { nullptr, nullptr, nullptr }; 482 483 removeOldInjectedContentAndResetLists(test->m_userContentManager.get(), whitelist, blacklist); 484 485 static const char* somePath = "somepath"; 486 g_assert_false(isCSSBlockedForURLAtPath(test, somePath)); 487 488 WebKitUserContentFilter* filter = getUserContentFilter(test); 489 webkit_user_content_manager_add_filter(test->m_userContentManager.get(), filter); 490 g_assert_true(isCSSBlockedForURLAtPath(test, somePath)); 491 492 webkit_user_content_manager_remove_filter(test->m_userContentManager.get(), filter); 493 g_assert_false(isCSSBlockedForURLAtPath(test, somePath)); 494 495 webkit_user_content_filter_unref(filter); 496 } 497 407 498 static void serverCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer) 408 499 { 409 500 soup_message_set_status(message, SOUP_STATUS_OK); 410 soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, kStyleSheetHTML, strlen(kStyleSheetHTML)); 501 if (!g_strcmp0(path, "/extra.css")) 502 soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, kTestCSS, strlen(kTestCSS)); 503 else 504 soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, kTestHTML, strlen(kTestHTML)); 411 505 soup_message_body_complete(message->response_body); 412 506 } … … 425 519 UserScriptMessageTest::add("WebKitUserContentManager", "script-message-from-dom-bindings", testUserContentManagerScriptMessageFromDOMBindings); 426 520 #endif 521 WebViewTest::add("WebKitUserContentManager", "content-filter", testUserContentManagerContentFilter); 427 522 } 428 523 -
trunk/Tools/TestWebKitAPI/glib/CMakeLists.txt
r240962 r241790 142 142 ADD_WK2_TEST(TestWebKitWebContext ${TOOLS_DIR}/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp) 143 143 ADD_WK2_TEST(TestWebKitWebView ${TOOLS_DIR}/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp) 144 ADD_WK2_TEST(TestWebKitUserContentFilterStore ${TOOLS_DIR}/TestWebKitAPI/Tests/WebKitGLib/TestWebKitUserContentFilterStore.cpp) 144 145 ADD_WK2_TEST(TestWebKitUserContentManager ${TOOLS_DIR}/TestWebKitAPI/Tests/WebKitGLib/TestWebKitUserContentManager.cpp) 145 146 ADD_WK2_TEST(TestWebsiteData ${TOOLS_DIR}/TestWebKitAPI/Tests/WebKitGLib/TestWebsiteData.cpp)
Note: See TracChangeset
for help on using the changeset viewer.