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

Unified Diff: chrome/browser/services/gcm/push_messaging_service_impl.cc

Issue 404353003: Define PushMessagingApplicationId and replace ad-hoc code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments from jam and fgorski. Created 6 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
« no previous file with comments | « chrome/browser/services/gcm/push_messaging_service_impl.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/services/gcm/push_messaging_service_impl.cc
diff --git a/chrome/browser/services/gcm/push_messaging_service_impl.cc b/chrome/browser/services/gcm/push_messaging_service_impl.cc
index 1ee383de4a2fb08eb139cdcf240e28b63c3fae51..351ca81d3dc05d2d2b77c178bf269d7bf6fcbb31 100644
--- a/chrome/browser/services/gcm/push_messaging_service_impl.cc
+++ b/chrome/browser/services/gcm/push_messaging_service_impl.cc
@@ -14,6 +14,7 @@
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/services/gcm/gcm_profile_service.h"
#include "chrome/browser/services/gcm/gcm_profile_service_factory.h"
+#include "chrome/browser/services/gcm/push_messaging_application_id.h"
#include "chrome/browser/services/gcm/push_messaging_permission_context.h"
#include "chrome/browser/services/gcm/push_messaging_permission_context_factory.h"
#include "chrome/common/chrome_switches.h"
@@ -26,7 +27,6 @@
namespace gcm {
namespace {
-const char kAppIdPrefix[] = "push:";
const int kMaxRegistrations = 1000000;
} // namespace
@@ -63,7 +63,8 @@ void PushMessagingServiceImpl::InitializeForProfile(Profile* profile) {
static_cast<PushMessagingServiceImpl*>(
gcm_service->push_messaging_service());
// Register ourselves as an app handler.
- gcm_service->driver()->AddAppHandler(kAppIdPrefix, push_service);
+ gcm_service->driver()->AddAppHandler(kPushMessagingApplicationIdPrefix,
+ push_service);
}
PushMessagingServiceImpl::PushMessagingServiceImpl(
@@ -80,8 +81,7 @@ PushMessagingServiceImpl::~PushMessagingServiceImpl() {
}
bool PushMessagingServiceImpl::CanHandle(const std::string& app_id) const {
- // TODO(mvanouwerkerk): Finalize and centralize format of Push API app_id.
- return StartsWithASCII(app_id, kAppIdPrefix, true);
+ return PushMessagingApplicationId::Parse(app_id).IsValid();
}
void PushMessagingServiceImpl::ShutdownHandler() {
@@ -104,8 +104,11 @@ void PushMessagingServiceImpl::OnMessage(
// "delay_while_idle": true,
// }
// TODO(johnme): Make sure this is clearly documented for developers.
+ PushMessagingApplicationId application_id =
+ PushMessagingApplicationId::Parse(app_id);
+ DCHECK(application_id.IsValid());
GCMClient::MessageData::const_iterator it = message.data.find("data");
- if (it != message.data.end()) {
+ if (application_id.IsValid() && it != message.data.end()) {
const std::string& data ALLOW_UNUSED = it->second;
// TODO(mvanouwerkerk): Fire push event with data on the Service Worker
// corresponding to app_id (and remove ALLOW_UNUSED above).
@@ -130,7 +133,8 @@ void PushMessagingServiceImpl::OnSendError(
}
void PushMessagingServiceImpl::Register(
- const std::string& app_id,
+ const GURL& origin,
+ int64 service_worker_registration_id,
const std::string& sender_id,
int renderer_id,
int render_frame_id,
@@ -140,10 +144,13 @@ void PushMessagingServiceImpl::Register(
NOTREACHED() << "There is no GCMDriver. Has GCMProfileService shut down?";
}
+ PushMessagingApplicationId application_id =
+ PushMessagingApplicationId(origin, service_worker_registration_id);
+ DCHECK(application_id.IsValid());
+
if (profile_->GetPrefs()->GetInteger(
prefs::kPushMessagingRegistrationCount) >= kMaxRegistrations) {
RegisterEnd(
- app_id,
callback,
std::string(),
content::PUSH_MESSAGING_STATUS_REGISTRATION_FAILED_LIMIT_REACHED);
@@ -152,8 +159,10 @@ void PushMessagingServiceImpl::Register(
// If this is registering for the first time then the driver does not have
// this as an app handler and registration would fail.
- if (gcm_profile_service_->driver()->GetAppHandler(kAppIdPrefix) != this)
- gcm_profile_service_->driver()->AddAppHandler(kAppIdPrefix, this);
+ if (gcm_profile_service_->driver()->GetAppHandler(
+ kPushMessagingApplicationIdPrefix) != this)
+ gcm_profile_service_->driver()->AddAppHandler(
+ kPushMessagingApplicationIdPrefix, this);
content::RenderFrameHost* render_frame_host =
content::RenderFrameHost::FromID(renderer_id, render_frame_id);
@@ -182,7 +191,6 @@ void PushMessagingServiceImpl::Register(
if (permission_context == NULL) {
RegisterEnd(
- app_id,
callback,
std::string(),
content::PUSH_MESSAGING_STATUS_REGISTRATION_FAILED_PERMISSION_DENIED);
@@ -196,13 +204,12 @@ void PushMessagingServiceImpl::Register(
user_gesture,
base::Bind(&PushMessagingServiceImpl::DidRequestPermission,
weak_factory_.GetWeakPtr(),
+ application_id,
sender_id,
- app_id,
callback));
}
void PushMessagingServiceImpl::RegisterEnd(
- const std::string& app_id,
const content::PushMessagingService::RegisterCallback& callback,
const std::string& registration_id,
content::PushMessagingStatus status) {
@@ -218,7 +225,6 @@ void PushMessagingServiceImpl::RegisterEnd(
}
void PushMessagingServiceImpl::DidRegister(
- const std::string& app_id,
const content::PushMessagingService::RegisterCallback& callback,
const std::string& registration_id,
GCMClient::Result result) {
@@ -226,17 +232,16 @@ void PushMessagingServiceImpl::DidRegister(
result == GCMClient::SUCCESS
? content::PUSH_MESSAGING_STATUS_OK
: content::PUSH_MESSAGING_STATUS_REGISTRATION_FAILED_SERVICE_ERROR;
- RegisterEnd(app_id, callback, registration_id, status);
+ RegisterEnd(callback, registration_id, status);
}
void PushMessagingServiceImpl::DidRequestPermission(
+ const PushMessagingApplicationId& application_id,
const std::string& sender_id,
- const std::string& app_id,
const content::PushMessagingService::RegisterCallback& register_callback,
bool allow) {
if (!allow) {
RegisterEnd(
- app_id,
register_callback,
std::string(),
content::PUSH_MESSAGING_STATUS_REGISTRATION_FAILED_PERMISSION_DENIED);
@@ -250,11 +255,10 @@ void PushMessagingServiceImpl::DidRequestPermission(
std::vector<std::string> sender_ids(1, sender_id);
gcm_profile_service_->driver()->Register(
- app_id,
+ application_id.ToString(),
sender_ids,
base::Bind(&PushMessagingServiceImpl::DidRegister,
weak_factory_.GetWeakPtr(),
- app_id,
register_callback));
}
« no previous file with comments | « chrome/browser/services/gcm/push_messaging_service_impl.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698