Refactor direct_memory_pressure_calculator.h per platform.
BUG=520962 Review URL: https://codereview.chromium.org/1573123003 Cr-Commit-Position: refs/heads/master@{#368691}
This commit is contained in:
@@ -15,9 +15,9 @@
|
||||
'../base/base.gyp:base',
|
||||
],
|
||||
'sources': [
|
||||
'memory_pressure/direct_memory_pressure_calculator.cc',
|
||||
'memory_pressure/direct_memory_pressure_calculator.h',
|
||||
'memory_pressure/direct_memory_pressure_calculator_win.cc',
|
||||
'memory_pressure/direct_memory_pressure_calculator_win.h',
|
||||
'memory_pressure/filtered_memory_pressure_calculator.cc',
|
||||
'memory_pressure/filtered_memory_pressure_calculator.h',
|
||||
'memory_pressure/memory_pressure_calculator.h',
|
||||
|
@@ -5,9 +5,9 @@
|
||||
# GYP version: components/memory_pressure.gypi:memory_pressure
|
||||
source_set("memory_pressure") {
|
||||
sources = [
|
||||
"direct_memory_pressure_calculator.cc",
|
||||
"direct_memory_pressure_calculator.h",
|
||||
"direct_memory_pressure_calculator_win.cc",
|
||||
"direct_memory_pressure_calculator_win.h",
|
||||
"filtered_memory_pressure_calculator.cc",
|
||||
"filtered_memory_pressure_calculator.h",
|
||||
"memory_pressure_calculator.h",
|
||||
|
@@ -1,18 +0,0 @@
|
||||
// Copyright 2015 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.
|
||||
|
||||
#include "components/memory_pressure/direct_memory_pressure_calculator.h"
|
||||
|
||||
namespace memory_pressure {
|
||||
|
||||
#if defined(MEMORY_PRESSURE_IS_POLLING)
|
||||
|
||||
bool DirectMemoryPressureCalculator::GetSystemMemoryInfo(
|
||||
base::SystemMemoryInfoKB* mem_info) const {
|
||||
return base::GetSystemMemoryInfo(mem_info);
|
||||
}
|
||||
|
||||
#endif // defined(MEMORY_PRESSURE_IS_POLLING)
|
||||
|
||||
} // namespace memory_pressure
|
@@ -5,75 +5,8 @@
|
||||
#ifndef COMPONENTS_MEMORY_PRESSURE_DIRECT_MEMORY_PRESSURE_CALCULATOR_H_
|
||||
#define COMPONENTS_MEMORY_PRESSURE_DIRECT_MEMORY_PRESSURE_CALCULATOR_H_
|
||||
|
||||
#include "components/memory_pressure/memory_pressure_calculator.h"
|
||||
|
||||
#include "base/macros.h"
|
||||
#include "base/process/process_metrics.h"
|
||||
#include "build/build_config.h"
|
||||
|
||||
namespace memory_pressure {
|
||||
|
||||
#if defined(MEMORY_PRESSURE_IS_POLLING)
|
||||
|
||||
// OS-specific implementation of MemoryPressureCalculator. This is only defined
|
||||
// and used on platforms that do not have native memory pressure signals
|
||||
// (ChromeOS, Linux, Windows). OSes that do have native signals simply hook into
|
||||
// the appropriate subsystem (Android, Mac OS X).
|
||||
class DirectMemoryPressureCalculator : public MemoryPressureCalculator {
|
||||
public:
|
||||
#if defined(OS_WIN)
|
||||
// Exposed for unittesting. See .cc file for detailed discussion of these
|
||||
// constants.
|
||||
static const int kLargeMemoryThresholdMb;
|
||||
static const int kSmallMemoryDefaultModerateThresholdMb;
|
||||
static const int kSmallMemoryDefaultCriticalThresholdMb;
|
||||
static const int kLargeMemoryDefaultModerateThresholdMb;
|
||||
static const int kLargeMemoryDefaultCriticalThresholdMb;
|
||||
#endif
|
||||
|
||||
// Default constructor. Will choose thresholds automatically based on the
|
||||
// actual amount of system memory installed.
|
||||
DirectMemoryPressureCalculator();
|
||||
|
||||
// Constructor with explicit memory thresholds. These represent the amount of
|
||||
// free memory below which the applicable memory pressure state applies.
|
||||
DirectMemoryPressureCalculator(int moderate_threshold_mb,
|
||||
int critical_threshold_mb);
|
||||
|
||||
~DirectMemoryPressureCalculator() override {}
|
||||
|
||||
// Calculates the current pressure level.
|
||||
MemoryPressureLevel CalculateCurrentPressureLevel() override;
|
||||
|
||||
#if defined(OS_WIN)
|
||||
int moderate_threshold_mb() const { return moderate_threshold_mb_; }
|
||||
int critical_threshold_mb() const { return critical_threshold_mb_; }
|
||||
#endif
|
||||
|
||||
private:
|
||||
friend class TestDirectMemoryPressureCalculator;
|
||||
|
||||
// Gets system memory status. This is virtual as a unittesting hook and by
|
||||
// default this invokes base::GetSystemMemoryInfo.
|
||||
virtual bool GetSystemMemoryInfo(base::SystemMemoryInfoKB* mem_info) const;
|
||||
|
||||
#if defined(OS_WIN)
|
||||
// Uses GetSystemMemoryInfo to automatically infer appropriate values for
|
||||
// moderate_threshold_mb_ and critical_threshold_mb_.
|
||||
void InferThresholds();
|
||||
|
||||
// Threshold amounts of available memory that trigger pressure levels. See
|
||||
// memory_pressure_monitor_win.cc for a discussion of reasonable values for
|
||||
// these.
|
||||
int moderate_threshold_mb_;
|
||||
int critical_threshold_mb_;
|
||||
#endif
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(DirectMemoryPressureCalculator);
|
||||
};
|
||||
|
||||
#endif // defined(MEMORY_PRESSURE_IS_POLLING)
|
||||
|
||||
} // namespace memory_pressure
|
||||
#ifdef OS_WIN
|
||||
#include "components/memory_pressure/direct_memory_pressure_calculator_win.h"
|
||||
#endif // OS_WIN
|
||||
|
||||
#endif // COMPONENTS_MEMORY_PRESSURE_DIRECT_MEMORY_PRESSURE_CALCULATOR_H_
|
||||
|
@@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "components/memory_pressure/direct_memory_pressure_calculator.h"
|
||||
#include "components/memory_pressure/direct_memory_pressure_calculator_win.h"
|
||||
|
||||
namespace memory_pressure {
|
||||
|
||||
@@ -82,6 +82,11 @@ DirectMemoryPressureCalculator::CalculateCurrentPressureLevel() {
|
||||
return MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE;
|
||||
}
|
||||
|
||||
bool DirectMemoryPressureCalculator::GetSystemMemoryInfo(
|
||||
base::SystemMemoryInfoKB* mem_info) const {
|
||||
return base::GetSystemMemoryInfo(mem_info);
|
||||
}
|
||||
|
||||
void DirectMemoryPressureCalculator::InferThresholds() {
|
||||
// Determine if the memory installed is 'large' or 'small'. Default to 'large'
|
||||
// on failure, which uses more conservative thresholds.
|
||||
|
@@ -0,0 +1,73 @@
|
||||
// Copyright 2015 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 COMPONENTS_MEMORY_PRESSURE_DIRECT_MEMORY_PRESSURE_CALCULATOR_WIN_H_
|
||||
#define COMPONENTS_MEMORY_PRESSURE_DIRECT_MEMORY_PRESSURE_CALCULATOR_WIN_H_
|
||||
|
||||
#include "components/memory_pressure/memory_pressure_calculator.h"
|
||||
|
||||
#include "base/macros.h"
|
||||
#include "base/process/process_metrics.h"
|
||||
#include "build/build_config.h"
|
||||
|
||||
namespace memory_pressure {
|
||||
|
||||
#if defined(MEMORY_PRESSURE_IS_POLLING)
|
||||
|
||||
// OS-specific implementation of MemoryPressureCalculator. This is only defined
|
||||
// and used on platforms that do not have native memory pressure signals
|
||||
// (ChromeOS, Linux, Windows). OSes that do have native signals simply hook into
|
||||
// the appropriate subsystem (Android, Mac OS X).
|
||||
class DirectMemoryPressureCalculator : public MemoryPressureCalculator {
|
||||
public:
|
||||
// Exposed for unittesting. See .cc file for detailed discussion of these
|
||||
// constants.
|
||||
static const int kLargeMemoryThresholdMb;
|
||||
static const int kSmallMemoryDefaultModerateThresholdMb;
|
||||
static const int kSmallMemoryDefaultCriticalThresholdMb;
|
||||
static const int kLargeMemoryDefaultModerateThresholdMb;
|
||||
static const int kLargeMemoryDefaultCriticalThresholdMb;
|
||||
|
||||
// Default constructor. Will choose thresholds automatically based on the
|
||||
// actual amount of system memory installed.
|
||||
DirectMemoryPressureCalculator();
|
||||
|
||||
// Constructor with explicit memory thresholds. These represent the amount of
|
||||
// free memory below which the applicable memory pressure state applies.
|
||||
DirectMemoryPressureCalculator(int moderate_threshold_mb,
|
||||
int critical_threshold_mb);
|
||||
|
||||
~DirectMemoryPressureCalculator() override {}
|
||||
|
||||
// Calculates the current pressure level.
|
||||
MemoryPressureLevel CalculateCurrentPressureLevel() override;
|
||||
|
||||
int moderate_threshold_mb() const { return moderate_threshold_mb_; }
|
||||
int critical_threshold_mb() const { return critical_threshold_mb_; }
|
||||
|
||||
private:
|
||||
friend class TestDirectMemoryPressureCalculator;
|
||||
|
||||
// Gets system memory status. This is virtual as a unittesting hook and by
|
||||
// default this invokes base::GetSystemMemoryInfo.
|
||||
virtual bool GetSystemMemoryInfo(base::SystemMemoryInfoKB* mem_info) const;
|
||||
|
||||
// Uses GetSystemMemoryInfo to automatically infer appropriate values for
|
||||
// moderate_threshold_mb_ and critical_threshold_mb_.
|
||||
void InferThresholds();
|
||||
|
||||
// Threshold amounts of available memory that trigger pressure levels. See
|
||||
// memory_pressure_monitor_win.cc for a discussion of reasonable values for
|
||||
// these.
|
||||
int moderate_threshold_mb_;
|
||||
int critical_threshold_mb_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(DirectMemoryPressureCalculator);
|
||||
};
|
||||
|
||||
#endif // defined(MEMORY_PRESSURE_IS_POLLING)
|
||||
|
||||
} // namespace memory_pressure
|
||||
|
||||
#endif // COMPONENTS_MEMORY_PRESSURE_DIRECT_MEMORY_PRESSURE_CALCULATOR_WIN_H_
|
@@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "components/memory_pressure/direct_memory_pressure_calculator.h"
|
||||
#include "components/memory_pressure/direct_memory_pressure_calculator_win.h"
|
||||
|
||||
#include "testing/gtest/include/gtest/gtest.h"
|
||||
|
||||
|
Reference in New Issue
Block a user