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

Side by Side Diff: chrome/common/extensions/permissions/settings_override_permission_unittest.cc

Issue 55533003: Add extension permissions for new settings override API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added missing exclusion in gyp file. Created 7 years, 1 month 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
(Empty)
1 // Copyright (c) 2013 The Chromium Authors. 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.
4
5 // These tests make sure SettingsOverridePermission values are set correctly.
6
7 #include "base/basictypes.h"
8 #include "base/strings/utf_string_conversions.h"
9 #include "base/values.h"
10 #include "chrome/common/extensions/manifest_tests/extension_manifest_test.h"
11 #include "chrome/common/extensions/permissions/permissions_data.h"
12 #include "chrome/common/extensions/permissions/settings_override_permission.h"
13 #include "extensions/common/manifest_constants.h"
14 #include "extensions/common/permissions/permission_set.h"
15 #include "testing/gtest/include/gtest/gtest.h"
16
17 namespace extensions {
18
19 namespace {
20
21 class SettingsOverridePermissionTest : public ExtensionManifestTest {
22 protected:
23 enum Flags {
24 kHomepage = 1,
25 kStartupPages = 1 << 1,
26 kSearchProvider = 1 << 2,
27 };
28
29 scoped_refptr<Extension> GetPermissionSet(uint32 flags) {
30 base::DictionaryValue ext_manifest;
31 ext_manifest.SetString(manifest_keys::kName, "test");
32 ext_manifest.SetString(manifest_keys::kVersion, "0.1");
33 ext_manifest.SetInteger(manifest_keys::kManifestVersion, 2);
34
35 scoped_ptr<base::DictionaryValue> settings_override(
36 new base::DictionaryValue);
37 if (flags & kHomepage)
38 settings_override->SetString("homepage", "http://www.google.com");
39 if (flags & kStartupPages) {
40 scoped_ptr<ListValue> startup_pages(new ListValue);
41 startup_pages->AppendString("http://startup.com/startup.html");
42 settings_override->Set("startup_pages", startup_pages.release());
43 }
44 if (flags & kSearchProvider) {
45 scoped_ptr<DictionaryValue> search_provider(new DictionaryValue);
46 search_provider->SetString("search_url", "http://google.com/search.html");
47 search_provider->SetString("name", "test");
48 search_provider->SetString("keyword", "lock");
49 search_provider->SetString("encoding", "UTF-8");
50 search_provider->SetBoolean("is_default", true);
51 search_provider->SetString("favicon_url", "wikipedia.org/wiki/Favicon");
52 settings_override->Set("search_provider", search_provider.release());
53 }
54 ext_manifest.Set(
55 manifest_keys::kSettingsOverride, settings_override.release());
56
57 Manifest manifest(&ext_manifest, "test");
58 return LoadAndExpectSuccess(manifest);
59 }
60 };
61
62 TEST_F(SettingsOverridePermissionTest, HomePage) {
63 scoped_refptr<Extension> extension(GetPermissionSet(kHomepage));
64 scoped_refptr<const PermissionSet> permission_set(
65 extension->GetActivePermissions());
66
67 EXPECT_TRUE(permission_set->HasAPIPermission(APIPermission::kHomepage));
68 std::vector<string16> warnings =
69 PermissionsData::GetPermissionMessageStrings(extension.get());
70 ASSERT_EQ(1u, warnings.size());
71 EXPECT_EQ("Change your home page to: google.com/",
72 UTF16ToUTF8(warnings[0]));
73
74 EXPECT_FALSE(permission_set->HasAPIPermission(APIPermission::kStartupPages));
75 EXPECT_FALSE(permission_set->HasAPIPermission(
76 APIPermission::kSearchProvider));
77 }
78
79 TEST_F(SettingsOverridePermissionTest, SartupPages) {
80 scoped_refptr<Extension> extension(GetPermissionSet(kStartupPages));
81 scoped_refptr<const PermissionSet> permission_set(
82 extension->GetActivePermissions());
83
84 EXPECT_TRUE(permission_set->HasAPIPermission(APIPermission::kStartupPages));
85 std::vector<string16> warnings =
86 PermissionsData::GetPermissionMessageStrings(extension.get());
87 ASSERT_EQ(1u, warnings.size());
88 EXPECT_EQ("Change your start page to: startup.com/startup.html",
89 UTF16ToUTF8(warnings[0]));
90
91 EXPECT_FALSE(permission_set->HasAPIPermission(APIPermission::kHomepage));
92 EXPECT_FALSE(permission_set->HasAPIPermission(
93 APIPermission::kSearchProvider));
94 }
95
96 TEST_F(SettingsOverridePermissionTest, SearchSettings) {
97 scoped_refptr<Extension> extension(GetPermissionSet(kSearchProvider));
98 scoped_refptr<const PermissionSet> permission_set(
99 extension->GetActivePermissions());
100
101 EXPECT_TRUE(permission_set->HasAPIPermission(APIPermission::kSearchProvider));
102 std::vector<string16> warnings =
103 PermissionsData::GetPermissionMessageStrings(extension.get());
104 ASSERT_EQ(1u, warnings.size());
105 EXPECT_EQ("Change your search settings to: google.com",
106 UTF16ToUTF8(warnings[0]));
107
108 EXPECT_FALSE(permission_set->HasAPIPermission(APIPermission::kHomepage));
109 EXPECT_FALSE(permission_set->HasAPIPermission(APIPermission::kStartupPages));
110 }
111
112 TEST_F(SettingsOverridePermissionTest, All) {
113 scoped_refptr<Extension> extension(GetPermissionSet(
114 kSearchProvider | kStartupPages | kHomepage));
115 scoped_refptr<const PermissionSet> permission_set(
116 extension->GetActivePermissions());
117
118 EXPECT_TRUE(permission_set->HasAPIPermission(APIPermission::kSearchProvider));
119 EXPECT_TRUE(permission_set->HasAPIPermission(APIPermission::kHomepage));
120 EXPECT_TRUE(permission_set->HasAPIPermission(APIPermission::kStartupPages));
121 }
122
123 TEST_F(SettingsOverridePermissionTest, Some) {
124 scoped_refptr<Extension> extension(GetPermissionSet(
125 kSearchProvider | kHomepage));
126 scoped_refptr<const PermissionSet> permission_set(
127 extension->GetActivePermissions());
128
129
130 EXPECT_TRUE(permission_set->HasAPIPermission(APIPermission::kSearchProvider));
131 EXPECT_TRUE(permission_set->HasAPIPermission(APIPermission::kHomepage));
132 EXPECT_FALSE(permission_set->HasAPIPermission(APIPermission::kStartupPages));
133 }
134
135 } // namespace
136
137 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/common/extensions/permissions/settings_override_permission.cc ('k') | extensions/common/permissions/api_permission.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698