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 "base/macros.h" | 5 #include "base/macros.h" |
| 6 #include "chrome/browser/extensions/browser_action_test_util.h" | 6 #include "chrome/browser/extensions/browser_action_test_util.h" |
| 7 #include "chrome/browser/extensions/extension_action_test_util.h" | 7 #include "chrome/browser/extensions/extension_action_test_util.h" |
| 8 #include "chrome/browser/ui/browser_commands.h" | 8 #include "chrome/browser/ui/browser_commands.h" |
| 9 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 9 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 10 #include "chrome/browser/ui/toolbar/media_router_action.h" | 10 #include "chrome/browser/ui/toolbar/media_router_action.h" |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 116 CreateToolbarModelForProfileWithoutWaitingForReady(profile()); | 116 CreateToolbarModelForProfileWithoutWaitingForReady(profile()); |
| 117 | 117 |
| 118 // browser() will only be valid once BrowserWithTestWindowTest::SetUp() | 118 // browser() will only be valid once BrowserWithTestWindowTest::SetUp() |
| 119 // has run. | 119 // has run. |
| 120 browser_action_test_util_.reset( | 120 browser_action_test_util_.reset( |
| 121 new BrowserActionTestUtil(browser(), false)); | 121 new BrowserActionTestUtil(browser(), false)); |
| 122 action_.reset( | 122 action_.reset( |
| 123 new TestMediaRouterAction( | 123 new TestMediaRouterAction( |
| 124 browser(), | 124 browser(), |
| 125 browser_action_test_util_->GetToolbarActionsBar())); | 125 browser_action_test_util_->GetToolbarActionsBar())); |
| 126 | |
| 127 local_display_route_list_.push_back(media_router::MediaRoute( | |
| 128 "routeId1", fake_source1_, "sinkId1", "description", true, "", true)); | |
|
Peter Kasting
2016/01/30 00:52:19
Nit: "" -> std::string()
imcheng
2016/02/01 18:48:07
Done.
| |
| 129 non_local_display_route_list_.push_back(media_router::MediaRoute( | |
| 130 "routeId2", fake_source1_, "sinkId2", "description", false, "", true)); | |
| 131 non_local_display_route_list_.push_back(media_router::MediaRoute( | |
| 132 "routeId3", fake_source2_, "sinkId3", "description", true, "", false)); | |
| 126 } | 133 } |
| 127 | 134 |
| 128 void TearDown() override { | 135 void TearDown() override { |
| 129 browser_action_test_util_.reset(); | 136 browser_action_test_util_.reset(); |
| 130 action_.reset(); | 137 action_.reset(); |
| 131 MediaRouterTest::TearDown(); | 138 MediaRouterTest::TearDown(); |
| 132 } | 139 } |
| 133 | 140 |
| 134 TestMediaRouterAction* action() { return action_.get(); } | 141 TestMediaRouterAction* action() { return action_.get(); } |
| 135 const media_router::Issue* fake_issue_notification() { | 142 const media_router::Issue* fake_issue_notification() { |
| 136 return &fake_issue_notification_; | 143 return &fake_issue_notification_; |
| 137 } | 144 } |
| 138 const media_router::Issue* fake_issue_warning() { | 145 const media_router::Issue* fake_issue_warning() { |
| 139 return &fake_issue_warning_; | 146 return &fake_issue_warning_; |
| 140 } | 147 } |
| 141 const media_router::Issue* fake_issue_fatal() { | 148 const media_router::Issue* fake_issue_fatal() { |
| 142 return &fake_issue_fatal_; | 149 return &fake_issue_fatal_; |
| 143 } | 150 } |
| 144 const gfx::Image active_icon() { return active_icon_; } | 151 const gfx::Image active_icon() { return active_icon_; } |
| 145 const gfx::Image error_icon() { return error_icon_; } | 152 const gfx::Image error_icon() { return error_icon_; } |
| 146 const gfx::Image idle_icon() { return idle_icon_; } | 153 const gfx::Image idle_icon() { return idle_icon_; } |
| 147 const gfx::Image warning_icon() { return warning_icon_; } | 154 const gfx::Image warning_icon() { return warning_icon_; } |
| 148 | 155 |
| 156 protected: | |
| 157 std::vector<media_router::MediaRoute> local_display_route_list_; | |
| 158 std::vector<media_router::MediaRoute> non_local_display_route_list_; | |
| 159 std::vector<media_router::MediaRoute::Id> empty_route_id_list_; | |
|
Peter Kasting
2016/01/30 00:52:19
Nit: The Google style guide discourages protected
imcheng
2016/02/01 18:48:07
Done.
| |
| 160 | |
| 149 private: | 161 private: |
| 150 // A BrowserActionTestUtil object constructed with the associated | 162 // A BrowserActionTestUtil object constructed with the associated |
| 151 // ToolbarActionsBar. | 163 // ToolbarActionsBar. |
| 152 scoped_ptr<BrowserActionTestUtil> browser_action_test_util_; | 164 scoped_ptr<BrowserActionTestUtil> browser_action_test_util_; |
| 153 | 165 |
| 154 scoped_ptr<TestMediaRouterAction> action_; | 166 scoped_ptr<TestMediaRouterAction> action_; |
| 155 | 167 |
| 156 // The associated ToolbarActionsModel (owned by the keyed service setup). | 168 // The associated ToolbarActionsModel (owned by the keyed service setup). |
| 157 ToolbarActionsModel* toolbar_model_; | 169 ToolbarActionsModel* toolbar_model_; |
| 158 | 170 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 211 } | 223 } |
| 212 | 224 |
| 213 // Tests the MediaRouterAction state updates based on whether there are local | 225 // Tests the MediaRouterAction state updates based on whether there are local |
| 214 // routes. | 226 // routes. |
| 215 TEST_F(MediaRouterActionUnitTest, UpdateRoutes) { | 227 TEST_F(MediaRouterActionUnitTest, UpdateRoutes) { |
| 216 // Initially, there are no routes. | 228 // Initially, there are no routes. |
| 217 EXPECT_TRUE(gfx::test::AreImagesEqual( | 229 EXPECT_TRUE(gfx::test::AreImagesEqual( |
| 218 idle_icon(), action()->GetIcon(nullptr, gfx::Size()))); | 230 idle_icon(), action()->GetIcon(nullptr, gfx::Size()))); |
| 219 | 231 |
| 220 // Update |current_icon_| since there is a local route. | 232 // Update |current_icon_| since there is a local route. |
| 221 action()->OnHasLocalDisplayRouteUpdated(true); | 233 action()->OnRoutesUpdated(local_display_route_list_, empty_route_id_list_); |
| 222 EXPECT_TRUE(gfx::test::AreImagesEqual( | 234 EXPECT_TRUE(gfx::test::AreImagesEqual( |
| 223 active_icon(), action()->GetIcon(nullptr, gfx::Size()))); | 235 active_icon(), action()->GetIcon(nullptr, gfx::Size()))); |
| 224 | 236 |
| 225 // Update |current_icon_| since there are no local routes. | 237 // Update |current_icon_| since there are no local routes. |
| 226 action()->OnHasLocalDisplayRouteUpdated(false); | 238 action()->OnRoutesUpdated(non_local_display_route_list_, |
| 239 empty_route_id_list_); | |
| 240 EXPECT_TRUE(gfx::test::AreImagesEqual( | |
| 241 idle_icon(), action()->GetIcon(nullptr, gfx::Size()))); | |
| 242 | |
| 243 action()->OnRoutesUpdated(std::vector<media_router::MediaRoute>(), | |
| 244 empty_route_id_list_); | |
| 227 EXPECT_TRUE(gfx::test::AreImagesEqual( | 245 EXPECT_TRUE(gfx::test::AreImagesEqual( |
| 228 idle_icon(), action()->GetIcon(nullptr, gfx::Size()))); | 246 idle_icon(), action()->GetIcon(nullptr, gfx::Size()))); |
| 229 } | 247 } |
| 230 | 248 |
| 231 // Tests the MediaRouterAction icon based on updates to both issues and routes. | 249 // Tests the MediaRouterAction icon based on updates to both issues and routes. |
| 232 TEST_F(MediaRouterActionUnitTest, UpdateIssuesAndRoutes) { | 250 TEST_F(MediaRouterActionUnitTest, UpdateIssuesAndRoutes) { |
| 233 // Initially, there are no issues or routes. | 251 // Initially, there are no issues or routes. |
| 234 EXPECT_TRUE(gfx::test::AreImagesEqual( | 252 EXPECT_TRUE(gfx::test::AreImagesEqual( |
| 235 idle_icon(), action()->GetIcon(nullptr, gfx::Size()))); | 253 idle_icon(), action()->GetIcon(nullptr, gfx::Size()))); |
| 236 | 254 |
| 237 // There is no change in |current_icon_| since notification issues do not | 255 // There is no change in |current_icon_| since notification issues do not |
| 238 // update the state. | 256 // update the state. |
| 239 action()->OnIssueUpdated(fake_issue_notification()); | 257 action()->OnIssueUpdated(fake_issue_notification()); |
| 240 EXPECT_TRUE(gfx::test::AreImagesEqual( | 258 EXPECT_TRUE(gfx::test::AreImagesEqual( |
| 241 idle_icon(), action()->GetIcon(nullptr, gfx::Size()))); | 259 idle_icon(), action()->GetIcon(nullptr, gfx::Size()))); |
| 242 | 260 |
| 243 // Non-local routes also do not have an effect on |current_icon_|. | 261 // Non-local routes also do not have an effect on |current_icon_|. |
| 244 action()->OnHasLocalDisplayRouteUpdated(false); | 262 action()->OnRoutesUpdated(non_local_display_route_list_, |
| 263 empty_route_id_list_); | |
| 245 EXPECT_TRUE(gfx::test::AreImagesEqual( | 264 EXPECT_TRUE(gfx::test::AreImagesEqual( |
| 246 idle_icon(), action()->GetIcon(nullptr, gfx::Size()))); | 265 idle_icon(), action()->GetIcon(nullptr, gfx::Size()))); |
| 247 | 266 |
| 248 // Update |current_icon_| since there is a local route. | 267 // Update |current_icon_| since there is a local route. |
| 249 action()->OnHasLocalDisplayRouteUpdated(true); | 268 action()->OnRoutesUpdated(local_display_route_list_, empty_route_id_list_); |
| 250 EXPECT_TRUE(gfx::test::AreImagesEqual( | 269 EXPECT_TRUE(gfx::test::AreImagesEqual( |
| 251 active_icon(), action()->GetIcon(nullptr, gfx::Size()))); | 270 active_icon(), action()->GetIcon(nullptr, gfx::Size()))); |
| 252 | 271 |
| 253 // Update |current_icon_|, with a priority to reflect the warning issue | 272 // Update |current_icon_|, with a priority to reflect the warning issue |
| 254 // rather than the local route. | 273 // rather than the local route. |
| 255 action()->OnIssueUpdated(fake_issue_warning()); | 274 action()->OnIssueUpdated(fake_issue_warning()); |
| 256 EXPECT_TRUE(gfx::test::AreImagesEqual( | 275 EXPECT_TRUE(gfx::test::AreImagesEqual( |
| 257 warning_icon(), action()->GetIcon(nullptr, gfx::Size()))); | 276 warning_icon(), action()->GetIcon(nullptr, gfx::Size()))); |
| 258 | 277 |
| 259 // Closing a local route makes no difference to |current_icon_|. | 278 // Closing a local route makes no difference to |current_icon_|. |
| 260 action()->OnHasLocalDisplayRouteUpdated(false); | 279 action()->OnRoutesUpdated(non_local_display_route_list_, |
| 280 empty_route_id_list_); | |
| 261 EXPECT_TRUE(gfx::test::AreImagesEqual( | 281 EXPECT_TRUE(gfx::test::AreImagesEqual( |
| 262 warning_icon(), action()->GetIcon(nullptr, gfx::Size()))); | 282 warning_icon(), action()->GetIcon(nullptr, gfx::Size()))); |
| 263 | 283 |
| 264 // Update |current_icon_| since the issue has been updated to fatal. | 284 // Update |current_icon_| since the issue has been updated to fatal. |
| 265 action()->OnIssueUpdated(fake_issue_fatal()); | 285 action()->OnIssueUpdated(fake_issue_fatal()); |
| 266 EXPECT_TRUE(gfx::test::AreImagesEqual( | 286 EXPECT_TRUE(gfx::test::AreImagesEqual( |
| 267 error_icon(), action()->GetIcon(nullptr, gfx::Size()))); | 287 error_icon(), action()->GetIcon(nullptr, gfx::Size()))); |
| 268 | 288 |
| 269 // Fatal issues still take precedent over local routes. | 289 // Fatal issues still take precedent over local routes. |
| 270 action()->OnHasLocalDisplayRouteUpdated(true); | 290 action()->OnRoutesUpdated(local_display_route_list_, empty_route_id_list_); |
| 271 EXPECT_TRUE(gfx::test::AreImagesEqual( | 291 EXPECT_TRUE(gfx::test::AreImagesEqual( |
| 272 error_icon(), action()->GetIcon(nullptr, gfx::Size()))); | 292 error_icon(), action()->GetIcon(nullptr, gfx::Size()))); |
| 273 | 293 |
| 274 // When the fatal issue is dismissed, |current_icon_| reflects the existing | 294 // When the fatal issue is dismissed, |current_icon_| reflects the existing |
| 275 // local route. | 295 // local route. |
| 276 action()->OnIssueUpdated(nullptr); | 296 action()->OnIssueUpdated(nullptr); |
| 277 EXPECT_TRUE(gfx::test::AreImagesEqual( | 297 EXPECT_TRUE(gfx::test::AreImagesEqual( |
| 278 active_icon(), action()->GetIcon(nullptr, gfx::Size()))); | 298 active_icon(), action()->GetIcon(nullptr, gfx::Size()))); |
| 279 | 299 |
| 280 // Update |current_icon_| when the local route is closed. | 300 // Update |current_icon_| when the local route is closed. |
| 281 action()->OnHasLocalDisplayRouteUpdated(false); | 301 action()->OnRoutesUpdated(non_local_display_route_list_, |
| 302 empty_route_id_list_); | |
| 282 EXPECT_TRUE(gfx::test::AreImagesEqual( | 303 EXPECT_TRUE(gfx::test::AreImagesEqual( |
| 283 idle_icon(), action()->GetIcon(nullptr, gfx::Size()))); | 304 idle_icon(), action()->GetIcon(nullptr, gfx::Size()))); |
| 284 } | 305 } |
| 285 | 306 |
| 286 TEST_F(MediaRouterActionUnitTest, IconPressedState) { | 307 TEST_F(MediaRouterActionUnitTest, IconPressedState) { |
| 287 // Start with one window with one tab. | 308 // Start with one window with one tab. |
| 288 EXPECT_EQ(0, browser()->tab_strip_model()->count()); | 309 EXPECT_EQ(0, browser()->tab_strip_model()->count()); |
| 289 chrome::NewTab(browser()); | 310 chrome::NewTab(browser()); |
| 290 EXPECT_EQ(1, browser()->tab_strip_model()->count()); | 311 EXPECT_EQ(1, browser()->tab_strip_model()->count()); |
| 291 | 312 |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 315 | 336 |
| 316 EXPECT_CALL(*mock_delegate, OnPopupClosed()).Times(1); | 337 EXPECT_CALL(*mock_delegate, OnPopupClosed()).Times(1); |
| 317 dialog_controller_->HideMediaRouterDialog(); | 338 dialog_controller_->HideMediaRouterDialog(); |
| 318 | 339 |
| 319 EXPECT_CALL(*mock_delegate, OnPopupShown(true)).Times(1); | 340 EXPECT_CALL(*mock_delegate, OnPopupShown(true)).Times(1); |
| 320 dialog_controller_->CreateMediaRouterDialog(); | 341 dialog_controller_->CreateMediaRouterDialog(); |
| 321 | 342 |
| 322 EXPECT_CALL(*mock_delegate, OnPopupClosed()).Times(1); | 343 EXPECT_CALL(*mock_delegate, OnPopupClosed()).Times(1); |
| 323 dialog_controller_->HideMediaRouterDialog(); | 344 dialog_controller_->HideMediaRouterDialog(); |
| 324 } | 345 } |
| OLD | NEW |