File: devtools_embedder_message_dispatcher.h

package info (click to toggle)
chromium 139.0.7258.127-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 6,122,068 kB
  • sloc: cpp: 35,100,771; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (160 lines) | stat: -rw-r--r-- 7,733 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_DEVTOOLS_DEVTOOLS_EMBEDDER_MESSAGE_DISPATCHER_H_
#define CHROME_BROWSER_DEVTOOLS_DEVTOOLS_EMBEDDER_MESSAGE_DISPATCHER_H_

#include <map>
#include <memory>
#include <string>

#include "base/functional/callback.h"
#include "base/values.h"
#include "ui/gfx/geometry/insets.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/geometry/size.h"

struct RegisterOptions;
struct ImpressionEvent;
struct ResizeEvent;
struct ClickEvent;
struct HoverEvent;
struct DragEvent;
struct ChangeEvent;
struct KeyDownEvent;
struct SettingAccessEvent;
struct FunctionCallEvent;

/**
 * Dispatcher for messages sent from the DevTools frontend running in an
 * isolated renderer (on devtools://) to the embedder in the browser.
 *
 * The messages are sent via InspectorFrontendHost.sendMessageToEmbedder method.
 */
class DevToolsEmbedderMessageDispatcher {
 public:
  class Delegate {
   public:
    using DispatchCallback = base::OnceCallback<void(const base::Value*)>;

    virtual ~Delegate() = default;

    virtual void ActivateWindow() = 0;
    virtual void CloseWindow() = 0;
    virtual void LoadCompleted() = 0;
    virtual void SetInspectedPageBounds(const gfx::Rect& rect) = 0;
    virtual void InspectElementCompleted() = 0;
    virtual void InspectedURLChanged(const std::string& url) = 0;
    virtual void SetIsDocked(DispatchCallback callback, bool is_docked) = 0;
    virtual void OpenInNewTab(const std::string& url) = 0;
    virtual void OpenSearchResultsInNewTab(const std::string& query) = 0;
    virtual void ShowItemInFolder(const std::string& file_system_path) = 0;
    virtual void SaveToFile(const std::string& url,
                            const std::string& content,
                            bool save_as,
                            bool is_base64) = 0;
    virtual void AppendToFile(const std::string& url,
                              const std::string& content) = 0;
    virtual void RequestFileSystems() = 0;
    virtual void AddFileSystem(const std::string& type) = 0;
    virtual void RemoveFileSystem(const std::string& file_system_path) = 0;
    virtual void UpgradeDraggedFileSystemPermissions(
        const std::string& file_system_url) = 0;
    virtual void ConnectAutomaticFileSystem(DispatchCallback callback,
                                            const std::string& file_system_path,
                                            const std::string& file_system_uuid,
                                            bool add_if_missing) = 0;
    virtual void DisconnectAutomaticFileSystem(
        const std::string& file_system_path) = 0;
    virtual void IndexPath(int index_request_id,
                           const std::string& file_system_path,
                           const std::string& excluded_folders) = 0;
    virtual void StopIndexing(int index_request_id) = 0;
    virtual void LoadNetworkResource(DispatchCallback callback,
                                     const std::string& url,
                                     const std::string& headers,
                                     int stream_id) = 0;
    virtual void SearchInPath(int search_request_id,
                              const std::string& file_system_path,
                              const std::string& query) = 0;
    virtual void SetWhitelistedShortcuts(const std::string& message) = 0;
    virtual void SetEyeDropperActive(bool active) = 0;
    virtual void ShowCertificateViewer(const std::string& cert_chain) = 0;
    virtual void ZoomIn() = 0;
    virtual void ZoomOut() = 0;
    virtual void ResetZoom() = 0;
    virtual void SetDevicesUpdatesEnabled(bool enabled) = 0;
    virtual void SetDevicesDiscoveryConfig(
        bool discover_usb_devices,
        bool port_forwarding_enabled,
        const std::string& port_forwarding_config,
        bool network_discovery_enabled,
        const std::string& network_discovery_config) = 0;
    virtual void OpenRemotePage(const std::string& browser_id,
                                const std::string& url) = 0;
    virtual void OpenNodeFrontend() = 0;
    virtual void RegisterPreference(const std::string& name,
                                    const RegisterOptions& options) = 0;
    virtual void GetPreferences(DispatchCallback callback) = 0;
    virtual void GetPreference(DispatchCallback callback,
                               const std::string& name) = 0;
    virtual void SetPreference(const std::string& name,
                               const std::string& value) = 0;
    virtual void RemovePreference(const std::string& name) = 0;
    virtual void ClearPreferences() = 0;
    virtual void GetSyncInformation(DispatchCallback callback) = 0;
    virtual void GetHostConfig(DispatchCallback callback) = 0;
    virtual void DispatchProtocolMessageFromDevToolsFrontend(
        const std::string& message) = 0;
    virtual void RecordCountHistogram(const std::string& name,
                                      int sample,
                                      int min,
                                      int exclusive_max,
                                      int buckets) = 0;
    virtual void RecordEnumeratedHistogram(const std::string& name,
                                           int sample,
                                           int boundary_value) = 0;
    virtual void RecordPerformanceHistogram(const std::string& name,
                                            double duration) = 0;
    virtual void RecordPerformanceHistogramMedium(const std::string& name,
                                                  double duration) = 0;
    virtual void RecordUserMetricsAction(const std::string& name) = 0;
    virtual void RecordImpression(const ImpressionEvent& event) = 0;
    virtual void RecordResize(const ResizeEvent& event) = 0;
    virtual void RecordClick(const ClickEvent& event) = 0;
    virtual void RecordHover(const HoverEvent& event) = 0;
    virtual void RecordDrag(const DragEvent& event) = 0;
    virtual void RecordChange(const ChangeEvent& event) = 0;
    virtual void RecordKeyDown(const KeyDownEvent& event) = 0;
    virtual void RecordSettingAccess(const SettingAccessEvent& event) = 0;
    virtual void RecordFunctionCall(const FunctionCallEvent& event) = 0;
    virtual void Reattach(DispatchCallback callback) = 0;
    virtual void ReadyForTest() = 0;
    virtual void ConnectionReady() = 0;
    virtual void SetOpenNewWindowForPopups(bool value) = 0;
    virtual void RegisterExtensionsAPI(const std::string& origin,
                                       const std::string& script) = 0;
    virtual void ShowSurvey(DispatchCallback callback,
                            const std::string& trigger) = 0;
    virtual void CanShowSurvey(DispatchCallback callback,
                               const std::string& trigger) = 0;
    virtual void DoAidaConversation(DispatchCallback callback,
                                    const std::string& request,
                                    int stream_id) = 0;
    virtual void RegisterAidaClientEvent(DispatchCallback callback,
                                         const std::string& request) = 0;
  };

  using DispatchCallback = Delegate::DispatchCallback;

  virtual ~DevToolsEmbedderMessageDispatcher() = default;
  virtual bool Dispatch(DispatchCallback callback,
                        const std::string& method,
                        const base::Value::List& params) = 0;

  static std::unique_ptr<DevToolsEmbedderMessageDispatcher>
  CreateForDevToolsFrontend(Delegate* delegate);
};

#endif  // CHROME_BROWSER_DEVTOOLS_DEVTOOLS_EMBEDDER_MESSAGE_DISPATCHER_H_