[epiphany] Remove legacy option internal-view-source



commit 08a8f34fc3162939653a006d7db822f30495e8b5
Author: Jan-Michael Brummer <jan brummer tabos org>
Date:   Sat Dec 7 14:01:01 2019 +0100

    Remove legacy option internal-view-source
    
    Fixes: https://gitlab.gnome.org/GNOME/epiphany/issues/819

 data/org.gnome.epiphany.gschema.xml |   4 -
 lib/ephy-prefs.h                    |   1 -
 src/window-commands.c               | 305 ++----------------------------------
 3 files changed, 16 insertions(+), 294 deletions(-)
---
diff --git a/data/org.gnome.epiphany.gschema.xml b/data/org.gnome.epiphany.gschema.xml
index eda2f7e1a..01d691a43 100644
--- a/data/org.gnome.epiphany.gschema.xml
+++ b/data/org.gnome.epiphany.gschema.xml
@@ -41,10 +41,6 @@
                <key type="b" name="warn-on-close-unsubmitted-data">
                        <default>true</default>
                </key>
-               <key type="b" name="internal-view-source">
-                       <default>true</default>
-                       <summary>Don’t use an external application to view page source.</summary>
-               </key>
                 <key name="restore-session-policy" enum="org.gnome.Epiphany.EphyPrefsRestoreSessionPolicy">
                         <default>'always'</default>
                         <summary>Whether to automatically restore the last session</summary>
diff --git a/lib/ephy-prefs.h b/lib/ephy-prefs.h
index cc2d0f776..269c31e9d 100644
--- a/lib/ephy-prefs.h
+++ b/lib/ephy-prefs.h
@@ -166,7 +166,6 @@ static const char * const ephy_prefs_web_schema[] = {
 #define EPHY_PREFS_NEW_WINDOWS_IN_TABS                "new-windows-in-tabs"
 #define EPHY_PREFS_WARN_ON_CLOSE_UNSUBMITTED_DATA     "warn-on-close-unsubmitted-data"
 #define EPHY_PREFS_ENABLE_CARET_BROWSING              "enable-caret-browsing"
-#define EPHY_PREFS_INTERNAL_VIEW_SOURCE               "internal-view-source"
 #define EPHY_PREFS_RESTORE_SESSION_POLICY             "restore-session-policy"
 #define EPHY_PREFS_RESTORE_SESSION_DELAYING_LOADS     "restore-session-delaying-loads"
 #define EPHY_PREFS_CONTENT_FILTERS                    "content-filters"
diff --git a/src/window-commands.c b/src/window-commands.c
index 2b48f2855..79a0ef3d0 100644
--- a/src/window-commands.c
+++ b/src/window-commands.c
@@ -1932,21 +1932,31 @@ window_cmd_encoding (GSimpleAction *action,
   gtk_dialog_run (GTK_DIALOG (dialog));
 }
 
-static void
-view_source_embedded (const char *uri,
-                      EphyEmbed  *embed)
+void
+window_cmd_page_source (GSimpleAction *action,
+                        GVariant      *parameter,
+                        gpointer       user_data)
 {
+  EphyWindow *window = user_data;
+  EphyEmbed *embed;
   EphyEmbed *new_embed;
   SoupURI *soup_uri;
   char *source_uri;
+  const char *address;
+
+  embed = ephy_embed_container_get_active_child
+            (EPHY_EMBED_CONTAINER (window));
+  g_assert (embed != NULL);
+
+  address = ephy_web_view_get_address (ephy_embed_get_web_view (embed));
 
   /* Abort if we're already in view source mode */
-  if (strstr (uri, EPHY_VIEW_SOURCE_SCHEME) == uri)
+  if (strstr (address, EPHY_VIEW_SOURCE_SCHEME) == address)
     return;
 
-  soup_uri = soup_uri_new (uri);
+  soup_uri = soup_uri_new (address);
   if (!soup_uri) {
-    g_critical ("Failed to construct SoupURI for %s", uri);
+    g_critical ("Failed to construct SoupURI for %s", address);
     return;
   }
 
@@ -1968,289 +1978,6 @@ view_source_embedded (const char *uri,
   soup_uri_free (soup_uri);
 }
 
-static void
-tmp_source_delete_cb (GObject      *source,
-                      GAsyncResult *result,
-                      gpointer      data)
-{
-  GFile *file = G_FILE (source);
-  GError *error = NULL;
-
-  if (!g_file_delete_finish (G_FILE (source), result, &error)) {
-    g_warning ("Failed to delete %s: %s", g_file_get_path (file), error->message);
-    g_error_free (error);
-  }
-
-  g_object_unref (file);
-}
-
-static void
-delete_tmp_source_file (GOutputStream *ostream)
-{
-  char *uri;
-  GFile *file;
-
-  g_object_get (G_OBJECT (ostream), "ephy-save-temp-source-uri", &uri, NULL);
-  file = g_file_new_for_uri (uri);
-  g_file_delete_async (file, G_PRIORITY_LOW, NULL, tmp_source_delete_cb, NULL);
-
-  g_free (uri);
-}
-
-static void
-portal_opened_cb (GObject      *source,
-                  GAsyncResult *result,
-                  gpointer      data)
-{
-  char *path = data;
-  GFile *file;
-  gboolean ret;
-  GError *error = NULL;
-
-  ret = ephy_open_file_via_flatpak_portal_finish (result, &error);
-  if (!ret) {
-    /* It can be canceled by the user, even without a cancellable. */
-    if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
-      g_warning ("Failed to open file via flatpak portal: %s", error->message);
-    g_error_free (error);
-  }
-
-  file = g_file_new_for_path (path);
-  g_free (path);
-
-  g_file_delete_async (file, G_PRIORITY_LOW, NULL, tmp_source_delete_cb, NULL);
-}
-
-static void
-save_temp_source_close_cb (GOutputStream *ostream,
-                           GAsyncResult  *result,
-                           gpointer       data)
-{
-  const char *uri;
-  GFile *file;
-  GError *error = NULL;
-
-  g_output_stream_close_finish (ostream, result, &error);
-  if (error) {
-    g_warning ("Unable to close file: %s", error->message);
-    g_error_free (error);
-    delete_tmp_source_file (ostream);
-    return;
-  }
-
-  uri = (const char *)g_object_get_data (G_OBJECT (ostream), "ephy-save-temp-source-uri");
-
-  file = g_file_new_for_uri (uri);
-
-  if (ephy_is_running_inside_flatpak ()) {
-    const char *path;
-
-    path = g_file_get_path (file);
-    ephy_open_file_via_flatpak_portal (path, NULL, portal_opened_cb, g_strdup (path));
-    goto out;
-  }
-
-  if (!ephy_file_launch_handler (file, gtk_get_current_event_time ())) {
-    /* Fallback to view the source inside the browser */
-    EphyEmbed *embed;
-
-    uri = (const char *)g_object_get_data (G_OBJECT (ostream),
-                                           "ephy-original-source-uri");
-    embed = (EphyEmbed *)g_object_get_data (G_OBJECT (ostream),
-                                            "ephy-save-temp-source-embed");
-    view_source_embedded (uri, embed);
-  }
-
-out:
-  g_object_unref (ostream);
-  g_object_unref (file);
-}
-
-static void
-save_temp_source_write_cb (GOutputStream *ostream,
-                           GAsyncResult  *result,
-                           GString       *data)
-{
-  GError *error = NULL;
-  gssize written;
-
-  written = g_output_stream_write_finish (ostream, result, &error);
-  if (error) {
-    g_string_free (data, TRUE);
-    g_warning ("Unable to write to file: %s", error->message);
-    g_error_free (error);
-
-    g_output_stream_close_async (ostream, G_PRIORITY_DEFAULT, NULL,
-                                 (GAsyncReadyCallback)save_temp_source_close_cb,
-                                 NULL);
-
-    return;
-  }
-
-  if (written == (gint)data->len) {
-    g_string_free (data, TRUE);
-
-    g_output_stream_close_async (ostream, G_PRIORITY_DEFAULT, NULL,
-                                 (GAsyncReadyCallback)save_temp_source_close_cb,
-                                 NULL);
-
-    return;
-  }
-
-  data->len -= written;
-  data->str += written;
-
-  g_output_stream_write_async (ostream,
-                               data->str, data->len,
-                               G_PRIORITY_DEFAULT, NULL,
-                               (GAsyncReadyCallback)save_temp_source_write_cb,
-                               data);
-}
-
-static void
-get_main_resource_data_cb (WebKitWebResource *resource,
-                           GAsyncResult      *result,
-                           GOutputStream     *ostream)
-{
-  guchar *data;
-  gsize data_length;
-  GString *data_str;
-  GError *error = NULL;
-
-  data = webkit_web_resource_get_data_finish (resource, result, &data_length, &error);
-  if (error) {
-    g_warning ("Unable to get main resource data: %s", error->message);
-    g_error_free (error);
-    delete_tmp_source_file (ostream);
-    return;
-  }
-
-  /* We create a new GString here because we need to make sure
-   * we keep writing in case of partial writes */
-  data_str = g_string_new_len ((gchar *)data, data_length);
-  g_free (data);
-
-  g_output_stream_write_async (ostream,
-                               data_str->str, data_str->len,
-                               G_PRIORITY_DEFAULT, NULL,
-                               (GAsyncReadyCallback)save_temp_source_write_cb,
-                               data_str);
-}
-
-static void
-save_temp_source_replace_cb (GFile        *file,
-                             GAsyncResult *result,
-                             EphyEmbed    *embed)
-{
-  EphyWebView *view;
-  WebKitWebResource *resource;
-  GFileOutputStream *ostream;
-  GError *error = NULL;
-
-  ostream = g_file_replace_finish (file, result, &error);
-  if (error) {
-    g_warning ("Unable to replace file: %s", error->message);
-    g_error_free (error);
-    return;
-  }
-
-  g_object_set_data_full (G_OBJECT (ostream),
-                          "ephy-save-temp-source-uri",
-                          g_file_get_uri (file),
-                          g_free);
-
-  view = ephy_embed_get_web_view (embed);
-
-  g_object_set_data_full (G_OBJECT (ostream),
-                          "ephy-original-source-uri",
-                          g_strdup (webkit_web_view_get_uri (WEBKIT_WEB_VIEW (view))),
-                          g_free),
-
-  g_object_set_data_full (G_OBJECT (ostream),
-                          "ephy-save-temp-source-embed",
-                          g_object_ref (embed),
-                          g_object_unref);
-
-  resource = webkit_web_view_get_main_resource (WEBKIT_WEB_VIEW (view));
-  webkit_web_resource_get_data (resource, NULL,
-                                (GAsyncReadyCallback)get_main_resource_data_cb,
-                                ostream);
-}
-
-static void
-save_temp_source (EphyEmbed *embed,
-                  guint32    user_time)
-{
-  GFile *file;
-  char *tmp, *base;
-
-  if (ephy_is_running_inside_flatpak ()) {
-    /* It has to go here because the portal has no access to our tmpfs.
-     * This means we have to delete it manually! */
-    base = g_build_filename (g_get_user_cache_dir (), "tmp", "viewsourceXXXXXX", NULL);
-  } else {
-    const char *static_temp_dir;
-
-    static_temp_dir = ephy_file_tmp_dir ();
-    if (static_temp_dir == NULL)
-      return;
-
-    base = g_build_filename (static_temp_dir, "viewsourceXXXXXX", NULL);
-  }
-
-  tmp = ephy_file_tmp_filename (base, "html");
-  g_free (base);
-
-  if (tmp == NULL)
-    return;
-
-  file = g_file_new_for_path (tmp);
-  g_file_replace_async (file, NULL, FALSE,
-                        G_FILE_CREATE_REPLACE_DESTINATION | G_FILE_CREATE_PRIVATE,
-                        G_PRIORITY_DEFAULT, NULL,
-                        (GAsyncReadyCallback)save_temp_source_replace_cb,
-                        embed);
-
-  g_object_unref (file);
-  g_free (tmp);
-}
-
-void
-window_cmd_page_source (GSimpleAction *action,
-                        GVariant      *parameter,
-                        gpointer       user_data)
-{
-  EphyWindow *window = user_data;
-  EphyEmbed *embed;
-  const char *address;
-  guint32 user_time;
-
-  embed = ephy_embed_container_get_active_child
-            (EPHY_EMBED_CONTAINER (window));
-  g_assert (embed != NULL);
-
-  address = ephy_web_view_get_address (ephy_embed_get_web_view (embed));
-
-  if (g_settings_get_boolean (EPHY_SETTINGS_MAIN,
-                              EPHY_PREFS_INTERNAL_VIEW_SOURCE)) {
-    view_source_embedded (address, embed);
-    return;
-  }
-
-  user_time = gtk_get_current_event_time ();
-
-  if (g_str_has_prefix (address, "file://")) {
-    GFile *file;
-
-    file = g_file_new_for_uri (address);
-    ephy_file_launch_handler (file, user_time);
-
-    g_object_unref (file);
-  } else {
-    save_temp_source (embed, user_time);
-  }
-}
-
 void
 window_cmd_toggle_inspector (GSimpleAction *action,
                              GVariant      *parameter,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]