1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file.
4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef CONTENT_PUBLIC_BROWSER_DEVTOOLS_MANAGER_DELEGATE_H_
6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#define CONTENT_PUBLIC_BROWSER_DEVTOOLS_MANAGER_DELEGATE_H_
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <string>
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <vector>
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/callback.h"
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace base {
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class DictionaryValue;
15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass GURL;
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace content {
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class BrowserContext;
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class DevToolsAgentHost;
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass DevToolsTarget;
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class DevToolsManagerDelegate {
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public:
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual ~DevToolsManagerDelegate() {}
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Opens the inspector for |agent_host|.
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual void Inspect(BrowserContext* browser_context,
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                       DevToolsAgentHost* agent_host) = 0;
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void DevToolsAgentStateChanged(DevToolsAgentHost* agent_host,
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                                         bool attached) = 0;
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Result ownership is passed to the caller.
37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual base::DictionaryValue* HandleCommand(
38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      DevToolsAgentHost* agent_host,
39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      base::DictionaryValue* command) = 0;
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Creates new inspectable target.
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual scoped_ptr<DevToolsTarget> CreateNewTarget(const GURL& url) = 0;
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  typedef std::vector<DevToolsTarget*> TargetList;
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  typedef base::Callback<void(const TargetList&)> TargetCallback;
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Requests the list of all inspectable targets.
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // The caller gets the ownership of the returned targets.
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual void EnumerateTargets(TargetCallback callback) = 0;
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Get a thumbnail for a given page. Returns non-empty string iff we have the
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // thumbnail.
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual std::string GetPageThumbnailData(const GURL& url) = 0;
54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace content
57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif  // CONTENT_PUBLIC_BROWSER_DEVTOOLS_MANAGER_DELEGATE_H_
59