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

Unified Diff: content/worker/websharedworker_stub.cc

Issue 115713004: Move the worker script loading code to the worker process (phase:2/5) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years 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 side-by-side diff with in-line comments
Download patch
Index: content/worker/websharedworker_stub.cc
diff --git a/content/worker/websharedworker_stub.cc b/content/worker/websharedworker_stub.cc
index 4f6dd933c6fac7a5897f7a12f8f26ef64d61dfb8..5f40bab0e49f1ee78d7e63552eb9f026e8e3f75a 100644
--- a/content/worker/websharedworker_stub.cc
+++ b/content/worker/websharedworker_stub.cc
@@ -19,14 +19,18 @@
namespace content {
WebSharedWorkerStub::WebSharedWorkerStub(
+ const GURL& url,
const base::string16& name,
+ const base::string16& content_security_policy,
+ blink::WebContentSecurityPolicyType security_policy_type,
int route_id,
const WorkerAppCacheInitInfo& appcache_init_info)
: route_id_(route_id),
appcache_init_info_(appcache_init_info),
client_(route_id, this),
name_(name),
- started_(false) {
+ started_(false),
+ worker_script_loaded_(false) {
WorkerThread* worker_thread = WorkerThread::current();
DCHECK(worker_thread);
@@ -94,30 +98,21 @@ void WebSharedWorkerStub::OnStartWorkerContext(
content_security_policy, policy_type, 0);
started_ = true;
url_ = url;
-
- // Process any pending connections.
- for (PendingConnectInfoList::const_iterator iter = pending_connects_.begin();
- iter != pending_connects_.end();
- ++iter) {
- OnConnect(iter->first, iter->second);
- }
- pending_connects_.clear();
}
void WebSharedWorkerStub::OnConnect(int sent_message_port_id, int routing_id) {
- if (started_) {
- blink::WebMessagePortChannel* channel =
- new WebMessagePortChannelImpl(routing_id,
- sent_message_port_id,
- base::MessageLoopProxy::current().get());
+ blink::WebMessagePortChannel* channel =
+ new WebMessagePortChannelImpl(routing_id,
+ sent_message_port_id,
+ base::MessageLoopProxy::current().get());
+ if (started_ && worker_script_loaded_) {
impl_->connect(channel);
} else {
// If two documents try to load a SharedWorker at the same time, the
// WorkerMsg_Connect for one of the documents can come in before the
// worker is started. Just queue up the connect and deliver it once the
// worker starts.
- PendingConnectInfo pending_connect(sent_message_port_id, routing_id);
- pending_connects_.push_back(pending_connect);
+ pending_channels_.push_back(channel);
}
}
@@ -129,4 +124,19 @@ void WebSharedWorkerStub::OnTerminateWorkerContext() {
started_ = false;
}
+void WebSharedWorkerStub::WorkerScriptLoaded() {
+ worker_script_loaded_ = true;
+ // Process any pending connections.
+ for (PendingChannelList::const_iterator iter = pending_channels_.begin();
+ iter != pending_channels_.end();
+ ++iter) {
+ impl_->connect(*iter);
+ }
+ pending_channels_.clear();
+}
+
+void WebSharedWorkerStub::WorkerScriptLoadFailed() {
+ // FIXME(horo): Implement this.
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698