Rename ExtensionWarningBadgeService to WarningBadgeService

As the comment in extension_warning_badge_service.h by battre@,
rename ExtensionWarningBadgeService to WarningBadgeService and related class.
And rename the files too.

BUG=458829
[email protected]

Review URL: https://codereview.chromium.org/921423003

Cr-Commit-Position: refs/heads/master@{#317992}
diff --git a/chrome/browser/extensions/warning_badge_service_unittest.cc b/chrome/browser/extensions/warning_badge_service_unittest.cc
new file mode 100644
index 0000000..168c494e
--- /dev/null
+++ b/chrome/browser/extensions/warning_badge_service_unittest.cc
@@ -0,0 +1,92 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/extensions/warning_badge_service.h"
+
+#include "chrome/app/chrome_command_ids.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 "extensions/browser/warning_service.h"
+#include "extensions/browser/warning_set.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace extensions {
+
+namespace {
+
+class TestExtensionWarningSet : public WarningService {
+ public:
+  explicit TestExtensionWarningSet(Profile* profile)
+      : WarningService(profile) {}
+  ~TestExtensionWarningSet() override {}
+
+  void AddWarning(const Warning& warning) {
+    WarningSet warnings;
+    warnings.insert(warning);
+    AddWarnings(warnings);
+  }
+};
+
+class TestWarningBadgeService : public WarningBadgeService {
+ public:
+  TestWarningBadgeService(Profile* profile, WarningService* warning_service)
+      : WarningBadgeService(profile), warning_service_(warning_service) {}
+  ~TestWarningBadgeService() override {}
+
+  const std::set<Warning>& GetCurrentWarnings() const override {
+    return warning_service_->warnings();
+  }
+
+ private:
+  WarningService* warning_service_;
+};
+
+bool HasBadge(Profile* profile) {
+  GlobalErrorService* service =
+      GlobalErrorServiceFactory::GetForProfile(profile);
+  return service->GetGlobalErrorByMenuItemCommandID(IDC_EXTENSION_ERRORS) !=
+         NULL;
+}
+
+const char ext1_id[] = "extension1";
+const char ext2_id[] = "extension2";
+
+}  // namespace
+
+// Check that no badge appears if it has been suppressed for a specific
+// warning.
+TEST(WarningBadgeServiceTest, SuppressBadgeForCurrentWarnings) {
+  TestingProfile profile;
+  TestExtensionWarningSet warnings(&profile);
+  TestWarningBadgeService badge_service(&profile, &warnings);
+  warnings.AddObserver(&badge_service);
+
+  // Insert first warning.
+  warnings.AddWarning(Warning::CreateNetworkDelayWarning(ext1_id));
+  EXPECT_TRUE(HasBadge(&profile));
+
+  // Suppress first warning.
+  badge_service.SuppressCurrentWarnings();
+  EXPECT_FALSE(HasBadge(&profile));
+
+  // Simulate deinstallation of extension.
+  std::set<Warning::WarningType> to_clear =
+      warnings.GetWarningTypesAffectingExtension(ext1_id);
+  warnings.ClearWarnings(to_clear);
+  EXPECT_FALSE(HasBadge(&profile));
+
+  // Set first warning again and verify that not badge is shown this time.
+  warnings.AddWarning(Warning::CreateNetworkDelayWarning(ext1_id));
+  EXPECT_FALSE(HasBadge(&profile));
+
+  // Set second warning and verify that it shows a badge.
+  warnings.AddWarning(Warning::CreateNetworkConflictWarning(ext2_id));
+  EXPECT_TRUE(HasBadge(&profile));
+
+  warnings.RemoveObserver(&badge_service);
+}
+
+}  // namespace extensions