| Index: content/browser/worker_host/worker_process_host.h
|
| diff --git a/content/browser/worker_host/worker_process_host.h b/content/browser/worker_host/worker_process_host.h
|
| deleted file mode 100644
|
| index 48e5607b8fc47dc7e290fe716b8c770eede0e75f..0000000000000000000000000000000000000000
|
| --- a/content/browser/worker_host/worker_process_host.h
|
| +++ /dev/null
|
| @@ -1,293 +0,0 @@
|
| -// Copyright (c) 2012 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 CONTENT_BROWSER_WORKER_HOST_WORKER_PROCESS_HOST_H_
|
| -#define CONTENT_BROWSER_WORKER_HOST_WORKER_PROCESS_HOST_H_
|
| -
|
| -#include <list>
|
| -#include <string>
|
| -#include <utility>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/files/file_path.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/memory/weak_ptr.h"
|
| -#include "content/browser/worker_host/worker_document_set.h"
|
| -#include "content/browser/worker_host/worker_storage_partition.h"
|
| -#include "content/common/content_export.h"
|
| -#include "content/public/browser/browser_child_process_host_delegate.h"
|
| -#include "content/public/browser/browser_child_process_host_iterator.h"
|
| -#include "content/public/common/process_type.h"
|
| -#include "content/public/common/resource_type.h"
|
| -#include "ipc/ipc_sender.h"
|
| -#include "third_party/WebKit/public/web/WebContentSecurityPolicy.h"
|
| -#include "url/gurl.h"
|
| -
|
| -struct ResourceHostMsg_Request;
|
| -
|
| -namespace fileapi {
|
| -class FileSystemContext;
|
| -} // namespace fileapi
|
| -
|
| -namespace net {
|
| -class URLRequestContext;
|
| -}
|
| -
|
| -namespace webkit_database {
|
| -class DatabaseTracker;
|
| -} // namespace webkit_database
|
| -
|
| -namespace content {
|
| -class BrowserChildProcessHostImpl;
|
| -class IndexedDBContextImpl;
|
| -class ResourceContext;
|
| -class SocketStreamDispatcherHost;
|
| -class WorkerMessageFilter;
|
| -class WorkerServiceImpl;
|
| -
|
| -// The WorkerProcessHost is the interface that represents the browser side of
|
| -// the browser <-> worker communication channel. There will be one
|
| -// WorkerProcessHost per worker process. Currently each worker runs in its own
|
| -// process, but that may change. However, we do assume (by storing a
|
| -// net::URLRequestContext) that a WorkerProcessHost serves a single
|
| -// BrowserContext.
|
| -class WorkerProcessHost : public BrowserChildProcessHostDelegate,
|
| - public IPC::Sender {
|
| - public:
|
| - // Contains information about each worker instance, needed to forward messages
|
| - // between the renderer and worker processes.
|
| - class WorkerInstance {
|
| - public:
|
| - WorkerInstance(const GURL& url,
|
| - const base::string16& name,
|
| - const base::string16& content_security_policy,
|
| - blink::WebContentSecurityPolicyType security_policy_type,
|
| - int worker_route_id,
|
| - int render_frame_id,
|
| - ResourceContext* resource_context,
|
| - const WorkerStoragePartition& partition);
|
| - ~WorkerInstance();
|
| -
|
| - // Unique identifier for a worker client.
|
| - class FilterInfo {
|
| - public:
|
| - FilterInfo(WorkerMessageFilter* filter, int route_id)
|
| - : filter_(filter), route_id_(route_id), message_port_id_(0) { }
|
| - WorkerMessageFilter* filter() const { return filter_; }
|
| - int route_id() const { return route_id_; }
|
| - int message_port_id() const { return message_port_id_; }
|
| - void set_message_port_id(int id) { message_port_id_ = id; }
|
| -
|
| - private:
|
| - WorkerMessageFilter* filter_;
|
| - int route_id_;
|
| - int message_port_id_;
|
| - };
|
| -
|
| - // APIs to manage the filter list for a given instance.
|
| - void AddFilter(WorkerMessageFilter* filter, int route_id);
|
| - void RemoveFilter(WorkerMessageFilter* filter, int route_id);
|
| - void RemoveFilters(WorkerMessageFilter* filter);
|
| - bool HasFilter(WorkerMessageFilter* filter, int route_id) const;
|
| - bool FrameIsParent(int render_process_id, int render_frame_id) const;
|
| - int NumFilters() const { return filters_.size(); }
|
| - void SetMessagePortID(WorkerMessageFilter* filter,
|
| - int route_id,
|
| - int message_port_id);
|
| - // Returns the single filter (must only be one).
|
| - FilterInfo GetFilter() const;
|
| -
|
| - typedef std::list<FilterInfo> FilterList;
|
| - const FilterList& filters() const { return filters_; }
|
| -
|
| - // Checks if this WorkerInstance matches the passed url/name params
|
| - // (per the comparison algorithm in the WebWorkers spec). This API only
|
| - // applies to shared workers.
|
| - bool Matches(
|
| - const GURL& url,
|
| - const base::string16& name,
|
| - const WorkerStoragePartition& partition,
|
| - ResourceContext* resource_context) const;
|
| -
|
| - // Shares the passed instance's WorkerDocumentSet with this instance. This
|
| - // instance's current WorkerDocumentSet is dereferenced (and freed if this
|
| - // is the only reference) as a result.
|
| - void ShareDocumentSet(const WorkerInstance& instance) {
|
| - worker_document_set_ = instance.worker_document_set_;
|
| - };
|
| -
|
| - // Accessors
|
| - bool closed() const { return closed_; }
|
| - void set_closed(bool closed) { closed_ = closed; }
|
| - const GURL& url() const { return url_; }
|
| - const base::string16 name() const { return name_; }
|
| - const base::string16 content_security_policy() const {
|
| - return content_security_policy_;
|
| - }
|
| - blink::WebContentSecurityPolicyType security_policy_type() const {
|
| - return security_policy_type_;
|
| - }
|
| - int worker_route_id() const { return worker_route_id_; }
|
| - int render_frame_id() const { return render_frame_id_; }
|
| - WorkerDocumentSet* worker_document_set() const {
|
| - return worker_document_set_.get();
|
| - }
|
| - ResourceContext* resource_context() const {
|
| - return resource_context_;
|
| - }
|
| - const WorkerStoragePartition& partition() const {
|
| - return partition_;
|
| - }
|
| - void set_load_failed(bool failed) { load_failed_ = failed; }
|
| - bool load_failed() { return load_failed_; }
|
| -
|
| - private:
|
| - // Set of all filters (clients) associated with this worker.
|
| - GURL url_;
|
| - bool closed_;
|
| - base::string16 name_;
|
| - base::string16 content_security_policy_;
|
| - blink::WebContentSecurityPolicyType security_policy_type_;
|
| - int worker_route_id_;
|
| - int render_frame_id_;
|
| - FilterList filters_;
|
| - scoped_refptr<WorkerDocumentSet> worker_document_set_;
|
| - ResourceContext* const resource_context_;
|
| - WorkerStoragePartition partition_;
|
| - bool load_failed_;
|
| - };
|
| -
|
| - WorkerProcessHost(ResourceContext* resource_context,
|
| - const WorkerStoragePartition& partition);
|
| - virtual ~WorkerProcessHost();
|
| -
|
| - // IPC::Sender implementation:
|
| - virtual bool Send(IPC::Message* message) OVERRIDE;
|
| -
|
| - // Starts the process. Returns true iff it succeeded.
|
| - // |render_process_id| and |render_frame_id| are the renderer process and the
|
| - // renderer frame responsible for starting this worker.
|
| - bool Init(int render_process_id, int render_frame_id);
|
| -
|
| - // Creates a worker object in the process.
|
| - void CreateWorker(const WorkerInstance& instance, bool pause_on_start);
|
| -
|
| - // Returns true iff the given message from a renderer process was forwarded to
|
| - // the worker.
|
| - bool FilterMessage(const IPC::Message& message, WorkerMessageFilter* filter);
|
| -
|
| - void FilterShutdown(WorkerMessageFilter* filter);
|
| -
|
| - // Shuts down any shared workers that are no longer referenced by active
|
| - // documents.
|
| - void DocumentDetached(WorkerMessageFilter* filter,
|
| - unsigned long long document_id);
|
| -
|
| - // Terminates the given worker, i.e. based on a UI action.
|
| - CONTENT_EXPORT void TerminateWorker(int worker_route_id);
|
| -
|
| - // Callers can reduce the WorkerProcess' priority.
|
| - void SetBackgrounded(bool backgrounded);
|
| -
|
| - CONTENT_EXPORT const ChildProcessData& GetData();
|
| -
|
| - typedef std::list<WorkerInstance> Instances;
|
| - const Instances& instances() const { return instances_; }
|
| -
|
| - ResourceContext* resource_context() const {
|
| - return resource_context_;
|
| - }
|
| -
|
| - bool process_launched() const { return process_launched_; }
|
| -
|
| - protected:
|
| - friend class WorkerServiceImpl;
|
| -
|
| - Instances& mutable_instances() { return instances_; }
|
| -
|
| - private:
|
| - // BrowserChildProcessHostDelegate implementation:
|
| - virtual void OnProcessLaunched() OVERRIDE;
|
| - virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
|
| -
|
| - // Creates and adds the message filters.
|
| - void CreateMessageFilters(int render_process_id);
|
| -
|
| - void OnWorkerContextClosed(int worker_route_id);
|
| - void OnWorkerContextDestroyed(int worker_route_id);
|
| - void OnWorkerScriptLoaded(int worker_route_id);
|
| - void OnWorkerScriptLoadFailed(int worker_route_id);
|
| - void OnWorkerConnected(int message_port_id, int worker_route_id);
|
| - void OnAllowDatabase(int worker_route_id,
|
| - const GURL& url,
|
| - const base::string16& name,
|
| - const base::string16& display_name,
|
| - unsigned long estimated_size,
|
| - bool* result);
|
| - void OnRequestFileSystemAccess(int worker_route_id,
|
| - const GURL& url,
|
| - IPC::Message* reply_msg);
|
| - void OnRequestFileSystemAccessResponse(scoped_ptr<IPC::Message> reply_msg,
|
| - bool allowed);
|
| - void OnAllowIndexedDB(int worker_route_id,
|
| - const GURL& url,
|
| - const base::string16& name,
|
| - bool* result);
|
| - void OnForceKillWorkerProcess();
|
| -
|
| - // Relays a message to the given endpoint. Takes care of parsing the message
|
| - // if it contains a message port and sending it a valid route id.
|
| - void RelayMessage(const IPC::Message& message,
|
| - WorkerMessageFilter* incoming_filter,
|
| - WorkerInstance* instance);
|
| -
|
| - void ShutdownSocketStreamDispatcherHostIfNecessary();
|
| -
|
| - virtual bool CanShutdown() OVERRIDE;
|
| -
|
| - // Updates the title shown in the task manager.
|
| - void UpdateTitle();
|
| -
|
| - // Return a vector of all the render process/render frame IDs that use the
|
| - // given worker.
|
| - std::vector<std::pair<int, int> > GetRenderFrameIDsForWorker(int route_id);
|
| -
|
| - // Callbacks for ResourceMessageFilter and SocketStreamDispatcherHost.
|
| - void GetContexts(const ResourceHostMsg_Request& request,
|
| - ResourceContext** resource_context,
|
| - net::URLRequestContext** request_context);
|
| - net::URLRequestContext* GetRequestContext(ResourceType::Type resource_type);
|
| -
|
| - Instances instances_;
|
| -
|
| - ResourceContext* const resource_context_;
|
| - WorkerStoragePartition partition_;
|
| -
|
| - // A reference to the filter associated with this worker process. We need to
|
| - // keep this around since we'll use it when forward messages to the worker
|
| - // process.
|
| - scoped_refptr<WorkerMessageFilter> worker_message_filter_;
|
| -
|
| - scoped_ptr<BrowserChildProcessHostImpl> process_;
|
| - bool process_launched_;
|
| -
|
| - scoped_refptr<SocketStreamDispatcherHost> socket_stream_dispatcher_host_;
|
| -
|
| - base::WeakPtrFactory<WorkerProcessHost> weak_factory_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(WorkerProcessHost);
|
| -};
|
| -
|
| -class WorkerProcessHostIterator
|
| - : public BrowserChildProcessHostTypeIterator<WorkerProcessHost> {
|
| - public:
|
| - WorkerProcessHostIterator()
|
| - : BrowserChildProcessHostTypeIterator<WorkerProcessHost>(
|
| - PROCESS_TYPE_WORKER) {
|
| - }
|
| -};
|
| -
|
| -} // namespace content
|
| -
|
| -#endif // CONTENT_BROWSER_WORKER_HOST_WORKER_PROCESS_HOST_H_
|
|
|