blob: 4333f3fb9507b5778eecdf365d711c8b0a9739da [file] [log] [blame]
// Copyright 2018 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/permissions_test_util.h"
#include "base/run_loop.h"
#include "content/public/browser/browser_context.h"
#include "extensions/common/extension.h"
#include "extensions/common/permissions/permission_set.h"
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,
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();
}
} // namespace permissions_test_util
} // namespace extensions