[DNR] Implement storing/setting actions matched badge text

This CL implements the logic to store the number of actions matched for
an extension's ruleset and surface this count as a extension's badge
text if the extension has called setActionCountAsBadgeText(true).

Bug: 973211
Change-Id: Icc438d7be5f4e33bd8e0e77c4034bd2f69391a20
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1656970
Reviewed-by: Devlin <[email protected]>
Reviewed-by: Karan Bhatia <[email protected]>
Commit-Queue: Kelvin Jiang <[email protected]>
Cr-Commit-Position: refs/heads/master@{#686579}
diff --git a/chrome/browser/extensions/extension_action_unittest.cc b/chrome/browser/extensions/extension_action_unittest.cc
index da1f427..6db6bee 100644
--- a/chrome/browser/extensions/extension_action_unittest.cc
+++ b/chrome/browser/extensions/extension_action_unittest.cc
@@ -79,17 +79,37 @@
 TEST(ExtensionActionTest, Badge) {
   std::unique_ptr<ExtensionAction> action =
       CreateAction(ActionInfo(ActionInfo::TYPE_PAGE));
-  ASSERT_EQ("", action->GetBadgeText(1));
+  ASSERT_EQ("", action->GetExplicitlySetBadgeText(1));
   action->SetBadgeText(ExtensionAction::kDefaultTabId, "foo");
-  ASSERT_EQ("foo", action->GetBadgeText(1));
-  ASSERT_EQ("foo", action->GetBadgeText(100));
+  ASSERT_EQ("foo", action->GetExplicitlySetBadgeText(1));
+  ASSERT_EQ("foo", action->GetExplicitlySetBadgeText(100));
   action->SetBadgeText(100, "bar");
-  ASSERT_EQ("foo", action->GetBadgeText(1));
-  ASSERT_EQ("bar", action->GetBadgeText(100));
+  ASSERT_EQ("foo", action->GetExplicitlySetBadgeText(1));
+  ASSERT_EQ("bar", action->GetExplicitlySetBadgeText(100));
   action->SetBadgeText(ExtensionAction::kDefaultTabId, "baz");
-  ASSERT_EQ("baz", action->GetBadgeText(1));
+  ASSERT_EQ("baz", action->GetExplicitlySetBadgeText(1));
   action->ClearAllValuesForTab(100);
-  ASSERT_EQ("baz", action->GetBadgeText(100));
+  ASSERT_EQ("baz", action->GetExplicitlySetBadgeText(100));
+}
+
+TEST(ExtensionActionTest, DisplayBadgeText) {
+  constexpr int kFirstTabId = 1;
+  constexpr int kSecondTabId = 2;
+
+  std::unique_ptr<ExtensionAction> action =
+      CreateAction(ActionInfo(ActionInfo::TYPE_PAGE));
+  ASSERT_EQ("", action->GetDisplayBadgeText(kFirstTabId));
+  action->SetDNRActionCount(kFirstTabId, 10 /* action_count */);
+  ASSERT_EQ("10", action->GetDisplayBadgeText(kFirstTabId));
+  action->SetBadgeText(ExtensionAction::kDefaultTabId, "foo");
+  ASSERT_EQ("10", action->GetDisplayBadgeText(kFirstTabId));
+  ASSERT_EQ("foo", action->GetDisplayBadgeText(kSecondTabId));
+  action->SetBadgeText(kFirstTabId, "bar");
+  ASSERT_EQ("bar", action->GetDisplayBadgeText(kFirstTabId));
+  action->SetDNRActionCount(kFirstTabId, 100 /* action_count */);
+  ASSERT_EQ("bar", action->GetDisplayBadgeText(kFirstTabId));
+  action->ClearAllValuesForTab(kFirstTabId);
+  ASSERT_EQ("foo", action->GetDisplayBadgeText(kFirstTabId));
 }
 
 TEST(ExtensionActionTest, BadgeTextColor) {