summaryrefslogtreecommitdiffstats
path: root/extensions/browser/process_map.cc
diff options
context:
space:
mode:
authorbenwells@chromium.org <benwells@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-14 06:30:34 +0000
committerbenwells@chromium.org <benwells@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-14 06:30:34 +0000
commit50de9aa22a2635c65678e62928ed8cc32969bb31 (patch)
tree3213daecf81fa94d2f73a8622ffa7de93dc75326 /extensions/browser/process_map.cc
parentdf5e9eaaf88d8ab2dab563e5bd9be1760d116f6e (diff)
downloadchromium_src-50de9aa22a2635c65678e62928ed8cc32969bb31.zip
chromium_src-50de9aa22a2635c65678e62928ed8cc32969bb31.tar.gz
chromium_src-50de9aa22a2635c65678e62928ed8cc32969bb31.tar.bz2
Moved ProcessMap to extensions/
TBR=isherman@chromium.org BUG=162530 Review URL: https://codereview.chromium.org/68113008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@235064 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'extensions/browser/process_map.cc')
-rw-r--r--extensions/browser/process_map.cc115
1 files changed, 115 insertions, 0 deletions
diff --git a/extensions/browser/process_map.cc b/extensions/browser/process_map.cc
new file mode 100644
index 0000000..899940e
--- /dev/null
+++ b/extensions/browser/process_map.cc
@@ -0,0 +1,115 @@
+// Copyright 2013 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 "extensions/browser/process_map.h"
+
+namespace extensions {
+
+// Item
+struct ProcessMap::Item {
+ Item() : process_id(0), site_instance_id(0) {
+ }
+
+ // Purposely implicit constructor needed on older gcc's. See:
+ // http://codereview.chromium.org/8769022/
+ explicit Item(const ProcessMap::Item& other)
+ : extension_id(other.extension_id),
+ process_id(other.process_id),
+ site_instance_id(other.site_instance_id) {
+ }
+
+ Item(const std::string& extension_id, int process_id,
+ int site_instance_id)
+ : extension_id(extension_id),
+ process_id(process_id),
+ site_instance_id(site_instance_id) {
+ }
+
+ ~Item() {
+ }
+
+ bool operator<(const ProcessMap::Item& other) const {
+ if (extension_id < other.extension_id)
+ return true;
+
+ if (extension_id == other.extension_id &&
+ process_id < other.process_id) {
+ return true;
+ }
+
+ if (extension_id == other.extension_id &&
+ process_id == other.process_id &&
+ site_instance_id < other.site_instance_id) {
+ return true;
+ }
+
+ return false;
+ }
+
+ std::string extension_id;
+ int process_id;
+ int site_instance_id;
+};
+
+
+// ProcessMap
+ProcessMap::ProcessMap() {
+}
+
+ProcessMap::~ProcessMap() {
+}
+
+bool ProcessMap::Insert(const std::string& extension_id, int process_id,
+ int site_instance_id) {
+ return items_.insert(Item(extension_id, process_id, site_instance_id)).second;
+}
+
+bool ProcessMap::Remove(const std::string& extension_id, int process_id,
+ int site_instance_id) {
+ return items_.erase(Item(extension_id, process_id, site_instance_id)) > 0;
+}
+
+int ProcessMap::RemoveAllFromProcess(int process_id) {
+ int result = 0;
+ for (ItemSet::iterator iter = items_.begin(); iter != items_.end(); ) {
+ if (iter->process_id == process_id) {
+ items_.erase(iter++);
+ ++result;
+ } else {
+ ++iter;
+ }
+ }
+ return result;
+}
+
+bool ProcessMap::Contains(const std::string& extension_id,
+ int process_id) const {
+ for (ItemSet::const_iterator iter = items_.begin(); iter != items_.end();
+ ++iter) {
+ if (iter->process_id == process_id && iter->extension_id == extension_id)
+ return true;
+ }
+ return false;
+}
+
+bool ProcessMap::Contains(int process_id) const {
+ for (ItemSet::const_iterator iter = items_.begin(); iter != items_.end();
+ ++iter) {
+ if (iter->process_id == process_id)
+ return true;
+ }
+ return false;
+}
+
+std::set<std::string> ProcessMap::GetExtensionsInProcess(int process_id) const {
+ std::set<std::string> result;
+ for (ItemSet::const_iterator iter = items_.begin(); iter != items_.end();
+ ++iter) {
+ if (iter->process_id == process_id)
+ result.insert(iter->extension_id);
+ }
+ return result;
+}
+
+} // extensions