| Index: chrome/browser/extensions/extension_warning_set_unittest.cc
|
| diff --git a/chrome/browser/extensions/extension_warning_set_unittest.cc b/chrome/browser/extensions/extension_warning_set_unittest.cc
|
| index e3e5bffeeade3037119a2a50118ef80599f0588b..1592ddedef810c1c25578ad6a3ce85bb77106a52 100644
|
| --- a/chrome/browser/extensions/extension_warning_set_unittest.cc
|
| +++ b/chrome/browser/extensions/extension_warning_set_unittest.cc
|
| @@ -4,38 +4,43 @@
|
|
|
| #include "chrome/browser/extensions/extension_warning_set.h"
|
|
|
| -#include "chrome/browser/extensions/extension_global_error_badge.h"
|
| +#include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/ui/global_error/global_error_service.h"
|
| #include "chrome/browser/ui/global_error/global_error_service_factory.h"
|
| #include "chrome/test/base/testing_profile.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| +namespace extensions {
|
| +
|
| namespace {
|
|
|
| -class MockExtensionWarningSet : public ExtensionWarningSet {
|
| +class TestExtensionWarningSet : public ExtensionWarningSet {
|
| public:
|
| - explicit MockExtensionWarningSet(Profile* profile)
|
| + explicit TestExtensionWarningSet(Profile* profile)
|
| : ExtensionWarningSet(profile) {
|
| }
|
| - virtual ~MockExtensionWarningSet() {}
|
| + virtual ~TestExtensionWarningSet() {}
|
|
|
| - MOCK_METHOD0(NotifyWarningsChanged, void());
|
| + void AddWarning(const ExtensionWarning& warning) {
|
| + std::set<ExtensionWarning> warnings;
|
| + warnings.insert(warning);
|
| + AddWarnings(warnings);
|
| + }
|
| };
|
|
|
| -bool HasBadge(Profile* profile) {
|
| - GlobalErrorService* service =
|
| - GlobalErrorServiceFactory::GetForProfile(profile);
|
| - return service->GetGlobalErrorByMenuItemCommandID(
|
| - ExtensionGlobalErrorBadge::GetMenuItemCommandID()) != NULL;
|
| -}
|
| +class MockObserver : public ExtensionWarningSet::Observer {
|
| + public:
|
| + virtual ~MockObserver() {}
|
| + MOCK_METHOD0(ExtensionWarningsChanged, void());
|
| +};
|
|
|
| const char* ext1_id = "extension1";
|
| const char* ext2_id = "extension2";
|
| -const ExtensionWarningSet::WarningType warning_1 =
|
| - ExtensionWarningSet::kNetworkDelay;
|
| -const ExtensionWarningSet::WarningType warning_2 =
|
| - ExtensionWarningSet::kNetworkConflict;
|
| +const ExtensionWarning::WarningType warning_1 =
|
| + ExtensionWarning::kNetworkDelay;
|
| +const ExtensionWarning::WarningType warning_2 =
|
| + ExtensionWarning::kNetworkConflict;
|
|
|
| } // namespace
|
|
|
| @@ -43,94 +48,66 @@ const ExtensionWarningSet::WarningType warning_2 =
|
| // the same warning again is silent.
|
| TEST(ExtensionWarningSetTest, SetWarning) {
|
| TestingProfile profile;
|
| - MockExtensionWarningSet warnings(&profile);
|
| + TestExtensionWarningSet warnings(&profile);
|
| + MockObserver observer;
|
| + warnings.AddObserver(&observer);
|
|
|
| // Insert warning for the first time.
|
| - EXPECT_CALL(warnings, NotifyWarningsChanged());
|
| - warnings.SetWarning(warning_1, ext1_id);
|
| + EXPECT_CALL(observer, ExtensionWarningsChanged());
|
| + warnings.AddWarning(ExtensionWarning::CreateNetworkDelayWarning(ext1_id));
|
| testing::Mock::VerifyAndClearExpectations(&warnings);
|
| - EXPECT_TRUE(HasBadge(&profile));
|
| + //EXPECT_TRUE(HasBadge(&profile));
|
|
|
| // Second insertion of same warning does not trigger anything.
|
| - warnings.SetWarning(warning_1, ext1_id);
|
| + warnings.AddWarning(ExtensionWarning::CreateNetworkDelayWarning(ext1_id));
|
| testing::Mock::VerifyAndClearExpectations(&warnings);
|
| +
|
| + warnings.RemoveObserver(&observer);
|
| }
|
|
|
| // Check that ClearWarnings deletes exactly the specified warnings and
|
| // triggers notifications where appropriate.
|
| TEST(ExtensionWarningSetTest, ClearWarnings) {
|
| TestingProfile profile;
|
| - MockExtensionWarningSet warnings(&profile);
|
| -
|
| - // Insert two unique warnings.
|
| - EXPECT_CALL(warnings, NotifyWarningsChanged()).Times(2);
|
| - warnings.SetWarning(warning_1, ext1_id);
|
| - warnings.SetWarning(warning_2, ext2_id);
|
| + TestExtensionWarningSet warnings(&profile);
|
| + MockObserver observer;
|
| + warnings.AddObserver(&observer);
|
| +
|
| + // Insert two unique warnings in one batch.
|
| + EXPECT_CALL(observer, ExtensionWarningsChanged()).Times(1);
|
| + std::set<ExtensionWarning> warning_set;
|
| + warning_set.insert(ExtensionWarning::CreateNetworkDelayWarning(ext1_id));
|
| + warning_set.insert(ExtensionWarning::CreateNetworkConflictWarning(ext2_id));
|
| + warnings.AddWarnings(warning_set);
|
| testing::Mock::VerifyAndClearExpectations(&warnings);
|
| - EXPECT_TRUE(HasBadge(&profile));
|
|
|
| // Remove one warning and check that the badge remains.
|
| - EXPECT_CALL(warnings, NotifyWarningsChanged());
|
| - std::set<ExtensionWarningSet::WarningType> to_clear;
|
| + EXPECT_CALL(observer, ExtensionWarningsChanged());
|
| + std::set<ExtensionWarning::WarningType> to_clear;
|
| to_clear.insert(warning_2);
|
| warnings.ClearWarnings(to_clear);
|
| testing::Mock::VerifyAndClearExpectations(&warnings);
|
| - EXPECT_TRUE(HasBadge(&profile));
|
|
|
| // Check that the correct warnings appear in |warnings|.
|
| - std::set<ExtensionWarningSet::WarningType> existing_warnings;
|
| - warnings.GetWarningsAffectingExtension(ext1_id, &existing_warnings);
|
| + std::set<ExtensionWarning::WarningType> existing_warnings;
|
| + warnings.GetWarningTypesAffectingExtension(ext1_id, &existing_warnings);
|
| EXPECT_EQ(1u, existing_warnings.size());
|
| - warnings.GetWarningsAffectingExtension(ext2_id, &existing_warnings);
|
| + warnings.GetWarningTypesAffectingExtension(ext2_id, &existing_warnings);
|
| EXPECT_EQ(0u, existing_warnings.size());
|
|
|
| - // Remove the other one warning and check that badge disappears.
|
| - EXPECT_CALL(warnings, NotifyWarningsChanged());
|
| + // Remove the other one warning.
|
| + EXPECT_CALL(observer, ExtensionWarningsChanged());
|
| to_clear.insert(warning_1);
|
| warnings.ClearWarnings(to_clear);
|
| testing::Mock::VerifyAndClearExpectations(&warnings);
|
| - EXPECT_FALSE(HasBadge(&profile));
|
|
|
| // Check that not warnings remain.
|
| - warnings.GetWarningsAffectingExtension(ext1_id, &existing_warnings);
|
| + warnings.GetWarningTypesAffectingExtension(ext1_id, &existing_warnings);
|
| EXPECT_EQ(0u, existing_warnings.size());
|
| - warnings.GetWarningsAffectingExtension(ext2_id, &existing_warnings);
|
| + warnings.GetWarningTypesAffectingExtension(ext2_id, &existing_warnings);
|
| EXPECT_EQ(0u, existing_warnings.size());
|
| -}
|
|
|
| -// Check that no badge appears if it has been suppressed for a specific
|
| -// warning.
|
| -TEST(ExtensionWarningSetTest, SuppressBadgeForCurrentWarnings) {
|
| - TestingProfile profile;
|
| - MockExtensionWarningSet warnings(&profile);
|
| -
|
| - // Insert first warning.
|
| - EXPECT_CALL(warnings, NotifyWarningsChanged());
|
| - warnings.SetWarning(warning_1, ext1_id);
|
| - testing::Mock::VerifyAndClearExpectations(&warnings);
|
| - EXPECT_TRUE(HasBadge(&profile));
|
| -
|
| - // Suppress first warning.
|
| - warnings.SuppressBadgeForCurrentWarnings();
|
| - testing::Mock::VerifyAndClearExpectations(&warnings);
|
| - EXPECT_FALSE(HasBadge(&profile));
|
| -
|
| - // Simulate deinstallation of extension.
|
| - std::set<ExtensionWarningSet::WarningType> to_clear;
|
| - warnings.GetWarningsAffectingExtension(ext1_id, &to_clear);
|
| - EXPECT_CALL(warnings, NotifyWarningsChanged());
|
| - warnings.ClearWarnings(to_clear);
|
| - testing::Mock::VerifyAndClearExpectations(&warnings);
|
| -
|
| - // Set first warning again and verify that not badge is shown this time.
|
| - EXPECT_CALL(warnings, NotifyWarningsChanged());
|
| - warnings.SetWarning(warning_1, ext1_id);
|
| - testing::Mock::VerifyAndClearExpectations(&warnings);
|
| - EXPECT_FALSE(HasBadge(&profile));
|
| -
|
| - // Set second warning and verify that it shows a badge.
|
| - EXPECT_CALL(warnings, NotifyWarningsChanged());
|
| - warnings.SetWarning(warning_2, ext2_id);
|
| - testing::Mock::VerifyAndClearExpectations(&warnings);
|
| - EXPECT_TRUE(HasBadge(&profile));
|
| + warnings.RemoveObserver(&observer);
|
| }
|
| +
|
| +} // namespace extensions
|
|
|