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

Unified Diff: chrome/browser/ui/toolbar/media_router_action.cc

Issue 1383653002: MediaRouterAction: Only observe Media Routes when there is a local route. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/toolbar/media_router_action.cc
diff --git a/chrome/browser/ui/toolbar/media_router_action.cc b/chrome/browser/ui/toolbar/media_router_action.cc
index 4d2ca8d54daa45488831eb6e01a582dddc6fa63f..7a9e6ff3e59ccd6cdae6281c943d29167f78098b 100644
--- a/chrome/browser/ui/toolbar/media_router_action.cc
+++ b/chrome/browser/ui/toolbar/media_router_action.cc
@@ -25,9 +25,31 @@
using media_router::MediaRouterDialogControllerImpl;
+MediaRouterAction::ActionMediaRoutesObserver::ActionMediaRoutesObserver(
+ media_router::MediaRouter* router,
+ MediaRouterAction* action)
+ : MediaRoutesObserver(router),
+ action_(action) {
+ DCHECK(action);
+}
+
+MediaRouterAction::ActionMediaRoutesObserver::~ActionMediaRoutesObserver() {
+}
+
+void MediaRouterAction::ActionMediaRoutesObserver::OnRoutesUpdated(
+ const std::vector<media_router::MediaRoute>& routes) {
+ bool has_local_route =
+ std::find_if(routes.begin(), routes.end(),
+ [](const media_router::MediaRoute& route) {
+ return route.is_local(); }) !=
+ routes.end();
+
+ action_->SetHasLocalRoute(has_local_route);
imcheng 2015/10/01 18:46:50 there should be a comment that |this| will be dele
apacible 2015/10/01 23:21:47 Done (after moving this to MediaRouterMojoImpl).
+}
+
MediaRouterAction::MediaRouterAction(Browser* browser)
: media_router::IssuesObserver(GetMediaRouter(browser)),
- media_router::MediaRoutesObserver(GetMediaRouter(browser)),
+ media_router::LocalMediaRoutesObserver(GetMediaRouter(browser)),
media_router_active_icon_(
ui::ResourceBundle::GetSharedInstance()
.GetImageNamed(IDR_MEDIA_ROUTER_ACTIVE_ICON)),
@@ -42,6 +64,8 @@ MediaRouterAction::MediaRouterAction(Browser* browser)
has_local_route_(false),
delegate_(nullptr),
browser_(browser),
+ routes_observer_(new ActionMediaRoutesObserver(
imcheng 2015/10/01 18:46:50 So we are still sending a routes query on construc
apacible 2015/10/01 23:21:47 Talked offline. Done.
+ GetMediaRouter(browser), this)),
platform_delegate_(MediaRouterActionPlatformDelegate::Create(browser)),
contextual_menu_(browser),
tab_strip_model_observer_(this),
@@ -51,6 +75,7 @@ MediaRouterAction::MediaRouterAction(Browser* browser)
}
MediaRouterAction::~MediaRouterAction() {
+ routes_observer_.reset();
imcheng 2015/10/01 18:46:50 not needed?
apacible 2015/10/01 23:21:47 Done.
}
std::string MediaRouterAction::GetId() const {
@@ -138,14 +163,10 @@ void MediaRouterAction::OnIssueUpdated(const media_router::Issue* issue) {
MaybeUpdateIcon();
}
-void MediaRouterAction::OnRoutesUpdated(
- const std::vector<media_router::MediaRoute>& routes) {
- has_local_route_ =
- std::find_if(routes.begin(), routes.end(),
- [](const media_router::MediaRoute& route) {
- return route.is_local(); }) !=
- routes.end();
- MaybeUpdateIcon();
+void MediaRouterAction::OnLocalRouteCreated() {
+ if (!routes_observer_)
+ routes_observer_.reset(new ActionMediaRoutesObserver(
+ GetMediaRouter(browser_), this));
}
void MediaRouterAction::ActiveTabChanged(content::WebContents* old_contents,
@@ -167,6 +188,15 @@ void MediaRouterAction::OnPopupShown() {
delegate_->OnPopupShown(true);
}
+void MediaRouterAction::SetHasLocalRoute(bool has_local_route) {
+ has_local_route_ = has_local_route;
+
+ if (!has_local_route_)
+ routes_observer_.reset();
+
+ MaybeUpdateIcon();
+}
+
void MediaRouterAction::UpdatePopupState() {
MediaRouterDialogControllerImpl* controller =
GetMediaRouterDialogController();

Powered by Google App Engine
This is Rietveld 408576698