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

Side by Side Diff: Source/modules/serviceworkers/ServiceWorkerContainerTest.cpp

Issue 540823003: ServiceWorker: Implement navigator.serviceWorker.getRegistration [3/3] (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: patch for review Created 6 years, 3 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 "config.h" 5 #include "config.h"
6 #include "modules/serviceworkers/ServiceWorkerContainer.h" 6 #include "modules/serviceworkers/ServiceWorkerContainer.h"
7 7
8 #include "bindings/core/v8/Dictionary.h" 8 #include "bindings/core/v8/Dictionary.h"
9 #include "bindings/core/v8/ScriptFunction.h" 9 #include "bindings/core/v8/ScriptFunction.h"
10 #include "bindings/core/v8/ScriptPromise.h" 10 #include "bindings/core/v8/ScriptPromise.h"
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 ServiceWorkerContainer* container = ServiceWorkerContainer::create(execu tionContext()); 198 ServiceWorkerContainer* container = ServiceWorkerContainer::create(execu tionContext());
199 ScriptState::Scope scriptScope(scriptState()); 199 ScriptState::Scope scriptScope(scriptState());
200 Dictionary options = Dictionary::createEmpty(isolate()); 200 Dictionary options = Dictionary::createEmpty(isolate());
201 EXPECT_TRUE(options.set("scope", scope)); 201 EXPECT_TRUE(options.set("scope", scope));
202 ScriptPromise promise = container->unregisterServiceWorker(scriptState() , scope); 202 ScriptPromise promise = container->unregisterServiceWorker(scriptState() , scope);
203 expectRejected(scriptState(), promise, valueTest); 203 expectRejected(scriptState(), promise, valueTest);
204 204
205 container->willBeDetachedFromFrame(); 205 container->willBeDetachedFromFrame();
206 } 206 }
207 207
208 void testGetRegistrationRejected(const String& documentURL, const ScriptValu eTest& valueTest)
209 {
210 provide(adoptPtr(new NotReachedWebServiceWorkerProvider()));
211
212 ServiceWorkerContainer* container = ServiceWorkerContainer::create(execu tionContext());
213 ScriptState::Scope scriptScope(scriptState());
214 ScriptPromise promise = container->getRegistration(scriptState(), docume ntURL);
215 expectRejected(scriptState(), promise, valueTest);
216
217 container->willBeDetachedFromFrame();
218 }
219
208 private: 220 private:
209 OwnPtr<DummyPageHolder> m_page; 221 OwnPtr<DummyPageHolder> m_page;
210 }; 222 };
211 223
212 TEST_F(ServiceWorkerContainerTest, Register_NonSecureOriginIsRejected) 224 TEST_F(ServiceWorkerContainerTest, Register_NonSecureOriginIsRejected)
213 { 225 {
214 setPageURL("http://www.example.com/"); 226 setPageURL("http://www.example.com/");
215 testRegisterRejected( 227 testRegisterRejected(
216 "http://www.example.com/worker.js", 228 "http://www.example.com/worker.js",
217 "http://www.example.com/", 229 "http://www.example.com/",
(...skipping 27 matching lines...) Expand all
245 } 257 }
246 258
247 TEST_F(ServiceWorkerContainerTest, Unregister_CrossOriginScopeIsRejected) 259 TEST_F(ServiceWorkerContainerTest, Unregister_CrossOriginScopeIsRejected)
248 { 260 {
249 setPageURL("https://www.example.com"); 261 setPageURL("https://www.example.com");
250 testUnregisterRejected( 262 testUnregisterRejected(
251 "https://example.com/", // Differs by host 263 "https://example.com/", // Differs by host
252 ExpectDOMException("SecurityError", "The scope must match the current or igin.")); 264 ExpectDOMException("SecurityError", "The scope must match the current or igin."));
253 } 265 }
254 266
267 TEST_F(ServiceWorkerContainerTest, GetRegistration_NonSecureOriginIsRejected)
268 {
269 setPageURL("http://www.example.com/");
270 testGetRegistrationRejected(
271 "http://www.example.com/",
272 ExpectDOMException("NotSupportedError", "Only secure origins are allowed . http://goo.gl/lq4gCo"));
273 }
274
nhiroki 2014/09/10 07:45:04 Can you test the CrossOriginDocument case?
Kunihiko Sakamoto 2014/09/10 09:34:51 Done.
255 class StubWebServiceWorkerProvider { 275 class StubWebServiceWorkerProvider {
256 public: 276 public:
257 StubWebServiceWorkerProvider() 277 StubWebServiceWorkerProvider()
258 : m_registerCallCount(0) 278 : m_registerCallCount(0)
259 , m_unregisterCallCount(0) 279 , m_unregisterCallCount(0)
260 { 280 {
261 } 281 }
262 282
263 // Creates a WebServiceWorkerProvider. This can outlive the 283 // Creates a WebServiceWorkerProvider. This can outlive the
264 // StubWebServiceWorkerProvider, but |registerServiceWorker| and 284 // StubWebServiceWorkerProvider, but |registerServiceWorker| and
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 362
343 EXPECT_EQ(1ul, stubProvider.unregisterCallCount()); 363 EXPECT_EQ(1ul, stubProvider.unregisterCallCount());
344 EXPECT_EQ(WebURL(KURL(KURL(), "http://localhost/x/y/")), stubProvider.un registerScope()); 364 EXPECT_EQ(WebURL(KURL(KURL(), "http://localhost/x/y/")), stubProvider.un registerScope());
345 } 365 }
346 366
347 container->willBeDetachedFromFrame(); 367 container->willBeDetachedFromFrame();
348 } 368 }
349 369
350 } // namespace 370 } // namespace
351 } // namespace blink 371 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698