blob: 300cd2460080b721313de89470b085a6076d15cd [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef HEADLESS_LIB_BROWSER_HEADLESS_DEVTOOLS_MANAGER_DELEGATE_H_
#define HEADLESS_LIB_BROWSER_HEADLESS_DEVTOOLS_MANAGER_DELEGATE_H_
#include <map>
#include <memory>
#include <string>
#include "base/callback_forward.h"
#include "base/memory/weak_ptr.h"
#include "base/values.h"
#include "content/public/browser/devtools_manager_delegate.h"
namespace headless {
class HeadlessBrowserImpl;
class HeadlessDevToolsManagerDelegate
: public content::DevToolsManagerDelegate {
public:
explicit HeadlessDevToolsManagerDelegate(
base::WeakPtr<HeadlessBrowserImpl> browser);
~HeadlessDevToolsManagerDelegate() override;
// DevToolsManagerDelegate implementation:
base::DictionaryValue* HandleCommand(content::DevToolsAgentHost* agent_host,
base::DictionaryValue* command) override;
bool HandleAsyncCommand(content::DevToolsAgentHost* agent_host,
base::DictionaryValue* command,
const CommandCallback& callback) override;
scoped_refptr<content::DevToolsAgentHost> CreateNewTarget(
const GURL& url) override;
std::string GetDiscoveryPageHTML() override;
std::string GetFrontendResource(const std::string& path) override;
private:
std::unique_ptr<base::DictionaryValue> CreateTarget(
int command_id,
const base::DictionaryValue* params);
std::unique_ptr<base::DictionaryValue> CloseTarget(
int command_id,
const base::DictionaryValue* params);
std::unique_ptr<base::DictionaryValue> CreateBrowserContext(
int command_id,
const base::DictionaryValue* params);
std::unique_ptr<base::DictionaryValue> DisposeBrowserContext(
int command_id,
const base::DictionaryValue* params);
void PrintToPDF(content::DevToolsAgentHost* agent_host,
int command_id,
const base::DictionaryValue* params,
const CommandCallback& callback);
base::WeakPtr<HeadlessBrowserImpl> browser_;
using CommandMemberCallback =
base::Callback<std::unique_ptr<base::DictionaryValue>(
int command_id,
const base::DictionaryValue* params)>;
using AsyncCommandMemberCallback =
base::Callback<void(content::DevToolsAgentHost* agent_host,
int command_id,
const base::DictionaryValue* params,
const CommandCallback& callback)>;
std::map<std::string, CommandMemberCallback> command_map_;
std::map<std::string, AsyncCommandMemberCallback> async_command_map_;
};
} // namespace headless
#endif // HEADLESS_LIB_BROWSER_HEADLESS_DEVTOOLS_MANAGER_DELEGATE_H_