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

Side by Side Diff: content/browser/service_worker/service_worker_url_request_job_unittest.cc

Issue 442383002: Move storage-related files from webkit/ to new top-level directory storage/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/callback.h" 6 #include "base/callback.h"
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "content/browser/fileapi/chrome_blob_storage_context.h" 10 #include "content/browser/fileapi/chrome_blob_storage_context.h"
(...skipping 10 matching lines...) Expand all
21 #include "content/public/browser/blob_handle.h" 21 #include "content/public/browser/blob_handle.h"
22 #include "content/public/test/test_browser_context.h" 22 #include "content/public/test/test_browser_context.h"
23 #include "content/public/test/test_browser_thread_bundle.h" 23 #include "content/public/test/test_browser_thread_bundle.h"
24 #include "net/base/io_buffer.h" 24 #include "net/base/io_buffer.h"
25 #include "net/http/http_request_headers.h" 25 #include "net/http/http_request_headers.h"
26 #include "net/http/http_response_headers.h" 26 #include "net/http/http_response_headers.h"
27 #include "net/url_request/url_request.h" 27 #include "net/url_request/url_request.h"
28 #include "net/url_request/url_request_context.h" 28 #include "net/url_request/url_request_context.h"
29 #include "net/url_request/url_request_job_factory_impl.h" 29 #include "net/url_request/url_request_job_factory_impl.h"
30 #include "testing/gtest/include/gtest/gtest.h" 30 #include "testing/gtest/include/gtest/gtest.h"
31 #include "webkit/browser/blob/blob_storage_context.h" 31 #include "storage/browser/blob/blob_storage_context.h"
32 #include "webkit/browser/blob/blob_url_request_job.h" 32 #include "storage/browser/blob/blob_url_request_job.h"
33 #include "webkit/browser/blob/blob_url_request_job_factory.h" 33 #include "storage/browser/blob/blob_url_request_job_factory.h"
34 #include "webkit/common/blob/blob_data.h" 34 #include "storage/common/blob/blob_data.h"
35 35
36 namespace content { 36 namespace content {
37 37
38 class ServiceWorkerURLRequestJobTest; 38 class ServiceWorkerURLRequestJobTest;
39 39
40 namespace { 40 namespace {
41 41
42 const int kProcessID = 1; 42 const int kProcessID = 1;
43 const int kProviderID = 100; 43 const int kProviderID = 100;
44 const char kTestData[] = "Here is sample text for the blob."; 44 const char kTestData[] = "Here is sample text for the blob.";
45 45
46 class MockHttpProtocolHandler 46 class MockHttpProtocolHandler
47 : public net::URLRequestJobFactory::ProtocolHandler { 47 : public net::URLRequestJobFactory::ProtocolHandler {
48 public: 48 public:
49 MockHttpProtocolHandler( 49 MockHttpProtocolHandler(
50 base::WeakPtr<ServiceWorkerProviderHost> provider_host, 50 base::WeakPtr<ServiceWorkerProviderHost> provider_host,
51 base::WeakPtr<webkit_blob::BlobStorageContext> blob_storage_context) 51 base::WeakPtr<storage::BlobStorageContext> blob_storage_context)
52 : provider_host_(provider_host), 52 : provider_host_(provider_host),
53 blob_storage_context_(blob_storage_context) {} 53 blob_storage_context_(blob_storage_context) {}
54 virtual ~MockHttpProtocolHandler() {} 54 virtual ~MockHttpProtocolHandler() {}
55 55
56 virtual net::URLRequestJob* MaybeCreateJob( 56 virtual net::URLRequestJob* MaybeCreateJob(
57 net::URLRequest* request, 57 net::URLRequest* request,
58 net::NetworkDelegate* network_delegate) const OVERRIDE { 58 net::NetworkDelegate* network_delegate) const OVERRIDE {
59 ServiceWorkerURLRequestJob* job = new ServiceWorkerURLRequestJob( 59 ServiceWorkerURLRequestJob* job = new ServiceWorkerURLRequestJob(
60 request, network_delegate, provider_host_, blob_storage_context_); 60 request, network_delegate, provider_host_, blob_storage_context_);
61 job->ForwardToServiceWorker(); 61 job->ForwardToServiceWorker();
62 return job; 62 return job;
63 } 63 }
64 64
65 private: 65 private:
66 base::WeakPtr<ServiceWorkerProviderHost> provider_host_; 66 base::WeakPtr<ServiceWorkerProviderHost> provider_host_;
67 base::WeakPtr<webkit_blob::BlobStorageContext> blob_storage_context_; 67 base::WeakPtr<storage::BlobStorageContext> blob_storage_context_;
68 }; 68 };
69 69
70 // Returns a BlobProtocolHandler that uses |blob_storage_context|. Caller owns 70 // Returns a BlobProtocolHandler that uses |blob_storage_context|. Caller owns
71 // the memory. 71 // the memory.
72 webkit_blob::BlobProtocolHandler* CreateMockBlobProtocolHandler( 72 storage::BlobProtocolHandler* CreateMockBlobProtocolHandler(
73 webkit_blob::BlobStorageContext* blob_storage_context) { 73 storage::BlobStorageContext* blob_storage_context) {
74 // The FileSystemContext and MessageLoopProxy are not actually used but a 74 // The FileSystemContext and MessageLoopProxy are not actually used but a
75 // MessageLoopProxy is needed to avoid a DCHECK in BlobURLRequestJob ctor. 75 // MessageLoopProxy is needed to avoid a DCHECK in BlobURLRequestJob ctor.
76 return new webkit_blob::BlobProtocolHandler( 76 return new storage::BlobProtocolHandler(
77 blob_storage_context, NULL, base::MessageLoopProxy::current().get()); 77 blob_storage_context, NULL, base::MessageLoopProxy::current().get());
78 } 78 }
79 79
80 } // namespace 80 } // namespace
81 81
82 class ServiceWorkerURLRequestJobTest : public testing::Test { 82 class ServiceWorkerURLRequestJobTest : public testing::Test {
83 protected: 83 protected:
84 ServiceWorkerURLRequestJobTest() 84 ServiceWorkerURLRequestJobTest()
85 : thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP), 85 : thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP),
86 blob_data_(new webkit_blob::BlobData("blob-id:myblob")) {} 86 blob_data_(new storage::BlobData("blob-id:myblob")) {}
87 virtual ~ServiceWorkerURLRequestJobTest() {} 87 virtual ~ServiceWorkerURLRequestJobTest() {}
88 88
89 virtual void SetUp() OVERRIDE { 89 virtual void SetUp() OVERRIDE {
90 browser_context_.reset(new TestBrowserContext); 90 browser_context_.reset(new TestBrowserContext);
91 SetUpWithHelper(new EmbeddedWorkerTestHelper(kProcessID)); 91 SetUpWithHelper(new EmbeddedWorkerTestHelper(kProcessID));
92 } 92 }
93 93
94 void SetUpWithHelper(EmbeddedWorkerTestHelper* helper) { 94 void SetUpWithHelper(EmbeddedWorkerTestHelper* helper) {
95 helper_.reset(helper); 95 helper_.reset(helper);
96 96
97 registration_ = new ServiceWorkerRegistration( 97 registration_ = new ServiceWorkerRegistration(
98 GURL("http://example.com/"), 98 GURL("http://example.com/"),
99 GURL("http://example.com/service_worker.js"), 99 GURL("http://example.com/service_worker.js"),
100 1L, 100 1L,
101 helper_->context()->AsWeakPtr()); 101 helper_->context()->AsWeakPtr());
102 version_ = new ServiceWorkerVersion( 102 version_ = new ServiceWorkerVersion(
103 registration_, 1L, helper_->context()->AsWeakPtr()); 103 registration_, 1L, helper_->context()->AsWeakPtr());
104 104
105 scoped_ptr<ServiceWorkerProviderHost> provider_host( 105 scoped_ptr<ServiceWorkerProviderHost> provider_host(
106 new ServiceWorkerProviderHost( 106 new ServiceWorkerProviderHost(
107 kProcessID, kProviderID, helper_->context()->AsWeakPtr(), NULL)); 107 kProcessID, kProviderID, helper_->context()->AsWeakPtr(), NULL));
108 provider_host->AssociateRegistration(registration_); 108 provider_host->AssociateRegistration(registration_);
109 registration_->SetActiveVersion(version_.get()); 109 registration_->SetActiveVersion(version_.get());
110 110
111 ChromeBlobStorageContext* chrome_blob_storage_context = 111 ChromeBlobStorageContext* chrome_blob_storage_context =
112 ChromeBlobStorageContext::GetFor(browser_context_.get()); 112 ChromeBlobStorageContext::GetFor(browser_context_.get());
113 // Wait for chrome_blob_storage_context to finish initializing. 113 // Wait for chrome_blob_storage_context to finish initializing.
114 base::RunLoop().RunUntilIdle(); 114 base::RunLoop().RunUntilIdle();
115 webkit_blob::BlobStorageContext* blob_storage_context = 115 storage::BlobStorageContext* blob_storage_context =
116 chrome_blob_storage_context->context(); 116 chrome_blob_storage_context->context();
117 117
118 url_request_job_factory_.reset(new net::URLRequestJobFactoryImpl); 118 url_request_job_factory_.reset(new net::URLRequestJobFactoryImpl);
119 url_request_job_factory_->SetProtocolHandler( 119 url_request_job_factory_->SetProtocolHandler(
120 "http", 120 "http",
121 new MockHttpProtocolHandler(provider_host->AsWeakPtr(), 121 new MockHttpProtocolHandler(provider_host->AsWeakPtr(),
122 blob_storage_context->AsWeakPtr())); 122 blob_storage_context->AsWeakPtr()));
123 url_request_job_factory_->SetProtocolHandler( 123 url_request_job_factory_->SetProtocolHandler(
124 "blob", CreateMockBlobProtocolHandler(blob_storage_context)); 124 "blob", CreateMockBlobProtocolHandler(blob_storage_context));
125 url_request_context_.set_job_factory(url_request_job_factory_.get()); 125 url_request_context_.set_job_factory(url_request_job_factory_.get());
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 scoped_ptr<TestBrowserContext> browser_context_; 158 scoped_ptr<TestBrowserContext> browser_context_;
159 scoped_ptr<EmbeddedWorkerTestHelper> helper_; 159 scoped_ptr<EmbeddedWorkerTestHelper> helper_;
160 scoped_refptr<ServiceWorkerRegistration> registration_; 160 scoped_refptr<ServiceWorkerRegistration> registration_;
161 scoped_refptr<ServiceWorkerVersion> version_; 161 scoped_refptr<ServiceWorkerVersion> version_;
162 162
163 scoped_ptr<net::URLRequestJobFactoryImpl> url_request_job_factory_; 163 scoped_ptr<net::URLRequestJobFactoryImpl> url_request_job_factory_;
164 net::URLRequestContext url_request_context_; 164 net::URLRequestContext url_request_context_;
165 MockURLRequestDelegate url_request_delegate_; 165 MockURLRequestDelegate url_request_delegate_;
166 scoped_ptr<net::URLRequest> request_; 166 scoped_ptr<net::URLRequest> request_;
167 167
168 scoped_refptr<webkit_blob::BlobData> blob_data_; 168 scoped_refptr<storage::BlobData> blob_data_;
169 169
170 private: 170 private:
171 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerURLRequestJobTest); 171 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerURLRequestJobTest);
172 }; 172 };
173 173
174 TEST_F(ServiceWorkerURLRequestJobTest, Simple) { 174 TEST_F(ServiceWorkerURLRequestJobTest, Simple) {
175 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 175 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
176 TestRequest(200, "OK", std::string()); 176 TestRequest(200, "OK", std::string());
177 } 177 }
178 178
(...skipping 27 matching lines...) Expand all
206 }; 206 };
207 207
208 TEST_F(ServiceWorkerURLRequestJobTest, BlobResponse) { 208 TEST_F(ServiceWorkerURLRequestJobTest, BlobResponse) {
209 ChromeBlobStorageContext* blob_storage_context = 209 ChromeBlobStorageContext* blob_storage_context =
210 ChromeBlobStorageContext::GetFor(browser_context_.get()); 210 ChromeBlobStorageContext::GetFor(browser_context_.get());
211 std::string expected_response; 211 std::string expected_response;
212 for (int i = 0; i < 1024; ++i) { 212 for (int i = 0; i < 1024; ++i) {
213 blob_data_->AppendData(kTestData); 213 blob_data_->AppendData(kTestData);
214 expected_response += kTestData; 214 expected_response += kTestData;
215 } 215 }
216 scoped_ptr<webkit_blob::BlobDataHandle> blob_handle = 216 scoped_ptr<storage::BlobDataHandle> blob_handle =
217 blob_storage_context->context()->AddFinishedBlob(blob_data_); 217 blob_storage_context->context()->AddFinishedBlob(blob_data_);
218 SetUpWithHelper(new BlobResponder(kProcessID, blob_handle->uuid())); 218 SetUpWithHelper(new BlobResponder(kProcessID, blob_handle->uuid()));
219 219
220 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 220 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
221 TestRequest(200, "OK", expected_response); 221 TestRequest(200, "OK", expected_response);
222 } 222 }
223 223
224 TEST_F(ServiceWorkerURLRequestJobTest, NonExistentBlobUUIDResponse) { 224 TEST_F(ServiceWorkerURLRequestJobTest, NonExistentBlobUUIDResponse) {
225 SetUpWithHelper(new BlobResponder(kProcessID, "blob-id:nothing-is-here")); 225 SetUpWithHelper(new BlobResponder(kProcessID, "blob-id:nothing-is-here"));
226 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 226 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
227 TestRequest(500, "Service Worker Response Error", std::string()); 227 TestRequest(500, "Service Worker Response Error", std::string());
228 } 228 }
229 229
230 // TODO(kinuko): Add more tests with different response data and also for 230 // TODO(kinuko): Add more tests with different response data and also for
231 // FallbackToNetwork case. 231 // FallbackToNetwork case.
232 232
233 } // namespace content 233 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698