summaryrefslogtreecommitdiffstats
path: root/content/browser
diff options
context:
space:
mode:
authorharkness <harkness@chromium.org>2016-01-27 11:26:43 -0800
committerCommit bot <commit-bot@chromium.org>2016-01-27 19:27:48 +0000
commitdd4d2b253d29963aacb80e3a0dea42061f1f47c4 (patch)
tree67d950477df4ded42f878cb39a4531617ca00bee /content/browser
parent891564febe894f4305c8df8876616ee8ef34a956 (diff)
downloadchromium_src-dd4d2b253d29963aacb80e3a0dea42061f1f47c4.zip
chromium_src-dd4d2b253d29963aacb80e3a0dea42061f1f47c4.tar.gz
chromium_src-dd4d2b253d29963aacb80e3a0dea42061f1f47c4.tar.bz2
Update the PushEvent to have a nullable PushMessageData
The specification now allows a PushMessage to have valid non-empty data, valid empty data, and null data. To support that, the content layer now uses a PushEventPayload which can be null. This also adds and updates relevant unit tests for each of the layers. BUG=578036 Review URL: https://codereview.chromium.org/1636483002 Cr-Commit-Position: refs/heads/master@{#371839}
Diffstat (limited to 'content/browser')
-rw-r--r--content/browser/browser_context.cc7
-rw-r--r--content/browser/devtools/protocol/service_worker_handler.cc6
-rw-r--r--content/browser/push_messaging/push_messaging_router.cc21
-rw-r--r--content/browser/push_messaging/push_messaging_router.h9
-rw-r--r--content/browser/service_worker/embedded_worker_test_helper.cc10
-rw-r--r--content/browser/service_worker/embedded_worker_test_helper.h5
6 files changed, 34 insertions, 24 deletions
diff --git a/content/browser/browser_context.cc b/content/browser/browser_context.cc
index fc3f644..32681ae 100644
--- a/content/browser/browser_context.cc
+++ b/content/browser/browser_context.cc
@@ -255,11 +255,12 @@ void BrowserContext::DeliverPushMessage(
BrowserContext* browser_context,
const GURL& origin,
int64_t service_worker_registration_id,
- const std::string& data,
+ const PushEventPayload& payload,
const base::Callback<void(PushDeliveryStatus)>& callback) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
- PushMessagingRouter::DeliverMessage(
- browser_context, origin, service_worker_registration_id, data, callback);
+ PushMessagingRouter::DeliverMessage(browser_context, origin,
+ service_worker_registration_id, payload,
+ callback);
}
// static
diff --git a/content/browser/devtools/protocol/service_worker_handler.cc b/content/browser/devtools/protocol/service_worker_handler.cc
index 5571421..d4842fa 100644
--- a/content/browser/devtools/protocol/service_worker_handler.cc
+++ b/content/browser/devtools/protocol/service_worker_handler.cc
@@ -23,6 +23,7 @@
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/storage_partition.h"
#include "content/public/browser/web_contents.h"
+#include "content/public/common/push_event_payload.h"
#include "content/public/common/push_messaging_status.h"
#include "url/gurl.h"
@@ -437,9 +438,12 @@ Response ServiceWorkerHandler::DeliverPushMessage(
int64_t id = 0;
if (!base::StringToInt64(registration_id, &id))
return CreateInvalidVersionIdErrorResponse();
+ PushEventPayload payload;
+ if (data.size() > 0)
+ payload.setData(data);
BrowserContext::DeliverPushMessage(
render_frame_host_->GetProcess()->GetBrowserContext(), GURL(origin), id,
- data, base::Bind(&PushDeliveryNoOp));
+ payload, base::Bind(&PushDeliveryNoOp));
return Response::OK();
}
diff --git a/content/browser/push_messaging/push_messaging_router.cc b/content/browser/push_messaging/push_messaging_router.cc
index 7b8deab..7bc469b 100644
--- a/content/browser/push_messaging/push_messaging_router.cc
+++ b/content/browser/push_messaging/push_messaging_router.cc
@@ -15,6 +15,7 @@
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/storage_partition.h"
+#include "content/public/common/push_event_payload.h"
namespace content {
@@ -36,7 +37,7 @@ void PushMessagingRouter::DeliverMessage(
BrowserContext* browser_context,
const GURL& origin,
int64_t service_worker_registration_id,
- const std::string& data,
+ const PushEventPayload& payload,
const DeliverMessageCallback& deliver_message_callback) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
StoragePartition* partition =
@@ -47,15 +48,15 @@ void PushMessagingRouter::DeliverMessage(
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
base::Bind(&PushMessagingRouter::FindServiceWorkerRegistration, origin,
- service_worker_registration_id, data, deliver_message_callback,
- service_worker_context));
+ service_worker_registration_id, payload,
+ deliver_message_callback, service_worker_context));
}
// static
void PushMessagingRouter::FindServiceWorkerRegistration(
const GURL& origin,
int64_t service_worker_registration_id,
- const std::string& data,
+ const PushEventPayload& payload,
const DeliverMessageCallback& deliver_message_callback,
scoped_refptr<ServiceWorkerContextWrapper> service_worker_context) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
@@ -64,12 +65,12 @@ void PushMessagingRouter::FindServiceWorkerRegistration(
service_worker_context->FindReadyRegistrationForId(
service_worker_registration_id, origin,
base::Bind(&PushMessagingRouter::FindServiceWorkerRegistrationCallback,
- data, deliver_message_callback));
+ payload, deliver_message_callback));
}
// static
void PushMessagingRouter::FindServiceWorkerRegistrationCallback(
- const std::string& data,
+ const PushEventPayload& payload,
const DeliverMessageCallback& deliver_message_callback,
ServiceWorkerStatusCode service_worker_status,
const scoped_refptr<ServiceWorkerRegistration>&
@@ -91,8 +92,8 @@ void PushMessagingRouter::FindServiceWorkerRegistrationCallback(
// service worker.
version->RunAfterStartWorker(
base::Bind(&PushMessagingRouter::DeliverMessageToWorker,
- make_scoped_refptr(version), service_worker_registration, data,
- deliver_message_callback),
+ make_scoped_refptr(version), service_worker_registration,
+ payload, deliver_message_callback),
base::Bind(&PushMessagingRouter::DeliverMessageEnd,
deliver_message_callback, service_worker_registration));
}
@@ -101,7 +102,7 @@ void PushMessagingRouter::FindServiceWorkerRegistrationCallback(
void PushMessagingRouter::DeliverMessageToWorker(
const scoped_refptr<ServiceWorkerVersion>& service_worker,
const scoped_refptr<ServiceWorkerRegistration>& service_worker_registration,
- const std::string& data,
+ const PushEventPayload& payload,
const DeliverMessageCallback& deliver_message_callback) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
int request_id = service_worker->StartRequest(
@@ -109,7 +110,7 @@ void PushMessagingRouter::DeliverMessageToWorker(
base::Bind(&PushMessagingRouter::DeliverMessageEnd,
deliver_message_callback, service_worker_registration));
service_worker->DispatchSimpleEvent<ServiceWorkerHostMsg_PushEventFinished>(
- request_id, ServiceWorkerMsg_PushEvent(request_id, data));
+ request_id, ServiceWorkerMsg_PushEvent(request_id, payload));
}
// static
diff --git a/content/browser/push_messaging/push_messaging_router.h b/content/browser/push_messaging/push_messaging_router.h
index 8cfa82c..64adb8a 100644
--- a/content/browser/push_messaging/push_messaging_router.h
+++ b/content/browser/push_messaging/push_messaging_router.h
@@ -18,6 +18,7 @@
namespace content {
class BrowserContext;
+struct PushEventPayload;
class ServiceWorkerContextWrapper;
class ServiceWorkerRegistration;
class ServiceWorkerVersion;
@@ -33,7 +34,7 @@ class PushMessagingRouter {
BrowserContext* browser_context,
const GURL& origin,
int64_t service_worker_registration_id,
- const std::string& data,
+ const PushEventPayload& payload,
const DeliverMessageCallback& deliver_message_callback);
private:
@@ -42,7 +43,7 @@ class PushMessagingRouter {
static void FindServiceWorkerRegistration(
const GURL& origin,
int64_t service_worker_registration_id,
- const std::string& data,
+ const PushEventPayload& payload,
const DeliverMessageCallback& deliver_message_callback,
scoped_refptr<ServiceWorkerContextWrapper> service_worker_context);
@@ -50,7 +51,7 @@ class PushMessagingRouter {
// |data| on the Service Worker identified by |service_worker_registration|.
// Must be called on the IO thread.
static void FindServiceWorkerRegistrationCallback(
- const std::string& data,
+ const PushEventPayload& payload,
const DeliverMessageCallback& deliver_message_callback,
ServiceWorkerStatusCode service_worker_status,
const scoped_refptr<ServiceWorkerRegistration>&
@@ -62,7 +63,7 @@ class PushMessagingRouter {
const scoped_refptr<ServiceWorkerVersion>& service_worker,
const scoped_refptr<ServiceWorkerRegistration>&
service_worker_registration,
- const std::string& data,
+ const PushEventPayload& payload,
const DeliverMessageCallback& deliver_message_callback);
// Gets called asynchronously after the Service Worker has dispatched the push
diff --git a/content/browser/service_worker/embedded_worker_test_helper.cc b/content/browser/service_worker/embedded_worker_test_helper.cc
index bfd13f3..f408ddf 100644
--- a/content/browser/service_worker/embedded_worker_test_helper.cc
+++ b/content/browser/service_worker/embedded_worker_test_helper.cc
@@ -20,6 +20,7 @@
#include "content/common/service_worker/embedded_worker_messages.h"
#include "content/common/service_worker/embedded_worker_setup.mojom.h"
#include "content/common/service_worker/service_worker_messages.h"
+#include "content/public/common/push_event_payload.h"
#include "content/public/test/mock_render_process_host.h"
#include "content/public/test/test_browser_context.h"
#include "mojo/public/cpp/bindings/strong_binding.h"
@@ -224,7 +225,7 @@ void EmbeddedWorkerTestHelper::OnFetchEvent(
void EmbeddedWorkerTestHelper::OnPushEvent(int embedded_worker_id,
int request_id,
- const std::string& data) {
+ const PushEventPayload& payload) {
SimulateSend(new ServiceWorkerHostMsg_PushEventFinished(
embedded_worker_id, request_id,
blink::WebServiceWorkerEventResultCompleted));
@@ -372,12 +373,13 @@ void EmbeddedWorkerTestHelper::OnFetchEventStub(
request));
}
-void EmbeddedWorkerTestHelper::OnPushEventStub(int request_id,
- const std::string& data) {
+void EmbeddedWorkerTestHelper::OnPushEventStub(
+ int request_id,
+ const PushEventPayload& payload) {
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnPushEvent,
weak_factory_.GetWeakPtr(),
- current_embedded_worker_id_, request_id, data));
+ current_embedded_worker_id_, request_id, payload));
}
void EmbeddedWorkerTestHelper::OnSetupMojoStub(
diff --git a/content/browser/service_worker/embedded_worker_test_helper.h b/content/browser/service_worker/embedded_worker_test_helper.h
index 10c7169..3de05bd 100644
--- a/content/browser/service_worker/embedded_worker_test_helper.h
+++ b/content/browser/service_worker/embedded_worker_test_helper.h
@@ -30,6 +30,7 @@ class EmbeddedWorkerRegistry;
class EmbeddedWorkerTestHelper;
class MessagePortMessageFilter;
class MockRenderProcessHost;
+struct PushEventPayload;
class ServiceWorkerContextCore;
class ServiceWorkerContextWrapper;
struct ServiceWorkerFetchRequest;
@@ -125,7 +126,7 @@ class EmbeddedWorkerTestHelper : public IPC::Sender,
const ServiceWorkerFetchRequest& request);
virtual void OnPushEvent(int embedded_worker_id,
int request_id,
- const std::string& data);
+ const PushEventPayload& payload);
// These functions simulate sending an EmbeddedHostMsg message to the
// browser.
@@ -152,7 +153,7 @@ class EmbeddedWorkerTestHelper : public IPC::Sender,
void OnInstallEventStub(int request_id);
void OnFetchEventStub(int request_id,
const ServiceWorkerFetchRequest& request);
- void OnPushEventStub(int request_id, const std::string& data);
+ void OnPushEventStub(int request_id, const PushEventPayload& payload);
void OnSetupMojoStub(int thread_id,
mojo::InterfaceRequest<mojo::ServiceProvider> services,
mojo::ServiceProviderPtr exposed_services);