Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #include "chrome/browser/ui/toolbar/media_router_action.h" | 5 #include "chrome/browser/ui/toolbar/media_router_action.h" |
| 6 | 6 |
| 7 #include "base/metrics/user_metrics.h" | 7 #include "base/metrics/user_metrics.h" |
| 8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
| 9 #include "chrome/browser/media/router/issue.h" | 9 #include "chrome/browser/media/router/issue.h" |
| 10 #include "chrome/browser/media/router/media_route.h" | 10 #include "chrome/browser/media/router/media_route.h" |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 29 | 29 |
| 30 namespace { | 30 namespace { |
| 31 | 31 |
| 32 media_router::MediaRouter* GetMediaRouter(Browser* browser) { | 32 media_router::MediaRouter* GetMediaRouter(Browser* browser) { |
| 33 return media_router::MediaRouterFactory::GetApiForBrowserContext( | 33 return media_router::MediaRouterFactory::GetApiForBrowserContext( |
| 34 browser->profile()); | 34 browser->profile()); |
| 35 } | 35 } |
| 36 | 36 |
| 37 } // namespace | 37 } // namespace |
| 38 | 38 |
| 39 MediaRouterAction::MediaRouterAction(Browser* browser) | 39 MediaRouterAction::MediaRouterAction(Browser* browser, |
| 40 ToolbarActionsBar* toolbar_actions_bar) | |
| 40 : media_router::IssuesObserver(GetMediaRouter(browser)), | 41 : media_router::IssuesObserver(GetMediaRouter(browser)), |
| 41 media_router::LocalMediaRoutesObserver(GetMediaRouter(browser)), | 42 media_router::LocalMediaRoutesObserver(GetMediaRouter(browser)), |
| 42 media_router_active_icon_( | 43 media_router_active_icon_( |
| 43 ui::ResourceBundle::GetSharedInstance() | 44 ui::ResourceBundle::GetSharedInstance() |
| 44 .GetImageNamed(IDR_MEDIA_ROUTER_ACTIVE_ICON)), | 45 .GetImageNamed(IDR_MEDIA_ROUTER_ACTIVE_ICON)), |
| 45 media_router_error_icon_(ui::ResourceBundle::GetSharedInstance() | 46 media_router_error_icon_(ui::ResourceBundle::GetSharedInstance() |
| 46 .GetImageNamed(IDR_MEDIA_ROUTER_ERROR_ICON)), | 47 .GetImageNamed(IDR_MEDIA_ROUTER_ERROR_ICON)), |
| 47 media_router_idle_icon_(ui::ResourceBundle::GetSharedInstance() | 48 media_router_idle_icon_(ui::ResourceBundle::GetSharedInstance() |
| 48 .GetImageNamed(IDR_MEDIA_ROUTER_IDLE_ICON)), | 49 .GetImageNamed(IDR_MEDIA_ROUTER_IDLE_ICON)), |
| 49 media_router_warning_icon_( | 50 media_router_warning_icon_( |
| 50 ui::ResourceBundle::GetSharedInstance() | 51 ui::ResourceBundle::GetSharedInstance() |
| 51 .GetImageNamed(IDR_MEDIA_ROUTER_WARNING_ICON)), | 52 .GetImageNamed(IDR_MEDIA_ROUTER_WARNING_ICON)), |
| 52 current_icon_(&media_router_idle_icon_), | 53 current_icon_(&media_router_idle_icon_), |
| 53 has_local_display_route_(false), | 54 has_local_display_route_(false), |
| 54 delegate_(nullptr), | 55 delegate_(nullptr), |
| 55 browser_(browser), | 56 browser_(browser), |
| 57 toolbar_actions_bar_(toolbar_actions_bar), | |
| 56 platform_delegate_(MediaRouterActionPlatformDelegate::Create(browser)), | 58 platform_delegate_(MediaRouterActionPlatformDelegate::Create(browser)), |
| 57 contextual_menu_(browser), | 59 contextual_menu_(browser), |
| 58 tab_strip_model_observer_(this), | 60 tab_strip_model_observer_(this), |
| 59 weak_ptr_factory_(this) { | 61 weak_ptr_factory_(this) { |
| 60 DCHECK(browser_); | 62 DCHECK(browser_); |
| 63 DCHECK(toolbar_actions_bar_); | |
| 61 tab_strip_model_observer_.Add(browser_->tab_strip_model()); | 64 tab_strip_model_observer_.Add(browser_->tab_strip_model()); |
| 62 | 65 |
| 63 RegisterObserver(); | 66 RegisterObserver(); |
| 64 OnHasLocalDisplayRouteUpdated( | 67 OnHasLocalDisplayRouteUpdated( |
| 65 GetMediaRouter(browser)->HasLocalDisplayRoute()); | 68 GetMediaRouter(browser)->HasLocalDisplayRoute()); |
| 66 } | 69 } |
| 67 | 70 |
| 68 MediaRouterAction::~MediaRouterAction() { | 71 MediaRouterAction::~MediaRouterAction() { |
| 69 UnregisterObserver(); | 72 UnregisterObserver(); |
| 70 } | 73 } |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 185 delegate_->OnPopupShown(true); | 188 delegate_->OnPopupShown(true); |
| 186 } | 189 } |
| 187 | 190 |
| 188 void MediaRouterAction::UpdatePopupState() { | 191 void MediaRouterAction::UpdatePopupState() { |
| 189 MediaRouterDialogControllerImpl* controller = | 192 MediaRouterDialogControllerImpl* controller = |
| 190 GetMediaRouterDialogController(); | 193 GetMediaRouterDialogController(); |
| 191 | 194 |
| 192 if (!controller) | 195 if (!controller) |
| 193 return; | 196 return; |
| 194 | 197 |
| 195 // Immediately keep track of MediaRouterAction in the controller. If it was | 198 // When each browser window is created, its toolbar creates a |
| 196 // already set, this should be a no-op. | 199 // MediaRouterAction that is only destroyed when the browser window is torn |
| 197 controller->SetMediaRouterAction(weak_ptr_factory_.GetWeakPtr()); | 200 // down. |controller| will keep track of that instance. If |this| was created |
| 201 // in overflow mode, it will be destroyed when the overflow menu is closed. | |
|
Peter Kasting
2015/12/03 22:00:19
Now the problem is that there's lots of useful bac
apacible
2015/12/07 21:52:43
Added comments in the header file for UpdatePopupS
| |
| 202 // If SetMediaRouterAction() was previously called, this is a no-op. | |
| 203 if (!toolbar_actions_bar_->in_overflow_mode()) | |
| 204 controller->SetMediaRouterAction(weak_ptr_factory_.GetWeakPtr()); | |
| 198 | 205 |
| 199 // Update the button in case the pressed state is out of sync with dialog | 206 // Update the button in case the pressed state is out of sync with dialog |
| 200 // visibility. | 207 // visibility. |
| 201 if (controller->IsShowingMediaRouterDialog()) | 208 if (controller->IsShowingMediaRouterDialog()) |
| 202 OnPopupShown(); | 209 OnPopupShown(); |
| 203 else | 210 else |
| 204 OnPopupHidden(); | 211 OnPopupHidden(); |
| 205 } | 212 } |
| 206 | 213 |
| 207 MediaRouterDialogControllerImpl* | 214 MediaRouterDialogControllerImpl* |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 236 if (issue_) { | 243 if (issue_) { |
| 237 if (issue_->severity() == media_router::Issue::FATAL) | 244 if (issue_->severity() == media_router::Issue::FATAL) |
| 238 return &media_router_error_icon_; | 245 return &media_router_error_icon_; |
| 239 if (issue_->severity() == media_router::Issue::WARNING) | 246 if (issue_->severity() == media_router::Issue::WARNING) |
| 240 return &media_router_warning_icon_; | 247 return &media_router_warning_icon_; |
| 241 } | 248 } |
| 242 | 249 |
| 243 return has_local_display_route_ ? &media_router_active_icon_ | 250 return has_local_display_route_ ? &media_router_active_icon_ |
| 244 : &media_router_idle_icon_; | 251 : &media_router_idle_icon_; |
| 245 } | 252 } |
| OLD | NEW |