OLD | NEW |
(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 |
OLD | NEW |