1// Copyright 2013 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 CHROME_BROWSER_DEVTOOLS_DEVTOOLS_EMBEDDER_MESSAGE_DISPATCHER_H_
6#define CHROME_BROWSER_DEVTOOLS_DEVTOOLS_EMBEDDER_MESSAGE_DISPATCHER_H_
7
8#include <map>
9#include <string>
10
11#include "base/callback.h"
12#include "ui/gfx/insets.h"
13#include "ui/gfx/rect.h"
14#include "ui/gfx/size.h"
15
16namespace base {
17class ListValue;
18}
19
20/**
21 * Dispatcher for messages sent from the DevTools frontend running in an
22 * isolated renderer (on chrome-devtools://) to the embedder in the browser.
23 *
24 * The messages are sent via InspectorFrontendHost.sendMessageToEmbedder method.
25 */
26class DevToolsEmbedderMessageDispatcher {
27 public:
28  class Delegate {
29   public:
30    virtual ~Delegate() {}
31
32    virtual void ActivateWindow() = 0;
33    virtual void CloseWindow() = 0;
34    virtual void SetInspectedPageBounds(const gfx::Rect& rect) = 0;
35    virtual void InspectElementCompleted() = 0;
36    virtual void InspectedURLChanged(const std::string& url) = 0;
37    virtual void MoveWindow(int x, int y) = 0;
38    virtual void SetIsDocked(bool is_docked) = 0;
39    virtual void OpenInNewTab(const std::string& url) = 0;
40    virtual void SaveToFile(const std::string& url,
41                            const std::string& content,
42                            bool save_as) = 0;
43    virtual void AppendToFile(const std::string& url,
44                              const std::string& content) = 0;
45    virtual void RequestFileSystems() = 0;
46    virtual void AddFileSystem() = 0;
47    virtual void RemoveFileSystem(const std::string& file_system_path) = 0;
48    virtual void UpgradeDraggedFileSystemPermissions(
49        const std::string& file_system_url) = 0;
50    virtual void IndexPath(int request_id,
51                           const std::string& file_system_path) = 0;
52    virtual void StopIndexing(int request_id) = 0;
53    virtual void SearchInPath(int request_id,
54                              const std::string& file_system_path,
55                              const std::string& query) = 0;
56    virtual void SetWhitelistedShortcuts(const std::string& message) = 0;
57    virtual void ZoomIn() = 0;
58    virtual void ZoomOut() = 0;
59    virtual void ResetZoom() = 0;
60    virtual void OpenUrlOnRemoteDeviceAndInspect(const std::string& browser_id,
61                                                 const std::string& url) = 0;
62
63    virtual void SetDeviceCountUpdatesEnabled(bool enabled) = 0;
64    virtual void SetDevicesUpdatesEnabled(bool enabled) = 0;
65    virtual void SendMessageToBrowser(const std::string& message) = 0;
66  };
67
68  virtual ~DevToolsEmbedderMessageDispatcher() {}
69  virtual bool Dispatch(const std::string& method,
70                        const base::ListValue* params,
71                        std::string* error) = 0;
72
73  static DevToolsEmbedderMessageDispatcher* createForDevToolsFrontend(
74      Delegate* delegate);
75};
76
77#endif  // CHROME_BROWSER_DEVTOOLS_DEVTOOLS_EMBEDDER_MESSAGE_DISPATCHER_H_
78