Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1191)

Unified Diff: content/browser/shared_worker/shared_worker_instance.cc

Issue 177043003: Implement SharedWorkerServiceImpl::CreateWorker and SharedWorkerInstance and SharedWorkerHost (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/shared_worker/shared_worker_instance.cc
diff --git a/content/browser/shared_worker/shared_worker_service_impl.cc b/content/browser/shared_worker/shared_worker_instance.cc
similarity index 10%
copy from content/browser/shared_worker/shared_worker_service_impl.cc
copy to content/browser/shared_worker/shared_worker_instance.cc
index d1e245a4268825a414649040c9779c02e974ddd9..59f64f769dea5f490392678d70b3a587e60e7182 100644
--- a/content/browser/shared_worker/shared_worker_service_impl.cc
+++ b/content/browser/shared_worker/shared_worker_instance.cc
@@ -2,143 +2,105 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "content/browser/shared_worker/shared_worker_service_impl.h"
+#include "content/browser/shared_worker/shared_worker_instance.h"
-#include "content/browser/shared_worker/shared_worker_message_filter.h"
-#include "content/common/worker_messages.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/worker_service_observer.h"
+#include "base/logging.h"
+#include "content/browser/worker_host/worker_document_set.h"
namespace content {
-SharedWorkerServiceImpl* SharedWorkerServiceImpl::GetInstance() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- return Singleton<SharedWorkerServiceImpl>::get();
-}
-
-SharedWorkerServiceImpl::SharedWorkerServiceImpl() {
-}
-
-SharedWorkerServiceImpl::~SharedWorkerServiceImpl() {
-}
-
-bool SharedWorkerServiceImpl::TerminateWorker(int process_id, int route_id) {
- // TODO(horo): implement this.
- return false;
-}
-
-std::vector<WorkerService::WorkerInfo> SharedWorkerServiceImpl::GetWorkers() {
- // TODO(horo): implement this.
- std::vector<WorkerService::WorkerInfo> results;
- return results;
-}
-
-void SharedWorkerServiceImpl::AddObserver(WorkerServiceObserver* observer) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- observers_.AddObserver(observer);
-}
-
-void SharedWorkerServiceImpl::RemoveObserver(WorkerServiceObserver* observer) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- observers_.RemoveObserver(observer);
-}
-
-void SharedWorkerServiceImpl::CreateWorker(
- const ViewHostMsg_CreateWorker_Params& params,
- int route_id,
- SharedWorkerMessageFilter* filter,
- ResourceContext* resource_context,
- const WorkerStoragePartition& partition,
- bool* url_mismatch) {
- // TODO(horo): implement this.
- NOTIMPLEMENTED();
-}
-
-void SharedWorkerServiceImpl::ForwardToWorker(
- const IPC::Message& message,
- SharedWorkerMessageFilter* filter) {
- // TODO(horo): implement this.
- NOTIMPLEMENTED();
-}
-
-void SharedWorkerServiceImpl::DocumentDetached(
- unsigned long long document_id,
- SharedWorkerMessageFilter* filter) {
- // TODO(horo): implement this.
- NOTIMPLEMENTED();
-}
-
-void SharedWorkerServiceImpl::WorkerContextClosed(
- int worker_route_id,
- SharedWorkerMessageFilter* filter) {
- // TODO(horo): implement this.
- NOTIMPLEMENTED();
-}
-
-void SharedWorkerServiceImpl::WorkerContextDestroyed(
- int worker_route_id,
- SharedWorkerMessageFilter* filter) {
- // TODO(horo): implement this.
- NOTIMPLEMENTED();
-}
-
-void SharedWorkerServiceImpl::WorkerScriptLoaded(
- int worker_route_id,
- SharedWorkerMessageFilter* filter) {
- // TODO(horo): implement this.
- NOTIMPLEMENTED();
-}
-
-void SharedWorkerServiceImpl::WorkerScriptLoadFailed(
- int worker_route_id,
- SharedWorkerMessageFilter* filter) {
- // TODO(horo): implement this.
- NOTIMPLEMENTED();
-}
-
-void SharedWorkerServiceImpl::WorkerConnected(
- int message_port_id,
- int worker_route_id,
- SharedWorkerMessageFilter* filter) {
- // TODO(horo): implement this.
- NOTIMPLEMENTED();
-}
-
-void SharedWorkerServiceImpl::AllowDatabase(
- int worker_route_id,
+SharedWorkerInstance::SharedWorkerInstance(
const GURL& url,
const base::string16& name,
- const base::string16& display_name,
- unsigned long estimated_size,
- bool* result,
- SharedWorkerMessageFilter* filter) {
- // TODO(horo): implement this.
- NOTIMPLEMENTED();
-}
-
-void SharedWorkerServiceImpl::AllowFileSystem(
- int worker_route_id,
- const GURL& url,
- bool* result,
- SharedWorkerMessageFilter* filter) {
- // TODO(horo): implement this.
- NOTIMPLEMENTED();
+ const base::string16& content_security_policy,
+ blink::WebContentSecurityPolicyType security_policy_type,
+ ResourceContext* resource_context,
+ const WorkerStoragePartition& partition)
+ : url_(url),
+ closed_(false),
+ name_(name),
+ content_security_policy_(content_security_policy),
+ security_policy_type_(security_policy_type),
+ worker_document_set_(new WorkerDocumentSet()),
+ resource_context_(resource_context),
+ partition_(partition),
+ load_failed_(false) {
+ DCHECK(resource_context_);
}
-void SharedWorkerServiceImpl::AllowIndexedDB(
- int worker_route_id,
- const GURL& url,
- const base::string16& name,
- bool* result,
- SharedWorkerMessageFilter* filter) {
- // TODO(horo): implement this.
- NOTIMPLEMENTED();
+SharedWorkerInstance::~SharedWorkerInstance() {
}
-void SharedWorkerServiceImpl::OnSharedWorkerMessageFilterClosing(
- SharedWorkerMessageFilter* filter) {
- // TODO(horo): implement this.
- NOTIMPLEMENTED();
+void SharedWorkerInstance::SetMessagePortID(
+ SharedWorkerMessageFilter* filter,
+ int route_id,
+ int message_port_id) {
+ for (FilterList::iterator i = filters_.begin(); i != filters_.end(); ++i) {
+ if (i->filter() == filter && i->route_id() == route_id) {
+ i->set_message_port_id(message_port_id);
+ return;
+ }
+ }
+}
+
+// Compares an instance based on the algorithm in the WebWorkers spec - an
+// instance matches if the origins of the URLs match, and:
+// a) the names are non-empty and equal
+// -or-
+// b) the names are both empty, and the urls are equal
kinuko 2014/02/26 08:51:17 This comments can be probably moved to .h
horo 2014/02/26 10:36:19 Done.
+bool SharedWorkerInstance::Matches(const GURL& match_url,
+ const base::string16& match_name,
+ const WorkerStoragePartition& partition,
+ ResourceContext* resource_context) const {
+ // Only match open shared workers.
+ if (closed_)
+ return false;
+
+ // ResourceContext equivalence is being used as a proxy to ensure we only
+ // matched shared workers within the same BrowserContext.
+ if (resource_context_ != resource_context)
+ return false;
+
+ // We must be in the same storage partition otherwise sharing will violate
+ // isolation.
+ if (!partition_.Equals(partition))
+ return false;
+
+ if (url_.GetOrigin() != match_url.GetOrigin())
+ return false;
+
+ if (name_.empty() && match_name.empty())
+ return url_ == match_url;
+
+ return name_ == match_name;
+}
+
+void SharedWorkerInstance::AddFilter(SharedWorkerMessageFilter* filter,
+ int route_id) {
+ CHECK(filter);
+ if (!HasFilter(filter, route_id)) {
+ FilterInfo info(filter, route_id);
+ filters_.push_back(info);
+ }
+}
+
+void SharedWorkerInstance::RemoveFilters(SharedWorkerMessageFilter* filter) {
+ for (FilterList::iterator i = filters_.begin(); i != filters_.end();) {
+ if (i->filter() == filter)
+ i = filters_.erase(i);
+ else
+ ++i;
+ }
+}
+
+bool SharedWorkerInstance::HasFilter(SharedWorkerMessageFilter* filter,
+ int route_id) const {
+ for (FilterList::const_iterator i = filters_.begin(); i != filters_.end();
+ ++i) {
+ if (i->filter() == filter && i->route_id() == route_id)
+ return true;
+ }
+ return false;
}
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698