| // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_WORKER_WEBWORKER_STUB_BASE_H_ |
| #define CHROME_WORKER_WEBWORKER_STUB_BASE_H_ |
| #pragma once |
| |
| #include "base/scoped_ptr.h" |
| #include "chrome/worker/webworkerclient_proxy.h" |
| #include "chrome/worker/worker_webapplicationcachehost_impl.h" |
| #include "ipc/ipc_channel.h" |
| |
| // This class is the common base class for both WebWorkerStub and |
| // WebSharedWorkerStub and contains common setup/teardown functionality. |
| class WebWorkerStubBase : public IPC::Channel::Listener { |
| public: |
| WebWorkerStubBase(int route_id, |
| const WorkerAppCacheInitInfo& appcache_init_info); |
| virtual ~WebWorkerStubBase(); |
| |
| // Invoked when the WebWorkerClientProxy is shutting down. |
| void Shutdown(); |
| |
| // Called after terminating the worker context to make sure that the worker |
| // actually terminates (is not stuck in an infinite loop). |
| void EnsureWorkerContextTerminates(); |
| |
| WebWorkerClientProxy* client() { return &client_; } |
| |
| const WorkerAppCacheInitInfo& appcache_init_info() const { |
| return appcache_init_info_; |
| } |
| |
| // Returns the script url of this worker. |
| virtual const GURL& url() const = 0; |
| |
| private: |
| int route_id_; |
| WorkerAppCacheInitInfo appcache_init_info_; |
| |
| // WebWorkerClient that responds to outgoing API calls from the worker object. |
| WebWorkerClientProxy client_; |
| |
| DISALLOW_COPY_AND_ASSIGN(WebWorkerStubBase); |
| }; |
| |
| #endif // CHROME_WORKER_WEBWORKER_STUB_BASE_H_ |