diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2017-09-12 14:56:22 +0200 |
---|---|---|
committer | Michael BrĂ¼ning <michael.bruning@qt.io> | 2017-12-06 15:02:13 +0000 |
commit | 481155893fd85b4b0770397375ceaf520fcf9db6 (patch) | |
tree | 84727f5b93c31debe246995b0072ef1b818e3ef1 /src/core/web_contents_adapter.cpp | |
parent | 1c6cacf3020c0c201cd484ba165126123046e53b (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.cpp | 45 |
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); |