1 /*
2    SPDX-FileCopyrightText: 2016-2021 Laurent Montel <montel@kde.org>
3 
4    SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #pragma once
8 
9 #include "webengineviewer_export.h"
10 #include <QList>
11 #include <QObject>
12 #include <QVector>
13 namespace WebEngineViewer
14 {
15 struct Addition;
16 struct Removal;
17 struct WEBENGINEVIEWER_EXPORT UpdateDataBaseInfo {
18     UpdateDataBaseInfo();
19     Q_REQUIRED_RESULT bool isValid() const;
20 
21     enum ResponseType { Unknown = 0, FullUpdate = 1, PartialUpdate = 2 };
22 
23     enum CompressionType { UnknownCompression = 0, RiceCompression = 1, RawCompression = 2 };
24 
25     QVector<Addition> additionList;
26     QVector<Removal> removalList;
27     QString minimumWaitDuration;
28     QString threatType;
29     QString threatEntryType;
30     ResponseType responseType = Unknown;
31     QString platformType;
32     QString newClientState;
33     QByteArray sha256;
34     void clear();
35     bool operator==(const UpdateDataBaseInfo &other) const;
36 };
37 
38 struct WEBENGINEVIEWER_EXPORT RiceDeltaEncoding {
39     RiceDeltaEncoding();
40     bool operator==(const RiceDeltaEncoding &other) const;
41     bool isValid() const;
42     QByteArray firstValue;
43     QByteArray encodingData;
44     int riceParameter;
45     int numberEntries;
46 };
47 
48 struct WEBENGINEVIEWER_EXPORT Addition {
49     Addition();
50     bool isValid() const;
51     bool operator==(const Addition &other) const;
52 
53     static bool lessThan(const Addition &s1, const Addition &s2);
54     QByteArray hashString;
55     RiceDeltaEncoding riceDeltaEncoding;
56     UpdateDataBaseInfo::CompressionType compressionType;
57     int prefixSize;
58 };
59 
60 struct WEBENGINEVIEWER_EXPORT Removal {
61     Removal();
62     bool operator==(const Removal &other) const;
63     bool isValid() const;
64     QList<quint32> indexes;
65     RiceDeltaEncoding riceDeltaEncoding;
66     UpdateDataBaseInfo::CompressionType compressionType;
67 };
68 }
69 Q_DECLARE_METATYPE(WebEngineViewer::UpdateDataBaseInfo)
70 Q_DECLARE_METATYPE(WebEngineViewer::UpdateDataBaseInfo::CompressionType)
71 Q_DECLARE_TYPEINFO(WebEngineViewer::Addition, Q_MOVABLE_TYPE);
72 Q_DECLARE_TYPEINFO(WebEngineViewer::Removal, Q_MOVABLE_TYPE);
73 Q_DECLARE_TYPEINFO(WebEngineViewer::RiceDeltaEncoding, Q_MOVABLE_TYPE);
74 
75