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

Side by Side Diff: Source/web/NotificationPermissionClientImpl.cpp

Issue 1233173002: Have ScriptPromiseResolver on the Oilpan heap always. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: fix webusb ScriptPromiseResolver usage Created 5 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
« no previous file with comments | « Source/platform/heap/Handle.h ('k') | Source/web/StorageQuotaClientImpl.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "config.h" 5 #include "config.h"
6 #include "web/NotificationPermissionClientImpl.h" 6 #include "web/NotificationPermissionClientImpl.h"
7 7
8 #include "bindings/core/v8/ScriptPromiseResolver.h" 8 #include "bindings/core/v8/ScriptPromiseResolver.h"
9 #include "bindings/core/v8/ScriptState.h" 9 #include "bindings/core/v8/ScriptState.h"
10 #include "core/dom/Document.h" 10 #include "core/dom/Document.h"
11 #include "core/dom/ExecutionContext.h" 11 #include "core/dom/ExecutionContext.h"
12 #include "modules/notifications/Notification.h" 12 #include "modules/notifications/Notification.h"
13 #include "modules/notifications/NotificationPermissionCallback.h" 13 #include "modules/notifications/NotificationPermissionCallback.h"
14 #include "public/web/WebFrameClient.h" 14 #include "public/web/WebFrameClient.h"
15 #include "public/web/modules/notifications/WebNotificationPermissionCallback.h" 15 #include "public/web/modules/notifications/WebNotificationPermissionCallback.h"
16 #include "web/WebLocalFrameImpl.h" 16 #include "web/WebLocalFrameImpl.h"
17 17
18 namespace blink { 18 namespace blink {
19 19
20 namespace { 20 namespace {
21 21
22 class WebNotificationPermissionCallbackImpl : public WebNotificationPermissionCa llback { 22 class WebNotificationPermissionCallbackImpl : public WebNotificationPermissionCa llback {
23 public: 23 public:
24 WebNotificationPermissionCallbackImpl(PassRefPtrWillBeRawPtr<ScriptPromiseRe solver> resolver, NotificationPermissionCallback* deprecatedCallback) 24 WebNotificationPermissionCallbackImpl(ScriptPromiseResolver* resolver, Notif icationPermissionCallback* deprecatedCallback)
25 : m_resolver(resolver) 25 : m_resolver(resolver)
26 , m_deprecatedCallback(deprecatedCallback) 26 , m_deprecatedCallback(deprecatedCallback)
27 { 27 {
28 } 28 }
29 29
30 ~WebNotificationPermissionCallbackImpl() override { } 30 ~WebNotificationPermissionCallbackImpl() override { }
31 31
32 void permissionRequestComplete(WebNotificationPermission permission) overrid e 32 void permissionRequestComplete(WebNotificationPermission permission) overrid e
33 { 33 {
34 String permissionString = Notification::permissionString(permission); 34 String permissionString = Notification::permissionString(permission);
35 if (m_deprecatedCallback) 35 if (m_deprecatedCallback)
36 m_deprecatedCallback->handleEvent(permissionString); 36 m_deprecatedCallback->handleEvent(permissionString);
37 37
38 m_resolver->resolve(permissionString); 38 m_resolver->resolve(permissionString);
39 } 39 }
40 40
41 private: 41 private:
42 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver; 42 Persistent<ScriptPromiseResolver> m_resolver;
43 Persistent<NotificationPermissionCallback> m_deprecatedCallback; 43 Persistent<NotificationPermissionCallback> m_deprecatedCallback;
44 }; 44 };
45 45
46 } // namespace 46 } // namespace
47 47
48 PassOwnPtrWillBeRawPtr<NotificationPermissionClientImpl> NotificationPermissionC lientImpl::create() 48 PassOwnPtrWillBeRawPtr<NotificationPermissionClientImpl> NotificationPermissionC lientImpl::create()
49 { 49 {
50 return adoptPtrWillBeNoop(new NotificationPermissionClientImpl()); 50 return adoptPtrWillBeNoop(new NotificationPermissionClientImpl());
51 } 51 }
52 52
53 NotificationPermissionClientImpl::NotificationPermissionClientImpl() 53 NotificationPermissionClientImpl::NotificationPermissionClientImpl()
54 { 54 {
55 } 55 }
56 56
57 NotificationPermissionClientImpl::~NotificationPermissionClientImpl() 57 NotificationPermissionClientImpl::~NotificationPermissionClientImpl()
58 { 58 {
59 } 59 }
60 60
61 ScriptPromise NotificationPermissionClientImpl::requestPermission(ScriptState* s criptState, NotificationPermissionCallback* deprecatedCallback) 61 ScriptPromise NotificationPermissionClientImpl::requestPermission(ScriptState* s criptState, NotificationPermissionCallback* deprecatedCallback)
62 { 62 {
63 ASSERT(scriptState); 63 ASSERT(scriptState);
64 64
65 ExecutionContext* context = scriptState->executionContext(); 65 ExecutionContext* context = scriptState->executionContext();
66 ASSERT(context && context->isDocument()); 66 ASSERT(context && context->isDocument());
67 67
68 Document* document = toDocument(context); 68 Document* document = toDocument(context);
69 WebLocalFrameImpl* webFrame = WebLocalFrameImpl::fromFrame(document->frame() ); 69 WebLocalFrameImpl* webFrame = WebLocalFrameImpl::fromFrame(document->frame() );
70 70
71 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver:: create(scriptState); 71 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ;
72 ScriptPromise promise = resolver->promise(); 72 ScriptPromise promise = resolver->promise();
73 73
74 webFrame->client()->requestNotificationPermission(WebSecurityOrigin(context- >securityOrigin()), new WebNotificationPermissionCallbackImpl(resolver, deprecat edCallback)); 74 webFrame->client()->requestNotificationPermission(WebSecurityOrigin(context- >securityOrigin()), new WebNotificationPermissionCallbackImpl(resolver, deprecat edCallback));
75 75
76 return promise; 76 return promise;
77 } 77 }
78 78
79 } // namespace blink 79 } // namespace blink
OLDNEW
« no previous file with comments | « Source/platform/heap/Handle.h ('k') | Source/web/StorageQuotaClientImpl.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698