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

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

Powered by Google App Engine
This is Rietveld 408576698