/* * Copyright (C) 2014 Igalia S.L. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this library; see the file COPYING.LIB. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include "config.h" #include "WebKitUserContentManager.h" #include "WebKitPrivate.h" #include "WebKitUserContentManagerPrivate.h" #include "WebKitUserContentPrivate.h" #include <wtf/gobject/GRefPtr.h> using namespace WebCore; using namespace WebKit; struct _WebKitUserContentManagerPrivate { _WebKitUserContentManagerPrivate() : userContentController(WebUserContentControllerProxy::create()) { } RefPtr<WebUserContentControllerProxy> userContentController; }; /** * SECTION:WebKitUserContentManager * @short_description: Manages user-defined content which affects web pages. * @title: WebKitUserContentManager * * Using a #WebKitUserContentManager user CSS style sheets can be set to * be injected in the web pages loaded by a #WebKitWebView, by * webkit_user_content_manager_add_style_sheet(). * * To use a #WebKitUserContentManager, it must be created using * webkit_user_content_manager_new(), and then passed to * webkit_web_view_new_with_user_content_manager(). User style * sheets can be created with webkit_user_style_sheet_new(). * * User style sheets can be added and removed at any time, but * they will affect the web pages loaded afterwards. * * Since: 2.6 */ WEBKIT_DEFINE_TYPE(WebKitUserContentManager, webkit_user_content_manager, G_TYPE_OBJECT) static void webkit_user_content_manager_class_init(WebKitUserContentManagerClass*) { } /** * webkit_user_content_manager_new: * * Creates a new user content manager. * * Returns: A #WebKitUserContentManager * * Since: 2.6 */ WebKitUserContentManager* webkit_user_content_manager_new() { return WEBKIT_USER_CONTENT_MANAGER(g_object_new(WEBKIT_TYPE_USER_CONTENT_MANAGER, nullptr)); } /** * webkit_user_content_manager_add_style_sheet: * @manager: A #WebKitUserContentManager * @stylesheet: A #WebKitUserStyleSheet * * Adds a #WebKitUserStyleSheet to the given #WebKitUserContentManager. * The same #WebKitUserStyleSheet can be reused with multiple * #WebKitUserContentManager instances. * * Since: 2.6 */ void webkit_user_content_manager_add_style_sheet(WebKitUserContentManager* manager, WebKitUserStyleSheet* styleSheet) { g_return_if_fail(WEBKIT_IS_USER_CONTENT_MANAGER(manager)); g_return_if_fail(styleSheet); manager->priv->userContentController->addUserStyleSheet(webkitUserStyleSheetGetUserStyleSheet(styleSheet)); } /** * webkit_user_content_manager_remove_all_style_sheets: * @manager: A #WebKitUserContentManager * * Removes all user style sheets from the given #WebKitUserContentManager. * * Since: 2.6 */ void webkit_user_content_manager_remove_all_style_sheets(WebKitUserContentManager* manager) { g_return_if_fail(WEBKIT_IS_USER_CONTENT_MANAGER(manager)); manager->priv->userContentController->removeAllUserStyleSheets(); } WebUserContentControllerProxy* webkitUserContentManagerGetUserContentControllerProxy(WebKitUserContentManager* manager) { return manager->priv->userContentController.get(); }