Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(98)

Unified Diff: chrome/browser/chromeos/extensions/permissions_updater_delegate_chromeos_unittest.cc

Issue 2840043002: Fix for broken "Load unpacked extension" popup (Closed)
Patch Set: Updated unittest, minor code change Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..3923f796ba8ca96b9113b328b6db628e97b88ad4 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,49 @@ namespace {
const char kWhitelistedId[] = "cbkkbcmdlboombapidmoeolnmdacpkch";
const char kBogusId[] = "bogus";
+class MockManifestPermission : public ManifestPermission {
Ivan Šandrk 2017/04/26 13:25:02 I've c/p-ed this from manifest_permission_set_unit
Devlin 2017/04/26 14:58:26 That would work. Another option would be to just
Ivan Šandrk 2017/04/26 17:04:43 TODO it is.
+ 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;
@@ -43,9 +92,16 @@ std::unique_ptr<const PermissionSet> CreatePermissions() {
apis.insert(APIPermission::kAudio);
apis.insert(APIPermission::kClipboardRead);
apis.insert(APIPermission::kFullscreen);
+ 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 +139,18 @@ 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());
+ APIPermissionSet apis;
+ apis.insert(APIPermission::kClipboardRead);
+ auto expected_permissions = PermissionSet::CreateDifference(
Devlin 2017/04/26 14:58:26 nitty nit: This mirrors the code a bit too much. :
Ivan Šandrk 2017/04/26 17:04:44 Good point about the mirroring, I actually had a w
Devlin 2017/04/26 18:34:52 We *used* to have strong rules about not allowing
+ *CreatePermissions(),
+ PermissionSet(apis, ManifestPermissionSet(),
+ URLPatternSet(), URLPatternSet()));
+ EXPECT_EQ(*expected_permissions, *granted_permissions);
// Reset state at the end of test.
chromeos::LoginState::Shutdown();

Powered by Google App Engine
This is Rietveld 408576698