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

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

Issue 673783003: BrowserTest for delivering push message to service worker. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@PushIntegrationTest2
Patch Set: Break long line. Created 6 years, 2 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 | « no previous file | chrome/test/data/push_messaging/service_worker.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/services/gcm/push_messaging_browsertest.cc
diff --git a/chrome/browser/services/gcm/push_messaging_browsertest.cc b/chrome/browser/services/gcm/push_messaging_browsertest.cc
index 84333919fde080af242042da96ef0c9300e29d1d..c44f7bbdeec311664a61219cd1e52cf63ba827c5 100644
--- a/chrome/browser/services/gcm/push_messaging_browsertest.cc
+++ b/chrome/browser/services/gcm/push_messaging_browsertest.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <map>
#include <string>
#include "base/bind.h"
@@ -17,6 +18,7 @@
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
+#include "components/gcm_driver/gcm_client.h"
#include "components/infobars/core/confirm_infobar_delegate.h"
#include "components/infobars/core/infobar.h"
#include "components/infobars/core/infobar_manager.h"
@@ -104,12 +106,16 @@ class PushMessagingBrowserTest : public InProcessBrowserTest {
browser()->profile(), &FakeGCMProfileService::Build));
gcm_service_->set_collect(true);
- ui_test_utils::NavigateToURL(
- browser(), https_server_->GetURL("files/push_messaging/test.html"));
+ loadTestPage();
InProcessBrowserTest::SetUpOnMainThread();
}
+ void loadTestPage() {
+ ui_test_utils::NavigateToURL(
+ browser(), https_server_->GetURL("files/push_messaging/test.html"));
+ }
+
bool RunScript(const std::string& script, std::string* result) {
return content::ExecuteScriptAndExtractString(
browser()->tab_strip_model()->GetActiveWebContents()->GetMainFrame(),
@@ -117,18 +123,15 @@ class PushMessagingBrowserTest : public InProcessBrowserTest {
result);
}
- bool RegisterServiceWorker(std::string* result) {
- return RunScript("registerServiceWorker()", result);
- }
-
- bool RegisterPush(std::string* result) {
- return RunScript("registerPush()", result);
- }
-
net::SpawnedTestServer* https_server() const { return https_server_.get(); }
FakeGCMProfileService* gcm_service() const { return gcm_service_; }
+ PushMessagingServiceImpl* push_service() {
+ return static_cast<PushMessagingServiceImpl*>(
+ gcm_service_->push_messaging_service());
+ }
+
private:
scoped_ptr<net::SpawnedTestServer> https_server_;
FakeGCMProfileService* gcm_service_;
@@ -137,32 +140,64 @@ class PushMessagingBrowserTest : public InProcessBrowserTest {
};
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, RegisterSuccess) {
- std::string register_worker_result;
- ASSERT_TRUE(RegisterServiceWorker(&register_worker_result));
- ASSERT_EQ("ok", register_worker_result);
+ std::string script_result;
+
+ ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result));
+ ASSERT_EQ("ok - service worker registered", script_result);
InfoBarResponder accepting_responder(browser(), true);
- std::string register_push_result;
- ASSERT_TRUE(RegisterPush(&register_push_result));
- EXPECT_EQ(std::string(kPushMessagingEndpoint) + " - 1", register_push_result);
+ ASSERT_TRUE(RunScript("registerPush()", &script_result));
+ EXPECT_EQ(std::string(kPushMessagingEndpoint) + " - 1", script_result);
- PushMessagingApplicationId expected_id(https_server()->GetURL(""), 0L);
- EXPECT_EQ(expected_id.ToString(), gcm_service()->last_registered_app_id());
+ PushMessagingApplicationId app_id(https_server()->GetURL(""), 0L);
+ EXPECT_EQ(app_id.ToString(), gcm_service()->last_registered_app_id());
EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]);
}
IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, RegisterFailureNoPermission) {
- std::string register_worker_result;
- ASSERT_TRUE(RegisterServiceWorker(&register_worker_result));
- ASSERT_EQ("ok", register_worker_result);
+ std::string script_result;
+
+ ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result));
+ ASSERT_EQ("ok - service worker registered", script_result);
InfoBarResponder cancelling_responder(browser(), false);
- std::string register_push_result;
- ASSERT_TRUE(RegisterPush(&register_push_result));
+ ASSERT_TRUE(RunScript("registerPush()", &script_result));
EXPECT_EQ("AbortError - Registration failed - permission denied",
- register_push_result);
+ script_result);
+}
+
+IN_PROC_BROWSER_TEST_F(PushMessagingBrowserTest, PushEventSuccess) {
+ std::string script_result;
+
+ ASSERT_TRUE(RunScript("registerServiceWorker()", &script_result));
+ ASSERT_EQ("ok - service worker registered", script_result);
+
+ InfoBarResponder accepting_responder(browser(), true);
+
+ ASSERT_TRUE(RunScript("registerPush()", &script_result));
+ EXPECT_EQ(std::string(kPushMessagingEndpoint) + " - 1", script_result);
+
+ PushMessagingApplicationId app_id(https_server()->GetURL(""), 0L);
+ EXPECT_EQ(app_id.ToString(), gcm_service()->last_registered_app_id());
+ EXPECT_EQ("1234567890", gcm_service()->last_registered_sender_ids()[0]);
+
+ ASSERT_TRUE(RunScript("isControlled()", &script_result));
+ ASSERT_EQ("false - is not controlled", script_result);
+
+ loadTestPage(); // Reload to become controlled.
+
+ ASSERT_TRUE(RunScript("isControlled()", &script_result));
+ ASSERT_EQ("true - is controlled", script_result);
+
+ GCMClient::IncomingMessage message;
+ GCMClient::MessageData messageData;
+ messageData.insert(std::pair<std::string, std::string>("data", "testdata"));
+ message.data = messageData;
+ push_service()->OnMessage(app_id.ToString(), message);
+ ASSERT_TRUE(RunScript("pushData.get()", &script_result));
+ EXPECT_EQ("testdata", script_result);
}
} // namespace gcm
« no previous file with comments | « no previous file | chrome/test/data/push_messaging/service_worker.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698