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_
|