Compare commits

..

No commits in common. "9edadc2c167de7105cf4021de3bac397c59665b8" and "38759b5389b8bc554de58bad0d3f4c3d5aaf5568" have entirely different histories.

3 changed files with 15 additions and 27 deletions

View file

@ -7,6 +7,10 @@ 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,13 +1,9 @@
"""Developer Tools for WebDrop Bridge. """Developer Tools for WebDrop Bridge - using Chromium Remote Debugging Protocol."""
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
@ -19,7 +15,8 @@ __all__ = ["DeveloperToolsWidget"]
class DeveloperToolsWidget(QWidget): class DeveloperToolsWidget(QWidget):
"""Embedded Chromium Developer Tools Inspector. """Embedded Chromium Developer Tools Inspector.
Attaches a dedicated DevTools page directly to the inspected web page. Loads the Chromium DevTools UI using the Remote Debugging Protocol
running on localhost:9222.
Features: Features:
- Real HTML/CSS Inspector with live editing - Real HTML/CSS Inspector with live editing
@ -48,7 +45,10 @@ 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)
# Directly attach DevTools to the existing page. # Load DevTools after delay to let debugger start
# This is more robust than relying on the remote debugging HTTP endpoint. QTimer.singleShot(500, self._load_devtools)
self.dev_tools_view.page().setInspectedPage(self.web_view.page())
logger.info("Developer Tools attached via QWebEnginePage.setInspectedPage") def _load_devtools(self) -> None:
"""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

@ -1,16 +0,0 @@
"""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()