Prevent multiple notification permission popup 58/233058/1 accepted/tizen/unified/20200512.052717 submit/tizen/20200512.042615
authorSangYong Park <sy302.park@samsung.com>
Tue, 12 May 2020 01:05:54 +0000 (10:05 +0900)
committerSangYong Park <sy302.park@samsung.com>
Tue, 12 May 2020 01:05:54 +0000 (10:05 +0900)
Keep previous user choice of notification permmision in memory.
and, use it when notification permision is requested.

Change-Id: I7413fef73e0f2bf5eca0ced20de0f508435ee592
Signed-off-by: SangYong Park <sy302.park@samsung.com>
wrt_app/src/web_application.js

index 556ca14..b8cf47f 100644 (file)
@@ -78,9 +78,18 @@ class WebApplication {
             webContents.session.setPermissionRequestHandler(function(webContents, permission, callback) {
                 console.log(`handlePermissionRequests for ${permission}`);
                 if (permission === 'notifications') {
+                    if (!self.notificationPermissionMap)
+                      self.notificationPermissionMap = new Map();
+                    else if (self.notificationPermissionMap.has(webContents)) {
+                      process.nextTick(callback, self.notificationPermissionMap.get(webContents));
+                      return;
+                    }
                     const id = ++self.pendingID;
                     console.log(`Raising a notification permission request with id: ${id}`);
-                    self.pendingCallbacks.set(id, callback);
+                    self.pendingCallbacks.set(id, (result) => {
+                      self.notificationPermissionMap.set(webContents, result);
+                      callback(result);
+                    });
                     wrt.handleNotificationPermissionRequest(id, webContents);
                 } else if (permission === 'media') {
                     const id = ++self.pendingID;