diff options
Diffstat (limited to 'examples')
12 files changed, 121 insertions, 41 deletions
diff --git a/examples/webengine/quicknanobrowser/BrowserDialog.qml b/examples/webengine/quicknanobrowser/BrowserDialog.qml index d060e2828..770cfee6a 100644 --- a/examples/webengine/quicknanobrowser/BrowserDialog.qml +++ b/examples/webengine/quicknanobrowser/BrowserDialog.qml @@ -50,11 +50,12 @@ import QtQuick 2.1 import QtQuick.Window 2.2 -import QtWebEngine 1.2 +import QtWebEngine 1.7 Window { + id: window property alias currentWebView: webView - flags: Qt.Dialog + flags: Qt.Dialog | Qt.WindowStaysOnTopHint width: 800 height: 600 visible: true @@ -62,5 +63,12 @@ Window { WebEngineView { id: webView anchors.fill: parent + + onGeometryChangeRequested: { + window.x = geometry.x + window.y = geometry.y + window.width = geometry.width + window.height = geometry.height + } } } diff --git a/examples/webengine/quicknanobrowser/BrowserWindow.qml b/examples/webengine/quicknanobrowser/BrowserWindow.qml index 16efc9e37..f3bd8e457 100644 --- a/examples/webengine/quicknanobrowser/BrowserWindow.qml +++ b/examples/webengine/quicknanobrowser/BrowserWindow.qml @@ -57,7 +57,7 @@ import QtQuick.Controls.Styles 1.0 import QtQuick.Dialogs 1.2 import QtQuick.Layouts 1.0 import QtQuick.Window 2.1 -import QtWebEngine 1.3 +import QtWebEngine 1.7 ApplicationWindow { id: browserWindow @@ -87,6 +87,8 @@ ApplicationWindow { property alias fullScreenSupportEnabled: fullScreenSupportEnabled.checked property alias autoLoadIconsForPage: autoLoadIconsForPage.checked property alias touchIconsEnabled: touchIconsEnabled.checked + property alias webRTCPublicInterfacesOnly : webRTCPublicInterfacesOnly.checked + property alias devToolsEnabled: devToolsEnabled.checked } Action { @@ -311,6 +313,18 @@ ApplicationWindow { checked: WebEngine.settings.touchIconsEnabled enabled: autoLoadIconsForPage.checked } + MenuItem { + id: webRTCPublicInterfacesOnly + text: "WebRTC Public Interfaces Only" + checkable: true + checked: WebEngine.settings.webRTCPublicInterfacesOnly + } + MenuItem { + id: devToolsEnabled + text: "Open DevTools" + checkable: true + checked: false + } } } } @@ -384,6 +398,7 @@ ApplicationWindow { settings.fullScreenSupportEnabled: appSettings.fullScreenSupportEnabled settings.autoLoadIconsForPage: appSettings.autoLoadIconsForPage settings.touchIconsEnabled: appSettings.touchIconsEnabled + settings.webRTCPublicInterfacesOnly: appSettings.webRTCPublicInterfacesOnly onCertificateError: { error.defer(); @@ -423,6 +438,13 @@ ApplicationWindow { request.accept(); } + onQuotaPermissionRequested: { + if (request.requestedSize <= 5 * 1024 * 1024) + request.accept(); + else + request.reject(); + } + onRenderProcessTerminated: { var status = ""; switch (terminationStatus) { @@ -461,6 +483,15 @@ ApplicationWindow { } } } + WebEngineView { + id: devToolsView + visible: devToolsEnabled.checked + height: 400 + inspectedView: tabs.currentIndex < tabs.count ? tabs.getTab(tabs.currentIndex).item : null + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: parent.bottom + } MessageDialog { id: sslDialog diff --git a/examples/webenginewidgets/simplebrowser/browser.cpp b/examples/webenginewidgets/simplebrowser/browser.cpp index c50974531..5c6dbd35e 100644 --- a/examples/webenginewidgets/simplebrowser/browser.cpp +++ b/examples/webenginewidgets/simplebrowser/browser.cpp @@ -69,7 +69,19 @@ Browser::Browser() BrowserWindow *Browser::createWindow(bool offTheRecord) { auto profile = offTheRecord ? &m_otrProfile : QWebEngineProfile::defaultProfile(); - auto mainWindow = new BrowserWindow(this, profile); + auto mainWindow = new BrowserWindow(this, profile, false); + m_windows.append(mainWindow); + QObject::connect(mainWindow, &QObject::destroyed, [this, mainWindow]() { + m_windows.removeOne(mainWindow); + }); + mainWindow->show(); + return mainWindow; +} + +BrowserWindow *Browser::createDevToolsWindow() +{ + auto profile = QWebEngineProfile::defaultProfile(); + auto mainWindow = new BrowserWindow(this, profile, true); m_windows.append(mainWindow); QObject::connect(mainWindow, &QObject::destroyed, [this, mainWindow]() { m_windows.removeOne(mainWindow); diff --git a/examples/webenginewidgets/simplebrowser/browser.h b/examples/webenginewidgets/simplebrowser/browser.h index 9240cc987..fbc8465d2 100644 --- a/examples/webenginewidgets/simplebrowser/browser.h +++ b/examples/webenginewidgets/simplebrowser/browser.h @@ -66,6 +66,7 @@ public: QVector<BrowserWindow*> windows() { return m_windows; } BrowserWindow *createWindow(bool offTheRecord = false); + BrowserWindow *createDevToolsWindow(); DownloadManagerWidget &downloadManagerWidget() { return m_downloadManagerWidget; } diff --git a/examples/webenginewidgets/simplebrowser/browserwindow.cpp b/examples/webenginewidgets/simplebrowser/browserwindow.cpp index 016d58afe..c369a90fa 100644 --- a/examples/webenginewidgets/simplebrowser/browserwindow.cpp +++ b/examples/webenginewidgets/simplebrowser/browserwindow.cpp @@ -67,11 +67,11 @@ #include <QVBoxLayout> #include <QWebEngineProfile> -BrowserWindow::BrowserWindow(Browser *browser, QWebEngineProfile *profile) +BrowserWindow::BrowserWindow(Browser *browser, QWebEngineProfile *profile, bool forDevTools) : m_browser(browser) , m_profile(profile) , m_tabWidget(new TabWidget(profile, this)) - , m_progressBar(new QProgressBar(this)) + , m_progressBar(nullptr) , m_historyBackAction(nullptr) , m_historyForwardAction(nullptr) , m_stopAction(nullptr) @@ -83,49 +83,59 @@ BrowserWindow::BrowserWindow(Browser *browser, QWebEngineProfile *profile) setAttribute(Qt::WA_DeleteOnClose, true); setFocusPolicy(Qt::ClickFocus); - QToolBar *toolbar = createToolBar(); - addToolBar(toolbar); - menuBar()->addMenu(createFileMenu(m_tabWidget)); - menuBar()->addMenu(createEditMenu()); - menuBar()->addMenu(createViewMenu(toolbar)); - menuBar()->addMenu(createWindowMenu(m_tabWidget)); - menuBar()->addMenu(createHelpMenu()); + if (!forDevTools) { + m_progressBar = new QProgressBar(this); + + QToolBar *toolbar = createToolBar(); + addToolBar(toolbar); + menuBar()->addMenu(createFileMenu(m_tabWidget)); + menuBar()->addMenu(createEditMenu()); + menuBar()->addMenu(createViewMenu(toolbar)); + menuBar()->addMenu(createWindowMenu(m_tabWidget)); + menuBar()->addMenu(createHelpMenu()); + } QWidget *centralWidget = new QWidget(this); QVBoxLayout *layout = new QVBoxLayout; layout->setSpacing(0); layout->setMargin(0); - addToolBarBreak(); + if (!forDevTools) { + addToolBarBreak(); - m_progressBar->setMaximumHeight(1); - m_progressBar->setTextVisible(false); - m_progressBar->setStyleSheet(QStringLiteral("QProgressBar {border: 0px} QProgressBar::chunk {background-color: #da4453}")); + m_progressBar->setMaximumHeight(1); + m_progressBar->setTextVisible(false); + m_progressBar->setStyleSheet(QStringLiteral("QProgressBar {border: 0px} QProgressBar::chunk {background-color: #da4453}")); + + layout->addWidget(m_progressBar); + } - layout->addWidget(m_progressBar); layout->addWidget(m_tabWidget); centralWidget->setLayout(layout); setCentralWidget(centralWidget); connect(m_tabWidget, &TabWidget::titleChanged, this, &BrowserWindow::handleWebViewTitleChanged); - connect(m_tabWidget, &TabWidget::linkHovered, [this](const QString& url) { - statusBar()->showMessage(url); - }); - connect(m_tabWidget, &TabWidget::loadProgress, this, &BrowserWindow::handleWebViewLoadProgress); - connect(m_tabWidget, &TabWidget::webActionEnabledChanged, this, &BrowserWindow::handleWebActionEnabledChanged); - connect(m_tabWidget, &TabWidget::urlChanged, [this](const QUrl &url) { - m_urlLineEdit->setText(url.toDisplayString()); - }); - connect(m_tabWidget, &TabWidget::favIconChanged, m_favAction, &QAction::setIcon); - connect(m_urlLineEdit, &QLineEdit::returnPressed, [this]() { - m_tabWidget->setUrl(QUrl::fromUserInput(m_urlLineEdit->text())); - }); + if (!forDevTools) { + connect(m_tabWidget, &TabWidget::linkHovered, [this](const QString& url) { + statusBar()->showMessage(url); + }); + connect(m_tabWidget, &TabWidget::loadProgress, this, &BrowserWindow::handleWebViewLoadProgress); + connect(m_tabWidget, &TabWidget::webActionEnabledChanged, this, &BrowserWindow::handleWebActionEnabledChanged); + connect(m_tabWidget, &TabWidget::urlChanged, [this](const QUrl &url) { + m_urlLineEdit->setText(url.toDisplayString()); + }); + connect(m_tabWidget, &TabWidget::favIconChanged, m_favAction, &QAction::setIcon); + connect(m_tabWidget, &TabWidget::devToolsRequested, this, &BrowserWindow::handleDevToolsRequested); + connect(m_urlLineEdit, &QLineEdit::returnPressed, [this]() { + m_tabWidget->setUrl(QUrl::fromUserInput(m_urlLineEdit->text())); + }); - QAction *focusUrlLineEditAction = new QAction(this); - addAction(focusUrlLineEditAction); - focusUrlLineEditAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_L)); - connect(focusUrlLineEditAction, &QAction::triggered, this, [this] () { - m_urlLineEdit->setFocus(Qt::ShortcutFocusReason); - }); + QAction *focusUrlLineEditAction = new QAction(this); + addAction(focusUrlLineEditAction); + focusUrlLineEditAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_L)); + connect(focusUrlLineEditAction, &QAction::triggered, this, [this] () { + m_urlLineEdit->setFocus(Qt::ShortcutFocusReason); + }); + } handleWebViewTitleChanged(QString()); m_tabWidget->createTab(); @@ -504,3 +514,9 @@ void BrowserWindow::handleShowWindowTriggered() windows.at(offset)->currentTab()->setFocus(); } } + +void BrowserWindow::handleDevToolsRequested(QWebEnginePage *source) +{ + source->setDevToolsPage(m_browser->createDevToolsWindow()->currentTab()->page()); + source->triggerAction(QWebEnginePage::InspectElement); +} diff --git a/examples/webenginewidgets/simplebrowser/browserwindow.h b/examples/webenginewidgets/simplebrowser/browserwindow.h index b522a6b9d..8f328b751 100644 --- a/examples/webenginewidgets/simplebrowser/browserwindow.h +++ b/examples/webenginewidgets/simplebrowser/browserwindow.h @@ -69,7 +69,7 @@ class BrowserWindow : public QMainWindow Q_OBJECT public: - BrowserWindow(Browser *browser, QWebEngineProfile *profile); + BrowserWindow(Browser *browser, QWebEngineProfile *profile, bool forDevTools = false); QSize sizeHint() const override; TabWidget *tabWidget() const; WebView *currentTab() const; @@ -87,6 +87,7 @@ private slots: void handleWebViewLoadProgress(int); void handleWebViewTitleChanged(const QString &title); void handleWebActionEnabledChanged(QWebEnginePage::WebAction action, bool enabled); + void handleDevToolsRequested(QWebEnginePage *source); private: QMenu *createFileMenu(TabWidget *tabWidget); diff --git a/examples/webenginewidgets/simplebrowser/tabwidget.cpp b/examples/webenginewidgets/simplebrowser/tabwidget.cpp index e7376c7a5..8b458a9af 100644 --- a/examples/webenginewidgets/simplebrowser/tabwidget.cpp +++ b/examples/webenginewidgets/simplebrowser/tabwidget.cpp @@ -190,6 +190,7 @@ void TabWidget::setupView(WebView *webView) if (index >= 0) closeTab(index); }); + connect(webView, &WebView::devToolsRequested, this, &TabWidget::devToolsRequested); } WebView *TabWidget::createTab() diff --git a/examples/webenginewidgets/simplebrowser/tabwidget.h b/examples/webenginewidgets/simplebrowser/tabwidget.h index 5b09f2708..bf83781df 100644 --- a/examples/webenginewidgets/simplebrowser/tabwidget.h +++ b/examples/webenginewidgets/simplebrowser/tabwidget.h @@ -77,6 +77,7 @@ signals: void urlChanged(const QUrl &url); void favIconChanged(const QIcon &icon); void webActionEnabledChanged(QWebEnginePage::WebAction action, bool enabled); + void devToolsRequested(QWebEnginePage *source); public slots: // current tab/page slots diff --git a/examples/webenginewidgets/simplebrowser/webpage.cpp b/examples/webenginewidgets/simplebrowser/webpage.cpp index 3b78b8618..903956419 100644 --- a/examples/webenginewidgets/simplebrowser/webpage.cpp +++ b/examples/webenginewidgets/simplebrowser/webpage.cpp @@ -56,6 +56,7 @@ #include "webview.h" #include <QAuthenticator> #include <QMessageBox> +#include <QStyle> WebPage::WebPage(QWebEngineProfile *profile, QObject *parent) : QWebEnginePage(profile, parent) diff --git a/examples/webenginewidgets/simplebrowser/webpopupwindow.cpp b/examples/webenginewidgets/simplebrowser/webpopupwindow.cpp index 02cea35de..19e3b0124 100644 --- a/examples/webenginewidgets/simplebrowser/webpopupwindow.cpp +++ b/examples/webenginewidgets/simplebrowser/webpopupwindow.cpp @@ -55,6 +55,7 @@ #include <QIcon> #include <QLineEdit> #include <QVBoxLayout> +#include <QWindow> WebPopupWindow::WebPopupWindow(QWebEngineProfile *profile) : m_urlLineEdit(new QLineEdit(this)) @@ -92,10 +93,8 @@ WebView *WebPopupWindow::view() const void WebPopupWindow::handleGeometryChangeRequested(const QRect &newGeometry) { - m_view->setMinimumSize(newGeometry.width(), newGeometry.height()); - move(newGeometry.topLeft() - m_view->pos()); - // let the layout do the magic - resize(0, 0); + if (QWindow *window = windowHandle()) + setGeometry(newGeometry.marginsRemoved(window->frameMargins())); show(); m_view->setFocus(); } diff --git a/examples/webenginewidgets/simplebrowser/webview.cpp b/examples/webenginewidgets/simplebrowser/webview.cpp index 868cca037..ab42c4a0a 100644 --- a/examples/webenginewidgets/simplebrowser/webview.cpp +++ b/examples/webenginewidgets/simplebrowser/webview.cpp @@ -167,6 +167,7 @@ QWebEngineView *WebView::createWindow(QWebEnginePage::WebWindowType type) } case QWebEnginePage::WebDialog: { WebPopupWindow *popup = new WebPopupWindow(page()->profile()); + connect(popup->view(), &WebView::devToolsRequested, this, &WebView::devToolsRequested); return popup->view(); } } @@ -185,6 +186,13 @@ void WebView::contextMenuEvent(QContextMenuEvent *event) menu->insertAction(before, page()->action(QWebEnginePage::OpenLinkInNewWindow)); menu->insertAction(before, page()->action(QWebEnginePage::OpenLinkInNewTab)); } + it = std::find(actions.cbegin(), actions.cend(), page()->action(QWebEnginePage::InspectElement)); + if (it == actions.cend()) { + QAction *action = new QAction(menu); + action->setText("Inspect Element"); + connect(action, &QAction::triggered, [this]() { emit devToolsRequested(page()); }); + menu->addAction(action); + } menu->popup(event->globalPos()); } diff --git a/examples/webenginewidgets/simplebrowser/webview.h b/examples/webenginewidgets/simplebrowser/webview.h index 7276ab1c4..8559a68b8 100644 --- a/examples/webenginewidgets/simplebrowser/webview.h +++ b/examples/webenginewidgets/simplebrowser/webview.h @@ -75,6 +75,7 @@ protected: signals: void webActionEnabledChanged(QWebEnginePage::WebAction webAction, bool enabled); void favIconChanged(const QIcon &icon); + void devToolsRequested(QWebEnginePage *source); private: void createWebActionTrigger(QWebEnginePage *page, QWebEnginePage::WebAction); |