[gnome-builder] config-provider: add assertions and cleanup fallbacks



commit 493d61dbd324a3b9c89e4258979513ba55964831
Author: Christian Hergert <chergert redhat com>
Date:   Tue Jan 23 14:37:52 2018 -0800

    config-provider: add assertions and cleanup fallbacks
    
    Lots more assertions, and use g_task_report_error() instead of ad-hoc
    task completion via user data which was a layer violation.

 .../buildsystem/ide-configuration-provider.c       | 65 ++++++++++++++--------
 1 file changed, 42 insertions(+), 23 deletions(-)
---
diff --git a/src/libide/buildsystem/ide-configuration-provider.c 
b/src/libide/buildsystem/ide-configuration-provider.c
index 6da95b738..0ee73aaea 100644
--- a/src/libide/buildsystem/ide-configuration-provider.c
+++ b/src/libide/buildsystem/ide-configuration-provider.c
@@ -16,6 +16,9 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#define G_LOG_DOMAIN "ide-configuration-provider"
+
+#include "application/ide-application.h"
 #include "buildsystem/ide-configuration-manager.h"
 #include "buildsystem/ide-configuration-provider.h"
 
@@ -28,15 +31,17 @@ ide_configuration_provider_real_load_async (IdeConfigurationProvider *self,
                                             GAsyncReadyCallback       callback,
                                             gpointer                  user_data)
 {
-  g_autoptr(GTask) task = user_data;
-
-  g_return_if_fail (IDE_IS_CONFIGURATION_PROVIDER (self));
-  g_return_if_fail (IDE_IS_CONFIGURATION_MANAGER (manager));
-  g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable));
-  g_return_if_fail (G_IS_TASK (task));
-
-  g_warning ("The current IdeConfigurationProvider doesn't implement load_async");
-  g_task_return_boolean (task, TRUE);
+  g_assert (IDE_IS_MAIN_THREAD ());
+  g_assert (IDE_IS_CONFIGURATION_PROVIDER (self));
+  g_assert (IDE_IS_CONFIGURATION_MANAGER (manager));
+  g_assert (!cancellable || G_IS_CANCELLABLE (cancellable));
+
+  g_task_report_new_error (self, callback, user_data,
+                           ide_configuration_provider_real_load_async,
+                           G_IO_ERROR,
+                           G_IO_ERROR_NOT_SUPPORTED,
+                           "%s does not implement load_async",
+                           G_OBJECT_TYPE_NAME (self));
 }
 
 gboolean
@@ -44,16 +49,21 @@ ide_configuration_provider_real_load_finish (IdeConfigurationProvider  *self,
                                              GAsyncResult              *result,
                                              GError                   **error)
 {
-  g_return_val_if_fail (IDE_IS_CONFIGURATION_PROVIDER (self), FALSE);
-  g_return_val_if_fail (G_IS_ASYNC_RESULT (result), FALSE);
+  g_assert (IDE_IS_MAIN_THREAD ());
+  g_assert (IDE_IS_CONFIGURATION_PROVIDER (self));
+  g_assert (G_IS_TASK (result));
+  g_assert (g_task_is_valid (G_TASK (result), self));
 
-  return TRUE;
+  return g_task_propagate_boolean (G_TASK (self), error);
 }
 
 static void
 ide_configuration_provider_real_unload (IdeConfigurationProvider *self,
                                         IdeConfigurationManager  *manager)
 {
+  g_assert (IDE_IS_MAIN_THREAD ());
+  g_assert (IDE_IS_CONFIGURATION_PROVIDER (self));
+  g_assert (IDE_IS_CONFIGURATION_MANAGER (manager));
 }
 
 void
@@ -62,14 +72,16 @@ ide_configuration_provider_real_save_async (IdeConfigurationProvider *self,
                                             GAsyncReadyCallback       callback,
                                             gpointer                  user_data)
 {
-  g_autoptr(GTask) task = user_data;
-
-  g_return_if_fail (IDE_IS_CONFIGURATION_PROVIDER (self));
-  g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable));
-  g_return_if_fail (G_IS_TASK (task));
-
-  g_warning ("The current IdeConfigurationProvider doesn't implement save_async");
-  g_task_return_boolean (task, TRUE);
+  g_assert (IDE_IS_MAIN_THREAD ());
+  g_assert (IDE_IS_CONFIGURATION_PROVIDER (self));
+  g_assert (!cancellable || G_IS_CANCELLABLE (cancellable));
+
+  g_task_report_new_error (self, callback, user_data,
+                           ide_configuration_provider_real_save_async,
+                           G_IO_ERROR,
+                           G_IO_ERROR_NOT_SUPPORTED,
+                           "%s does not implement save_async",
+                           G_OBJECT_TYPE_NAME (self));
 }
 
 gboolean
@@ -77,10 +89,12 @@ ide_configuration_provider_real_save_finish (IdeConfigurationProvider  *self,
                                              GAsyncResult              *result,
                                              GError                   **error)
 {
-  g_return_val_if_fail (IDE_IS_CONFIGURATION_PROVIDER (self), FALSE);
-  g_return_val_if_fail (G_IS_ASYNC_RESULT (result), FALSE);
+  g_assert (IDE_IS_MAIN_THREAD ());
+  g_assert (IDE_IS_CONFIGURATION_PROVIDER (self));
+  g_assert (G_IS_TASK (result));
+  g_assert (g_task_is_valid (G_TASK (result), self));
 
-  return TRUE;
+  return g_task_propagate_boolean (G_TASK (self), error);
 }
 
 static void
@@ -100,6 +114,7 @@ ide_configuration_provider_load_async (IdeConfigurationProvider *self,
                                        GAsyncReadyCallback       callback,
                                        gpointer                  user_data)
 {
+  g_return_if_fail (IDE_IS_MAIN_THREAD ());
   g_return_if_fail (IDE_IS_CONFIGURATION_PROVIDER (self));
   g_return_if_fail (IDE_IS_CONFIGURATION_MANAGER (manager));
   g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable));
@@ -112,6 +127,7 @@ ide_configuration_provider_load_finish (IdeConfigurationProvider  *self,
                                         GAsyncResult              *result,
                                         GError                   **error)
 {
+  g_return_val_if_fail (IDE_IS_MAIN_THREAD (), FALSE);
   g_return_val_if_fail (IDE_IS_CONFIGURATION_PROVIDER (self), FALSE);
   g_return_val_if_fail (G_IS_ASYNC_RESULT (result), FALSE);
 
@@ -122,6 +138,7 @@ void
 ide_configuration_provider_unload (IdeConfigurationProvider *self,
                                    IdeConfigurationManager  *manager)
 {
+  g_return_if_fail (IDE_IS_MAIN_THREAD ());
   g_return_if_fail (IDE_IS_CONFIGURATION_PROVIDER (self));
   g_return_if_fail (IDE_IS_CONFIGURATION_MANAGER (manager));
 
@@ -134,6 +151,7 @@ ide_configuration_provider_save_async (IdeConfigurationProvider *self,
                                        GAsyncReadyCallback       callback,
                                        gpointer                  user_data)
 {
+  g_return_if_fail (IDE_IS_MAIN_THREAD ());
   g_return_if_fail (IDE_IS_CONFIGURATION_PROVIDER (self));
   g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable));
 
@@ -145,6 +163,7 @@ ide_configuration_provider_save_finish (IdeConfigurationProvider  *self,
                                         GAsyncResult              *result,
                                         GError                   **error)
 {
+  g_return_val_if_fail (IDE_IS_MAIN_THREAD (), FALSE);
   g_return_val_if_fail (IDE_IS_CONFIGURATION_PROVIDER (self), FALSE);
   g_return_val_if_fail (G_IS_ASYNC_RESULT (result), FALSE);
 


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