'Qt WebEngine url blocking

I would like to ask you a question, how to correctly block some url access. I would like to block access to URLs like "file:///" on QtWebEngine. I was searching something about WebUrlRequestInterceptor and QWebEngineUrlSchemeHandler but, did I find the right answer?

// main.qml
import QtQuick 2.0
import QtQuick.Window 2.0
import QtWebEngine 1.1

Window {
    id: window
    width: 800
    height: 600

    WebEngineView {
        id: webView
        anchors.fill: parent

        url: "file:///"
    }
}
// request.cpp

#include <QtCore/QRegExp>
#include "request.h"

WebUrlRequestInterceptor::WebUrlRequestInterceptor(QObject *p)
  :QWebEngineUrlRequestInterceptor(p)
{
}

void WebUrlRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo &info) {
    if(!info.requestUrl().toString().contains(QRegExp("(?:https?|ftp)://\\S+")))
        info.block(true);
}
// main.cpp

#include <QtGui/QGuiApplication>
#include <QtCore/QCoreApplication>
#include <QtQml/QQmlApplicationEngine>
#include <QtWebEngine/QQuickWebEngineProfile>
#include <QtWebEngine/QtWebEngine>
#include <QtQuick/QQuickWindow>

#include "request.h"

int main(int argc, char **argv) {
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts);

    QGuiApplication app(argc, argv);

    WebUrlRequestInterceptor *wuri = new WebUrlRequestInterceptor;
    QQuickWebEngineProfile::defaultProfile()->setUrlRequestInterceptor(wuri);

    QQmlApplicationEngine engine;
    engine.load(QStringLiteral("./main.qml"));

    QQuickWindow *window = qobject_cast<QQuickWindow*>(engine.rootObjects().first());

    QRect rectangle;
    rectangle.setWidth(800);
    rectangle.setHeight(600);
    window->setGeometry(rectangle);
    window->show();

    return app.exec();
}

Is it the right way, how I made it? I founded some flags here https://doc.qt.io/qt-5/qwebengineurlscheme.html#Flag-enum like QWebEngineUrlScheme::LocalAccessAllowed, but not sure, if this will help me. Isn't possible to control this list somehow https://admx.help/?Category=Chrome&Policy=Google.Policies.Chrome::URLBlocklist ?

Thank you



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source