1 /* Any copyright is dedicated to the Public Domain.
2  * http://creativecommons.org/publicdomain/zero/1.0/
3  */
4 
5 #ifndef TelemetryTestHelpers_h_
6 #define TelemetryTestHelpers_h_
7 
8 #include "js/TypeDecls.h"
9 #include "mozilla/TelemetryProcessEnums.h"
10 #include "nsITelemetry.h"
11 
12 using mozilla::Telemetry::ProcessID;
13 
14 namespace TelemetryTestHelpers {
15 
16 void CheckUintScalar(const char* aName, JSContext* aCx,
17                      JS::HandleValue aSnapshot, uint32_t expectedValue);
18 
19 void CheckBoolScalar(const char* aName, JSContext* aCx,
20                      JS::HandleValue aSnapshot, bool expectedValue);
21 
22 void CheckStringScalar(const char* aName, JSContext* aCx,
23                        JS::HandleValue aSnapshot, const char* expectedValue);
24 
25 void CheckKeyedUintScalar(const char* aName, const char* aKey, JSContext* aCx,
26                           JS::HandleValue aSnapshot, uint32_t expectedValue);
27 
28 void CheckKeyedBoolScalar(const char* aName, const char* aKey, JSContext* aCx,
29                           JS::HandleValue aSnapshot, bool expectedValue);
30 
31 void CheckNumberOfProperties(const char* aName, JSContext* aCx,
32                              JS::HandleValue aSnapshot,
33                              uint32_t expectedNumProperties);
34 
35 bool EventPresent(JSContext* aCx, const JS::RootedValue& aSnapshot,
36                   const nsACString& aCategory, const nsACString& aMethod,
37                   const nsACString& aObject);
38 
39 void GetEventSnapshot(JSContext* aCx, JS::MutableHandle<JS::Value> aResult,
40                       ProcessID aProcessType = ProcessID::Parent);
41 
42 void GetScalarsSnapshot(bool aKeyed, JSContext* aCx,
43                         JS::MutableHandle<JS::Value> aResult,
44                         ProcessID aProcessType = ProcessID::Parent);
45 
46 void GetAndClearHistogram(JSContext* cx, nsCOMPtr<nsITelemetry> mTelemetry,
47                           const nsACString& name, bool is_keyed);
48 
49 void GetProperty(JSContext* cx, const char* name, JS::HandleValue valueIn,
50                  JS::MutableHandleValue valueOut);
51 
52 void GetElement(JSContext* cx, uint32_t index, JS::HandleValue valueIn,
53                 JS::MutableHandleValue valueOut);
54 
55 void GetSnapshots(JSContext* cx, nsCOMPtr<nsITelemetry> mTelemetry,
56                   const char* name, JS::MutableHandleValue valueOut,
57                   bool is_keyed);
58 
59 void GetOriginSnapshot(JSContext* aCx, JS::MutableHandle<JS::Value> aResult,
60                        bool aClear = false);
61 
62 void GetEncodedOriginStrings(
63     JSContext* aCx, const nsCString& aEncoding,
64     nsTArray<mozilla::Tuple<nsCString, nsCString>>& aPrioStrings);
65 
66 }  // namespace TelemetryTestHelpers
67 
68 #endif
69