diff options
Diffstat (limited to 'chrome/common')
-rw-r--r-- | chrome/common/extensions/extension_set.cc | 10 | ||||
-rw-r--r-- | chrome/common/extensions/extension_set.h | 37 |
2 files changed, 40 insertions, 7 deletions
diff --git a/chrome/common/extensions/extension_set.cc b/chrome/common/extensions/extension_set.cc index 0231115..c99220b 100644 --- a/chrome/common/extensions/extension_set.cc +++ b/chrome/common/extensions/extension_set.cc @@ -29,6 +29,10 @@ size_t ExtensionSet::size() const { return extensions_.size(); } +bool ExtensionSet::is_empty() const { + return extensions_.empty(); +} + bool ExtensionSet::Contains(const std::string& extension_id) const { return extensions_.find(extension_id) != extensions_.end(); } @@ -41,7 +45,11 @@ void ExtensionSet::Remove(const std::string& id) { extensions_.erase(id); } -std::string ExtensionSet::GetIdByURL(const ExtensionURLInfo& info) const { +void ExtensionSet::Clear() { + extensions_.clear(); +} + +std::string ExtensionSet::GetIDByURL(const ExtensionURLInfo& info) const { DCHECK(!info.origin().isNull()); if (info.url().SchemeIs(chrome::kExtensionScheme)) diff --git a/chrome/common/extensions/extension_set.h b/chrome/common/extensions/extension_set.h index 5ca0344..3407557 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" @@ -44,17 +44,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). + 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 is_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; @@ -66,9 +88,12 @@ class ExtensionSet { // Removes the specified extension. void Remove(const std::string& id); + // Removes all extensions. + void Clear(); + // Returns the extension ID, or empty if none. This includes web URLs that // are part of an extension's web extent. - std::string GetIdByURL(const ExtensionURLInfo& info) const; + std::string GetIDByURL(const ExtensionURLInfo& info) const; // Returns the Extension, or NULL if none. This includes web URLs that are // part of an extension's web extent. |