diff options
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/ephy-main.c | 28 | ||||
-rw-r--r-- | src/ephy-shell.c | 46 |
3 files changed, 47 insertions, 29 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index a2c2aed97..0b38aa816 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -86,6 +86,7 @@ libephymain_la_CPPFLAGS = \ -DLOADER_DIR=\""$(pkglibdir)/$(EPIPHANY_MAJOR)/loaders"\" \ -DDATADIR=\""$(pkgdatadir)"\" \ -DGNOMELOCALEDIR=\"$(datadir)/locale\" \ + -DEPHY_WEB_EXTENSIONS_DIR=\""$(libdir)/epiphany/$(EPIPHANY_MAJOR)/web-extensions"\" \ $(AM_CPPFLAGS) if WITH_WEBKIT2 @@ -138,7 +139,6 @@ epiphany_CPPFLAGS = \ -I$(top_srcdir)/src/bookmarks \ -DDATADIR=\""$(datadir)"\" \ -DGNOMELOCALEDIR=\"$(datadir)/locale\" \ - -DEPHY_WEB_EXTENSIONS_DIR=\""$(libdir)/epiphany/$(EPIPHANY_MAJOR)/web-extensions"\" \ $(INCINTL) \ $(AM_CPPFLAGS) diff --git a/src/ephy-main.c b/src/ephy-main.c index a78991790..80d076bad 100644 --- a/src/ephy-main.c +++ b/src/ephy-main.c @@ -23,7 +23,6 @@ #include "config.h" #include "ephy-debug.h" -#include "ephy-embed-prefs.h" #include "ephy-file-helpers.h" #include "ephy-initial-state.h" #include "ephy-private.h" @@ -229,10 +228,6 @@ main (int argc, EphyShell *ephy_shell; int status; EphyFileHelpersFlags flags; -#ifdef HAVE_WEBKIT2 - char *pid_str; - char *disk_cache_dir; -#endif #ifdef ENABLE_NLS /* Initialize the i18n stuff */ @@ -462,28 +457,6 @@ main (int argc, gtk_window_set_default_icon_name ("web-browser"); } -#ifdef HAVE_WEBKIT2 - pid_str = g_strdup_printf ("%u", getpid ()); - g_setenv ("EPHY_WEB_EXTENSION_ID", pid_str, TRUE); - g_setenv ("EPHY_DOT_DIR", ephy_dot_dir (), TRUE); - if (private_instance || incognito_mode) - g_setenv ("EPHY_PRIVATE_PROFILE", "1", TRUE); - g_free (pid_str); - - /* Set the web extensions dir ASAP before the process is launched */ - webkit_web_context_set_web_extensions_directory (webkit_web_context_get_default (), - EPHY_WEB_EXTENSIONS_DIR); - - /* Disk Cache */ - disk_cache_dir = g_build_filename (EPHY_EMBED_SHELL_MODE_HAS_PRIVATE_PROFILE (mode) ? - ephy_dot_dir () : g_get_user_cache_dir (), - g_get_prgname (), NULL); - webkit_web_context_set_disk_cache_directory (webkit_web_context_get_default (), - disk_cache_dir); - g_free (disk_cache_dir); -#endif - - ephy_embed_prefs_init (); _ephy_shell_create_instance (mode); startup_flags = get_startup_flags (); @@ -505,7 +478,6 @@ main (int argc, notify_uninit (); ephy_initial_state_save (); - ephy_embed_prefs_shutdown (); ephy_settings_shutdown (); ephy_file_helpers_shutdown (); xmlCleanupParser (); diff --git a/src/ephy-shell.c b/src/ephy-shell.c index 3d8fc523f..252a4cbaf 100644 --- a/src/ephy-shell.c +++ b/src/ephy-shell.c @@ -30,6 +30,7 @@ #include "ephy-bookmarks-import.h" #include "ephy-debug.h" #include "ephy-embed-container.h" +#include "ephy-embed-prefs.h" #include "ephy-embed-single.h" #include "ephy-embed-utils.h" #include "ephy-file-helpers.h" @@ -226,16 +227,52 @@ static GActionEntry app_normal_mode_entries[] = { { "reopen-closed-tab", reopen_closed_tab, NULL, NULL, NULL }, }; +#ifdef HAVE_WEBKIT2 +static void +ephy_shell_setup_environment (EphyShell *shell) +{ + EphyEmbedShellMode mode = ephy_embed_shell_get_mode (EPHY_EMBED_SHELL (shell)); + char *pid_str; + + pid_str = g_strdup_printf ("%u", getpid ()); + g_setenv ("EPHY_WEB_EXTENSION_ID", pid_str, TRUE); + g_setenv ("EPHY_DOT_DIR", ephy_dot_dir (), TRUE); + if (EPHY_EMBED_SHELL_MODE_HAS_PRIVATE_PROFILE (mode)) + g_setenv ("EPHY_PRIVATE_PROFILE", "1", TRUE); + g_free (pid_str); +} +#endif + static void ephy_shell_startup (GApplication* application) { EphyEmbedShellMode mode; +#ifdef HAVE_WEBKIT2 + char *disk_cache_dir; +#endif G_APPLICATION_CLASS (ephy_shell_parent_class)->startup (application); /* We're not remoting; start our services */ mode = ephy_embed_shell_get_mode (EPHY_EMBED_SHELL (application)); +#ifdef HAVE_WEBKIT2 + ephy_shell_setup_environment (EPHY_SHELL (application)); + /* Set the web extensions dir ASAP before the process is launched */ + webkit_web_context_set_web_extensions_directory (webkit_web_context_get_default (), + EPHY_WEB_EXTENSIONS_DIR); + + /* Disk Cache */ + disk_cache_dir = g_build_filename (EPHY_EMBED_SHELL_MODE_HAS_PRIVATE_PROFILE (mode) ? + ephy_dot_dir () : g_get_user_cache_dir (), + g_get_prgname (), NULL); + webkit_web_context_set_disk_cache_directory (webkit_web_context_get_default (), + disk_cache_dir); + g_free (disk_cache_dir); +#endif + + ephy_embed_prefs_init (); + if (mode != EPHY_EMBED_SHELL_MODE_APPLICATION) { GtkBuilder *builder; @@ -266,6 +303,14 @@ ephy_shell_startup (GApplication* application) } static void +ephy_shell_shutdown (GApplication* application) +{ + G_APPLICATION_CLASS (ephy_shell_parent_class)->shutdown (application); + + ephy_embed_prefs_shutdown (); +} + +static void session_load_cb (GObject *object, GAsyncResult *result, gpointer user_data) @@ -500,6 +545,7 @@ ephy_shell_class_init (EphyShellClass *klass) object_class->constructed = ephy_shell_constructed; application_class->startup = ephy_shell_startup; + application_class->shutdown = ephy_shell_shutdown; application_class->activate = ephy_shell_activate; application_class->before_emit = ephy_shell_before_emit; application_class->add_platform_data = ephy_shell_add_platform_data; |