OLD | NEW |
---|---|
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 Loading... | |
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 |
OLD | NEW |