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

Side by Side Diff: chrome/browser/extensions/extension_toolbar_model_unittest.cc

Issue 661493004: Add infrastructure for Chrome Actions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "base/memory/ref_counted.h" 6 #include "base/memory/ref_counted.h"
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" 8 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h"
9 #include "chrome/browser/extensions/extension_service.h" 9 #include "chrome/browser/extensions/extension_service.h"
10 #include "chrome/browser/extensions/extension_service_test_base.h" 10 #include "chrome/browser/extensions/extension_service_test_base.h"
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 scoped_refptr<const Extension> extension2 = 325 scoped_refptr<const Extension> extension2 =
326 GetActionExtension("browser_action", manifest_keys::kBrowserAction); 326 GetActionExtension("browser_action", manifest_keys::kBrowserAction);
327 ASSERT_TRUE(AddExtension(extension2)); 327 ASSERT_TRUE(AddExtension(extension2));
328 328
329 // We should now find our extension in the model. 329 // We should now find our extension in the model.
330 EXPECT_EQ(1u, observer()->inserted_count()); 330 EXPECT_EQ(1u, observer()->inserted_count());
331 EXPECT_EQ(1u, num_toolbar_items()); 331 EXPECT_EQ(1u, num_toolbar_items());
332 EXPECT_EQ(extension2.get(), GetExtensionAtIndex(0u)); 332 EXPECT_EQ(extension2.get(), GetExtensionAtIndex(0u));
333 333
334 // Should be a no-op, but still fires the events. 334 // Should be a no-op, but still fires the events.
335 toolbar_model()->MoveExtensionIcon(extension2.get(), 0); 335 toolbar_model()->MoveExtensionIcon(extension2->id(), 0);
336 EXPECT_EQ(1u, observer()->moved_count()); 336 EXPECT_EQ(1u, observer()->moved_count());
337 EXPECT_EQ(1u, num_toolbar_items()); 337 EXPECT_EQ(1u, num_toolbar_items());
338 EXPECT_EQ(extension2.get(), GetExtensionAtIndex(0u)); 338 EXPECT_EQ(extension2.get(), GetExtensionAtIndex(0u));
339 339
340 // Remove the extension and verify. 340 // Remove the extension and verify.
341 ASSERT_TRUE(RemoveExtension(extension2)); 341 ASSERT_TRUE(RemoveExtension(extension2));
342 EXPECT_EQ(1u, observer()->removed_count()); 342 EXPECT_EQ(1u, observer()->removed_count());
343 EXPECT_EQ(0u, num_toolbar_items()); 343 EXPECT_EQ(0u, num_toolbar_items());
344 EXPECT_EQ(NULL, GetExtensionAtIndex(0u)); 344 EXPECT_EQ(NULL, GetExtensionAtIndex(0u));
345 } 345 }
346 346
347 // Test various different reorderings, removals, and reinsertions. 347 // Test various different reorderings, removals, and reinsertions.
348 TEST_F(ExtensionToolbarModelUnitTest, ExtensionToolbarReorderAndReinsert) { 348 TEST_F(ExtensionToolbarModelUnitTest, ExtensionToolbarReorderAndReinsert) {
349 Init(); 349 Init();
350 350
351 // Add the three browser action extensions. 351 // Add the three browser action extensions.
352 ASSERT_TRUE(AddBrowserActionExtensions()); 352 ASSERT_TRUE(AddBrowserActionExtensions());
353 353
354 // Verify the three extensions are in the model in the proper order. 354 // Verify the three extensions are in the model in the proper order.
355 EXPECT_EQ(3u, num_toolbar_items()); 355 EXPECT_EQ(3u, num_toolbar_items());
356 EXPECT_EQ(browser_action_a(), GetExtensionAtIndex(0u)); 356 EXPECT_EQ(browser_action_a(), GetExtensionAtIndex(0u));
357 EXPECT_EQ(browser_action_b(), GetExtensionAtIndex(1u)); 357 EXPECT_EQ(browser_action_b(), GetExtensionAtIndex(1u));
358 EXPECT_EQ(browser_action_c(), GetExtensionAtIndex(2u)); 358 EXPECT_EQ(browser_action_c(), GetExtensionAtIndex(2u));
359 359
360 // Order is now A, B, C. Let's put C first. 360 // Order is now A, B, C. Let's put C first.
361 toolbar_model()->MoveExtensionIcon(browser_action_c(), 0); 361 toolbar_model()->MoveExtensionIcon(browser_action_c()->id(), 0);
362 EXPECT_EQ(1u, observer()->moved_count()); 362 EXPECT_EQ(1u, observer()->moved_count());
363 EXPECT_EQ(3u, num_toolbar_items()); 363 EXPECT_EQ(3u, num_toolbar_items());
364 EXPECT_EQ(browser_action_c(), GetExtensionAtIndex(0u)); 364 EXPECT_EQ(browser_action_c(), GetExtensionAtIndex(0u));
365 EXPECT_EQ(browser_action_a(), GetExtensionAtIndex(1u)); 365 EXPECT_EQ(browser_action_a(), GetExtensionAtIndex(1u));
366 EXPECT_EQ(browser_action_b(), GetExtensionAtIndex(2u)); 366 EXPECT_EQ(browser_action_b(), GetExtensionAtIndex(2u));
367 367
368 // Order is now C, A, B. Let's put A last. 368 // Order is now C, A, B. Let's put A last.
369 toolbar_model()->MoveExtensionIcon(browser_action_a(), 2); 369 toolbar_model()->MoveExtensionIcon(browser_action_a()->id(), 2);
370 EXPECT_EQ(2u, observer()->moved_count()); 370 EXPECT_EQ(2u, observer()->moved_count());
371 EXPECT_EQ(3u, num_toolbar_items()); 371 EXPECT_EQ(3u, num_toolbar_items());
372 EXPECT_EQ(browser_action_c(), GetExtensionAtIndex(0u)); 372 EXPECT_EQ(browser_action_c(), GetExtensionAtIndex(0u));
373 EXPECT_EQ(browser_action_b(), GetExtensionAtIndex(1u)); 373 EXPECT_EQ(browser_action_b(), GetExtensionAtIndex(1u));
374 EXPECT_EQ(browser_action_a(), GetExtensionAtIndex(2u)); 374 EXPECT_EQ(browser_action_a(), GetExtensionAtIndex(2u));
375 375
376 // Order is now C, B, A. Let's remove B. 376 // Order is now C, B, A. Let's remove B.
377 ASSERT_TRUE(RemoveExtension(browser_action_b())); 377 ASSERT_TRUE(RemoveExtension(browser_action_b()));
378 EXPECT_EQ(1u, observer()->removed_count()); 378 EXPECT_EQ(1u, observer()->removed_count());
379 EXPECT_EQ(2u, num_toolbar_items()); 379 EXPECT_EQ(2u, num_toolbar_items());
380 EXPECT_EQ(browser_action_c(), GetExtensionAtIndex(0u)); 380 EXPECT_EQ(browser_action_c(), GetExtensionAtIndex(0u));
381 EXPECT_EQ(browser_action_a(), GetExtensionAtIndex(1u)); 381 EXPECT_EQ(browser_action_a(), GetExtensionAtIndex(1u));
382 382
383 // Load extension B again. 383 // Load extension B again.
384 ASSERT_TRUE(AddExtension(browser_action_b())); 384 ASSERT_TRUE(AddExtension(browser_action_b()));
385 385
386 // Extension B loaded again. 386 // Extension B loaded again.
387 EXPECT_EQ(4u, observer()->inserted_count()); 387 EXPECT_EQ(4u, observer()->inserted_count());
388 EXPECT_EQ(3u, num_toolbar_items()); 388 EXPECT_EQ(3u, num_toolbar_items());
389 // Make sure it gets its old spot in the list. 389 // Make sure it gets its old spot in the list.
390 EXPECT_EQ(browser_action_b(), GetExtensionAtIndex(1u)); 390 EXPECT_EQ(browser_action_b(), GetExtensionAtIndex(1u));
391 391
392 // Unload B again. 392 // Unload B again.
393 ASSERT_TRUE(RemoveExtension(browser_action_b())); 393 ASSERT_TRUE(RemoveExtension(browser_action_b()));
394 EXPECT_EQ(2u, observer()->removed_count()); 394 EXPECT_EQ(2u, observer()->removed_count());
395 EXPECT_EQ(2u, num_toolbar_items()); 395 EXPECT_EQ(2u, num_toolbar_items());
396 396
397 // Order is now C, A. Flip it. 397 // Order is now C, A. Flip it.
398 toolbar_model()->MoveExtensionIcon(browser_action_a(), 0); 398 toolbar_model()->MoveExtensionIcon(browser_action_a()->id(), 0);
399 EXPECT_EQ(3u, observer()->moved_count()); 399 EXPECT_EQ(3u, observer()->moved_count());
400 EXPECT_EQ(browser_action_a(), GetExtensionAtIndex(0u)); 400 EXPECT_EQ(browser_action_a(), GetExtensionAtIndex(0u));
401 EXPECT_EQ(browser_action_c(), GetExtensionAtIndex(1u)); 401 EXPECT_EQ(browser_action_c(), GetExtensionAtIndex(1u));
402 402
403 // Move A to the location it already occupies. 403 // Move A to the location it already occupies.
404 toolbar_model()->MoveExtensionIcon(browser_action_a(), 0); 404 toolbar_model()->MoveExtensionIcon(browser_action_a()->id(), 0);
405 EXPECT_EQ(4u, observer()->moved_count()); 405 EXPECT_EQ(4u, observer()->moved_count());
406 EXPECT_EQ(browser_action_a(), GetExtensionAtIndex(0u)); 406 EXPECT_EQ(browser_action_a(), GetExtensionAtIndex(0u));
407 EXPECT_EQ(browser_action_c(), GetExtensionAtIndex(1u)); 407 EXPECT_EQ(browser_action_c(), GetExtensionAtIndex(1u));
408 408
409 // Order is now A, C. Remove C. 409 // Order is now A, C. Remove C.
410 ASSERT_TRUE(RemoveExtension(browser_action_c())); 410 ASSERT_TRUE(RemoveExtension(browser_action_c()));
411 EXPECT_EQ(3u, observer()->removed_count()); 411 EXPECT_EQ(3u, observer()->removed_count());
412 EXPECT_EQ(1u, num_toolbar_items()); 412 EXPECT_EQ(1u, num_toolbar_items());
413 EXPECT_EQ(browser_action_a(), GetExtensionAtIndex(0u)); 413 EXPECT_EQ(browser_action_a(), GetExtensionAtIndex(0u));
414 414
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
464 service()->EnableExtension(browser_action_c()->id()); 464 service()->EnableExtension(browser_action_c()->id());
465 service()->EnableExtension(browser_action_a()->id()); 465 service()->EnableExtension(browser_action_a()->id());
466 service()->EnableExtension(browser_action_b()->id()); 466 service()->EnableExtension(browser_action_b()->id());
467 467
468 // Make sure we still get the original A, B, C order. 468 // Make sure we still get the original A, B, C order.
469 EXPECT_EQ(browser_action_a(), GetExtensionAtIndex(0u)); 469 EXPECT_EQ(browser_action_a(), GetExtensionAtIndex(0u));
470 EXPECT_EQ(browser_action_b(), GetExtensionAtIndex(1u)); 470 EXPECT_EQ(browser_action_b(), GetExtensionAtIndex(1u));
471 EXPECT_EQ(browser_action_c(), GetExtensionAtIndex(2u)); 471 EXPECT_EQ(browser_action_c(), GetExtensionAtIndex(2u));
472 472
473 // Move browser_action_b() to be first. 473 // Move browser_action_b() to be first.
474 toolbar_model()->MoveExtensionIcon(browser_action_b(), 0); 474 toolbar_model()->MoveExtensionIcon(browser_action_b()->id(), 0);
475 EXPECT_EQ(browser_action_b(), GetExtensionAtIndex(0u)); 475 EXPECT_EQ(browser_action_b(), GetExtensionAtIndex(0u));
476 476
477 // Uninstall Extension B. 477 // Uninstall Extension B.
478 service()->UninstallExtension(browser_action_b()->id(), 478 service()->UninstallExtension(browser_action_b()->id(),
479 UNINSTALL_REASON_FOR_TESTING, 479 UNINSTALL_REASON_FOR_TESTING,
480 base::Bind(&base::DoNothing), 480 base::Bind(&base::DoNothing),
481 NULL); // Ignore error. 481 NULL); // Ignore error.
482 // List contains only A and C now. Validate that. 482 // List contains only A and C now. Validate that.
483 EXPECT_EQ(2u, num_toolbar_items()); 483 EXPECT_EQ(2u, num_toolbar_items());
484 EXPECT_EQ(browser_action_a(), GetExtensionAtIndex(0u)); 484 EXPECT_EQ(browser_action_a(), GetExtensionAtIndex(0u));
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 // Give two extensions incognito access. 782 // Give two extensions incognito access.
783 // Note: We use ExtensionPrefs::SetIsIncognitoEnabled instead of 783 // Note: We use ExtensionPrefs::SetIsIncognitoEnabled instead of
784 // util::SetIsIncognitoEnabled because the latter tries to reload the 784 // util::SetIsIncognitoEnabled because the latter tries to reload the
785 // extension, which can cause problems in our unittest set up (and reloading 785 // extension, which can cause problems in our unittest set up (and reloading
786 // the extension is irrelevant to us). 786 // the extension is irrelevant to us).
787 ExtensionPrefs* extension_prefs = ExtensionPrefs::Get(profile()); 787 ExtensionPrefs* extension_prefs = ExtensionPrefs::Get(profile());
788 extension_prefs->SetIsIncognitoEnabled(browser_action_b()->id(), true); 788 extension_prefs->SetIsIncognitoEnabled(browser_action_b()->id(), true);
789 extension_prefs->SetIsIncognitoEnabled(browser_action_c()->id(), true); 789 extension_prefs->SetIsIncognitoEnabled(browser_action_c()->id(), true);
790 790
791 // Move C to the second index. 791 // Move C to the second index.
792 toolbar_model()->MoveExtensionIcon(browser_action_c(), 1u); 792 toolbar_model()->MoveExtensionIcon(browser_action_c()->id(), 1u);
793 // Set visible count to 2 so that c is overflowed. State is A C [B]. 793 // Set visible count to 2 so that c is overflowed. State is A C [B].
794 toolbar_model()->SetVisibleIconCount(2); 794 toolbar_model()->SetVisibleIconCount(2);
795 EXPECT_EQ(1u, observer()->moved_count()); 795 EXPECT_EQ(1u, observer()->moved_count());
796 796
797 // Get an incognito profile and toolbar. 797 // Get an incognito profile and toolbar.
798 ExtensionToolbarModel* incognito_model = 798 ExtensionToolbarModel* incognito_model =
799 CreateToolbarModelForProfile(profile()->GetOffTheRecordProfile()); 799 CreateToolbarModelForProfile(profile()->GetOffTheRecordProfile());
800 800
801 ExtensionToolbarModelTestObserver incognito_observer(incognito_model); 801 ExtensionToolbarModelTestObserver incognito_observer(incognito_model);
802 EXPECT_EQ(0u, incognito_observer.moved_count()); 802 EXPECT_EQ(0u, incognito_observer.moved_count());
(...skipping 15 matching lines...) Expand all
818 EXPECT_EQ(0, incognito_model->GetVisibleIconCount()); 818 EXPECT_EQ(0, incognito_model->GetVisibleIconCount());
819 EXPECT_EQ(2, toolbar_model()->GetVisibleIconCount()); 819 EXPECT_EQ(2, toolbar_model()->GetVisibleIconCount());
820 820
821 // Expanding the incognito model to 2 should register as "all icons" (-1), 821 // Expanding the incognito model to 2 should register as "all icons" (-1),
822 // since it is all of the incognito-enabled extensions. 822 // since it is all of the incognito-enabled extensions.
823 incognito_model->SetVisibleIconCount(2u); 823 incognito_model->SetVisibleIconCount(2u);
824 EXPECT_EQ(-1, incognito_model->GetVisibleIconCount()); 824 EXPECT_EQ(-1, incognito_model->GetVisibleIconCount());
825 825
826 // Moving icons in the incognito toolbar should not affect the regular 826 // Moving icons in the incognito toolbar should not affect the regular
827 // toolbar. Incognito currently has C B... 827 // toolbar. Incognito currently has C B...
828 incognito_model->MoveExtensionIcon(browser_action_b(), 0u); 828 incognito_model->MoveExtensionIcon(browser_action_b()->id(), 0u);
829 // So now it should be B C... 829 // So now it should be B C...
830 EXPECT_EQ(1u, incognito_observer.moved_count()); 830 EXPECT_EQ(1u, incognito_observer.moved_count());
831 EXPECT_EQ(browser_action_b(), GetExtensionAtIndex(0u, incognito_model)); 831 EXPECT_EQ(browser_action_b(), GetExtensionAtIndex(0u, incognito_model));
832 EXPECT_EQ(browser_action_c(), GetExtensionAtIndex(1u, incognito_model)); 832 EXPECT_EQ(browser_action_c(), GetExtensionAtIndex(1u, incognito_model));
833 // ... and the regular toolbar should be unaffected. 833 // ... and the regular toolbar should be unaffected.
834 EXPECT_EQ(browser_action_a(), GetExtensionAtIndex(0u)); 834 EXPECT_EQ(browser_action_a(), GetExtensionAtIndex(0u));
835 EXPECT_EQ(browser_action_c(), GetExtensionAtIndex(1u)); 835 EXPECT_EQ(browser_action_c(), GetExtensionAtIndex(1u));
836 EXPECT_EQ(browser_action_b(), GetExtensionAtIndex(2u)); 836 EXPECT_EQ(browser_action_b(), GetExtensionAtIndex(2u));
837 837
838 // Similarly, the observer for the regular model should not have received 838 // Similarly, the observer for the regular model should not have received
839 // any updates. 839 // any updates.
840 EXPECT_EQ(1u, observer()->moved_count()); 840 EXPECT_EQ(1u, observer()->moved_count());
841 841
842 // And performing moves on the regular model should have no effect on the 842 // And performing moves on the regular model should have no effect on the
843 // incognito model or its observers. 843 // incognito model or its observers.
844 toolbar_model()->MoveExtensionIcon(browser_action_c(), 2u); 844 toolbar_model()->MoveExtensionIcon(browser_action_c()->id(), 2u);
845 EXPECT_EQ(2u, observer()->moved_count()); 845 EXPECT_EQ(2u, observer()->moved_count());
846 EXPECT_EQ(1u, incognito_observer.moved_count()); 846 EXPECT_EQ(1u, incognito_observer.moved_count());
847 } 847 }
848 848
849 // Test that hiding actions on the toolbar results in sending them to the 849 // Test that hiding actions on the toolbar results in sending them to the
850 // overflow menu when the redesign switch is enabled. 850 // overflow menu when the redesign switch is enabled.
851 TEST_F(ExtensionToolbarModelUnitTest, 851 TEST_F(ExtensionToolbarModelUnitTest,
852 ExtensionToolbarActionsVisibilityWithSwitch) { 852 ExtensionToolbarActionsVisibilityWithSwitch) {
853 FeatureSwitch::ScopedOverride enable_redesign( 853 FeatureSwitch::ScopedOverride enable_redesign(
854 FeatureSwitch::extension_action_redesign(), true); 854 FeatureSwitch::extension_action_redesign(), true);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
918 ExtensionActionAPI::SetBrowserActionVisibility( 918 ExtensionActionAPI::SetBrowserActionVisibility(
919 prefs, extension_b->id(), true); 919 prefs, extension_b->id(), true);
920 EXPECT_EQ(3u, num_toolbar_items()); 920 EXPECT_EQ(3u, num_toolbar_items());
921 EXPECT_EQ(-1, toolbar_model()->GetVisibleIconCount()); // -1 = 'all' 921 EXPECT_EQ(-1, toolbar_model()->GetVisibleIconCount()); // -1 = 'all'
922 EXPECT_EQ(extension_c, GetExtensionAtIndex(0u)); 922 EXPECT_EQ(extension_c, GetExtensionAtIndex(0u));
923 EXPECT_EQ(extension_a, GetExtensionAtIndex(1u)); 923 EXPECT_EQ(extension_a, GetExtensionAtIndex(1u));
924 EXPECT_EQ(extension_b, GetExtensionAtIndex(2u)); 924 EXPECT_EQ(extension_b, GetExtensionAtIndex(2u));
925 } 925 }
926 926
927 } // namespace extensions 927 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698