1// Copyright (c) 2012 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 CONTENT_BROWSER_DEVTOOLS_DEVTOOLS_MANAGER_H_
6#define CONTENT_BROWSER_DEVTOOLS_DEVTOOLS_MANAGER_H_
7
8#include <map>
9#include <string>
10#include <vector>
11
12#include "base/compiler_specific.h"
13#include "base/memory/singleton.h"
14
15namespace content {
16
17class DevToolsManagerDelegate;
18
19// This class is a singleton that manage global DevTools state for the whole
20// browser.
21class DevToolsManager {
22 public:
23  // Returns single instance of this class. The instance is destroyed on the
24  // browser main loop exit so this method MUST NOT be called after that point.
25  static DevToolsManager* GetInstance();
26
27  DevToolsManager();
28  virtual ~DevToolsManager();
29
30  DevToolsManagerDelegate* delegate() const { return delegate_.get(); }
31  void OnClientAttached();
32  void OnClientDetached();
33
34 private:
35  friend struct DefaultSingletonTraits<DevToolsManager>;
36
37  scoped_ptr<DevToolsManagerDelegate> delegate_;
38  int client_count_;
39
40  DISALLOW_COPY_AND_ASSIGN(DevToolsManager);
41};
42
43}  // namespace content
44
45#endif  // CONTENT_BROWSER_DEVTOOLS_DEVTOOLS_MANAGER_H_
46