// Copyright 2016 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 BASE_MEMORY_MEMORY_COORDINATOR_PROXY_H_ #define BASE_MEMORY_MEMORY_COORDINATOR_PROXY_H_ #include "base/base_export.h" #include "base/callback.h" #include "base/memory/memory_coordinator_client.h" #include "base/memory/singleton.h" namespace base { // The MemoryCoordinator interface. See comments in MemoryCoordinatorProxy for // method descriptions. class BASE_EXPORT MemoryCoordinator { public: virtual ~MemoryCoordinator() = default; virtual MemoryState GetCurrentMemoryState() const = 0; }; // The proxy of MemoryCoordinator to be accessed from components that are not // in content/browser e.g. net. class BASE_EXPORT MemoryCoordinatorProxy { public: static MemoryCoordinatorProxy* GetInstance(); // Sets an implementation of MemoryCoordinator. MemoryCoordinatorProxy doesn't // take the ownership of |coordinator|. It must outlive this proxy. // This should be called before any components starts using this proxy. static void SetMemoryCoordinator(MemoryCoordinator* coordinator); // Returns the current memory state. MemoryState GetCurrentMemoryState() const; private: friend struct base::DefaultSingletonTraits; MemoryCoordinatorProxy(); virtual ~MemoryCoordinatorProxy(); DISALLOW_COPY_AND_ASSIGN(MemoryCoordinatorProxy); }; } // namespace base #endif // BASE_MEMORY_MEMORY_COORDINATOR_PROXY_H_