chromium/third_party/blink/renderer/platform/scheduler/common/back_forward_cache_disabling_feature_tracker.h

// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_COMMON_BACK_FORWARD_CACHE_DISABLING_FEATURE_TRACKER_H_
#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_COMMON_BACK_FORWARD_CACHE_DISABLING_FEATURE_TRACKER_H_

#include <bitset>
#include <utility>

#include "base/containers/flat_map.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/weak_ptr.h"
#include "third_party/blink/renderer/platform/scheduler/common/tracing_helper.h"
#include "third_party/blink/renderer/platform/scheduler/public/frame_or_worker_scheduler.h"
#include "third_party/blink/renderer/platform/scheduler/public/scheduling_policy.h"
#include "third_party/blink/renderer/platform/wtf/hash_set.h"

namespace blink {
namespace scheduler {

BFCacheBlockingFeatureAndLocations;

class ThreadSchedulerBase;

// Keeps track of feature usage that disables back/forward cache.
//
// This tracks SchedulingPolicy::Feature values. See SchedulingPolicy::Feature
// for the list of features and the meaning of individual features.
//
// This class tracks features that are used on the renderer side, e.g.,
// IndexedDB transactions. The tracked info is sent to the browser side to be
// combined with the features that are used on the browser to be used to
// determine back-forward cache eligibility.
class PLATFORM_EXPORT BackForwardCacheDisablingFeatureTracker {};

}  // namespace scheduler
}  // namespace blink

#endif  // THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_COMMON_BACK_FORWARD_CACHE_DISABLING_FEATURE_TRACKER_H_