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

Side by Side Diff: services/resource_coordinator/coordination_unit/coordination_unit_impl.h

Issue 2889273002: Revert of [GRC] Process Coordination Unit support for Global Resource Controller (Closed)
Patch Set: Created 3 years, 7 months 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 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 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 SERVICES_RESOURCE_COORDINATOR_COORDINATION_UNIT_COORDINATION_UNIT_IMPL_H _ 5 #ifndef SERVICES_RESOURCE_COORDINATOR_COORDINATION_UNIT_COORDINATION_UNIT_IMPL_H _
6 #define SERVICES_RESOURCE_COORDINATOR_COORDINATION_UNIT_COORDINATION_UNIT_IMPL_H _ 6 #define SERVICES_RESOURCE_COORDINATOR_COORDINATION_UNIT_COORDINATION_UNIT_IMPL_H _
7 7
8 #include <list> 8 #include <list>
9 #include <memory>
10 #include <utility>
11 9
12 #include "base/optional.h" 10 #include "base/optional.h"
13 #include "mojo/public/cpp/bindings/binding_set.h" 11 #include "mojo/public/cpp/bindings/binding_set.h"
14 #include "mojo/public/cpp/bindings/interface_request.h" 12 #include "mojo/public/cpp/bindings/interface_request.h"
15 #include "mojo/public/cpp/bindings/strong_binding.h" 13 #include "mojo/public/cpp/bindings/strong_binding.h"
16 #include "services/resource_coordinator/public/cpp/coordination_unit_id.h" 14 #include "services/resource_coordinator/public/cpp/coordination_unit_id.h"
17 #include "services/resource_coordinator/public/interfaces/coordination_unit.mojo m.h" 15 #include "services/resource_coordinator/public/interfaces/coordination_unit.mojo m.h"
18 #include "services/resource_coordinator/public/interfaces/coordination_unit_prov ider.mojom.h" 16 #include "services/resource_coordinator/public/interfaces/coordination_unit_prov ider.mojom.h"
19 #include "services/service_manager/public/cpp/service_context_ref.h" 17 #include "services/service_manager/public/cpp/service_context_ref.h"
20 18
21 namespace resource_coordinator { 19 namespace resource_coordinator {
22 20
23 class CoordinationUnitImpl : public mojom::CoordinationUnit { 21 class CoordinationUnitImpl : public mojom::CoordinationUnit {
24 public: 22 public:
25 CoordinationUnitImpl( 23 CoordinationUnitImpl(
26 const CoordinationUnitID& id, 24 const CoordinationUnitID& id,
27 std::unique_ptr<service_manager::ServiceContextRef> service_ref); 25 std::unique_ptr<service_manager::ServiceContextRef> service_ref);
28 ~CoordinationUnitImpl() override; 26 ~CoordinationUnitImpl() override;
29 27
30 // Overridden from mojom::CoordinationUnit: 28 // Overridden from mojom::CoordinationUnit:
31 void SendEvent(mojom::EventPtr event) override; 29 void SendEvent(mojom::EventPtr event) override;
32 void GetID(const GetIDCallback& callback) override; 30 void GetID(const GetIDCallback& callback) override;
33 void Duplicate(mojom::CoordinationUnitRequest request) override; 31 void Duplicate(mojom::CoordinationUnitRequest request) override;
34 void AddChild(const CoordinationUnitID& child_id) override; 32 void AddChild(const CoordinationUnitID& child_id) override;
35 void SetCoordinationPolicyCallback( 33 void SetCoordinationPolicyCallback(
36 mojom::CoordinationPolicyCallbackPtr callback) override; 34 mojom::CoordinationPolicyCallbackPtr callback) override;
37 35
38 virtual double GetCPUUsageForTesting();
39
40 protected:
41 CoordinationUnitID id_;
42
43 private: 36 private:
44 bool AddChild(CoordinationUnitImpl* child); 37 bool AddChild(CoordinationUnitImpl* child);
45 void RemoveChild(CoordinationUnitImpl* child); 38 void RemoveChild(CoordinationUnitImpl* child);
46 void AddParent(CoordinationUnitImpl* parent); 39 void AddParent(CoordinationUnitImpl* parent);
47 void RemoveParent(CoordinationUnitImpl* parent); 40 void RemoveParent(CoordinationUnitImpl* parent);
48 bool HasParent(CoordinationUnitImpl* unit); 41 bool HasParent(CoordinationUnitImpl* unit);
49 bool HasChild(CoordinationUnitImpl* unit); 42 bool HasChild(CoordinationUnitImpl* unit);
50 43
51 void RecalcCoordinationPolicy(); 44 void RecalcCoordinationPolicy();
52 void UnregisterCoordinationPolicyCallback(); 45 void UnregisterCoordinationPolicyCallback();
53 46
54 enum StateFlags : uint8_t { 47 enum StateFlags : uint8_t {
55 kTestState, 48 kTestState,
56 kTabVisible, 49 kTabVisible,
57 kAudioPlaying, 50 kAudioPlaying,
58 kNumStateFlags 51 kNumStateFlags
59 }; 52 };
60 bool SelfOrParentHasFlagSet(StateFlags state); 53 bool SelfOrParentHasFlagSet(StateFlags state);
61 54
62 std::unique_ptr<service_manager::ServiceContextRef> service_ref_; 55 std::unique_ptr<service_manager::ServiceContextRef> service_ref_;
63 mojo::BindingSet<mojom::CoordinationUnit> bindings_; 56 mojo::BindingSet<mojom::CoordinationUnit> bindings_;
57 CoordinationUnitID id_;
64 58
65 std::set<CoordinationUnitImpl*> children_; 59 std::set<CoordinationUnitImpl*> children_;
66 std::set<CoordinationUnitImpl*> parents_; 60 std::set<CoordinationUnitImpl*> parents_;
67 61
68 mojom::CoordinationPolicyCallbackPtr policy_callback_; 62 mojom::CoordinationPolicyCallbackPtr policy_callback_;
69 mojom::CoordinationPolicyPtr current_policy_; 63 mojom::CoordinationPolicyPtr current_policy_;
70 64
71 base::Optional<bool> state_flags_[kNumStateFlags]; 65 base::Optional<bool> state_flags_[kNumStateFlags];
72 66
73 DISALLOW_COPY_AND_ASSIGN(CoordinationUnitImpl); 67 DISALLOW_COPY_AND_ASSIGN(CoordinationUnitImpl);
74 }; 68 };
75 69
76 } // namespace resource_coordinator 70 } // namespace resource_coordinator
77 71
78 #endif // SERVICES_RESOURCE_COORDINATOR_COORDINATION_UNIT_COORDINATION_UNIT_IMP L_H_ 72 #endif // SERVICES_RESOURCE_COORDINATOR_COORDINATION_UNIT_COORDINATION_UNIT_IMP L_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698