Commit e9a2692e authored by alp@webkit.org's avatar alp@webkit.org

2008-01-22 Christian Dywan <christian@imendio.com>

        Reviewed by Alp Toker.

        [GTK] API: WebKitWebSettings is not usable
        http://bugs.webkit.org/show_bug.cgi?id=16219

        Implement WebKitWebSettings.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@29723 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent 9dd97e27
2008-01-22 Christian Dywan <christian@imendio.com>
Reviewed by Alp Toker.
[GTK] API: WebKitWebSettings is not usable
http://bugs.webkit.org/show_bug.cgi?id=16219
Implement WebKitWebSettings.
* GNUmakefile.am:
2008-01-22 Simon Hausmann <hausmann@webkit.org>
Reviewed by Lars.
......
......@@ -238,6 +238,7 @@ webkitgtk_h_api += \
WebKit/gtk/WebView/webkitdefines.h \
WebKit/gtk/WebView/webkitnetworkrequest.h \
WebKit/gtk/WebView/webkitwebframe.h \
WebKit/gtk/WebView/webkitwebsettings.h \
WebKit/gtk/WebView/webkitwebview.h
webkitgtk_built_sources += \
......@@ -246,7 +247,6 @@ webkitgtk_built_sources += \
webkitgtk_headers += \
WebKit/gtk/WebView/webkitprivate.h \
WebKit/gtk/WebView/webkitsettings.h \
WebKit/gtk/WebCoreSupport/ChromeClientGtk.h \
WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h \
WebKit/gtk/WebCoreSupport/DragClientGtk.h \
......@@ -258,8 +258,8 @@ webkitgtk_headers += \
webkitgtk_sources += \
WebKit/gtk/WebView/webkitnetworkrequest.cpp \
WebKit/gtk/WebView/webkitprivate.cpp \
WebKit/gtk/WebView/webkitsettings.cpp \
WebKit/gtk/WebView/webkitwebframe.cpp \
WebKit/gtk/WebView/webkitwebsettings.cpp \
WebKit/gtk/WebView/webkitwebview.cpp \
WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp \
WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp \
......
2008-01-22 Christian Dywan <christian@imendio.com>
Reviewed by Alp Toker.
[GTK] API: WebKitWebSettings is not usable
http://bugs.webkit.org/show_bug.cgi?id=16219
Implement WebKitWebSettings.
* WebView/headers.pri:
* WebView/webkit.h:
* WebView/webkitprivate.cpp:
* WebView/webkitprivate.h:
* WebView/webkitsettings.cpp: Removed.
* WebView/webkitsettings.h: Removed.
* WebView/webkitwebsettings.cpp: Added.
* WebView/webkitwebsettings.h: Added.
* WebView/webkitwebview.cpp:
* WebView/webkitwebview.h:
2008-01-21 Alp Toker <alp@atoker.com>
GTK+ build fix for breakage introduced in r29698.
......
......@@ -2,4 +2,5 @@ WEBKIT_API_HEADERS = $$PWD/webkit.h \
$$PWD/webkitdefines.h \
$$PWD/webkitnetworkrequest.h \
$$PWD/webkitwebframe.h \
$$PWD/webkitwebsettings.h \
$$PWD/webkitwebview.h
......@@ -23,6 +23,7 @@
#include <webkitdefines.h>
#include <webkitnetworkrequest.h>
#include <webkitwebframe.h>
#include <webkitwebsettings.h>
#include <webkitwebview.h>
#endif /* __WEBKIT_H__ */
......@@ -36,16 +36,6 @@
using namespace WebCore;
namespace WebKit {
void apply(WebKitSettings*, WebCore::Settings*)
{
notImplemented();
}
WebKitSettings* create(WebCore::Settings*)
{
notImplemented();
return 0;
}
WebKitWebView* getViewFromFrame(WebKitWebFrame* frame)
{
......
......@@ -27,9 +27,9 @@
*/
#include "webkitdefines.h"
#include "webkitsettings.h"
#include "webkitwebview.h"
#include "webkitwebframe.h"
#include "webkitwebsettings.h"
#include "webkitnetworkrequest.h"
#include "Settings.h"
......@@ -38,8 +38,6 @@
#include "FrameLoaderClient.h"
namespace WebKit {
void apply(WebKitSettings*,WebCore::Settings*);
WebKitSettings* create(WebCore::Settings*);
WebKitWebView* getViewFromFrame(WebKitWebFrame*);
WebCore::Frame* core(WebKitWebFrame*);
......@@ -58,7 +56,7 @@ extern "C" {
typedef struct _WebKitWebViewPrivate WebKitWebViewPrivate;
struct _WebKitWebViewPrivate {
WebCore::Page* corePage;
WebCore::Settings* settings;
WebKitWebSettings* webSettings;
WebKitWebFrame* mainFrame;
WebCore::String applicationNameForUserAgent;
......
/*
* Copyright (C) 2007 Holger Hans Peter Freyther
*
* 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.
*/
#ifndef WEBKIT_SETTINGS_H
#define WEBKIT_SETTINGS_H
#include <glib.h>
#include <glib-object.h>
#include "webkitdefines.h"
G_BEGIN_DECLS
typedef enum {
WEBKIT_FONT_FAMILY_STANDARD,
WEBKIT_FONT_FAMILY_FIXED,
WEBKIT_FONT_FAMILY_SERIF,
WEBKIT_FONT_FAMILY_SANS_SERIF,
WEBKIT_FONT_FAMILY_CURSIVE,
WEBKIT_FONT_FAMILY_FANTASY,
WEBKIT_FONT_FAMILY_LAST_ENTRY
} WebKitFontFamily;
typedef enum {
WEBKIT_EDITABLE_LINK_DEFAULT_BEHAVIOUR,
WEBKIT_EDITABLE_LINK_ALWAYS_LIVE,
WEBKIT_EDITABLE_LINK_ONLY_WITH_SHIFT_KEY,
WEBKIT_EDITABLE_LINK_LIVE_WHEN_NOT_FOCUSED,
WEBKIT_EDITABLE_LINK_NEVER_LIVE
} WebKitEditableLinkBehaviour;
typedef struct _WebKitSettings WebKitSettings;
typedef struct _WebKitSettingsPrivate WebKitSettingsPrivate;
struct _WebKitSettings {
gchar* font_name[WEBKIT_FONT_FAMILY_LAST_ENTRY];
gint minimum_font_size;
gint minimum_logical_font_size;
gint default_font_size;
gint default_fixed_font_size;
gboolean load_images_automatically;
gboolean is_java_script_enabled;
gboolean java_script_can_open_windows_automatically;
gboolean plugins_enabled;
gboolean private_browsing;
gchar* user_style_sheet_location;
gboolean should_print_backgrounds;
gboolean text_areas_are_resizable;
WebKitEditableLinkBehaviour editable_link_behaviour;
gboolean uses_web_view_cache;
gboolean shrink_standalone_images_to_fit;
gboolean show_uris_in_tool_tips;
gchar* ftp_directory_template_path;
gboolean force_ftp_directory_listings;
gboolean developer_extras_enabled;
WebKitSettingsPrivate *private_data;
};
GType
webkit_web_settings_get_type (void);
WebKitSettings*
webkit_web_settings_copy (WebKitSettings* setting);
void
webkit_web_settings_free (WebKitSettings* setting);
WebKitSettings*
webkit_web_settings_get_global (void);
void
webkit_web_settings_set_global (WebKitSettings* setting);
void
webkit_web_settings_set_font_family(WebKitSettings*, WebKitFontFamily family, gchar *family_name);
const gchar*
webkit_web_settings_get_font_family(WebKitSettings*, WebKitFontFamily family);
void
webkit_web_settings_set_user_style_sheet_location(WebKitSettings*, gchar*);
void
webkit_set_ftp_directory_template_path(WebKitSettings*, gchar*);
G_END_DECLS
#endif
/*
* Copyright (C) 2008 Christian Dywan <christian@imendio.com>
*
* 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 "webkitwebsettings.h"
#include "webkitprivate.h"
extern "C" {
G_DEFINE_TYPE(WebKitWebSettings, webkit_web_settings, G_TYPE_OBJECT)
struct _WebKitWebSettingsPrivate {
gchar* default_encoding;
gchar* cursive_font_family;
gchar* default_font_family;
gchar* fantasy_font_family;
gchar* monospace_font_family;
gchar* sans_serif_font_family;
gchar* serif_font_family;
guint default_font_size;
guint default_monospace_font_size;
guint minimum_font_size;
guint minimum_logical_font_size;
gboolean auto_load_images;
gboolean auto_shrink_images;
gboolean print_backgrounds;
gboolean enable_scripts;
gboolean enable_plugins;
gboolean resizable_text_areas;
gchar* user_stylesheet_uri;
};
#define WEBKIT_WEB_SETTINGS_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_SETTINGS, WebKitWebSettingsPrivate))
enum {
PROP_0,
PROP_DEFAULT_ENCODING,
PROP_CURSIVE_FONT_FAMILY,
PROP_DEFAULT_FONT_FAMILY,
PROP_FANTASY_FONT_FAMILY,
PROP_MONOSPACE_FONT_FAMILY,
PROP_SANS_SERIF_FONT_FAMILY,
PROP_SERIF_FONT_FAMILY,
PROP_DEFAULT_FONT_SIZE,
PROP_DEFAULT_MONOSPACE_FONT_SIZE,
PROP_MINIMUM_FONT_SIZE,
PROP_MINIMUM_LOGICAL_FONT_SIZE,
PROP_AUTO_LOAD_IMAGES,
PROP_AUTO_SHRINK_IMAGES,
PROP_PRINT_BACKGROUNDS,
PROP_ENABLE_SCRIPTS,
PROP_ENABLE_PLUGINS,
PROP_RESIZABLE_TEXT_AREAS,
PROP_USER_STYLESHEET_URI
};
static void webkit_web_settings_finalize(GObject* object);
static void webkit_web_settings_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec);
static void webkit_web_settings_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec);
static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
{
GObjectClass* gobject_class = G_OBJECT_CLASS(klass);
gobject_class->finalize = webkit_web_settings_finalize;
gobject_class->set_property = webkit_web_settings_set_property;
gobject_class->get_property = webkit_web_settings_get_property;
GParamFlags flags = (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT);
g_object_class_install_property(gobject_class,
PROP_DEFAULT_ENCODING,
g_param_spec_string(
"default-encoding",
"Default Encoding",
"The default encoding used to display text.",
"iso-8859-1",
flags));
g_object_class_install_property(gobject_class,
PROP_CURSIVE_FONT_FAMILY,
g_param_spec_string(
"cursive-font-family",
"Cursive Font Family",
"The default Cursive font family used to display text.",
"serif",
flags));
g_object_class_install_property(gobject_class,
PROP_DEFAULT_FONT_FAMILY,
g_param_spec_string(
"default-font-family",
"Default Font Family",
"The default font family used to display text.",
"sans-serif",
flags));
g_object_class_install_property(gobject_class,
PROP_FANTASY_FONT_FAMILY,
g_param_spec_string(
"fantasy-font-family",
"Fantasy Font Family",
"The default Fantasy font family used to display text.",
"serif",
flags));
g_object_class_install_property(gobject_class,
PROP_MONOSPACE_FONT_FAMILY,
g_param_spec_string(
"monospace-font-family",
"Monospace Font Family",
"The default font family used to display monospace text.",
"monospace",
flags));
g_object_class_install_property(gobject_class,
PROP_SANS_SERIF_FONT_FAMILY,
g_param_spec_string(
"sans-serif-font-family",
"Sans Serif Font Family",
"The default Sans Serif font family used to display text.",
"sans-serif",
flags));
g_object_class_install_property(gobject_class,
PROP_SERIF_FONT_FAMILY,
g_param_spec_string(
"serif-font-family",
"Serif Font Family",
"The default Serif font family used to display text.",
"serif",
flags));
g_object_class_install_property(gobject_class,
PROP_DEFAULT_FONT_SIZE,
g_param_spec_int(
"default-font-size",
"Default Font Size",
"The default font size used to display text.",
5, G_MAXINT, 10,
flags));
g_object_class_install_property(gobject_class,
PROP_DEFAULT_MONOSPACE_FONT_SIZE,
g_param_spec_int(
"default-monospace-font-size",
"Default Monospace Font Size",
"The default font size used to display monospace text.",
5, G_MAXINT, 10,
flags));
g_object_class_install_property(gobject_class,
PROP_MINIMUM_FONT_SIZE,
g_param_spec_int(
"minimum-font-size",
"Minimum Font Size",
"The minimum font size used to display text.",
1, G_MAXINT, 5,
flags));
g_object_class_install_property(gobject_class,
PROP_MINIMUM_LOGICAL_FONT_SIZE,
g_param_spec_int(
"minimum-logical-font-size",
"Minimum Logical Font Size",
"The minimum logical font size used to display text.",
1, G_MAXINT, 5,
flags));
g_object_class_install_property(gobject_class,
PROP_AUTO_LOAD_IMAGES,
g_param_spec_boolean(
"auto-load-images",
"Auto Load Images",
"Load images automatically.",
TRUE,
flags));
g_object_class_install_property(gobject_class,
PROP_AUTO_SHRINK_IMAGES,
g_param_spec_boolean(
"auto-shrink-images",
"Auto Shrink Images",
"Automatically shrink standalone images to fit.",
TRUE,
flags));
g_object_class_install_property(gobject_class,
PROP_PRINT_BACKGROUNDS,
g_param_spec_boolean(
"print-backgrounds",
"Print Backgrounds",
"Whether background images should be printed.",
TRUE,
flags));
g_object_class_install_property(gobject_class,
PROP_ENABLE_SCRIPTS,
g_param_spec_boolean(
"enable-scripts",
"Enable Scripts",
"Enable embedded scripting languages.",
TRUE,
flags));
g_object_class_install_property(gobject_class,
PROP_ENABLE_PLUGINS,
g_param_spec_boolean(
"enable-plugins",
"Enable Plugins",
"Enable embedded plugin objects.",
TRUE,
flags));
g_object_class_install_property(gobject_class,
PROP_RESIZABLE_TEXT_AREAS,
g_param_spec_boolean(
"resizable-text-areas",
"Resizable Text Areas",
"Whether text areas are resizable.",
TRUE,
flags));
g_object_class_install_property(gobject_class,
PROP_USER_STYLESHEET_URI,
g_param_spec_string("user-stylesheet-uri",
"User Stylesheet URI",
"The URI of a stylesheet that is applied to every page.",
0,
flags));
g_type_class_add_private(klass, sizeof(WebKitWebSettingsPrivate));
}
static void webkit_web_settings_init(WebKitWebSettings* web_settings)
{
web_settings->priv = WEBKIT_WEB_SETTINGS_GET_PRIVATE(web_settings);
}
static void webkit_web_settings_finalize(GObject* object)
{
WebKitWebSettings* web_settings = WEBKIT_WEB_SETTINGS(object);
WebKitWebSettingsPrivate* priv = web_settings->priv;
g_free(priv->default_encoding);
g_free(priv->cursive_font_family);
g_free(priv->default_font_family);
g_free(priv->fantasy_font_family);
g_free(priv->monospace_font_family);
g_free(priv->sans_serif_font_family);
g_free(priv->serif_font_family);
g_free(priv->user_stylesheet_uri);
G_OBJECT_CLASS(webkit_web_settings_parent_class)->finalize(object);
}
static void webkit_web_settings_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec)
{
WebKitWebSettings* web_settings = WEBKIT_WEB_SETTINGS(object);
WebKitWebSettingsPrivate* priv = web_settings->priv;
switch(prop_id) {
case PROP_DEFAULT_ENCODING:
g_free(priv->default_encoding);
priv->default_encoding = g_strdup(g_value_get_string(value));
break;
case PROP_CURSIVE_FONT_FAMILY:
g_free(priv->cursive_font_family);
priv->cursive_font_family = g_strdup(g_value_get_string(value));
break;
case PROP_DEFAULT_FONT_FAMILY:
g_free(priv->default_font_family);
priv->default_font_family = g_strdup(g_value_get_string(value));
break;
case PROP_FANTASY_FONT_FAMILY:
g_free(priv->fantasy_font_family);
priv->fantasy_font_family = g_strdup(g_value_get_string(value));
break;
case PROP_MONOSPACE_FONT_FAMILY:
g_free(priv->monospace_font_family);
priv->monospace_font_family = g_strdup(g_value_get_string(value));
break;
case PROP_SANS_SERIF_FONT_FAMILY:
g_free(priv->sans_serif_font_family);
priv->sans_serif_font_family = g_strdup(g_value_get_string(value));
break;
case PROP_SERIF_FONT_FAMILY:
g_free(priv->serif_font_family);
priv->serif_font_family = g_strdup(g_value_get_string(value));
break;
case PROP_DEFAULT_FONT_SIZE:
priv->default_font_size = g_value_get_int(value);
break;
case PROP_DEFAULT_MONOSPACE_FONT_SIZE:
priv->default_monospace_font_size = g_value_get_int(value);
break;
case PROP_MINIMUM_FONT_SIZE:
priv->minimum_font_size = g_value_get_int(value);
break;
case PROP_MINIMUM_LOGICAL_FONT_SIZE:
priv->minimum_logical_font_size = g_value_get_int(value);
break;
case PROP_AUTO_LOAD_IMAGES:
priv->auto_load_images = g_value_get_boolean(value);
break;
case PROP_AUTO_SHRINK_IMAGES:
priv->auto_shrink_images = g_value_get_boolean(value);
break;
case PROP_PRINT_BACKGROUNDS:
priv->print_backgrounds = g_value_get_boolean(value);
break;
case PROP_ENABLE_SCRIPTS:
priv->enable_scripts = g_value_get_boolean(value);
break;
case PROP_ENABLE_PLUGINS:
priv->enable_plugins = g_value_get_boolean(value);
break;
case PROP_RESIZABLE_TEXT_AREAS:
priv->resizable_text_areas = g_value_get_boolean(value);
break;
case PROP_USER_STYLESHEET_URI:
g_free(priv->user_stylesheet_uri);
priv->user_stylesheet_uri = g_strdup(g_value_get_string(value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
}
}
static void webkit_web_settings_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec)
{
WebKitWebSettings* web_settings = WEBKIT_WEB_SETTINGS(object);
WebKitWebSettingsPrivate* priv = web_settings->priv;
switch (prop_id) {
case PROP_DEFAULT_ENCODING:
g_value_set_string(value, priv->default_encoding);
break;
case PROP_CURSIVE_FONT_FAMILY:
g_value_set_string(value, priv->cursive_font_family);
break;
case PROP_DEFAULT_FONT_FAMILY:
g_value_set_string(value, priv->default_font_family);
break;
case PROP_FANTASY_FONT_FAMILY:
g_value_set_string(value, priv->fantasy_font_family);
break;
case PROP_MONOSPACE_FONT_FAMILY:
g_value_set_string(value, priv->monospace_font_family);
break;
case PROP_SANS_SERIF_FONT_FAMILY:
g_value_set_string(value, priv->sans_serif_font_family);
break;
case PROP_SERIF_FONT_FAMILY:
g_value_set_string(value, priv->serif_font_family);
break;
case PROP_DEFAULT_FONT_SIZE:
g_value_set_int(value, priv->default_font_size);
break;
case PROP_DEFAULT_MONOSPACE_FONT_SIZE:
g_value_set_int(value, priv->default_monospace_font_size);
break;
case PROP_MINIMUM_FONT_SIZE:
g_value_set_int(value, priv->minimum_font_size);
break;
case PROP_MINIMUM_LOGICAL_FONT_SIZE:
g_value_set_int(value, priv->minimum_logical_font_size);
break;
case PROP_AUTO_LOAD_IMAGES:
g_value_set_boolean(value, priv->auto_load_images);
break;
case PROP_AUTO_SHRINK_IMAGES:
g_value_set_boolean(value, priv->auto_shrink_images);
break;
case PROP_PRINT_BACKGROUNDS:
g_value_set_boolean(value, priv->print_backgrounds);
break;
case PROP_ENABLE_SCRIPTS:
g_value_set_boolean(value, priv->enable_scripts);
break;
case PROP_ENABLE_PLUGINS:
g_value_set_boolean(value, priv->enable_plugins);
break;
case PROP_RESIZABLE_TEXT_AREAS:
g_value_set_boolean(value, priv->resizable_text_areas);
break;