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

#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_DEVICE_MEMORY_APPROXIMATED_DEVICE_MEMORY_H_
#define THIRD_PARTY_BLINK_PUBLIC_COMMON_DEVICE_MEMORY_APPROXIMATED_DEVICE_MEMORY_H_

#include <stdint.h>

#include "third_party/blink/public/common/common_export.h"

namespace blink {

class ApproximatedDeviceMemory {
 public:
  // Caches the device's physical memory in static members.
  static void BLINK_COMMON_EXPORT Initialize();

  // Returns an approximation of the physical memory rounded to the most
  // significant bit. This information is provided to web-developers to allow
  // them to customize the experience of their page to the possible available
  // device memory.
  static float BLINK_COMMON_EXPORT GetApproximatedDeviceMemory();

  // Override the value of the physical memory for testing.
  static void BLINK_COMMON_EXPORT SetPhysicalMemoryMBForTesting(int64_t);

 private:
  static void CalculateAndSetApproximatedDeviceMemory();

  static float approximated_device_memory_gb_;
  static int64_t physical_memory_mb_;
};

}  // namespace blink

#endif  // THIRD_PARTY_BLINK_PUBLIC_COMMON_DEVICE_MEMORY_APPROXIMATED_DEVICE_MEMORY_H_
