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

Side by Side Diff: chrome/browser/worker_host/worker_document_set.cc

Issue 509016: Refactored code to allow associating workers with multiple renderers. (Closed)
Patch Set: Disabled overly-aggressive assertion in ResourceDispatcherHost. Created 10 years, 11 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/worker_host/worker_document_set.h"
6
7 WorkerDocumentSet::WorkerDocumentSet() {
8 }
9
10 void WorkerDocumentSet::Add(IPC::Message::Sender* parent,
11 unsigned long long document_id,
12 int renderer_id,
13 int render_view_route_id) {
14 DocumentInfo info(parent, document_id, renderer_id, render_view_route_id);
15 document_set_.insert(info);
16 }
17
18 bool WorkerDocumentSet::Contains(IPC::Message::Sender* parent,
19 unsigned long long document_id) const {
20 for (DocumentInfoSet::const_iterator i = document_set_.begin();
21 i != document_set_.end(); ++i) {
22 if (i->sender() == parent && i->document_id() == document_id)
23 return true;
24 }
25 return false;
26 }
27
28 void WorkerDocumentSet::Remove(IPC::Message::Sender* parent,
29 unsigned long long document_id) {
30 for (DocumentInfoSet::iterator i = document_set_.begin();
31 i != document_set_.end(); i++) {
32 if (i->sender() == parent && i->document_id() == document_id) {
33 document_set_.erase(i);
34 break;
35 }
36 }
37 // Should not be duplicate copies in the document set.
38 DCHECK(!Contains(parent, document_id));
39 }
40
41 void WorkerDocumentSet::RemoveAll(IPC::Message::Sender* parent) {
42 for (DocumentInfoSet::iterator i = document_set_.begin();
43 i != document_set_.end();) {
44
45 // Note this idiom is somewhat tricky - calling document_set_.erase(iter)
46 // invalidates any iterators that point to the element being removed, so
47 // bump the iterator beyond the item being removed before calling erase.
48 if (i->sender() == parent) {
49 DocumentInfoSet::iterator item_to_delete = i++;
50 document_set_.erase(item_to_delete);
51 } else {
52 ++i;
53 }
54 }
55 }
56
57 WorkerDocumentSet::DocumentInfo::DocumentInfo(
58 IPC::Message::Sender* sender, unsigned long long document_id,
59 int renderer_id, int render_view_route_id)
60 : sender_(sender),
61 document_id_(document_id),
62 renderer_id_(renderer_id),
63 render_view_route_id_(render_view_route_id) {
64 }
OLDNEW
« no previous file with comments | « chrome/browser/worker_host/worker_document_set.h ('k') | chrome/browser/worker_host/worker_process_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698