blob: a4c15b605644542a98e797d758702bad5b12ec5f [file] [log] [blame]
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/ui_devtools/views/devtools_server_util.h"
#include <memory>
#include <utility>
#include "base/memory/scoped_refptr.h"
#include "base/task/single_thread_task_runner.h"
#include "components/ui_devtools/css_agent.h"
#include "components/ui_devtools/devtools_server.h"
#include "components/ui_devtools/page_agent.h"
#include "components/ui_devtools/switches.h"
#include "components/ui_devtools/tracing_agent.h"
#include "components/ui_devtools/views/dom_agent_views.h"
#include "components/ui_devtools/views/overlay_agent_views.h"
#include "components/ui_devtools/views/page_agent_views.h"
namespace ui_devtools {
std::unique_ptr<UiDevToolsServer> CreateUiDevToolsServerForViews(
scoped_refptr<base::SingleThreadTaskRunner> io_thread_task_runner,
std::unique_ptr<ConnectorDelegate> connector,
const base::FilePath& active_port_output_directory) {
constexpr int kUiDevToolsDefaultPort = 9223;
int port = UiDevToolsServer::GetUiDevToolsPort(switches::kEnableUiDevTools,
kUiDevToolsDefaultPort);
auto server = UiDevToolsServer::CreateForViews(
std::move(io_thread_task_runner), port, active_port_output_directory);
DCHECK(server);
auto client =
std::make_unique<UiDevToolsClient>("UiDevToolsClient", server.get());
auto dom_agent_views = DOMAgentViews::Create();
auto* dom_agent_views_ptr = dom_agent_views.get();
client->AddAgent(std::make_unique<PageAgentViews>(dom_agent_views_ptr));
client->AddAgent(std::move(dom_agent_views));
client->AddAgent(std::make_unique<CSSAgent>(dom_agent_views_ptr));
client->AddAgent(OverlayAgentViews::Create(dom_agent_views_ptr));
auto tracing_agent = std::make_unique<TracingAgent>(std::move(connector));
server->set_tracing_agent(tracing_agent.get());
client->AddAgent(std::move(tracing_agent));
server->AttachClient(std::move(client));
return server;
}
} // namespace ui_devtools