// Copyright (c) 2013 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 CHROMEOS_MEMORY_LOW_MEMORY_LISTENER_H_ #define CHROMEOS_MEMORY_LOW_MEMORY_LISTENER_H_ #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "chromeos/memory/chromeos_memory_export.h" namespace chromeos { class LowMemoryListenerDelegate; class LowMemoryListenerImpl; //////////////////////////////////////////////////////////////////////////////// // LowMemoryListener // // Class to handle observation of low memory device for changes so that we // can get a signal from the kernel about low memory conditions and notify // our delegate, who can take actions such as discarding tabs. // // This object is intended to be created and used on the UI thread. All // notifications are dispatched on the UI thread. class CHROMEOS_MEMORY_EXPORT LowMemoryListener { public: explicit LowMemoryListener(LowMemoryListenerDelegate* delegate); ~LowMemoryListener(); void Start(); void Stop(); private: // Callback from LowMemoryListenerImpl when memory is low. Called on the UI // thread. void OnMemoryLow(); scoped_refptr observer_; LowMemoryListenerDelegate* delegate_; base::WeakPtrFactory weak_factory_; DISALLOW_COPY_AND_ASSIGN(LowMemoryListener); }; } // namespace chromeos #endif // CHROMEOS_MEMORY_LOW_MEMORY_LISTENER_H_