Home | History | Annotate | Download | only in public
      1 // Copyright 2014 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 ATHENA_RESOURCE_MANAGER_PUBLIC_RESOURCE_MANAGER_DLEGATE_H_
      6 #define ATHENA_RESOURCE_MANAGER_PUBLIC_RESOURCE_MANAGER_DLEGATE_H_
      7 
      8 #include <string>
      9 
     10 #include "athena/athena_export.h"
     11 #include "base/macros.h"
     12 
     13 namespace athena {
     14 
     15 // The resource manager delegate which abstracts system function calls to allow
     16 // unit tests to override them.
     17 class ATHENA_EXPORT ResourceManagerDelegate {
     18  public:
     19   static ResourceManagerDelegate* CreateResourceManagerDelegate();
     20 
     21   ResourceManagerDelegate() {}
     22   virtual ~ResourceManagerDelegate() {}
     23 
     24   // Returns the percentage of memory used in the system.
     25   virtual int GetUsedMemoryInPercent() = 0;
     26 
     27   // Returns the time memory pressure interval time in ms to be used by the
     28   // memory pressure monitoring system. This is also used as the default time
     29   // difference between resource de-allocation operation calls.
     30   virtual int MemoryPressureIntervalInMS() = 0;
     31 };
     32 
     33 }  // namespace athena
     34 
     35 #endif  // ATHENA_RESOURCE_MANAGER_PUBLIC_RESOURCE_MANAGER_DLEGATE_H_
     36