Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(289)

Unified Diff: third_party/WebKit/Source/modules/notifications/NotificationManager.cpp

Issue 2244913002: Remove content::NotificationPermissionDispatcher. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@permissions_typemaps
Patch Set: Move service connection to NotificationManager. Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/notifications/NotificationManager.cpp
diff --git a/third_party/WebKit/Source/modules/notifications/NotificationManager.cpp b/third_party/WebKit/Source/modules/notifications/NotificationManager.cpp
index ea8a6f7de4d7595c2eb417e7e9b6d32d8583342b..265a2d23e868fc7466f01c43e25f4a034b62f8e1 100644
--- a/third_party/WebKit/Source/modules/notifications/NotificationManager.cpp
+++ b/third_party/WebKit/Source/modules/notifications/NotificationManager.cpp
@@ -4,10 +4,18 @@
#include "modules/notifications/NotificationManager.h"
+#include "bindings/core/v8/ScriptPromiseResolver.h"
+#include "bindings/core/v8/ScriptState.h"
+#include "modules/notifications/Notification.h"
+#include "modules/notifications/NotificationPermissionCallback.h"
+#include "modules/permissions/Permissions.h"
+#include "platform/UserGestureIndicator.h"
#include "platform/weborigin/SecurityOrigin.h"
#include "public/platform/InterfaceProvider.h"
#include "public/platform/Platform.h"
+#include "public/platform/modules/permissions/permission.mojom-blink.h"
#include "public/platform/modules/permissions/permission_status.mojom-blink.h"
+#include "wtf/Functional.h"
namespace blink {
@@ -35,27 +43,54 @@ const char* NotificationManager::supplementName()
NotificationManager::NotificationManager(ExecutionContext* executionContext)
: ContextLifecycleObserver(executionContext)
{
- Platform::current()->interfaceProvider()->getInterface(mojo::GetProxy(&m_service));
}
NotificationManager::~NotificationManager()
{
}
-mojom::blink::PermissionStatus NotificationManager::permissionStatus() const
+mojom::blink::PermissionStatus NotificationManager::permissionStatus()
{
- mojom::blink::PermissionStatus permissionStatus;
+ if (!m_notificationService)
esprehn 2016/08/15 20:07:48 why does permissionStatus() do: Platform:
+ Platform::current()->interfaceProvider()->getInterface(mojo::GetProxy(&m_notificationService));
- const bool result =
- m_service->GetPermissionStatus(getExecutionContext()->getSecurityOrigin()->toString(), &permissionStatus);
+ mojom::blink::PermissionStatus permissionStatus;
+ const bool result = m_notificationService->GetPermissionStatus(getExecutionContext()->getSecurityOrigin()->toString(), &permissionStatus);
DCHECK(result);
return permissionStatus;
}
+ScriptPromise NotificationManager::requestPermission(ScriptState* scriptState, NotificationPermissionCallback* deprecatedCallback)
+{
+ ExecutionContext* context = scriptState->getExecutionContext();
+
+ if (!m_permissionService)
+ Permissions::connectToService(context, mojo::GetProxy(&m_permissionService));
+
+ ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
+ ScriptPromise promise = resolver->promise();
+
+ m_permissionService->RequestPermission(
+ mojom::blink::PermissionName::NOTIFICATIONS, context->getSecurityOrigin(), UserGestureIndicator::processingUserGesture(),
+ convertToBaseCallback(WTF::bind(&NotificationManager::onPermissionRequestComplete, wrapPersistent(this), wrapPersistent(resolver), wrapPersistent(deprecatedCallback))));
+
+ return promise;
+}
+
void NotificationManager::contextDestroyed()
{
- m_service.reset();
+ m_notificationService.reset();
+ m_permissionService.reset();
+}
+
+void NotificationManager::onPermissionRequestComplete(ScriptPromiseResolver* resolver, NotificationPermissionCallback* deprecatedCallback, mojom::blink::PermissionStatus status)
+{
+ String statusString = Notification::permissionString(status);
+ if (deprecatedCallback)
+ deprecatedCallback->handleEvent(statusString);
+
+ resolver->resolve(statusString);
}
DEFINE_TRACE(NotificationManager)

Powered by Google App Engine
This is Rietveld 408576698