/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef _WEBRTC_GLOBAL_INFORMATION_H_ #define _WEBRTC_GLOBAL_INFORMATION_H_ #include #include "mozilla/dom/WebrtcGlobalInformationBinding.h" #include "nsString.h" #include "mozilla/dom/BindingDeclarations.h" // for Optional #include "nsDOMNavigationTiming.h" #include "WebrtcGlobalStatsHistory.h" namespace mozilla { class PeerConnectionImpl; class ErrorResult; namespace dom { class GlobalObject; class WebrtcGlobalStatisticsCallback; class WebrtcGlobalStatisticsHistoryPcIdsCallback; class WebrtcGlobalLoggingCallback; struct RTCStatsReportInternal; class WebrtcGlobalInformation { public: MOZ_CAN_RUN_SCRIPT static void GetAllStats(const GlobalObject& aGlobal, WebrtcGlobalStatisticsCallback& aStatsCallback, const Optional& aPcIdFilter, ErrorResult& aRv); MOZ_CAN_RUN_SCRIPT static void GetStatsHistoryPcIds( const GlobalObject& aGlobal, WebrtcGlobalStatisticsHistoryPcIdsCallback& aPcIdsCallback, ErrorResult& aRv); MOZ_CAN_RUN_SCRIPT static void GetStatsHistorySince( const GlobalObject& aGlobal, WebrtcGlobalStatisticsHistoryCallback& aStatsCallback, const nsAString& aPcIdFilter, const Optional& aAfter, const Optional& aSdpAfter, ErrorResult& aRv); static void GatherHistory(); static void ClearAllStats(const GlobalObject& aGlobal); MOZ_CAN_RUN_SCRIPT static void GetLogging(const GlobalObject& aGlobal, const nsAString& aPattern, WebrtcGlobalLoggingCallback& aLoggingCallback, ErrorResult& aRv); static void ClearLogging(const GlobalObject& aGlobal); static void SetDebugLevel(const GlobalObject& aGlobal, int32_t aLevel); static int32_t DebugLevel(const GlobalObject& aGlobal); static void SetAecDebug(const GlobalObject& aGlobal, bool aEnable); static bool AecDebug(const GlobalObject& aGlobal); static void GetAecDebugLogDir(const GlobalObject& aGlobal, nsAString& aDir); static void StashStats(const RTCStatsReportInternal& aReport); WebrtcGlobalInformation() = delete; WebrtcGlobalInformation(const WebrtcGlobalInformation& aOrig) = delete; WebrtcGlobalInformation& operator=(const WebrtcGlobalInformation& aRhs) = delete; struct PcTrackingUpdate { static PcTrackingUpdate Add(const nsString& aPcid, const bool& aLongTermStatsDisabled) { return PcTrackingUpdate{aPcid, Some(aLongTermStatsDisabled)}; } static PcTrackingUpdate Remove(const nsString& aPcid) { return PcTrackingUpdate{aPcid, Nothing()}; } nsString mPcid; Maybe mLongTermStatsDisabled; enum class Type { Add, Remove, }; Type Type() const { return mLongTermStatsDisabled ? Type::Add : Type::Remove; } }; static void PeerConnectionTracking(PcTrackingUpdate& aUpdate) { AdjustTimerReferences(std::move(aUpdate)); } private: static void AdjustTimerReferences(PcTrackingUpdate&& aUpdate); }; } // namespace dom } // namespace mozilla #endif // _WEBRTC_GLOBAL_INFORMATION_H_