[epiphany/wip/missing-codecs: 2/8] Switch hosts manager to use a multiplexing API



commit bce147aa5ff95be94f84ddb52571398346c856c2
Author: Michael Catanzaro <mcatanzaro gnome org>
Date:   Sun Nov 6 20:15:18 2016 -0600

    Switch hosts manager to use a multiplexing API
    
    This is more scalable and is needed to avoid code duplication in
    EphyWebView

 embed/ephy-web-view.c                    |   14 ++++++---
 embed/web-extension/ephy-web-extension.c |    5 ++-
 lib/ephy-hosts-manager.c                 |   41 +++++++++++++++++++++++++++---
 lib/ephy-hosts-manager.h                 |   23 ++++++++--------
 4 files changed, 61 insertions(+), 22 deletions(-)
---
diff --git a/embed/ephy-web-view.c b/embed/ephy-web-view.c
index 4a00a60..f75da2b 100644
--- a/embed/ephy-web-view.c
+++ b/embed/ephy-web-view.c
@@ -692,9 +692,10 @@ form_auth_data_save_confirmation_response (GtkInfoBar          *info_bar,
     EphyEmbedShell *shell = ephy_embed_shell_get_default ();
     EphyHostsManager *manager = ephy_embed_shell_get_hosts_manager (shell);
 
-    ephy_hosts_manager_set_save_password_permission_for_address (manager,
-                                                                 ephy_web_view_get_address (data->web_view),
-                                                                 EPHY_HOST_PERMISSION_DENY);
+    ephy_hosts_manager_set_permission_for_address (manager,
+                                                   EPHY_HOST_PERMISSION_TYPE_SAVE_PASSWORD,
+                                                   ephy_web_view_get_address (data->web_view),
+                                                   EPHY_HOST_PERMISSION_DENY);
   }
 
   g_slice_free (FormAuthRequestData, data);
@@ -1271,8 +1272,9 @@ decide_on_permission_request (GtkWidget               *info_bar,
     const char *address = ephy_web_view_get_address (data->web_view);
     if (ephy_embed_utils_address_has_web_scheme (address)) {
       EphyHostsManager *hosts_manager = ephy_embed_shell_get_hosts_manager (ephy_embed_shell_get_default ());
-      ephy_hosts_manager_set_notifications_permission_for_address (
+      ephy_hosts_manager_set_permission_for_address (
         hosts_manager,
+        EPHY_HOST_PERMISSION_TYPE_SHOW_NOTIFICATIONS,
         address,
         response == GTK_RESPONSE_YES ? EPHY_HOST_PERMISSION_ALLOW : EPHY_HOST_PERMISSION_DENY);
     }
@@ -1309,7 +1311,9 @@ permission_request_cb (WebKitWebView           *web_view,
     {
       const char *address = ephy_web_view_get_address (EPHY_WEB_VIEW (web_view));
       EphyHostsManager *hosts_manager = ephy_embed_shell_get_hosts_manager (ephy_embed_shell_get_default ());
-      EphyHostPermission permission = ephy_hosts_manager_get_notifications_permission_for_address 
(hosts_manager, address);
+      EphyHostPermission permission = ephy_hosts_manager_get_permission_for_address (hosts_manager,
+                                                                                     
EPHY_HOST_PERMISSION_TYPE_SHOW_NOTIFICATIONS,
+                                                                                     address);
 
       switch (permission) {
       case EPHY_HOST_PERMISSION_ALLOW:
diff --git a/embed/web-extension/ephy-web-extension.c b/embed/web-extension/ephy-web-extension.c
index ac15e12..1b55d15 100644
--- a/embed/web-extension/ephy-web-extension.c
+++ b/embed/web-extension/ephy-web-extension.c
@@ -277,8 +277,9 @@ should_store_cb (const char *username,
     return;
 
   web_extension = ephy_web_extension_get ();
-  permission = ephy_hosts_manager_get_save_password_permission_for_address (web_extension->hosts_manager,
-                                                                            uri_string);
+  permission = ephy_hosts_manager_get_permission_for_address (web_extension->hosts_manager,
+                                                              EPHY_HOST_PERMISSION_TYPE_SAVE_PASSWORD,
+                                                              uri_string);
 
   if (permission == EPHY_HOST_PERMISSION_DENY) {
     LOG ("User/password storage permission previously denied. Not asking about storing.");
diff --git a/lib/ephy-hosts-manager.c b/lib/ephy-hosts-manager.c
index 4f8082e..235ef93 100644
--- a/lib/ephy-hosts-manager.c
+++ b/lib/ephy-hosts-manager.c
@@ -135,7 +135,7 @@ ephy_hosts_manager_new (void)
   return EPHY_HOSTS_MANAGER (g_object_new (EPHY_TYPE_HOSTS_MANAGER, NULL));
 }
 
-EphyHostPermission
+static EphyHostPermission
 ephy_hosts_manager_get_notifications_permission_for_address (EphyHostsManager *manager,
                                                              const char       *address)
 {
@@ -143,7 +143,7 @@ ephy_hosts_manager_get_notifications_permission_for_address (EphyHostsManager *m
   return g_settings_get_enum (settings, "notifications-permission");
 }
 
-void
+static void
 ephy_hosts_manager_set_notifications_permission_for_address (EphyHostsManager   *manager,
                                                              const char         *address,
                                                              EphyHostPermission  permission)
@@ -152,7 +152,7 @@ ephy_hosts_manager_set_notifications_permission_for_address (EphyHostsManager
   g_settings_set_enum (settings, "notifications-permission", permission);
 }
 
-EphyHostPermission
+static EphyHostPermission
 ephy_hosts_manager_get_save_password_permission_for_address (EphyHostsManager *manager,
                                                              const char       *address)
 {
@@ -160,7 +160,7 @@ ephy_hosts_manager_get_save_password_permission_for_address (EphyHostsManager *m
   return g_settings_get_enum (settings, "save-password-permission");
 }
 
-void
+static void
 ephy_hosts_manager_set_save_password_permission_for_address (EphyHostsManager   *manager,
                                                              const char         *address,
                                                              EphyHostPermission  permission)
@@ -168,3 +168,36 @@ ephy_hosts_manager_set_save_password_permission_for_address (EphyHostsManager
   GSettings *settings = ephy_hosts_manager_get_settings_for_address (manager, address);
   g_settings_set_enum (settings, "save-password-permission", permission);
 }
+
+EphyHostPermission
+ephy_hosts_manager_get_permission_for_address (EphyHostsManager       *manager,
+                                               EphyHostPermissionType  type,
+                                               const char             *address)
+{
+  switch (type) {
+  case EPHY_HOST_PERMISSION_TYPE_SHOW_NOTIFICATIONS:
+    return ephy_hosts_manager_get_notifications_permission_for_address (manager, address);
+  case EPHY_HOST_PERMISSION_TYPE_SAVE_PASSWORD:
+    return ephy_hosts_manager_get_save_password_permission_for_address (manager, address);
+  default:
+    g_assert_not_reached ();
+  }
+}
+
+void
+ephy_hosts_manager_set_permission_for_address (EphyHostsManager       *manager,
+                                               EphyHostPermissionType  type,
+                                               const char             *address,
+                                               EphyHostPermission      permission)
+{
+  switch (type) {
+  case EPHY_HOST_PERMISSION_TYPE_SHOW_NOTIFICATIONS:
+    ephy_hosts_manager_set_notifications_permission_for_address (manager, address, permission);
+    break;
+  case EPHY_HOST_PERMISSION_TYPE_SAVE_PASSWORD:
+    ephy_hosts_manager_set_save_password_permission_for_address (manager, address, permission);
+    break;
+  default:
+    g_assert_not_reached ();
+  }
+}
diff --git a/lib/ephy-hosts-manager.h b/lib/ephy-hosts-manager.h
index ac16f0b..285ed57 100644
--- a/lib/ephy-hosts-manager.h
+++ b/lib/ephy-hosts-manager.h
@@ -35,19 +35,20 @@ typedef enum {
   EPHY_HOST_PERMISSION_ALLOW = 1,
 } EphyHostPermission;
 
-EphyHostsManager*       ephy_hosts_manager_new                                      (void);
-EphyHostPermission      ephy_hosts_manager_get_notifications_permission_for_address (EphyHostsManager    
*manager,
-                                                                                     const char          
*address);
-void                    ephy_hosts_manager_set_notifications_permission_for_address (EphyHostsManager    
*manager,
-                                                                                     const char          
*address,
-                                                                                     EphyHostPermission   
permission);
-EphyHostPermission      ephy_hosts_manager_get_save_password_permission_for_address (EphyHostsManager    
*manager,
-                                                                                     const char          
*address);
-void                    ephy_hosts_manager_set_save_password_permission_for_address (EphyHostsManager    
*manager,
-                                                                                     const char          
*address,
-                                                                                     EphyHostPermission   
permission);
+typedef enum {
+  EPHY_HOST_PERMISSION_TYPE_SHOW_NOTIFICATIONS,
+  EPHY_HOST_PERMISSION_TYPE_SAVE_PASSWORD
+} EphyHostPermissionType;
 
+EphyHostsManager*       ephy_hosts_manager_new                                      (void);
 
+EphyHostPermission      ephy_hosts_manager_get_permission_for_address (EphyHostsManager       *manager,
+                                                                       EphyHostPermissionType  type,
+                                                                       const char             *address);
+void                    ephy_hosts_manager_set_permission_for_address (EphyHostsManager       *manager,
+                                                                       EphyHostPermissionType  type,
+                                                                       const char             *address,
+                                                                       EphyHostPermission      permission);
 G_END_DECLS
 
 #endif /* EPHY_HOSTS_MANAGER_H */


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