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

Side by Side Diff: third_party/WebKit/Source/modules/push_messaging/PushSubscription.cpp

Issue 2133673002: Push API: Implement and ship PushSubscription.options (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add MODULES_EXPORT Created 4 years, 5 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 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 "modules/push_messaging/PushSubscription.h" 5 #include "modules/push_messaging/PushSubscription.h"
6 6
7 #include "bindings/core/v8/CallbackPromiseAdapter.h" 7 #include "bindings/core/v8/CallbackPromiseAdapter.h"
8 #include "bindings/core/v8/ScriptPromiseResolver.h" 8 #include "bindings/core/v8/ScriptPromiseResolver.h"
9 #include "bindings/core/v8/V8ObjectBuilder.h" 9 #include "bindings/core/v8/V8ObjectBuilder.h"
10 #include "modules/push_messaging/PushError.h" 10 #include "modules/push_messaging/PushError.h"
11 #include "modules/push_messaging/PushSubscriptionOptions.h"
11 #include "modules/serviceworkers/ServiceWorkerRegistration.h" 12 #include "modules/serviceworkers/ServiceWorkerRegistration.h"
12 #include "public/platform/Platform.h" 13 #include "public/platform/Platform.h"
13 #include "public/platform/modules/push_messaging/WebPushProvider.h" 14 #include "public/platform/modules/push_messaging/WebPushProvider.h"
14 #include "public/platform/modules/push_messaging/WebPushSubscription.h" 15 #include "public/platform/modules/push_messaging/WebPushSubscription.h"
15 #include "wtf/Assertions.h" 16 #include "wtf/Assertions.h"
16 #include "wtf/text/Base64.h" 17 #include "wtf/text/Base64.h"
17 #include <memory> 18 #include <memory>
18 19
19 namespace blink { 20 namespace blink {
20 21
21 PushSubscription* PushSubscription::take(ScriptPromiseResolver*, std::unique_ptr <WebPushSubscription> pushSubscription, ServiceWorkerRegistration* serviceWorker Registration) 22 PushSubscription* PushSubscription::take(ScriptPromiseResolver*, std::unique_ptr <WebPushSubscription> pushSubscription, ServiceWorkerRegistration* serviceWorker Registration)
22 { 23 {
23 if (!pushSubscription) 24 if (!pushSubscription)
24 return nullptr; 25 return nullptr;
25 return new PushSubscription(*pushSubscription, serviceWorkerRegistration); 26 return new PushSubscription(*pushSubscription, serviceWorkerRegistration);
26 } 27 }
27 28
28 void PushSubscription::dispose(WebPushSubscription* pushSubscription) 29 void PushSubscription::dispose(WebPushSubscription* pushSubscription)
29 { 30 {
30 if (pushSubscription) 31 if (pushSubscription)
31 delete pushSubscription; 32 delete pushSubscription;
32 } 33 }
33 34
34 PushSubscription::PushSubscription(const WebPushSubscription& subscription, Serv iceWorkerRegistration* serviceWorkerRegistration) 35 PushSubscription::PushSubscription(const WebPushSubscription& subscription, Serv iceWorkerRegistration* serviceWorkerRegistration)
35 : m_endpoint(subscription.endpoint) 36 : m_endpoint(subscription.endpoint)
37 , m_options(PushSubscriptionOptions::create(subscription.options))
36 , m_p256dh(DOMArrayBuffer::create(subscription.p256dh.data(), subscription.p 256dh.size())) 38 , m_p256dh(DOMArrayBuffer::create(subscription.p256dh.data(), subscription.p 256dh.size()))
37 , m_auth(DOMArrayBuffer::create(subscription.auth.data(), subscription.auth. size())) 39 , m_auth(DOMArrayBuffer::create(subscription.auth.data(), subscription.auth. size()))
38 , m_serviceWorkerRegistration(serviceWorkerRegistration) 40 , m_serviceWorkerRegistration(serviceWorkerRegistration)
39 { 41 {
40 } 42 }
41 43
42 PushSubscription::~PushSubscription() 44 PushSubscription::~PushSubscription()
43 { 45 {
44 } 46 }
45 47
46 KURL PushSubscription::endpoint() const
47 {
48 return m_endpoint;
49 }
50
51 DOMArrayBuffer* PushSubscription::getKey(const AtomicString& name) const 48 DOMArrayBuffer* PushSubscription::getKey(const AtomicString& name) const
52 { 49 {
53 if (name == "p256dh") 50 if (name == "p256dh")
54 return m_p256dh; 51 return m_p256dh;
55 if (name == "auth") 52 if (name == "auth")
56 return m_auth; 53 return m_auth;
57 54
58 return nullptr; 55 return nullptr;
59 } 56 }
60 57
(...skipping 19 matching lines...) Expand all
80 V8ObjectBuilder keys(scriptState); 77 V8ObjectBuilder keys(scriptState);
81 keys.add("p256dh", WTF::base64URLEncode(static_cast<const char*>(m_p256dh->d ata()), m_p256dh->byteLength())); 78 keys.add("p256dh", WTF::base64URLEncode(static_cast<const char*>(m_p256dh->d ata()), m_p256dh->byteLength()));
82 keys.add("auth", WTF::base64URLEncode(static_cast<const char*>(m_auth->data( )), m_auth->byteLength())); 79 keys.add("auth", WTF::base64URLEncode(static_cast<const char*>(m_auth->data( )), m_auth->byteLength()));
83 result.add("keys", keys); 80 result.add("keys", keys);
84 81
85 return result.scriptValue(); 82 return result.scriptValue();
86 } 83 }
87 84
88 DEFINE_TRACE(PushSubscription) 85 DEFINE_TRACE(PushSubscription)
89 { 86 {
87 visitor->trace(m_options);
90 visitor->trace(m_p256dh); 88 visitor->trace(m_p256dh);
91 visitor->trace(m_auth); 89 visitor->trace(m_auth);
92 visitor->trace(m_serviceWorkerRegistration); 90 visitor->trace(m_serviceWorkerRegistration);
93 } 91 }
94 92
95 } // namespace blink 93 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698