RESOLVED FIXED Bug 31470
[Gtk] For removing ICU, implement IDN support by means of libidn
https://bugs.webkit.org/show_bug.cgi?id=31470
Summary [Gtk] For removing ICU, implement IDN support by means of libidn
Dominik Röttsches (drott)
Reported 2009-11-13 05:54:16 PST
On GTK, when removing ICU, support for IDN needs to be shifted from ICU backend to libidn.
Attachments
IDN support through libidn (3.02 KB, patch)
2009-12-10 08:57 PST, Dominik Röttsches (drott)
xan.lopez: review-
IDN support through libidn (2.85 KB, patch)
2010-01-15 01:46 PST, Dominik Röttsches (drott)
no flags
IDN support through glib (1.65 KB, patch)
2010-01-22 08:04 PST, Dominik Röttsches (drott)
no flags
IDN support through glib (1.66 KB, patch)
2010-01-25 00:00 PST, Dominik Röttsches (drott)
xan.lopez: review-
IDN support through glib (1.71 KB, patch)
2010-01-25 04:24 PST, Dominik Röttsches (drott)
no flags
patch (457 bytes, text/plain)
2010-02-14 08:33 PST, Alexander Butenko
no flags
Dominik Röttsches (drott)
Comment 1 2009-12-10 08:57:26 PST
Created attachment 44621 [details] IDN support through libidn IDN support through libidn when using GLib unicode backend. http://www.gnu.org/software/libidn/manual/html_node/Autoconf-tests.html and own experience seems to indicate that testing for libidn availability with header and linkcheck is more stable than using pkg-config for the purpose. I don't know what the project's preference for these tests is. If required, I can surely change it to the pkg-config based approach.
WebKit Review Bot
Comment 2 2009-12-10 09:01:08 PST
style-queue ran check-webkit-style on attachment 44621 [details] without any errors.
Holger Freyther
Comment 3 2009-12-12 22:20:42 PST
The patch seems to be fine.
Xan Lopez
Comment 4 2010-01-14 04:13:47 PST
Comment on attachment 44621 [details] IDN support through libidn >+#elif USE(GLIB_UNICODE) >+ // first translate to ucs4, libidn is expecting code points >+ GOwnPtr<gunichar> ucs4Hostname; >+ GOwnPtr<GError> ucs4Err; >+ ucs4Hostname.set(g_utf16_to_ucs4(str, strLen, 0, 0, &ucs4Err.outPtr())); >+ if (ucs4Err) >+ return; >+ char* encodedHostname = 0; >+ int err; >+ err = idna_to_ascii_4z(ucs4Hostname.get(), &encodedHostname, IDNA_ALLOW_UNASSIGNED); >+ if (err == IDNA_SUCCESS) A nitpick, but I guess retValue or something like that would be better than 'err', since the variable does not necessarily denote an error. >+ buffer.append(encodedHostname, strlen(encodedHostname)); >+ free(encodedHostname); > #endif > } > >Index: autotools/webkit.m4 >=================================================================== >--- autotools/webkit.m4 (revision 51948) >+++ autotools/webkit.m4 (working copy) >@@ -166,6 +166,15 @@ fi > > if test "$with_unicode_backend" = "glib"; then > PKG_CHECK_MODULES([UNICODE], [glib-2.0 pango >= 1.21.0]) >+ >+ AC_MSG_CHECKING([for libidn]) >+ AC_CHECK_HEADER(idna.h, >+ AC_CHECK_LIB(idn, stringprep_check_version, >+ [libidn=yes UNICODE_LIBS="${UNICODE_LIBS} -lidn"], libidn=no), >+ libidn=no) >+ if test "$libidn" = "no" ; then >+ AC_MSG_ERROR([Libidn not found, needed for GLib unicode backend.]) >+ fi > fi I very much prefer to rely on pkg-config for this, as we do everywhere else. Also, is there any chance this could be folded into glib at some point? Depending on a new library for a single function is kind of silly. > > AC_SUBST([UNICODE_CFLAGS])
Dominik Röttsches (drott)
Comment 5 2010-01-15 01:46:27 PST
Created attachment 46657 [details] IDN support through libidn (In reply to comment #4) > (From update of attachment 44621 [details]) > A nitpick, but I guess retValue or something like that would be better than > 'err', since the variable does not necessarily denote an error. > [...] > I very much prefer to rely on pkg-config for this, as we do everywhere else. Comments addressed. > Also, is there any chance this could be folded into glib at some point? > Depending on a new library for a single function is kind of silly. I agree - but don't know about such plans. I could file it as an issue for glib.
Alexander Butenko
Comment 6 2010-01-19 12:57:17 PST
04:37:11 PM) avb: kov: https://bugs.webkit.org/show_bug.cgi?id=31470 (04:37:24 PM) avb: no chances that this will be commited till 1.1.19? (04:39:07 PM) avb: the only thing probably this could be handled by libsoup without libidn (04:39:11 PM) avb: danw: 16:40 (04:40:04 PM) danw: glib has idn support. g_hostname_to_unicode() and g_hostname_to_ascii() 16:55 (04:55:30 PM) avb: danw: so no need in libidn (04:55:38 PM) danw: right (04:55:56 PM) avb: ill copy paste this chat into the bug so seems there is a way to avoid new dependency.
Dominik Röttsches (drott)
Comment 7 2010-01-20 00:41:02 PST
Cancelled the review for the current patch. Thanks for the glib info regarding IDN, Alex - didn't know that. Will try to incorporate it soon, but could take a while, unfortunately not much time for working on this one at the moment.
Dominik Röttsches (drott)
Comment 8 2010-01-22 08:04:38 PST
Created attachment 47205 [details] IDN support through glib Now using glib functions for the same purpose. No extra dependencies and easier memory management through GOwnPtr.
WebKit Review Bot
Comment 9 2010-01-22 08:09:13 PST
Attachment 47205 [details] did not pass style-queue: Failed to run "WebKitTools/Scripts/check-webkit-style" exit_code: 1 WebCore/platform/KURL.cpp:1414: Missing space before ( in if( [whitespace/parens] [5] Total errors found: 1 If any of these errors are false positives, please file a bug against check-webkit-style.
Dominik Röttsches (drott)
Comment 10 2010-01-25 00:00:14 PST
Created attachment 47319 [details] IDN support through glib Style checker issue fixed.
Xan Lopez
Comment 11 2010-01-25 00:43:16 PST
Comment on attachment 47319 [details] IDN support through glib Sorry to be a pain, but could you update the ChangeLog to reflect that you are not using libidn anymore?
Dominik Röttsches (drott)
Comment 12 2010-01-25 04:24:12 PST
Created attachment 47335 [details] IDN support through glib (In reply to comment #11) > (From update of attachment 47319 [details]) > Sorry to be a pain, but could you update the ChangeLog to reflect that you are > not using libidn anymore? Of course, sorry I missed it. Hope it reflects the conclusion appropriately now.
Xan Lopez
Comment 13 2010-01-26 23:17:07 PST
Comment on attachment 47335 [details] IDN support through glib LGTM.
WebKit Commit Bot
Comment 14 2010-01-27 10:19:45 PST
Comment on attachment 47335 [details] IDN support through glib Clearing flags on attachment: 47335 Committed r53940: <http://trac.webkit.org/changeset/53940>
WebKit Commit Bot
Comment 15 2010-01-27 10:19:53 PST
All reviewed patches have been landed. Closing bug.
Alexander Butenko
Comment 16 2010-02-14 08:33:13 PST
Note You need to log in before you can comment on or make changes to this bug.