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

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

Issue 2710823003: NOCOMMIT prototype: GRC service plumbing and process priority
Patch Set: Redundant includes Created 3 years, 9 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
(Empty)
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 #ifndef SERVICES_RESOURCE_COORDINATOR_COORDINATION_UNIT_H_
6 #define SERVICES_RESOURCE_COORDINATOR_COORDINATION_UNIT_H_
7
8 #include <list>
9
10 #include "base/optional.h"
11 #include "mojo/public/cpp/bindings/binding_set.h"
12 #include "mojo/public/cpp/bindings/interface_request.h"
13 #include "mojo/public/cpp/bindings/strong_binding.h"
14 #include "services/resource_coordinator/public/interfaces/coordination_unit.mojo m.h"
15 #include "services/resource_coordinator/public/interfaces/coordination_unit_prov ider.mojom.h"
16 #include "services/service_manager/public/cpp/connection.h"
17
18 namespace resource_coordinator {
19
20 class CoordinationUnit : public mojom::CoordinationUnit {
21 public:
22 CoordinationUnit(mojom::CoordinationUnitIDPtr options);
23 ~CoordinationUnit() override;
24
25 // Overridden from mojom::CoordinationUnit:
26 void SendEvent(mojom::EventPtr event) override;
27 void GetID(const GetIDCallback& callback) override;
28 void Duplicate(mojom::CoordinationUnitRequest request) override;
29 void AddChild(mojom::CoordinationUnitIDPtr child_id) override;
30 void SetPolicyCallback(mojom::PolicyCallbackPtr callback) override;
31
32 private:
33 bool AddChild(CoordinationUnit* child);
34 void RemoveChild(CoordinationUnit* child);
35 void AddParent(CoordinationUnit* parent);
36 void RemoveParent(CoordinationUnit* parent);
37 void RecalcPolicy();
38 void UnregisterPolicyCallback();
39
40 enum StateFlags : uint8_t { TAB_VISIBLE, AUDIO_PLAYING, NUM_STATE_FLAGS };
41 bool SelfOrParentHasFlagSet(StateFlags state);
42
43 mojo::BindingSet<mojom::CoordinationUnit> bindings_;
44 mojom::IDType type_;
45 std::string id_;
46 int64_t id_hash_;
47 std::set<CoordinationUnit*> children_;
48 std::set<CoordinationUnit*> parents_;
49
50 mojom::PolicyCallbackPtr policy_callback_;
51 mojom::PolicyPtr current_policy_;
52
53 base::Optional<bool> state_flags_[NUM_STATE_FLAGS];
54
55 DISALLOW_COPY_AND_ASSIGN(CoordinationUnit);
56 };
57
58 } // namespace resource_coordinator
59
60 #endif // SERVICES_RESOURCE_COORDINATOR_COORDINATION_UNIT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698