Index: chrome/renderer/webworker_proxy.cc |
diff --git a/chrome/renderer/webworker_proxy.cc b/chrome/renderer/webworker_proxy.cc |
index a263565e9361cc02955bf6c9fde344b560f6b8c9..fdcc9f1d0dc55b2be736363c66743d75a5ea2f1e 100644 |
--- a/chrome/renderer/webworker_proxy.cc |
+++ b/chrome/renderer/webworker_proxy.cc |
@@ -26,16 +26,18 @@ WebWorkerProxy::WebWorkerProxy( |
client_(client) { |
} |
-void WebWorkerProxy::Disconnect() { |
+WebWorkerProxy::~WebWorkerProxy() { |
+ // If we're midway through starting a worker, cancel it. |
+ CancelCreation(); |
+} |
+ |
+void WebWorkerProxy::CancelCreation() { |
if (route_id_ == MSG_ROUTING_NONE) |
return; |
// Tell the browser to not start our queued worker. |
if (!IsStarted()) |
child_thread_->Send(new ViewHostMsg_CancelCreateDedicatedWorker(route_id_)); |
- |
- // Call our superclass to shutdown the routing |
- WebWorkerBase::Disconnect(); |
} |
void WebWorkerProxy::startWorkerContext( |
@@ -48,6 +50,7 @@ void WebWorkerProxy::startWorkerContext( |
void WebWorkerProxy::terminateWorkerContext() { |
if (route_id_ != MSG_ROUTING_NONE) { |
Send(new WorkerMsg_TerminateWorkerContext(route_id_)); |
+ CancelCreation(); |
Disconnect(); |
} |
} |