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

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

Issue 2244913002: Remove content::NotificationPermissionDispatcher. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@permissions_typemaps
Patch Set: Rebased. 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/Notification.cpp
diff --git a/third_party/WebKit/Source/modules/notifications/Notification.cpp b/third_party/WebKit/Source/modules/notifications/Notification.cpp
index 42da08ac1f503960eb58cc9b1236cadb5efc0e63..d144c097cc0670fa215ac275ac52615b0c8a417e 100644
--- a/third_party/WebKit/Source/modules/notifications/Notification.cpp
+++ b/third_party/WebKit/Source/modules/notifications/Notification.cpp
@@ -31,6 +31,7 @@
#include "modules/notifications/Notification.h"
#include "bindings/core/v8/ExceptionState.h"
+#include "bindings/core/v8/ScriptPromiseResolver.h"
#include "bindings/core/v8/ScriptState.h"
#include "bindings/core/v8/SerializedScriptValueFactory.h"
#include "bindings/modules/v8/V8NotificationAction.h"
@@ -44,17 +45,16 @@
#include "modules/notifications/NotificationData.h"
#include "modules/notifications/NotificationManager.h"
#include "modules/notifications/NotificationOptions.h"
-#include "modules/notifications/NotificationPermissionClient.h"
+#include "modules/notifications/NotificationPermissionCallback.h"
#include "modules/notifications/NotificationResourcesLoader.h"
+#include "modules/permissions/Permissions.h"
#include "platform/RuntimeEnabledFeatures.h"
#include "platform/UserGestureIndicator.h"
#include "public/platform/Platform.h"
#include "public/platform/WebSecurityOrigin.h"
-#include "public/platform/WebString.h"
#include "public/platform/modules/notifications/WebNotificationAction.h"
#include "public/platform/modules/notifications/WebNotificationConstants.h"
#include "public/platform/modules/notifications/WebNotificationManager.h"
-#include "public/platform/modules/permissions/permission_status.mojom-blink.h"
#include "wtf/Assertions.h"
#include "wtf/Functional.h"
@@ -355,13 +355,19 @@ String Notification::permission(ExecutionContext* context)
ScriptPromise Notification::requestPermission(ScriptState* scriptState, NotificationPermissionCallback* deprecatedCallback)
{
ExecutionContext* context = scriptState->getExecutionContext();
- if (NotificationPermissionClient* permissionClient = NotificationPermissionClient::from(context))
- return permissionClient->requestPermission(scriptState, deprecatedCallback);
- // The context has been detached. Return a promise that will never settle.
- DCHECK(context->activeDOMObjectsAreStopped());
+ mojom::blink::PermissionServicePtr permissionService;
+ Permissions::connectToService(context, mojo::GetProxy(&permissionService));
haraken 2016/08/13 01:54:32 I'd prefer connecting to the service in the constr
Reilly Grant (use Gerrit) 2016/08/15 17:55:01 I forgot to remove it. This is a static function s
- return ScriptPromise();
+ ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
+ ScriptPromise promise = resolver->promise();
+
+ mojom::blink::PermissionService* rawPermissionService = permissionService.get();
+ rawPermissionService->RequestPermission(
+ mojom::blink::PermissionName::NOTIFICATIONS, context->getSecurityOrigin(), UserGestureIndicator::processingUserGesture(),
+ convertToBaseCallback(WTF::bind(&Notification::onPermissionRequestComplete, passed(std::move(permissionService)), wrapPersistent(resolver), wrapPersistent(deprecatedCallback))));
haraken 2016/08/13 01:54:32 Instead of moving the ownership of the service, I'
+
+ return promise;
}
size_t Notification::maxActions()
@@ -397,6 +403,15 @@ bool Notification::hasPendingActivity() const
return m_state == NotificationStateShowing || m_prepareShowMethodRunner->isActive() || m_loader;
}
+void Notification::onPermissionRequestComplete(mojom::blink::PermissionServicePtr permissionService, ScriptPromiseResolver* resolver, NotificationPermissionCallback* deprecatedCallback, mojom::blink::PermissionStatus status)
+{
+ String statusString = permissionString(status);
+ if (deprecatedCallback)
+ deprecatedCallback->handleEvent(statusString);
+
+ resolver->resolve(statusString);
+}
+
DEFINE_TRACE(Notification)
{
visitor->trace(m_prepareShowMethodRunner);

Powered by Google App Engine
This is Rietveld 408576698