File indexing completed on 2025-05-04 04:59:33
0001 /* 0002 SPDX-FileCopyrightText: 2016-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "webengineviewwithsafebrowsingsupport.h" 0008 #include "../localdatabasemanager.h" 0009 0010 #include "webenginepage.h" 0011 #include "webengineview.h" 0012 #include <QApplication> 0013 #include <QPlainTextEdit> 0014 #include <QPushButton> 0015 #include <QStandardPaths> 0016 #include <QVBoxLayout> 0017 0018 WebEngineViewWithSafeBrowsingSupport::WebEngineViewWithSafeBrowsingSupport(QWidget *parent) 0019 : QWidget(parent) 0020 { 0021 auto layout = new QVBoxLayout(this); 0022 QStandardPaths::setTestModeEnabled(true); 0023 pageView = new WebEngineViewer::WebEngineView(this); 0024 connect(pageView->phishingDatabase(), 0025 &WebEngineViewer::LocalDataBaseManager::checkUrlFinished, 0026 this, 0027 &WebEngineViewWithSafeBrowsingSupport::slotCheckedUrlFinished); 0028 layout->addWidget(pageView); 0029 auto mEnginePage = new WebEngineViewer::WebEnginePage(this); 0030 pageView->setPage(mEnginePage); 0031 // pageView->load(QUrl(QStringLiteral("http://www.kde.org"))); 0032 const QString urlPage = QLatin1StringView(CHECKPHISHINGURL_TEST_DATA_DIR) + QStringLiteral("/test-url.html"); 0033 qDebug() << " urlPage" << urlPage; 0034 pageView->load(QUrl::fromLocalFile(urlPage)); 0035 connect(mEnginePage, &WebEngineViewer::WebEnginePage::urlClicked, this, &WebEngineViewWithSafeBrowsingSupport::slotUrlClicked); 0036 0037 mDebug = new QPlainTextEdit(this); 0038 mDebug->setReadOnly(true); 0039 layout->addWidget(mDebug); 0040 } 0041 0042 WebEngineViewWithSafeBrowsingSupport::~WebEngineViewWithSafeBrowsingSupport() = default; 0043 0044 void WebEngineViewWithSafeBrowsingSupport::slotUrlClicked(const QUrl &url) 0045 { 0046 qDebug() << " url clicked " << url; 0047 pageView->phishingDatabase()->checkUrl(url); 0048 } 0049 0050 void WebEngineViewWithSafeBrowsingSupport::slotCheckedUrlFinished(const QUrl &url, WebEngineViewer::CheckPhishingUrlUtil::UrlStatus status) 0051 { 0052 QString statusStr; 0053 switch (status) { 0054 case WebEngineViewer::CheckPhishingUrlUtil::Unknown: 0055 statusStr = QStringLiteral("Unknown Status"); 0056 break; 0057 case WebEngineViewer::CheckPhishingUrlUtil::Ok: 0058 statusStr = QStringLiteral("Url Ok"); 0059 break; 0060 case WebEngineViewer::CheckPhishingUrlUtil::MalWare: 0061 statusStr = QStringLiteral("MalWare"); 0062 break; 0063 case WebEngineViewer::CheckPhishingUrlUtil::InvalidUrl: 0064 statusStr = QStringLiteral("Invalid Url"); 0065 break; 0066 case WebEngineViewer::CheckPhishingUrlUtil::BrokenNetwork: 0067 statusStr = QStringLiteral("Broken Network"); 0068 break; 0069 } 0070 0071 qDebug() << " checked url: " << url << " result : " << statusStr; 0072 mDebug->setPlainText(QStringLiteral("Url: %1 , Status %2").arg(url.toDisplayString(), statusStr)); 0073 if (status != WebEngineViewer::CheckPhishingUrlUtil::MalWare) { 0074 pageView->load(url); 0075 } 0076 } 0077 0078 int main(int argc, char **argv) 0079 { 0080 QApplication app(argc, argv); 0081 QStandardPaths::setTestModeEnabled(true); 0082 auto w = new WebEngineViewWithSafeBrowsingSupport; 0083 0084 w->show(); 0085 app.exec(); 0086 delete w; 0087 return 0; 0088 } 0089 0090 #include "moc_webengineviewwithsafebrowsingsupport.cpp"