refactor: Remove remote debugging dependency and enhance DeveloperToolsWidget integration

This commit is contained in:
claudi 2026-03-30 09:16:09 +02:00
parent a135dd0d96
commit d6e0957797
3 changed files with 27 additions and 15 deletions

View file

@ -7,10 +7,6 @@ import sys
# This ensures CSS media queries (hover: hover) evaluate correctly for desktop applications # This ensures CSS media queries (hover: hover) evaluate correctly for desktop applications
os.environ["QTWEBENGINE_CHROMIUM_FLAGS"] = "--touch-events=disabled" os.environ["QTWEBENGINE_CHROMIUM_FLAGS"] = "--touch-events=disabled"
# Enable Qt WebEngine Remote Debugging Protocol (Chromium Developer Tools)
# Allows debugging via browser DevTools at http://localhost:9222 or edge://inspect
os.environ["QTWEBENGINE_REMOTE_DEBUGGING"] = "9222"
from PySide6.QtWidgets import QApplication from PySide6.QtWidgets import QApplication
from webdrop_bridge.config import Config, ConfigurationError from webdrop_bridge.config import Config, ConfigurationError

View file

@ -1,9 +1,13 @@
"""Developer Tools for WebDrop Bridge - using Chromium Remote Debugging Protocol.""" """Developer Tools for WebDrop Bridge.
Uses Qt WebEngine's built-in inspector wiring instead of the remote debugging
HTTP endpoint. This avoids localhost/port timing issues that can differ between
development runs and frozen MSI installations.
"""
import logging import logging
from typing import Any from typing import Any
from PySide6.QtCore import QTimer, QUrl
from PySide6.QtWebEngineWidgets import QWebEngineView from PySide6.QtWebEngineWidgets import QWebEngineView
from PySide6.QtWidgets import QVBoxLayout, QWidget from PySide6.QtWidgets import QVBoxLayout, QWidget
@ -15,8 +19,7 @@ __all__ = ["DeveloperToolsWidget"]
class DeveloperToolsWidget(QWidget): class DeveloperToolsWidget(QWidget):
"""Embedded Chromium Developer Tools Inspector. """Embedded Chromium Developer Tools Inspector.
Loads the Chromium DevTools UI using the Remote Debugging Protocol Attaches a dedicated DevTools page directly to the inspected web page.
running on localhost:9222.
Features: Features:
- Real HTML/CSS Inspector with live editing - Real HTML/CSS Inspector with live editing
@ -45,10 +48,7 @@ class DeveloperToolsWidget(QWidget):
self.dev_tools_view = QWebEngineView() self.dev_tools_view = QWebEngineView()
layout.addWidget(self.dev_tools_view) layout.addWidget(self.dev_tools_view)
# Load DevTools after delay to let debugger start # Directly attach DevTools to the existing page.
QTimer.singleShot(500, self._load_devtools) # This is more robust than relying on the remote debugging HTTP endpoint.
self.dev_tools_view.page().setInspectedPage(self.web_view.page())
def _load_devtools(self) -> None: logger.info("Developer Tools attached via QWebEnginePage.setInspectedPage")
"""Load the DevTools targets page from localhost:9222."""
logger.info("Loading DevTools from http://localhost:9222")
self.dev_tools_view.load(QUrl("http://localhost:9222"))

View file

@ -0,0 +1,16 @@
"""Unit tests for DeveloperToolsWidget."""
from PySide6.QtWebEngineWidgets import QWebEngineView
from webdrop_bridge.ui.developer_tools import DeveloperToolsWidget
def test_developer_tools_widget_attaches_inspected_page(qtbot):
"""DeveloperToolsWidget should inspect the provided web view page directly."""
web_view = QWebEngineView()
qtbot.addWidget(web_view)
dev_tools = DeveloperToolsWidget(web_view)
qtbot.addWidget(dev_tools)
assert dev_tools.dev_tools_view.page().inspectedPage() is web_view.page()