[Extensions Cleanup] Extract common GetPatternsAsStrings() method

Bothing ScriptingPermissionsModifier and PermissionsAPI unittests
convert URLPatternSets to strings for easy comparison (using gmock
utilities). Extract this functionality into a shared method in
permissions_test_util.

Bug: None
Change-Id: I54f681bc69d87c4ba20c8b2973159ef671f1bbe0
Reviewed-on: https://chromium-review.googlesource.com/c/1347100
Reviewed-by: Karan Bhatia <[email protected]>
Commit-Queue: Devlin <[email protected]>
Cr-Commit-Position: refs/heads/master@{#610230}
diff --git a/chrome/browser/extensions/permissions_test_util.cc b/chrome/browser/extensions/permissions_test_util.cc
index ca3fa79..4333f3f 100644
--- a/chrome/browser/extensions/permissions_test_util.cc
+++ b/chrome/browser/extensions/permissions_test_util.cc
@@ -12,6 +12,22 @@
 namespace extensions {
 namespace permissions_test_util {
 
+std::vector<std::string> GetPatternsAsStrings(const URLPatternSet& patterns) {
+  std::vector<std::string> pattern_strings;
+  pattern_strings.reserve(patterns.size());
+  for (const auto& pattern : patterns) {
+    // chrome://favicon/ is automatically added as a pattern when the extension
+    // requests access to <all_urls>, but isn't really a host pattern (it allows
+    // the extension to retrieve a favicon for a given URL). Just ignore it when
+    // generating host sets.
+    std::string pattern_string = pattern.GetAsString();
+    if (pattern_string != "chrome://favicon/*")
+      pattern_strings.push_back(pattern_string);
+  }
+
+  return pattern_strings;
+}
+
 void GrantOptionalPermissionsAndWaitForCompletion(
     content::BrowserContext* browser_context,
     const Extension& extension,
@@ -54,5 +70,5 @@
   run_loop.Run();
 }
 
-}  // namespace browsertest_util
+}  // namespace permissions_test_util
 }  // namespace extensions