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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "modules/notifications/NotificationManager.h" 5 #include "modules/notifications/NotificationManager.h"
6 6
7 #include "bindings/core/v8/ScriptPromiseResolver.h"
8 #include "bindings/core/v8/ScriptState.h"
9 #include "modules/notifications/Notification.h"
10 #include "modules/notifications/NotificationPermissionCallback.h"
11 #include "modules/permissions/Permissions.h"
12 #include "platform/UserGestureIndicator.h"
7 #include "platform/weborigin/SecurityOrigin.h" 13 #include "platform/weborigin/SecurityOrigin.h"
8 #include "public/platform/InterfaceProvider.h" 14 #include "public/platform/InterfaceProvider.h"
9 #include "public/platform/Platform.h" 15 #include "public/platform/Platform.h"
16 #include "public/platform/modules/permissions/permission.mojom-blink.h"
10 #include "public/platform/modules/permissions/permission_status.mojom-blink.h" 17 #include "public/platform/modules/permissions/permission_status.mojom-blink.h"
18 #include "wtf/Functional.h"
11 19
12 namespace blink { 20 namespace blink {
13 21
14 // static 22 // static
15 NotificationManager* NotificationManager::from(ExecutionContext* executionContex t) 23 NotificationManager* NotificationManager::from(ExecutionContext* executionContex t)
16 { 24 {
17 DCHECK(executionContext); 25 DCHECK(executionContext);
18 DCHECK(executionContext->isContextThread()); 26 DCHECK(executionContext->isContextThread());
19 27
20 NotificationManager* manager = static_cast<NotificationManager*>(Supplement< ExecutionContext>::from(executionContext, supplementName())); 28 NotificationManager* manager = static_cast<NotificationManager*>(Supplement< ExecutionContext>::from(executionContext, supplementName()));
21 if (!manager) { 29 if (!manager) {
22 manager = new NotificationManager(executionContext); 30 manager = new NotificationManager(executionContext);
23 Supplement<ExecutionContext>::provideTo(*executionContext, supplementNam e(), manager); 31 Supplement<ExecutionContext>::provideTo(*executionContext, supplementNam e(), manager);
24 } 32 }
25 33
26 return manager; 34 return manager;
27 } 35 }
28 36
29 // static 37 // static
30 const char* NotificationManager::supplementName() 38 const char* NotificationManager::supplementName()
31 { 39 {
32 return "NotificationManager"; 40 return "NotificationManager";
33 } 41 }
34 42
35 NotificationManager::NotificationManager(ExecutionContext* executionContext) 43 NotificationManager::NotificationManager(ExecutionContext* executionContext)
36 : ContextLifecycleObserver(executionContext) 44 : ContextLifecycleObserver(executionContext)
37 { 45 {
38 Platform::current()->interfaceProvider()->getInterface(mojo::GetProxy(&m_ser vice));
39 } 46 }
40 47
41 NotificationManager::~NotificationManager() 48 NotificationManager::~NotificationManager()
42 { 49 {
43 } 50 }
44 51
45 mojom::blink::PermissionStatus NotificationManager::permissionStatus() const 52 mojom::blink::PermissionStatus NotificationManager::permissionStatus()
46 { 53 {
54 if (!m_notificationService)
esprehn 2016/08/15 20:07:48 why does permissionStatus() do: Platform:
55 Platform::current()->interfaceProvider()->getInterface(mojo::GetProxy(&m _notificationService));
56
47 mojom::blink::PermissionStatus permissionStatus; 57 mojom::blink::PermissionStatus permissionStatus;
48 58 const bool result = m_notificationService->GetPermissionStatus(getExecutionC ontext()->getSecurityOrigin()->toString(), &permissionStatus);
49 const bool result =
50 m_service->GetPermissionStatus(getExecutionContext()->getSecurityOrigin( )->toString(), &permissionStatus);
51 DCHECK(result); 59 DCHECK(result);
52 60
53 return permissionStatus; 61 return permissionStatus;
54 } 62 }
55 63
64 ScriptPromise NotificationManager::requestPermission(ScriptState* scriptState, N otificationPermissionCallback* deprecatedCallback)
65 {
66 ExecutionContext* context = scriptState->getExecutionContext();
67
68 if (!m_permissionService)
69 Permissions::connectToService(context, mojo::GetProxy(&m_permissionServi ce));
70
71 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ;
72 ScriptPromise promise = resolver->promise();
73
74 m_permissionService->RequestPermission(
75 mojom::blink::PermissionName::NOTIFICATIONS, context->getSecurityOrigin( ), UserGestureIndicator::processingUserGesture(),
76 convertToBaseCallback(WTF::bind(&NotificationManager::onPermissionReques tComplete, wrapPersistent(this), wrapPersistent(resolver), wrapPersistent(deprec atedCallback))));
77
78 return promise;
79 }
80
56 void NotificationManager::contextDestroyed() 81 void NotificationManager::contextDestroyed()
57 { 82 {
58 m_service.reset(); 83 m_notificationService.reset();
84 m_permissionService.reset();
85 }
86
87 void NotificationManager::onPermissionRequestComplete(ScriptPromiseResolver* res olver, NotificationPermissionCallback* deprecatedCallback, mojom::blink::Permiss ionStatus status)
88 {
89 String statusString = Notification::permissionString(status);
90 if (deprecatedCallback)
91 deprecatedCallback->handleEvent(statusString);
92
93 resolver->resolve(statusString);
59 } 94 }
60 95
61 DEFINE_TRACE(NotificationManager) 96 DEFINE_TRACE(NotificationManager)
62 { 97 {
63 ContextLifecycleObserver::trace(visitor); 98 ContextLifecycleObserver::trace(visitor);
64 Supplement<ExecutionContext>::trace(visitor); 99 Supplement<ExecutionContext>::trace(visitor);
65 } 100 }
66 101
67 } // namespace blink 102 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698