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

Side by Side Diff: chrome/browser/extensions/api/permissions/permissions_api_helpers_unittest.cc

Issue 2777063003: Stop passing raw pointers to base::Value API in c/b/chromeos and c/b/extensions (Closed)
Patch Set: Just rebased 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/extensions/api/permissions/permissions_api_helpers.h" 5 #include "chrome/browser/extensions/api/permissions/permissions_api_helpers.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <utility>
10 11
11 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "base/memory/ptr_util.h"
12 #include "base/values.h" 14 #include "base/values.h"
13 #include "chrome/common/extensions/api/permissions.h" 15 #include "chrome/common/extensions/api/permissions.h"
14 #include "extensions/common/permissions/permission_set.h" 16 #include "extensions/common/permissions/permission_set.h"
15 #include "extensions/common/url_pattern_set.h" 17 #include "extensions/common/url_pattern_set.h"
16 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
17 #include "url/gurl.h" 19 #include "url/gurl.h"
18 20
19 using extensions::api::permissions::Permissions; 21 using extensions::api::permissions::Permissions;
20 using extensions::permissions_api_helpers::PackPermissionSet; 22 using extensions::permissions_api_helpers::PackPermissionSet;
21 using extensions::permissions_api_helpers::UnpackPermissionSet; 23 using extensions::permissions_api_helpers::UnpackPermissionSet;
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 std::unique_ptr<base::ListValue> origins(new base::ListValue()); 90 std::unique_ptr<base::ListValue> origins(new base::ListValue());
89 origins->AppendString("http://a.com/*"); 91 origins->AppendString("http://a.com/*");
90 92
91 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue()); 93 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue());
92 std::unique_ptr<const PermissionSet> permissions; 94 std::unique_ptr<const PermissionSet> permissions;
93 std::string error; 95 std::string error;
94 96
95 // Origins shouldn't have to be present. 97 // Origins shouldn't have to be present.
96 { 98 {
97 Permissions permissions_object; 99 Permissions permissions_object;
98 value->Set("permissions", apis->DeepCopy()); 100 value->Set("permissions", apis->CreateDeepCopy());
99 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object)); 101 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object));
100 permissions = UnpackPermissionSet(permissions_object, true, &error); 102 permissions = UnpackPermissionSet(permissions_object, true, &error);
101 EXPECT_TRUE(permissions->HasAPIPermission(APIPermission::kTab)); 103 EXPECT_TRUE(permissions->HasAPIPermission(APIPermission::kTab));
102 EXPECT_TRUE(permissions.get()); 104 EXPECT_TRUE(permissions.get());
103 EXPECT_TRUE(error.empty()); 105 EXPECT_TRUE(error.empty());
104 } 106 }
105 107
106 // The api permissions don't need to be present either. 108 // The api permissions don't need to be present either.
107 { 109 {
108 Permissions permissions_object; 110 Permissions permissions_object;
109 value->Clear(); 111 value->Clear();
110 value->Set("origins", origins->DeepCopy()); 112 value->Set("origins", origins->CreateDeepCopy());
111 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object)); 113 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object));
112 permissions = UnpackPermissionSet(permissions_object, true, &error); 114 permissions = UnpackPermissionSet(permissions_object, true, &error);
113 EXPECT_TRUE(permissions.get()); 115 EXPECT_TRUE(permissions.get());
114 EXPECT_TRUE(error.empty()); 116 EXPECT_TRUE(error.empty());
115 EXPECT_TRUE(permissions->HasExplicitAccessToOrigin(GURL("http://a.com/"))); 117 EXPECT_TRUE(permissions->HasExplicitAccessToOrigin(GURL("http://a.com/")));
116 } 118 }
117 119
118 // Throw errors for non-string API permissions. 120 // Throw errors for non-string API permissions.
119 { 121 {
120 Permissions permissions_object; 122 Permissions permissions_object;
121 value->Clear(); 123 value->Clear();
122 std::unique_ptr<base::ListValue> invalid_apis(apis->DeepCopy()); 124 std::unique_ptr<base::ListValue> invalid_apis = apis->CreateDeepCopy();
123 invalid_apis->AppendInteger(3); 125 invalid_apis->AppendInteger(3);
124 value->Set("permissions", invalid_apis->DeepCopy()); 126 value->Set("permissions", std::move(invalid_apis));
125 EXPECT_FALSE(Permissions::Populate(*value, &permissions_object)); 127 EXPECT_FALSE(Permissions::Populate(*value, &permissions_object));
126 } 128 }
127 129
128 // Throw errors for non-string origins. 130 // Throw errors for non-string origins.
129 { 131 {
130 Permissions permissions_object; 132 Permissions permissions_object;
131 value->Clear(); 133 value->Clear();
132 std::unique_ptr<base::ListValue> invalid_origins(origins->DeepCopy()); 134 std::unique_ptr<base::ListValue> invalid_origins =
135 origins->CreateDeepCopy();
133 invalid_origins->AppendInteger(3); 136 invalid_origins->AppendInteger(3);
134 value->Set("origins", invalid_origins->DeepCopy()); 137 value->Set("origins", std::move(invalid_origins));
135 EXPECT_FALSE(Permissions::Populate(*value, &permissions_object)); 138 EXPECT_FALSE(Permissions::Populate(*value, &permissions_object));
136 } 139 }
137 140
138 // Throw errors when "origins" or "permissions" are not list values. 141 // Throw errors when "origins" or "permissions" are not list values.
139 { 142 {
140 Permissions permissions_object; 143 Permissions permissions_object;
141 value->Clear(); 144 value->Clear();
142 value->Set("origins", new base::Value(2)); 145 value->Set("origins", base::MakeUnique<base::Value>(2));
143 EXPECT_FALSE(Permissions::Populate(*value, &permissions_object)); 146 EXPECT_FALSE(Permissions::Populate(*value, &permissions_object));
144 } 147 }
145 148
146 { 149 {
147 Permissions permissions_object; 150 Permissions permissions_object;
148 value->Clear(); 151 value->Clear();
149 value->Set("permissions", new base::Value(2)); 152 value->Set("permissions", base::MakeUnique<base::Value>(2));
150 EXPECT_FALSE(Permissions::Populate(*value, &permissions_object)); 153 EXPECT_FALSE(Permissions::Populate(*value, &permissions_object));
151 } 154 }
152 155
153 // Additional fields should be allowed. 156 // Additional fields should be allowed.
154 { 157 {
155 Permissions permissions_object; 158 Permissions permissions_object;
156 value->Clear(); 159 value->Clear();
157 value->Set("origins", origins->DeepCopy()); 160 value->Set("origins", origins->CreateDeepCopy());
158 value->Set("random", new base::Value(3)); 161 value->Set("random", base::MakeUnique<base::Value>(3));
159 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object)); 162 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object));
160 permissions = UnpackPermissionSet(permissions_object, true, &error); 163 permissions = UnpackPermissionSet(permissions_object, true, &error);
161 EXPECT_TRUE(permissions.get()); 164 EXPECT_TRUE(permissions.get());
162 EXPECT_TRUE(error.empty()); 165 EXPECT_TRUE(error.empty());
163 EXPECT_TRUE(permissions->HasExplicitAccessToOrigin(GURL("http://a.com/"))); 166 EXPECT_TRUE(permissions->HasExplicitAccessToOrigin(GURL("http://a.com/")));
164 } 167 }
165 168
166 // Unknown permissions should throw an error. 169 // Unknown permissions should throw an error.
167 { 170 {
168 Permissions permissions_object; 171 Permissions permissions_object;
169 value->Clear(); 172 value->Clear();
170 std::unique_ptr<base::ListValue> invalid_apis(apis->DeepCopy()); 173 std::unique_ptr<base::ListValue> invalid_apis = apis->CreateDeepCopy();
171 invalid_apis->AppendString("unknown_permission"); 174 invalid_apis->AppendString("unknown_permission");
172 value->Set("permissions", invalid_apis->DeepCopy()); 175 value->Set("permissions", std::move(invalid_apis));
173 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object)); 176 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object));
174 permissions = UnpackPermissionSet(permissions_object, true, &error); 177 permissions = UnpackPermissionSet(permissions_object, true, &error);
175 EXPECT_FALSE(permissions.get()); 178 EXPECT_FALSE(permissions.get());
176 EXPECT_FALSE(error.empty()); 179 EXPECT_FALSE(error.empty());
177 EXPECT_EQ(error, "'unknown_permission' is not a recognized permission."); 180 EXPECT_EQ(error, "'unknown_permission' is not a recognized permission.");
178 } 181 }
179 } 182 }
180 183
181 } // namespace extensions 184 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698