Messagelib

networkurlinterceptor.cpp
1 /*
2  SPDX-FileCopyrightText: 2016-2023 Laurent Montel <[email protected]>
3 
4  SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #include "networkurlinterceptor.h"
8 #include "networkpluginurlinterceptorinterface.h"
9 
10 #include <QDebug>
11 #include <QVector>
12 
13 using namespace WebEngineViewer;
14 
15 class WebEngineViewer::NetworkUrlInterceptorPrivate
16 {
17 public:
18  NetworkUrlInterceptorPrivate() = default;
19 
20  void addInterceptor(NetworkPluginUrlInterceptorInterface *interceptor);
21  void interceptRequest(QWebEngineUrlRequestInfo &info);
22  void removeInterceptor(NetworkPluginUrlInterceptorInterface *interceptor);
24 };
25 
26 void NetworkUrlInterceptorPrivate::addInterceptor(NetworkPluginUrlInterceptorInterface *interceptor)
27 {
28  if (!listInterceptor.contains(interceptor)) {
29  listInterceptor.append(interceptor);
30  }
31 }
32 
33 void NetworkUrlInterceptorPrivate::removeInterceptor(NetworkPluginUrlInterceptorInterface *interceptor)
34 {
35  if (listInterceptor.contains(interceptor)) {
36  listInterceptor.removeOne(interceptor);
37  }
38 }
39 
40 void NetworkUrlInterceptorPrivate::interceptRequest(QWebEngineUrlRequestInfo &info)
41 {
42  for (NetworkPluginUrlInterceptorInterface *inter : std::as_const(listInterceptor)) {
43  if (inter->interceptRequest(info)) {
44  // qDebug() << " intercep " << info.requestUrl() << " inter " << inter;
45  info.block(true);
46  break;
47  }
48  }
49 }
50 
51 NetworkUrlInterceptor::NetworkUrlInterceptor(QObject *parent)
52  : QWebEngineUrlRequestInterceptor(parent)
53  , d(new NetworkUrlInterceptorPrivate)
54 {
55 }
56 
57 NetworkUrlInterceptor::~NetworkUrlInterceptor() = default;
58 
59 void NetworkUrlInterceptor::interceptRequest(QWebEngineUrlRequestInfo &info)
60 {
61  d->interceptRequest(info);
62 }
63 
64 void NetworkUrlInterceptor::addInterceptor(NetworkPluginUrlInterceptorInterface *interceptor)
65 {
66  d->addInterceptor(interceptor);
67 }
68 
69 void NetworkUrlInterceptor::removeInterceptor(NetworkPluginUrlInterceptorInterface *interceptor)
70 {
71  d->removeInterceptor(interceptor);
72 }
void append(const T &value)
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Mar 27 2023 04:08:18 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.