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

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

Issue 2050123002: Remove OwnPtr from Blink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: First attempt to land. Created 4 years, 6 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
OLDNEW
1 1
2 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Copyright 2014 The Chromium Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be 3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file. 4 // found in the LICENSE file.
5 5
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"
11 #include "bindings/core/v8/ScriptState.h" 11 #include "bindings/core/v8/ScriptState.h"
12 #include "bindings/core/v8/V8DOMException.h" 12 #include "bindings/core/v8/V8DOMException.h"
13 #include "bindings/core/v8/V8GCController.h" 13 #include "bindings/core/v8/V8GCController.h"
14 #include "core/dom/DOMException.h" 14 #include "core/dom/DOMException.h"
15 #include "core/dom/Document.h" 15 #include "core/dom/Document.h"
16 #include "core/dom/ExecutionContext.h" 16 #include "core/dom/ExecutionContext.h"
17 #include "core/page/FocusController.h" 17 #include "core/page/FocusController.h"
18 #include "core/testing/DummyPageHolder.h" 18 #include "core/testing/DummyPageHolder.h"
19 #include "modules/serviceworkers/ServiceWorkerContainerClient.h" 19 #include "modules/serviceworkers/ServiceWorkerContainerClient.h"
20 #include "platform/weborigin/KURL.h" 20 #include "platform/weborigin/KURL.h"
21 #include "platform/weborigin/SecurityOrigin.h" 21 #include "platform/weborigin/SecurityOrigin.h"
22 #include "public/platform/WebURL.h" 22 #include "public/platform/WebURL.h"
23 #include "public/platform/modules/serviceworker/WebServiceWorkerClientsInfo.h" 23 #include "public/platform/modules/serviceworker/WebServiceWorkerClientsInfo.h"
24 #include "public/platform/modules/serviceworker/WebServiceWorkerProvider.h" 24 #include "public/platform/modules/serviceworker/WebServiceWorkerProvider.h"
25 #include "testing/gtest/include/gtest/gtest.h" 25 #include "testing/gtest/include/gtest/gtest.h"
26 #include "wtf/OwnPtr.h" 26 #include "wtf/PtrUtil.h"
27 #include "wtf/PassOwnPtr.h"
28 #include "wtf/text/WTFString.h" 27 #include "wtf/text/WTFString.h"
28 #include <memory>
29 #include <v8.h> 29 #include <v8.h>
30 30
31 namespace blink { 31 namespace blink {
32 namespace { 32 namespace {
33 33
34 // Promise-related test support. 34 // Promise-related test support.
35 35
36 struct StubScriptFunction { 36 struct StubScriptFunction {
37 public: 37 public:
38 StubScriptFunction() 38 StubScriptFunction()
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 ~ServiceWorkerContainerTest() 155 ~ServiceWorkerContainerTest()
156 { 156 {
157 m_page.reset(); 157 m_page.reset();
158 V8GCController::collectAllGarbageForTesting(isolate()); 158 V8GCController::collectAllGarbageForTesting(isolate());
159 } 159 }
160 160
161 ExecutionContext* getExecutionContext() { return &(m_page->document()); } 161 ExecutionContext* getExecutionContext() { return &(m_page->document()); }
162 v8::Isolate* isolate() { return v8::Isolate::GetCurrent(); } 162 v8::Isolate* isolate() { return v8::Isolate::GetCurrent(); }
163 ScriptState* getScriptState() { return ScriptState::forMainWorld(m_page->doc ument().frame()); } 163 ScriptState* getScriptState() { return ScriptState::forMainWorld(m_page->doc ument().frame()); }
164 164
165 void provide(PassOwnPtr<WebServiceWorkerProvider> provider) 165 void provide(std::unique_ptr<WebServiceWorkerProvider> provider)
166 { 166 {
167 Supplement<Document>::provideTo(m_page->document(), ServiceWorkerContain erClient::supplementName(), ServiceWorkerContainerClient::create(std::move(provi der))); 167 Supplement<Document>::provideTo(m_page->document(), ServiceWorkerContain erClient::supplementName(), ServiceWorkerContainerClient::create(std::move(provi der)));
168 } 168 }
169 169
170 void setPageURL(const String& url) 170 void setPageURL(const String& url)
171 { 171 {
172 // For URL completion. 172 // For URL completion.
173 m_page->document().setURL(KURL(KURL(), url)); 173 m_page->document().setURL(KURL(KURL(), url));
174 174
175 // The basis for security checks. 175 // The basis for security checks.
176 m_page->document().setSecurityOrigin(SecurityOrigin::createFromString(ur l)); 176 m_page->document().setSecurityOrigin(SecurityOrigin::createFromString(ur l));
177 } 177 }
178 178
179 void testRegisterRejected(const String& scriptURL, const String& scope, cons t ScriptValueTest& valueTest) 179 void testRegisterRejected(const String& scriptURL, const String& scope, cons t ScriptValueTest& valueTest)
180 { 180 {
181 // When the registration is rejected, a register call must not reach 181 // When the registration is rejected, a register call must not reach
182 // the provider. 182 // the provider.
183 provide(adoptPtr(new NotReachedWebServiceWorkerProvider())); 183 provide(wrapUnique(new NotReachedWebServiceWorkerProvider()));
184 184
185 ServiceWorkerContainer* container = ServiceWorkerContainer::create(getEx ecutionContext()); 185 ServiceWorkerContainer* container = ServiceWorkerContainer::create(getEx ecutionContext());
186 ScriptState::Scope scriptScope(getScriptState()); 186 ScriptState::Scope scriptScope(getScriptState());
187 RegistrationOptions options; 187 RegistrationOptions options;
188 options.setScope(scope); 188 options.setScope(scope);
189 ScriptPromise promise = container->registerServiceWorker(getScriptState( ), scriptURL, options); 189 ScriptPromise promise = container->registerServiceWorker(getScriptState( ), scriptURL, options);
190 expectRejected(getScriptState(), promise, valueTest); 190 expectRejected(getScriptState(), promise, valueTest);
191 191
192 container->willBeDetachedFromFrame(); 192 container->willBeDetachedFromFrame();
193 } 193 }
194 194
195 void testGetRegistrationRejected(const String& documentURL, const ScriptValu eTest& valueTest) 195 void testGetRegistrationRejected(const String& documentURL, const ScriptValu eTest& valueTest)
196 { 196 {
197 provide(adoptPtr(new NotReachedWebServiceWorkerProvider())); 197 provide(wrapUnique(new NotReachedWebServiceWorkerProvider()));
198 198
199 ServiceWorkerContainer* container = ServiceWorkerContainer::create(getEx ecutionContext()); 199 ServiceWorkerContainer* container = ServiceWorkerContainer::create(getEx ecutionContext());
200 ScriptState::Scope scriptScope(getScriptState()); 200 ScriptState::Scope scriptScope(getScriptState());
201 ScriptPromise promise = container->getRegistration(getScriptState(), doc umentURL); 201 ScriptPromise promise = container->getRegistration(getScriptState(), doc umentURL);
202 expectRejected(getScriptState(), promise, valueTest); 202 expectRejected(getScriptState(), promise, valueTest);
203 203
204 container->willBeDetachedFromFrame(); 204 container->willBeDetachedFromFrame();
205 } 205 }
206 206
207 private: 207 private:
208 OwnPtr<DummyPageHolder> m_page; 208 std::unique_ptr<DummyPageHolder> m_page;
209 }; 209 };
210 210
211 TEST_F(ServiceWorkerContainerTest, Register_NonSecureOriginIsRejected) 211 TEST_F(ServiceWorkerContainerTest, Register_NonSecureOriginIsRejected)
212 { 212 {
213 setPageURL("http://www.example.com/"); 213 setPageURL("http://www.example.com/");
214 testRegisterRejected( 214 testRegisterRejected(
215 "http://www.example.com/worker.js", 215 "http://www.example.com/worker.js",
216 "http://www.example.com/", 216 "http://www.example.com/",
217 ExpectDOMException("SecurityError", "Only secure origins are allowed (se e: https://goo.gl/Y0ZkNV).")); 217 ExpectDOMException("SecurityError", "Only secure origins are allowed (se e: https://goo.gl/Y0ZkNV)."));
218 } 218 }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 StubWebServiceWorkerProvider() 256 StubWebServiceWorkerProvider()
257 : m_registerCallCount(0) 257 : m_registerCallCount(0)
258 , m_getRegistrationCallCount(0) 258 , m_getRegistrationCallCount(0)
259 { 259 {
260 } 260 }
261 261
262 // Creates a WebServiceWorkerProvider. This can outlive the 262 // Creates a WebServiceWorkerProvider. This can outlive the
263 // StubWebServiceWorkerProvider, but |registerServiceWorker| and 263 // StubWebServiceWorkerProvider, but |registerServiceWorker| and
264 // other methods must not be called after the 264 // other methods must not be called after the
265 // StubWebServiceWorkerProvider dies. 265 // StubWebServiceWorkerProvider dies.
266 PassOwnPtr<WebServiceWorkerProvider> provider() 266 std::unique_ptr<WebServiceWorkerProvider> provider()
267 { 267 {
268 return adoptPtr(new WebServiceWorkerProviderImpl(*this)); 268 return wrapUnique(new WebServiceWorkerProviderImpl(*this));
269 } 269 }
270 270
271 size_t registerCallCount() { return m_registerCallCount; } 271 size_t registerCallCount() { return m_registerCallCount; }
272 const WebURL& registerScope() { return m_registerScope; } 272 const WebURL& registerScope() { return m_registerScope; }
273 const WebURL& registerScriptURL() { return m_registerScriptURL; } 273 const WebURL& registerScriptURL() { return m_registerScriptURL; }
274 size_t getRegistrationCallCount() { return m_getRegistrationCallCount; } 274 size_t getRegistrationCallCount() { return m_getRegistrationCallCount; }
275 const WebURL& getRegistrationURL() { return m_getRegistrationURL; } 275 const WebURL& getRegistrationURL() { return m_getRegistrationURL; }
276 276
277 private: 277 private:
278 class WebServiceWorkerProviderImpl : public WebServiceWorkerProvider { 278 class WebServiceWorkerProviderImpl : public WebServiceWorkerProvider {
279 public: 279 public:
280 WebServiceWorkerProviderImpl(StubWebServiceWorkerProvider& owner) 280 WebServiceWorkerProviderImpl(StubWebServiceWorkerProvider& owner)
281 : m_owner(owner) 281 : m_owner(owner)
282 { 282 {
283 } 283 }
284 284
285 ~WebServiceWorkerProviderImpl() override { } 285 ~WebServiceWorkerProviderImpl() override { }
286 286
287 void registerServiceWorker(const WebURL& pattern, const WebURL& scriptUR L, WebServiceWorkerRegistrationCallbacks* callbacks) override 287 void registerServiceWorker(const WebURL& pattern, const WebURL& scriptUR L, WebServiceWorkerRegistrationCallbacks* callbacks) override
288 { 288 {
289 m_owner.m_registerCallCount++; 289 m_owner.m_registerCallCount++;
290 m_owner.m_registerScope = pattern; 290 m_owner.m_registerScope = pattern;
291 m_owner.m_registerScriptURL = scriptURL; 291 m_owner.m_registerScriptURL = scriptURL;
292 m_registrationCallbacksToDelete.append(adoptPtr(callbacks)); 292 m_registrationCallbacksToDelete.append(wrapUnique(callbacks));
293 } 293 }
294 294
295 void getRegistration(const WebURL& documentURL, WebServiceWorkerGetRegis trationCallbacks* callbacks) override 295 void getRegistration(const WebURL& documentURL, WebServiceWorkerGetRegis trationCallbacks* callbacks) override
296 { 296 {
297 m_owner.m_getRegistrationCallCount++; 297 m_owner.m_getRegistrationCallCount++;
298 m_owner.m_getRegistrationURL = documentURL; 298 m_owner.m_getRegistrationURL = documentURL;
299 m_getRegistrationCallbacksToDelete.append(adoptPtr(callbacks)); 299 m_getRegistrationCallbacksToDelete.append(wrapUnique(callbacks));
300 } 300 }
301 301
302 bool validateScopeAndScriptURL(const WebURL& scope, const WebURL& script URL, WebString* errorMessage) 302 bool validateScopeAndScriptURL(const WebURL& scope, const WebURL& script URL, WebString* errorMessage)
303 { 303 {
304 return true; 304 return true;
305 } 305 }
306 306
307 private: 307 private:
308 StubWebServiceWorkerProvider& m_owner; 308 StubWebServiceWorkerProvider& m_owner;
309 Vector<OwnPtr<WebServiceWorkerRegistrationCallbacks>> m_registrationCall backsToDelete; 309 Vector<std::unique_ptr<WebServiceWorkerRegistrationCallbacks>> m_registr ationCallbacksToDelete;
310 Vector<OwnPtr<WebServiceWorkerGetRegistrationCallbacks>> m_getRegistrati onCallbacksToDelete; 310 Vector<std::unique_ptr<WebServiceWorkerGetRegistrationCallbacks>> m_getR egistrationCallbacksToDelete;
311 }; 311 };
312 312
313 private: 313 private:
314 size_t m_registerCallCount; 314 size_t m_registerCallCount;
315 WebURL m_registerScope; 315 WebURL m_registerScope;
316 WebURL m_registerScriptURL; 316 WebURL m_registerScriptURL;
317 size_t m_getRegistrationCallCount; 317 size_t m_getRegistrationCallCount;
318 WebURL m_getRegistrationURL; 318 WebURL m_getRegistrationURL;
319 }; 319 };
320 320
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 container->getRegistration(getScriptState(), ""); 356 container->getRegistration(getScriptState(), "");
357 EXPECT_EQ(1ul, stubProvider.getRegistrationCallCount()); 357 EXPECT_EQ(1ul, stubProvider.getRegistrationCallCount());
358 EXPECT_EQ(WebURL(KURL(KURL(), "http://localhost/x/index.html")), stubPro vider.getRegistrationURL()); 358 EXPECT_EQ(WebURL(KURL(KURL(), "http://localhost/x/index.html")), stubPro vider.getRegistrationURL());
359 } 359 }
360 360
361 container->willBeDetachedFromFrame(); 361 container->willBeDetachedFromFrame();
362 } 362 }
363 363
364 } // namespace 364 } // namespace
365 } // namespace blink 365 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698