OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2010 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 #include "chrome/browser/geolocation/geolocation_content_settings_map.h" |
| 6 |
| 7 #include "chrome/test/testing_profile.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" |
| 9 |
| 10 |
| 11 namespace { |
| 12 |
| 13 class GeolocationContentSettingsMapTests : public testing::Test { |
| 14 public: |
| 15 GeolocationContentSettingsMapTests() |
| 16 : ui_thread_(ChromeThread::UI, &message_loop_) { |
| 17 } |
| 18 |
| 19 protected: |
| 20 MessageLoop message_loop_; |
| 21 ChromeThread ui_thread_; |
| 22 }; |
| 23 |
| 24 TEST_F(GeolocationContentSettingsMapTests, DefaultValues) { |
| 25 TestingProfile profile; |
| 26 GeolocationContentSettingsMap* map = |
| 27 profile.GetGeolocationContentSettingsMap(); |
| 28 |
| 29 // Check setting defaults. |
| 30 EXPECT_EQ(CONTENT_SETTING_ASK, map->GetDefaultContentSetting()); |
| 31 map->SetDefaultContentSetting(CONTENT_SETTING_BLOCK); |
| 32 EXPECT_EQ(CONTENT_SETTING_BLOCK, map->GetDefaultContentSetting()); |
| 33 } |
| 34 |
| 35 TEST_F(GeolocationContentSettingsMapTests, Embedder) { |
| 36 TestingProfile profile; |
| 37 GeolocationContentSettingsMap* map = |
| 38 profile.GetGeolocationContentSettingsMap(); |
| 39 GURL top_level("http://www.toplevel0.com/foo/bar"); |
| 40 EXPECT_EQ(CONTENT_SETTING_ASK, map->GetContentSetting(top_level, top_level)); |
| 41 // Now set the permission for requester_0. |
| 42 map->SetContentSetting(top_level, top_level, CONTENT_SETTING_ALLOW); |
| 43 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 44 map->GetContentSetting(top_level, top_level)); |
| 45 |
| 46 GURL requester_0("http://www.frame0.com/foo/bar"); |
| 47 EXPECT_EQ(CONTENT_SETTING_ASK, |
| 48 map->GetContentSetting(requester_0, top_level)); |
| 49 // Now set the permission for only requester_1. |
| 50 map->SetContentSetting(requester_0, top_level, CONTENT_SETTING_ALLOW); |
| 51 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 52 map->GetContentSetting(top_level, top_level)); |
| 53 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 54 map->GetContentSetting(requester_0, top_level)); |
| 55 // Block only requester_1. |
| 56 map->SetContentSetting(requester_0, top_level, CONTENT_SETTING_BLOCK); |
| 57 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 58 map->GetContentSetting(requester_0, top_level)); |
| 59 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 60 map->GetContentSetting(top_level, top_level)); |
| 61 } |
| 62 |
| 63 TEST_F(GeolocationContentSettingsMapTests, MultipleEmbeddersAndOrigins) { |
| 64 TestingProfile profile; |
| 65 GeolocationContentSettingsMap* map = |
| 66 profile.GetGeolocationContentSettingsMap(); |
| 67 GURL requester_0("http://www.iframe0.com/foo/bar"); |
| 68 GURL requester_1("http://www.iframe1.co.uk/bar/foo"); |
| 69 GURL embedder_0("http://www.toplevel0.com/foo/bar"); |
| 70 EXPECT_EQ(CONTENT_SETTING_ASK, |
| 71 map->GetContentSetting(requester_0, embedder_0)); |
| 72 EXPECT_EQ(CONTENT_SETTING_ASK, |
| 73 map->GetContentSetting(requester_1, embedder_0)); |
| 74 // Now set the permission for only one origin. |
| 75 map->SetContentSetting(requester_0, embedder_0, CONTENT_SETTING_ALLOW); |
| 76 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 77 map->GetContentSetting(requester_0, embedder_0)); |
| 78 EXPECT_EQ(CONTENT_SETTING_ASK, |
| 79 map->GetContentSetting(requester_1, embedder_0)); |
| 80 // Set the permission for the other origin. |
| 81 map->SetContentSetting(requester_1, embedder_0, CONTENT_SETTING_ALLOW); |
| 82 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 83 map->GetContentSetting(requester_1, embedder_0)); |
| 84 // Check they're not allowed on a different embedder. |
| 85 GURL embedder_1("http://www.toplevel1.com/foo/bar"); |
| 86 EXPECT_EQ(CONTENT_SETTING_ASK, |
| 87 map->GetContentSetting(requester_0, embedder_1)); |
| 88 EXPECT_EQ(CONTENT_SETTING_ASK, |
| 89 map->GetContentSetting(requester_1, embedder_1)); |
| 90 // Check all settings are valid. |
| 91 GeolocationContentSettingsMap::AllOriginsSettings content_settings( |
| 92 map->GetAllOriginsSettings()); |
| 93 EXPECT_EQ(0U, content_settings.count(requester_0)); |
| 94 EXPECT_EQ(1U, content_settings.count(requester_0.GetOrigin())); |
| 95 GeolocationContentSettingsMap::OneOriginSettings one_origin_settings( |
| 96 content_settings[requester_0.GetOrigin()]); |
| 97 EXPECT_EQ(CONTENT_SETTING_ALLOW, one_origin_settings[embedder_0.GetOrigin()]); |
| 98 |
| 99 EXPECT_EQ(0U, content_settings.count(requester_1)); |
| 100 EXPECT_EQ(1U, content_settings.count(requester_1.GetOrigin())); |
| 101 one_origin_settings = content_settings[requester_1.GetOrigin()]; |
| 102 EXPECT_EQ(CONTENT_SETTING_ALLOW, one_origin_settings[embedder_0.GetOrigin()]); |
| 103 // Block requester_1 on the first embedder and add it to the second. |
| 104 map->SetContentSetting(requester_1, embedder_0, CONTENT_SETTING_BLOCK); |
| 105 map->SetContentSetting(requester_1, embedder_1, CONTENT_SETTING_ALLOW); |
| 106 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 107 map->GetContentSetting(requester_1, embedder_0)); |
| 108 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 109 map->GetContentSetting(requester_1, embedder_1)); |
| 110 } |
| 111 |
| 112 TEST_F(GeolocationContentSettingsMapTests, SetContentSettingDefault) { |
| 113 TestingProfile profile; |
| 114 GeolocationContentSettingsMap* map = |
| 115 profile.GetGeolocationContentSettingsMap(); |
| 116 GURL top_level("http://www.toplevel0.com/foo/bar"); |
| 117 map->SetContentSetting(top_level, top_level, CONTENT_SETTING_ALLOW); |
| 118 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 119 map->GetContentSetting(top_level, top_level)); |
| 120 // Set to CONTENT_SETTING_DEFAULT and check the actual value has changed. |
| 121 map->SetContentSetting(top_level, top_level, CONTENT_SETTING_DEFAULT); |
| 122 EXPECT_EQ(CONTENT_SETTING_ASK, map->GetContentSetting(top_level, top_level)); |
| 123 } |
| 124 |
| 125 TEST_F(GeolocationContentSettingsMapTests, ClearOneOrigin) { |
| 126 TestingProfile profile; |
| 127 GeolocationContentSettingsMap* map = |
| 128 profile.GetGeolocationContentSettingsMap(); |
| 129 GURL requester_0("http://www.iframe0.com/foo/bar"); |
| 130 GURL requester_1("http://www.iframe1.com/foo/bar"); |
| 131 GURL embedder_0("http://www.toplevel0.com/foo/bar"); |
| 132 map->SetContentSetting(requester_0, embedder_0, CONTENT_SETTING_ALLOW); |
| 133 map->SetContentSetting(requester_1, embedder_0, CONTENT_SETTING_ALLOW); |
| 134 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 135 map->GetContentSetting(requester_0, embedder_0)); |
| 136 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 137 map->GetContentSetting(requester_1, embedder_0)); |
| 138 |
| 139 map->ClearOneRequestingOrigin(requester_0.GetOrigin()); |
| 140 EXPECT_EQ(CONTENT_SETTING_ASK, |
| 141 map->GetContentSetting(requester_0, embedder_0)); |
| 142 |
| 143 // Passing a non-origin shouldn't do anything. |
| 144 map->ClearOneRequestingOrigin(requester_1); |
| 145 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 146 map->GetContentSetting(requester_1, embedder_0)); |
| 147 } |
| 148 |
| 149 TEST_F(GeolocationContentSettingsMapTests, Reset) { |
| 150 TestingProfile profile; |
| 151 GeolocationContentSettingsMap* map = |
| 152 profile.GetGeolocationContentSettingsMap(); |
| 153 GURL requester_0("http://www.iframe0.com/foo/bar"); |
| 154 GURL embedder_0("http://www.toplevel0.com/foo/bar"); |
| 155 map->SetContentSetting(requester_0, embedder_0, CONTENT_SETTING_ALLOW); |
| 156 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 157 map->GetContentSetting(requester_0, embedder_0)); |
| 158 GeolocationContentSettingsMap::AllOriginsSettings content_settings( |
| 159 map->GetAllOriginsSettings()); |
| 160 EXPECT_EQ(1U, content_settings.size()); |
| 161 |
| 162 // Set to CONTENT_SETTING_DEFAULT and check the actual value has changed. |
| 163 map->SetContentSetting(requester_0, embedder_0, CONTENT_SETTING_DEFAULT); |
| 164 EXPECT_EQ(CONTENT_SETTING_ASK, |
| 165 map->GetContentSetting(requester_0, embedder_0)); |
| 166 content_settings = map->GetAllOriginsSettings(); |
| 167 EXPECT_TRUE(content_settings.empty()); |
| 168 } |
| 169 |
| 170 TEST_F(GeolocationContentSettingsMapTests, ClearsWhenSettingBackToDefault) { |
| 171 TestingProfile profile; |
| 172 GeolocationContentSettingsMap* map = |
| 173 profile.GetGeolocationContentSettingsMap(); |
| 174 GURL requester_0("http://www.iframe0.com/foo/bar"); |
| 175 GURL requester_1("http://www.iframe1.com/foo/bar"); |
| 176 GURL embedder_0("http://www.toplevel0.com/foo/bar"); |
| 177 map->SetContentSetting(requester_0, embedder_0, CONTENT_SETTING_ALLOW); |
| 178 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 179 map->GetContentSetting(requester_0, embedder_0)); |
| 180 GeolocationContentSettingsMap::AllOriginsSettings content_settings( |
| 181 map->GetAllOriginsSettings()); |
| 182 EXPECT_EQ(1U, content_settings.size()); |
| 183 |
| 184 map->SetContentSetting(requester_1, embedder_0, CONTENT_SETTING_ALLOW); |
| 185 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 186 map->GetContentSetting(requester_1, embedder_0)); |
| 187 content_settings = map->GetAllOriginsSettings(); |
| 188 EXPECT_EQ(2U, content_settings.size()); |
| 189 EXPECT_EQ(1U, content_settings[requester_0.GetOrigin()].size()); |
| 190 EXPECT_EQ(1U, content_settings[requester_1.GetOrigin()].size()); |
| 191 |
| 192 // Set to default. |
| 193 map->SetContentSetting(requester_0, embedder_0, CONTENT_SETTING_DEFAULT); |
| 194 content_settings = map->GetAllOriginsSettings(); |
| 195 EXPECT_EQ(1U, content_settings.size()); |
| 196 |
| 197 map->SetContentSetting(requester_1, embedder_0, CONTENT_SETTING_DEFAULT); |
| 198 content_settings = map->GetAllOriginsSettings(); |
| 199 EXPECT_TRUE(content_settings.empty()); |
| 200 } |
| 201 |
| 202 TEST_F(GeolocationContentSettingsMapTests, WildCardForEmptyEmbedder) { |
| 203 TestingProfile profile; |
| 204 GeolocationContentSettingsMap* map = |
| 205 profile.GetGeolocationContentSettingsMap(); |
| 206 GURL requester_0("http://www.iframe0.com/foo/bar"); |
| 207 GURL embedder_0("http://www.toplevel0.com/foo/bar"); |
| 208 GURL embedder_1("http://www.toplevel1.com/foo/bar"); |
| 209 GURL empty_url; |
| 210 map->SetContentSetting(requester_0, embedder_0, CONTENT_SETTING_BLOCK); |
| 211 map->SetContentSetting(requester_0, empty_url, CONTENT_SETTING_ALLOW); |
| 212 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 213 map->GetContentSetting(requester_0, embedder_0)); |
| 214 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 215 map->GetContentSetting(requester_0, embedder_1)); |
| 216 EXPECT_EQ(CONTENT_SETTING_ASK, |
| 217 map->GetContentSetting(requester_0, requester_0)); |
| 218 |
| 219 // Change the wildcard behavior. |
| 220 map->SetContentSetting(requester_0, embedder_0, CONTENT_SETTING_ALLOW); |
| 221 map->SetContentSetting(requester_0, empty_url, CONTENT_SETTING_BLOCK); |
| 222 map->SetDefaultContentSetting(CONTENT_SETTING_ALLOW); |
| 223 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 224 map->GetContentSetting(requester_0, embedder_0)); |
| 225 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 226 map->GetContentSetting(requester_0, embedder_1)); |
| 227 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 228 map->GetContentSetting(requester_0, requester_0)); |
| 229 } |
| 230 |
| 231 } // namespace |
OLD | NEW |