1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2009 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_DEBUGGER_DEVTOOLS_CLIENT_HOST_H_ 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_DEBUGGER_DEVTOOLS_CLIENT_HOST_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include <string> 1072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/basictypes.h" 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace IPC { 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Message; 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass DevToolsWindow; 1872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenclass TabContentsWrapper; 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Describes interface for managing devtools clients from browser process. There 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// are currently two types of clients: devtools windows and TCP socket 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// debuggers. 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass DevToolsClientHost { 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch class CloseListener { 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CloseListener() {} 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual ~CloseListener() {} 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void ClientHostClosing(DevToolsClientHost* host) = 0; 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DISALLOW_COPY_AND_ASSIGN(CloseListener); 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }; 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual ~DevToolsClientHost() {} 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // This method is called when tab inspected by this devtools client is 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // closing. 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void InspectedTabClosing() = 0; 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 4072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // This method is called when tab inspected by this devtools client is 4172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // navigating to |url|. 4272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen virtual void FrameNavigating(const std::string& url) = 0; 4372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Sends the message to the devtools client hosted by this object. 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void SendMessageToClient(const IPC::Message& msg) = 0; 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void set_close_listener(CloseListener* listener) { 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch close_listener_ = listener; 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen virtual DevToolsWindow* AsDevToolsWindow(); 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // Invoked when a tab is replaced by another tab. This is triggered by 5472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // TabStripModel::ReplaceTabContentsAt. 5572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen virtual void TabReplaced(TabContentsWrapper* new_tab) = 0; 5672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected: 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DevToolsClientHost() : close_listener_(NULL) {} 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Should be called when the devtools client is going to die and this 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // DevToolsClientHost should not be used anymore. 6221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen void NotifyCloseListener(); 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CloseListener* close_listener_; 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DISALLOW_COPY_AND_ASSIGN(DevToolsClientHost); 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // CHROME_BROWSER_DEBUGGER_DEVTOOLS_CLIENT_HOST_H_ 70