#ifdef UNSAFE_BUFFERS_BUILD
#pragma allow_unsafe_buffers
#endif
#include "third_party/blink/renderer/modules/compute_pressure/pressure_observer.h"
#include "base/ranges/algorithm.h"
#include "base/task/sequenced_task_runner.h"
#include "third_party/blink/public/common/features.h"
#include "third_party/blink/public/mojom/permissions_policy/permissions_policy_feature.mojom-blink.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_pressure_observer_options.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_pressure_record.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_pressure_source.h"
#include "third_party/blink/renderer/core/execution_context/execution_context.h"
#include "third_party/blink/renderer/core/execution_context/security_context.h"
#include "third_party/blink/renderer/modules/compute_pressure/pressure_observer_manager.h"
#include "third_party/blink/renderer/modules/compute_pressure/pressure_record.h"
#include "third_party/blink/renderer/modules/compute_pressure/pressure_source_index.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h"
#include "third_party/blink/renderer/platform/bindings/script_state.h"
#include "third_party/blink/renderer/platform/heap/garbage_collected.h"
namespace blink {
namespace {
constexpr char kFeaturePolicyBlocked[] = …;
}
PressureObserver::PressureObserver(V8PressureUpdateCallback* observer_callback)
: … { … }
PressureObserver::~PressureObserver() = default;
PressureObserver* PressureObserver::Create(V8PressureUpdateCallback* callback) { … }
Vector<V8PressureSource> PressureObserver::knownSources() { … }
ScriptPromise<IDLUndefined> PressureObserver::observe(
ScriptState* script_state,
V8PressureSource source,
PressureObserverOptions* options,
ExceptionState& exception_state) { … }
void PressureObserver::unobserve(V8PressureSource source) { … }
void PressureObserver::disconnect() { … }
void PressureObserver::Trace(blink::Visitor* visitor) const { … }
void PressureObserver::OnUpdate(ExecutionContext* execution_context,
V8PressureSource::Enum source,
V8PressureState::Enum state,
DOMHighResTimeStamp timestamp) { … }
void PressureObserver::QueueAfterPenaltyRecord(
ExecutionContext* execution_context,
V8PressureSource::Enum source) { … }
void PressureObserver::QueuePressureRecord(ExecutionContext* execution_context,
V8PressureSource::Enum source,
PressureRecord* record) { … }
void PressureObserver::OnBindingSucceeded(V8PressureSource::Enum source) { … }
void PressureObserver::OnBindingFailed(V8PressureSource::Enum source,
DOMExceptionCode exception_code) { … }
void PressureObserver::OnConnectionError() { … }
void PressureObserver::ReportToCallback(ExecutionContext* execution_context) { … }
HeapVector<Member<PressureRecord>> PressureObserver::takeRecords() { … }
bool PressureObserver::PassesRateTest(
V8PressureSource::Enum source,
const DOMHighResTimeStamp& timestamp) const { … }
bool PressureObserver::HasChangeInData(V8PressureSource::Enum source,
V8PressureState::Enum state) const { … }
bool PressureObserver::PassesRateObfuscation(
V8PressureSource::Enum source) const { … }
void PressureObserver::ResolvePendingResolvers(V8PressureSource::Enum source) { … }
void PressureObserver::RejectPendingResolvers(V8PressureSource::Enum source,
DOMExceptionCode exception_code,
const String& message) { … }
}