[gnome-software] Allow plugins to disable themselves



commit b043e9f6f351ed9cd295455bc6200ce16bf38f76
Author: Richard Hughes <richard hughsie com>
Date:   Fri Oct 11 09:54:40 2013 +0100

    Allow plugins to disable themselves
    
    We'll need this for future functionality.

 src/gs-application.c              |   21 ++-------------------
 src/gs-plugin-loader.c            |    2 +-
 src/gs-plugin.c                   |    9 +++++++++
 src/gs-plugin.h                   |    2 ++
 src/gs-self-test.c                |    1 +
 src/plugins/gs-plugin-dummy.c     |    5 +++++
 src/plugins/gs-plugin-self-test.c |   12 ++++++++++++
 7 files changed, 32 insertions(+), 20 deletions(-)
---
diff --git a/src/gs-application.c b/src/gs-application.c
index 323e321..1d20273 100644
--- a/src/gs-application.c
+++ b/src/gs-application.c
@@ -159,25 +159,8 @@ gs_application_startup (GApplication *application)
                g_warning ("Failed to setup plugins: %s", error->message);
                exit (1);
        }
-       gs_plugin_loader_set_enabled (app->plugin_loader, "hardcoded-featured", TRUE);
-       gs_plugin_loader_set_enabled (app->plugin_loader, "hardcoded-kind", TRUE);
-       gs_plugin_loader_set_enabled (app->plugin_loader, "hardcoded-popular", TRUE);
-       gs_plugin_loader_set_enabled (app->plugin_loader, "hardcoded-ratings", TRUE);
-       gs_plugin_loader_set_enabled (app->plugin_loader, "hardcoded-screenshots", TRUE);
-       gs_plugin_loader_set_enabled (app->plugin_loader, "menu-spec-categories", TRUE);
-       gs_plugin_loader_set_enabled (app->plugin_loader, "menu-spec-refine", TRUE);
-       gs_plugin_loader_set_enabled (app->plugin_loader, "local-ratings", TRUE);
-       gs_plugin_loader_set_enabled (app->plugin_loader, "packagekit", TRUE);
-       gs_plugin_loader_set_enabled (app->plugin_loader, "systemd-updates", TRUE);
-       gs_plugin_loader_set_enabled (app->plugin_loader, "packagekit-refine", TRUE);
-       gs_plugin_loader_set_enabled (app->plugin_loader, "packagekit-history", TRUE);
-       gs_plugin_loader_set_enabled (app->plugin_loader, "packagekit-offline", TRUE);
-       gs_plugin_loader_set_enabled (app->plugin_loader, "appdata", TRUE);
-       gs_plugin_loader_set_enabled (app->plugin_loader, "appstream", TRUE);
-       gs_plugin_loader_set_enabled (app->plugin_loader, "desktopdb", TRUE);
-       gs_plugin_loader_set_enabled (app->plugin_loader, "datadir-apps", TRUE);
-       gs_plugin_loader_set_enabled (app->plugin_loader, "datadir-filename", TRUE);
-       gs_plugin_loader_set_enabled (app->plugin_loader, "datadir-filename-local", TRUE);
+       gs_plugin_loader_set_enabled (app->plugin_loader,
+                                     "packagekit-updates", FALSE);
 
        /* show the priority of each plugin */
        gs_plugin_loader_dump_state (app->plugin_loader);
diff --git a/src/gs-plugin-loader.c b/src/gs-plugin-loader.c
index fc90d03..8166e3e 100644
--- a/src/gs-plugin-loader.c
+++ b/src/gs-plugin-loader.c
@@ -2056,7 +2056,7 @@ gs_plugin_loader_open_plugin (GsPluginLoader *plugin_loader,
 
        /* print what we know */
        plugin = g_slice_new0 (GsPlugin);
-       plugin->enabled = FALSE;
+       plugin->enabled = TRUE;
        plugin->module = module;
        plugin->pixbuf_size = 64;
        plugin->priority = plugin_prio (plugin);
diff --git a/src/gs-plugin.c b/src/gs-plugin.c
index 0157078..e6cbb29 100644
--- a/src/gs-plugin.c
+++ b/src/gs-plugin.c
@@ -45,6 +45,15 @@ gs_plugin_status_to_string (GsPluginStatus status)
 }
 
 /**
+ * gs_plugin_set_enabled:
+ **/
+void
+gs_plugin_set_enabled (GsPlugin *plugin, gboolean enabled)
+{
+       plugin->enabled = enabled;
+}
+
+/**
  * gs_plugin_add_app:
  **/
 void
diff --git a/src/gs-plugin.h b/src/gs-plugin.h
index 9e302d1..95449b6 100644
--- a/src/gs-plugin.h
+++ b/src/gs-plugin.h
@@ -117,6 +117,8 @@ typedef gboolean     (*GsPluginRefineFunc)          (GsPlugin       *plugin,
 const gchar    *gs_plugin_get_name                     (void);
 void            gs_plugin_initialize                   (GsPlugin       *plugin);
 void            gs_plugin_destroy                      (GsPlugin       *plugin);
+void            gs_plugin_set_enabled                  (GsPlugin       *plugin,
+                                                        gboolean        enabled);
 void            gs_plugin_add_app                      (GList          **list,
                                                         GsApp          *app);
 void            gs_plugin_list_free                    (GList          *list);
diff --git a/src/gs-self-test.c b/src/gs-self-test.c
index 00bfbdf..43cdbe5 100644
--- a/src/gs-self-test.c
+++ b/src/gs-self-test.c
@@ -425,6 +425,7 @@ main (int argc, char **argv)
        gtk_init (&argc, &argv);
        g_test_init (&argc, &argv, NULL);
        g_setenv ("G_MESSAGES_DEBUG", "all", TRUE);
+       g_setenv ("GNOME_SOFTWARE_SELF_TEST", "1", TRUE);
 
        /* only critical and error are fatal */
        g_log_set_fatal_mask (NULL, G_LOG_LEVEL_ERROR | G_LOG_LEVEL_CRITICAL);
diff --git a/src/plugins/gs-plugin-dummy.c b/src/plugins/gs-plugin-dummy.c
index f202527..f198e68 100644
--- a/src/plugins/gs-plugin-dummy.c
+++ b/src/plugins/gs-plugin-dummy.c
@@ -42,6 +42,11 @@ gs_plugin_get_name (void)
 void
 gs_plugin_initialize (GsPlugin *plugin)
 {
+       if (g_getenv ("GNOME_SOFTWARE_SELF_TEST") == NULL) {
+               g_debug ("disabling '%s' as not in self test", plugin->name);
+               gs_plugin_set_enabled (plugin, FALSE);
+       }
+
        /* create private area */
        plugin->priv = GS_PLUGIN_GET_PRIVATE (GsPluginPrivate);
        plugin->priv->dummy = 999;
diff --git a/src/plugins/gs-plugin-self-test.c b/src/plugins/gs-plugin-self-test.c
index dae6e06..85e6942 100644
--- a/src/plugins/gs-plugin-self-test.c
+++ b/src/plugins/gs-plugin-self-test.c
@@ -42,6 +42,18 @@ gs_plugin_get_priority (GsPlugin *plugin)
 }
 
 /**
+ * gs_plugin_initialize:
+ */
+void
+gs_plugin_initialize (GsPlugin *plugin)
+{
+       if (g_getenv ("GNOME_SOFTWARE_SELF_TEST") == NULL) {
+               g_debug ("disabling '%s' as not in self test", plugin->name);
+               gs_plugin_set_enabled (plugin, FALSE);
+       }
+}
+
+/**
  * gs_plugin_refine:
  */
 gboolean


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