Index: chrome/common/extensions/extension_set.h |
diff --git a/chrome/common/extensions/extension_set.h b/chrome/common/extensions/extension_set.h |
index 36fd6dabaade61f418927512729a9251c4805c5e..cd9d9c81ce0335c225935582ea6a80e1fca07ece 100644 |
--- a/chrome/common/extensions/extension_set.h |
+++ b/chrome/common/extensions/extension_set.h |
@@ -6,9 +6,9 @@ |
#define CHROME_COMMON_EXTENSIONS_EXTENSION_SET_H_ |
#pragma once |
+#include <iterator> |
#include <map> |
#include <string> |
-#include <vector> |
#include "base/gtest_prod_util.h" |
#include "base/memory/ref_counted.h" |
@@ -21,17 +21,39 @@ class ExtensionSet { |
public: |
typedef std::pair<FilePath, std::string> ExtensionPathAndDefaultLocale; |
typedef std::map<std::string, scoped_refptr<const Extension> > ExtensionMap; |
- typedef ExtensionMap::const_iterator const_iterator; |
+ |
+ // Iteration over the values of the map (given that it's an ExtensionSet, |
+ // it should iterate like a set iterator). |
Aaron Boodman
2011/12/01 08:27:12
Fair enough.
|
+ class const_iterator : |
+ public std::iterator<std::input_iterator_tag, |
+ scoped_refptr<const Extension> > { |
+ public: |
+ const_iterator() {} |
+ explicit const_iterator(ExtensionMap::const_iterator it) : |
+ it_(it) {} |
+ const_iterator& operator++() { |
+ ++it_; |
+ return *this; |
+ } |
+ const scoped_refptr<const Extension> operator*() { |
+ return it_->second; |
+ } |
+ bool operator!=(const const_iterator& other) { return it_ != other.it_; } |
+ bool operator==(const const_iterator& other) { return it_ == other.it_; } |
+ |
+ private: |
+ ExtensionMap::const_iterator it_; |
+ }; |
ExtensionSet(); |
~ExtensionSet(); |
- // Gets the number of extensions contained. |
size_t size() const; |
+ bool empty() const; |
// Iteration support. |
- const_iterator begin() const { return extensions_.begin(); } |
- const_iterator end() const { return extensions_.end(); } |
+ const_iterator begin() const { return const_iterator(extensions_.begin()); } |
+ const_iterator end() const { return const_iterator(extensions_.end()); } |
// Returns true if the set contains the specified extension. |
bool Contains(const std::string& id) const; |
@@ -43,9 +65,12 @@ class ExtensionSet { |
// Removes the specified extension. |
void Remove(const std::string& id); |
+ // Removes all extensions. |
+ void Clear(); |
+ |
// Returns the extension ID that the given URL is a part of, or empty if |
// none. This includes web URLs that are part of an extension's web extent. |
- std::string GetIdByURL(const GURL& url) const; |
+ std::string GetIDByURL(const GURL& url) const; |
// Returns the Extension that the given URL is a part of, or NULL if none. |
// This includes web URLs that are part of an extension's web extent. |