Changeset 28817 in webkit


Ignore:
Timestamp:
Dec 17, 2007 12:51:36 PM (16 years ago)
Author:
alp@webkit.org
Message:

2007-12-17 Luca Bruno <lethalman88@gmail.com>

Reviewed by Alp Toker.

http://bugs.webkit.org/show_bug.cgi?id=13542
gdklauncher doesnt change URL in adress GTKEntry.

Let DOMDocument observers do their work before emitting title-changed.
The load-committed signal has been added for both the view and the frame.

Location:
trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKit/gtk/ChangeLog

    r28737 r28817  
     12007-12-17  Luca Bruno  <lethalman88@gmail.com>
     2
     3        Reviewed by Alp Toker.
     4
     5        http://bugs.webkit.org/show_bug.cgi?id=13542
     6        gdklauncher doesnt change URL in adress GTKEntry.
     7
     8        Let DOMDocument observers do their work before emitting title-changed.
     9        The load-committed signal has been added for both the view and the frame.
     10
     11        * WebCoreSupport/FrameLoaderClientGtk.cpp:
     12        (WebKit::FrameLoaderClient::dispatchDidReceiveTitle): emit title-changed
     13        (WebKit::FrameLoaderClient::setTitle): set private title
     14        (WebKit::FrameLoaderClient::dispatchDidCommitLoad): update the frame uri and emit load-committed
     15        * WebView/webkit-marshal.list:
     16        * WebView/webkitprivate.h:
     17        (_WebKitWebFramePrivate): rename location to uri
     18        * WebView/webkitwebframe.cpp:
     19        (webkit_web_frame_get_location): renamed to *_get_uri
     20        (webkit_web_frame_get_uri):
     21        (webkit_web_frame_real_title_changed): removed (see FrameLoaderClient::setTitle)
     22        (webkit_web_frame_class_init): pass the frame and the title in title-changed, not the uri
     23        (webkit_web_frame_finalize):
     24        * WebView/webkitwebframe.h:
     25        (_WebKitWebFrameClass): removed title_changed
     26        * WebView/webkitwebview.cpp:
     27        (webkit_web_view_class_init): pass only the title in title-changed
     28
    1292007-12-14  Alp Toker  <alp@atoker.com>
    230
  • trunk/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp

    r28737 r28817  
    504504void FrameLoaderClient::dispatchDidReceiveTitle(const String& title)
    505505{
    506     notImplemented();
    507 }
    508 
     506    g_signal_emit_by_name(m_frame, "title-changed", title.utf8().data());
     507
     508    WebKitWebView* page = getViewFromFrame(m_frame);
     509    if (m_frame == webkit_web_view_get_main_frame(page))
     510        g_signal_emit_by_name(page, "title-changed", m_frame, title.utf8().data());
     511}
    509512
    510513void FrameLoaderClient::dispatchDidCommitLoad()
    511514{
    512     notImplemented();
     515    /* Update the URI once first data has been received.
     516     * This means the URI is valid and successfully identify the page that's going to be loaded.
     517     */
     518    WebKitWebFramePrivate* frameData = WEBKIT_WEB_FRAME_GET_PRIVATE(m_frame);
     519    g_free(frameData->uri);
     520    frameData->uri = g_strdup(core(m_frame)->loader()->url().prettyURL().utf8().data());
     521
     522    g_signal_emit_by_name(m_frame, "load-committed");
     523
     524    WebKitWebView* page = getViewFromFrame(m_frame);
     525    if (m_frame == webkit_web_view_get_main_frame(page))
     526        g_signal_emit_by_name(page, "load-committed", m_frame);
    513527}
    514528
     
    634648void FrameLoaderClient::setTitle(const String& title, const KURL& url)
    635649{
    636     WebKitWebView* page = getViewFromFrame(m_frame);
    637 
    638     CString titleString = title.utf8();
    639     DeprecatedCString urlString = url.prettyURL().utf8();
    640     g_signal_emit_by_name(m_frame, "title-changed", titleString.data(), urlString.data());
    641 
    642     if (m_frame == webkit_web_view_get_main_frame(page))
    643         g_signal_emit_by_name(page, "title-changed", titleString.data(), urlString.data());
     650    WebKitWebFramePrivate* frameData = WEBKIT_WEB_FRAME_GET_PRIVATE(m_frame);
     651    g_free(frameData->title);
     652    frameData->title = g_strdup(title.utf8().data());
    644653}
    645654
  • trunk/WebKit/gtk/WebView/webkit-marshal.list

    r28273 r28817  
     1VOID:OBJECT
     2VOID:STRING
    13VOID:STRING,STRING
    24VOID:OBJECT,BOOLEAN
     5VOID:OBJECT,STRING
    36VOID:OBJECT,OBJECT
    47VOID:OBJECT,POINTER,POINTER
  • trunk/WebKit/gtk/WebView/webkitprivate.h

    r28648 r28817  
    7474        gchar* name;
    7575        gchar* title;
    76         gchar* location;
     76        gchar* uri;
    7777    };
    7878
  • trunk/WebKit/gtk/WebView/webkitwebframe.cpp

    r28648 r28817  
    4848enum {
    4949    CLEARED,
     50    LOAD_COMMITTED,
    5051    LOAD_DONE,
    5152    TITLE_CHANGED,
     
    5657static guint webkit_web_frame_signals[LAST_SIGNAL] = { 0, };
    5758
    58 static void webkit_web_frame_real_title_changed(WebKitWebFrame* frame, gchar* title, gchar* location);
    59 
    6059G_DEFINE_TYPE(WebKitWebFrame, webkit_web_frame, G_TYPE_OBJECT)
    6160
     
    6665    g_free(privateData->name);
    6766    g_free(privateData->title);
    68     g_free(privateData->location);
     67    g_free(privateData->uri);
    6968    delete privateData->frame;
    7069
     
    8887            G_TYPE_NONE, 0);
    8988
     89    webkit_web_frame_signals[LOAD_COMMITTED] = g_signal_new("load-committed",
     90            G_TYPE_FROM_CLASS(frameClass),
     91            (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
     92            0,
     93            NULL,
     94            NULL,
     95            g_cclosure_marshal_VOID__VOID,
     96            G_TYPE_NONE, 0);
     97
    9098    webkit_web_frame_signals[LOAD_DONE] = g_signal_new("load-done",
    9199            G_TYPE_FROM_CLASS(frameClass),
     
    101109            G_TYPE_FROM_CLASS(frameClass),
    102110            (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
    103             G_STRUCT_OFFSET(WebKitWebFrameClass, title_changed),
    104             NULL,
    105             NULL,
    106             webkit_marshal_VOID__STRING_STRING,
    107             G_TYPE_NONE, 2,
    108             G_TYPE_STRING, G_TYPE_STRING);
     111            0,                                               
     112            NULL,
     113            NULL,
     114            webkit_marshal_VOID__STRING,
     115            G_TYPE_NONE, 1,
     116            G_TYPE_STRING);
    109117
    110118    webkit_web_frame_signals[HOVERING_OVER_LINK] = g_signal_new("hovering-over-link",
     
    118126            G_TYPE_STRING, G_TYPE_STRING);
    119127
    120     frameClass->title_changed = webkit_web_frame_real_title_changed;
    121 
    122128    /*
    123129     * implementations of virtual methods
    124130     */
    125131    G_OBJECT_CLASS(frameClass)->finalize = webkit_web_frame_finalize;
    126 }
    127 
    128 static void webkit_web_frame_real_title_changed(WebKitWebFrame* frame, gchar* title, gchar* location)
    129 {
    130     WebKitWebFramePrivate* frameData = WEBKIT_WEB_FRAME_GET_PRIVATE(frame);
    131     g_free(frameData->title);
    132     g_free(frameData->location);
    133     frameData->title = g_strdup(title);
    134     frameData->location = g_strdup(location);
    135132}
    136133
     
    168165    frameData->name = 0;
    169166    frameData->title = 0;
    170     frameData->location = 0;
     167    frameData->uri = 0;
    171168
    172169    return frame;
     
    200197}
    201198
    202 const gchar* webkit_web_frame_get_location(WebKitWebFrame* frame)
     199const gchar* webkit_web_frame_get_uri(WebKitWebFrame* frame)
    203200{
    204201    g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), NULL);
    205202
    206203    WebKitWebFramePrivate* frameData = WEBKIT_WEB_FRAME_GET_PRIVATE(frame);
    207     return frameData->location;
     204    return frameData->uri;
    208205}
    209206
     
    419416}
    420417
    421 
    422418#if GTK_CHECK_VERSION(2,10,0)
    423419
  • trunk/WebKit/gtk/WebView/webkitwebframe.h

    r28484 r28817  
    4444    GObjectClass parent;
    4545
    46     void (*title_changed) (WebKitWebFrame* frame, gchar* title, gchar* location);
    47 
    4846    void (*_webkit_reserved1) (void);
    4947    void (*_webkit_reserved2) (void);
     
    5149    void (*_webkit_reserved4) (void);
    5250    void (*_webkit_reserved5) (void);
     51    void (*_webkit_reserved6) (void);
    5352};
    5453
     
    6968
    7069WEBKIT_API const gchar*
    71 webkit_web_frame_get_location (WebKitWebFrame* frame);
     70webkit_web_frame_get_uri (WebKitWebFrame* frame);
    7271
    7372WEBKIT_API WebKitWebFrame*
  • trunk/WebKit/gtk/WebView/webkitwebview.cpp

    r28728 r28817  
    5757    WINDOW_OBJECT_CLEARED,
    5858    LOAD_STARTED,
     59    LOAD_COMMITTED,
    5960    LOAD_PROGRESS_CHANGED,
    6061    LOAD_FINISHED,
     
    331332    window = gtk_widget_get_toplevel(GTK_WIDGET(webView));
    332333    dialog = gtk_message_dialog_new(GTK_WIDGET_TOPLEVEL(window) ? GTK_WINDOW(window) : 0, GTK_DIALOG_DESTROY_WITH_PARENT, messageType, buttons, "%s", message);
    333     gchar* title = g_strconcat("JavaScript - ", webkit_web_frame_get_location(frame), NULL);
     334    gchar* title = g_strconcat("JavaScript - ", webkit_web_frame_get_uri(frame), NULL);
    334335    gtk_window_set_title(GTK_WINDOW(dialog), title);
    335336    g_free(title);
     
    496497
    497498    /**
     499     * WebKitWebView::load-committed:
     500     * @web_view: the object on which the signal is emitted
     501     * @frame: the main frame that received the first data
     502     *
     503     * When a #WebKitWebFrame loaded the first data this signal is emitted.
     504     */
     505    webkit_web_view_signals[LOAD_COMMITTED] = g_signal_new("load-committed",
     506            G_TYPE_FROM_CLASS(webViewClass),
     507            (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
     508            0,
     509            NULL,
     510            NULL,
     511            g_cclosure_marshal_VOID__OBJECT,
     512            G_TYPE_NONE, 1,
     513            WEBKIT_TYPE_WEB_FRAME);
     514
     515
     516    /**
    498517     * WebKitWebView::load-progress-changed:
    499518     * @web_view: the #WebKitWebView
     
    520539            WEBKIT_TYPE_WEB_FRAME);
    521540
     541    /**
     542     * WebKitWebView::title-changed:
     543     * @web_view: the object on which the signal is emitted
     544     * @frame: the main frame
     545     * @title: the new title
     546     *
     547     * When a #WebKitWebFrame changes the document title this signal is emitted.
     548     */
    522549    webkit_web_view_signals[TITLE_CHANGED] = g_signal_new("title-changed",
    523550            G_TYPE_FROM_CLASS(webViewClass),
     
    526553            NULL,
    527554            NULL,
    528             webkit_marshal_VOID__STRING_STRING,
     555            webkit_marshal_VOID__OBJECT_STRING,
    529556            G_TYPE_NONE, 2,
    530             G_TYPE_STRING, G_TYPE_STRING);
     557            WEBKIT_TYPE_WEB_FRAME,
     558            G_TYPE_STRING);
    531559
    532560    webkit_web_view_signals[HOVERING_OVER_LINK] = g_signal_new("hovering-over-link",
  • trunk/WebKitTools/ChangeLog

    r28789 r28817  
     12007-12-17  Luca Bruno  <lethalman88@gmail.com>
     2
     3        Reviewed by Alp Toker.
     4
     5        http://bugs.webkit.org/show_bug.cgi?id=13542
     6        gdklauncher doesnt change URL in adress GTKEntry.
     7
     8        * GtkLauncher/main.c:
     9        (load_commit_cb): added
     10        (title_change_cb):
     11        (create_browser):
     12
    1132007-12-16  Dimitri Glazkov  <dimitri@glazkov.com>
    214
  • trunk/WebKitTools/GtkLauncher/main.c

    r28316 r28817  
    6666
    6767static void
    68 title_change_cb (WebKitWebView* page, const gchar* title, const gchar* uri, gpointer data)
    69 {
    70     gtk_entry_set_text (GTK_ENTRY (uri_entry), uri);
    71 
     68title_change_cb (WebKitWebView* web_view, WebKitWebFrame* web_frame, const gchar* title, gpointer data)
     69{
    7270    if (main_title)
    7371        g_free (main_title);
     
    8482
    8583static void
     84load_commit_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer data)
     85{
     86    const gchar* uri = webkit_web_frame_get_uri(frame);
     87    if (uri)
     88        gtk_entry_set_text (GTK_ENTRY (uri_entry), uri);
     89}
     90
     91static void
    8692destroy_cb (GtkWidget* widget, gpointer data)
    8793{
     
    112118    g_signal_connect (G_OBJECT (web_view), "title-changed", G_CALLBACK (title_change_cb), web_view);
    113119    g_signal_connect (G_OBJECT (web_view), "load-progress-changed", G_CALLBACK (progress_change_cb), web_view);
     120    g_signal_connect (G_OBJECT (web_view), "load-committed", G_CALLBACK (load_commit_cb), web_view);
    114121    g_signal_connect (G_OBJECT (web_view), "hovering-over-link", G_CALLBACK (link_hover_cb), web_view);
    115122
Note: See TracChangeset for help on using the changeset viewer.