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

Side by Side Diff: third_party/WebKit/Source/web/WebEmbeddedWorkerImpl.cpp

Issue 2811993007: Worker: Remove cross-thread PostTask functions from WorkerLoaderProxy (Closed)
Patch Set: address review comments Created 3 years, 8 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) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 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 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 ConsoleMessage::Create( 256 ConsoleMessage::Create(
257 kOtherMessageSource, web_core_message_level, message.text, 257 kOtherMessageSource, web_core_message_level, message.text,
258 SourceLocation::Create(message.url, message.line_number, 258 SourceLocation::Create(message.url, message.line_number,
259 message.column_number, nullptr))); 259 message.column_number, nullptr)));
260 } 260 }
261 261
262 void WebEmbeddedWorkerImpl::PostMessageToPageInspector(const String& message) { 262 void WebEmbeddedWorkerImpl::PostMessageToPageInspector(const String& message) {
263 worker_inspector_proxy_->DispatchMessageFromWorker(message); 263 worker_inspector_proxy_->DispatchMessageFromWorker(message);
264 } 264 }
265 265
266 void WebEmbeddedWorkerImpl::PostTaskToLoader(
267 const WebTraceLocation& location,
268 std::unique_ptr<WTF::CrossThreadClosure> task) {
269 main_thread_task_runners_->Get(TaskType::kNetworking)
270 ->PostTask(BLINK_FROM_HERE, std::move(task));
271 }
272
273 void WebEmbeddedWorkerImpl::PostTaskToWorkerGlobalScope(
274 const WebTraceLocation& location,
275 std::unique_ptr<WTF::CrossThreadClosure> task) {
276 if (asked_to_terminate_ || !worker_thread_)
277 return;
278 TaskRunnerHelper::Get(TaskType::kNetworking, worker_thread_.get())
279 ->PostTask(location, std::move(task));
280 }
281
282 ThreadableLoadingContext* WebEmbeddedWorkerImpl::GetThreadableLoadingContext() { 266 ThreadableLoadingContext* WebEmbeddedWorkerImpl::GetThreadableLoadingContext() {
283 if (!loading_context_) { 267 if (!loading_context_) {
284 loading_context_ = ThreadableLoadingContext::Create( 268 loading_context_ = ThreadableLoadingContext::Create(
285 *main_frame_->GetFrame()->GetDocument()); 269 *main_frame_->GetFrame()->GetDocument());
286 } 270 }
287 return loading_context_; 271 return loading_context_;
288 } 272 }
289 273
290 void WebEmbeddedWorkerImpl::PrepareShadowPageForLoader() { 274 void WebEmbeddedWorkerImpl::PrepareShadowPageForLoader() {
291 // Create 'shadow page', which is never displayed and is used mainly to 275 // Create 'shadow page', which is never displayed and is used mainly to
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 main_script_loader_->SourceText(), 444 main_script_loader_->SourceText(),
461 main_script_loader_->ReleaseCachedMetadata(), start_mode, 445 main_script_loader_->ReleaseCachedMetadata(), start_mode,
462 document->GetContentSecurityPolicy()->Headers().get(), 446 document->GetContentSecurityPolicy()->Headers().get(),
463 main_script_loader_->GetReferrerPolicy(), starter_origin, 447 main_script_loader_->GetReferrerPolicy(), starter_origin,
464 worker_clients, main_script_loader_->ResponseAddressSpace(), 448 worker_clients, main_script_loader_->ResponseAddressSpace(),
465 main_script_loader_->OriginTrialTokens(), std::move(worker_settings), 449 main_script_loader_->OriginTrialTokens(), std::move(worker_settings),
466 worker_v8_settings); 450 worker_v8_settings);
467 451
468 main_script_loader_.Clear(); 452 main_script_loader_.Clear();
469 453
470 // We have a dummy document here for loading but it doesn't really represent
471 // the document/frame of associated document(s) for this worker. Here we
472 // populate the task runners with null document not to confuse the frame
473 // scheduler (which will end up using the thread's default task runner).
474 main_thread_task_runners_ = ParentFrameTaskRunners::Create(nullptr);
475
476 worker_global_scope_proxy_ = ServiceWorkerGlobalScopeProxy::Create( 454 worker_global_scope_proxy_ = ServiceWorkerGlobalScopeProxy::Create(
477 *this, *document, *worker_context_client_); 455 *this, *document, *worker_context_client_);
478 loader_proxy_ = WorkerLoaderProxy::Create(this); 456 loader_proxy_ = WorkerLoaderProxy::Create(this);
479 worker_thread_ = 457 worker_thread_ =
480 ServiceWorkerThread::Create(loader_proxy_, *worker_global_scope_proxy_); 458 ServiceWorkerThread::Create(loader_proxy_, *worker_global_scope_proxy_);
459
460 // We have a dummy document here for loading but it doesn't really represent
461 // the document/frame of associated document(s) for this worker. Here we
462 // populate the task runners with null document not to confuse the frame
463 // scheduler (which will end up using the thread's default task runner).
481 worker_thread_->Start(std::move(startup_data), 464 worker_thread_->Start(std::move(startup_data),
482 main_thread_task_runners_.Get()); 465 ParentFrameTaskRunners::Create(nullptr));
466
483 worker_inspector_proxy_->WorkerThreadCreated(document, worker_thread_.get(), 467 worker_inspector_proxy_->WorkerThreadCreated(document, worker_thread_.get(),
484 script_url); 468 script_url);
485 } 469 }
486 470
487 } // namespace blink 471 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698