2010-11-05 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 6 Nov 2010 05:52:23 +0000 (05:52 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 6 Nov 2010 05:52:23 +0000 (05:52 +0000)
        Reviewed by Martin Robinson.

        [GTK] Link with target name set does not work correctly
        https://bugs.webkit.org/show_bug.cgi?id=48865

        When a new page is created with a name (target=myFrame), the new
        mainFrame could not be found because they where not stored in the
        same PageGroup. As PageGroup are not exposed externally so the
        simpliest solution is to use a global page group name. This also fixes
        issue with visited link coloration across pages. After this change the
        private function webkit_web_view_set_group_name() was no longer used
        so it was removed completly.

        * WebCoreSupport/ChromeClientGtk.cpp:
        (WebKit::ChromeClient::closeWindowSoon):
        * webkit/webkitprivate.h:
        * webkit/webkitwebview.cpp:
        (webkit_web_view_init):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@71466 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKit/gtk/ChangeLog
WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp
WebKit/gtk/webkit/webkitprivate.h
WebKit/gtk/webkit/webkitwebview.cpp
WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp

index bb6dd84..2d49d64 100644 (file)
@@ -1,3 +1,24 @@
+2010-11-05  Nicolas Dufresne  <nicolas.dufresne@collabora.co.uk>
+
+        Reviewed by Martin Robinson.
+
+        [GTK] Link with target name set does not work correctly
+        https://bugs.webkit.org/show_bug.cgi?id=48865
+
+        When a new page is created with a name (target=myFrame), the new
+        mainFrame could not be found because they where not stored in the
+        same PageGroup. As PageGroup are not exposed externally so the
+        simpliest solution is to use a global page group name. This also fixes
+        issue with visited link coloration across pages. After this change the
+        private function webkit_web_view_set_group_name() was no longer used
+        so it was removed completly.
+
+        * WebCoreSupport/ChromeClientGtk.cpp:
+        (WebKit::ChromeClient::closeWindowSoon):
+        * webkit/webkitprivate.h:
+        * webkit/webkitwebview.cpp:
+        (webkit_web_view_init):
+
 2010-11-05  Chris Marrin  <cmarrin@apple.com>
 
         Reviewed by Simon Fraser.
 2010-11-05  Chris Marrin  <cmarrin@apple.com>
 
         Reviewed by Simon Fraser.
index e864ea7..f330fca 100644 (file)
@@ -255,10 +255,6 @@ void ChromeClient::closeWindowSoon()
 
     if (isHandled)
         return;
 
     if (isHandled)
         return;
-
-    // FIXME: should we clear the frame group name here explicitly? Mac does it.
-    // But this gets cleared in Page's destructor anyway.
-    // webkit_web_view_set_group_name(m_webView, "");
 }
 
 bool ChromeClient::canTakeFocus(FocusDirection)
 }
 
 bool ChromeClient::canTakeFocus(FocusDirection)
index 3ac3563..7385677 100644 (file)
@@ -388,9 +388,6 @@ extern "C" {
     webkit_web_view_get_selected_text (WebKitWebView* web_view);
 
     WEBKIT_API void
     webkit_web_view_get_selected_text (WebKitWebView* web_view);
 
     WEBKIT_API void
-    webkit_web_view_set_group_name(WebKitWebView* web_view, const gchar* group_name);
-
-    WEBKIT_API void
     webkit_web_settings_add_extra_plugin_directory (WebKitWebView *web_view, const gchar* directory);
 
     GSList*
     webkit_web_settings_add_extra_plugin_directory (WebKitWebView *web_view, const gchar* directory);
 
     GSList*
index a3d6c21..4da9e3a 100644 (file)
@@ -3248,6 +3248,12 @@ static void webkit_web_view_init(WebKitWebView* webView)
     pageClients.inspectorClient = new WebKit::InspectorClient(webView);
     priv->corePage = new Page(pageClients);
 
     pageClients.inspectorClient = new WebKit::InspectorClient(webView);
     priv->corePage = new Page(pageClients);
 
+    // Pages within a same session need to be linked together otherwise some functionalities such
+    // as visited link coloration (across pages) and changing popup window location will not work.
+    // To keep the default behavior simple (and because no PageGroup API exist in WebKitGTK at the
+    // time of writing this comment), we simply set all the pages to the same group.
+    priv->corePage->setGroupName("WebKitGTK");
+
     // We also add a simple wrapper class to provide the public
     // interface for the Web Inspector.
     priv->webInspector = adoptPlatformRef(WEBKIT_WEB_INSPECTOR(g_object_new(WEBKIT_TYPE_WEB_INSPECTOR, NULL)));
     // We also add a simple wrapper class to provide the public
     // interface for the Web Inspector.
     priv->webInspector = adoptPlatformRef(WEBKIT_WEB_INSPECTOR(g_object_new(WEBKIT_TYPE_WEB_INSPECTOR, NULL)));
@@ -4513,18 +4519,6 @@ void webkit_web_view_move_cursor(WebKitWebView* webView, GtkMovementStep step, g
     g_signal_emit(webView, webkit_web_view_signals[MOVE_CURSOR], 0, step, count, &handled);
 }
 
     g_signal_emit(webView, webkit_web_view_signals[MOVE_CURSOR], 0, step, count, &handled);
 }
 
-void webkit_web_view_set_group_name(WebKitWebView* webView, const gchar* groupName)
-{
-    g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
-
-    WebKitWebViewPrivate* priv = webView->priv;
-
-    if (!priv->corePage)
-        return;
-
-    priv->corePage->setGroupName(String::fromUTF8(groupName));
-}
-
 /**
  * webkit_web_view_can_undo:
  * @webView: a #WebKitWebView
 /**
  * webkit_web_view_can_undo:
  * @webView: a #WebKitWebView
index 54acc49..5aa61e3 100644 (file)
@@ -69,7 +69,6 @@ extern guint webkit_web_frame_get_pending_unload_event_count(WebKitWebFrame* fra
 extern void webkit_web_settings_add_extra_plugin_directory(WebKitWebView* view, const gchar* directory);
 extern gchar* webkit_web_frame_get_response_mime_type(WebKitWebFrame* frame);
 extern void webkit_web_frame_clear_main_frame_name(WebKitWebFrame* frame);
 extern void webkit_web_settings_add_extra_plugin_directory(WebKitWebView* view, const gchar* directory);
 extern gchar* webkit_web_frame_get_response_mime_type(WebKitWebFrame* frame);
 extern void webkit_web_frame_clear_main_frame_name(WebKitWebFrame* frame);
-extern void webkit_web_view_set_group_name(WebKitWebView* view, const gchar* groupName);
 extern void webkit_reset_origin_access_white_lists();
 }
 
 extern void webkit_reset_origin_access_white_lists();
 }
 
@@ -1000,10 +999,6 @@ static WebKitWebView* createWebView()
 
     DumpRenderTreeSupportGtk::setDumpRenderTreeModeEnabled(true);
 
 
     DumpRenderTreeSupportGtk::setDumpRenderTreeModeEnabled(true);
 
-    // From bug 11756: Use a frame group name for all WebViews created by
-    // DumpRenderTree to allow testing of cross-page frame lookup.
-    webkit_web_view_set_group_name(view, "org.webkit.gtk.DumpRenderTree");
-
     g_object_connect(G_OBJECT(view),
                      "signal::load-started", webViewLoadStarted, 0,
                      "signal::load-finished", webViewLoadFinished, 0,
     g_object_connect(G_OBJECT(view),
                      "signal::load-started", webViewLoadStarted, 0,
                      "signal::load-finished", webViewLoadFinished, 0,