summaryrefslogtreecommitdiff
path: root/docshell/base/timeline/TimelineConsumers.h
diff options
context:
space:
mode:
authorMatt A. Tobin <email@mattatobin.com>2021-11-22 11:41:22 -0500
committerMatt A. Tobin <email@mattatobin.com>2021-11-22 11:41:22 -0500
commit7572f6fb227f67f5f820019fe8afa899aa700862 (patch)
tree33e53aa11ae6107f5048f313a0e7b1e748baad0f /docshell/base/timeline/TimelineConsumers.h
parent3bcef0ff65fa2ab6a482543afd1b1e00dd31cfee (diff)
downloadaura-central-7572f6fb227f67f5f820019fe8afa899aa700862.tar.gz
Issue %3005 - Move docshell/ to system/
Diffstat (limited to 'docshell/base/timeline/TimelineConsumers.h')
-rw-r--r--docshell/base/timeline/TimelineConsumers.h137
1 files changed, 0 insertions, 137 deletions
diff --git a/docshell/base/timeline/TimelineConsumers.h b/docshell/base/timeline/TimelineConsumers.h
deleted file mode 100644
index fb7686553..000000000
--- a/docshell/base/timeline/TimelineConsumers.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/* 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 mozilla_TimelineConsumers_h_
-#define mozilla_TimelineConsumers_h_
-
-#include "nsIObserver.h"
-#include "nsIDocShell.h"
-#include "mozilla/StaticPtr.h"
-#include "mozilla/UniquePtr.h"
-#include "mozilla/LinkedList.h"
-#include "mozilla/StaticMutex.h"
-#include "TimelineMarkerEnums.h" // for MarkerTracingType
-#include "mozilla/dom/ProfileTimelineMarkerBinding.h"
-#include "nsTArray.h"
-
-class nsDocShell;
-class nsIDocShell;
-struct JSContext;
-
-namespace mozilla {
-class TimeStamp;
-class MarkersStorage;
-class AbstractTimelineMarker;
-
-namespace dom {
-struct ProfileTimelineMarker;
-}
-
-class TimelineConsumers : public nsIObserver
-{
-public:
- NS_DECL_THREADSAFE_ISUPPORTS
- NS_DECL_NSIOBSERVER
-
-private:
- TimelineConsumers();
- TimelineConsumers(const TimelineConsumers& aOther) = delete;
- void operator=(const TimelineConsumers& aOther) = delete;
- virtual ~TimelineConsumers() = default;
-
- bool Init();
- bool RemoveObservers();
-
-public:
- static already_AddRefed<TimelineConsumers> Get();
-
- // Methods for registering interested consumers (i.e. "devtools toolboxes").
- // Each consumer should be directly focused on a particular docshell, but
- // timeline markers don't necessarily have to be tied to that docshell.
- // See the public `AddMarker*` methods below.
- // Main thread only.
- void AddConsumer(nsDocShell* aDocShell);
- void RemoveConsumer(nsDocShell* aDocShell);
-
- bool HasConsumer(nsIDocShell* aDocShell);
-
- // Checks if there's any existing interested consumer.
- // May be called from any thread.
- bool IsEmpty();
-
- // Methods for adding markers relevant for particular docshells, or generic
- // (meaning that they either can't be tied to a particular docshell, or one
- // wasn't accessible in the part of the codebase where they're instantiated).
- // These will only add markers if at least one docshell is currently being
- // observed by a timeline. Markers tied to a particular docshell won't be
- // created unless that docshell is specifically being currently observed.
- // See nsIDocShell::recordProfileTimelineMarkers
-
- // These methods create a basic TimelineMarker from a name and some metadata,
- // relevant for a specific docshell.
- // Main thread only.
- void AddMarkerForDocShell(nsDocShell* aDocShell,
- const char* aName,
- MarkerTracingType aTracingType,
- MarkerStackRequest aStackRequest = MarkerStackRequest::STACK);
- void AddMarkerForDocShell(nsIDocShell* aDocShell,
- const char* aName,
- MarkerTracingType aTracingType,
- MarkerStackRequest aStackRequest = MarkerStackRequest::STACK);
-
- void AddMarkerForDocShell(nsDocShell* aDocShell,
- const char* aName,
- const TimeStamp& aTime,
- MarkerTracingType aTracingType,
- MarkerStackRequest aStackRequest = MarkerStackRequest::STACK);
- void AddMarkerForDocShell(nsIDocShell* aDocShell,
- const char* aName,
- const TimeStamp& aTime,
- MarkerTracingType aTracingType,
- MarkerStackRequest aStackRequest = MarkerStackRequest::STACK);
-
- // These methods register and receive ownership of an already created marker,
- // relevant for a specific docshell.
- // Main thread only.
- void AddMarkerForDocShell(nsDocShell* aDocShell,
- UniquePtr<AbstractTimelineMarker>&& aMarker);
- void AddMarkerForDocShell(nsIDocShell* aDocShell,
- UniquePtr<AbstractTimelineMarker>&& aMarker);
-
- // These methods create a basic marker from a name and some metadata,
- // which doesn't have to be relevant to a specific docshell.
- // May be called from any thread.
- void AddMarkerForAllObservedDocShells(const char* aName,
- MarkerTracingType aTracingType,
- MarkerStackRequest aStackRequest = MarkerStackRequest::STACK);
- void AddMarkerForAllObservedDocShells(const char* aName,
- const TimeStamp& aTime,
- MarkerTracingType aTracingType,
- MarkerStackRequest aStackRequest = MarkerStackRequest::STACK);
-
- // This method clones and registers an already instantiated marker,
- // which doesn't have to be relevant to a specific docshell.
- // May be called from any thread.
- void AddMarkerForAllObservedDocShells(UniquePtr<AbstractTimelineMarker>& aMarker);
-
- void PopMarkers(nsDocShell* aDocShell,
- JSContext* aCx,
- nsTArray<dom::ProfileTimelineMarker>& aStore);
-
-private:
- static StaticRefPtr<TimelineConsumers> sInstance;
- static bool sInShutdown;
-
- // Counter for how many timelines are currently interested in markers,
- // and a list of the MarkersStorage interfaces representing them.
- unsigned long mActiveConsumers;
- LinkedList<MarkersStorage> mMarkersStores;
-
- // Protects this class's data structures.
- static StaticMutex sMutex;
-};
-
-} // namespace mozilla
-
-#endif /* mozilla_TimelineConsumers_h_ */