Chromium Code Reviews| Index: content/browser/shared_worker/shared_worker_instance.h |
| diff --git a/content/browser/shared_worker/shared_worker_message_filter.h b/content/browser/shared_worker/shared_worker_instance.h |
| similarity index 11% |
| copy from content/browser/shared_worker/shared_worker_message_filter.h |
| copy to content/browser/shared_worker/shared_worker_instance.h |
| index 285f8211d7d7611ca30d2d9d4518c6d578b5178f..5346de8852fb48ded4230c98a95904b60e10411c 100644 |
| --- a/content/browser/shared_worker/shared_worker_message_filter.h |
| +++ b/content/browser/shared_worker/shared_worker_instance.h |
| @@ -2,75 +2,102 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#ifndef CONTENT_BROWSER_SHARED_WORKER_SHARED_WORKER_MESSAGE_FILTER_H_ |
| -#define CONTENT_BROWSER_SHARED_WORKER_SHARED_WORKER_MESSAGE_FILTER_H_ |
| +#ifndef CONTENT_BROWSER_SHARED_WORKER_SHARED_WORKER_INSTANCE_H_ |
| +#define CONTENT_BROWSER_SHARED_WORKER_SHARED_WORKER_INSTANCE_H_ |
| -#include "content/browser/worker_host/worker_storage_partition.h" |
| -#include "content/public/browser/browser_message_filter.h" |
| +#include <list> |
| +#include <string> |
| -class GURL; |
| -struct ViewHostMsg_CreateWorker_Params; |
| +#include "base/basictypes.h" |
| +#include "content/browser/worker_host/worker_storage_partition.h" |
| +#include "third_party/WebKit/public/web/WebContentSecurityPolicy.h" |
| +#include "url/gurl.h" |
| namespace content { |
| -class MessagePortMessageFilter; |
| class ResourceContext; |
| +class SharedWorkerMessageFilter; |
| +class WorkerDocumentSet; |
| -// If "enable-embedded-shared-worker" is set this class will be used instead of |
| -// WorkerMessageFilter. |
| -class SharedWorkerMessageFilter : public BrowserMessageFilter { |
| +class SharedWorkerInstance { |
| public: |
| - SharedWorkerMessageFilter(int render_process_id, |
| - ResourceContext* resource_context, |
| - const WorkerStoragePartition& partition, |
| - MessagePortMessageFilter* message_port_filter); |
| + SharedWorkerInstance(const GURL& url, |
| + const base::string16& name, |
| + const base::string16& content_security_policy, |
| + blink::WebContentSecurityPolicyType security_policy_type, |
| + ResourceContext* resource_context, |
| + const WorkerStoragePartition& partition); |
| + ~SharedWorkerInstance(); |
| + // Unique identifier for a worker client. |
| + class FilterInfo { |
| + public: |
| + FilterInfo(SharedWorkerMessageFilter* filter, int route_id) |
| + : filter_(filter), route_id_(route_id), message_port_id_(0) { } |
| + SharedWorkerMessageFilter* 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: |
| + SharedWorkerMessageFilter* filter_; |
| + int route_id_; |
| + int message_port_id_; |
| + }; |
|
kinuko
2014/02/26 08:51:17
nit: can we insert one-line space before line 30 a
horo
2014/02/26 10:36:19
Done.
|
| + void AddFilter(SharedWorkerMessageFilter* filter, int route_id); |
| + void RemoveFilters(SharedWorkerMessageFilter* filter); |
| + bool HasFilter(SharedWorkerMessageFilter* filter, int route_id) const; |
| + void SetMessagePortID(SharedWorkerMessageFilter* filter, |
| + int route_id, |
| + int message_port_id); |
| - // BrowserMessageFilter implementation. |
| - virtual void OnChannelClosing() OVERRIDE; |
| - virtual bool OnMessageReceived(const IPC::Message& message, |
| - bool* message_was_ok) OVERRIDE; |
| + typedef std::list<FilterInfo> FilterList; |
|
kinuko
2014/02/26 08:51:17
style-nit: basically we prefer having all typedefs
horo
2014/02/26 10:36:19
Done.
|
| + const FilterList& filters() const { return filters_; } |
| - int GetNextRoutingID(); |
| - int render_process_id() const { return render_process_id_; } |
| + // Checks if this SharedWorkerInstance matches the passed url/name params |
| + // (per the comparison algorithm in the WebWorkers spec). This API only |
| + // applies to shared workers. |
|
kinuko
2014/02/26 08:51:17
The last line (only applies to shared workers) loo
horo
2014/02/26 10:36:19
Done.
|
| + bool Matches( |
| + const GURL& url, |
| + const base::string16& name, |
| + const WorkerStoragePartition& partition, |
| + ResourceContext* resource_context) const; |
| - MessagePortMessageFilter* message_port_message_filter() const { |
| - return message_port_message_filter_; |
| + // Accessors |
|
kinuko
2014/02/26 08:51:17
nit: end comment with period
horo
2014/02/26 10:36:19
Done.
|
| + 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_; |
|
kinuko
2014/02/26 08:51:17
nit: indent (line 70 and 73)
horo
2014/02/26 10:36:19
Done.
|
| + } |
| + 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: |
| - virtual ~SharedWorkerMessageFilter(); |
| - |
| - // Message handlers. |
| - void OnCreateWorker(const ViewHostMsg_CreateWorker_Params& params, |
| - int* route_id); |
| - void OnForwardToWorker(const IPC::Message& message); |
| - void OnDocumentDetached(unsigned long long document_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 OnAllowFileSystem(int worker_route_id, |
| - const GURL& url, |
| - bool* result); |
| - void OnAllowIndexedDB(int worker_route_id, |
| - const GURL& url, |
| - const base::string16& name, |
| - bool* result); |
| - |
| - const int render_process_id_; |
| + GURL url_; |
| + bool closed_; |
| + base::string16 name_; |
| + base::string16 content_security_policy_; |
| + blink::WebContentSecurityPolicyType security_policy_type_; |
| + FilterList filters_; |
| + scoped_refptr<WorkerDocumentSet> worker_document_set_; |
| ResourceContext* const resource_context_; |
| - const WorkerStoragePartition partition_; |
| - MessagePortMessageFilter* const message_port_message_filter_; |
| - |
| - DISALLOW_IMPLICIT_CONSTRUCTORS(SharedWorkerMessageFilter); |
| + WorkerStoragePartition partition_; |
| + bool load_failed_; |
| }; |
| } // namespace content |
| -#endif // CONTENT_BROWSER_SHARED_WORKER_SHARED_WORKER_MESSAGE_FILTER_H_ |
| + |
| +#endif // CONTENT_BROWSER_SHARED_WORKER_SHARED_WORKER_INSTANCE_H_ |