15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef CONTENT_BROWSER_DEVTOOLS_DEVTOOLS_MANAGER_H_ 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define CONTENT_BROWSER_DEVTOOLS_DEVTOOLS_MANAGER_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <map> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <vector> 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/singleton.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class DevToolsManagerDelegate; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// This class is a singleton that manage global DevTools state for the whole 2003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// browser. 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass DevToolsManager { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns single instance of this class. The instance is destroyed on the 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // browser main loop exit so this method MUST NOT be called after that point. 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci static DevToolsManager* GetInstance(); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DevToolsManager(); 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual ~DevToolsManager(); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) DevToolsManagerDelegate* delegate() const { return delegate_.get(); } 3103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) void OnClientAttached(); 3203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) void OnClientDetached(); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci friend struct DefaultSingletonTraits<DevToolsManager>; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) scoped_ptr<DevToolsManagerDelegate> delegate_; 3803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) int client_count_; 39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DISALLOW_COPY_AND_ASSIGN(DevToolsManager); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif // CONTENT_BROWSER_DEVTOOLS_DEVTOOLS_MANAGER_H_ 46