Chromium Code Reviews| 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. |