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"