1 // Copyright 2016 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 BASE_MEMORY_MEMORY_COORDINATOR_PROXY_H_ 6 #define BASE_MEMORY_MEMORY_COORDINATOR_PROXY_H_ 7 8 #include "base/base_export.h" 9 #include "base/callback.h" 10 #include "base/memory/memory_coordinator_client.h" 11 #include "base/memory/singleton.h" 12 13 namespace base { 14 15 // The MemoryCoordinator interface. See comments in MemoryCoordinatorProxy for 16 // method descriptions. 17 class BASE_EXPORT MemoryCoordinator { 18 public: 19 virtual ~MemoryCoordinator() = default; 20 21 virtual MemoryState GetCurrentMemoryState() const = 0; 22 }; 23 24 // The proxy of MemoryCoordinator to be accessed from components that are not 25 // in content/browser e.g. net. 26 class BASE_EXPORT MemoryCoordinatorProxy { 27 public: 28 static MemoryCoordinatorProxy* GetInstance(); 29 30 // Sets an implementation of MemoryCoordinator. MemoryCoordinatorProxy doesn't 31 // take the ownership of |coordinator|. It must outlive this proxy. 32 // This should be called before any components starts using this proxy. 33 static void SetMemoryCoordinator(MemoryCoordinator* coordinator); 34 35 // Returns the current memory state. 36 MemoryState GetCurrentMemoryState() const; 37 38 private: 39 friend struct base::DefaultSingletonTraits<MemoryCoordinatorProxy>; 40 41 MemoryCoordinatorProxy(); 42 virtual ~MemoryCoordinatorProxy(); 43 44 DISALLOW_COPY_AND_ASSIGN(MemoryCoordinatorProxy); 45 }; 46 47 } // namespace base 48 49 #endif // BASE_MEMORY_MEMORY_COORDINATOR_PROXY_H_ 50