Changeset 29723 in webkit


Ignore:
Timestamp:
Jan 22, 2008 12:45:18 PM (16 years ago)
Author:
alp@webkit.org
Message:

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.

Location:
trunk
Files:
2 added
2 deleted
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/ChangeLog

    r29714 r29723  
     12008-01-22  Christian Dywan  <christian@imendio.com>
     2
     3        Reviewed by Alp Toker.
     4
     5        [GTK] API: WebKitWebSettings is not usable
     6        http://bugs.webkit.org/show_bug.cgi?id=16219
     7
     8        Implement WebKitWebSettings.
     9
     10        * GNUmakefile.am:
     11
    1122008-01-22  Simon Hausmann  <hausmann@webkit.org>
    213
  • trunk/GNUmakefile.am

    r29701 r29723  
    239239        WebKit/gtk/WebView/webkitnetworkrequest.h \
    240240        WebKit/gtk/WebView/webkitwebframe.h \
     241        WebKit/gtk/WebView/webkitwebsettings.h \
    241242        WebKit/gtk/WebView/webkitwebview.h
    242243
     
    247248webkitgtk_headers += \
    248249        WebKit/gtk/WebView/webkitprivate.h \
    249         WebKit/gtk/WebView/webkitsettings.h \
    250250        WebKit/gtk/WebCoreSupport/ChromeClientGtk.h \
    251251        WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h \
     
    259259        WebKit/gtk/WebView/webkitnetworkrequest.cpp \
    260260        WebKit/gtk/WebView/webkitprivate.cpp \
    261         WebKit/gtk/WebView/webkitsettings.cpp \
    262261        WebKit/gtk/WebView/webkitwebframe.cpp \
     262        WebKit/gtk/WebView/webkitwebsettings.cpp \
    263263        WebKit/gtk/WebView/webkitwebview.cpp \
    264264        WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp \
  • trunk/WebKit/gtk/ChangeLog

    r29699 r29723  
     12008-01-22  Christian Dywan  <christian@imendio.com>
     2
     3        Reviewed by Alp Toker.
     4
     5        [GTK] API: WebKitWebSettings is not usable
     6        http://bugs.webkit.org/show_bug.cgi?id=16219
     7
     8        Implement WebKitWebSettings.
     9
     10        * WebView/headers.pri:
     11        * WebView/webkit.h:
     12        * WebView/webkitprivate.cpp:
     13        * WebView/webkitprivate.h:
     14        * WebView/webkitsettings.cpp: Removed.
     15        * WebView/webkitsettings.h: Removed.
     16        * WebView/webkitwebsettings.cpp: Added.
     17        * WebView/webkitwebsettings.h: Added.
     18        * WebView/webkitwebview.cpp:
     19        * WebView/webkitwebview.h:
     20
    1212008-01-21  Alp Toker  <alp@atoker.com>
    222
  • trunk/WebKit/gtk/WebView/headers.pri

    r28818 r29723  
    33                     $$PWD/webkitnetworkrequest.h \
    44                     $$PWD/webkitwebframe.h \
     5                     $$PWD/webkitwebsettings.h \
    56                     $$PWD/webkitwebview.h
  • trunk/WebKit/gtk/WebView/webkit.h

    r29663 r29723  
    2424#include <webkitnetworkrequest.h>
    2525#include <webkitwebframe.h>
     26#include <webkitwebsettings.h>
    2627#include <webkitwebview.h>
    2728
  • trunk/WebKit/gtk/WebView/webkitprivate.cpp

    r29698 r29723  
    3737
    3838namespace WebKit {
    39 void apply(WebKitSettings*, WebCore::Settings*)
    40 {
    41     notImplemented();
    42 }
    43 
    44 WebKitSettings* create(WebCore::Settings*)
    45 {
    46     notImplemented();
    47     return 0;
    48 }
    4939
    5040WebKitWebView* getViewFromFrame(WebKitWebFrame* frame)
  • trunk/WebKit/gtk/WebView/webkitprivate.h

    r29663 r29723  
    2828
    2929#include "webkitdefines.h"
    30 #include "webkitsettings.h"
    3130#include "webkitwebview.h"
    3231#include "webkitwebframe.h"
     32#include "webkitwebsettings.h"
    3333#include "webkitnetworkrequest.h"
    3434
     
    3939
    4040namespace WebKit {
    41     void apply(WebKitSettings*,WebCore::Settings*);
    42     WebKitSettings* create(WebCore::Settings*);
    4341    WebKitWebView* getViewFromFrame(WebKitWebFrame*);
    4442
     
    5957    struct _WebKitWebViewPrivate {
    6058        WebCore::Page* corePage;
    61         WebCore::Settings* settings;
     59        WebKitWebSettings* webSettings;
    6260
    6361        WebKitWebFrame* mainFrame;
  • trunk/WebKit/gtk/WebView/webkitwebview.cpp

    r29683 r29723  
    8686    PROP_COPY_TARGET_LIST,
    8787    PROP_PASTE_TARGET_LIST,
    88     PROP_EDITABLE
     88    PROP_EDITABLE,
     89    PROP_SETTINGS
    8990};
    9091
     
    193194        g_value_set_boolean(value, webkit_web_view_get_editable(webView));
    194195        break;
     196    case PROP_SETTINGS:
     197        g_value_set_object(value, webkit_web_view_get_settings(webView));
     198        break;
    195199    default:
    196200        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
    197         break;
    198201    }
    199202}
     
    207210        webkit_web_view_set_editable(webView, g_value_get_boolean(value));
    208211        break;
     212    case PROP_SETTINGS:
     213        webkit_web_view_set_settings(webView, WEBKIT_WEB_SETTINGS(g_value_get_object(value)));
     214        break;
    209215    default:
    210         g_assert_not_reached();
    211         break;
     216        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
    212217    }
    213218}
     
    576581    WebKitWebViewPrivate* webViewData = WEBKIT_WEB_VIEW_GET_PRIVATE(WEBKIT_WEB_VIEW(object));
    577582    delete webViewData->corePage;
    578     delete webViewData->settings;
     583    g_object_unref(webViewData->webSettings);
    579584    g_object_unref(webViewData->mainFrame);
    580585    g_object_unref(webViewData->imContext);
     
    10081013                                                       WEBKIT_PARAM_READABLE));
    10091014
     1015    g_object_class_install_property(objectClass, PROP_SETTINGS,
     1016                                    g_param_spec_object("settings",
     1017                                                        "Settings",
     1018                                                        "An associated WebKitWebSettings instance",
     1019                                                        WEBKIT_TYPE_WEB_SETTINGS,
     1020                                                        WEBKIT_PARAM_READWRITE));
     1021
    10101022    g_object_class_install_property(objectClass, PROP_EDITABLE,
    10111023                                    g_param_spec_boolean("editable",
     
    10161028}
    10171029
     1030static void webkit_web_view_screen_changed(WebKitWebView* webView, GdkScreen* previousScreen, gpointer userdata)
     1031{
     1032    WebKitWebViewPrivate* webViewData = WEBKIT_WEB_VIEW_GET_PRIVATE(webView);
     1033    WebKitWebSettings* webSettings = webViewData->webSettings;
     1034    Settings* settings = webViewData->corePage->settings();
     1035
     1036    guint defaultFontSize, defaultMonospaceFontSize, minimumFontSize, minimumLogicalFontSize;
     1037
     1038    g_object_get(G_OBJECT(webSettings),
     1039                 "default-font-size", &defaultFontSize,
     1040                 "default-monospace-font-size", &defaultMonospaceFontSize,
     1041                 "minimum-font-size", &minimumFontSize,
     1042                 "minimum-logical-font-size", &minimumLogicalFontSize,
     1043                 NULL);
     1044
     1045#if GTK_CHECK_VERSION(2, 10, 0)
     1046    GdkScreen* screen = gtk_widget_has_screen(GTK_WIDGET(webView)) ? gtk_widget_get_screen(GTK_WIDGET(webView)) : gdk_screen_get_default();
     1047    guint DPI = gdk_screen_get_resolution(screen);
     1048#else
     1049    guint DPI = 96;
     1050    g_warning("Cannot retrieve resolution, falling back to 96 DPI");
     1051#endif
     1052    settings->setDefaultFontSize(defaultFontSize / 72.0 * DPI);
     1053    settings->setDefaultFixedFontSize(defaultMonospaceFontSize / 72.0 * DPI);
     1054    settings->setMinimumFontSize(minimumFontSize / 72.0 * DPI);
     1055    settings->setMinimumLogicalFontSize(minimumLogicalFontSize / 72.0 * DPI);
     1056}
     1057
     1058static void webkit_web_view_update_settings(WebKitWebView* webView)
     1059{
     1060    WebKitWebViewPrivate* webViewData = WEBKIT_WEB_VIEW_GET_PRIVATE(webView);
     1061    WebKitWebSettings* webSettings = webViewData->webSettings;
     1062    Settings* settings = webViewData->corePage->settings();
     1063
     1064    gchar* defaultEncoding, *cursiveFontFamily, *defaultFontFamily, *fantasyFontFamily, *monospaceFontFamily, *sansSerifFontFamily, *serifFontFamily, *userStylesheetUri;
     1065    gboolean autoLoadImages, autoShrinkImages, printBackgrounds, enableScripts, enablePlugins, resizableTextAreas;
     1066
     1067    g_object_get(G_OBJECT(webSettings),
     1068                 "default-encoding", &defaultEncoding,
     1069                 "cursive-font-family", &cursiveFontFamily,
     1070                 "default-font-family", &defaultFontFamily,
     1071                 "fantasy-font-family", &fantasyFontFamily,
     1072                 "monospace-font-family", &monospaceFontFamily,
     1073                 "sans-serif-font-family", &sansSerifFontFamily,
     1074                 "serif-font-family", &serifFontFamily,
     1075                 "auto-load-images", &autoLoadImages,
     1076                 "auto-shrink-images", &autoShrinkImages,
     1077                 "print-backgrounds", &printBackgrounds,
     1078                 "enable-scripts", &enableScripts,
     1079                 "enable-plugins", &enablePlugins,
     1080                 "resizable-text-areas", &resizableTextAreas,
     1081                 "user-stylesheet-uri", &userStylesheetUri,
     1082                 NULL);
     1083
     1084    settings->setDefaultTextEncodingName(defaultEncoding);
     1085    settings->setCursiveFontFamily(cursiveFontFamily);
     1086    settings->setStandardFontFamily(defaultFontFamily);
     1087    settings->setFantasyFontFamily(fantasyFontFamily);
     1088    settings->setFixedFontFamily(monospaceFontFamily);
     1089    settings->setSansSerifFontFamily(sansSerifFontFamily);
     1090    settings->setSerifFontFamily(serifFontFamily);
     1091    settings->setLoadsImagesAutomatically(autoLoadImages);
     1092    settings->setShrinksStandaloneImagesToFit(autoShrinkImages);
     1093    settings->setShouldPrintBackgrounds(printBackgrounds);
     1094    settings->setJavaScriptEnabled(enableScripts);
     1095    settings->setPluginsEnabled(enablePlugins);
     1096    settings->setTextAreasAreResizable(resizableTextAreas);
     1097    settings->setUserStyleSheetLocation(userStylesheetUri);
     1098
     1099    g_free(defaultEncoding);
     1100    g_free(cursiveFontFamily);
     1101    g_free(defaultFontFamily);
     1102    g_free(fantasyFontFamily);
     1103    g_free(monospaceFontFamily);
     1104    g_free(sansSerifFontFamily);
     1105    g_free(serifFontFamily);
     1106    g_free(userStylesheetUri);
     1107
     1108    webkit_web_view_screen_changed(webView, NULL, NULL);
     1109}
     1110
     1111static void webkit_web_view_settings_notify(WebKitWebSettings* webSettings, GParamSpec* pspec, WebKitWebView* webView)
     1112{
     1113    WebKitWebViewPrivate* webViewData = WEBKIT_WEB_VIEW_GET_PRIVATE(webView);
     1114    Settings* settings = webViewData->corePage->settings();
     1115
     1116    const gchar* name = g_intern_string(pspec->name);
     1117    GValue value = {0, 0};
     1118    g_value_init(&value, pspec->value_type);
     1119    g_object_get_property(G_OBJECT(webSettings), name, &value);
     1120
     1121    if (name == g_intern_string("default-encoding"))
     1122        settings->setDefaultTextEncodingName(g_value_get_string(&value));
     1123    else if (name == g_intern_string("cursive-font-family"))
     1124        settings->setCursiveFontFamily(g_value_get_string(&value));
     1125    else if (name == g_intern_string("default-font-family"))
     1126        settings->setStandardFontFamily(g_value_get_string(&value));
     1127    else if (name == g_intern_string("fantasy-font-family"))
     1128        settings->setFantasyFontFamily(g_value_get_string(&value));
     1129    else if (name == g_intern_string("monospace-font-family"))
     1130        settings->setFixedFontFamily(g_value_get_string(&value));
     1131    else if (name == g_intern_string("sans-serif-font-family"))
     1132        settings->setSansSerifFontFamily(g_value_get_string(&value));
     1133    else if (name == g_intern_string("serif-font-family"))
     1134        settings->setSerifFontFamily(g_value_get_string(&value));
     1135    else if (name == g_intern_string("default-font-size"))
     1136        settings->setDefaultFontSize(g_value_get_int(&value));
     1137    else if (name == g_intern_string("default-monospace-font-size"))
     1138        settings->setDefaultFixedFontSize(g_value_get_int(&value));
     1139    else if (name == g_intern_string("minimum-font-size"))
     1140        settings->setMinimumFontSize(g_value_get_int(&value));
     1141    else if (name == g_intern_string("minimum-logical-font-size"))
     1142        settings->setMinimumLogicalFontSize(g_value_get_int(&value));
     1143    else if (name == g_intern_string("auto-load-images"))
     1144        settings->setLoadsImagesAutomatically(g_value_get_boolean(&value));
     1145    else if (name == g_intern_string("auto-shrink-images"))
     1146        settings->setShrinksStandaloneImagesToFit(g_value_get_boolean(&value));
     1147    else if (name == g_intern_string("print-backgrounds"))
     1148        settings->setShouldPrintBackgrounds(g_value_get_boolean(&value));
     1149    else if (name == g_intern_string("enable-scripts"))
     1150        settings->setJavaScriptEnabled(g_value_get_boolean(&value));
     1151    else if (name == g_intern_string("enable-plugins"))
     1152        settings->setPluginsEnabled(g_value_get_boolean(&value));
     1153    else if (name == g_intern_string("resizable-text-areas"))
     1154        settings->setTextAreasAreResizable(g_value_get_boolean(&value));
     1155    else if (name == g_intern_string("user-stylesheet-uri"))
     1156        settings->setUserStyleSheetLocation(g_value_get_string(&value));
     1157    else
     1158        g_warning("Unexpected setting '%s'", name);
     1159    g_value_unset(&value);
     1160}
     1161
    10181162static void webkit_web_view_init(WebKitWebView* webView)
    10191163{
    1020     WebKitWebViewPrivate* webViewData = WEBKIT_WEB_VIEW_GET_PRIVATE(WEBKIT_WEB_VIEW(webView));
     1164    WebKitWebViewPrivate* webViewData = WEBKIT_WEB_VIEW_GET_PRIVATE(webView);
    10211165    webViewData->imContext = gtk_im_multicontext_new();
    10221166    webViewData->corePage = new Page(new WebKit::ChromeClient(webView), new WebKit::ContextMenuClient, new WebKit::EditorClient(webView), new WebKit::DragClient, new WebKit::InspectorClient);
    10231167
    1024     Settings* settings = webViewData->corePage->settings();
    1025     settings->setLoadsImagesAutomatically(true);
    1026     settings->setMinimumFontSize(5);
    1027     settings->setDOMPasteAllowed(true);
    1028     settings->setMinimumLogicalFontSize(5);
    1029     settings->setShouldPrintBackgrounds(true);
    1030     settings->setJavaScriptEnabled(true);
    1031     settings->setDefaultFixedFontSize(14);
    1032     settings->setDefaultFontSize(14);
    1033     settings->setSerifFontFamily("Times New Roman");
    1034     settings->setSansSerifFontFamily("Arial");
    1035     settings->setFixedFontFamily("Courier New");
    1036     settings->setStandardFontFamily("Arial");
     1168    webViewData->webSettings = webkit_web_settings_new();
     1169    webkit_web_view_update_settings(webView);
     1170    g_signal_connect(webView, "screen-changed", G_CALLBACK(webkit_web_view_screen_changed), NULL);
     1171    g_signal_connect(webViewData->webSettings, "notify", G_CALLBACK(webkit_web_view_settings_notify), webView);
    10371172
    10381173    GTK_WIDGET_SET_FLAGS(webView, GTK_CAN_FOCUS);
     
    10651200}
    10661201
    1067 void webkit_web_view_set_settings(WebKitWebView* webView, WebKitSettings* settings)
     1202void webkit_web_view_set_settings(WebKitWebView* webView, WebKitWebSettings* webSettings)
    10681203{
    10691204    g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
    1070     g_return_if_fail(settings);
    1071 
    1072     notImplemented();
    1073 }
    1074 
    1075 WebKitSettings* webkit_web_view_get_settings(WebKitWebView* webView)
     1205    g_return_if_fail(WEBKIT_IS_WEB_SETTINGS(webSettings));
     1206
     1207    WebKitWebViewPrivate* webViewData = WEBKIT_WEB_VIEW_GET_PRIVATE(webView);
     1208    g_signal_handlers_disconnect_by_func(webViewData->webSettings, (gpointer)webkit_web_view_settings_notify, webView);
     1209    g_object_unref(webViewData->webSettings);
     1210    g_object_ref(webSettings);
     1211    webViewData->webSettings = webSettings;
     1212    webkit_web_view_update_settings(webView);
     1213    g_signal_connect(webSettings, "notify", G_CALLBACK(webkit_web_view_settings_notify), webView);
     1214}
     1215
     1216WebKitWebSettings* webkit_web_view_get_settings(WebKitWebView* webView)
    10761217{
    10771218    g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL);
    10781219
    1079     notImplemented();
    1080     return NULL;
     1220    WebKitWebViewPrivate* webViewData = WEBKIT_WEB_VIEW_GET_PRIVATE(webView);
     1221    return webViewData->webSettings;
    10811222}
    10821223
  • trunk/WebKit/gtk/WebView/webkitwebview.h

    r29663 r29723  
    2525
    2626#include "webkitdefines.h"
     27#include "webkitwebsettings.h"
    2728
    2829G_BEGIN_DECLS
     
    182183
    183184WEBKIT_API GtkTargetList*
    184 webkit_web_view_get_copy_target_list (WebKitWebView* webView);
     185webkit_web_view_get_copy_target_list (WebKitWebView* web_view);
    185186
    186187WEBKIT_API GtkTargetList*
    187 webkit_web_view_get_paste_target_list (WebKitWebView* webView);
     188webkit_web_view_get_paste_target_list (WebKitWebView* web_view);
     189
     190WEBKIT_API void
     191webkit_web_view_set_settings (WebKitWebView* web_view, WebKitWebSettings* settings);
     192
     193WEBKIT_API WebKitWebSettings*
     194webkit_web_view_get_settings (WebKitWebView* web_view);
    188195
    189196G_END_DECLS
Note: See TracChangeset for help on using the changeset viewer.