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