OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CONTENT_BROWSER_MEMORY_MEMORY_COORDINATOR_H_ | 5 #ifndef CONTENT_BROWSER_MEMORY_MEMORY_COORDINATOR_H_ |
6 #define CONTENT_BROWSER_MEMORY_MEMORY_COORDINATOR_H_ | 6 #define CONTENT_BROWSER_MEMORY_MEMORY_COORDINATOR_H_ |
7 | 7 |
8 #include "base/memory/memory_coordinator_client_registry.h" | 8 #include "base/memory/memory_coordinator_client_registry.h" |
9 #include "base/memory/memory_pressure_monitor.h" | 9 #include "base/memory/memory_pressure_monitor.h" |
10 #include "base/process/process_handle.h" | 10 #include "base/process/process_handle.h" |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 mojom::MemoryState memory_state; | 93 mojom::MemoryState memory_state; |
94 bool is_visible = false; | 94 bool is_visible = false; |
95 std::unique_ptr<MemoryCoordinatorHandleImpl> handle; | 95 std::unique_ptr<MemoryCoordinatorHandleImpl> handle; |
96 }; | 96 }; |
97 | 97 |
98 // A map from process ID (RenderProcessHost::GetID()) to child process info. | 98 // A map from process ID (RenderProcessHost::GetID()) to child process info. |
99 using ChildInfoMap = std::map<int, ChildInfo>; | 99 using ChildInfoMap = std::map<int, ChildInfo>; |
100 | 100 |
101 ChildInfoMap& children() { return children_; } | 101 ChildInfoMap& children() { return children_; } |
102 | 102 |
103 private: | 103 private: |
104 #if !defined(OS_MACOSX) | 104 #if !defined(OS_MACOSX) |
105 FRIEND_TEST_ALL_PREFIXES(MemoryCoordinatorTest, HandleAdded); | 105 FRIEND_TEST_ALL_PREFIXES(MemoryCoordinatorTest, HandleAdded); |
106 FRIEND_TEST_ALL_PREFIXES(MemoryCoordinatorTest, CanSuspendRenderer); | 106 FRIEND_TEST_ALL_PREFIXES(MemoryCoordinatorTest, CanSuspendRenderer); |
107 FRIEND_TEST_ALL_PREFIXES(MemoryCoordinatorTest, CanThrottleRenderer); | 107 FRIEND_TEST_ALL_PREFIXES(MemoryCoordinatorTest, CanThrottleRenderer); |
108 #endif | 108 #endif |
109 FRIEND_TEST_ALL_PREFIXES(MemoryCoordinatorTest, | 109 FRIEND_TEST_ALL_PREFIXES(MemoryCoordinatorTest, |
110 ChildRemovedOnConnectionError); | 110 ChildRemovedOnConnectionError); |
| 111 FRIEND_TEST_ALL_PREFIXES(MemoryCoordinatorTest, SetChildMemoryState); |
| 112 |
| 113 // Called by SetChildMemoryState() to determine a child memory state based on |
| 114 // the current status of the child process. |
| 115 mojom::MemoryState OverrideChildState(mojom::MemoryState memroy_state, |
| 116 const ChildInfo& child); |
111 | 117 |
112 void SetDelegateForTesting( | 118 void SetDelegateForTesting( |
113 std::unique_ptr<MemoryCoordinatorDelegate> delegate); | 119 std::unique_ptr<MemoryCoordinatorDelegate> delegate); |
114 | 120 |
115 // Helper function of CreateHandle and AddChildForTesting. | 121 // Helper function of CreateHandle and AddChildForTesting. |
116 void CreateChildInfoMapEntry( | 122 void CreateChildInfoMapEntry( |
117 int render_process_id, | 123 int render_process_id, |
118 std::unique_ptr<MemoryCoordinatorHandleImpl> handle); | 124 std::unique_ptr<MemoryCoordinatorHandleImpl> handle); |
119 | 125 |
120 // Tracks child processes. An entry is added when a renderer connects to | 126 // Tracks child processes. An entry is added when a renderer connects to |
121 // MemoryCoordinator and removed automatically when an underlying binding is | 127 // MemoryCoordinator and removed automatically when an underlying binding is |
122 // disconnected. | 128 // disconnected. |
123 ChildInfoMap children_; | 129 ChildInfoMap children_; |
124 | 130 |
125 std::unique_ptr<MemoryCoordinatorDelegate> delegate_; | 131 std::unique_ptr<MemoryCoordinatorDelegate> delegate_; |
126 | 132 |
127 DISALLOW_COPY_AND_ASSIGN(MemoryCoordinator); | 133 DISALLOW_COPY_AND_ASSIGN(MemoryCoordinator); |
128 }; | 134 }; |
129 | 135 |
130 } // namespace content | 136 } // namespace content |
131 | 137 |
132 #endif // CONTENT_BROWSER_MEMORY_MEMORY_COORDINATOR_H_ | 138 #endif // CONTENT_BROWSER_MEMORY_MEMORY_COORDINATOR_H_ |
OLD | NEW |