1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4  * License, v. 2.0. If a copy of the MPL was not distributed with this
5  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 
7 #ifndef ApplicationReputation_h__
8 #define ApplicationReputation_h__
9 
10 #include "nsIApplicationReputation.h"
11 #include "nsISupports.h"
12 
13 #include "nsCOMPtr.h"
14 #include "nsString.h"
15 #include "mozilla/Logging.h"
16 
17 class nsIRequest;
18 class PendingDBLookup;
19 class PendingLookup;
20 
21 class ApplicationReputationService final
22     : public nsIApplicationReputationService {
23  public:
24   NS_DECL_ISUPPORTS
25   NS_DECL_NSIAPPLICATIONREPUTATIONSERVICE
26 
27  public:
28   static const char* const kNonBinaryExecutables[4];
29 #ifdef XP_WIN
30   static const char* const kBinaryFileExtensions[187];
31 #else
32   static const char* const kBinaryFileExtensions[186];
33 #endif
34 
35   static already_AddRefed<ApplicationReputationService> GetSingleton();
36 
37  private:
38   friend class PendingLookup;
39   friend class PendingDBLookup;
40   /**
41    * Global singleton object for holding this factory service.
42    */
43   static ApplicationReputationService* gApplicationReputationService;
44   /**
45    * MOZ_LOG=ApplicationReputation:5
46    */
47   static mozilla::LazyLogModule prlog;
48   /**
49    * This is a singleton, so disallow construction.
50    */
51   ApplicationReputationService();
52   ~ApplicationReputationService();
53   /**
54    * Wrapper function for QueryReputation that makes it easier to ensure the
55    * callback is called.
56    */
57   nsresult QueryReputationInternal(nsIApplicationReputationQuery* aQuery,
58                                    nsIApplicationReputationCallback* aCallback);
59 };
60 #endif /* ApplicationReputation_h__ */
61