| OLD | NEW |
| 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 30 matching lines...) Expand all Loading... |
| 41 #include "core/inspector/ConsoleMessage.h" | 41 #include "core/inspector/ConsoleMessage.h" |
| 42 #include "core/loader/FrameLoadRequest.h" | 42 #include "core/loader/FrameLoadRequest.h" |
| 43 #include "core/loader/ThreadableLoadingContext.h" | 43 #include "core/loader/ThreadableLoadingContext.h" |
| 44 #include "core/loader/WorkerFetchContext.h" | 44 #include "core/loader/WorkerFetchContext.h" |
| 45 #include "core/probe/CoreProbes.h" | 45 #include "core/probe/CoreProbes.h" |
| 46 #include "core/workers/ParentFrameTaskRunners.h" | 46 #include "core/workers/ParentFrameTaskRunners.h" |
| 47 #include "core/workers/WorkerClients.h" | 47 #include "core/workers/WorkerClients.h" |
| 48 #include "core/workers/WorkerContentSettingsClient.h" | 48 #include "core/workers/WorkerContentSettingsClient.h" |
| 49 #include "core/workers/WorkerGlobalScope.h" | 49 #include "core/workers/WorkerGlobalScope.h" |
| 50 #include "core/workers/WorkerInspectorProxy.h" | 50 #include "core/workers/WorkerInspectorProxy.h" |
| 51 #include "core/workers/WorkerLoaderProxy.h" | |
| 52 #include "core/workers/WorkerScriptLoader.h" | 51 #include "core/workers/WorkerScriptLoader.h" |
| 53 #include "core/workers/WorkerThreadStartupData.h" | 52 #include "core/workers/WorkerThreadStartupData.h" |
| 54 #include "modules/serviceworkers/ServiceWorkerContainerClient.h" | 53 #include "modules/serviceworkers/ServiceWorkerContainerClient.h" |
| 55 #include "modules/serviceworkers/ServiceWorkerThread.h" | 54 #include "modules/serviceworkers/ServiceWorkerThread.h" |
| 56 #include "platform/Histogram.h" | 55 #include "platform/Histogram.h" |
| 57 #include "platform/RuntimeEnabledFeatures.h" | 56 #include "platform/RuntimeEnabledFeatures.h" |
| 58 #include "platform/SharedBuffer.h" | 57 #include "platform/SharedBuffer.h" |
| 59 #include "platform/heap/Handle.h" | 58 #include "platform/heap/Handle.h" |
| 60 #include "platform/loader/fetch/SubstituteData.h" | 59 #include "platform/loader/fetch/SubstituteData.h" |
| 61 #include "platform/network/ContentSecurityPolicyParsers.h" | 60 #include "platform/network/ContentSecurityPolicyParsers.h" |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 // Detach the client before closing the view to avoid getting called back. | 122 // Detach the client before closing the view to avoid getting called back. |
| 124 main_frame_->SetClient(0); | 123 main_frame_->SetClient(0); |
| 125 | 124 |
| 126 if (worker_global_scope_proxy_) { | 125 if (worker_global_scope_proxy_) { |
| 127 worker_global_scope_proxy_->Detach(); | 126 worker_global_scope_proxy_->Detach(); |
| 128 worker_global_scope_proxy_.Clear(); | 127 worker_global_scope_proxy_.Clear(); |
| 129 } | 128 } |
| 130 | 129 |
| 131 web_view_->Close(); | 130 web_view_->Close(); |
| 132 main_frame_->Close(); | 131 main_frame_->Close(); |
| 133 if (loader_proxy_) | |
| 134 loader_proxy_->DetachProvider(this); | |
| 135 } | 132 } |
| 136 | 133 |
| 137 void WebEmbeddedWorkerImpl::StartWorkerContext( | 134 void WebEmbeddedWorkerImpl::StartWorkerContext( |
| 138 const WebEmbeddedWorkerStartData& data) { | 135 const WebEmbeddedWorkerStartData& data) { |
| 139 DCHECK(!asked_to_terminate_); | 136 DCHECK(!asked_to_terminate_); |
| 140 DCHECK(!main_script_loader_); | 137 DCHECK(!main_script_loader_); |
| 141 DCHECK_EQ(pause_after_download_state_, kDontPauseAfterDownload); | 138 DCHECK_EQ(pause_after_download_state_, kDontPauseAfterDownload); |
| 142 worker_start_data_ = data; | 139 worker_start_data_ = data; |
| 143 | 140 |
| 144 // TODO(mkwst): This really needs to be piped through from the requesting | 141 // TODO(mkwst): This really needs to be piped through from the requesting |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 259 ConsoleMessage::Create( | 256 ConsoleMessage::Create( |
| 260 kOtherMessageSource, web_core_message_level, message.text, | 257 kOtherMessageSource, web_core_message_level, message.text, |
| 261 SourceLocation::Create(message.url, message.line_number, | 258 SourceLocation::Create(message.url, message.line_number, |
| 262 message.column_number, nullptr))); | 259 message.column_number, nullptr))); |
| 263 } | 260 } |
| 264 | 261 |
| 265 void WebEmbeddedWorkerImpl::PostMessageToPageInspector(const String& message) { | 262 void WebEmbeddedWorkerImpl::PostMessageToPageInspector(const String& message) { |
| 266 worker_inspector_proxy_->DispatchMessageFromWorker(message); | 263 worker_inspector_proxy_->DispatchMessageFromWorker(message); |
| 267 } | 264 } |
| 268 | 265 |
| 269 ThreadableLoadingContext* WebEmbeddedWorkerImpl::GetThreadableLoadingContext() { | |
| 270 if (!loading_context_) { | |
| 271 loading_context_ = ThreadableLoadingContext::Create( | |
| 272 *main_frame_->GetFrame()->GetDocument()); | |
| 273 } | |
| 274 return loading_context_; | |
| 275 } | |
| 276 | |
| 277 void WebEmbeddedWorkerImpl::PrepareShadowPageForLoader() { | 266 void WebEmbeddedWorkerImpl::PrepareShadowPageForLoader() { |
| 278 // Create 'shadow page', which is never displayed and is used mainly to | 267 // Create 'shadow page', which is never displayed and is used mainly to |
| 279 // provide a context for loading on the main thread. | 268 // provide a context for loading on the main thread. |
| 280 // | 269 // |
| 281 // FIXME: This does mostly same as WebSharedWorkerImpl::initializeLoader. | 270 // FIXME: This does mostly same as WebSharedWorkerImpl::initializeLoader. |
| 282 // This code, and probably most of the code in this class should be shared | 271 // This code, and probably most of the code in this class should be shared |
| 283 // with SharedWorker. | 272 // with SharedWorker. |
| 284 DCHECK(!web_view_); | 273 DCHECK(!web_view_); |
| 285 web_view_ = WebView::Create(nullptr, kWebPageVisibilityStateVisible); | 274 web_view_ = WebView::Create(nullptr, kWebPageVisibilityStateVisible); |
| 286 WebSettings* settings = web_view_->GetSettings(); | 275 WebSettings* settings = web_view_->GetSettings(); |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 464 document->GetContentSecurityPolicy()->Headers().get(), | 453 document->GetContentSecurityPolicy()->Headers().get(), |
| 465 main_script_loader_->GetReferrerPolicy(), starter_origin, | 454 main_script_loader_->GetReferrerPolicy(), starter_origin, |
| 466 worker_clients, main_script_loader_->ResponseAddressSpace(), | 455 worker_clients, main_script_loader_->ResponseAddressSpace(), |
| 467 main_script_loader_->OriginTrialTokens(), std::move(worker_settings), | 456 main_script_loader_->OriginTrialTokens(), std::move(worker_settings), |
| 468 worker_v8_settings); | 457 worker_v8_settings); |
| 469 | 458 |
| 470 main_script_loader_.Clear(); | 459 main_script_loader_.Clear(); |
| 471 | 460 |
| 472 worker_global_scope_proxy_ = | 461 worker_global_scope_proxy_ = |
| 473 ServiceWorkerGlobalScopeProxy::Create(*this, *worker_context_client_); | 462 ServiceWorkerGlobalScopeProxy::Create(*this, *worker_context_client_); |
| 474 loader_proxy_ = WorkerLoaderProxy::Create(this); | 463 worker_thread_ = WTF::MakeUnique<ServiceWorkerThread>( |
| 475 worker_thread_ = | 464 ThreadableLoadingContext::Create(*document), *worker_global_scope_proxy_); |
| 476 ServiceWorkerThread::Create(loader_proxy_, *worker_global_scope_proxy_); | |
| 477 | 465 |
| 478 // We have a dummy document here for loading but it doesn't really represent | 466 // We have a dummy document here for loading but it doesn't really represent |
| 479 // the document/frame of associated document(s) for this worker. Here we | 467 // the document/frame of associated document(s) for this worker. Here we |
| 480 // populate the task runners with null document not to confuse the frame | 468 // populate the task runners with null document not to confuse the frame |
| 481 // scheduler (which will end up using the thread's default task runner). | 469 // scheduler (which will end up using the thread's default task runner). |
| 482 worker_thread_->Start(std::move(startup_data), | 470 worker_thread_->Start(std::move(startup_data), |
| 483 ParentFrameTaskRunners::Create(nullptr)); | 471 ParentFrameTaskRunners::Create(nullptr)); |
| 484 | 472 |
| 485 worker_inspector_proxy_->WorkerThreadCreated(document, worker_thread_.get(), | 473 worker_inspector_proxy_->WorkerThreadCreated(document, worker_thread_.get(), |
| 486 script_url); | 474 script_url); |
| 487 } | 475 } |
| 488 | 476 |
| 489 } // namespace blink | 477 } // namespace blink |
| OLD | NEW |