1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_CHROMEOS_MEMORY_LOW_MEMORY_OBSERVER_H_ 6#define CHROME_BROWSER_CHROMEOS_MEMORY_LOW_MEMORY_OBSERVER_H_ 7 8#include "base/memory/ref_counted.h" 9 10namespace chromeos { 11 12class LowMemoryObserverImpl; 13 14//////////////////////////////////////////////////////////////////////////////// 15// LowMemoryObserver 16// 17// Class to handle observation of low memory device for changes so that we 18// can get a signal from the kernel about low memory conditions and discard tabs 19// when that happens, instead of waiting for the OOM killer to kill renderers 20// (which is more drastic, but still necessary and possible). 21// 22// This object starts and stops the observation, and can be created or deleted 23// from any thread, but the observation occurs on the FILE thread, and tabs are 24// discarded on the UI thread. 25class LowMemoryObserver { 26 public: 27 LowMemoryObserver(); 28 ~LowMemoryObserver(); 29 30 void Start(); 31 void Stop(); 32 33 private: 34 scoped_refptr<LowMemoryObserverImpl> observer_; 35 36 DISALLOW_COPY_AND_ASSIGN(LowMemoryObserver); 37}; 38 39} // namespace chromeos 40 41#endif // CHROME_BROWSER_CHROMEOS_MEMORY_LOW_MEMORY_OBSERVER_H_ 42