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

Side by Side Diff: third_party/WebKit/Source/core/loader/ThreadableLoaderTest.cpp

Issue 1925583003: Replace AllowCrossThreadAccess() + non-GCed pointers with crossThreadUnretained() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@Kuroneko_4
Patch Set: Rebase. Created 4 years, 5 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 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "core/loader/ThreadableLoader.h" 5 #include "core/loader/ThreadableLoader.h"
6 6
7 #include "core/dom/CrossThreadTask.h" 7 #include "core/dom/CrossThreadTask.h"
8 #include "core/fetch/MemoryCache.h" 8 #include "core/fetch/MemoryCache.h"
9 #include "core/fetch/ResourceLoaderOptions.h" 9 #include "core/fetch/ResourceLoaderOptions.h"
10 #include "core/loader/DocumentThreadableLoader.h" 10 #include "core/loader/DocumentThreadableLoader.h"
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 WorkerThreadableLoaderTestHelper() 156 WorkerThreadableLoaderTestHelper()
157 : m_dummyPageHolder(DummyPageHolder::create(IntSize(1, 1))) 157 : m_dummyPageHolder(DummyPageHolder::create(IntSize(1, 1)))
158 { 158 {
159 } 159 }
160 160
161 void createLoader(ThreadableLoaderClient* client, CrossOriginRequestPolicy c rossOriginRequestPolicy) override 161 void createLoader(ThreadableLoaderClient* client, CrossOriginRequestPolicy c rossOriginRequestPolicy) override
162 { 162 {
163 std::unique_ptr<WaitableEvent> completionEvent = wrapUnique(new Waitable Event()); 163 std::unique_ptr<WaitableEvent> completionEvent = wrapUnique(new Waitable Event());
164 postTaskToWorkerGlobalScope(createCrossThreadTask( 164 postTaskToWorkerGlobalScope(createCrossThreadTask(
165 &WorkerThreadableLoaderTestHelper::workerCreateLoader, 165 &WorkerThreadableLoaderTestHelper::workerCreateLoader,
166 AllowCrossThreadAccess(this), 166 crossThreadUnretained(this),
167 AllowCrossThreadAccess(client), 167 crossThreadUnretained(client),
168 AllowCrossThreadAccess(completionEvent.get()), 168 crossThreadUnretained(completionEvent.get()),
169 crossOriginRequestPolicy)); 169 crossOriginRequestPolicy));
170 completionEvent->wait(); 170 completionEvent->wait();
171 } 171 }
172 172
173 void startLoader(const ResourceRequest& request) override 173 void startLoader(const ResourceRequest& request) override
174 { 174 {
175 std::unique_ptr<WaitableEvent> completionEvent = wrapUnique(new Waitable Event()); 175 std::unique_ptr<WaitableEvent> completionEvent = wrapUnique(new Waitable Event());
176 postTaskToWorkerGlobalScope(createCrossThreadTask( 176 postTaskToWorkerGlobalScope(createCrossThreadTask(
177 &WorkerThreadableLoaderTestHelper::workerStartLoader, 177 &WorkerThreadableLoaderTestHelper::workerStartLoader,
178 AllowCrossThreadAccess(this), 178 crossThreadUnretained(this),
179 AllowCrossThreadAccess(completionEvent.get()), 179 crossThreadUnretained(completionEvent.get()),
180 request)); 180 request));
181 completionEvent->wait(); 181 completionEvent->wait();
182 } 182 }
183 183
184 // Must be called on the worker thread. 184 // Must be called on the worker thread.
185 void cancelLoader() override 185 void cancelLoader() override
186 { 186 {
187 ASSERT(m_workerThread); 187 ASSERT(m_workerThread);
188 ASSERT(m_workerThread->isCurrentThread()); 188 ASSERT(m_workerThread->isCurrentThread());
189 m_loader->cancel(); 189 m_loader->cancel();
(...skipping 12 matching lines...) Expand all
202 return m_checkpoint; 202 return m_checkpoint;
203 } 203 }
204 204
205 void callCheckpoint(int n) override 205 void callCheckpoint(int n) override
206 { 206 {
207 testing::runPendingTasks(); 207 testing::runPendingTasks();
208 208
209 std::unique_ptr<WaitableEvent> completionEvent = wrapUnique(new Waitable Event()); 209 std::unique_ptr<WaitableEvent> completionEvent = wrapUnique(new Waitable Event());
210 postTaskToWorkerGlobalScope(createCrossThreadTask( 210 postTaskToWorkerGlobalScope(createCrossThreadTask(
211 &WorkerThreadableLoaderTestHelper::workerCallCheckpoint, 211 &WorkerThreadableLoaderTestHelper::workerCallCheckpoint,
212 AllowCrossThreadAccess(this), 212 crossThreadUnretained(this),
213 AllowCrossThreadAccess(completionEvent.get()), 213 crossThreadUnretained(completionEvent.get()),
214 n)); 214 n));
215 completionEvent->wait(); 215 completionEvent->wait();
216 } 216 }
217 217
218 void onSetUp() override 218 void onSetUp() override
219 { 219 {
220 m_mockWorkerReportingProxy = wrapUnique(new MockWorkerReportingProxy()); 220 m_mockWorkerReportingProxy = wrapUnique(new MockWorkerReportingProxy());
221 m_securityOrigin = document().getSecurityOrigin(); 221 m_securityOrigin = document().getSecurityOrigin();
222 m_workerThread = wrapUnique(new WorkerThreadForTest( 222 m_workerThread = wrapUnique(new WorkerThreadForTest(
223 this, 223 this,
224 *m_mockWorkerReportingProxy)); 224 *m_mockWorkerReportingProxy));
225 225
226 expectWorkerLifetimeReportingCalls(); 226 expectWorkerLifetimeReportingCalls();
227 m_workerThread->startWithSourceCode(m_securityOrigin.get(), "//fake sour ce code"); 227 m_workerThread->startWithSourceCode(m_securityOrigin.get(), "//fake sour ce code");
228 m_workerThread->waitForInit(); 228 m_workerThread->waitForInit();
229 } 229 }
230 230
231 void onServeRequests() override 231 void onServeRequests() override
232 { 232 {
233 testing::runPendingTasks(); 233 testing::runPendingTasks();
234 } 234 }
235 235
236 void onTearDown() override 236 void onTearDown() override
237 { 237 {
238 postTaskToWorkerGlobalScope(createCrossThreadTask(&WorkerThreadableLoade rTestHelper::clearLoader, AllowCrossThreadAccess(this))); 238 postTaskToWorkerGlobalScope(createCrossThreadTask(&WorkerThreadableLoade rTestHelper::clearLoader, crossThreadUnretained(this)));
239 m_workerThread->terminateAndWait(); 239 m_workerThread->terminateAndWait();
240 240
241 // Needed to clean up the things on the main thread side and 241 // Needed to clean up the things on the main thread side and
242 // avoid Resource leaks. 242 // avoid Resource leaks.
243 testing::runPendingTasks(); 243 testing::runPendingTasks();
244 244
245 m_workerThread->workerLoaderProxy()->detachProvider(this); 245 m_workerThread->workerLoaderProxy()->detachProvider(this);
246 } 246 }
247 247
248 private: 248 private:
(...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after
833 EXPECT_CALL(*client(), didFailRedirectCheck()).WillOnce(InvokeWithoutArgs(th is, &ThreadableLoaderTest::clearLoader)); 833 EXPECT_CALL(*client(), didFailRedirectCheck()).WillOnce(InvokeWithoutArgs(th is, &ThreadableLoaderTest::clearLoader));
834 834
835 startLoader(redirectLoopURL()); 835 startLoader(redirectLoopURL());
836 callCheckpoint(2); 836 callCheckpoint(2);
837 serveRequests(); 837 serveRequests();
838 } 838 }
839 839
840 } // namespace 840 } // namespace
841 841
842 } // namespace blink 842 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698