[epiphany/wip/missing-codecs: 2/8] Switch hosts manager to use a multiplexing API
- From: Michael Catanzaro <mcatanzaro src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [epiphany/wip/missing-codecs: 2/8] Switch hosts manager to use a multiplexing API
- Date: Mon, 7 Nov 2016 04:22:52 +0000 (UTC)
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]