From dec8699728fca556f8295d6688d1fc25be974385 Mon Sep 17 00:00:00 2001
From: George Kiagiadakis <george.kiagiadakis@collabora.com>
Date: Fri, 20 Mar 2020 14:42:33 +0200
Subject: [PATCH] session-item: implement default activation sequence with no
 steps

This allows activating a dummy item for unit testing
---
 lib/wp/session-item.c | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/lib/wp/session-item.c b/lib/wp/session-item.c
index cfe52910..9d4937c3 100644
--- a/lib/wp/session-item.c
+++ b/lib/wp/session-item.c
@@ -64,6 +64,15 @@ wp_session_item_finalize (GObject * object)
   G_OBJECT_CLASS (wp_session_item_parent_class)->finalize (object);
 }
 
+static guint
+wp_session_item_default_get_next_step (WpSessionItem * self,
+    WpTransition * transition, guint step)
+{
+  /* the default implementation just activates instantly,
+     without taking any action */
+  return WP_TRANSITION_STEP_NONE;
+}
+
 static void
 wp_session_item_default_reset (WpSessionItem * self)
 {
@@ -84,6 +93,8 @@ wp_session_item_class_init (WpSessionItemClass * klass)
 
   klass->reset = wp_session_item_default_reset;
 
+  klass->get_next_step = wp_session_item_default_get_next_step;
+
   /**
    * WpSessionItem::flags-changed:
    * @self: the session item
@@ -231,12 +242,15 @@ wp_si_transition_get_next_step (WpTransition * transition, guint step)
   g_return_val_if_fail (
       WP_SESSION_ITEM_GET_CLASS (item)->get_next_step,
       WP_TRANSITION_STEP_ERROR);
+
+  step = WP_SESSION_ITEM_GET_CLASS (item)->get_next_step (item,
+      transition, step);
+
   g_return_val_if_fail (
+      step == WP_TRANSITION_STEP_NONE ||
       WP_SESSION_ITEM_GET_CLASS (item)->execute_step,
       WP_TRANSITION_STEP_ERROR);
-
-  return WP_SESSION_ITEM_GET_CLASS (item)->get_next_step (item,
-      transition, step);
+  return step;
 }
 
 static void
-- 
GitLab