Bug 48865

Summary: [GTK] Link with target name set does not work correctly
Product: WebKit Reporter: Nicolas Dufresne <nicolas>
Component: WebKitGTKAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: commit-queue, mrobinson, ossy, xan.lopez
Priority: P2 Keywords: Gtk
Version: 528+ (Nightly build)   
Hardware: PC   
OS: Linux   
Attachments:
Description Flags
HTML document that can be use to demonstrate the bug
none
Set global PageGroup name to all created pages
none
Set global PageGroup name to all created pages
none
Set global PageGroup name to all created pages
mrobinson: review-
Set global PageGroup name to all created pages
none
Set global PageGroup name to all created pages none

Nicolas Dufresne
Reported 2010-11-02 13:15:33 PDT
Created attachment 72725 [details] HTML document that can be use to demonstrate the bug When a link with attribute target="myTarget" is clicked twice, two new windows are being opened. This bug is cause by all new pages being created in there own PageGroup. Until a WebKitGTK+ provide an API for PageGroup (see https://bugs.webkit.org/show_bug.cgi?id=16977) we should fix this bug by using a global page group name for all pages.
Attachments
HTML document that can be use to demonstrate the bug (834 bytes, text/html)
2010-11-02 13:15 PDT, Nicolas Dufresne
no flags
Set global PageGroup name to all created pages (2.19 KB, patch)
2010-11-02 13:25 PDT, Nicolas Dufresne
no flags
Set global PageGroup name to all created pages (3.18 KB, patch)
2010-11-04 09:56 PDT, Nicolas Dufresne
no flags
Set global PageGroup name to all created pages (3.68 KB, patch)
2010-11-04 10:04 PDT, Nicolas Dufresne
mrobinson: review-
Set global PageGroup name to all created pages (6.24 KB, patch)
2010-11-05 11:59 PDT, Nicolas Dufresne
no flags
Set global PageGroup name to all created pages (8.70 KB, patch)
2010-11-08 10:11 PST, Nicolas Dufresne
no flags
Nicolas Dufresne
Comment 1 2010-11-02 13:25:29 PDT
Created attachment 72727 [details] Set global PageGroup name to all created pages
Nicolas Dufresne
Comment 2 2010-11-02 14:46:31 PDT
Sorry, wrong reference for WebKitWebGroup API, see https://bugs.webkit.org/show_bug.cgi?id=32789
Nicolas Dufresne
Comment 3 2010-11-03 13:45:31 PDT
Some people ask on IRC if that was fixing some tests (or required additional tests). This bug is covered buy LayoutTests/http/tests/navigation/target-frame-from-window.html and works in the GTK DRT but not in GtkLauncher. The DRT uses private API function webkit_web_view_set_group_name() to set a constant group name to every newly created View/Page. The propose solution is to adopt a default constant group name to all newly created page. While the best final solution would be to give control to user over group names (probably useful for Desktop widgets and/or privacy mode), we should still be able to get correct result with minimum effort, which is why I'm proposing this one liner fix.
Martin Robinson
Comment 4 2010-11-03 23:30:56 PDT
Comment on attachment 72727 [details] Set global PageGroup name to all created pages r-, because, if I recall correctly you are working on a new version of this patch which also unskips a test.
Nicolas Dufresne
Comment 5 2010-11-04 05:42:38 PDT
(In reply to comment #4) > (From update of attachment 72727 [details]) > r-, because, if I recall correctly you are working on a new version of this patch which also unskips a test. Not exactly. What I was trying to say in previous message is that LayoutTests/http/tests/navigation/target-frame-from-window.html is the test that covers that bug (no need to write a new one). What I found is that the test pass in DumpRenderTree but fails in any other WebKitGTK+ application. The reason is because DRT uses a non-public API to do just like my patch does locally, which is to use same PageGroup name for all pages. Please reconsider reviewing this patch.
Martin Robinson
Comment 6 2010-11-04 06:56:28 PDT
One way we can ensure adequate testing here remove webkit_web_view_set_group_name(view, "org.webkit.gtk.DumpRenderTree"); from the DRT and the webkit_web_view_set_group_name private API.
Nicolas Dufresne
Comment 7 2010-11-04 09:56:59 PDT
Created attachment 72951 [details] Set global PageGroup name to all created pages
Nicolas Dufresne
Comment 8 2010-11-04 10:04:58 PDT
Created attachment 72955 [details] Set global PageGroup name to all created pages This one removes the set_group_name() call in DRT and removed the uneeded extern declaration for the private set_group_name() method (not sure if it's used anywhere else now).
Martin Robinson
Comment 9 2010-11-04 14:58:54 PDT
Comment on attachment 72955 [details] Set global PageGroup name to all created pages View in context: https://bugs.webkit.org/attachment.cgi?id=72955&action=review Great! Is it possible to go one step further and remove webkit_web_view_set_group_name from webkitwebview.cpp entirely, since, if I understand correctly, it is now dead code. > WebKit/gtk/webkit/webkitwebview.cpp:3250 > + priv->corePage->setGroupName("WebKitGTK"); I think we should have a comment here explaining why this is necessary.
Nicolas Dufresne
Comment 10 2010-11-05 11:59:47 PDT
Created attachment 73097 [details] Set global PageGroup name to all created pages As requested, I added a comment and removed the set_group_name() method from private API (and all reference to it).
Martin Robinson
Comment 11 2010-11-05 22:25:59 PDT
Comment on attachment 73097 [details] Set global PageGroup name to all created pages Great!
WebKit Commit Bot
Comment 12 2010-11-05 22:52:32 PDT
Comment on attachment 73097 [details] Set global PageGroup name to all created pages Clearing flags on attachment: 73097 Committed r71466: <http://trac.webkit.org/changeset/71466>
WebKit Commit Bot
Comment 13 2010-11-05 22:52:38 PDT
All reviewed patches have been landed. Closing bug.
Csaba Osztrogonác
Comment 14 2010-11-08 04:00:12 PST
Reverted r71466 for reason: It Committed r71510: <http://trac.webkit.org/changeset/71510>
Csaba Osztrogonác
Comment 15 2010-11-08 04:02:19 PST
(In reply to comment #14) > Reverted r71466 for reason: > Committed r71510: <http://trac.webkit.org/changeset/71510> It broke layout tests on all GTK bots. After an inspector test, run-webkit-tests timed out: inspector ................... command timed out: 1200 seconds without output, killing pid 12840 process killed by signal 9 program finished with exit code -1
Nicolas Dufresne
Comment 16 2010-11-08 05:22:27 PST
(In reply to comment #15) > (In reply to comment #14) > > Reverted r71466 for reason: > > Committed r71510: <http://trac.webkit.org/changeset/71510> > > It broke layout tests on all GTK bots. > After an inspector test, run-webkit-tests timed out: > > inspector ................... > command timed out: 1200 seconds without output, killing pid 12840 > process killed by signal 9 > program finished with exit code -1 Please provide additionnal information, this patch does not change the code bahaviour, it just moves the group name setting somewhere else. It most likely the wrong patch being reverted, or simply a luck that you don't get deadlock without it. Thanks.
Csaba Osztrogonác
Comment 17 2010-11-08 05:38:41 PST
(In reply to comment #16) > Please provide additionnal information, this patch does not change the code bahaviour, it just moves the group name setting somewhere else. It most likely the wrong patch being reverted, or simply a luck that you don't get deadlock without it. I don't have any additional information, I only saw that GTK bots were sick 2 days ago. I didn't revert wrong patch, it was the culprit. Maybe a hidden bug was revealed by this patch, I don't know. But I think well functioning buildbots are more important than one patch.
Nicolas Dufresne
Comment 18 2010-11-08 10:11:39 PST
Created attachment 73248 [details] Set global PageGroup name to all created pages Found that when the inspector as same PageGroup as the page being debugged we may deadlock. In this updated patch I reset the Inspector page group to empty string, which result in creating a private group for the inspector. I also updated the changelogs.
Martin Robinson
Comment 19 2010-11-08 10:36:25 PST
Comment on attachment 73248 [details] Set global PageGroup name to all created pages Okay. Let's try this again.
WebKit Commit Bot
Comment 20 2010-11-08 21:06:07 PST
Comment on attachment 73248 [details] Set global PageGroup name to all created pages Clearing flags on attachment: 73248 Committed r71604: <http://trac.webkit.org/changeset/71604>
WebKit Commit Bot
Comment 21 2010-11-08 21:06:13 PST
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.