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

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

Issue 16915006: Convert most of extensions and some other random stuff to using the base namespace for Values. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 6 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 | Annotate | Revision Log
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 "base/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "base/values.h" 6 #include "base/values.h"
7 #include "chrome/browser/extensions/api/permissions/permissions_api_helpers.h" 7 #include "chrome/browser/extensions/api/permissions/permissions_api_helpers.h"
8 #include "chrome/common/extensions/api/permissions.h" 8 #include "chrome/common/extensions/api/permissions.h"
9 #include "chrome/common/extensions/permissions/permission_set.h" 9 #include "chrome/common/extensions/permissions/permission_set.h"
10 #include "extensions/common/url_pattern_set.h" 10 #include "extensions/common/url_pattern_set.h"
(...skipping 23 matching lines...) Expand all
34 // Note: kWebRequest implies also kWebRequestInternal. 34 // Note: kWebRequest implies also kWebRequestInternal.
35 URLPatternSet hosts; 35 URLPatternSet hosts;
36 AddPattern(&hosts, "http://a.com/*"); 36 AddPattern(&hosts, "http://a.com/*");
37 AddPattern(&hosts, "http://b.com/*"); 37 AddPattern(&hosts, "http://b.com/*");
38 38
39 scoped_refptr<PermissionSet> permission_set = 39 scoped_refptr<PermissionSet> permission_set =
40 new PermissionSet(apis, hosts, URLPatternSet()); 40 new PermissionSet(apis, hosts, URLPatternSet());
41 41
42 // Pack the permission set to value and verify its contents. 42 // Pack the permission set to value and verify its contents.
43 scoped_ptr<Permissions> permissions(PackPermissionSet(permission_set.get())); 43 scoped_ptr<Permissions> permissions(PackPermissionSet(permission_set.get()));
44 scoped_ptr<DictionaryValue> value(permissions->ToValue()); 44 scoped_ptr<base::DictionaryValue> value(permissions->ToValue());
45 ListValue* api_list = NULL; 45 base::ListValue* api_list = NULL;
46 ListValue* origin_list = NULL; 46 base::ListValue* origin_list = NULL;
47 EXPECT_TRUE(value->GetList("permissions", &api_list)); 47 EXPECT_TRUE(value->GetList("permissions", &api_list));
48 EXPECT_TRUE(value->GetList("origins", &origin_list)); 48 EXPECT_TRUE(value->GetList("origins", &origin_list));
49 49
50 EXPECT_EQ(3u, api_list->GetSize()); 50 EXPECT_EQ(3u, api_list->GetSize());
51 EXPECT_EQ(2u, origin_list->GetSize()); 51 EXPECT_EQ(2u, origin_list->GetSize());
52 52
53 std::string expected_apis[] = { "tabs", "webRequest" }; 53 std::string expected_apis[] = { "tabs", "webRequest" };
54 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(expected_apis); ++i) { 54 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(expected_apis); ++i) {
55 scoped_ptr<Value> value(Value::CreateStringValue(expected_apis[i])); 55 scoped_ptr<Value> value(Value::CreateStringValue(expected_apis[i]));
56 EXPECT_NE(api_list->end(), api_list->Find(*value)); 56 EXPECT_NE(api_list->end(), api_list->Find(*value));
(...skipping 13 matching lines...) Expand all
70 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object)); 70 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object));
71 from_value = UnpackPermissionSet(permissions_object, true, &error); 71 from_value = UnpackPermissionSet(permissions_object, true, &error);
72 EXPECT_TRUE(error.empty()); 72 EXPECT_TRUE(error.empty());
73 73
74 EXPECT_EQ(*permission_set.get(), *from_value.get()); 74 EXPECT_EQ(*permission_set.get(), *from_value.get());
75 } 75 }
76 76
77 // Tests various error conditions and edge cases when unpacking values 77 // Tests various error conditions and edge cases when unpacking values
78 // into PermissionSets. 78 // into PermissionSets.
79 TEST(ExtensionPermissionsAPIHelpers, Unpack) { 79 TEST(ExtensionPermissionsAPIHelpers, Unpack) {
80 scoped_ptr<ListValue> apis(new ListValue()); 80 scoped_ptr<base::ListValue> apis(new base::ListValue());
81 apis->Append(Value::CreateStringValue("tabs")); 81 apis->Append(Value::CreateStringValue("tabs"));
82 scoped_ptr<ListValue> origins(new ListValue()); 82 scoped_ptr<base::ListValue> origins(new base::ListValue());
83 origins->Append(Value::CreateStringValue("http://a.com/*")); 83 origins->Append(Value::CreateStringValue("http://a.com/*"));
84 84
85 scoped_ptr<DictionaryValue> value(new DictionaryValue()); 85 scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue());
86 scoped_refptr<PermissionSet> permissions; 86 scoped_refptr<PermissionSet> permissions;
87 std::string error; 87 std::string error;
88 88
89 // Origins shouldn't have to be present. 89 // Origins shouldn't have to be present.
90 { 90 {
91 Permissions permissions_object; 91 Permissions permissions_object;
92 value->Set("permissions", apis->DeepCopy()); 92 value->Set("permissions", apis->DeepCopy());
93 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object)); 93 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object));
94 permissions = UnpackPermissionSet(permissions_object, true, &error); 94 permissions = UnpackPermissionSet(permissions_object, true, &error);
95 EXPECT_TRUE(permissions->HasAPIPermission(APIPermission::kTab)); 95 EXPECT_TRUE(permissions->HasAPIPermission(APIPermission::kTab));
(...skipping 10 matching lines...) Expand all
106 permissions = UnpackPermissionSet(permissions_object, true, &error); 106 permissions = UnpackPermissionSet(permissions_object, true, &error);
107 EXPECT_TRUE(permissions.get()); 107 EXPECT_TRUE(permissions.get());
108 EXPECT_TRUE(error.empty()); 108 EXPECT_TRUE(error.empty());
109 EXPECT_TRUE(permissions->HasExplicitAccessToOrigin(GURL("http://a.com/"))); 109 EXPECT_TRUE(permissions->HasExplicitAccessToOrigin(GURL("http://a.com/")));
110 } 110 }
111 111
112 // Throw errors for non-string API permissions. 112 // Throw errors for non-string API permissions.
113 { 113 {
114 Permissions permissions_object; 114 Permissions permissions_object;
115 value->Clear(); 115 value->Clear();
116 scoped_ptr<ListValue> invalid_apis(apis->DeepCopy()); 116 scoped_ptr<base::ListValue> invalid_apis(apis->DeepCopy());
117 invalid_apis->Append(Value::CreateIntegerValue(3)); 117 invalid_apis->Append(Value::CreateIntegerValue(3));
118 value->Set("permissions", invalid_apis->DeepCopy()); 118 value->Set("permissions", invalid_apis->DeepCopy());
119 EXPECT_FALSE(Permissions::Populate(*value, &permissions_object)); 119 EXPECT_FALSE(Permissions::Populate(*value, &permissions_object));
120 } 120 }
121 121
122 // Throw errors for non-string origins. 122 // Throw errors for non-string origins.
123 { 123 {
124 Permissions permissions_object; 124 Permissions permissions_object;
125 value->Clear(); 125 value->Clear();
126 scoped_ptr<ListValue> invalid_origins(origins->DeepCopy()); 126 scoped_ptr<base::ListValue> invalid_origins(origins->DeepCopy());
127 invalid_origins->Append(Value::CreateIntegerValue(3)); 127 invalid_origins->Append(Value::CreateIntegerValue(3));
128 value->Set("origins", invalid_origins->DeepCopy()); 128 value->Set("origins", invalid_origins->DeepCopy());
129 EXPECT_FALSE(Permissions::Populate(*value, &permissions_object)); 129 EXPECT_FALSE(Permissions::Populate(*value, &permissions_object));
130 } 130 }
131 131
132 // Throw errors when "origins" or "permissions" are not list values. 132 // Throw errors when "origins" or "permissions" are not list values.
133 { 133 {
134 Permissions permissions_object; 134 Permissions permissions_object;
135 value->Clear(); 135 value->Clear();
136 value->Set("origins", Value::CreateIntegerValue(2)); 136 value->Set("origins", Value::CreateIntegerValue(2));
(...skipping 17 matching lines...) Expand all
154 permissions = UnpackPermissionSet(permissions_object, true, &error); 154 permissions = UnpackPermissionSet(permissions_object, true, &error);
155 EXPECT_TRUE(permissions.get()); 155 EXPECT_TRUE(permissions.get());
156 EXPECT_TRUE(error.empty()); 156 EXPECT_TRUE(error.empty());
157 EXPECT_TRUE(permissions->HasExplicitAccessToOrigin(GURL("http://a.com/"))); 157 EXPECT_TRUE(permissions->HasExplicitAccessToOrigin(GURL("http://a.com/")));
158 } 158 }
159 159
160 // Unknown permissions should throw an error. 160 // Unknown permissions should throw an error.
161 { 161 {
162 Permissions permissions_object; 162 Permissions permissions_object;
163 value->Clear(); 163 value->Clear();
164 scoped_ptr<ListValue> invalid_apis(apis->DeepCopy()); 164 scoped_ptr<base::ListValue> invalid_apis(apis->DeepCopy());
165 invalid_apis->Append(Value::CreateStringValue("unknown_permission")); 165 invalid_apis->Append(Value::CreateStringValue("unknown_permission"));
166 value->Set("permissions", invalid_apis->DeepCopy()); 166 value->Set("permissions", invalid_apis->DeepCopy());
167 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object)); 167 EXPECT_TRUE(Permissions::Populate(*value, &permissions_object));
168 permissions = UnpackPermissionSet(permissions_object, true, &error); 168 permissions = UnpackPermissionSet(permissions_object, true, &error);
169 EXPECT_FALSE(permissions.get()); 169 EXPECT_FALSE(permissions.get());
170 EXPECT_FALSE(error.empty()); 170 EXPECT_FALSE(error.empty());
171 EXPECT_EQ(error, "'unknown_permission' is not a recognized permission."); 171 EXPECT_EQ(error, "'unknown_permission' is not a recognized permission.");
172 } 172 }
173 } 173 }
174 174
175 } // namespace extensions 175 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698