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

Unified Diff: third_party/WebKit/Source/modules/push_messaging/PushManager.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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/push_messaging/PushManager.cpp
diff --git a/third_party/WebKit/Source/modules/push_messaging/PushManager.cpp b/third_party/WebKit/Source/modules/push_messaging/PushManager.cpp
index b51e33876e864484b7b8bdecfe5a8baf5c3fdcd2..221c6c324d382b9a9734c10724118528c9996235 100644
--- a/third_party/WebKit/Source/modules/push_messaging/PushManager.cpp
+++ b/third_party/WebKit/Source/modules/push_messaging/PushManager.cpp
@@ -17,6 +17,7 @@
#include "modules/push_messaging/PushSubscription.h"
#include "modules/push_messaging/PushSubscriptionCallbacks.h"
#include "modules/push_messaging/PushSubscriptionOptions.h"
+#include "modules/push_messaging/PushSubscriptionOptionsInit.h"
#include "modules/serviceworkers/ServiceWorkerRegistration.h"
#include "public/platform/Platform.h"
#include "public/platform/modules/push_messaging/WebPushClient.h"
@@ -28,8 +29,6 @@
namespace blink {
namespace {
-const int kMaxApplicationServerKeyLength = 255;
-
WebPushProvider* pushProvider()
{
WebPushProvider* webPushProvider = Platform::current()->pushProvider();
@@ -37,34 +36,6 @@ WebPushProvider* pushProvider()
return webPushProvider;
}
-String bufferSourceToString(const ArrayBufferOrArrayBufferView& applicationServerKey, ExceptionState& exceptionState)
-{
- // Check the validity of the sender info. It must be a 65 byte unencrypted key,
- // which has the byte 0x04 as the first byte as a marker.
- unsigned char* input;
- int length;
- if (applicationServerKey.isArrayBuffer()) {
- input = static_cast<unsigned char*>(
- applicationServerKey.getAsArrayBuffer()->data());
- length = applicationServerKey.getAsArrayBuffer()->byteLength();
- } else if (applicationServerKey.isArrayBufferView()) {
- input = static_cast<unsigned char*>(
- applicationServerKey.getAsArrayBufferView()->buffer()->data());
- length = applicationServerKey.getAsArrayBufferView()->buffer()->byteLength();
- } else {
- NOTREACHED();
- return String();
- }
-
- // If the key is valid, just treat it as a string of bytes and pass it to
- // the push service.
- if (length <= kMaxApplicationServerKeyLength)
- return WebString::fromLatin1(input, length);
-
- exceptionState.throwDOMException(InvalidAccessError, "The provided applicationServerKey is not valid.");
- return String();
-}
-
} // namespace
PushManager::PushManager(ServiceWorkerRegistration* registration)
@@ -73,23 +44,12 @@ PushManager::PushManager(ServiceWorkerRegistration* registration)
DCHECK(registration);
}
-WebPushSubscriptionOptions PushManager::toWebPushSubscriptionOptions(const PushSubscriptionOptions& options, ExceptionState& exceptionState)
-{
- WebPushSubscriptionOptions webOptions;
- webOptions.userVisibleOnly = options.userVisibleOnly();
- if (options.hasApplicationServerKey()) {
- webOptions.applicationServerKey = bufferSourceToString(options.applicationServerKey(),
- exceptionState);
- }
- return webOptions;
-}
-
-ScriptPromise PushManager::subscribe(ScriptState* scriptState, const PushSubscriptionOptions& options, ExceptionState& exceptionState)
+ScriptPromise PushManager::subscribe(ScriptState* scriptState, const PushSubscriptionOptionsInit& options, ExceptionState& exceptionState)
{
if (!m_registration->active())
return ScriptPromise::rejectWithDOMException(scriptState, DOMException::create(AbortError, "Subscription failed - no active Service Worker"));
- const WebPushSubscriptionOptions& webOptions = toWebPushSubscriptionOptions(options, exceptionState);
+ const WebPushSubscriptionOptions& webOptions = PushSubscriptionOptions::toWeb(options, exceptionState);
if (exceptionState.hadException())
return ScriptPromise();
@@ -120,7 +80,7 @@ ScriptPromise PushManager::getSubscription(ScriptState* scriptState)
return promise;
}
-ScriptPromise PushManager::permissionState(ScriptState* scriptState, const PushSubscriptionOptions& options, ExceptionState& exceptionState)
+ScriptPromise PushManager::permissionState(ScriptState* scriptState, const PushSubscriptionOptionsInit& options, ExceptionState& exceptionState)
{
if (scriptState->getExecutionContext()->isDocument()) {
Document* document = toDocument(scriptState->getExecutionContext());
@@ -131,7 +91,7 @@ ScriptPromise PushManager::permissionState(ScriptState* scriptState, const PushS
ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
ScriptPromise promise = resolver->promise();
- pushProvider()->getPermissionStatus(m_registration->webRegistration(), toWebPushSubscriptionOptions(options, exceptionState), new PushPermissionStatusCallbacks(resolver));
+ pushProvider()->getPermissionStatus(m_registration->webRegistration(), PushSubscriptionOptions::toWeb(options, exceptionState), new PushPermissionStatusCallbacks(resolver));
return promise;
}

Powered by Google App Engine
This is Rietveld 408576698