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

Unified Diff: content/browser/service_worker/service_worker_version_unittest.cc

Issue 1406823002: Start of foreign fetch implementation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove blank line Created 5 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
Index: content/browser/service_worker/service_worker_version_unittest.cc
diff --git a/content/browser/service_worker/service_worker_version_unittest.cc b/content/browser/service_worker/service_worker_version_unittest.cc
index 959f80289f5f19d5da40606c8850031a5898d289..75c4d442b2f7904e6f0038273faf5bca8ab91c21 100644
--- a/content/browser/service_worker/service_worker_version_unittest.cc
+++ b/content/browser/service_worker/service_worker_version_unittest.cc
@@ -12,6 +12,7 @@
#include "content/browser/service_worker/service_worker_test_utils.h"
#include "content/browser/service_worker/service_worker_version.h"
#include "content/common/service_worker/service_worker_utils.h"
+#include "content/public/test/mock_render_process_host.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -31,12 +32,10 @@ namespace content {
namespace {
-static const int kRenderProcessId = 1;
-
class MessageReceiver : public EmbeddedWorkerTestHelper {
public:
MessageReceiver()
- : EmbeddedWorkerTestHelper(base::FilePath(), kRenderProcessId),
+ : EmbeddedWorkerTestHelper(base::FilePath()),
current_embedded_worker_id_(0) {}
~MessageReceiver() override {}
@@ -151,15 +150,14 @@ class ServiceWorkerVersionTest : public testing::Test {
void SetUp() override {
helper_ = GetMessageReceiver();
- pattern_ = GURL("http://www.example.com/");
+ pattern_ = GURL("http://www.example.com/test/");
registration_ = new ServiceWorkerRegistration(
pattern_,
1L,
helper_->context()->AsWeakPtr());
version_ = new ServiceWorkerVersion(
registration_.get(),
- GURL("http://www.example.com/service_worker.js"),
- 1L,
+ GURL("http://www.example.com/test/service_worker.js"), 1L,
helper_->context()->AsWeakPtr());
std::vector<ServiceWorkerDatabase::ResourceRecord> records;
records.push_back(
@@ -178,7 +176,8 @@ class ServiceWorkerVersionTest : public testing::Test {
ASSERT_EQ(SERVICE_WORKER_OK, status);
// Simulate adding one process to the pattern.
- helper_->SimulateAddProcessToPattern(pattern_, kRenderProcessId);
+ helper_->SimulateAddProcessToPattern(pattern_,
+ helper_->mock_render_process_id());
ASSERT_TRUE(helper_->context()->process_manager()
->PatternHasProcessToRun(pattern_));
}
@@ -868,4 +867,53 @@ TEST_F(ServiceWorkerStallInStoppingTest, DetachThenRestart) {
EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status());
}
+TEST_F(ServiceWorkerVersionTest, RegisterForeignFetchScopes) {
+ version_->SetStatus(ServiceWorkerVersion::INSTALLING);
+ // Start a worker.
+ ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
+ version_->StartWorker(CreateReceiverOnCurrentThread(&status));
+ base::RunLoop().RunUntilIdle();
+ EXPECT_EQ(SERVICE_WORKER_OK, status);
+ EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status());
+ EXPECT_EQ(0, helper_->mock_render_process_host()->bad_msg_count());
+
+ // Invalid URL, should kill worker (but in tests will only increase bad
+ // message count).
+ version_->OnRegisterForeignFetchScopes(std::vector<GURL>(1, GURL()));
+ base::RunLoop().RunUntilIdle();
+ EXPECT_EQ(1, helper_->mock_render_process_host()->bad_msg_count());
+ EXPECT_EQ(0u, version_->foreign_fetch_scopes_.size());
+
+ // URL outside the scope of the worker.
+ version_->OnRegisterForeignFetchScopes(
+ std::vector<GURL>(1, GURL("http://www.example.com/wrong")));
+ base::RunLoop().RunUntilIdle();
+ EXPECT_EQ(2, helper_->mock_render_process_host()->bad_msg_count());
+ EXPECT_EQ(0u, version_->foreign_fetch_scopes_.size());
+
+ // URL on wrong origin.
+ version_->OnRegisterForeignFetchScopes(
+ std::vector<GURL>(1, GURL("http://example.com/test/")));
+ base::RunLoop().RunUntilIdle();
+ EXPECT_EQ(3, helper_->mock_render_process_host()->bad_msg_count());
+ EXPECT_EQ(0u, version_->foreign_fetch_scopes_.size());
+
+ // Valid URL 1.
+ GURL valid_scope_1("http://www.example.com/test/subscope");
+ version_->OnRegisterForeignFetchScopes(std::vector<GURL>(1, valid_scope_1));
+ base::RunLoop().RunUntilIdle();
+ EXPECT_EQ(3, helper_->mock_render_process_host()->bad_msg_count());
+ EXPECT_EQ(1u, version_->foreign_fetch_scopes_.size());
+ EXPECT_EQ(valid_scope_1, version_->foreign_fetch_scopes_[0]);
+
+ // Valid URL 2.
+ GURL valid_scope_2("http://www.example.com/test/subscope");
+ version_->OnRegisterForeignFetchScopes(std::vector<GURL>(1, valid_scope_2));
+ base::RunLoop().RunUntilIdle();
+ EXPECT_EQ(3, helper_->mock_render_process_host()->bad_msg_count());
+ EXPECT_EQ(2u, version_->foreign_fetch_scopes_.size());
+ EXPECT_EQ(valid_scope_1, version_->foreign_fetch_scopes_[0]);
+ EXPECT_EQ(valid_scope_2, version_->foreign_fetch_scopes_[1]);
+}
+
} // namespace content
« no previous file with comments | « content/browser/service_worker/service_worker_version.cc ('k') | content/common/service_worker/service_worker_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698