diff options
-rw-r--r-- | embed/ephy-embed-shell.h | 3 | ||||
-rw-r--r-- | src/ephy-main.c | 25 | ||||
-rw-r--r-- | src/ephy-shell.c | 5 |
3 files changed, 25 insertions, 8 deletions
diff --git a/embed/ephy-embed-shell.h b/embed/ephy-embed-shell.h index d89aafe94..fab9dd449 100644 --- a/embed/ephy-embed-shell.h +++ b/embed/ephy-embed-shell.h @@ -50,7 +50,8 @@ extern EphyEmbedShell *embed_shell; typedef enum { EPHY_EMBED_SHELL_MODE_BROWSER, - EPHY_EMBED_SHELL_MODE_PRIVATE + EPHY_EMBED_SHELL_MODE_PRIVATE, + EPHY_EMBED_SHELL_MODE_APPLICATION } EphyEmbedShellMode; struct _EphyEmbedShell diff --git a/src/ephy-main.c b/src/ephy-main.c index e8e5fb1bf..38787cc3f 100644 --- a/src/ephy-main.c +++ b/src/ephy-main.c @@ -63,6 +63,7 @@ static char **arguments = NULL; /* Only set from options in debug builds */ static gboolean private_instance = FALSE; +static gboolean application_mode = FALSE; static gboolean keep_temp_directory = FALSE; static char *profile_directory = NULL; @@ -94,6 +95,8 @@ static const GOptionEntry option_entries[] = N_("Add a bookmark"), N_("URL") }, { "private-instance", 'p', 0, G_OPTION_ARG_NONE, &private_instance, N_("Start a private instance"), NULL }, + { "application-mode", 'a', 0, G_OPTION_ARG_NONE, &application_mode, + N_("Start the browser in application mode"), NULL }, { "profile", 0, 0, G_OPTION_ARG_STRING, &profile_directory, N_("Profile directory to use in the private instance"), N_("DIR") }, { G_OPTION_REMAINING, '\0', 0, G_OPTION_ARG_FILENAME_ARRAY, &arguments, @@ -240,6 +243,7 @@ main (int argc, gboolean arbitrary_url; EphyShellStartupContext *ctx; EphyStartupFlags startup_flags; + EphyEmbedShellMode mode; int status; #ifdef ENABLE_NLS @@ -360,8 +364,13 @@ main (int argc, exit (1); } - if (profile_directory != NULL && private_instance == FALSE) { - g_print ("--profile can only be used in combination wit h --private-instance\n"); + if (profile_directory != NULL && private_instance == FALSE && application_mode == FALSE) { + g_print ("--profile can only be used in combination wit h --private-instance or --application-mode\n"); + exit (1); + } + + if (application_mode && profile_directory == NULL) { + g_print ("--profile must be used when --application-mode is requested\n"); exit (1); } @@ -401,7 +410,7 @@ main (int argc, /* Start our services */ if (!ephy_file_helpers_init (profile_directory, - private_instance, + private_instance || application_mode, keep_temp_directory || profile_directory, &error)) { show_error_message (&error); @@ -415,8 +424,14 @@ main (int argc, g_setenv ("XLIB_SKIP_ARGB_VISUALS", "1", FALSE); /* Now create the shell */ - _ephy_shell_create_instance (private_instance ? - EPHY_EMBED_SHELL_MODE_PRIVATE : EPHY_EMBED_SHELL_MODE_BROWSER); + if (private_instance) + mode = EPHY_EMBED_SHELL_MODE_PRIVATE; + else if (application_mode) + mode = EPHY_EMBED_SHELL_MODE_APPLICATION; + else + mode = EPHY_EMBED_SHELL_MODE_BROWSER; + + _ephy_shell_create_instance (mode); startup_flags = get_startup_flags (); ctx = ephy_shell_startup_context_new (startup_flags, diff --git a/src/ephy-shell.c b/src/ephy-shell.c index 594301ec0..cbf261a01 100644 --- a/src/ephy-shell.c +++ b/src/ephy-shell.c @@ -179,7 +179,8 @@ ephy_shell_startup (GApplication* application) { /* We're not remoting; start our services */ /* Migrate profile if we are not running a private instance */ - if (ephy_embed_shell_get_mode (EPHY_EMBED_SHELL (application)) != EPHY_EMBED_SHELL_MODE_PRIVATE && + /* TODO: we want to migrate each WebApp profile too */ + if (ephy_embed_shell_get_mode (EPHY_EMBED_SHELL (application)) == EPHY_EMBED_SHELL_MODE_BROWSER && ephy_profile_utils_get_migration_version () < EPHY_PROFILE_MIGRATION_VERSION) { GError *error = NULL; @@ -365,7 +366,7 @@ ephy_shell_before_emit (GApplication *application, static void ephy_shell_constructed (GObject *object) { - if (ephy_embed_shell_get_mode (EPHY_EMBED_SHELL (object)) == EPHY_EMBED_SHELL_MODE_PRIVATE) + if (ephy_embed_shell_get_mode (EPHY_EMBED_SHELL (object)) != EPHY_EMBED_SHELL_MODE_BROWSER) { GApplicationFlags flags; |