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

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

Issue 1264453002: Split the constructor of ThreadableLoader into two methods (ctor and start()) (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Removed pipes around non-variables in a comment Created 4 years, 10 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 (C) 2009, 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2009, 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 52
53 namespace blink { 53 namespace blink {
54 54
55 static PassOwnPtr<Vector<char>> createVectorFromMemoryRegion(const char* data, u nsigned dataLength) 55 static PassOwnPtr<Vector<char>> createVectorFromMemoryRegion(const char* data, u nsigned dataLength)
56 { 56 {
57 OwnPtr<Vector<char>> buffer = adoptPtr(new Vector<char>(dataLength)); 57 OwnPtr<Vector<char>> buffer = adoptPtr(new Vector<char>(dataLength));
58 memcpy(buffer->data(), data, dataLength); 58 memcpy(buffer->data(), data, dataLength);
59 return buffer.release(); 59 return buffer.release();
60 } 60 }
61 61
62 WorkerThreadableLoader::WorkerThreadableLoader(WorkerGlobalScope& workerGlobalSc ope, ThreadableLoaderClient* client, const ResourceRequest& request, const Threa dableLoaderOptions& options, const ResourceLoaderOptions& resourceLoaderOptions, BlockingBehavior blockingBehavior) 62 WorkerThreadableLoader::WorkerThreadableLoader(WorkerGlobalScope& workerGlobalSc ope, ThreadableLoaderClient* client, const ThreadableLoaderOptions& options, con st ResourceLoaderOptions& resourceLoaderOptions, BlockingBehavior blockingBehavi or)
63 : m_workerGlobalScope(&workerGlobalScope) 63 : m_workerGlobalScope(&workerGlobalScope)
64 , m_workerClientWrapper(ThreadableLoaderClientWrapper::create(client)) 64 , m_workerClientWrapper(ThreadableLoaderClientWrapper::create(client))
65 { 65 {
66 m_workerClientWrapper->setResourceTimingClient(this); 66 m_workerClientWrapper->setResourceTimingClient(this);
67 if (blockingBehavior == LoadAsynchronously) { 67 if (blockingBehavior == LoadAsynchronously) {
68 m_bridge = new MainThreadAsyncBridge(workerGlobalScope, m_workerClientWr apper, request, options, resourceLoaderOptions, workerGlobalScope.referrerPolicy (), workerGlobalScope.url().strippedForUseAsReferrer()); 68 m_bridge = new MainThreadAsyncBridge(workerGlobalScope, m_workerClientWr apper, options, resourceLoaderOptions);
69 } else { 69 } else {
70 m_bridge = new MainThreadSyncBridge(workerGlobalScope, m_workerClientWra pper, request, options, resourceLoaderOptions, workerGlobalScope.referrerPolicy( ), workerGlobalScope.url().strippedForUseAsReferrer()); 70 m_bridge = new MainThreadSyncBridge(workerGlobalScope, m_workerClientWra pper, options, resourceLoaderOptions);
71 } 71 }
72 } 72 }
73 73
74 void WorkerThreadableLoader::loadResourceSynchronously(WorkerGlobalScope& worker GlobalScope, const ResourceRequest& request, ThreadableLoaderClient& client, con st ThreadableLoaderOptions& options, const ResourceLoaderOptions& resourceLoader Options) 74 void WorkerThreadableLoader::loadResourceSynchronously(WorkerGlobalScope& worker GlobalScope, const ResourceRequest& request, ThreadableLoaderClient& client, con st ThreadableLoaderOptions& options, const ResourceLoaderOptions& resourceLoader Options)
75 { 75 {
76 RefPtr<WorkerThreadableLoader> loader = adoptRef(new WorkerThreadableLoader( workerGlobalScope, &client, request, options, resourceLoaderOptions, LoadSynchro nously)); 76 RefPtr<WorkerThreadableLoader> loader = adoptRef(new WorkerThreadableLoader( workerGlobalScope, &client, options, resourceLoaderOptions, LoadSynchronously));
77 loader->start(request);
77 } 78 }
78 79
79 WorkerThreadableLoader::~WorkerThreadableLoader() 80 WorkerThreadableLoader::~WorkerThreadableLoader()
80 { 81 {
81 m_workerClientWrapper->clearResourceTimingClient(); 82 m_workerClientWrapper->clearResourceTimingClient();
82 m_bridge->destroy(); 83 m_bridge->destroy();
83 m_bridge = nullptr; 84 m_bridge = nullptr;
84 } 85 }
85 86
87 void WorkerThreadableLoader::start(const ResourceRequest& request)
88 {
89 m_bridge->start(request, *m_workerGlobalScope);
90 m_workerClientWrapper->setResourceTimingClient(this);
91 }
92
86 void WorkerThreadableLoader::overrideTimeout(unsigned long timeoutMilliseconds) 93 void WorkerThreadableLoader::overrideTimeout(unsigned long timeoutMilliseconds)
87 { 94 {
88 ASSERT(m_bridge); 95 ASSERT(m_bridge);
89 m_bridge->overrideTimeout(timeoutMilliseconds); 96 m_bridge->overrideTimeout(timeoutMilliseconds);
90 } 97 }
91 98
92 void WorkerThreadableLoader::cancel() 99 void WorkerThreadableLoader::cancel()
93 { 100 {
94 ASSERT(m_bridge); 101 ASSERT(m_bridge);
95 m_bridge->cancel(); 102 m_bridge->cancel();
(...skipping 11 matching lines...) Expand all
107 , m_loaderProxy(loaderProxy) 114 , m_loaderProxy(loaderProxy)
108 { 115 {
109 ASSERT(m_workerClientWrapper.get()); 116 ASSERT(m_workerClientWrapper.get());
110 ASSERT(m_loaderProxy.get()); 117 ASSERT(m_loaderProxy.get());
111 } 118 }
112 119
113 WorkerThreadableLoader::MainThreadBridgeBase::~MainThreadBridgeBase() 120 WorkerThreadableLoader::MainThreadBridgeBase::~MainThreadBridgeBase()
114 { 121 {
115 } 122 }
116 123
117 void WorkerThreadableLoader::MainThreadBridgeBase::mainThreadCreateLoader(PassOw nPtr<CrossThreadResourceRequestData> requestData, ThreadableLoaderOptions option s, ResourceLoaderOptions resourceLoaderOptions, const ReferrerPolicy referrerPol icy, const String& outgoingReferrer, ExecutionContext* context) 124 void WorkerThreadableLoader::MainThreadBridgeBase::mainThreadCreateLoader(Thread ableLoaderOptions options, ResourceLoaderOptions resourceLoaderOptions, Executio nContext* context)
118 { 125 {
119 ASSERT(isMainThread()); 126 ASSERT(isMainThread());
120 Document* document = toDocument(context); 127 Document* document = toDocument(context);
121 128
129 resourceLoaderOptions.requestInitiatorContext = WorkerContext;
130 m_mainThreadLoader = DocumentThreadableLoader::create(*document, this, optio ns, resourceLoaderOptions);
131 ASSERT(m_mainThreadLoader);
132 }
133
134 void WorkerThreadableLoader::MainThreadBridgeBase::mainThreadStart(PassOwnPtr<Cr ossThreadResourceRequestData> requestData, const ReferrerPolicy referrerPolicy, const String& outgoingReferrer)
135 {
136 ASSERT(isMainThread());
137 ASSERT(m_mainThreadLoader);
138
122 ResourceRequest request(requestData.get()); 139 ResourceRequest request(requestData.get());
123 if (!request.didSetHTTPReferrer()) 140 if (!request.didSetHTTPReferrer())
124 request.setHTTPReferrer(SecurityPolicy::generateReferrer(referrerPolicy, request.url(), outgoingReferrer)); 141 request.setHTTPReferrer(SecurityPolicy::generateReferrer(referrerPolicy, request.url(), outgoingReferrer));
125 resourceLoaderOptions.requestInitiatorContext = WorkerContext; 142 m_mainThreadLoader->start(request);
126 m_mainThreadLoader = DocumentThreadableLoader::create(*document, this, reque st, options, resourceLoaderOptions);
127 if (!m_mainThreadLoader) {
128 // DocumentThreadableLoader::create may return 0 when the document loade r has been already changed.
129 didFail(ResourceError(errorDomainBlinkInternal, 0, request.url().string( ), "The parent document page has been unloaded."));
130 }
131 } 143 }
132 144
133 void WorkerThreadableLoader::MainThreadBridgeBase::createLoader(const ResourceRe quest& request, const ThreadableLoaderOptions& options, const ResourceLoaderOpti ons& resourceLoaderOptions, const ReferrerPolicy& referrerPolicy, const String& outgoingReferrer) 145 void WorkerThreadableLoader::MainThreadBridgeBase::createLoaderInMainThread(cons t ThreadableLoaderOptions& options, const ResourceLoaderOptions& resourceLoaderO ptions)
134 { 146 {
135 m_loaderProxy->postTaskToLoader(createCrossThreadTask(&MainThreadBridgeBase: :mainThreadCreateLoader, this, request, options, resourceLoaderOptions, referrer Policy, outgoingReferrer)); 147 m_loaderProxy->postTaskToLoader(createCrossThreadTask(&MainThreadBridgeBase: :mainThreadCreateLoader, this, options, resourceLoaderOptions));
148 }
149
150 void WorkerThreadableLoader::MainThreadBridgeBase::startInMainThread(const Resou rceRequest& request, const WorkerGlobalScope& workerGlobalScope)
151 {
152 loaderProxy()->postTaskToLoader(createCrossThreadTask(&MainThreadBridgeBase: :mainThreadStart, this, request, workerGlobalScope.referrerPolicy(), workerGloba lScope.url().strippedForUseAsReferrer()));
136 } 153 }
137 154
138 void WorkerThreadableLoader::MainThreadBridgeBase::mainThreadDestroy(ExecutionCo ntext* context) 155 void WorkerThreadableLoader::MainThreadBridgeBase::mainThreadDestroy(ExecutionCo ntext* context)
139 { 156 {
140 ASSERT(isMainThread()); 157 ASSERT(isMainThread());
141 ASSERT_UNUSED(context, context->isDocument()); 158 ASSERT_UNUSED(context, context->isDocument());
142 delete this; 159 delete this;
143 } 160 }
144 161
145 void WorkerThreadableLoader::MainThreadBridgeBase::destroy() 162 void WorkerThreadableLoader::MainThreadBridgeBase::destroy()
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 // |this| might be already destructed here because didFail() might 208 // |this| might be already destructed here because didFail() might
192 // clear a reference to ThreadableLoader, which might destruct 209 // clear a reference to ThreadableLoader, which might destruct
193 // WorkerThreadableLoader and then MainThreadBridge. 210 // WorkerThreadableLoader and then MainThreadBridge.
194 // Therefore we call clearClient() directly, rather than calling 211 // Therefore we call clearClient() directly, rather than calling
195 // this->m_workerClientWrapper->clearClient(). 212 // this->m_workerClientWrapper->clearClient().
196 clientWrapper->clearClient(); 213 clientWrapper->clearClient();
197 } 214 }
198 215
199 void WorkerThreadableLoader::MainThreadBridgeBase::didSendData(unsigned long lon g bytesSent, unsigned long long totalBytesToBeSent) 216 void WorkerThreadableLoader::MainThreadBridgeBase::didSendData(unsigned long lon g bytesSent, unsigned long long totalBytesToBeSent)
200 { 217 {
201 forwardTaskToWorker(createCrossThreadTask(&ThreadableLoaderClientWrapper::di dSendData, workerClientWrapper(), bytesSent, totalBytesToBeSent)); 218 forwardTaskToWorker(createCrossThreadTask(&ThreadableLoaderClientWrapper::di dSendData, m_workerClientWrapper, bytesSent, totalBytesToBeSent));
202 } 219 }
203 220
204 void WorkerThreadableLoader::MainThreadBridgeBase::didReceiveResponse(unsigned l ong identifier, const ResourceResponse& response, PassOwnPtr<WebDataConsumerHand le> handle) 221 void WorkerThreadableLoader::MainThreadBridgeBase::didReceiveResponse(unsigned l ong identifier, const ResourceResponse& response, PassOwnPtr<WebDataConsumerHand le> handle)
205 { 222 {
206 forwardTaskToWorker(createCrossThreadTask(&ThreadableLoaderClientWrapper::di dReceiveResponse, workerClientWrapper(), identifier, response, handle)); 223 forwardTaskToWorker(createCrossThreadTask(&ThreadableLoaderClientWrapper::di dReceiveResponse, m_workerClientWrapper, identifier, response, handle));
207 } 224 }
208 225
209 void WorkerThreadableLoader::MainThreadBridgeBase::didReceiveData(const char* da ta, unsigned dataLength) 226 void WorkerThreadableLoader::MainThreadBridgeBase::didReceiveData(const char* da ta, unsigned dataLength)
210 { 227 {
211 forwardTaskToWorker(createCrossThreadTask(&ThreadableLoaderClientWrapper::di dReceiveData, workerClientWrapper(), createVectorFromMemoryRegion(data, dataLeng th))); 228 forwardTaskToWorker(createCrossThreadTask(&ThreadableLoaderClientWrapper::di dReceiveData, m_workerClientWrapper, createVectorFromMemoryRegion(data, dataLeng th)));
212 } 229 }
213 230
214 void WorkerThreadableLoader::MainThreadBridgeBase::didDownloadData(int dataLengt h) 231 void WorkerThreadableLoader::MainThreadBridgeBase::didDownloadData(int dataLengt h)
215 { 232 {
216 forwardTaskToWorker(createCrossThreadTask(&ThreadableLoaderClientWrapper::di dDownloadData, workerClientWrapper(), dataLength)); 233 forwardTaskToWorker(createCrossThreadTask(&ThreadableLoaderClientWrapper::di dDownloadData, m_workerClientWrapper, dataLength));
217 } 234 }
218 235
219 void WorkerThreadableLoader::MainThreadBridgeBase::didReceiveCachedMetadata(cons t char* data, int dataLength) 236 void WorkerThreadableLoader::MainThreadBridgeBase::didReceiveCachedMetadata(cons t char* data, int dataLength)
220 { 237 {
221 forwardTaskToWorker(createCrossThreadTask(&ThreadableLoaderClientWrapper::di dReceiveCachedMetadata, workerClientWrapper(), createVectorFromMemoryRegion(data , dataLength))); 238 forwardTaskToWorker(createCrossThreadTask(&ThreadableLoaderClientWrapper::di dReceiveCachedMetadata, m_workerClientWrapper, createVectorFromMemoryRegion(data , dataLength)));
222 } 239 }
223 240
224 void WorkerThreadableLoader::MainThreadBridgeBase::didFinishLoading(unsigned lon g identifier, double finishTime) 241 void WorkerThreadableLoader::MainThreadBridgeBase::didFinishLoading(unsigned lon g identifier, double finishTime)
225 { 242 {
226 forwardTaskToWorkerOnLoaderDone(createCrossThreadTask(&ThreadableLoaderClien tWrapper::didFinishLoading, workerClientWrapper(), identifier, finishTime)); 243 forwardTaskToWorkerOnLoaderDone(createCrossThreadTask(&ThreadableLoaderClien tWrapper::didFinishLoading, m_workerClientWrapper, identifier, finishTime));
227 } 244 }
228 245
229 void WorkerThreadableLoader::MainThreadBridgeBase::didFail(const ResourceError& error) 246 void WorkerThreadableLoader::MainThreadBridgeBase::didFail(const ResourceError& error)
230 { 247 {
231 forwardTaskToWorkerOnLoaderDone(createCrossThreadTask(&ThreadableLoaderClien tWrapper::didFail, workerClientWrapper(), error)); 248 forwardTaskToWorkerOnLoaderDone(createCrossThreadTask(&ThreadableLoaderClien tWrapper::didFail, m_workerClientWrapper, error));
232 } 249 }
233 250
234 void WorkerThreadableLoader::MainThreadBridgeBase::didFailAccessControlCheck(con st ResourceError& error) 251 void WorkerThreadableLoader::MainThreadBridgeBase::didFailAccessControlCheck(con st ResourceError& error)
235 { 252 {
236 forwardTaskToWorkerOnLoaderDone(createCrossThreadTask(&ThreadableLoaderClien tWrapper::didFailAccessControlCheck, workerClientWrapper(), error)); 253 forwardTaskToWorkerOnLoaderDone(createCrossThreadTask(&ThreadableLoaderClien tWrapper::didFailAccessControlCheck, m_workerClientWrapper, error));
237 } 254 }
238 255
239 void WorkerThreadableLoader::MainThreadBridgeBase::didFailRedirectCheck() 256 void WorkerThreadableLoader::MainThreadBridgeBase::didFailRedirectCheck()
240 { 257 {
241 forwardTaskToWorkerOnLoaderDone(createCrossThreadTask(&ThreadableLoaderClien tWrapper::didFailRedirectCheck, workerClientWrapper())); 258 forwardTaskToWorkerOnLoaderDone(createCrossThreadTask(&ThreadableLoaderClien tWrapper::didFailRedirectCheck, m_workerClientWrapper));
242 } 259 }
243 260
244 void WorkerThreadableLoader::MainThreadBridgeBase::didReceiveResourceTiming(cons t ResourceTimingInfo& info) 261 void WorkerThreadableLoader::MainThreadBridgeBase::didReceiveResourceTiming(cons t ResourceTimingInfo& info)
245 { 262 {
246 forwardTaskToWorker(createCrossThreadTask(&ThreadableLoaderClientWrapper::di dReceiveResourceTiming, workerClientWrapper(), info)); 263 forwardTaskToWorker(createCrossThreadTask(&ThreadableLoaderClientWrapper::di dReceiveResourceTiming, m_workerClientWrapper, info));
247 } 264 }
248 265
249 WorkerThreadableLoader::MainThreadAsyncBridge::MainThreadAsyncBridge( 266 WorkerThreadableLoader::MainThreadAsyncBridge::MainThreadAsyncBridge(
250 WorkerGlobalScope& workerGlobalScope, 267 WorkerGlobalScope& workerGlobalScope,
251 PassRefPtr<ThreadableLoaderClientWrapper> workerClientWrapper, 268 PassRefPtr<ThreadableLoaderClientWrapper> workerClientWrapper,
252 const ResourceRequest& request,
253 const ThreadableLoaderOptions& options, 269 const ThreadableLoaderOptions& options,
254 const ResourceLoaderOptions& resourceLoaderOptions, 270 const ResourceLoaderOptions& resourceLoaderOptions)
255 const ReferrerPolicy referrerPolicy,
256 const String& outgoingReferrer)
257 : MainThreadBridgeBase(workerClientWrapper, workerGlobalScope.thread()->work erLoaderProxy()) 271 : MainThreadBridgeBase(workerClientWrapper, workerGlobalScope.thread()->work erLoaderProxy())
258 { 272 {
259 createLoader(request, options, resourceLoaderOptions, referrerPolicy, outgoi ngReferrer); 273 createLoaderInMainThread(options, resourceLoaderOptions);
274 }
275
276 void WorkerThreadableLoader::MainThreadAsyncBridge::start(const ResourceRequest& request, const WorkerGlobalScope& workerGlobalScope)
277 {
278 startInMainThread(request, workerGlobalScope);
260 } 279 }
261 280
262 WorkerThreadableLoader::MainThreadAsyncBridge::~MainThreadAsyncBridge() 281 WorkerThreadableLoader::MainThreadAsyncBridge::~MainThreadAsyncBridge()
263 { 282 {
264 } 283 }
265 284
266 void WorkerThreadableLoader::MainThreadAsyncBridge::forwardTaskToWorker(PassOwnP tr<ExecutionContextTask> task) 285 void WorkerThreadableLoader::MainThreadAsyncBridge::forwardTaskToWorker(PassOwnP tr<ExecutionContextTask> task)
267 { 286 {
268 loaderProxy()->postTaskToWorkerGlobalScope(task); 287 loaderProxy()->postTaskToWorkerGlobalScope(task);
269 } 288 }
270 289
271 void WorkerThreadableLoader::MainThreadAsyncBridge::forwardTaskToWorkerOnLoaderD one(PassOwnPtr<ExecutionContextTask> task) 290 void WorkerThreadableLoader::MainThreadAsyncBridge::forwardTaskToWorkerOnLoaderD one(PassOwnPtr<ExecutionContextTask> task)
272 { 291 {
273 loaderProxy()->postTaskToWorkerGlobalScope(task); 292 loaderProxy()->postTaskToWorkerGlobalScope(task);
274 } 293 }
275 294
276 WorkerThreadableLoader::MainThreadSyncBridge::MainThreadSyncBridge( 295 WorkerThreadableLoader::MainThreadSyncBridge::MainThreadSyncBridge(
277 WorkerGlobalScope& workerGlobalScope, 296 WorkerGlobalScope& workerGlobalScope,
278 PassRefPtr<ThreadableLoaderClientWrapper> workerClientWrapper, 297 PassRefPtr<ThreadableLoaderClientWrapper> workerClientWrapper,
279 const ResourceRequest& request,
280 const ThreadableLoaderOptions& options, 298 const ThreadableLoaderOptions& options,
281 const ResourceLoaderOptions& resourceLoaderOptions, 299 const ResourceLoaderOptions& resourceLoaderOptions)
282 const ReferrerPolicy referrerPolicy,
283 const String& outgoingReferrer)
284 : MainThreadBridgeBase(workerClientWrapper, workerGlobalScope.thread()->work erLoaderProxy()) 300 : MainThreadBridgeBase(workerClientWrapper, workerGlobalScope.thread()->work erLoaderProxy())
285 , m_done(false) 301 , m_done(false)
286 { 302 {
303 createLoaderInMainThread(options, resourceLoaderOptions);
304 }
305
306 void WorkerThreadableLoader::MainThreadSyncBridge::start(const ResourceRequest& request, const WorkerGlobalScope& workerGlobalScope)
307 {
287 WaitableEvent* shutdownEvent = workerGlobalScope.thread()->shutdownEvent(); 308 WaitableEvent* shutdownEvent = workerGlobalScope.thread()->shutdownEvent();
288 m_loaderDoneEvent = adoptPtr(new WaitableEvent()); 309 m_loaderDoneEvent = adoptPtr(new WaitableEvent());
289 310
290 createLoader(request, options, resourceLoaderOptions, referrerPolicy, outgoi ngReferrer); 311 startInMainThread(request, workerGlobalScope);
291 312
292 size_t signaledIndex; 313 size_t signaledIndex;
293 { 314 {
294 Vector<WaitableEvent*> events; 315 Vector<WaitableEvent*> events;
295 // Order is important; indicies are used later. 316 // Order is important; indicies are used later.
296 events.append(shutdownEvent); 317 events.append(shutdownEvent);
297 events.append(m_loaderDoneEvent.get()); 318 events.append(m_loaderDoneEvent.get());
298 319
299 SafePointScope scope(BlinkGC::HeapPointersOnStack); 320 SafePointScope scope(BlinkGC::HeapPointersOnStack);
300 signaledIndex = WaitableEvent::waitMultiple(events); 321 signaledIndex = WaitableEvent::waitMultiple(events);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 363
343 MutexLocker lock(m_lock); 364 MutexLocker lock(m_lock);
344 RELEASE_ASSERT(!m_done); 365 RELEASE_ASSERT(!m_done);
345 366
346 m_clientTasks.append(task); 367 m_clientTasks.append(task);
347 m_done = true; 368 m_done = true;
348 m_loaderDoneEvent->signal(); 369 m_loaderDoneEvent->signal();
349 } 370 }
350 371
351 } // namespace blink 372 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/loader/WorkerThreadableLoader.h ('k') | third_party/WebKit/Source/core/page/EventSource.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698