Commit ec535a06 authored by Mario Sanchez Prada's avatar Mario Sanchez Prada Committed by Commit Bot

Copy //content/renderer/push_messaging/push_messaging_utils.* to Blink

This is a necessary temporary step in order to move push_provider.* and
push_messaging_client.* from //content/renderer to Blink. It's a bit
sad to copy the file instead of moving it to a shared location that can
be used both from content/renderer/push_messaging/push_messaging_client.cc
and blink/renderer/modules/push_messaging/push_provider.cc, but since this
is a brief temporary state it's perhaps cleaner and simpler than putting
things in a shared location, only to move it again right afterwards.

Once both files are inside Blink, push_messaging_utils.* from //content
will be removed and only the one under blink/renderer/modules will remain.

Bug: 939943
Change-Id: Iaa24cabe8f4c38215c86a0e82b5cc3d9c945cdb3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1594518Reviewed-by: default avatarPeter Beverloo <peter@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Commit-Queue: Mario Sanchez Prada <mario@igalia.com>
Cr-Commit-Position: refs/heads/master@{#658474}
parent 70ab82fb
......@@ -18,6 +18,8 @@ blink_modules_sources("push_messaging") {
"push_message_data.h",
"push_messaging_bridge.cc",
"push_messaging_bridge.h",
"push_messaging_utils.cc",
"push_messaging_utils.h",
"push_subscription.cc",
"push_subscription.h",
"push_subscription_callbacks.cc",
......
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/renderer/modules/push_messaging/push_messaging_utils.h"
#include "third_party/blink/public/mojom/push_messaging/push_messaging_status.mojom-shared.h"
#include "third_party/blink/public/platform/modules/push_messaging/web_push_error.h"
#include "third_party/blink/public/platform/web_string.h"
namespace blink {
namespace {
const char* PushRegistrationStatusToString(
mojom::PushRegistrationStatus status) {
switch (status) {
case mojom::PushRegistrationStatus::SUCCESS_FROM_PUSH_SERVICE:
case mojom::PushRegistrationStatus::
SUCCESS_NEW_SUBSCRIPTION_FROM_PUSH_SERVICE:
return "Registration successful - from push service";
case mojom::PushRegistrationStatus::NO_SERVICE_WORKER:
return "Registration failed - no Service Worker";
case mojom::PushRegistrationStatus::SERVICE_NOT_AVAILABLE:
return "Registration failed - push service not available";
case mojom::PushRegistrationStatus::LIMIT_REACHED:
return "Registration failed - registration limit has been reached";
case mojom::PushRegistrationStatus::PERMISSION_DENIED:
return "Registration failed - permission denied";
case mojom::PushRegistrationStatus::SERVICE_ERROR:
return "Registration failed - push service error";
case mojom::PushRegistrationStatus::NO_SENDER_ID:
return "Registration failed - missing applicationServerKey, and "
"gcm_sender_id not found in manifest";
case mojom::PushRegistrationStatus::STORAGE_ERROR:
return "Registration failed - storage error";
case mojom::PushRegistrationStatus::SUCCESS_FROM_CACHE:
return "Registration successful - from cache";
case mojom::PushRegistrationStatus::NETWORK_ERROR:
return "Registration failed - could not connect to push server";
case mojom::PushRegistrationStatus::INCOGNITO_PERMISSION_DENIED:
// We split this out for UMA, but it must be indistinguishable to JS.
return PushRegistrationStatusToString(
mojom::PushRegistrationStatus::PERMISSION_DENIED);
case mojom::PushRegistrationStatus::PUBLIC_KEY_UNAVAILABLE:
return "Registration failed - could not retrieve the public key";
case mojom::PushRegistrationStatus::MANIFEST_EMPTY_OR_MISSING:
return "Registration failed - missing applicationServerKey, and manifest "
"empty or missing";
case mojom::PushRegistrationStatus::SENDER_ID_MISMATCH:
return "Registration failed - A subscription with a different "
"applicationServerKey (or gcm_sender_id) already exists; to "
"change the applicationServerKey, unsubscribe then resubscribe.";
case mojom::PushRegistrationStatus::STORAGE_CORRUPT:
return "Registration failed - storage corrupt";
case mojom::PushRegistrationStatus::RENDERER_SHUTDOWN:
return "Registration failed - renderer shutdown";
}
NOTREACHED();
return "";
}
} // namespace
WebPushError PushRegistrationStatusToWebPushError(
mojom::PushRegistrationStatus status) {
WebPushError::ErrorType error_type = WebPushError::kErrorTypeAbort;
switch (status) {
case mojom::PushRegistrationStatus::PERMISSION_DENIED:
error_type = WebPushError::kErrorTypeNotAllowed;
break;
case mojom::PushRegistrationStatus::SENDER_ID_MISMATCH:
error_type = WebPushError::kErrorTypeInvalidState;
break;
case mojom::PushRegistrationStatus::SUCCESS_FROM_PUSH_SERVICE:
case mojom::PushRegistrationStatus::
SUCCESS_NEW_SUBSCRIPTION_FROM_PUSH_SERVICE:
case mojom::PushRegistrationStatus::NO_SERVICE_WORKER:
case mojom::PushRegistrationStatus::SERVICE_NOT_AVAILABLE:
case mojom::PushRegistrationStatus::LIMIT_REACHED:
case mojom::PushRegistrationStatus::SERVICE_ERROR:
case mojom::PushRegistrationStatus::NO_SENDER_ID:
case mojom::PushRegistrationStatus::STORAGE_ERROR:
case mojom::PushRegistrationStatus::SUCCESS_FROM_CACHE:
case mojom::PushRegistrationStatus::NETWORK_ERROR:
case mojom::PushRegistrationStatus::INCOGNITO_PERMISSION_DENIED:
case mojom::PushRegistrationStatus::PUBLIC_KEY_UNAVAILABLE:
case mojom::PushRegistrationStatus::MANIFEST_EMPTY_OR_MISSING:
case mojom::PushRegistrationStatus::STORAGE_CORRUPT:
case mojom::PushRegistrationStatus::RENDERER_SHUTDOWN:
error_type = WebPushError::kErrorTypeAbort;
break;
}
return WebPushError(
error_type, WebString::FromUTF8(PushRegistrationStatusToString(status)));
}
} // namespace blink
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_PUSH_MESSAGING_PUSH_MESSAGING_UTILS_H_
#define THIRD_PARTY_BLINK_RENDERER_MODULES_PUSH_MESSAGING_PUSH_MESSAGING_UTILS_H_
namespace blink {
namespace mojom {
enum class PushRegistrationStatus;
} // namespace mojom
struct WebPushError;
WebPushError PushRegistrationStatusToWebPushError(
mojom::PushRegistrationStatus status);
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_PUSH_MESSAGING_PUSH_MESSAGING_UTILS_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment