diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp index cb9cb012bf2cdef5c71b02aed935516ba1825683..1e0d261da882c552e613961d9c41f4912eba3ea4 100644 --- a/src/core/web_contents_adapter.cpp +++ b/src/core/web_contents_adapter.cpp @@ -58,6 +58,7 @@ #include "content/browser/renderer_host/render_view_host_impl.h" #include "content/browser/web_contents/web_contents_impl.h" #include "content/public/browser/child_process_security_policy.h" +#include "content/public/browser/devtools_agent_host.h" #include <content/public/browser/download_manager.h> #include "content/public/browser/host_zoom_map.h" #include "content/public/browser/navigation_entry.h" @@ -791,6 +792,14 @@ void WebContentsAdapter::executeMediaPlayerActionAt(const QPoint &location, Medi d->webContents->GetRenderViewHost()->ExecuteMediaPlayerActionAtLocation(toGfx(location), blinkAction); } +void WebContentsAdapter::inspectElementAt(const QPoint &location) +{ + Q_D(WebContentsAdapter); + if (content::DevToolsAgentHost::HasFor(d->webContents.get())) { + content::DevToolsAgentHost::GetOrCreateFor(d->webContents.get())->InspectElement(location.x(), location.y()); + } +} + void WebContentsAdapter::wasShown() { Q_D(WebContentsAdapter); diff --git a/src/core/web_contents_adapter.h b/src/core/web_contents_adapter.h index 902cc61ffaf522c1247ad5c110bcd318cbfd3195..1e78f8e775a4187d9bb92b8416cadc5ccb716d04 100644 --- a/src/core/web_contents_adapter.h +++ b/src/core/web_contents_adapter.h @@ -125,6 +125,8 @@ public: void copyImageAt(const QPoint &location); void executeMediaPlayerActionAt(const QPoint &location, MediaPlayerAction action, bool enable); + void inspectElementAt(const QPoint &location); + void wasShown(); void wasHidden(); void grantMediaAccessPermission(const QUrl &securityOrigin, WebContentsAdapterClient::MediaRequestFlags flags); diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index 45bb5a140ed454eb4c6898e51f247cfc6ea71c90..9a8a6ccb39da60995ed95b07e1981c27bd2194f2 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -1289,6 +1289,9 @@ void QQuickWebEngineView::triggerWebAction(WebAction action) d->adapter->executeMediaPlayerActionAt(d->contextMenuData.pos, WebContentsAdapter::MediaPlayerMute, enable); } break; + case InspectElement: + d->adapter->inspectElementAt(d->contextMenuData.pos); + break; default: Q_UNREACHABLE(); } diff --git a/src/webengine/api/qquickwebengineview_p.h b/src/webengine/api/qquickwebengineview_p.h index 5b99dc3e2339d69ca4a0943ed67b9191a9132a34..934303722f921d1d097eb8becc76a69d100df9d5 100644 --- a/src/webengine/api/qquickwebengineview_p.h +++ b/src/webengine/api/qquickwebengineview_p.h @@ -223,6 +223,8 @@ public: ToggleMediaMute, DownloadMediaToDisk, + InspectElement, + WebActionCount }; diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index e7d4e60e50a82246c13d0e29b2d44be1a73fa143..dd96c38903f5c25aa1aa0a4cc3973fe4006cfc2d 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -591,6 +591,9 @@ QAction *QWebEnginePage::action(WebAction action) const case DownloadMediaToDisk: text = tr("Download Media"); break; + case InspectElement: + text = tr("Inspect Element"); + break; default: break; } @@ -755,6 +758,9 @@ void QWebEnginePage::triggerAction(WebAction action, bool) d->adapter->executeMediaPlayerActionAt(d->m_menuData.pos, WebContentsAdapter::MediaPlayerMute, enable); } break; + case InspectElement: + d->adapter->inspectElementAt(d->m_menuData.pos); + break; default: Q_UNREACHABLE(); } diff --git a/src/webenginewidgets/api/qwebenginepage.h b/src/webenginewidgets/api/qwebenginepage.h index 422a4a8ad833b4e6a1ff643e19192664b9b01f77..1753cd75ac0ca8751b6294a1773ea1f4f397f831 100644 --- a/src/webenginewidgets/api/qwebenginepage.h +++ b/src/webenginewidgets/api/qwebenginepage.h @@ -106,6 +106,8 @@ public: ToggleMediaMute, DownloadMediaToDisk, + InspectElement, + WebActionCount };