summaryrefslogtreecommitdiffstats
path: root/content/browser/worker_host/worker_document_set.cc
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-28 21:30:40 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-28 21:30:40 +0000
commit1b8af731dccaaf3b040e32481aedf9e113f32854 (patch)
tree24e10ac7e200637d362171c9b3b51f158fb3c660 /content/browser/worker_host/worker_document_set.cc
parentd45271ca30365429b189bc71217349cb2ea5f852 (diff)
downloadchromium_src-1b8af731dccaaf3b040e32481aedf9e113f32854.zip
chromium_src-1b8af731dccaaf3b040e32481aedf9e113f32854.tar.gz
chromium_src-1b8af731dccaaf3b040e32481aedf9e113f32854.tar.bz2
Move worker_host code to content.
TBR=avi Review URL: http://codereview.chromium.org/6592041 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76263 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/worker_host/worker_document_set.cc')
-rw-r--r--content/browser/worker_host/worker_document_set.cc69
1 files changed, 69 insertions, 0 deletions
diff --git a/content/browser/worker_host/worker_document_set.cc b/content/browser/worker_host/worker_document_set.cc
new file mode 100644
index 0000000..06a3907
--- /dev/null
+++ b/content/browser/worker_host/worker_document_set.cc
@@ -0,0 +1,69 @@
+// 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.
+
+#include "content/browser/worker_host/worker_document_set.h"
+
+#include "base/logging.h"
+
+WorkerDocumentSet::WorkerDocumentSet() {
+}
+
+void WorkerDocumentSet::Add(WorkerMessageFilter* parent,
+ unsigned long long document_id,
+ int render_process_id,
+ int render_view_id) {
+ DocumentInfo info(parent, document_id, render_process_id, render_view_id);
+ document_set_.insert(info);
+}
+
+bool WorkerDocumentSet::Contains(WorkerMessageFilter* parent,
+ unsigned long long document_id) const {
+ for (DocumentInfoSet::const_iterator i = document_set_.begin();
+ i != document_set_.end(); ++i) {
+ if (i->filter() == parent && i->document_id() == document_id)
+ return true;
+ }
+ return false;
+}
+
+void WorkerDocumentSet::Remove(WorkerMessageFilter* parent,
+ unsigned long long document_id) {
+ for (DocumentInfoSet::iterator i = document_set_.begin();
+ i != document_set_.end(); i++) {
+ if (i->filter() == parent && i->document_id() == document_id) {
+ document_set_.erase(i);
+ break;
+ }
+ }
+ // Should not be duplicate copies in the document set.
+ DCHECK(!Contains(parent, document_id));
+}
+
+void WorkerDocumentSet::RemoveAll(WorkerMessageFilter* parent) {
+ for (DocumentInfoSet::iterator i = document_set_.begin();
+ i != document_set_.end();) {
+
+ // Note this idiom is somewhat tricky - calling document_set_.erase(iter)
+ // invalidates any iterators that point to the element being removed, so
+ // bump the iterator beyond the item being removed before calling erase.
+ if (i->filter() == parent) {
+ DocumentInfoSet::iterator item_to_delete = i++;
+ document_set_.erase(item_to_delete);
+ } else {
+ ++i;
+ }
+ }
+}
+
+WorkerDocumentSet::DocumentInfo::DocumentInfo(
+ WorkerMessageFilter* filter, unsigned long long document_id,
+ int render_process_id, int render_view_id)
+ : filter_(filter),
+ document_id_(document_id),
+ render_process_id_(render_process_id),
+ render_view_id_(render_view_id) {
+}
+
+WorkerDocumentSet::~WorkerDocumentSet() {
+}