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

#ifndef CONTENT_BROWSER_RENDERER_HOST_NAVIGATION_TRANSITIONS_NAVIGATION_TRANSITION_CONFIG_H_
#define CONTENT_BROWSER_RENDERER_HOST_NAVIGATION_TRANSITIONS_NAVIGATION_TRANSITION_CONFIG_H_

#include <cstddef>

#include "base/auto_reset.h"
#include "base/time/time.h"
#include "base/types/pass_key.h"
#include "content/common/content_export.h"

namespace content {

class ContentBrowserClient;

// Provides the parameters to configure the behaviour for back/forward visual
// transitions.
class CONTENT_EXPORT NavigationTransitionConfig {
 public:
  NavigationTransitionConfig() = delete;

  // Returns true if back forward visual transitions are supported for this
  // device.
  static bool SupportsBackForwardTransitions(
      base::PassKey<ContentBrowserClient>);

  // Computes the size of the screenshot cache.
  static size_t ComputeCacheSizeInBytes();

  // Provides the duration for a cache to be invisible before its evicted.
  static base::TimeDelta GetCleanupDelayForInvisibleCaches();

  // Sets the minimum required physical ram in Mb for the feature to be enabled.
  static base::AutoReset<int> SetMinRequiredPhysicalRamMbForTesting(int mb);
};

}  // namespace content

#endif  // CONTENT_BROWSER_RENDERER_HOST_NAVIGATION_TRANSITIONS_NAVIGATION_TRANSITION_CONFIG_H_
