summaryrefslogtreecommitdiffstats
path: root/src/core/web_contents_adapter.cpp
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2017-09-12 14:56:22 +0200
committerMichael BrĂ¼ning <michael.bruning@qt.io>2017-12-06 15:02:13 +0000
commit481155893fd85b4b0770397375ceaf520fcf9db6 (patch)
tree84727f5b93c31debe246995b0072ef1b818e3ef1 /src/core/web_contents_adapter.cpp
parent1c6cacf3020c0c201cd484ba165126123046e53b (diff)
Introduce devtools frontend
Makes it possible to use devtools without using the remote-debugger Task-number: QTBUG-47899 Task-number: QTBUG-50725 Task-number: QTBUG-50766 Change-Id: Id32e13f773372d9917599ebbb64ab4af61bbf1d8 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'src/core/web_contents_adapter.cpp')
-rw-r--r--src/core/web_contents_adapter.cpp45
1 files changed, 42 insertions, 3 deletions
diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp
index 68481dccc..515981b1b 100644
--- a/src/core/web_contents_adapter.cpp
+++ b/src/core/web_contents_adapter.cpp
@@ -48,6 +48,7 @@
#include "browser_context_adapter.h"
#include "browser_context_adapter_client.h"
#include "browser_context_qt.h"
+#include "devtools_frontend_qt.h"
#include "download_manager_delegate_qt.h"
#include "media_capture_devices_dispatcher.h"
#include "print_view_manager_qt.h"
@@ -359,6 +360,7 @@ WebContentsAdapterPrivate::WebContentsAdapterPrivate()
, nextRequestId(CallbackDirectory::ReservedCallbackIdsEnd)
, lastFindRequestId(0)
, currentDropAction(blink::kWebDragOperationNone)
+ , devToolsFrontend(nullptr)
{
}
@@ -1035,19 +1037,56 @@ void WebContentsAdapter::executeMediaPlayerActionAt(const QPoint &location, Medi
void WebContentsAdapter::inspectElementAt(const QPoint &location)
{
Q_D(WebContentsAdapter);
- if (content::DevToolsAgentHost::HasFor(d->webContents.get())) {
- content::DevToolsAgentHost::GetOrCreateFor(d->webContents.get())->InspectElement(nullptr, location.x(), location.y());
+ if (d->devToolsFrontend) {
+ d->devToolsFrontend->InspectElementAt(location.x(), location.y());
+ return;
}
+ if (content::DevToolsAgentHost::HasFor(d->webContents.get()))
+ content::DevToolsAgentHost::GetOrCreateFor(d->webContents.get())->InspectElement(nullptr, location.x(), location.y());
}
bool WebContentsAdapter::hasInspector() const
{
- const Q_D(WebContentsAdapter);
+ Q_D(const WebContentsAdapter);
+ if (d->devToolsFrontend)
+ return true;
if (content::DevToolsAgentHost::HasFor(d->webContents.get()))
return content::DevToolsAgentHost::GetOrCreateFor(d->webContents.get())->IsAttached();
return false;
}
+void WebContentsAdapter::openDevToolsFrontend(QSharedPointer<WebContentsAdapter> frontendAdapter)
+{
+ Q_D(WebContentsAdapter);
+ if (d->devToolsFrontend &&
+ d->devToolsFrontend->frontendDelegate() == frontendAdapter->webContents()->GetDelegate())
+ return;
+
+ if (d->devToolsFrontend) {
+ d->devToolsFrontend->DisconnectFromTarget();
+ d->devToolsFrontend->Close();
+ }
+
+ d->devToolsFrontend = DevToolsFrontendQt::Show(frontendAdapter, d->webContents.get());
+}
+
+void WebContentsAdapter::closeDevToolsFrontend()
+{
+ Q_D(WebContentsAdapter);
+ if (d->devToolsFrontend) {
+ d->devToolsFrontend->DisconnectFromTarget();
+ d->devToolsFrontend->Close();
+ }
+}
+
+void WebContentsAdapter::devToolsFrontendDestroyed(DevToolsFrontendQt *frontend)
+{
+ Q_D(WebContentsAdapter);
+ Q_ASSERT(frontend == d->devToolsFrontend);
+ Q_UNUSED(frontend);
+ d->devToolsFrontend = nullptr;
+}
+
void WebContentsAdapter::exitFullScreen()
{
Q_D(WebContentsAdapter);