[epiphany] Fix initial notification permissions in web app mode
- From: Michael Catanzaro <mcatanzaro src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [epiphany] Fix initial notification permissions in web app mode
- Date: Tue, 9 May 2017 20:02:59 +0000 (UTC)
commit bde8aee6674782ea2f44cd5c70a21294226178d7
Author: Michael Catanzaro <mcatanzaro igalia com>
Date: Tue May 9 14:52:28 2017 -0500
Fix initial notification permissions in web app mode
If we automatically grant notification permissions, then web apps that
test notification permissions without requesting them, like Riot, will
not work properly. It looks like I only tested my previous attempt to
fix this issue in normal browser mode.
The fix is just one call to ephy_permissions_manager_set_permissions().
That requires moving some code around.
https://bugzilla.gnome.org/show_bug.cgi?id=782386
embed/ephy-web-view.c | 27 ++++++++++++++++-----------
1 files changed, 16 insertions(+), 11 deletions(-)
---
diff --git a/embed/ephy-web-view.c b/embed/ephy-web-view.c
index 4915238..b27c8b7 100644
--- a/embed/ephy-web-view.c
+++ b/embed/ephy-web-view.c
@@ -1487,11 +1487,6 @@ permission_request_cb (WebKitWebView *web_view,
if (WEBKIT_IS_GEOLOCATION_PERMISSION_REQUEST (decision)) {
permission_type = EPHY_PERMISSION_TYPE_ACCESS_LOCATION;
} else if (WEBKIT_IS_NOTIFICATION_PERMISSION_REQUEST (decision)) {
- /* Application mode implies being OK with notifications. */
- if (ephy_embed_shell_get_mode (shell) == EPHY_EMBED_SHELL_MODE_APPLICATION) {
- webkit_permission_request_allow (decision);
- return TRUE;
- }
permission_type = EPHY_PERMISSION_TYPE_SHOW_NOTIFICATIONS;
} else if (WEBKIT_IS_USER_MEDIA_PERMISSION_REQUEST (decision)) {
if (webkit_user_media_permission_is_for_video_device (WEBKIT_USER_MEDIA_PERMISSION_REQUEST (decision)))
@@ -1511,21 +1506,31 @@ permission_request_cb (WebKitWebView *web_view,
permission = ephy_permissions_manager_get_permission (permissions_manager,
permission_type,
origin);
- g_free (origin);
switch (permission) {
case EPHY_PERMISSION_PERMIT:
webkit_permission_request_allow (decision);
- return TRUE;
+ goto out;
case EPHY_PERMISSION_DENY:
webkit_permission_request_deny (decision);
- return TRUE;
+ goto out;
case EPHY_PERMISSION_UNDECIDED:
- default:
- break;
+ /* Application mode implies being OK with notifications. */
+ if (permission_type == EPHY_PERMISSION_TYPE_SHOW_NOTIFICATIONS &&
+ ephy_embed_shell_get_mode (shell) == EPHY_EMBED_SHELL_MODE_APPLICATION) {
+ ephy_permissions_manager_set_permission (permissions_manager,
+ permission_type,
+ origin,
+ EPHY_PERMISSION_PERMIT);
+ webkit_permission_request_allow (decision);
+ } else {
+ show_permission_request_info_bar (web_view, decision, permission_type);
+ }
}
- show_permission_request_info_bar (web_view, decision, permission_type);
+out:
+ g_free (origin);
+
return TRUE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]