| Index: chrome/browser/chromeos/extensions/permissions_updater_delegate_chromeos_unittest.cc
|
| diff --git a/chrome/browser/chromeos/extensions/permissions_updater_delegate_chromeos_unittest.cc b/chrome/browser/chromeos/extensions/permissions_updater_delegate_chromeos_unittest.cc
|
| index 4065c34e767debeba2be3093ea56473dd5a53245..f48ca7faec4df9f027867bdfb1d7c794a6c5b1a9 100644
|
| --- a/chrome/browser/chromeos/extensions/permissions_updater_delegate_chromeos_unittest.cc
|
| +++ b/chrome/browser/chromeos/extensions/permissions_updater_delegate_chromeos_unittest.cc
|
| @@ -13,7 +13,13 @@
|
| #include "extensions/common/extension.h"
|
| #include "extensions/common/manifest.h"
|
| #include "extensions/common/manifest_constants.h"
|
| +#include "extensions/common/permissions/api_permission.h"
|
| +#include "extensions/common/permissions/api_permission_set.h"
|
| +#include "extensions/common/permissions/manifest_permission.h"
|
| +#include "extensions/common/permissions/manifest_permission_set.h"
|
| #include "extensions/common/permissions/permission_set.h"
|
| +#include "extensions/common/url_pattern.h"
|
| +#include "extensions/common/url_pattern_set.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| namespace extensions {
|
| @@ -23,6 +29,51 @@ namespace {
|
| const char kWhitelistedId[] = "cbkkbcmdlboombapidmoeolnmdacpkch";
|
| const char kBogusId[] = "bogus";
|
|
|
| +// TODO(isandrk, crbug.com/715638): Extract MockManifestPermission into its own
|
| +// file (since it's duplicated in two places).
|
| +class MockManifestPermission : public ManifestPermission {
|
| + public:
|
| + MockManifestPermission(const std::string& name)
|
| + : name_(name) {
|
| + }
|
| +
|
| + std::string name() const override { return name_; }
|
| +
|
| + std::string id() const override { return name(); }
|
| +
|
| + PermissionIDSet GetPermissions() const override { return PermissionIDSet(); }
|
| +
|
| + bool FromValue(const base::Value* value) override { return true; }
|
| +
|
| + std::unique_ptr<base::Value> ToValue() const override {
|
| + return base::MakeUnique<base::Value>();
|
| + }
|
| +
|
| + ManifestPermission* Diff(const ManifestPermission* rhs) const override {
|
| + const MockManifestPermission* other =
|
| + static_cast<const MockManifestPermission*>(rhs);
|
| + EXPECT_EQ(name_, other->name_);
|
| + return NULL;
|
| + }
|
| +
|
| + ManifestPermission* Union(const ManifestPermission* rhs) const override {
|
| + const MockManifestPermission* other =
|
| + static_cast<const MockManifestPermission*>(rhs);
|
| + EXPECT_EQ(name_, other->name_);
|
| + return new MockManifestPermission(name_);
|
| + }
|
| +
|
| + ManifestPermission* Intersect(const ManifestPermission* rhs) const override {
|
| + const MockManifestPermission* other =
|
| + static_cast<const MockManifestPermission*>(rhs);
|
| + EXPECT_EQ(name_, other->name_);
|
| + return new MockManifestPermission(name_);
|
| + }
|
| +
|
| + private:
|
| + std::string name_;
|
| +};
|
| +
|
| scoped_refptr<Extension> CreateExtension(const std::string& id) {
|
| std::string error;
|
| base::DictionaryValue manifest;
|
| @@ -38,14 +89,23 @@ scoped_refptr<Extension> CreateExtension(const std::string& id) {
|
| return extension;
|
| }
|
|
|
| -std::unique_ptr<const PermissionSet> CreatePermissions() {
|
| +std::unique_ptr<const PermissionSet> CreatePermissions(
|
| + bool include_clipboard = true) {
|
| APIPermissionSet apis;
|
| apis.insert(APIPermission::kAudio);
|
| - apis.insert(APIPermission::kClipboardRead);
|
| apis.insert(APIPermission::kFullscreen);
|
| + if (include_clipboard)
|
| + apis.insert(APIPermission::kClipboardRead);
|
| + ManifestPermissionSet manifest;
|
| + manifest.insert(new MockManifestPermission("author"));
|
| + manifest.insert(new MockManifestPermission("background"));
|
| + URLPatternSet explicit_hosts({
|
| + URLPattern(URLPattern::SCHEME_ALL, "http://www.google.com/*"),
|
| + URLPattern(URLPattern::SCHEME_ALL, "<all_urls>")});
|
| + URLPatternSet scriptable_hosts({
|
| + URLPattern(URLPattern::SCHEME_ALL, "http://www.wikipedia.com/*")});
|
| auto permissions = base::MakeUnique<const PermissionSet>(
|
| - apis, ManifestPermissionSet(),
|
| - URLPatternSet(), URLPatternSet());
|
| + apis, manifest, explicit_hosts, scriptable_hosts);
|
| return permissions;
|
| }
|
|
|
| @@ -83,13 +143,12 @@ TEST(PermissionsUpdaterDelegateChromeOSTest,
|
| delegate.InitializePermissions(extension.get(), &granted_permissions);
|
| EXPECT_EQ(*CreatePermissions(), *granted_permissions);
|
|
|
| - // Bogus extension ID (never whitelisted), ClipboardRead filtered out.
|
| + // Bogus extension ID (never whitelisted), ClipboardRead filtered out,
|
| + // everything else stays.
|
| extension = CreateExtension(kBogusId);
|
| granted_permissions = CreatePermissions();
|
| delegate.InitializePermissions(extension.get(), &granted_permissions);
|
| - EXPECT_FALSE(granted_permissions->HasAPIPermission(
|
| - APIPermission::kClipboardRead));
|
| - EXPECT_EQ(2u, granted_permissions->apis().size());
|
| + EXPECT_EQ(*CreatePermissions(false), *granted_permissions);
|
|
|
| // Reset state at the end of test.
|
| chromeos::LoginState::Shutdown();
|
|
|