diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-28 21:30:40 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-28 21:30:40 +0000 |
commit | 1b8af731dccaaf3b040e32481aedf9e113f32854 (patch) | |
tree | 24e10ac7e200637d362171c9b3b51f158fb3c660 /content/browser/worker_host/worker_document_set.cc | |
parent | d45271ca30365429b189bc71217349cb2ea5f852 (diff) | |
download | chromium_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.cc | 69 |
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() { +} |