[Extensions] Make PermissionSet ctor take URLPatternSet by value

Make the PermissionSet constructor accept URLPatternSet parameters by
value, enabling std::move()ing the parameters rather than necessitating
a copy. Update call sites that are easily modified.

Bug: 908536
Change-Id: I80ce85497b3272285a5b2a2299f8dc153530df51
Reviewed-on: https://chromium-review.googlesource.com/c/1383537
Reviewed-by: Mustafa Emre Acer <[email protected]>
Reviewed-by: Istiaque Ahmed <[email protected]>
Commit-Queue: Devlin <[email protected]>
Cr-Commit-Position: refs/heads/master@{#635210}
diff --git a/chrome/browser/extensions/permissions_updater.cc b/chrome/browser/extensions/permissions_updater.cc
index 7043b03..02c9dcb 100644
--- a/chrome/browser/extensions/permissions_updater.cc
+++ b/chrome/browser/extensions/permissions_updater.cc
@@ -360,7 +360,7 @@
         active_permissions_to_remove->apis().Clone(),
         active_permissions_to_remove->manifest_permissions().Clone(),
         URLPatternSet(removable_explicit_hosts),
-        active_permissions_to_remove->scriptable_hosts());
+        active_permissions_to_remove->scriptable_hosts().Clone());
   }
 
   CHECK(extension.permissions_data()->active_permissions().Contains(
@@ -537,7 +537,8 @@
   std::unique_ptr<const PermissionSet> new_withheld =
       PermissionSet::CreateDifference(
           PermissionSet(APIPermissionSet(), ManifestPermissionSet(),
-                        required.explicit_hosts(), required.scriptable_hosts()),
+                        required.explicit_hosts().Clone(),
+                        required.scriptable_hosts().Clone()),
           *new_active);
 
   extension->permissions_data()->SetPermissions(std::move(new_active),