Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3124)

Unified Diff: base/memory/memory_coordinator_proxy.h

Issue 2565323002: Stop using callbacks in MemoryCoordinatorProxy (Closed)
Patch Set: fix Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | base/memory/memory_coordinator_proxy.cc » ('j') | content/browser/memory/memory_coordinator.h » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/memory/memory_coordinator_proxy.h
diff --git a/base/memory/memory_coordinator_proxy.h b/base/memory/memory_coordinator_proxy.h
index 4148da5dceec0c59e39462a6f740569263432ba9..2adf5657de490b5f1bdbd05b6c4fbf5e5babe3ab 100644
--- a/base/memory/memory_coordinator_proxy.h
+++ b/base/memory/memory_coordinator_proxy.h
@@ -6,33 +6,38 @@
#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"
+#include "base/memory/weak_ptr.h"
namespace base {
+// An interface to MemoryCoordinator. See comments in MemoryCoordinatorProxy for
+// method descriptions.
+class BASE_EXPORT MemoryCoordinatorInterface {
+ public:
+ virtual ~MemoryCoordinatorInterface() {}
+
+ virtual MemoryState GetLocalMemoryState() = 0;
dcheng 2016/12/12 07:27:07 Two nits: 1) I think it's more common to document
bashi 2016/12/12 07:38:39 Let me clarify your comments. Do you mean moving c
dcheng 2016/12/12 08:31:13 Yes.
chrisha 2016/12/13 15:42:47 +1 to dropping "Interface" and putting the comment
+ virtual void SetMemoryStateForTesting(MemoryState state) = 0;
+};
+
// The proxy of MemoryCoordinator to be accessed from components that are not
// in content/browser e.g. net.
class BASE_EXPORT MemoryCoordinatorProxy {
public:
- using GetCurrentMemoryStateCallback = base::Callback<MemoryState()>;
- using SetCurrentMemoryStateCallback = base::Callback<void(MemoryState)>;
-
static MemoryCoordinatorProxy* GetInstance();
- // Returns the current memory state.
- MemoryState GetCurrentMemoryState() const;
-
- // Sets the current memory state. This function is for testing only.
- void SetCurrentMemoryStateForTesting(MemoryState memory_state);
+ // Sets an instance of MemoryCoordinator
+ void Set(WeakPtr<MemoryCoordinatorInterface> instance);
dcheng 2016/12/12 07:27:07 Does this need to be a weak pointer? Maybe it shou
bashi 2016/12/12 07:38:39 Sure. But I think it would be better to have expli
dcheng 2016/12/12 08:31:13 I actually prefer that model: the WeakPtr make it
chrisha 2016/12/13 15:42:47 Ditto. I'd prefer explicit management here. We alr
- // Sets state-getter callback.
- void SetGetCurrentMemoryStateCallback(GetCurrentMemoryStateCallback callback);
+ // Returns the process's current memory state. Note that the local state
+ // could be different from the global memory state as some processes cannot
+ // be suspended.
+ MemoryState GetLocalMemoryState() const;
- // Sets state-setter callback.
- void SetSetCurrentMemoryStateForTestingCallback(
- SetCurrentMemoryStateCallback callback);
+ // Sets the memory state of this process. This function is for testing only.
+ void SetMemoryStateForTesting(MemoryState memory_state);
chrisha 2016/12/13 15:42:47 Why are these two functions needed here, if it's a
private:
friend struct base::DefaultSingletonTraits<MemoryCoordinatorProxy>;
@@ -40,8 +45,7 @@ class BASE_EXPORT MemoryCoordinatorProxy {
MemoryCoordinatorProxy();
virtual ~MemoryCoordinatorProxy();
- GetCurrentMemoryStateCallback getter_callback_;
- SetCurrentMemoryStateCallback setter_callback_;
+ WeakPtr<MemoryCoordinatorInterface> instance_;
DISALLOW_COPY_AND_ASSIGN(MemoryCoordinatorProxy);
};
« no previous file with comments | « no previous file | base/memory/memory_coordinator_proxy.cc » ('j') | content/browser/memory/memory_coordinator.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698