| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 <stddef.h> | 5 #include <stddef.h> |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind_helpers.h" | 9 #include "base/bind_helpers.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| 11 #include "base/macros.h" | 11 #include "base/macros.h" |
| 12 #include "base/memory/ptr_util.h" |
| 12 #include "base/strings/string_number_conversions.h" | 13 #include "base/strings/string_number_conversions.h" |
| 13 #include "base/strings/string_util.h" | 14 #include "base/strings/string_util.h" |
| 14 #include "base/strings/utf_string_conversions.h" | 15 #include "base/strings/utf_string_conversions.h" |
| 15 #include "base/values.h" | 16 #include "base/values.h" |
| 16 #include "build/build_config.h" | 17 #include "build/build_config.h" |
| 17 #include "chrome/browser/extensions/dev_mode_bubble_delegate.h" | 18 #include "chrome/browser/extensions/dev_mode_bubble_delegate.h" |
| 18 #include "chrome/browser/extensions/extension_function_test_utils.h" | 19 #include "chrome/browser/extensions/extension_function_test_utils.h" |
| 19 #include "chrome/browser/extensions/extension_service.h" | 20 #include "chrome/browser/extensions/extension_service.h" |
| 20 #include "chrome/browser/extensions/extension_web_ui_override_registrar.h" | 21 #include "chrome/browser/extensions/extension_web_ui_override_registrar.h" |
| 21 #include "chrome/browser/extensions/ntp_overridden_bubble_delegate.h" | 22 #include "chrome/browser/extensions/ntp_overridden_bubble_delegate.h" |
| (...skipping 17 matching lines...) Expand all Loading... |
| 39 #include "extensions/common/feature_switch.h" | 40 #include "extensions/common/feature_switch.h" |
| 40 #include "extensions/common/value_builder.h" | 41 #include "extensions/common/value_builder.h" |
| 41 #include "testing/gtest/include/gtest/gtest.h" | 42 #include "testing/gtest/include/gtest/gtest.h" |
| 42 | 43 |
| 43 namespace { | 44 namespace { |
| 44 | 45 |
| 45 const char kId1[] = "iccfkkhkfiphcjdakkmcjmkfboccmndk"; | 46 const char kId1[] = "iccfkkhkfiphcjdakkmcjmkfboccmndk"; |
| 46 const char kId2[] = "ajjhifimiemdpmophmkkkcijegphclbl"; | 47 const char kId2[] = "ajjhifimiemdpmophmkkkcijegphclbl"; |
| 47 const char kId3[] = "ioibbbfddncmmabjmpokikkeiofalaek"; | 48 const char kId3[] = "ioibbbfddncmmabjmpokikkeiofalaek"; |
| 48 | 49 |
| 49 scoped_ptr<KeyedService> BuildOverrideRegistrar( | 50 std::unique_ptr<KeyedService> BuildOverrideRegistrar( |
| 50 content::BrowserContext* context) { | 51 content::BrowserContext* context) { |
| 51 return make_scoped_ptr( | 52 return base::WrapUnique( |
| 52 new extensions::ExtensionWebUIOverrideRegistrar(context)); | 53 new extensions::ExtensionWebUIOverrideRegistrar(context)); |
| 53 } | 54 } |
| 54 | 55 |
| 55 } // namespace | 56 } // namespace |
| 56 | 57 |
| 57 namespace extensions { | 58 namespace extensions { |
| 58 | 59 |
| 59 class TestExtensionMessageBubbleController : | 60 class TestExtensionMessageBubbleController : |
| 60 public ExtensionMessageBubbleController { | 61 public ExtensionMessageBubbleController { |
| 61 public: | 62 public: |
| (...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 ExtensionMessageBubbleController::set_should_ignore_learn_more_for_testing( | 324 ExtensionMessageBubbleController::set_should_ignore_learn_more_for_testing( |
| 324 false); | 325 false); |
| 325 BrowserWithTestWindowTest::TearDown(); | 326 BrowserWithTestWindowTest::TearDown(); |
| 326 } | 327 } |
| 327 | 328 |
| 328 protected: | 329 protected: |
| 329 scoped_refptr<Extension> CreateExtension( | 330 scoped_refptr<Extension> CreateExtension( |
| 330 Manifest::Location location, | 331 Manifest::Location location, |
| 331 const std::string& data, | 332 const std::string& data, |
| 332 const std::string& id) { | 333 const std::string& id) { |
| 333 scoped_ptr<base::DictionaryValue> parsed_manifest( | 334 std::unique_ptr<base::DictionaryValue> parsed_manifest( |
| 334 api_test_utils::ParseDictionary(data)); | 335 api_test_utils::ParseDictionary(data)); |
| 335 return api_test_utils::CreateExtension(location, parsed_manifest.get(), id); | 336 return api_test_utils::CreateExtension(location, parsed_manifest.get(), id); |
| 336 } | 337 } |
| 337 | 338 |
| 338 ExtensionService* service_; | 339 ExtensionService* service_; |
| 339 | 340 |
| 340 private: | 341 private: |
| 341 scoped_ptr<base::CommandLine> command_line_; | 342 std::unique_ptr<base::CommandLine> command_line_; |
| 342 | 343 |
| 343 DISALLOW_COPY_AND_ASSIGN(ExtensionMessageBubbleTest); | 344 DISALLOW_COPY_AND_ASSIGN(ExtensionMessageBubbleTest); |
| 344 }; | 345 }; |
| 345 | 346 |
| 346 TEST_F(ExtensionMessageBubbleTest, BubbleReshowsOnDeactivationDismissal) { | 347 TEST_F(ExtensionMessageBubbleTest, BubbleReshowsOnDeactivationDismissal) { |
| 347 Init(); | 348 Init(); |
| 348 | 349 |
| 349 ASSERT_TRUE(LoadExtensionOverridingNtp("1", kId1, Manifest::INTERNAL)); | 350 ASSERT_TRUE(LoadExtensionOverridingNtp("1", kId1, Manifest::INTERNAL)); |
| 350 ASSERT_TRUE(LoadExtensionOverridingNtp("2", kId2, Manifest::INTERNAL)); | 351 ASSERT_TRUE(LoadExtensionOverridingNtp("2", kId2, Manifest::INTERNAL)); |
| 351 scoped_ptr<TestExtensionMessageBubbleController> controller( | 352 std::unique_ptr<TestExtensionMessageBubbleController> controller( |
| 352 new TestExtensionMessageBubbleController( | 353 new TestExtensionMessageBubbleController( |
| 353 new NtpOverriddenBubbleDelegate(browser()->profile()), browser())); | 354 new NtpOverriddenBubbleDelegate(browser()->profile()), browser())); |
| 354 | 355 |
| 355 // The list will contain one enabled unpacked extension (ext 2). | 356 // The list will contain one enabled unpacked extension (ext 2). |
| 356 EXPECT_TRUE(controller->ShouldShow()); | 357 EXPECT_TRUE(controller->ShouldShow()); |
| 357 std::vector<base::string16> override_extensions = | 358 std::vector<base::string16> override_extensions = |
| 358 controller->GetExtensionList(); | 359 controller->GetExtensionList(); |
| 359 ASSERT_EQ(1U, override_extensions.size()); | 360 ASSERT_EQ(1U, override_extensions.size()); |
| 360 EXPECT_EQ(base::ASCIIToUTF16("Extension 2"), override_extensions[0]); | 361 EXPECT_EQ(base::ASCIIToUTF16("Extension 2"), override_extensions[0]); |
| 361 EXPECT_EQ(0U, controller->link_click_count()); | 362 EXPECT_EQ(0U, controller->link_click_count()); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 410 // The feature this is meant to test is only enacted on Windows, but it should | 411 // The feature this is meant to test is only enacted on Windows, but it should |
| 411 // pass on all platforms. | 412 // pass on all platforms. |
| 412 TEST_F(ExtensionMessageBubbleTest, WipeoutControllerTest) { | 413 TEST_F(ExtensionMessageBubbleTest, WipeoutControllerTest) { |
| 413 Init(); | 414 Init(); |
| 414 // Add three extensions, and control two of them in this test (extension 1 | 415 // Add three extensions, and control two of them in this test (extension 1 |
| 415 // and 2). | 416 // and 2). |
| 416 ASSERT_TRUE(LoadExtensionWithAction("1", kId1, Manifest::COMMAND_LINE)); | 417 ASSERT_TRUE(LoadExtensionWithAction("1", kId1, Manifest::COMMAND_LINE)); |
| 417 ASSERT_TRUE(LoadGenericExtension("2", kId2, Manifest::UNPACKED)); | 418 ASSERT_TRUE(LoadGenericExtension("2", kId2, Manifest::UNPACKED)); |
| 418 ASSERT_TRUE(LoadGenericExtension("3", kId3, Manifest::EXTERNAL_POLICY)); | 419 ASSERT_TRUE(LoadGenericExtension("3", kId3, Manifest::EXTERNAL_POLICY)); |
| 419 | 420 |
| 420 scoped_ptr<TestExtensionMessageBubbleController> controller( | 421 std::unique_ptr<TestExtensionMessageBubbleController> controller( |
| 421 new TestExtensionMessageBubbleController( | 422 new TestExtensionMessageBubbleController( |
| 422 new SuspiciousExtensionBubbleDelegate(browser()->profile()), | 423 new SuspiciousExtensionBubbleDelegate(browser()->profile()), |
| 423 browser())); | 424 browser())); |
| 424 FakeExtensionMessageBubble bubble; | 425 FakeExtensionMessageBubble bubble; |
| 425 bubble.set_action_on_show( | 426 bubble.set_action_on_show( |
| 426 FakeExtensionMessageBubble::BUBBLE_ACTION_CLICK_DISMISS_BUTTON); | 427 FakeExtensionMessageBubble::BUBBLE_ACTION_CLICK_DISMISS_BUTTON); |
| 427 | 428 |
| 428 // Validate that we don't have a suppress value for the extensions. | 429 // Validate that we don't have a suppress value for the extensions. |
| 429 EXPECT_FALSE(controller->delegate()->HasBubbleInfoBeenAcknowledged(kId1)); | 430 EXPECT_FALSE(controller->delegate()->HasBubbleInfoBeenAcknowledged(kId1)); |
| 430 EXPECT_FALSE(controller->delegate()->HasBubbleInfoBeenAcknowledged(kId1)); | 431 EXPECT_FALSE(controller->delegate()->HasBubbleInfoBeenAcknowledged(kId1)); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 489 FeatureSwitch::ScopedOverride force_dev_mode_highlighting( | 490 FeatureSwitch::ScopedOverride force_dev_mode_highlighting( |
| 490 FeatureSwitch::force_dev_mode_highlighting(), true); | 491 FeatureSwitch::force_dev_mode_highlighting(), true); |
| 491 Init(); | 492 Init(); |
| 492 // Add three extensions, and control two of them in this test (extension 1 | 493 // Add three extensions, and control two of them in this test (extension 1 |
| 493 // and 2). Extension 1 is a regular extension, Extension 2 is UNPACKED so it | 494 // and 2). Extension 1 is a regular extension, Extension 2 is UNPACKED so it |
| 494 // counts as a DevMode extension. | 495 // counts as a DevMode extension. |
| 495 ASSERT_TRUE(LoadExtensionWithAction("1", kId1, Manifest::COMMAND_LINE)); | 496 ASSERT_TRUE(LoadExtensionWithAction("1", kId1, Manifest::COMMAND_LINE)); |
| 496 ASSERT_TRUE(LoadGenericExtension("2", kId2, Manifest::UNPACKED)); | 497 ASSERT_TRUE(LoadGenericExtension("2", kId2, Manifest::UNPACKED)); |
| 497 ASSERT_TRUE(LoadGenericExtension("3", kId3, Manifest::EXTERNAL_POLICY)); | 498 ASSERT_TRUE(LoadGenericExtension("3", kId3, Manifest::EXTERNAL_POLICY)); |
| 498 | 499 |
| 499 scoped_ptr<TestExtensionMessageBubbleController> controller( | 500 std::unique_ptr<TestExtensionMessageBubbleController> controller( |
| 500 new TestExtensionMessageBubbleController( | 501 new TestExtensionMessageBubbleController( |
| 501 new DevModeBubbleDelegate(browser()->profile()), | 502 new DevModeBubbleDelegate(browser()->profile()), browser())); |
| 502 browser())); | |
| 503 | 503 |
| 504 // The list will contain one enabled unpacked extension. | 504 // The list will contain one enabled unpacked extension. |
| 505 EXPECT_TRUE(controller->ShouldShow()); | 505 EXPECT_TRUE(controller->ShouldShow()); |
| 506 std::vector<base::string16> dev_mode_extensions = | 506 std::vector<base::string16> dev_mode_extensions = |
| 507 controller->GetExtensionList(); | 507 controller->GetExtensionList(); |
| 508 ASSERT_EQ(2U, dev_mode_extensions.size()); | 508 ASSERT_EQ(2U, dev_mode_extensions.size()); |
| 509 EXPECT_TRUE(base::ASCIIToUTF16("Extension 2") == dev_mode_extensions[0]); | 509 EXPECT_TRUE(base::ASCIIToUTF16("Extension 2") == dev_mode_extensions[0]); |
| 510 EXPECT_TRUE(base::ASCIIToUTF16("Extension 1") == dev_mode_extensions[1]); | 510 EXPECT_TRUE(base::ASCIIToUTF16("Extension 1") == dev_mode_extensions[1]); |
| 511 EXPECT_EQ(0U, controller->link_click_count()); | 511 EXPECT_EQ(0U, controller->link_click_count()); |
| 512 EXPECT_EQ(0U, controller->dismiss_click_count()); | 512 EXPECT_EQ(0U, controller->dismiss_click_count()); |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 623 ASSERT_TRUE( | 623 ASSERT_TRUE( |
| 624 LoadExtensionOverridingStart("2", kId2, Manifest::UNPACKED)); | 624 LoadExtensionOverridingStart("2", kId2, Manifest::UNPACKED)); |
| 625 ASSERT_TRUE(LoadExtensionOverridingHome("3", kId3, Manifest::UNPACKED)); | 625 ASSERT_TRUE(LoadExtensionOverridingHome("3", kId3, Manifest::UNPACKED)); |
| 626 break; | 626 break; |
| 627 default: | 627 default: |
| 628 NOTREACHED(); | 628 NOTREACHED(); |
| 629 break; | 629 break; |
| 630 } | 630 } |
| 631 | 631 |
| 632 SettingsApiOverrideType type = static_cast<SettingsApiOverrideType>(i); | 632 SettingsApiOverrideType type = static_cast<SettingsApiOverrideType>(i); |
| 633 scoped_ptr<TestExtensionMessageBubbleController> controller( | 633 std::unique_ptr<TestExtensionMessageBubbleController> controller( |
| 634 new TestExtensionMessageBubbleController( | 634 new TestExtensionMessageBubbleController( |
| 635 new SettingsApiBubbleDelegate(browser()->profile(), type), | 635 new SettingsApiBubbleDelegate(browser()->profile(), type), |
| 636 browser())); | 636 browser())); |
| 637 | 637 |
| 638 // The list will contain one enabled unpacked extension (ext 2). | 638 // The list will contain one enabled unpacked extension (ext 2). |
| 639 EXPECT_TRUE(controller->ShouldShow()); | 639 EXPECT_TRUE(controller->ShouldShow()); |
| 640 std::vector<base::string16> override_extensions = | 640 std::vector<base::string16> override_extensions = |
| 641 controller->GetExtensionList(); | 641 controller->GetExtensionList(); |
| 642 ASSERT_EQ(1U, override_extensions.size()); | 642 ASSERT_EQ(1U, override_extensions.size()); |
| 643 EXPECT_TRUE(base::ASCIIToUTF16("Extension 2") == | 643 EXPECT_TRUE(base::ASCIIToUTF16("Extension 2") == |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 734 // pass on all platforms. | 734 // pass on all platforms. |
| 735 TEST_F(ExtensionMessageBubbleTest, NtpOverriddenControllerTest) { | 735 TEST_F(ExtensionMessageBubbleTest, NtpOverriddenControllerTest) { |
| 736 Init(); | 736 Init(); |
| 737 // Load two extensions overriding new tab page and one overriding something | 737 // Load two extensions overriding new tab page and one overriding something |
| 738 // unrelated (to check for interference). Extension 2 should still win | 738 // unrelated (to check for interference). Extension 2 should still win |
| 739 // on the new tab page setting. | 739 // on the new tab page setting. |
| 740 ASSERT_TRUE(LoadExtensionOverridingNtp("1", kId1, Manifest::UNPACKED)); | 740 ASSERT_TRUE(LoadExtensionOverridingNtp("1", kId1, Manifest::UNPACKED)); |
| 741 ASSERT_TRUE(LoadExtensionOverridingNtp("2", kId2, Manifest::UNPACKED)); | 741 ASSERT_TRUE(LoadExtensionOverridingNtp("2", kId2, Manifest::UNPACKED)); |
| 742 ASSERT_TRUE(LoadExtensionOverridingStart("3", kId3, Manifest::UNPACKED)); | 742 ASSERT_TRUE(LoadExtensionOverridingStart("3", kId3, Manifest::UNPACKED)); |
| 743 | 743 |
| 744 scoped_ptr<TestExtensionMessageBubbleController> controller( | 744 std::unique_ptr<TestExtensionMessageBubbleController> controller( |
| 745 new TestExtensionMessageBubbleController( | 745 new TestExtensionMessageBubbleController( |
| 746 new NtpOverriddenBubbleDelegate(browser()->profile()), | 746 new NtpOverriddenBubbleDelegate(browser()->profile()), browser())); |
| 747 browser())); | |
| 748 | 747 |
| 749 // The list will contain one enabled unpacked extension (ext 2). | 748 // The list will contain one enabled unpacked extension (ext 2). |
| 750 EXPECT_TRUE(controller->ShouldShow()); | 749 EXPECT_TRUE(controller->ShouldShow()); |
| 751 std::vector<base::string16> override_extensions = | 750 std::vector<base::string16> override_extensions = |
| 752 controller->GetExtensionList(); | 751 controller->GetExtensionList(); |
| 753 ASSERT_EQ(1U, override_extensions.size()); | 752 ASSERT_EQ(1U, override_extensions.size()); |
| 754 EXPECT_TRUE(base::ASCIIToUTF16("Extension 2") == | 753 EXPECT_TRUE(base::ASCIIToUTF16("Extension 2") == |
| 755 override_extensions[0].c_str()); | 754 override_extensions[0].c_str()); |
| 756 EXPECT_EQ(0U, controller->link_click_count()); | 755 EXPECT_EQ(0U, controller->link_click_count()); |
| 757 EXPECT_EQ(0U, controller->dismiss_click_count()); | 756 EXPECT_EQ(0U, controller->dismiss_click_count()); |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 870 ASSERT_TRUE(LoadExtensionOverridingStart("3", kId3, Manifest::UNPACKED)); | 869 ASSERT_TRUE(LoadExtensionOverridingStart("3", kId3, Manifest::UNPACKED)); |
| 871 | 870 |
| 872 // The bubble will not show if the extension was installed in the last 7 days | 871 // The bubble will not show if the extension was installed in the last 7 days |
| 873 // so we artificially set the install time to simulate an old install during | 872 // so we artificially set the install time to simulate an old install during |
| 874 // testing. | 873 // testing. |
| 875 base::Time old_enough = base::Time::Now() - base::TimeDelta::FromDays(8); | 874 base::Time old_enough = base::Time::Now() - base::TimeDelta::FromDays(8); |
| 876 SetInstallTime(kId1, old_enough, prefs); | 875 SetInstallTime(kId1, old_enough, prefs); |
| 877 SetInstallTime(kId2, base::Time::Now(), prefs); | 876 SetInstallTime(kId2, base::Time::Now(), prefs); |
| 878 SetInstallTime(kId3, old_enough, prefs); | 877 SetInstallTime(kId3, old_enough, prefs); |
| 879 | 878 |
| 880 scoped_ptr<TestExtensionMessageBubbleController> controller( | 879 std::unique_ptr<TestExtensionMessageBubbleController> controller( |
| 881 new TestExtensionMessageBubbleController( | 880 new TestExtensionMessageBubbleController( |
| 882 new ProxyOverriddenBubbleDelegate(browser()->profile()), | 881 new ProxyOverriddenBubbleDelegate(browser()->profile()), browser())); |
| 883 browser())); | |
| 884 | 882 |
| 885 // The second extension is too new to warn about. | 883 // The second extension is too new to warn about. |
| 886 EXPECT_FALSE(controller->ShouldShow()); | 884 EXPECT_FALSE(controller->ShouldShow()); |
| 887 EXPECT_FALSE(controller->ShouldShow()); | 885 EXPECT_FALSE(controller->ShouldShow()); |
| 888 // Lets make it old enough. | 886 // Lets make it old enough. |
| 889 SetInstallTime(kId2, old_enough, prefs); | 887 SetInstallTime(kId2, old_enough, prefs); |
| 890 | 888 |
| 891 // The list will contain one enabled unpacked extension (ext 2). | 889 // The list will contain one enabled unpacked extension (ext 2). |
| 892 EXPECT_TRUE(controller->ShouldShow()); | 890 EXPECT_TRUE(controller->ShouldShow()); |
| 893 EXPECT_FALSE(controller->ShouldShow()); | 891 EXPECT_FALSE(controller->ShouldShow()); |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 978 extensions::UNINSTALL_REASON_FOR_TESTING, | 976 extensions::UNINSTALL_REASON_FOR_TESTING, |
| 979 base::Bind(&base::DoNothing), | 977 base::Bind(&base::DoNothing), |
| 980 NULL); | 978 NULL); |
| 981 service_->UninstallExtension(kId3, | 979 service_->UninstallExtension(kId3, |
| 982 extensions::UNINSTALL_REASON_FOR_TESTING, | 980 extensions::UNINSTALL_REASON_FOR_TESTING, |
| 983 base::Bind(&base::DoNothing), | 981 base::Bind(&base::DoNothing), |
| 984 NULL); | 982 NULL); |
| 985 } | 983 } |
| 986 | 984 |
| 987 } // namespace extensions | 985 } // namespace extensions |
| OLD | NEW |