blob: bc7aa0f110087e23cee97c8f9d82f059ef65c3f9 [file] [log] [blame]
// Copyright 2018 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 CHROME_BROWSER_ANDROID_OOM_INTERVENTION_OOM_INTERVENTION_CONFIG_H_
#define CHROME_BROWSER_ANDROID_OOM_INTERVENTION_OOM_INTERVENTION_CONFIG_H_
#include "third_party/blink/public/platform/oom_intervention.mojom.h"
// Holds the configurations provided by field trials for OOM intervention.
class OomInterventionConfig {
public:
static const OomInterventionConfig* GetInstance();
// True when field trials enables intervention and config is valid.
bool is_intervention_enabled() const { return is_intervention_enabled_; }
// True when browser swap monitor is enabled.
bool is_swap_monitor_enabled() const { return is_swap_monitor_enabled_; }
// True if Android memory pressure signals should be monitored.
bool use_components_callback() const { return use_components_callback_; }
// True if on detection of near OOM condition the renderer JS should be
// paused.
bool is_renderer_pause_enabled() const { return is_renderer_pause_enabled_; }
// True if on detection of near OOM condition the ad iframes should be
// navigated.
bool is_navigate_ads_enabled() const { return is_navigate_ads_enabled_; }
// True if on detection of near OOM condition V8 memory should be purged.
bool is_purge_v8_memory_enabled() const {
return is_purge_v8_memory_enabled_;
}
// True if detection should be enabled on renderers.
bool should_detect_in_renderer() const { return should_detect_in_renderer_; }
// The threshold for swap size in the system to start monitoring.
uint64_t swapfree_threshold() const { return swapfree_threshold_; }
// The arguments for detecting near OOM situation in renderer.
blink::mojom::DetectionArgsPtr GetRendererOomDetectionArgs() const;
private:
OomInterventionConfig();
~OomInterventionConfig();
bool is_intervention_enabled_ = false;
bool is_swap_monitor_enabled_ = false;
bool use_components_callback_ = false;
bool is_renderer_pause_enabled_ = false;
bool is_navigate_ads_enabled_ = false;
bool is_purge_v8_memory_enabled_ = false;
bool should_detect_in_renderer_ = false;
uint64_t swapfree_threshold_ = 0;
blink::mojom::DetectionArgsPtr renderer_detection_args_;
};
#endif // CHROME_BROWSER_ANDROID_OOM_INTERVENTION_OOM_INTERVENTION_CONFIG_H_