| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/views/toolbar/browser_actions_container.h" | 5 #include "chrome/browser/ui/views/toolbar/browser_actions_container.h" |
| 6 | 6 |
| 7 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" | 7 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" |
| 8 #include "chrome/browser/extensions/browser_action_test_util.h" | 8 #include "chrome/browser/extensions/browser_action_test_util.h" |
| 9 #include "chrome/browser/extensions/extension_toolbar_model.h" | 9 #include "chrome/browser/extensions/extension_toolbar_model.h" |
| 10 #include "chrome/browser/ui/browser_window.h" | 10 #include "chrome/browser/ui/browser_window.h" |
| 11 #include "chrome/browser/ui/browser_window_testing_views.h" | 11 #include "chrome/browser/ui/browser_window_testing_views.h" |
| 12 #include "chrome/browser/ui/toolbar/browser_actions_bar_browsertest.h" | 12 #include "chrome/browser/ui/toolbar/browser_actions_bar_browsertest.h" |
| 13 #include "chrome/browser/ui/views/extensions/browser_action_drag_data.h" | 13 #include "chrome/browser/ui/views/extensions/browser_action_drag_data.h" |
| 14 #include "chrome/browser/ui/views/frame/browser_view.h" | 14 #include "chrome/browser/ui/views/frame/browser_view.h" |
| 15 #include "chrome/browser/ui/views/toolbar/browser_action_view.h" | 15 #include "chrome/browser/ui/views/toolbar/toolbar_action_view.h" |
| 16 #include "chrome/browser/ui/views/toolbar/toolbar_view.h" | 16 #include "chrome/browser/ui/views/toolbar/toolbar_view.h" |
| 17 #include "extensions/browser/extension_prefs.h" | 17 #include "extensions/browser/extension_prefs.h" |
| 18 #include "extensions/common/extension.h" | 18 #include "extensions/common/extension.h" |
| 19 #include "ui/base/dragdrop/drop_target_event.h" | 19 #include "ui/base/dragdrop/drop_target_event.h" |
| 20 #include "ui/base/dragdrop/os_exchange_data.h" | 20 #include "ui/base/dragdrop/os_exchange_data.h" |
| 21 #include "ui/gfx/geometry/point.h" | 21 #include "ui/gfx/geometry/point.h" |
| 22 #include "ui/views/view.h" | 22 #include "ui/views/view.h" |
| 23 | 23 |
| 24 // TODO(devlin): Continue moving any tests that should be platform independent | 24 // TODO(devlin): Continue moving any tests that should be platform independent |
| 25 // from this file to the crossplatform tests in | 25 // from this file to the crossplatform tests in |
| (...skipping 14 matching lines...) Expand all Loading... |
| 40 | 40 |
| 41 BrowserActionsContainer* container = | 41 BrowserActionsContainer* container = |
| 42 BrowserView::GetBrowserViewForBrowser(browser()) | 42 BrowserView::GetBrowserViewForBrowser(browser()) |
| 43 ->toolbar()->browser_actions(); | 43 ->toolbar()->browser_actions(); |
| 44 | 44 |
| 45 // Simulate a drag and drop to the right. | 45 // Simulate a drag and drop to the right. |
| 46 ui::OSExchangeData drop_data; | 46 ui::OSExchangeData drop_data; |
| 47 // Drag extension A from index 0... | 47 // Drag extension A from index 0... |
| 48 BrowserActionDragData browser_action_drag_data(extension_a()->id(), 0u); | 48 BrowserActionDragData browser_action_drag_data(extension_a()->id(), 0u); |
| 49 browser_action_drag_data.Write(profile(), &drop_data); | 49 browser_action_drag_data.Write(profile(), &drop_data); |
| 50 BrowserActionView* view = container->GetViewForExtension(extension_b()); | 50 ToolbarActionView* view = container->GetViewForExtension(extension_b()); |
| 51 // ...to the right of extension B. | 51 // ...to the right of extension B. |
| 52 gfx::Point location(view->x() + view->width(), view->y()); | 52 gfx::Point location(view->x() + view->width(), view->y()); |
| 53 ui::DropTargetEvent target_event( | 53 ui::DropTargetEvent target_event( |
| 54 drop_data, location, location, ui::DragDropTypes::DRAG_MOVE); | 54 drop_data, location, location, ui::DragDropTypes::DRAG_MOVE); |
| 55 | 55 |
| 56 // Drag and drop. | 56 // Drag and drop. |
| 57 container->OnDragUpdated(target_event); | 57 container->OnDragUpdated(target_event); |
| 58 container->OnPerformDrop(target_event); | 58 container->OnPerformDrop(target_event); |
| 59 | 59 |
| 60 // The order should now be B A C, since A was dragged to the right of B. | 60 // The order should now be B A C, since A was dragged to the right of B. |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 EXPECT_EQ(extension_b()->id(), first->GetIdAt(1u)); | 246 EXPECT_EQ(extension_b()->id(), first->GetIdAt(1u)); |
| 247 EXPECT_EQ(extension_b()->id(), second->GetIdAt(1u)); | 247 EXPECT_EQ(extension_b()->id(), second->GetIdAt(1u)); |
| 248 EXPECT_EQ(extension_c()->id(), first->GetIdAt(2u)); | 248 EXPECT_EQ(extension_c()->id(), first->GetIdAt(2u)); |
| 249 EXPECT_EQ(extension_c()->id(), second->GetIdAt(2u)); | 249 EXPECT_EQ(extension_c()->id(), second->GetIdAt(2u)); |
| 250 | 250 |
| 251 // Simulate a drag and drop to the right. | 251 // Simulate a drag and drop to the right. |
| 252 ui::OSExchangeData drop_data; | 252 ui::OSExchangeData drop_data; |
| 253 // Drag extension A from index 0... | 253 // Drag extension A from index 0... |
| 254 BrowserActionDragData browser_action_drag_data(extension_a()->id(), 0u); | 254 BrowserActionDragData browser_action_drag_data(extension_a()->id(), 0u); |
| 255 browser_action_drag_data.Write(profile(), &drop_data); | 255 browser_action_drag_data.Write(profile(), &drop_data); |
| 256 BrowserActionView* view = first->GetViewForExtension(extension_b()); | 256 ToolbarActionView* view = first->GetViewForExtension(extension_b()); |
| 257 // ...to the right of extension B. | 257 // ...to the right of extension B. |
| 258 gfx::Point location(view->x() + view->width(), view->y()); | 258 gfx::Point location(view->x() + view->width(), view->y()); |
| 259 ui::DropTargetEvent target_event( | 259 ui::DropTargetEvent target_event( |
| 260 drop_data, location, location, ui::DragDropTypes::DRAG_MOVE); | 260 drop_data, location, location, ui::DragDropTypes::DRAG_MOVE); |
| 261 | 261 |
| 262 // Drag and drop. | 262 // Drag and drop. |
| 263 first->OnDragUpdated(target_event); | 263 first->OnDragUpdated(target_event); |
| 264 first->OnPerformDrop(target_event); | 264 first->OnPerformDrop(target_event); |
| 265 | 265 |
| 266 // The new order, B A C, should be reflected in *both* containers, even | 266 // The new order, B A C, should be reflected in *both* containers, even |
| (...skipping 22 matching lines...) Expand all Loading... |
| 289 EXPECT_EQ(3, browser_actions_bar()->VisibleBrowserActions()); | 289 EXPECT_EQ(3, browser_actions_bar()->VisibleBrowserActions()); |
| 290 EXPECT_EQ(3, browser_actions_bar()->NumberOfBrowserActions()); | 290 EXPECT_EQ(3, browser_actions_bar()->NumberOfBrowserActions()); |
| 291 | 291 |
| 292 BrowserActionsContainer* container = browser() | 292 BrowserActionsContainer* container = browser() |
| 293 ->window() | 293 ->window() |
| 294 ->GetBrowserWindowTesting() | 294 ->GetBrowserWindowTesting() |
| 295 ->GetToolbarView() | 295 ->GetToolbarView() |
| 296 ->browser_actions(); | 296 ->browser_actions(); |
| 297 | 297 |
| 298 // Currently, dragging should be enabled. | 298 // Currently, dragging should be enabled. |
| 299 BrowserActionView* action_view = container->GetBrowserActionViewAt(0); | 299 ToolbarActionView* action_view = container->GetToolbarActionViewAt(0); |
| 300 ASSERT_TRUE(action_view); | 300 ASSERT_TRUE(action_view); |
| 301 gfx::Point point(action_view->x(), action_view->y()); | 301 gfx::Point point(action_view->x(), action_view->y()); |
| 302 EXPECT_TRUE(container->CanStartDragForView(action_view, point, point)); | 302 EXPECT_TRUE(container->CanStartDragForView(action_view, point, point)); |
| 303 | 303 |
| 304 extensions::ExtensionToolbarModel* model = | 304 extensions::ExtensionToolbarModel* model = |
| 305 extensions::ExtensionToolbarModel::Get(profile()); | 305 extensions::ExtensionToolbarModel::Get(profile()); |
| 306 | 306 |
| 307 extensions::ExtensionIdList extension_ids; | 307 extensions::ExtensionIdList extension_ids; |
| 308 extension_ids.push_back(extension_a()->id()); | 308 extension_ids.push_back(extension_a()->id()); |
| 309 extension_ids.push_back(extension_b()->id()); | 309 extension_ids.push_back(extension_b()->id()); |
| 310 model->HighlightExtensions(extension_ids); | 310 model->HighlightExtensions(extension_ids); |
| 311 | 311 |
| 312 // Only two browser actions should be visible. | 312 // Only two browser actions should be visible. |
| 313 EXPECT_EQ(2, browser_actions_bar()->VisibleBrowserActions()); | 313 EXPECT_EQ(2, browser_actions_bar()->VisibleBrowserActions()); |
| 314 EXPECT_EQ(2, browser_actions_bar()->NumberOfBrowserActions()); | 314 EXPECT_EQ(2, browser_actions_bar()->NumberOfBrowserActions()); |
| 315 | 315 |
| 316 // We shouldn't be able to drag in highlight mode. | 316 // We shouldn't be able to drag in highlight mode. |
| 317 action_view = container->GetBrowserActionViewAt(0); | 317 action_view = container->GetToolbarActionViewAt(0); |
| 318 EXPECT_FALSE(container->CanStartDragForView(action_view, point, point)); | 318 EXPECT_FALSE(container->CanStartDragForView(action_view, point, point)); |
| 319 | 319 |
| 320 // We should go back to normal after leaving highlight mode. | 320 // We should go back to normal after leaving highlight mode. |
| 321 model->StopHighlighting(); | 321 model->StopHighlighting(); |
| 322 EXPECT_EQ(3, browser_actions_bar()->VisibleBrowserActions()); | 322 EXPECT_EQ(3, browser_actions_bar()->VisibleBrowserActions()); |
| 323 EXPECT_EQ(3, browser_actions_bar()->NumberOfBrowserActions()); | 323 EXPECT_EQ(3, browser_actions_bar()->NumberOfBrowserActions()); |
| 324 action_view = container->GetBrowserActionViewAt(0); | 324 action_view = container->GetToolbarActionViewAt(0); |
| 325 EXPECT_TRUE(container->CanStartDragForView(action_view, point, point)); | 325 EXPECT_TRUE(container->CanStartDragForView(action_view, point, point)); |
| 326 } | 326 } |
| 327 | 327 |
| 328 // Test the behavior of the overflow container for Extension Actions. | 328 // Test the behavior of the overflow container for Extension Actions. |
| 329 class BrowserActionsContainerOverflowTest | 329 class BrowserActionsContainerOverflowTest |
| 330 : public BrowserActionsBarBrowserTest { | 330 : public BrowserActionsBarBrowserTest { |
| 331 public: | 331 public: |
| 332 BrowserActionsContainerOverflowTest() : main_bar_(NULL), model_(NULL) { | 332 BrowserActionsContainerOverflowTest() : main_bar_(NULL), model_(NULL) { |
| 333 } | 333 } |
| 334 ~BrowserActionsContainerOverflowTest() override {} | 334 ~BrowserActionsContainerOverflowTest() override {} |
| 335 | 335 |
| 336 protected: | 336 protected: |
| 337 // Returns true if the order of the BrowserActionViews in |main_bar_| | 337 // Returns true if the order of the ToolbarActionViews in |main_bar_| |
| 338 // and |overflow_bar_| match. | 338 // and |overflow_bar_| match. |
| 339 bool ViewOrdersMatch(); | 339 bool ViewOrdersMatch(); |
| 340 | 340 |
| 341 // Returns Success if the visible count matches |expected_visible|. This means | 341 // Returns Success if the visible count matches |expected_visible|. This means |
| 342 // that the number of visible browser actions in |main_bar_| is | 342 // that the number of visible browser actions in |main_bar_| is |
| 343 // |expected_visible| and shows the first icons, and that the overflow bar | 343 // |expected_visible| and shows the first icons, and that the overflow bar |
| 344 // shows all (and only) the remainder. | 344 // shows all (and only) the remainder. |
| 345 testing::AssertionResult VerifyVisibleCount(size_t expected_visible); | 345 testing::AssertionResult VerifyVisibleCount(size_t expected_visible); |
| 346 | 346 |
| 347 // Accessors. | 347 // Accessors. |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 387 model_ = extensions::ExtensionToolbarModel::Get(profile()); | 387 model_ = extensions::ExtensionToolbarModel::Get(profile()); |
| 388 } | 388 } |
| 389 | 389 |
| 390 void BrowserActionsContainerOverflowTest::TearDownOnMainThread() { | 390 void BrowserActionsContainerOverflowTest::TearDownOnMainThread() { |
| 391 overflow_bar_.reset(); | 391 overflow_bar_.reset(); |
| 392 enable_redesign_.reset(); | 392 enable_redesign_.reset(); |
| 393 BrowserActionsBarBrowserTest::TearDownOnMainThread(); | 393 BrowserActionsBarBrowserTest::TearDownOnMainThread(); |
| 394 } | 394 } |
| 395 | 395 |
| 396 bool BrowserActionsContainerOverflowTest::ViewOrdersMatch() { | 396 bool BrowserActionsContainerOverflowTest::ViewOrdersMatch() { |
| 397 if (main_bar_->num_browser_actions() != | 397 if (main_bar_->num_toolbar_actions() != |
| 398 overflow_bar_->num_browser_actions()) | 398 overflow_bar_->num_toolbar_actions()) |
| 399 return false; | 399 return false; |
| 400 for (size_t i = 0; i < main_bar_->num_browser_actions(); ++i) { | 400 for (size_t i = 0; i < main_bar_->num_toolbar_actions(); ++i) { |
| 401 if (main_bar_->GetIdAt(i) != overflow_bar_->GetIdAt(i)) | 401 if (main_bar_->GetIdAt(i) != overflow_bar_->GetIdAt(i)) |
| 402 return false; | 402 return false; |
| 403 } | 403 } |
| 404 return true; | 404 return true; |
| 405 } | 405 } |
| 406 | 406 |
| 407 testing::AssertionResult | 407 testing::AssertionResult |
| 408 BrowserActionsContainerOverflowTest::VerifyVisibleCount( | 408 BrowserActionsContainerOverflowTest::VerifyVisibleCount( |
| 409 size_t expected_visible) { | 409 size_t expected_visible) { |
| 410 // Views order should always match (as it is based directly off the model). | 410 // Views order should always match (as it is based directly off the model). |
| 411 if (!ViewOrdersMatch()) | 411 if (!ViewOrdersMatch()) |
| 412 return testing::AssertionFailure() << "View orders don't match"; | 412 return testing::AssertionFailure() << "View orders don't match"; |
| 413 | 413 |
| 414 // Loop through and check each browser action for proper visibility (which | 414 // Loop through and check each browser action for proper visibility (which |
| 415 // implicitly also guarantees that the proper number are visible). | 415 // implicitly also guarantees that the proper number are visible). |
| 416 for (size_t i = 0; i < overflow_bar_->num_browser_actions(); ++i) { | 416 for (size_t i = 0; i < overflow_bar_->num_toolbar_actions(); ++i) { |
| 417 bool visible = i < expected_visible; | 417 bool visible = i < expected_visible; |
| 418 if (main_bar_->GetBrowserActionViewAt(i)->visible() != visible) { | 418 if (main_bar_->GetToolbarActionViewAt(i)->visible() != visible) { |
| 419 return testing::AssertionFailure() << "Index " << i << | 419 return testing::AssertionFailure() << "Index " << i << |
| 420 " has improper visibility in main: " << !visible; | 420 " has improper visibility in main: " << !visible; |
| 421 } | 421 } |
| 422 if (overflow_bar_->GetBrowserActionViewAt(i)->visible() == visible) { | 422 if (overflow_bar_->GetToolbarActionViewAt(i)->visible() == visible) { |
| 423 return testing::AssertionFailure() << "Index " << i << | 423 return testing::AssertionFailure() << "Index " << i << |
| 424 " has improper visibility in overflow: " << visible; | 424 " has improper visibility in overflow: " << visible; |
| 425 } | 425 } |
| 426 } | 426 } |
| 427 return testing::AssertionSuccess(); | 427 return testing::AssertionSuccess(); |
| 428 } | 428 } |
| 429 | 429 |
| 430 // Test the basic functionality of the BrowserActionsContainer in overflow mode. | 430 // Test the basic functionality of the BrowserActionsContainer in overflow mode. |
| 431 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerOverflowTest, | 431 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerOverflowTest, |
| 432 TestBasicActionOverflow) { | 432 TestBasicActionOverflow) { |
| 433 LoadExtensions(); | 433 LoadExtensions(); |
| 434 | 434 |
| 435 // Since the overflow bar isn't attached to a view, we have to kick it in | 435 // Since the overflow bar isn't attached to a view, we have to kick it in |
| 436 // order to retrigger layout each time we change the number of icons in the | 436 // order to retrigger layout each time we change the number of icons in the |
| 437 // bar. | 437 // bar. |
| 438 overflow_bar()->Layout(); | 438 overflow_bar()->Layout(); |
| 439 | 439 |
| 440 // All actions are showing, and are in the installation order. | 440 // All actions are showing, and are in the installation order. |
| 441 EXPECT_EQ(-1, model()->GetVisibleIconCount()); | 441 EXPECT_EQ(-1, model()->GetVisibleIconCount()); |
| 442 ASSERT_EQ(3u, main_bar()->num_browser_actions()); | 442 ASSERT_EQ(3u, main_bar()->num_toolbar_actions()); |
| 443 EXPECT_EQ(extension_a()->id(), main_bar()->GetIdAt(0u)); | 443 EXPECT_EQ(extension_a()->id(), main_bar()->GetIdAt(0u)); |
| 444 EXPECT_EQ(extension_b()->id(), main_bar()->GetIdAt(1u)); | 444 EXPECT_EQ(extension_b()->id(), main_bar()->GetIdAt(1u)); |
| 445 EXPECT_EQ(extension_c()->id(), main_bar()->GetIdAt(2u)); | 445 EXPECT_EQ(extension_c()->id(), main_bar()->GetIdAt(2u)); |
| 446 EXPECT_TRUE(VerifyVisibleCount(3u)); | 446 EXPECT_TRUE(VerifyVisibleCount(3u)); |
| 447 | 447 |
| 448 // Reduce the visible count to 2. Order should be unchanged (A B C), but | 448 // Reduce the visible count to 2. Order should be unchanged (A B C), but |
| 449 // only A and B should be visible on the main bar. | 449 // only A and B should be visible on the main bar. |
| 450 model()->SetVisibleIconCount(2u); | 450 model()->SetVisibleIconCount(2u); |
| 451 overflow_bar()->Layout(); // Kick. | 451 overflow_bar()->Layout(); // Kick. |
| 452 EXPECT_EQ(extension_a()->id(), main_bar()->GetIdAt(0u)); | 452 EXPECT_EQ(extension_a()->id(), main_bar()->GetIdAt(0u)); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 480 // Test drag and drop between the overflow container and the main container. | 480 // Test drag and drop between the overflow container and the main container. |
| 481 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerOverflowTest, | 481 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerOverflowTest, |
| 482 TestOverflowDragging) { | 482 TestOverflowDragging) { |
| 483 LoadExtensions(); | 483 LoadExtensions(); |
| 484 | 484 |
| 485 // Start with one extension in overflow. | 485 // Start with one extension in overflow. |
| 486 model()->SetVisibleIconCount(2u); | 486 model()->SetVisibleIconCount(2u); |
| 487 overflow_bar()->Layout(); | 487 overflow_bar()->Layout(); |
| 488 | 488 |
| 489 // Verify starting state is A B [C]. | 489 // Verify starting state is A B [C]. |
| 490 ASSERT_EQ(3u, main_bar()->num_browser_actions()); | 490 ASSERT_EQ(3u, main_bar()->num_toolbar_actions()); |
| 491 EXPECT_EQ(extension_a()->id(), main_bar()->GetIdAt(0u)); | 491 EXPECT_EQ(extension_a()->id(), main_bar()->GetIdAt(0u)); |
| 492 EXPECT_EQ(extension_b()->id(), main_bar()->GetIdAt(1u)); | 492 EXPECT_EQ(extension_b()->id(), main_bar()->GetIdAt(1u)); |
| 493 EXPECT_EQ(extension_c()->id(), main_bar()->GetIdAt(2u)); | 493 EXPECT_EQ(extension_c()->id(), main_bar()->GetIdAt(2u)); |
| 494 EXPECT_TRUE(VerifyVisibleCount(2u)); | 494 EXPECT_TRUE(VerifyVisibleCount(2u)); |
| 495 | 495 |
| 496 // Drag extension A (on the main bar) to the left of extension C (in | 496 // Drag extension A (on the main bar) to the left of extension C (in |
| 497 // overflow). | 497 // overflow). |
| 498 ui::OSExchangeData drop_data; | 498 ui::OSExchangeData drop_data; |
| 499 BrowserActionDragData browser_action_drag_data(extension_a()->id(), 0u); | 499 BrowserActionDragData browser_action_drag_data(extension_a()->id(), 0u); |
| 500 browser_action_drag_data.Write(profile(), &drop_data); | 500 browser_action_drag_data.Write(profile(), &drop_data); |
| 501 BrowserActionView* view = overflow_bar()->GetViewForExtension(extension_c()); | 501 ToolbarActionView* view = overflow_bar()->GetViewForExtension(extension_c()); |
| 502 gfx::Point location(view->x(), view->y()); | 502 gfx::Point location(view->x(), view->y()); |
| 503 ui::DropTargetEvent target_event( | 503 ui::DropTargetEvent target_event( |
| 504 drop_data, location, location, ui::DragDropTypes::DRAG_MOVE); | 504 drop_data, location, location, ui::DragDropTypes::DRAG_MOVE); |
| 505 | 505 |
| 506 overflow_bar()->OnDragUpdated(target_event); | 506 overflow_bar()->OnDragUpdated(target_event); |
| 507 overflow_bar()->OnPerformDrop(target_event); | 507 overflow_bar()->OnPerformDrop(target_event); |
| 508 overflow_bar()->Layout(); | 508 overflow_bar()->Layout(); |
| 509 | 509 |
| 510 // Order should now be B [A C]. | 510 // Order should now be B [A C]. |
| 511 EXPECT_EQ(extension_b()->id(), main_bar()->GetIdAt(0u)); | 511 EXPECT_EQ(extension_b()->id(), main_bar()->GetIdAt(0u)); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 541 | 541 |
| 542 main_bar()->OnDragUpdated(target_event3); | 542 main_bar()->OnDragUpdated(target_event3); |
| 543 main_bar()->OnPerformDrop(target_event3); | 543 main_bar()->OnPerformDrop(target_event3); |
| 544 | 544 |
| 545 // Order should be A C B, and there should be no extensions in overflow. | 545 // Order should be A C B, and there should be no extensions in overflow. |
| 546 EXPECT_EQ(extension_a()->id(), main_bar()->GetIdAt(0u)); | 546 EXPECT_EQ(extension_a()->id(), main_bar()->GetIdAt(0u)); |
| 547 EXPECT_EQ(extension_c()->id(), main_bar()->GetIdAt(1u)); | 547 EXPECT_EQ(extension_c()->id(), main_bar()->GetIdAt(1u)); |
| 548 EXPECT_EQ(extension_b()->id(), main_bar()->GetIdAt(2u)); | 548 EXPECT_EQ(extension_b()->id(), main_bar()->GetIdAt(2u)); |
| 549 VerifyVisibleCount(3u); | 549 VerifyVisibleCount(3u); |
| 550 } | 550 } |
| OLD | NEW |