mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-08 12:19:05 +02:00
Note that this patch implements a member function CrossOriginIsIsolated in PerformanceWorker and PerformanceMainThread. In PerformanceMainThread, we need to cache boolean for CrossOriginIsIsolated() so that we don't need to find the owning global on every callsites. Differential Revision: https://phabricator.services.mozilla.com/D63904 --HG-- extra : moz-landing-system : lando
96 lines
3.1 KiB
C++
96 lines
3.1 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
/* 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_dom_PerformanceMainThread_h
|
|
#define mozilla_dom_PerformanceMainThread_h
|
|
|
|
#include "Performance.h"
|
|
#include "PerformanceStorage.h"
|
|
|
|
namespace mozilla {
|
|
namespace dom {
|
|
|
|
class PerformanceNavigationTiming;
|
|
|
|
class PerformanceMainThread final : public Performance,
|
|
public PerformanceStorage {
|
|
public:
|
|
PerformanceMainThread(nsPIDOMWindowInner* aWindow,
|
|
nsDOMNavigationTiming* aDOMTiming,
|
|
nsITimedChannel* aChannel, bool aPrincipal);
|
|
|
|
NS_DECL_ISUPPORTS_INHERITED
|
|
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(PerformanceMainThread,
|
|
Performance)
|
|
|
|
PerformanceStorage* AsPerformanceStorage() override { return this; }
|
|
|
|
virtual PerformanceTiming* Timing() override;
|
|
|
|
virtual PerformanceNavigation* Navigation() override;
|
|
|
|
virtual void AddEntry(nsIHttpChannel* channel,
|
|
nsITimedChannel* timedChannel) override;
|
|
|
|
TimeStamp CreationTimeStamp() const override;
|
|
|
|
DOMHighResTimeStamp CreationTime() const override;
|
|
|
|
virtual void GetMozMemory(JSContext* aCx,
|
|
JS::MutableHandle<JSObject*> aObj) override;
|
|
|
|
virtual nsDOMNavigationTiming* GetDOMTiming() const override {
|
|
return mDOMTiming;
|
|
}
|
|
|
|
virtual uint64_t GetRandomTimelineSeed() override {
|
|
return GetDOMTiming()->GetRandomTimelineSeed();
|
|
}
|
|
|
|
virtual nsITimedChannel* GetChannel() const override { return mChannel; }
|
|
|
|
// The GetEntries* methods need to be overriden in order to add the
|
|
// the document entry of type navigation.
|
|
virtual void GetEntries(nsTArray<RefPtr<PerformanceEntry>>& aRetval) override;
|
|
virtual void GetEntriesByType(
|
|
const nsAString& aEntryType,
|
|
nsTArray<RefPtr<PerformanceEntry>>& aRetval) override;
|
|
virtual void GetEntriesByName(
|
|
const nsAString& aName, const Optional<nsAString>& aEntryType,
|
|
nsTArray<RefPtr<PerformanceEntry>>& aRetval) override;
|
|
|
|
void QueueNavigationTimingEntry() override;
|
|
|
|
bool CrossOriginIsolated() const override;
|
|
|
|
protected:
|
|
~PerformanceMainThread();
|
|
|
|
void CreateNavigationTimingEntry();
|
|
|
|
void InsertUserEntry(PerformanceEntry* aEntry) override;
|
|
|
|
bool IsPerformanceTimingAttribute(const nsAString& aName) override;
|
|
|
|
DOMHighResTimeStamp GetPerformanceTimingFromString(
|
|
const nsAString& aTimingName) override;
|
|
|
|
void DispatchBufferFullEvent() override;
|
|
|
|
RefPtr<PerformanceNavigationTiming> mDocEntry;
|
|
RefPtr<nsDOMNavigationTiming> mDOMTiming;
|
|
nsCOMPtr<nsITimedChannel> mChannel;
|
|
RefPtr<PerformanceTiming> mTiming;
|
|
RefPtr<PerformanceNavigation> mNavigation;
|
|
JS::Heap<JSObject*> mMozMemory;
|
|
|
|
const bool mCrossOriginIsolated;
|
|
};
|
|
|
|
} // namespace dom
|
|
} // namespace mozilla
|
|
|
|
#endif // mozilla_dom_PerformanceMainThread_h
|