1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 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// A part of browser-side server debugger exposed to DebuggerWrapper.
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_DEBUGGER_DEBUGGER_HOST_H_
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_DEBUGGER_DEBUGGER_HOST_H_
93345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string>
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/basictypes.h"
14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/ref_counted.h"
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ListValue;
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass DebuggerHost : public base::RefCountedThreadSafe<DebuggerHost> {
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DebuggerHost() {}
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual ~DebuggerHost() {}
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // call before other methods
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void Start() = 0;
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // A message from the V8 debugger in the renderer being debugged via
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // RenderViewHost
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void DebugMessage(const std::wstring& msg) = 0;
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // We've been successfully attached to a renderer.
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void OnDebugAttach() = 0;
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // The renderer we're attached to is gone.
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void OnDebugDisconnect() = 0;
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void DidDisconnect() = 0;
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void DidConnect() {}
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void ProcessCommand(const std::wstring& data) {}
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Handles messages from debugger UI.
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void OnDebuggerHostMsg(const ListValue* args) {}
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Shows the debugger UI and returns true if it has any.
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual bool ShowWindow() { return false; }
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private:
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DISALLOW_COPY_AND_ASSIGN(DebuggerHost);
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif  // CHROME_BROWSER_DEBUGGER_DEBUGGER_HOST_H_
50