summaryrefslogtreecommitdiffstats
path: root/src/core/dev_tools_http_handler_delegate_qt.cpp
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2017-01-09 16:43:38 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2017-03-01 12:06:23 +0000
commitb1ba710d5745e57a4ed88bea799b819817d04b8b (patch)
tree092f6b9e10276e8a56cab79a98ea402ad86c7168 /src/core/dev_tools_http_handler_delegate_qt.cpp
parentab94349cb2fa073e8aec661a797de1cfc3819752 (diff)
Adapt devtools to Chromium 55
A restructuring of all our devtools integration classes. Change-Id: I2a32b9b2e66c17b72aaa3bbf246a22d211409aa5 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'src/core/dev_tools_http_handler_delegate_qt.cpp')
-rw-r--r--src/core/dev_tools_http_handler_delegate_qt.cpp183
1 files changed, 59 insertions, 124 deletions
diff --git a/src/core/dev_tools_http_handler_delegate_qt.cpp b/src/core/dev_tools_http_handler_delegate_qt.cpp
index 5fd35ee29..468c5f05f 100644
--- a/src/core/dev_tools_http_handler_delegate_qt.cpp
+++ b/src/core/dev_tools_http_handler_delegate_qt.cpp
@@ -53,11 +53,10 @@
#include "base/memory/ptr_util.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/utf_string_conversions.h"
-#include "components/devtools_discovery/devtools_discovery_manager.h"
-#include "components/devtools_discovery/devtools_target_descriptor.h"
-#include "components/devtools_http_handler/devtools_http_handler.h"
+#include "content/browser/devtools/devtools_http_handler.h"
#include "content/public/browser/devtools_agent_host.h"
#include "content/public/browser/devtools_frontend_host.h"
+#include "content/public/browser/devtools_socket_factory.h"
#include "content/public/browser/favicon_status.h"
#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/render_view_host.h"
@@ -69,30 +68,26 @@
#include "net/socket/tcp_server_socket.h"
using namespace content;
-using namespace devtools_discovery;
-using namespace devtools_http_handler;
namespace {
-const char kTargetTypePage[] = "page";
-const char kTargetTypeSharedWorker[] = "worker";
-const char kTargetTypeServiceWorker[] = "service_worker";
-const char kTargetTypeOther[] = "other";
-
-class TCPServerSocketFactory
- : public DevToolsHttpHandler::ServerSocketFactory {
+class TCPServerSocketFactory : public content::DevToolsSocketFactory {
public:
TCPServerSocketFactory(const std::string& address, int port, int backlog)
: m_address(address), m_port(port), m_backlog(backlog)
{}
private:
std::unique_ptr<net::ServerSocket> CreateForHttpServer() override {
- std::unique_ptr<net::ServerSocket> socket(new net::TCPServerSocket(nullptr, net::NetLog::Source()));
+ std::unique_ptr<net::ServerSocket> socket(new net::TCPServerSocket(nullptr, net::NetLogSource()));
if (socket->ListenWithAddressAndPort(m_address, m_port, m_backlog) != net::OK)
return std::unique_ptr<net::ServerSocket>();
return socket;
}
+ std::unique_ptr<net::ServerSocket> CreateForTethering(std::string* out_name) override
+ {
+ return nullptr;
+ }
const std::string m_address;
int m_port;
@@ -100,103 +95,23 @@ private:
DISALLOW_COPY_AND_ASSIGN(TCPServerSocketFactory);
};
-class DevToolsDiscoveryProviderQt : public DevToolsDiscoveryManager::Provider {
-public:
- DevToolsTargetDescriptor::List GetDescriptors() override;
-};
-
-class Target : public DevToolsTargetDescriptor {
-public:
- explicit Target(scoped_refptr<DevToolsAgentHost> agent_host);
-
- virtual std::string GetId() const override { return agent_host_->GetId(); }
- virtual std::string GetParentId() const override { return std::string(); }
- virtual std::string GetType() const override {
- switch (agent_host_->GetType()) {
- case DevToolsAgentHost::TYPE_WEB_CONTENTS:
- return kTargetTypePage;
- case DevToolsAgentHost::TYPE_SHARED_WORKER:
- return kTargetTypeSharedWorker;
- case DevToolsAgentHost::TYPE_SERVICE_WORKER:
- return kTargetTypeServiceWorker;
- default:
- break;
- }
- return kTargetTypeOther;
- }
- virtual std::string GetTitle() const override { return agent_host_->GetTitle(); }
- virtual std::string GetDescription() const override { return std::string(); }
- virtual GURL GetURL() const override { return agent_host_->GetURL(); }
- virtual GURL GetFaviconURL() const override { return favicon_url_; }
- virtual base::TimeTicks GetLastActivityTime() const override {
- return last_activity_time_;
- }
- virtual bool IsAttached() const override {
- return agent_host_->IsAttached();
- }
- virtual scoped_refptr<DevToolsAgentHost> GetAgentHost() const override {
- return agent_host_;
- }
- virtual bool Activate() const override;
- virtual bool Close() const override;
-
-private:
- scoped_refptr<DevToolsAgentHost> agent_host_;
- GURL favicon_url_;
- base::TimeTicks last_activity_time_;
-};
-
-Target::Target(scoped_refptr<DevToolsAgentHost> agent_host)
- : agent_host_(agent_host)
-{
- if (WebContents* web_contents = agent_host_->GetWebContents()) {
- NavigationController& controller = web_contents->GetController();
- NavigationEntry* entry = controller.GetActiveEntry();
- if (entry != NULL && entry->GetURL().is_valid())
- favicon_url_ = entry->GetFavicon().url;
- last_activity_time_ = web_contents->GetLastActiveTime();
- }
-}
-
-bool Target::Activate() const {
- return agent_host_->Activate();
-}
-
-bool Target::Close() const {
- return agent_host_->Close();
-}
-
-DevToolsTargetDescriptor::List DevToolsDiscoveryProviderQt::GetDescriptors()
-{
- DevToolsTargetDescriptor::List targets;
- for (const auto& agent_host : DevToolsAgentHost::GetOrCreateAll()) {
- targets.push_back(new Target(agent_host));
- }
- return targets;
-}
-
} // namespace
namespace QtWebEngineCore {
-std::unique_ptr<DevToolsHttpHandler> createDevToolsHttpHandler()
-{
- DevToolsHttpHandlerDelegateQt *delegate = new DevToolsHttpHandlerDelegateQt();
- if (!delegate->isValid()) {
- delete delegate;
- return nullptr;
- }
- std::unique_ptr<DevToolsHttpHandler::ServerSocketFactory> factory(new TCPServerSocketFactory(delegate->bindAddress().toStdString(), delegate->port(), 1));
- // Ownership of the delegate is taken over the devtools http handler.
- std::unique_ptr<DevToolsHttpHandler> handler(new DevToolsHttpHandler(std::move(factory), std::string(), delegate, base::FilePath(), base::FilePath(), std::string(), std::string()));
- DevToolsDiscoveryManager::GetInstance()->AddProvider(base::WrapUnique(new DevToolsDiscoveryProviderQt()));
- return std::move(handler);
-}
-
-DevToolsHttpHandlerDelegateQt::DevToolsHttpHandlerDelegateQt()
+DevToolsServerQt::DevToolsServerQt()
: m_bindAddress(QLatin1String("127.0.0.1"))
, m_port(0)
, m_valid(false)
+ , m_isStarted(false)
+{ }
+
+DevToolsServerQt::~DevToolsServerQt()
+{
+ stop();
+}
+
+void DevToolsServerQt::parseAddressAndPort()
{
const QString inspectorEnv = QString::fromUtf8(qgetenv("QTWEBENGINE_REMOTE_DEBUGGING"));
const base::CommandLine &commandLine = *base::CommandLine::ForCurrentProcess();
@@ -215,21 +130,56 @@ DevToolsHttpHandlerDelegateQt::DevToolsHttpHandlerDelegateQt()
return;
m_port = portStr.toInt(&m_valid);
- m_valid = m_valid && m_port > 0 && m_port < 65535;
+ m_valid = m_valid && (m_port > 0 && m_port < 65535);
if (!m_valid)
qWarning("Invalid port given for the inspector server \"%s\". Examples of valid input: \"12345\" or \"192.168.2.14:12345\" (with the address of one of this host's network interface).", qPrintable(portStr));
}
-void DevToolsHttpHandlerDelegateQt::Initialized(const net::IPEndPoint *ip_address)
+std::unique_ptr<content::DevToolsSocketFactory> DevToolsServerQt::CreateSocketFactory()
+{
+ if (!m_valid)
+ return nullptr;
+ return std::unique_ptr<content::DevToolsSocketFactory>(
+ new TCPServerSocketFactory(m_bindAddress.toStdString(), m_port, 1));
+}
+
+
+void DevToolsServerQt::start()
+{
+ if (m_isStarted)
+ return;
+
+ if (!m_valid)
+ parseAddressAndPort();
+
+ std::unique_ptr<content::DevToolsSocketFactory> socketFactory = CreateSocketFactory();
+ if (!socketFactory)
+ return;
+
+ m_isStarted = true;
+ DevToolsAgentHost::StartRemoteDebuggingServer(
+ std::move(socketFactory), std::string(),
+ base::FilePath(), base::FilePath(),
+ std::string(), std::string());
+}
+
+void DevToolsServerQt::stop()
+{
+ DevToolsAgentHost::StopRemoteDebuggingServer();
+ m_isStarted = false;
+}
+
+void DevToolsManagerDelegateQt::Initialized(const net::IPEndPoint *ip_address)
{
if (ip_address && ip_address->address().size()) {
QString addressAndPort = QString::fromStdString(ip_address->ToString());
qWarning("Remote debugging server started successfully. Try pointing a Chromium-based browser to http://%s", qPrintable(addressAndPort));
- } else
- qWarning("Couldn't start the inspector server on bind address \"%s\" and port \"%d\". In case of invalid input, try something like: \"12345\" or \"192.168.2.14:12345\" (with the address of one of this host's interface).", qPrintable(m_bindAddress), m_port);
+ }
+ else
+ qWarning("Couldn't start the inspector server on bind address. In case of invalid input, try something like: \"12345\" or \"192.168.2.14:12345\" (with the address of one of this host's interface).");
}
-std::string DevToolsHttpHandlerDelegateQt::GetDiscoveryPageHTML()
+std::string DevToolsManagerDelegateQt::GetDiscoveryPageHTML()
{
static std::string html;
if (html.empty()) {
@@ -241,24 +191,9 @@ std::string DevToolsHttpHandlerDelegateQt::GetDiscoveryPageHTML()
return html;
}
-std::string DevToolsHttpHandlerDelegateQt::GetPageThumbnailData(const GURL& url)
-{
- return std::string();
-}
-
-std::string DevToolsHttpHandlerDelegateQt::GetFrontendResource(const std::string &path)
+std::string DevToolsManagerDelegateQt::GetFrontendResource(const std::string& path)
{
return content::DevToolsFrontendHost::GetFrontendResource(path).as_string();
}
-content::DevToolsExternalAgentProxyDelegate* DevToolsHttpHandlerDelegateQt::HandleWebSocketConnection(const std::string&)
-{
- return 0;
-}
-
-base::DictionaryValue* DevToolsManagerDelegateQt::HandleCommand(DevToolsAgentHost *, base::DictionaryValue *)
-{
- return 0;
-}
-
} //namespace QtWebEngineCore