1// Copyright 2014 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_PUBLIC_BROWSER_DEVTOOLS_MANAGER_DELEGATE_H_
6#define CONTENT_PUBLIC_BROWSER_DEVTOOLS_MANAGER_DELEGATE_H_
7
8#include <string>
9#include <vector>
10
11#include "base/callback.h"
12
13namespace base {
14class DictionaryValue;
15}
16
17class GURL;
18
19namespace content {
20
21class BrowserContext;
22class DevToolsAgentHost;
23class DevToolsTarget;
24
25class DevToolsManagerDelegate {
26 public:
27  virtual ~DevToolsManagerDelegate() {}
28
29  // Opens the inspector for |agent_host|.
30  virtual void Inspect(BrowserContext* browser_context,
31                       DevToolsAgentHost* agent_host) = 0;
32
33  virtual void DevToolsAgentStateChanged(DevToolsAgentHost* agent_host,
34                                         bool attached) = 0;
35
36  // Result ownership is passed to the caller.
37  virtual base::DictionaryValue* HandleCommand(
38      DevToolsAgentHost* agent_host,
39      base::DictionaryValue* command) = 0;
40
41  // Creates new inspectable target.
42  virtual scoped_ptr<DevToolsTarget> CreateNewTarget(const GURL& url) = 0;
43
44  typedef std::vector<DevToolsTarget*> TargetList;
45  typedef base::Callback<void(const TargetList&)> TargetCallback;
46
47  // Requests the list of all inspectable targets.
48  // The caller gets the ownership of the returned targets.
49  virtual void EnumerateTargets(TargetCallback callback) = 0;
50
51  // Get a thumbnail for a given page. Returns non-empty string iff we have the
52  // thumbnail.
53  virtual std::string GetPageThumbnailData(const GURL& url) = 0;
54};
55
56}  // namespace content
57
58#endif  // CONTENT_PUBLIC_BROWSER_DEVTOOLS_MANAGER_DELEGATE_H_
59