| Index: content/browser/shared_worker/worker_document_set.cc
|
| diff --git a/content/browser/shared_worker/worker_document_set.cc b/content/browser/shared_worker/worker_document_set.cc
|
| index f8981adbc2b735b416df263c1b6c4fbdcb1efeeb..fda6b4c33868a0c38d67de597f78fba644795caf 100644
|
| --- a/content/browser/shared_worker/worker_document_set.cc
|
| +++ b/content/browser/shared_worker/worker_document_set.cc
|
| @@ -64,6 +64,23 @@ void WorkerDocumentSet::RemoveAll(BrowserMessageFilter* parent) {
|
| }
|
| }
|
|
|
| +void WorkerDocumentSet::RemoveRenderFrame(int render_process_id,
|
| + int render_frame_id) {
|
| + 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->render_process_id() == render_process_id &&
|
| + i->render_frame_id() == render_frame_id) {
|
| + DocumentInfoSet::iterator item_to_delete = i++;
|
| + document_set_.erase(item_to_delete);
|
| + } else {
|
| + ++i;
|
| + }
|
| + }
|
| +}
|
| +
|
| WorkerDocumentSet::DocumentInfo::DocumentInfo(
|
| BrowserMessageFilter* filter, unsigned long long document_id,
|
| int render_process_id, int render_frame_id)
|
|
|