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  ~AutomationProviderList();
18  typedef std::vector<AutomationProvider*> list_type;
19  typedef list_type::iterator iterator;
20  typedef list_type::const_iterator const_iterator;
21
22  // Adds and removes automation providers from the global list.
23  bool AddProvider(AutomationProvider* provider);
24  bool RemoveProvider(AutomationProvider* provider);
25
26  const_iterator begin() {
27    return automation_providers_.begin();
28  }
29
30  const_iterator end() {
31    return automation_providers_.end();
32  }
33
34  size_t size() {
35    return automation_providers_.size();
36  }
37
38 private:
39  void OnLastProviderRemoved();
40  list_type automation_providers_;
41
42  DISALLOW_COPY_AND_ASSIGN(AutomationProviderList);
43};
44
45#endif  // CHROME_BROWSER_AUTOMATION_AUTOMATION_PROVIDER_LIST_H_
46