#include "extensions/browser/permissions/permissions_test_util.h"
#include "base/logging.h"
#include "base/run_loop.h"
#include "content/public/browser/browser_context.h"
#include "extensions/buildflags/buildflags.h"
#include "extensions/common/extension.h"
#include "extensions/common/permissions/permission_set.h"
static_assert(BUILDFLAG(ENABLE_EXTENSIONS_CORE));
namespace extensions {
namespace {
constexpr char kChromeUIFaviconURL[] = "chrome://favicon/";
}
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) {
std::string pattern_string = pattern.GetAsString();
if (pattern_string != std::string(kChromeUIFaviconURL) + "*") {
pattern_strings.push_back(pattern_string);
}
}
return pattern_strings;
}
void GrantOptionalPermissionsAndWaitForCompletion(
content::BrowserContext* browser_context,
const Extension& extension,
const PermissionSet& permissions) {
base::RunLoop run_loop;
PermissionsUpdater(browser_context)
.GrantOptionalPermissions(extension, permissions, run_loop.QuitClosure());
run_loop.Run();
}
void GrantRuntimePermissionsAndWaitForCompletion(
content::BrowserContext* browser_context,
const Extension& extension,
const PermissionSet& permissions) {
base::RunLoop run_loop;
PermissionsUpdater(browser_context)
.GrantRuntimePermissions(extension, permissions, run_loop.QuitClosure());
run_loop.Run();
}
void RevokeOptionalPermissionsAndWaitForCompletion(
content::BrowserContext* browser_context,
const Extension& extension,
const PermissionSet& permissions,
PermissionsUpdater::RemoveType remove_type) {
base::RunLoop run_loop;
PermissionsUpdater(browser_context)
.RevokeOptionalPermissions(extension, permissions, remove_type,
run_loop.QuitClosure());
run_loop.Run();
}
void RevokeRuntimePermissionsAndWaitForCompletion(
content::BrowserContext* browser_context,
const Extension& extension,
const PermissionSet& permissions) {
base::RunLoop run_loop;
PermissionsUpdater(browser_context)
.RevokeRuntimePermissions(extension, permissions, run_loop.QuitClosure());
run_loop.Run();
}
}
}