#ifndef CHROME_BROWSER_ANDROID_DEVTOOLS_MANAGER_DELEGATE_ANDROID_H_
#define CHROME_BROWSER_ANDROID_DEVTOOLS_MANAGER_DELEGATE_ANDROID_H_
#include <memory>
#include "base/containers/flat_map.h"
#include "content/public/browser/devtools_agent_host_observer.h"
#include "content/public/browser/devtools_manager_delegate.h"
class ChromeDevToolsSessionAndroid;
class DevToolsManagerDelegateAndroid : public content::DevToolsManagerDelegate {
public:
DevToolsManagerDelegateAndroid();
DevToolsManagerDelegateAndroid(const DevToolsManagerDelegateAndroid&) =
delete;
DevToolsManagerDelegateAndroid& operator=(
const DevToolsManagerDelegateAndroid&) = delete;
~DevToolsManagerDelegateAndroid() override;
static void MarkCreatedByDevTools(content::WebContents& web_contents);
static bool IsCreatedByDevTools(const content::WebContents& web_contents);
private:
content::BrowserContext* GetDefaultBrowserContext() override;
std::string GetTargetType(content::WebContents* web_contents) override;
content::DevToolsAgentHost::List RemoteDebuggingTargets(
TargetType target_type) override;
bool IsBrowserTargetDiscoverable() override;
void HandleCommand(content::DevToolsAgentHostClientChannel* channel,
base::span<const uint8_t> message,
NotHandledCallback callback) override;
void ClientAttached(
content::DevToolsAgentHostClientChannel* channel) override;
void ClientDetached(
content::DevToolsAgentHostClientChannel* channel) override;
base::flat_map<content::DevToolsAgentHostClientChannel*,
std::unique_ptr<ChromeDevToolsSessionAndroid>>
sessions_;
};
#endif