| Index: mojo/public/cpp/bindings/interface_ptr_set.h
 | 
| diff --git a/mojo/public/cpp/bindings/interface_ptr_set.h b/mojo/public/cpp/bindings/interface_ptr_set.h
 | 
| index c5d402d7cfaf51571c418c3460c2ee7d71fc24f6..69fc8249cd40c3f6dc756792ea92a8b49ca2b6c4 100644
 | 
| --- a/mojo/public/cpp/bindings/interface_ptr_set.h
 | 
| +++ b/mojo/public/cpp/bindings/interface_ptr_set.h
 | 
| @@ -10,20 +10,22 @@
 | 
|  
 | 
|  #include "base/macros.h"
 | 
|  #include "base/memory/weak_ptr.h"
 | 
| +#include "mojo/public/cpp/bindings/associated_interface_ptr.h"
 | 
|  #include "mojo/public/cpp/bindings/interface_ptr.h"
 | 
|  
 | 
|  namespace mojo {
 | 
| +namespace internal {
 | 
|  
 | 
| -template <typename Interface>
 | 
| -class InterfacePtrSet {
 | 
| +template <typename Interface, template <typename> class Ptr>
 | 
| +class PtrSet {
 | 
|   public:
 | 
| -  InterfacePtrSet() {}
 | 
| -  ~InterfacePtrSet() { CloseAll(); }
 | 
| +  PtrSet() {}
 | 
| +  ~PtrSet() { CloseAll(); }
 | 
|  
 | 
| -  void AddInterfacePtr(InterfacePtr<Interface> ptr) {
 | 
| +  void AddPtr(Ptr<Interface> ptr) {
 | 
|      auto weak_interface_ptr = new Element(std::move(ptr));
 | 
|      ptrs_.push_back(weak_interface_ptr->GetWeakPtr());
 | 
| -    ClearNullInterfacePtrs();
 | 
| +    ClearNullPtrs();
 | 
|    }
 | 
|  
 | 
|    template <typename FunctionType>
 | 
| @@ -32,7 +34,7 @@ class InterfacePtrSet {
 | 
|        if (it)
 | 
|          function(it->get());
 | 
|      }
 | 
| -    ClearNullInterfacePtrs();
 | 
| +    ClearNullPtrs();
 | 
|    }
 | 
|  
 | 
|    void CloseAll() {
 | 
| @@ -46,7 +48,7 @@ class InterfacePtrSet {
 | 
|   private:
 | 
|    class Element {
 | 
|     public:
 | 
| -    explicit Element(InterfacePtr<Interface> ptr)
 | 
| +    explicit Element(Ptr<Interface> ptr)
 | 
|          : ptr_(std::move(ptr)), weak_ptr_factory_(this) {
 | 
|        ptr_.set_connection_error_handler([this]() { delete this; });
 | 
|      }
 | 
| @@ -61,13 +63,13 @@ class InterfacePtrSet {
 | 
|      }
 | 
|  
 | 
|     private:
 | 
| -    InterfacePtr<Interface> ptr_;
 | 
| +    Ptr<Interface> ptr_;
 | 
|      base::WeakPtrFactory<Element> weak_ptr_factory_;
 | 
|  
 | 
|      DISALLOW_COPY_AND_ASSIGN(Element);
 | 
|    };
 | 
|  
 | 
| -  void ClearNullInterfacePtrs() {
 | 
| +  void ClearNullPtrs() {
 | 
|      ptrs_.erase(std::remove_if(ptrs_.begin(), ptrs_.end(),
 | 
|                                 [](const base::WeakPtr<Element>& p) {
 | 
|                                   return p.get() == nullptr;
 | 
| @@ -78,6 +80,15 @@ class InterfacePtrSet {
 | 
|    std::vector<base::WeakPtr<Element>> ptrs_;
 | 
|  };
 | 
|  
 | 
| +}  // namespace internal
 | 
| +
 | 
| +template <typename Interface>
 | 
| +using InterfacePtrSet = internal::PtrSet<Interface, InterfacePtr>;
 | 
| +
 | 
| +template <typename Interface>
 | 
| +using AssociatedInterfacePtrSet =
 | 
| +    internal::PtrSet<Interface, AssociatedInterfacePtr>;
 | 
| +
 | 
|  }  // namespace mojo
 | 
|  
 | 
|  #endif  // MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_PTR_SET_H_
 | 
| 
 |