1 // Copyright (c) 2013 Intel Corporation. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "xwalk/application/common/manifest_handlers/permissions_handler.h"
7 #include "xwalk/application/common/application_manifest_constants.h"
8 #include "testing/gtest/include/gtest/gtest.h"
12 namespace keys = application_manifest_keys;
14 namespace application {
18 const PermissionSet& GetAPIPermissionsInfo(
19 scoped_refptr<const ApplicationData> application) {
20 PermissionsInfo* info = static_cast<PermissionsInfo*>(
21 application->GetManifestData(keys::kPermissionsKey));
23 return info->GetAPIPermissions();
28 class PermissionsHandlerTest: public testing::Test {
31 TEST_F(PermissionsHandlerTest, NonePermission) {
32 base::DictionaryValue manifest;
33 manifest.SetString(keys::kNameKey, "no name");
34 manifest.SetString(keys::kVersionKey, "0");
36 scoped_refptr<ApplicationData> application = ApplicationData::Create(
38 Manifest::INVALID_TYPE,
42 EXPECT_TRUE(application.get());
43 EXPECT_EQ(GetAPIPermissionsInfo(application).size(), 0);
46 TEST_F(PermissionsHandlerTest, EmptyPermission) {
47 base::DictionaryValue manifest;
48 manifest.SetString(keys::kNameKey, "no name");
49 manifest.SetString(keys::kVersionKey, "0");
50 base::ListValue* permissions = new base::ListValue;
51 manifest.Set(keys::kPermissionsKey, permissions);
53 scoped_refptr<ApplicationData> application = ApplicationData::Create(
55 Manifest::INVALID_TYPE,
59 EXPECT_TRUE(application.get());
60 EXPECT_EQ(GetAPIPermissionsInfo(application).size(), 0);
63 TEST_F(PermissionsHandlerTest, DeviceAPIPermission) {
64 base::DictionaryValue manifest;
65 manifest.SetString(keys::kNameKey, "no name");
66 manifest.SetString(keys::kVersionKey, "0");
67 base::ListValue* permissions = new base::ListValue;
68 permissions->AppendString("geolocation");
69 manifest.Set(keys::kPermissionsKey, permissions);
71 scoped_refptr<ApplicationData> application = ApplicationData::Create(
73 Manifest::INVALID_TYPE,
77 EXPECT_TRUE(application.get());
78 const PermissionSet& permission_list =
79 GetAPIPermissionsInfo(application);
80 EXPECT_EQ(permission_list.size(), 1);
81 EXPECT_STREQ((*(permission_list.begin())).c_str(), "geolocation");
84 } // namespace application