Chromium Code Reviews| 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); |
|
no sievers
2016/08/24 23:44:37
same as: document_set_.erase(i++)
horo
2016/08/25 00:03:29
Done.
|
| + } else { |
| + ++i; |
| + } |
| + } |
| +} |
| + |
| WorkerDocumentSet::DocumentInfo::DocumentInfo( |
| BrowserMessageFilter* filter, unsigned long long document_id, |
| int render_process_id, int render_frame_id) |