1 // Copyright 2017 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 #include "chromecast/browser/memory_pressure_controller_impl.h"
6 
7 #include "base/bind.h"
8 
9 namespace chromecast {
10 
MemoryPressureControllerImpl()11 MemoryPressureControllerImpl::MemoryPressureControllerImpl() {
12   memory_pressure_listener_ = std::make_unique<base::MemoryPressureListener>(
13       FROM_HERE,
14       base::BindRepeating(&MemoryPressureControllerImpl::OnMemoryPressure,
15                           base::Unretained(this)));
16 }
17 
18 MemoryPressureControllerImpl::~MemoryPressureControllerImpl() = default;
19 
AddReceiver(mojo::PendingReceiver<mojom::MemoryPressureController> receiver)20 void MemoryPressureControllerImpl::AddReceiver(
21     mojo::PendingReceiver<mojom::MemoryPressureController> receiver) {
22   receivers_.Add(this, std::move(receiver));
23 }
24 
OnMemoryPressure(base::MemoryPressureListener::MemoryPressureLevel level)25 void MemoryPressureControllerImpl::OnMemoryPressure(
26     base::MemoryPressureListener::MemoryPressureLevel level) {
27   for (auto& observer : observers_)
28     observer->MemoryPressureLevelChanged(level);
29 }
30 
AddObserver(mojo::PendingRemote<mojom::MemoryPressureObserver> observer)31 void MemoryPressureControllerImpl::AddObserver(
32     mojo::PendingRemote<mojom::MemoryPressureObserver> observer) {
33   observers_.Add(std::move(observer));
34 }
35 
36 }  // namespace chromecast
37