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

Side by Side Diff: chrome/common/extensions/api/extension_api_unittest.cc

Issue 377753003: Remove GetContexts() from the public interface of extensions::Feature. It was (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 5 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
« no previous file with comments | « no previous file | chrome/test/data/extensions/extension_api_unittest/privileged_api_features.json » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "extensions/common/extension_api.h" 5 #include "extensions/common/extension_api.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/file_util.h" 10 #include "base/file_util.h"
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { 78 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) {
79 std::string feature_type; 79 std::string feature_type;
80 std::string feature_name; 80 std::string feature_name;
81 ExtensionAPI::SplitDependencyName( 81 ExtensionAPI::SplitDependencyName(
82 test_data[i].input, &feature_type, &feature_name); 82 test_data[i].input, &feature_type, &feature_name);
83 EXPECT_EQ(test_data[i].expected_feature_type, feature_type) << i; 83 EXPECT_EQ(test_data[i].expected_feature_type, feature_type) << i;
84 EXPECT_EQ(test_data[i].expected_feature_name, feature_name) << i; 84 EXPECT_EQ(test_data[i].expected_feature_name, feature_name) << i;
85 } 85 }
86 } 86 }
87 87
88 TEST(ExtensionAPITest, IsPrivileged) { 88 TEST(ExtensionAPITest, IsAvailableInUntrustedContext) {
89 scoped_ptr<ExtensionAPI> extension_api( 89 scoped_ptr<ExtensionAPI> extension_api(
90 ExtensionAPI::CreateWithDefaultConfiguration()); 90 ExtensionAPI::CreateWithDefaultConfiguration());
91 scoped_refptr<const Extension> extension =
92 ExtensionBuilder()
93 .SetManifest(DictionaryBuilder()
94 .Set("name", "extension")
95 .Set("version", "1")
96 .Set("permissions", ListBuilder().Append("storage"))
97 .Set("manifest_version", 2))
98 .Build();
91 99
92 EXPECT_FALSE(extension_api->IsPrivileged("runtime.connect")); 100 EXPECT_TRUE(extension_api->IsAvailableInUntrustedContext("runtime.connect",
93 EXPECT_FALSE(extension_api->IsPrivileged("runtime.onConnect")); 101 extension.get()));
94 EXPECT_FALSE(extension_api->IsPrivileged("runtime.lastError")); 102 EXPECT_TRUE(extension_api->IsAvailableInUntrustedContext("runtime.onConnect",
103 extension.get()));
104 EXPECT_TRUE(extension_api->IsAvailableInUntrustedContext("runtime.lastError",
105 extension.get()));
95 106
96 // Exists, but privileged. 107 // Exists, but privileged.
97 EXPECT_TRUE(extension_api->IsPrivileged("extension.getViews")); 108 EXPECT_FALSE(extension_api->IsAvailableInUntrustedContext(
98 EXPECT_TRUE(extension_api->IsPrivileged("history.search")); 109 "extension.getViews", extension.get()));
110 EXPECT_FALSE(extension_api->IsAvailableInUntrustedContext("history.search",
111 extension.get()));
99 112
100 // Whole APIs that are unprivileged. 113 // Whole APIs that are unprivileged.
101 EXPECT_FALSE(extension_api->IsPrivileged("app.getDetails")); 114 EXPECT_TRUE(
102 EXPECT_FALSE(extension_api->IsPrivileged("app.isInstalled")); 115 extension_api->IsAvailableInUntrustedContext("app", extension.get()));
103 EXPECT_FALSE(extension_api->IsPrivileged("storage.local")); 116 EXPECT_TRUE(extension_api->IsAvailableInUntrustedContext("app.getDetails",
104 EXPECT_FALSE(extension_api->IsPrivileged("storage.local.onChanged")); 117 extension.get()));
105 EXPECT_FALSE(extension_api->IsPrivileged("storage.local.set")); 118 // There is no feature "app.isInstalled" (it's "app.getIsInstalled") but
106 EXPECT_FALSE(extension_api->IsPrivileged("storage.local.MAX_ITEMS")); 119 // this should be available nonetheless.
107 EXPECT_FALSE(extension_api->IsPrivileged("storage.set")); 120 EXPECT_TRUE(extension_api->IsAvailableInUntrustedContext("app.isInstalled",
121 extension.get()));
122 EXPECT_TRUE(extension_api->IsAvailableInUntrustedContext("storage.local",
123 extension.get()));
124 EXPECT_TRUE(extension_api->IsAvailableInUntrustedContext(
125 "storage.local.onChanged", extension.get()));
126 EXPECT_TRUE(extension_api->IsAvailableInUntrustedContext("storage.local.set",
127 extension.get()));
128 EXPECT_TRUE(extension_api->IsAvailableInUntrustedContext(
129 "storage.local.MAX_ITEMS", extension.get()));
130 EXPECT_TRUE(extension_api->IsAvailableInUntrustedContext("storage.set",
131 extension.get()));
132
133 // APIs which override unprivileged APIs.
134 EXPECT_FALSE(extension_api->IsAvailableInUntrustedContext("app.runtime",
135 extension.get()));
136 EXPECT_FALSE(extension_api->IsAvailableInUntrustedContext("app.window",
137 extension.get()));
108 } 138 }
109 139
110 TEST(ExtensionAPITest, IsPrivilegedFeatures) { 140 TEST(ExtensionAPITest, IsAvailableInUntrustedContextFeatures) {
111 struct { 141 struct {
112 std::string api_full_name; 142 std::string api_full_name;
113 bool expect_is_privilged; 143 bool expect_is_available;
114 } test_data[] = { 144 } test_data[] = {{"test1", true},
115 { "test1", false }, 145 {"test1.foo", false},
116 { "test1.foo", true }, 146 {"test2", false},
117 { "test2", true }, 147 {"test2.foo", true},
118 { "test2.foo", false }, 148 {"test2.bar", true},
119 { "test2.bar", false }, 149 {"test2.baz", false},
120 { "test2.baz", true }, 150 {"test2.qux", false},
121 { "test3", false }, 151 {"test3", true},
122 { "test3.foo", true }, 152 {"test3.foo", false},
123 { "test4", false } 153 {"test4", true},
124 }; 154 {"test5", true}};
125 155
126 base::FilePath api_features_path; 156 base::FilePath api_features_path;
127 PathService::Get(chrome::DIR_TEST_DATA, &api_features_path); 157 PathService::Get(chrome::DIR_TEST_DATA, &api_features_path);
128 api_features_path = api_features_path.AppendASCII("extensions") 158 api_features_path = api_features_path.AppendASCII("extensions")
129 .AppendASCII("extension_api_unittest") 159 .AppendASCII("extension_api_unittest")
130 .AppendASCII("privileged_api_features.json"); 160 .AppendASCII("privileged_api_features.json");
131 161
132 std::string api_features_str; 162 std::string api_features_str;
133 ASSERT_TRUE(base::ReadFileToString( 163 ASSERT_TRUE(base::ReadFileToString(
134 api_features_path, &api_features_str)) << "privileged_api_features.json"; 164 api_features_path, &api_features_str)) << "privileged_api_features.json";
135 165
136 scoped_ptr<base::DictionaryValue> value(static_cast<base::DictionaryValue*>( 166 scoped_ptr<base::DictionaryValue> value(static_cast<base::DictionaryValue*>(
137 base::JSONReader::Read(api_features_str))); 167 base::JSONReader::Read(api_features_str)));
138 BaseFeatureProvider api_feature_provider(*value, CreateAPIFeature); 168 BaseFeatureProvider api_feature_provider(*value, CreateAPIFeature);
139 169
170 scoped_refptr<Extension> extension =
171 BuildExtension(ExtensionBuilder().Pass()).Build();
172
140 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { 173 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) {
141 ExtensionAPI api; 174 ExtensionAPI api;
142 api.RegisterDependencyProvider("api", &api_feature_provider); 175 api.RegisterDependencyProvider("api", &api_feature_provider);
143 EXPECT_EQ(test_data[i].expect_is_privilged, 176 EXPECT_EQ(test_data[i].expect_is_available,
144 api.IsPrivileged(test_data[i].api_full_name)) << i; 177 api.IsAvailableInUntrustedContext(test_data[i].api_full_name,
178 extension.get()))
179 << i;
145 } 180 }
146 } 181 }
147 182
148 TEST(ExtensionAPITest, APIFeatures) { 183 TEST(ExtensionAPITest, APIFeatures) {
149 struct { 184 struct {
150 std::string api_full_name; 185 std::string api_full_name;
151 bool expect_is_available; 186 bool expect_is_available;
152 Feature::Context context; 187 Feature::Context context;
153 GURL url; 188 GURL url;
154 } test_data[] = { 189 } test_data[] = {
(...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after
701 { bookmarks_create } 736 { bookmarks_create }
702 }; 737 };
703 738
704 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { 739 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) {
705 SimpleFeature* feature = test_data[i].feature; 740 SimpleFeature* feature = test_data[i].feature;
706 ASSERT_TRUE(feature) << i; 741 ASSERT_TRUE(feature) << i;
707 742
708 EXPECT_TRUE(feature->whitelist()->empty()); 743 EXPECT_TRUE(feature->whitelist()->empty());
709 EXPECT_TRUE(feature->extension_types()->empty()); 744 EXPECT_TRUE(feature->extension_types()->empty());
710 745
711 EXPECT_EQ(1u, feature->GetContexts()->size());
712 EXPECT_TRUE(feature->GetContexts()->count(
713 Feature::BLESSED_EXTENSION_CONTEXT));
714
715 EXPECT_EQ(SimpleFeature::UNSPECIFIED_LOCATION, feature->location()); 746 EXPECT_EQ(SimpleFeature::UNSPECIFIED_LOCATION, feature->location());
716 EXPECT_TRUE(feature->platforms()->empty()); 747 EXPECT_TRUE(feature->platforms()->empty());
717 EXPECT_EQ(0, feature->min_manifest_version()); 748 EXPECT_EQ(0, feature->min_manifest_version());
718 EXPECT_EQ(0, feature->max_manifest_version()); 749 EXPECT_EQ(0, feature->max_manifest_version());
719 } 750 }
720 } 751 }
721 752
722 TEST(ExtensionAPITest, FeaturesRequireContexts) { 753 TEST(ExtensionAPITest, FeaturesRequireContexts) {
723 // TODO(cduvall): Make this check API featues. 754 // TODO(cduvall): Make this check API featues.
724 scoped_ptr<base::DictionaryValue> api_features1(new base::DictionaryValue()); 755 scoped_ptr<base::DictionaryValue> api_features1(new base::DictionaryValue());
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
896 extension.get(), 927 extension.get(),
897 Feature::BLESSED_EXTENSION_CONTEXT, 928 Feature::BLESSED_EXTENSION_CONTEXT,
898 GURL()).is_available()); 929 GURL()).is_available());
899 EXPECT_FALSE(extension_api->IsAvailable("pageAction", 930 EXPECT_FALSE(extension_api->IsAvailable("pageAction",
900 extension.get(), 931 extension.get(),
901 Feature::BLESSED_EXTENSION_CONTEXT, 932 Feature::BLESSED_EXTENSION_CONTEXT,
902 GURL()).is_available()); 933 GURL()).is_available());
903 } 934 }
904 935
905 } // namespace extensions 936 } // namespace extensions
OLDNEW
« no previous file with comments | « no previous file | chrome/test/data/extensions/extension_api_unittest/privileged_api_features.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698