2010-06-04 Martin Robinson <mrobinson@igalia.com>
authormrobinson@webkit.org <mrobinson@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 4 Jun 2010 22:19:41 +0000 (22:19 +0000)
committermrobinson@webkit.org <mrobinson@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 4 Jun 2010 22:19:41 +0000 (22:19 +0000)
        Reviewed by Xan Lopez.

        [GTK] GtkLauncher should support relative file paths
        https://bugs.webkit.org/show_bug.cgi?id=39944

        Allow GtkLauncher to handle relative file paths passed via command-line arguments.

        * GtkLauncher/main.c:
        (filename_to_url): Added.
        (main): Try to resolve arguments as relative file URLs first.

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

WebKitTools/ChangeLog
WebKitTools/GtkLauncher/main.c

index 1ddf55d..8720ea6 100644 (file)
@@ -2,6 +2,19 @@
 
         Reviewed by Xan Lopez.
 
+        [GTK] GtkLauncher should support relative file paths
+        https://bugs.webkit.org/show_bug.cgi?id=39944
+
+        Allow GtkLauncher to handle relative file paths passed via command-line arguments.
+
+        * GtkLauncher/main.c:
+        (filename_to_url): Added.
+        (main): Try to resolve arguments as relative file URLs first.
+
+2010-06-04  Martin Robinson  <mrobinson@igalia.com>
+
+        Reviewed by Xan Lopez.
+
         [GTK] EventSender should call gtk_main_do_event instead of invoking signal handlers directly
         https://bugs.webkit.org/show_bug.cgi?id=40182
 
index 2f9350d..e6d69a9 100644 (file)
@@ -25,6 +25,7 @@
  */
 
 #include <gtk/gtk.h>
+#include <stdlib.h>
 #include <webkit/webkit.h>
 
 static GtkWidget* main_window;
@@ -186,6 +187,21 @@ create_window ()
     return window;
 }
 
+static gchar* filenameToURL(const char* filename)
+{
+    if (!g_file_test(filename, G_FILE_TEST_EXISTS))
+        return 0;
+
+    gchar *fullPath = realpath(filename, 0);
+    if (!fullPath)
+        return 0;
+
+    gchar *fileURL = g_filename_to_uri(fullPath, 0, 0);
+    free(fullPath);
+
+    return fileURL;
+}
+
 int
 main (int argc, char* argv[])
 {
@@ -201,8 +217,11 @@ main (int argc, char* argv[])
     main_window = create_window ();
     gtk_container_add (GTK_CONTAINER (main_window), vbox);
 
-    gchar* uri = (gchar*) (argc > 1 ? argv[1] : "http://www.google.com/");
-    webkit_web_view_load_uri (web_view, uri);
+    gchar *uri = (gchar*) (argc > 1 ? argv[1] : "http://www.google.com/");
+    gchar *fileURL = filenameToURL(uri);
+
+    webkit_web_view_load_uri(web_view, fileURL ? fileURL : uri);
+    g_free(fileURL);
 
     gtk_widget_grab_focus (GTK_WIDGET (web_view));
     gtk_widget_show_all (main_window);