automation_provider_list.h revision c407dc5cd9bdc5668497f21b26b09d988ab439de
1// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_AUTOMATION_AUTOMATION_PROVIDER_LIST_H_ 6#define CHROME_BROWSER_AUTOMATION_AUTOMATION_PROVIDER_LIST_H_ 7 8#include <vector> 9#include "base/basictypes.h" 10 11class AutomationProvider; 12 13// Stores a list of all AutomationProvider objects. 14class AutomationProviderList { 15 public: 16 ~AutomationProviderList(); 17 typedef std::vector<AutomationProvider*> list_type; 18 typedef list_type::iterator iterator; 19 typedef list_type::const_iterator const_iterator; 20 21 // Adds and removes automation providers from the global list. 22 bool AddProvider(AutomationProvider* provider); 23 bool RemoveProvider(AutomationProvider* provider); 24 25 const_iterator begin() { 26 return automation_providers_.begin(); 27 } 28 29 const_iterator end() { 30 return automation_providers_.end(); 31 } 32 33 size_t size() { 34 return automation_providers_.size(); 35 } 36 37 static AutomationProviderList* GetInstance(); 38 39 private: 40 AutomationProviderList(); 41 void OnLastProviderRemoved(); 42 list_type automation_providers_; 43 static AutomationProviderList* instance_; 44 45 DISALLOW_COPY_AND_ASSIGN(AutomationProviderList); 46}; 47 48#endif // CHROME_BROWSER_AUTOMATION_AUTOMATION_PROVIDER_LIST_H_ 49