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

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

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

Powered by Google App Engine
This is Rietveld 408576698