blob: 9e1b4cc57da6852d281e7e3c07fcda57e98686e6 [file] [log] [blame]
/*
* 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();
}