Changeset 28013 in webkit


Ignore:
Timestamp:
Nov 25, 2007 12:48:48 AM (16 years ago)
Author:
alp@webkit.org
Message:

2007-11-24 Alp Toker <alp@atoker.com>

Reviewed by Mark Rowe.

http://bugs.webkit.org/show_bug.cgi?id=15691
[GTK] Public API does not follow GTK+ conventions

Public API enhancements:

Implement webkit_page_get_editable() and webkit_page_set_editable().

Implement webkit_frame_get_name().

Remove definitions for functions that are unusable or not implemented.
This has caused much confusion for application developers.

Improve documentation.

Correct/constify some return types.

Add parameter checks.

Make the default fixed font "Courier New" to match the other Web
font names.

  • Api/webkitgtkframe.cpp:
  • Api/webkitgtkframe.h:
  • Api/webkitgtkpage.cpp:
  • Api/webkitgtkpage.h:
  • Api/webkitgtkprivate.h:
  • WebCoreSupport/EditorClientGtk.cpp: (WebKit::EditorClient::isEditable):
Location:
trunk/WebKit/gtk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKit/gtk/Api/webkitgtkframe.cpp

    r27991 r28013  
    3333#include "webkitgtkprivate.h"
    3434
     35#include "CString.h"
    3536#include "FrameLoader.h"
    3637#include "FrameLoaderClientGtk.h"
     
    7475    WebKitFramePrivate* privateData = WEBKIT_FRAME_GET_PRIVATE(WEBKIT_FRAME(object));
    7576    privateData->frame->loader()->cancelAndClear();
     77    g_free(privateData->name);
    7678    g_free(privateData->title);
    7779    g_free(privateData->location);
     
    146148static void webkit_frame_init(WebKitFrame* frame)
    147149{
    148 }
    149 
    150 GObject* webkit_frame_new(WebKitPage* page)
    151 {
     150    // TODO: Move constructor code here.
     151}
     152
     153/**
     154 * webkit_frame_new:
     155 * @page: the controlling #WebKitPage
     156 *
     157 * Creates a new #WebKitFrame initialized with a controlling #WebKitPage.
     158 *
     159 * Returns: a new #WebKitFrame
     160 **/
     161WebKitFrame* webkit_frame_new(WebKitPage* page)
     162{
     163    g_return_val_if_fail(WEBKIT_IS_PAGE(page), NULL);
     164
    152165    WebKitFrame* frame = WEBKIT_FRAME(g_object_new(WEBKIT_TYPE_FRAME, NULL));
    153166    WebKitFramePrivate* frameData = WEBKIT_FRAME_GET_PRIVATE(frame);
     
    164177    frameData->frame->init();
    165178    frameData->page = page;
     179    frameData->name = 0;
    166180    frameData->title = 0;
    167181    frameData->location = 0;
    168182
    169     return G_OBJECT(frame);
    170 }
    171 
    172 GObject* webkit_frame_init_with_page(WebKitPage* page, HTMLFrameOwnerElement* element)
     183    return frame;
     184}
     185
     186WebKitFrame* webkit_frame_init_with_page(WebKitPage* page, HTMLFrameOwnerElement* element)
    173187{
    174188    WebKitFrame* frame = WEBKIT_FRAME(g_object_new(WEBKIT_TYPE_FRAME, NULL));
     
    186200    frameData->page = page;
    187201
    188     return G_OBJECT(frame);
    189 }
    190 
    191 WebKitPage*
    192 webkit_frame_get_page(WebKitFrame* frame)
    193 {
     202    return frame;
     203}
     204
     205const gchar* webkit_frame_get_title(WebKitFrame* frame)
     206{
     207    g_return_val_if_fail(WEBKIT_IS_FRAME(frame), NULL);
     208
     209    WebKitFramePrivate* frameData = WEBKIT_FRAME_GET_PRIVATE(frame);
     210    return frameData->title;
     211}
     212
     213const gchar* webkit_frame_get_location(WebKitFrame* frame)
     214{
     215    g_return_val_if_fail(WEBKIT_IS_FRAME(frame), NULL);
     216
     217    WebKitFramePrivate* frameData = WEBKIT_FRAME_GET_PRIVATE(frame);
     218    return frameData->location;
     219}
     220
     221/**
     222 * webkit_frame_get_page:
     223 * @frame: a #WebKitFrame
     224 *
     225 * Returns the #WebKitPage that manages this #WebKitFrame.
     226 *
     227 * The #WebKitPage returned manages the entire hierarchy of #WebKitFrame
     228 * objects that contains @frame.
     229 *
     230 * Return value: the #WebKitPage that manages @frame
     231 */
     232WebKitPage* webkit_frame_get_page(WebKitFrame* frame)
     233{
     234    g_return_val_if_fail(WEBKIT_IS_FRAME(frame), NULL);
     235
    194236    WebKitFramePrivate* frameData = WEBKIT_FRAME_GET_PRIVATE(frame);
    195237    return frameData->page;
    196238}
    197239
    198 gchar* webkit_frame_get_title(WebKitFrame* frame)
    199 {
    200     WebKitFramePrivate* frameData = WEBKIT_FRAME_GET_PRIVATE(frame);
    201     return frameData->title;
    202 }
    203 
    204 gchar* webkit_frame_get_location(WebKitFrame* frame)
    205 {
    206     WebKitFramePrivate* frameData = WEBKIT_FRAME_GET_PRIVATE(frame);
    207     return frameData->location;
     240/**
     241 * webkit_frame_get_name:
     242 * @frame: a #WebKitFrame
     243 *
     244 * Returns the @frame's name
     245 *
     246 * Return value: the name of @frame
     247 */
     248const gchar* webkit_frame_get_name(WebKitFrame* frame)
     249{
     250    g_return_val_if_fail(WEBKIT_IS_FRAME(frame), NULL);
     251
     252    WebKitFramePrivate* frameData = WEBKIT_FRAME_GET_PRIVATE(frame);
     253
     254    if (frameData->name)
     255        return frameData->name;
     256
     257    Frame* coreFrame = core(frame);
     258    g_return_val_if_fail(coreFrame, NULL);
     259
     260    String string = coreFrame->tree()->name();
     261    frameData->name = g_strdup(string.utf8().data());
     262
     263    return frameData->name;
    208264}
    209265
  • trunk/WebKit/gtk/Api/webkitgtkframe.h

    r27991 r28013  
    7272webkit_frame_get_type (void);
    7373
    74 WEBKIT_API GObject*
    75 webkit_frame_new (WebKitPage *page);
     74WEBKIT_API WebKitFrame*
     75webkit_frame_new (WebKitPage* page);
    7676
    7777WEBKIT_API WebKitPage*
    7878webkit_frame_get_page (WebKitFrame* frame);
    7979
    80 WEBKIT_API gchar*
    81 webkit_frame_get_markup (WebKitFrame* frame);
     80WEBKIT_API const gchar*
     81webkit_frame_get_name (WebKitFrame* frame);
    8282
    83 WEBKIT_API gchar*
    84 webkit_frame_get_inner_text (WebKitFrame* frame);
    85 
    86 WEBKIT_API gchar*
    87 webkit_frame_get_selected_text (WebKitFrame* frame);
    88 
    89 WEBKIT_API gchar*
     83WEBKIT_API const gchar*
    9084webkit_frame_get_title (WebKitFrame* frame);
    9185
    92 WEBKIT_API gchar*
     86WEBKIT_API const gchar*
    9387webkit_frame_get_location (WebKitFrame* frame);
    94 
    95 WEBKIT_API GSList*
    96 webkit_frame_get_child_frames (WebKitFrame* frame);
    97 
    98 WEBKIT_API GdkPoint*
    99 webkit_frame_get_position (WebKitFrame* frame);
    100 
    101 WEBKIT_API GdkRectangle*
    102 webkit_frame_get_rectangle (WebKitFrame* frame);
    103 
    104 WEBKIT_API WebKitPage*
    105 webkit_frame_get_page (WebKitFrame* frame);
    10688
    10789WEBKIT_API WebKitFrame*
  • trunk/WebKit/gtk/Api/webkitgtkpage.cpp

    r28009 r28013  
    33 * Copyright (C) 2007 Christian Dywan <christian@twotoasts.de>
    44 * Copyright (C) 2007 Xan Lopez <xan@gnome.org>
     5 * Copyright (C) 2007 Alp Toker <alp@atoker.com>
    56 *
    67 * Redistribution and use in source and binary forms, with or without
     
    388389     */
    389390    /**
    390      * WebKitPage::load-started
     391     * WebKitPage::load-started:
     392     *
    391393     * @page: the object on which the signal is emitted
    392394     * @frame: the frame going to do the load
    393395     *
    394      * When a WebKitFrame begins to load this signal is emitted.
     396     * When a #WebKitFrame begins to load this signal is emitted.
    395397     */
    396398    webkit_page_signals[LOAD_STARTED] = g_signal_new("load_started",
     
    405407
    406408    /**
    407      * WebKitPage::load-progress-changed
    408      * @page: The WebKitPage
    409      * @progress: Global progress
     409     * WebKitPage::load-progress-changed:
     410     *
     411     * @page: the #WebKitPage
     412     * @progress: the global progress
    410413     */
    411414    webkit_page_signals[LOAD_PROGRESS_CHANGED] = g_signal_new("load_progress_changed",
     
    479482
    480483    /**
    481      * WebKitPage::console-message
     484     * WebKitPage::console-message:
     485     *
    482486     * @page: the object on which the signal is emitted
    483487     * @message: the message text
     
    499503
    500504    /**
    501      * WebKitPage::script-alert
     505     * WebKitPage::script-alert:
     506     *
    502507     * @page: the object on which the signal is emitted
    503508     * @frame: the relevant frame
     
    518523
    519524    /**
    520      * WebKitPage::script-confirm
     525     * WebKitPage::script-confirm:
     526     *
    521527     * @page: the object on which the signal is emitted
    522528     * @frame: the relevant frame
    523529     * @message: the message text
    524      * @confirmed: Has the dialog been confirmed?
     530     * @confirmed: whether the dialog has been confirmed
    525531     * @return: TRUE to stop other handlers from being invoked for the event. FALSE to propagate the event further.
    526532     *
     
    538544
    539545    /**
    540      * WebKitPage::script-prompt
     546     * WebKitPage::script-prompt:
     547     *
    541548     * @page: the object on which the signal is emitted
    542549     * @frame: the relevant frame
     
    617624    settings->setSerifFontFamily("Times New Roman");
    618625    settings->setSansSerifFontFamily("Arial");
    619     settings->setFixedFontFamily("Courier");
     626    settings->setFixedFontFamily("Courier New");
    620627    settings->setStandardFontFamily("Arial");
    621628
    622629    GTK_WIDGET_SET_FLAGS(page, GTK_CAN_FOCUS);
    623630    pageData->mainFrame = WEBKIT_FRAME(webkit_frame_new(page));
     631    pageData->editable = false;
    624632}
    625633
     
    633641void webkit_page_set_settings(WebKitPage* page, WebKitSettings* settings)
    634642{
     643    g_return_if_fail(WEBKIT_IS_PAGE(page));
     644    g_return_if_fail(settings);
     645
    635646    notImplemented();
    636647}
     
    638649WebKitSettings* webkit_page_get_settings(WebKitPage* page)
    639650{
     651    g_return_val_if_fail(WEBKIT_IS_PAGE(page), NULL);
     652
    640653    notImplemented();
    641     return 0;
     654    return NULL;
    642655}
    643656
    644657void webkit_page_go_backward(WebKitPage* page)
    645658{
     659    g_return_if_fail(WEBKIT_IS_PAGE(page));
     660
    646661    WebKitPagePrivate* pageData = WEBKIT_PAGE_GET_PRIVATE(page);
    647662    WebKitFramePrivate* frameData = WEBKIT_FRAME_GET_PRIVATE(pageData->mainFrame);
     
    651666void webkit_page_go_forward(WebKitPage* page)
    652667{
     668    g_return_if_fail(WEBKIT_IS_PAGE(page));
     669
    653670    WebKitPagePrivate* pageData = WEBKIT_PAGE_GET_PRIVATE(page);
    654671    WebKitFramePrivate* frameData = WEBKIT_FRAME_GET_PRIVATE(pageData->mainFrame);
     
    658675gboolean webkit_page_can_go_backward(WebKitPage* page)
    659676{
     677    g_return_val_if_fail(WEBKIT_IS_PAGE(page), FALSE);
     678
    660679    WebKitPagePrivate* pageData = WEBKIT_PAGE_GET_PRIVATE(page);
    661680    WebKitFramePrivate* frameData = WEBKIT_FRAME_GET_PRIVATE(pageData->mainFrame);
     
    665684gboolean webkit_page_can_go_forward(WebKitPage* page)
    666685{
     686    g_return_val_if_fail(WEBKIT_IS_PAGE(page), FALSE);
     687
    667688    WebKitPagePrivate* pageData = WEBKIT_PAGE_GET_PRIVATE(page);
    668689    WebKitFramePrivate* frameData = WEBKIT_FRAME_GET_PRIVATE(pageData->mainFrame);
     
    672693void webkit_page_open(WebKitPage* page, const gchar* url)
    673694{
     695    g_return_if_fail(WEBKIT_IS_PAGE(page));
     696
    674697    WebKitPagePrivate* pageData = WEBKIT_PAGE_GET_PRIVATE(page);
    675698    WebKitFramePrivate* frameData = WEBKIT_FRAME_GET_PRIVATE(pageData->mainFrame);
     
    681704void webkit_page_reload(WebKitPage* page)
    682705{
     706    g_return_if_fail(WEBKIT_IS_PAGE(page));
     707
    683708    WebKitPagePrivate* pageData = WEBKIT_PAGE_GET_PRIVATE(page);
    684709    WebKitFramePrivate* frameData = WEBKIT_FRAME_GET_PRIVATE(pageData->mainFrame);
     
    688713void webkit_page_load_string(WebKitPage* page, const gchar* content, const gchar* contentMimeType, const gchar* contentEncoding, const gchar* baseUrl)
    689714{
     715    g_return_if_fail(WEBKIT_IS_PAGE(page));
     716
    690717    WebKitPagePrivate* pageData = WEBKIT_PAGE_GET_PRIVATE(page);
    691718    WebKitFramePrivate* frameData = WEBKIT_FRAME_GET_PRIVATE(pageData->mainFrame);
     
    700727void webkit_page_load_html_string(WebKitPage* page, const gchar* content, const gchar* baseUrl)
    701728{
     729    g_return_if_fail(WEBKIT_IS_PAGE(page));
     730
    702731    webkit_page_load_string(page, content, "text/html", "UTF-8", baseUrl);
    703732}
     
    705734void webkit_page_stop_loading(WebKitPage* page)
    706735{
     736    g_return_if_fail(WEBKIT_IS_PAGE(page));
     737
    707738    WebKitPagePrivate* pageData = WEBKIT_PAGE_GET_PRIVATE(page);
    708739    WebKitFramePrivate* frameData = WEBKIT_FRAME_GET_PRIVATE(pageData->mainFrame);
     
    714745WebKitFrame* webkit_page_get_main_frame(WebKitPage* page)
    715746{
     747    g_return_val_if_fail(WEBKIT_IS_PAGE(page), NULL);
     748
    716749    WebKitPagePrivate* pageData = WEBKIT_PAGE_GET_PRIVATE(page);
    717750    return pageData->mainFrame;
     
    720753void webkit_page_execute_script(WebKitPage* page, const gchar* script)
    721754{
     755    g_return_if_fail(WEBKIT_IS_PAGE(page));
     756    g_return_if_fail(script);
     757
    722758    WebKitPagePrivate* pageData = WEBKIT_PAGE_GET_PRIVATE(page);
    723759    WebKitFramePrivate* frameData = WEBKIT_FRAME_GET_PRIVATE(pageData->mainFrame);
     
    726762        loader->executeScript(String::fromUTF8(script), true);
    727763}
    728 }
     764
     765/**
     766 * webkit_page_get_editable:
     767 * @page: a #WebKitPage
     768 *
     769 * Returns whether the user is allowed to edit the document.
     770 *
     771 * Returns %TRUE if @page allows the user to edit the HTML document, %FALSE if
     772 * it doesn't. You can change @page's document programmatically regardless of
     773 * this setting.
     774 *
     775 * Return value: a #gboolean indicating the editable state
     776 */
     777gboolean webkit_page_get_editable(WebKitPage* page)
     778{
     779    g_return_val_if_fail(WEBKIT_IS_PAGE(page), FALSE);
     780
     781    WebKitPagePrivate* pageData = WEBKIT_PAGE_GET_PRIVATE(page);
     782    ASSERT(pageData);
     783
     784    return pageData->editable;
     785}
     786
     787/**
     788 * webkit_page_set_editable:
     789 * @page: a #WebKitPage
     790 * @flag: a #gboolean indicating the editable state
     791 *
     792 * Sets whether @page allows the user to edit its HTML document.
     793 *
     794 * If @flag is %TRUE, @page allows the user to edit the document. If @flag is
     795 * %FALSE, an element in @page's document can only be edited if the
     796 * CONTENTEDITABLE attribute has been set on the element or one of its parent
     797 * elements. You can change @page's document programmatically regardless of
     798 * this setting. By default a #WebKitPage is not editable.
     799
     800 * Normally, an HTML document is not editable unless the elements within the
     801 * document are editable. This function provides a low-level way to make the
     802 * contents of a #WebKitPage editable without altering the document or DOM
     803 * structure.
     804 */
     805void webkit_page_set_editable(WebKitPage* page, gboolean flag)
     806{
     807    g_return_if_fail(WEBKIT_IS_PAGE(page));
     808    flag = flag != FALSE;
     809
     810    WebKitPagePrivate* pageData = WEBKIT_PAGE_GET_PRIVATE(page);
     811    ASSERT(pageData);
     812
     813    Frame* mainFrame = core(pageData->mainFrame);
     814    g_return_if_fail(mainFrame);
     815
     816    // TODO: What happens when the frame is replaced?
     817    if (flag == pageData->editable)
     818        return;
     819
     820    pageData->editable = flag;
     821
     822    if (flag) {
     823        mainFrame->applyEditingStyleToBodyElement();
     824        // TODO: If the WebKitPage is made editable and the selection is empty, set it to something.
     825        //if (!webkit_page_get_selected_dom_range(page))
     826        //    mainFrame->setSelectionFromNone();
     827    } else
     828        mainFrame->removeEditingStyleFromBodyElement();
     829}
     830
     831}
  • trunk/WebKit/gtk/Api/webkitgtkpage.h

    r27977 r28013  
    9191webkit_page_new (void);
    9292
    93 WEBKIT_API void
    94 webkit_page_set_settings (WebKitPage* page, WebKitSettings* settings);
    95 
    96 WEBKIT_API WebKitSettings*
    97 webkit_page_get_settings (WebKitPage* page);
    98 
    99 WEBKIT_API gboolean
    100 webkit_page_can_cut (WebKitPage* page);
    101 
    102 WEBKIT_API gboolean
    103 webkit_page_can_copy (WebKitPage* page);
    104 
    105 WEBKIT_API gboolean
    106 webkit_page_can_paste (WebKitPage* page);
    107 
    108 WEBKIT_API void
    109 webkit_page_cut (WebKitPage* page);
    110 
    111 WEBKIT_API void
    112 webkit_page_copy (WebKitPage* page);
    113 
    114 WEBKIT_API void
    115 webkit_page_paste (WebKitPage* page);
    116 
    11793WEBKIT_API gboolean
    11894webkit_page_can_go_backward (WebKitPage* page);
     
    147123WEBKIT_API void
    148124webkit_page_execute_script (WebKitPage* page, const gchar* script);
     125
     126WEBKIT_API gboolean
     127webkit_page_get_editable (WebKitPage* page);
     128
     129WEBKIT_API void
     130webkit_page_set_editable (WebKitPage* page, gboolean flag);
     131
    149132G_END_DECLS
    150133
  • trunk/WebKit/gtk/Api/webkitgtkprivate.h

    r27977 r28013  
    7070
    7171        HashSet<GtkWidget*> children;
     72        bool editable;
    7273    };
    7374
     
    7980        WebKitPage* page;
    8081
     82        gchar* name;
    8183        gchar* title;
    8284        gchar* location;
     
    8991    };
    9092
    91     GObject* webkit_frame_init_with_page(WebKitPage*, WebCore::HTMLFrameOwnerElement*);
     93    WebKitFrame* webkit_frame_init_with_page(WebKitPage*, WebCore::HTMLFrameOwnerElement*);
    9294}
    9395
  • trunk/WebKit/gtk/ChangeLog

    r28011 r28013  
     12007-11-24  Alp Toker  <alp@atoker.com>
     2
     3        Reviewed by Mark Rowe.
     4
     5        http://bugs.webkit.org/show_bug.cgi?id=15691
     6        [GTK] Public API does not follow GTK+ conventions
     7
     8        Public API enhancements:
     9
     10        Implement webkit_page_get_editable() and webkit_page_set_editable().
     11
     12        Implement webkit_frame_get_name().
     13
     14        Remove definitions for functions that are unusable or not implemented.
     15        This has caused much confusion for application developers.
     16
     17        Improve documentation.
     18
     19        Correct/constify some return types.
     20
     21        Add parameter checks.
     22
     23        Make the default fixed font "Courier New" to match the other Web
     24        font names.
     25
     26        * Api/webkitgtkframe.cpp:
     27        * Api/webkitgtkframe.h:
     28        * Api/webkitgtkpage.cpp:
     29        * Api/webkitgtkpage.h:
     30        * Api/webkitgtkprivate.h:
     31        * WebCoreSupport/EditorClientGtk.cpp:
     32        (WebKit::EditorClient::isEditable):
     33
    1342007-11-24  Alp Toker  <alp@atoker.com>
    235
  • trunk/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp

    r28011 r28013  
    147147bool EditorClient::isEditable()
    148148{
    149     notImplemented();
    150     return false;
     149    return webkit_page_get_editable(m_page);
    151150}
    152151
Note: See TracChangeset for help on using the changeset viewer.