Coverage Report

Created: 2018-09-25 14:53

/work/obj-fuzz/dist/include/mozilla/net/Dashboard.h
Line
Count
Source (jump to first uncovered line)
1
/* This Source Code Form is subject to the terms of the Mozilla Public
2
 * License, v. 2.0. If a copy of the MPL was not distributed with this
3
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4
5
#ifndef nsDashboard_h__
6
#define nsDashboard_h__
7
8
#include "mozilla/Mutex.h"
9
#include "mozilla/net/DashboardTypes.h"
10
#include "nsIDashboard.h"
11
#include "nsIDashboardEventNotifier.h"
12
#include "nsIDNSListener.h"
13
#include "nsIServiceManager.h"
14
#include "nsITimer.h"
15
#include "nsITransport.h"
16
17
class nsIDNSService;
18
19
namespace mozilla {
20
namespace net {
21
22
class SocketData;
23
class HttpData;
24
class DnsData;
25
class WebSocketRequest;
26
class ConnectionData;
27
class RcwnData;
28
29
class Dashboard final
30
    : public nsIDashboard
31
    , public nsIDashboardEventNotifier
32
{
33
public:
34
    NS_DECL_THREADSAFE_ISUPPORTS
35
    NS_DECL_NSIDASHBOARD
36
    NS_DECL_NSIDASHBOARDEVENTNOTIFIER
37
38
    Dashboard();
39
    static const char *GetErrorString(nsresult rv);
40
    nsresult GetConnectionStatus(ConnectionData *aConnectionData);
41
42
private:
43
44
    struct LogData
45
    {
46
        LogData(nsCString host, uint32_t serial, bool encryption):
47
            mHost(host),
48
            mSerial(serial),
49
            mMsgSent(0),
50
            mMsgReceived(0),
51
            mSizeSent(0),
52
            mSizeReceived(0),
53
            mEncrypted(encryption)
54
0
        { }
55
        nsCString mHost;
56
        uint32_t  mSerial;
57
        uint32_t  mMsgSent;
58
        uint32_t  mMsgReceived;
59
        uint64_t  mSizeSent;
60
        uint64_t  mSizeReceived;
61
        bool      mEncrypted;
62
        bool operator==(const LogData& a) const
63
0
        {
64
0
            return mHost.Equals(a.mHost) && (mSerial == a.mSerial);
65
0
        }
66
    };
67
68
    struct WebSocketData
69
    {
70
        WebSocketData():lock("Dashboard.webSocketData")
71
1
        {
72
1
        }
73
        uint32_t IndexOf(const nsCString& hostname, uint32_t mSerial)
74
0
        {
75
0
            LogData temp(hostname, mSerial, false);
76
0
            return data.IndexOf(temp);
77
0
        }
78
        nsTArray<LogData> data;
79
        mozilla::Mutex lock;
80
    };
81
82
83
    bool mEnableLogging;
84
    WebSocketData mWs;
85
86
private:
87
0
    virtual ~Dashboard() = default;
88
89
    nsresult GetSocketsDispatch(SocketData *);
90
    nsresult GetHttpDispatch(HttpData *);
91
    nsresult GetDnsInfoDispatch(DnsData *);
92
    nsresult TestNewConnection(ConnectionData *);
93
94
    /* Helper methods that pass the JSON to the callback function. */
95
    nsresult GetSockets(SocketData *);
96
    nsresult GetHttpConnections(HttpData *);
97
    nsresult GetDNSCacheEntries(DnsData *);
98
    nsresult GetWebSocketConnections(WebSocketRequest *);
99
    nsresult GetRcwnData(RcwnData *);
100
101
    nsCOMPtr<nsIDNSService> mDnsService;
102
};
103
104
} // namespace net
105
} // namespace mozilla
106
107
#endif // nsDashboard_h__