OLD | NEW |
---|---|
(Empty) | |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #ifndef CHROME_BROWSER_UI_TOOLBAR_MEDIA_ROUTER_ACTION_CONTROLLER_H_ | |
6 #define CHROME_BROWSER_UI_TOOLBAR_MEDIA_ROUTER_ACTION_CONTROLLER_H_ | |
7 | |
8 #include <memory> | |
9 #include <string> | |
10 #include <vector> | |
11 | |
12 #include "base/observer_list.h" | |
13 #include "chrome/browser/extensions/component_migration_helper.h" | |
mark a. foltz
2016/09/09 17:48:29
Can you forward declare ComponentMigrationHelper?
takumif
2016/09/12 19:01:32
No, because it includes declaration for ComponentA
| |
14 #include "chrome/browser/media/router/issues_observer.h" | |
15 #include "chrome/browser/media/router/media_router_factory.h" | |
mark a. foltz
2016/09/09 17:48:29
Is this used? Or can you forward declare MediaRout
takumif
2016/09/12 19:01:32
It's not used here. Removed.
| |
16 #include "chrome/browser/media/router/media_routes_observer.h" | |
17 #include "chrome/browser/profiles/profile.h" | |
mark a. foltz
2016/09/09 17:48:29
Can you forward declare Profile?
takumif
2016/09/12 19:01:31
Done.
| |
18 #include "components/prefs/pref_change_registrar.h" | |
19 | |
20 class MediaRouterActionControllerUnitTest; | |
mark a. foltz
2016/09/09 17:48:29
This seems to be unused
takumif
2016/09/12 19:01:32
Removed.
| |
21 | |
22 // Controller for MediaRouterAction that determines when to show and hide the | |
mark a. foltz
2016/09/09 17:48:29
Please document threading assumptions, i.e. this c
takumif
2016/09/12 19:01:31
Done.
| |
23 // action icon on the toolbar. | |
24 // There should be one instance of this class per profile. | |
mark a. foltz
2016/09/09 17:48:28
Sorry for the churn, but my current thinking is we
imcheng
2016/09/09 18:12:25
I think that makes sense given that we face opposi
| |
25 class MediaRouterActionController : public media_router::IssuesObserver, | |
26 public media_router::MediaRoutesObserver { | |
27 public: | |
28 // MediaRouterAction will observe MediaRouterActionController to update its | |
29 // icon. | |
30 class Observer { | |
mark a. foltz
2016/09/09 17:48:29
This does not seem to be used (yet). Is there a s
| |
31 public: | |
32 virtual void OnIssueUpdated(const media_router::Issue* issue) = 0; | |
33 virtual void OnLocalRouteUpdated(bool has_local_route) = 0; | |
34 }; | |
35 | |
36 MediaRouterActionController(Profile* profile, | |
37 media_router::MediaRouter* router); | |
38 MediaRouterActionController( | |
mark a. foltz
2016/09/09 17:48:28
Normally |router| and |component_action_delegate|
takumif
2016/09/12 19:01:32
Done.
| |
39 Profile* profile, | |
40 media_router::MediaRouter* router, | |
41 extensions::ComponentMigrationHelper::ComponentActionDelegate* | |
42 component_action_delegate); | |
43 ~MediaRouterActionController() override; | |
44 | |
45 // media_router::IssuesObserver: | |
46 void OnIssueUpdated(const media_router::Issue* issue) override; | |
47 | |
48 // media_router::MediaRoutesObserver: | |
49 void OnRoutesUpdated(const std::vector<media_router::MediaRoute>& routes, | |
50 const std::vector<media_router::MediaRoute::Id>& | |
51 joinable_route_ids) override; | |
52 | |
53 // Sets the preferences to always show the Media Router action icon on the | |
54 // toolbar. | |
55 // Also updates the presence of the action if necessary. | |
mark a. foltz
2016/09/09 17:48:29
Nit: wrap comment to previous line
takumif
2016/09/12 19:01:31
Done.
| |
56 void SetAlwaysShowActionPref(bool always_show); | |
57 | |
58 bool HasLocalRoute() const; | |
mark a. foltz
2016/09/09 17:48:28
Should this be part of the Observer API?
If this
| |
59 | |
60 // Returns the current issue, or a nullptr if there is none. | |
61 media_router::Issue* GetIssue() const; | |
mark a. foltz
2016/09/09 17:48:29
Similar comments to |HasLocalRoute()|.
| |
62 | |
63 void AddObserver(Observer* observer); | |
64 void RemoveObserver(Observer* observer); | |
65 | |
66 private: | |
67 // Adds or removes the Media Router action icon to/from | |
68 // |component_action_delegate_| if necessary, depending on whether or not | |
69 // we have issues or local routes. | |
70 void MaybeAddOrRemoveAction(); | |
71 | |
72 // Whether the preference to always show the Media Router action icon is | |
73 // turned on for the current profile. | |
74 bool GetAlwaysShowActionPref(); | |
75 | |
76 // Returns ture if the Media Router action should be present on the toolbar | |
77 // or the overflow menu. | |
78 bool IsActionEnabled(); | |
79 | |
80 // The profile |this| is associated with. There should be one instance of this | |
81 // class per profile. | |
82 Profile* const profile_; | |
83 | |
84 // The delegate that is responsible for showing and hiding the icon on the | |
85 // toolbar. It is a KeyedService and outlives |this|. | |
86 extensions::ComponentMigrationHelper::ComponentActionDelegate* const | |
87 component_action_delegate_; | |
88 | |
89 std::unique_ptr<media_router::Issue> issue_; | |
90 bool has_local_display_route_; | |
91 | |
92 base::ObserverList<Observer> observers_; | |
93 | |
94 PrefChangeRegistrar pref_change_registrar_; | |
95 | |
96 DISALLOW_COPY_AND_ASSIGN(MediaRouterActionController); | |
97 }; | |
98 | |
99 #endif // CHROME_BROWSER_UI_TOOLBAR_MEDIA_ROUTER_ACTION_CONTROLLER_H_ | |
OLD | NEW |