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_ |