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

Side by Side Diff: extensions/common/permissions/manifest_permission_set_unittest.cc

Issue 408493002: Make Clone, Contains, Equal and IPC function non-virtual and implement in manifest_permission.cc (Closed) Base URL: https://chromium.googlesource.com/chromium/src@warnings
Patch Set: Remove DCHECK Created 6 years, 5 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/pickle.h" 5 #include "base/pickle.h"
6 #include "base/values.h" 6 #include "base/values.h"
7 #include "extensions/common/extension_messages.h" 7 #include "extensions/common/extension_messages.h"
8 #include "extensions/common/manifest_handler.h"
8 #include "extensions/common/permissions/manifest_permission.h" 9 #include "extensions/common/permissions/manifest_permission.h"
9 #include "extensions/common/permissions/manifest_permission_set.h" 10 #include "extensions/common/permissions/manifest_permission_set.h"
10 #include "ipc/ipc_message.h" 11 #include "ipc/ipc_message.h"
11 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
12 13
13 namespace extensions { 14 namespace extensions {
14 15
15 class MockManifestPermission : public ManifestPermission { 16 class MockManifestPermission : public ManifestPermission {
16 public: 17 public:
17 MockManifestPermission(const std::string& name) 18 MockManifestPermission(const std::string& name)
18 : name_(name) { 19 : name_(name) {
19 } 20 }
20 21
21 virtual std::string name() const OVERRIDE { 22 virtual std::string name() const OVERRIDE {
22 return name_; 23 return name_;
23 } 24 }
24 25
25 virtual std::string id() const OVERRIDE { 26 virtual std::string id() const OVERRIDE {
26 return name(); 27 return name();
27 } 28 }
28 29
29 virtual bool HasMessages() const OVERRIDE { 30 virtual bool HasMessages() const OVERRIDE {
30 return false; 31 return false;
31 } 32 }
32 33
33 virtual PermissionMessages GetMessages() const OVERRIDE { 34 virtual PermissionMessages GetMessages() const OVERRIDE {
34 return PermissionMessages(); 35 return PermissionMessages();
35 } 36 }
36 37
37 virtual bool FromValue(const base::Value* value) OVERRIDE { 38 virtual bool FromValue(const base::Value* value) OVERRIDE { return true; }
38 return false;
39 }
40 39
41 virtual scoped_ptr<base::Value> ToValue() const OVERRIDE { 40 virtual scoped_ptr<base::Value> ToValue() const OVERRIDE {
42 return scoped_ptr<base::Value>(base::Value::CreateNullValue()); 41 return make_scoped_ptr(base::Value::CreateNullValue());
43 }
44
45 virtual ManifestPermission* Clone() const OVERRIDE {
46 return new MockManifestPermission(name_);
47 } 42 }
48 43
49 virtual ManifestPermission* Diff(const ManifestPermission* rhs) 44 virtual ManifestPermission* Diff(const ManifestPermission* rhs)
50 const OVERRIDE { 45 const OVERRIDE {
51 const MockManifestPermission* other = 46 const MockManifestPermission* other =
52 static_cast<const MockManifestPermission*>(rhs); 47 static_cast<const MockManifestPermission*>(rhs);
53 EXPECT_EQ(name_, other->name_); 48 EXPECT_EQ(name_, other->name_);
54 return NULL; 49 return NULL;
55 } 50 }
56 51
57 virtual ManifestPermission* Union(const ManifestPermission* rhs) 52 virtual ManifestPermission* Union(const ManifestPermission* rhs)
58 const OVERRIDE { 53 const OVERRIDE {
59 const MockManifestPermission* other = 54 const MockManifestPermission* other =
60 static_cast<const MockManifestPermission*>(rhs); 55 static_cast<const MockManifestPermission*>(rhs);
61 EXPECT_EQ(name_, other->name_); 56 EXPECT_EQ(name_, other->name_);
62 return new MockManifestPermission(name_); 57 return new MockManifestPermission(name_);
63 } 58 }
64 59
65 virtual ManifestPermission* Intersect(const ManifestPermission* rhs) 60 virtual ManifestPermission* Intersect(const ManifestPermission* rhs)
66 const OVERRIDE { 61 const OVERRIDE {
67 const MockManifestPermission* other = 62 const MockManifestPermission* other =
68 static_cast<const MockManifestPermission*>(rhs); 63 static_cast<const MockManifestPermission*>(rhs);
69 EXPECT_EQ(name_, other->name_); 64 EXPECT_EQ(name_, other->name_);
70 return new MockManifestPermission(name_); 65 return new MockManifestPermission(name_);
71 } 66 }
72 67
73 virtual bool Contains(const ManifestPermission* rhs) const OVERRIDE {
74 const MockManifestPermission* other =
75 static_cast<const MockManifestPermission*>(rhs);
76 EXPECT_EQ(name_, other->name_);
77 return true;
78 }
79
80 virtual bool Equal(const ManifestPermission* rhs) const OVERRIDE {
81 const MockManifestPermission* other =
82 static_cast<const MockManifestPermission*>(rhs);
83 EXPECT_EQ(name_, other->name_);
84 return true;
85 }
86
87 virtual void Write(IPC::Message* m) const OVERRIDE {
88 IPC::WriteParam(m, name_);
89 }
90
91 virtual bool Read(const IPC::Message* m, PickleIterator* iter) OVERRIDE {
92 std::string read_name;
93 bool result = IPC::ReadParam(m, iter, &read_name);
94 if (!result)
95 return result;
96 EXPECT_EQ(read_name, name_);
97 return true;
98 }
99
100 virtual void Log(std::string* log) const OVERRIDE {
101 }
102
103 private: 68 private:
104 std::string name_; 69 std::string name_;
105 }; 70 };
106 71
107 TEST(ManifestPermissionSetTest, General) { 72 class MockManifestHandlerRegistry : public ManifestHandlerRegistry {
73 public:
74 MockManifestHandlerRegistry() {
75 old_registry_ = ManifestHandlerRegistry::SetForTesting(this);
76 }
77
78 ~MockManifestHandlerRegistry() {
79 ManifestHandlerRegistry::SetForTesting(old_registry_);
80 }
81
82 virtual ManifestPermission* CreatePermission(
83 const std::string& name) OVERRIDE {
84 return new MockManifestPermission(name);
85 }
86
87 private:
88 ManifestHandlerRegistry* old_registry_;
89 };
90
91 class ManifestPermissionSetTest : public testing::Test {
92 public:
93 ManifestPermissionSetTest() {}
94
95 private:
96 MockManifestHandlerRegistry registry_;
97 };
98
99 TEST_F(ManifestPermissionSetTest, General) {
108 ManifestPermissionSet set; 100 ManifestPermissionSet set;
109 set.insert(new MockManifestPermission("p1")); 101 set.insert(new MockManifestPermission("p1"));
110 set.insert(new MockManifestPermission("p2")); 102 set.insert(new MockManifestPermission("p2"));
111 set.insert(new MockManifestPermission("p3")); 103 set.insert(new MockManifestPermission("p3"));
112 set.insert(new MockManifestPermission("p4")); 104 set.insert(new MockManifestPermission("p4"));
113 set.insert(new MockManifestPermission("p5")); 105 set.insert(new MockManifestPermission("p5"));
114 106
115 EXPECT_EQ(set.find("p1")->id(), "p1"); 107 EXPECT_EQ(set.find("p1")->id(), "p1");
116 EXPECT_TRUE(set.find("p10") == set.end()); 108 EXPECT_TRUE(set.find("p10") == set.end());
117 109
118 EXPECT_EQ(set.size(), 5u); 110 EXPECT_EQ(set.size(), 5u);
119 111
120 EXPECT_EQ(set.erase("p1"), 1u); 112 EXPECT_EQ(set.erase("p1"), 1u);
121 EXPECT_EQ(set.size(), 4u); 113 EXPECT_EQ(set.size(), 4u);
122 114
123 EXPECT_EQ(set.erase("p1"), 0u); 115 EXPECT_EQ(set.erase("p1"), 0u);
124 EXPECT_EQ(set.size(), 4u); 116 EXPECT_EQ(set.size(), 4u);
125 } 117 }
126 118
127 TEST(ManifestPermissionSetTest, CreateUnion) { 119 TEST_F(ManifestPermissionSetTest, CreateUnion) {
128 ManifestPermissionSet permissions1; 120 ManifestPermissionSet permissions1;
129 ManifestPermissionSet permissions2; 121 ManifestPermissionSet permissions2;
130 ManifestPermissionSet expected_permissions; 122 ManifestPermissionSet expected_permissions;
131 ManifestPermissionSet result; 123 ManifestPermissionSet result;
132 124
133 ManifestPermission* permission = new MockManifestPermission("p3"); 125 ManifestPermission* permission = new MockManifestPermission("p3");
134 126
135 // Union with an empty set. 127 // Union with an empty set.
136 permissions1.insert(new MockManifestPermission("p1")); 128 permissions1.insert(new MockManifestPermission("p1"));
137 permissions1.insert(new MockManifestPermission("p2")); 129 permissions1.insert(new MockManifestPermission("p2"));
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 EXPECT_FALSE(permissions1.Contains(permissions2)); 173 EXPECT_FALSE(permissions1.Contains(permissions2));
182 EXPECT_FALSE(permissions1.Contains(result)); 174 EXPECT_FALSE(permissions1.Contains(result));
183 EXPECT_FALSE(permissions2.Contains(permissions1)); 175 EXPECT_FALSE(permissions2.Contains(permissions1));
184 EXPECT_FALSE(permissions2.Contains(result)); 176 EXPECT_FALSE(permissions2.Contains(result));
185 EXPECT_TRUE(result.Contains(permissions1)); 177 EXPECT_TRUE(result.Contains(permissions1));
186 EXPECT_TRUE(result.Contains(permissions2)); 178 EXPECT_TRUE(result.Contains(permissions2));
187 179
188 EXPECT_EQ(expected_permissions, result); 180 EXPECT_EQ(expected_permissions, result);
189 } 181 }
190 182
191 TEST(ManifestPermissionSetTest, CreateIntersection) { 183 TEST_F(ManifestPermissionSetTest, CreateIntersection) {
192 ManifestPermissionSet permissions1; 184 ManifestPermissionSet permissions1;
193 ManifestPermissionSet permissions2; 185 ManifestPermissionSet permissions2;
194 ManifestPermissionSet expected_permissions; 186 ManifestPermissionSet expected_permissions;
195 ManifestPermissionSet result; 187 ManifestPermissionSet result;
196 188
197 // Intersection with an empty set. 189 // Intersection with an empty set.
198 permissions1.insert(new MockManifestPermission("p1")); 190 permissions1.insert(new MockManifestPermission("p1"));
199 permissions1.insert(new MockManifestPermission("p2")); 191 permissions1.insert(new MockManifestPermission("p2"));
200 permissions1.insert(new MockManifestPermission("p3")); 192 permissions1.insert(new MockManifestPermission("p3"));
201 193
(...skipping 22 matching lines...) Expand all
224 EXPECT_TRUE(permissions1.Contains(result)); 216 EXPECT_TRUE(permissions1.Contains(result));
225 EXPECT_TRUE(permissions2.Contains(result)); 217 EXPECT_TRUE(permissions2.Contains(result));
226 EXPECT_FALSE(permissions1.Contains(permissions2)); 218 EXPECT_FALSE(permissions1.Contains(permissions2));
227 EXPECT_FALSE(permissions2.Contains(permissions1)); 219 EXPECT_FALSE(permissions2.Contains(permissions1));
228 EXPECT_FALSE(result.Contains(permissions1)); 220 EXPECT_FALSE(result.Contains(permissions1));
229 EXPECT_FALSE(result.Contains(permissions2)); 221 EXPECT_FALSE(result.Contains(permissions2));
230 222
231 EXPECT_EQ(expected_permissions, result); 223 EXPECT_EQ(expected_permissions, result);
232 } 224 }
233 225
234 TEST(ManifestPermissionSetTest, CreateDifference) { 226 TEST_F(ManifestPermissionSetTest, CreateDifference) {
235 ManifestPermissionSet permissions1; 227 ManifestPermissionSet permissions1;
236 ManifestPermissionSet permissions2; 228 ManifestPermissionSet permissions2;
237 ManifestPermissionSet expected_permissions; 229 ManifestPermissionSet expected_permissions;
238 ManifestPermissionSet result; 230 ManifestPermissionSet result;
239 231
240 // Difference with an empty set. 232 // Difference with an empty set.
241 permissions1.insert(new MockManifestPermission("p1")); 233 permissions1.insert(new MockManifestPermission("p1"));
242 permissions1.insert(new MockManifestPermission("p2")); 234 permissions1.insert(new MockManifestPermission("p2"));
243 permissions1.insert(new MockManifestPermission("p3")); 235 permissions1.insert(new MockManifestPermission("p3"));
244 236
(...skipping 18 matching lines...) Expand all
263 EXPECT_EQ(expected_permissions, result); 255 EXPECT_EQ(expected_permissions, result);
264 256
265 // |result| = |permissions1| - |permissions2| --> 257 // |result| = |permissions1| - |permissions2| -->
266 // |result| intersect |permissions2| == empty_set 258 // |result| intersect |permissions2| == empty_set
267 ManifestPermissionSet result2; 259 ManifestPermissionSet result2;
268 ManifestPermissionSet::Intersection(result, permissions2, &result2); 260 ManifestPermissionSet::Intersection(result, permissions2, &result2);
269 EXPECT_TRUE(result2.empty()); 261 EXPECT_TRUE(result2.empty());
270 } 262 }
271 263
272 } // namespace extensions 264 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698