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

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

Issue 2601803003: Introduce kiosk.autolaunched feature session type (Closed)
Patch Set: . Created 3 years, 11 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 "extensions/common/extension_api.h" 5 #include "extensions/common/extension_api.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <string> 10 #include <string>
(...skipping 24 matching lines...) Expand all
35 namespace { 35 namespace {
36 36
37 const char* const kTestFeatures[] = { 37 const char* const kTestFeatures[] = {
38 "test1", "test2", "test3", "test4", "test5", 38 "test1", "test2", "test3", "test4", "test5",
39 "test6", "test7", "parent1", "parent2", "parent3", 39 "test6", "test7", "parent1", "parent2", "parent3",
40 }; 40 };
41 41
42 const char* const kAliasTestApis[] = {"alias_api_source"}; 42 const char* const kAliasTestApis[] = {"alias_api_source"};
43 43
44 const char* const kSessionTypeTestFeatures[] = { 44 const char* const kSessionTypeTestFeatures[] = {
45 "test1", "kiosk_only", "non_kiosk", "multiple_session_types"}; 45 "test6", "kiosk_only", "non_kiosk", "multiple_session_types",
46 "autolaunched_kiosk"};
46 47
47 struct FeatureSessionTypesTestData { 48 struct FeatureSessionTypesTestData {
48 std::string api_name; 49 std::string api_name;
49 bool expect_available; 50 bool expect_available;
50 FeatureSessionType current_session_type; 51 FeatureSessionType current_session_type;
51 }; 52 };
52 53
53 class TestExtensionAPI : public ExtensionAPI { 54 class TestExtensionAPI : public ExtensionAPI {
54 public: 55 public:
55 TestExtensionAPI() {} 56 TestExtensionAPI() {}
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 ASSERT_TRUE(test_feature); 331 ASSERT_TRUE(test_feature);
331 EXPECT_EQ(test_data[i].expect_is_available, 332 EXPECT_EQ(test_data[i].expect_is_available,
332 api.IsAnyFeatureAvailableToContext( 333 api.IsAnyFeatureAvailableToContext(
333 *test_feature, test_data[i].extension, test_data[i].context, 334 *test_feature, test_data[i].extension, test_data[i].context,
334 test_data[i].url, CheckAliasStatus::NOT_ALLOWED)) 335 test_data[i].url, CheckAliasStatus::NOT_ALLOWED))
335 << i; 336 << i;
336 } 337 }
337 } 338 }
338 339
339 TEST(ExtensionAPITest, SessionTypeFeature) { 340 TEST(ExtensionAPITest, SessionTypeFeature) {
341 scoped_refptr<const Extension> app =
342 ExtensionBuilder()
343 .SetManifest(
344 DictionaryBuilder()
345 .Set("name", "app")
346 .Set("app",
347 DictionaryBuilder()
348 .Set("background",
349 DictionaryBuilder()
350 .Set("scripts", ListBuilder()
351 .Append("background.js")
352 .Build())
353 .Build())
354 .Build())
355 .Set("version", "1")
356 .Set("manifest_version", 2)
357 .Build())
358 .Build();
359
340 const std::vector<FeatureSessionTypesTestData> kTestData( 360 const std::vector<FeatureSessionTypesTestData> kTestData(
341 {{"kiosk_only", true, FeatureSessionType::KIOSK}, 361 {{"kiosk_only", true, FeatureSessionType::KIOSK},
362 {"kiosk_only", true, FeatureSessionType::AUTOLAUNCHED_KIOSK},
342 {"kiosk_only", false, FeatureSessionType::REGULAR}, 363 {"kiosk_only", false, FeatureSessionType::REGULAR},
343 {"kiosk_only", false, FeatureSessionType::UNKNOWN}, 364 {"kiosk_only", false, FeatureSessionType::UNKNOWN},
344 {"non_kiosk", false, FeatureSessionType::KIOSK}, 365 {"non_kiosk", false, FeatureSessionType::KIOSK},
345 {"non_kiosk", true, FeatureSessionType::REGULAR}, 366 {"non_kiosk", true, FeatureSessionType::REGULAR},
346 {"non_kiosk", false, FeatureSessionType::UNKNOWN}, 367 {"non_kiosk", false, FeatureSessionType::UNKNOWN},
368 {"autolaunched_kiosk", true, FeatureSessionType::AUTOLAUNCHED_KIOSK},
369 {"autolaunched_kiosk", false, FeatureSessionType::KIOSK},
370 {"autolaunched_kiosk", false, FeatureSessionType::REGULAR},
347 {"multiple_session_types", true, FeatureSessionType::KIOSK}, 371 {"multiple_session_types", true, FeatureSessionType::KIOSK},
348 {"multiple_session_types", true, FeatureSessionType::REGULAR}, 372 {"multiple_session_types", true, FeatureSessionType::REGULAR},
349 {"multiple_session_types", false, FeatureSessionType::UNKNOWN}, 373 {"multiple_session_types", false, FeatureSessionType::UNKNOWN},
350 {"test1", true, FeatureSessionType::KIOSK}, 374 // test6.foo is available to apps and has no session type restrictions.
351 {"test1", true, FeatureSessionType::REGULAR}, 375 {"test6.foo", true, FeatureSessionType::KIOSK},
352 {"test1", true, FeatureSessionType::UNKNOWN}}); 376 {"test6.foo", true, FeatureSessionType::AUTOLAUNCHED_KIOSK},
377 {"test6.foo", true, FeatureSessionType::REGULAR},
378 {"test6.foo", true, FeatureSessionType::UNKNOWN}});
353 379
354 UnittestFeatureProvider api_feature_provider; 380 UnittestFeatureProvider api_feature_provider;
355 381
356 for (const auto& test : kTestData) { 382 for (const auto& test : kTestData) {
357 TestExtensionAPI api; 383 TestExtensionAPI api;
358 api.RegisterDependencyProvider("api", &api_feature_provider); 384 api.RegisterDependencyProvider("api", &api_feature_provider);
359 for (const auto& key : kSessionTypeTestFeatures) 385 for (const auto& key : kSessionTypeTestFeatures)
360 api.add_fake_schema(key); 386 api.add_fake_schema(key);
361 ExtensionAPI::OverrideSharedInstanceForTest scope(&api); 387 ExtensionAPI::OverrideSharedInstanceForTest scope(&api);
362 388
363 std::unique_ptr<base::AutoReset<FeatureSessionType>> current_session( 389 std::unique_ptr<base::AutoReset<FeatureSessionType>> current_session(
364 ScopedCurrentFeatureSessionType(test.current_session_type)); 390 ScopedCurrentFeatureSessionType(test.current_session_type));
365 EXPECT_EQ(test.expect_available, 391 EXPECT_EQ(test.expect_available,
366 api.IsAvailable(test.api_name, nullptr, 392 api.IsAvailable(test.api_name, app.get(),
367 Feature::BLESSED_EXTENSION_CONTEXT, GURL(), 393 Feature::BLESSED_EXTENSION_CONTEXT, GURL(),
368 CheckAliasStatus::NOT_ALLOWED) 394 CheckAliasStatus::NOT_ALLOWED)
369 .is_available()) 395 .is_available())
370 << "Test case (" << test.api_name << ", " 396 << "Test case (" << test.api_name << ", "
371 << static_cast<int>(test.current_session_type) << ")."; 397 << static_cast<int>(test.current_session_type) << ").";
372 } 398 }
373 } 399 }
374 400
375 TEST(ExtensionAPITest, LazyGetSchema) { 401 TEST(ExtensionAPITest, LazyGetSchema) {
376 std::unique_ptr<ExtensionAPI> apis( 402 std::unique_ptr<ExtensionAPI> apis(
(...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after
920 CheckAliasStatus::NOT_ALLOWED) 946 CheckAliasStatus::NOT_ALLOWED)
921 .is_available()); 947 .is_available());
922 EXPECT_FALSE(extension_api 948 EXPECT_FALSE(extension_api
923 ->IsAvailable("pageAction", extension.get(), 949 ->IsAvailable("pageAction", extension.get(),
924 Feature::BLESSED_EXTENSION_CONTEXT, GURL(), 950 Feature::BLESSED_EXTENSION_CONTEXT, GURL(),
925 CheckAliasStatus::NOT_ALLOWED) 951 CheckAliasStatus::NOT_ALLOWED)
926 .is_available()); 952 .is_available());
927 } 953 }
928 954
929 } // namespace extensions 955 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/common/extensions/api/_features.md ('k') | chrome/test/data/extensions/extension_api_unittest/api_features.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698