| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "chrome/browser/ui/webui/settings/site_settings_handler.h" | 5 #include "chrome/browser/ui/webui/settings/site_settings_handler.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "chrome/browser/chrome_notification_types.h" | 9 #include "chrome/browser/chrome_notification_types.h" |
| 10 #include "chrome/browser/ui/webui/site_settings_helper.h" | 10 #include "chrome/browser/ui/webui/site_settings_helper.h" |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 std::string setting; | 63 std::string setting; |
| 64 ASSERT_TRUE(default_value->GetString(kSetting, &setting)); | 64 ASSERT_TRUE(default_value->GetString(kSetting, &setting)); |
| 65 EXPECT_EQ(expected_setting, setting); | 65 EXPECT_EQ(expected_setting, setting); |
| 66 std::string source; | 66 std::string source; |
| 67 if (default_value->GetString(kSource, &source)) | 67 if (default_value->GetString(kSource, &source)) |
| 68 EXPECT_EQ(expected_source, source); | 68 EXPECT_EQ(expected_source, source); |
| 69 } | 69 } |
| 70 | 70 |
| 71 void ValidateOrigin( | 71 void ValidateOrigin( |
| 72 const std::string& expected_origin, | 72 const std::string& expected_origin, |
| 73 const std::string& expected_display_name, |
| 73 const std::string& expected_embedding, | 74 const std::string& expected_embedding, |
| 74 const std::string& expected_setting, | 75 const std::string& expected_setting, |
| 75 const std::string& expected_source, | 76 const std::string& expected_source, |
| 76 size_t expected_total_calls) { | 77 size_t expected_total_calls) { |
| 77 EXPECT_EQ(expected_total_calls, web_ui()->call_data().size()); | 78 EXPECT_EQ(expected_total_calls, web_ui()->call_data().size()); |
| 78 | 79 |
| 79 const content::TestWebUI::CallData& data = *web_ui()->call_data().back(); | 80 const content::TestWebUI::CallData& data = *web_ui()->call_data().back(); |
| 80 EXPECT_EQ("cr.webUIResponse", data.function_name()); | 81 EXPECT_EQ("cr.webUIResponse", data.function_name()); |
| 81 | 82 |
| 82 std::string callback_id; | 83 std::string callback_id; |
| 83 ASSERT_TRUE(data.arg1()->GetAsString(&callback_id)); | 84 ASSERT_TRUE(data.arg1()->GetAsString(&callback_id)); |
| 84 EXPECT_EQ(kCallbackId, callback_id); | 85 EXPECT_EQ(kCallbackId, callback_id); |
| 85 bool success = false; | 86 bool success = false; |
| 86 ASSERT_TRUE(data.arg2()->GetAsBoolean(&success)); | 87 ASSERT_TRUE(data.arg2()->GetAsBoolean(&success)); |
| 87 ASSERT_TRUE(success); | 88 ASSERT_TRUE(success); |
| 88 | 89 |
| 89 const base::ListValue* exceptions; | 90 const base::ListValue* exceptions; |
| 90 ASSERT_TRUE(data.arg3()->GetAsList(&exceptions)); | 91 ASSERT_TRUE(data.arg3()->GetAsList(&exceptions)); |
| 91 EXPECT_EQ(1U, exceptions->GetSize()); | 92 EXPECT_EQ(1U, exceptions->GetSize()); |
| 92 const base::DictionaryValue* exception; | 93 const base::DictionaryValue* exception; |
| 93 ASSERT_TRUE(exceptions->GetDictionary(0, &exception)); | 94 ASSERT_TRUE(exceptions->GetDictionary(0, &exception)); |
| 94 std::string origin, embedding_origin, setting, source; | 95 std::string origin, embedding_origin, display_name, setting, source; |
| 95 ASSERT_TRUE(exception->GetString(site_settings::kOrigin, &origin)); | 96 ASSERT_TRUE(exception->GetString(site_settings::kOrigin, &origin)); |
| 96 ASSERT_EQ(expected_origin, origin); | 97 ASSERT_EQ(expected_origin, origin); |
| 98 ASSERT_TRUE( |
| 99 exception->GetString(site_settings::kDisplayName, &display_name)); |
| 100 ASSERT_EQ(expected_display_name, display_name); |
| 97 ASSERT_TRUE(exception->GetString( | 101 ASSERT_TRUE(exception->GetString( |
| 98 site_settings::kEmbeddingOrigin, &embedding_origin)); | 102 site_settings::kEmbeddingOrigin, &embedding_origin)); |
| 99 ASSERT_EQ(expected_embedding, embedding_origin); | 103 ASSERT_EQ(expected_embedding, embedding_origin); |
| 100 ASSERT_TRUE(exception->GetString(site_settings::kSetting, &setting)); | 104 ASSERT_TRUE(exception->GetString(site_settings::kSetting, &setting)); |
| 101 ASSERT_EQ(expected_setting, setting); | 105 ASSERT_EQ(expected_setting, setting); |
| 102 ASSERT_TRUE(exception->GetString(site_settings::kSource, &source)); | 106 ASSERT_TRUE(exception->GetString(site_settings::kSource, &source)); |
| 103 ASSERT_EQ(expected_source, source); | 107 ASSERT_EQ(expected_source, source); |
| 104 } | 108 } |
| 105 | 109 |
| 106 void ValidateNoOrigin(size_t expected_total_calls) { | 110 void ValidateNoOrigin(size_t expected_total_calls) { |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 242 setArgs.AppendString("block"); | 246 setArgs.AppendString("block"); |
| 243 setArgs.AppendBoolean(false); // Incognito. | 247 setArgs.AppendBoolean(false); // Incognito. |
| 244 handler()->HandleSetCategoryPermissionForOrigin(&setArgs); | 248 handler()->HandleSetCategoryPermissionForOrigin(&setArgs); |
| 245 EXPECT_EQ(1U, web_ui()->call_data().size()); | 249 EXPECT_EQ(1U, web_ui()->call_data().size()); |
| 246 | 250 |
| 247 // Verify the change was successful. | 251 // Verify the change was successful. |
| 248 base::ListValue listArgs; | 252 base::ListValue listArgs; |
| 249 listArgs.AppendString(kCallbackId); | 253 listArgs.AppendString(kCallbackId); |
| 250 listArgs.AppendString("notifications"); | 254 listArgs.AppendString("notifications"); |
| 251 handler()->HandleGetExceptionList(&listArgs); | 255 handler()->HandleGetExceptionList(&listArgs); |
| 252 ValidateOrigin(google, google, "block", "preference", 2U); | 256 ValidateOrigin(google, google, google, "block", "preference", 2U); |
| 253 | 257 |
| 254 // Reset things back to how they were. | 258 // Reset things back to how they were. |
| 255 base::ListValue resetArgs; | 259 base::ListValue resetArgs; |
| 256 resetArgs.AppendString(google); | 260 resetArgs.AppendString(google); |
| 257 resetArgs.AppendString(google); | 261 resetArgs.AppendString(google); |
| 258 resetArgs.AppendString("notifications"); | 262 resetArgs.AppendString("notifications"); |
| 259 resetArgs.AppendBoolean(false); // Incognito. | 263 resetArgs.AppendBoolean(false); // Incognito. |
| 260 handler()->HandleResetCategoryPermissionForOrigin(&resetArgs); | 264 handler()->HandleResetCategoryPermissionForOrigin(&resetArgs); |
| 261 EXPECT_EQ(3U, web_ui()->call_data().size()); | 265 EXPECT_EQ(3U, web_ui()->call_data().size()); |
| 262 | 266 |
| 263 // Verify the reset was successful. | 267 // Verify the reset was successful. |
| 264 handler()->HandleGetExceptionList(&listArgs); | 268 handler()->HandleGetExceptionList(&listArgs); |
| 265 ValidateNoOrigin(4U); | 269 ValidateNoOrigin(4U); |
| 266 } | 270 } |
| 267 | 271 |
| 268 TEST_F(SiteSettingsHandlerTest, ExceptionHelpers) { | 272 TEST_F(SiteSettingsHandlerTest, ExceptionHelpers) { |
| 269 ContentSettingsPattern pattern = | 273 ContentSettingsPattern pattern = |
| 270 ContentSettingsPattern::FromString("[*.]google.com"); | 274 ContentSettingsPattern::FromString("[*.]google.com"); |
| 271 std::unique_ptr<base::DictionaryValue> exception = | 275 std::unique_ptr<base::DictionaryValue> exception = |
| 272 site_settings::GetExceptionForPage(pattern, pattern, pattern.ToString(), | 276 site_settings::GetExceptionForPage(pattern, pattern, pattern.ToString(), |
| 273 CONTENT_SETTING_BLOCK, "preference", | 277 CONTENT_SETTING_BLOCK, "preference", |
| 274 false); | 278 false); |
| 275 | 279 |
| 276 std::string primary_pattern, secondary_pattern, type; | 280 std::string primary_pattern, secondary_pattern, display_name, type; |
| 277 bool incognito; | 281 bool incognito; |
| 278 CHECK(exception->GetString(site_settings::kOrigin, &primary_pattern)); | 282 CHECK(exception->GetString(site_settings::kOrigin, &primary_pattern)); |
| 283 CHECK(exception->GetString(site_settings::kDisplayName, &display_name)); |
| 279 CHECK(exception->GetString(site_settings::kEmbeddingOrigin, | 284 CHECK(exception->GetString(site_settings::kEmbeddingOrigin, |
| 280 &secondary_pattern)); | 285 &secondary_pattern)); |
| 281 CHECK(exception->GetString(site_settings::kSetting, &type)); | 286 CHECK(exception->GetString(site_settings::kSetting, &type)); |
| 282 CHECK(exception->GetBoolean(site_settings::kIncognito, &incognito)); | 287 CHECK(exception->GetBoolean(site_settings::kIncognito, &incognito)); |
| 283 | 288 |
| 284 base::ListValue args; | 289 base::ListValue args; |
| 285 args.AppendString(primary_pattern); | 290 args.AppendString(primary_pattern); |
| 286 args.AppendString(secondary_pattern); | 291 args.AppendString(secondary_pattern); |
| 287 args.AppendString("notifications"); // Chosen arbitrarily. | 292 args.AppendString("notifications"); // Chosen arbitrarily. |
| 288 args.AppendString(type); | 293 args.AppendString(type); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 302 .SetID("ahfgeienlihckogmohjhadlkjgocpleb") | 307 .SetID("ahfgeienlihckogmohjhadlkjgocpleb") |
| 303 .Build(); | 308 .Build(); |
| 304 | 309 |
| 305 std::unique_ptr<base::ListValue> exceptions(new base::ListValue); | 310 std::unique_ptr<base::ListValue> exceptions(new base::ListValue); |
| 306 site_settings::AddExceptionForHostedApp( | 311 site_settings::AddExceptionForHostedApp( |
| 307 "[*.]google.com", *extension.get(), exceptions.get()); | 312 "[*.]google.com", *extension.get(), exceptions.get()); |
| 308 | 313 |
| 309 const base::DictionaryValue* dictionary; | 314 const base::DictionaryValue* dictionary; |
| 310 CHECK(exceptions->GetDictionary(0, &dictionary)); | 315 CHECK(exceptions->GetDictionary(0, &dictionary)); |
| 311 CHECK(dictionary->GetString(site_settings::kOrigin, &primary_pattern)); | 316 CHECK(dictionary->GetString(site_settings::kOrigin, &primary_pattern)); |
| 317 CHECK(dictionary->GetString(site_settings::kDisplayName, &display_name)); |
| 312 CHECK(dictionary->GetString(site_settings::kEmbeddingOrigin, | 318 CHECK(dictionary->GetString(site_settings::kEmbeddingOrigin, |
| 313 &secondary_pattern)); | 319 &secondary_pattern)); |
| 314 CHECK(dictionary->GetString(site_settings::kSetting, &type)); | 320 CHECK(dictionary->GetString(site_settings::kSetting, &type)); |
| 315 CHECK(dictionary->GetBoolean(site_settings::kIncognito, &incognito)); | 321 CHECK(dictionary->GetBoolean(site_settings::kIncognito, &incognito)); |
| 316 | 322 |
| 317 // Again, don't need to check the results. | 323 // Again, don't need to check the results. |
| 318 handler()->HandleSetCategoryPermissionForOrigin(&args); | 324 handler()->HandleSetCategoryPermissionForOrigin(&args); |
| 319 } | 325 } |
| 320 | 326 |
| 321 TEST_F(SiteSettingsHandlerTest, Patterns) { | 327 TEST_F(SiteSettingsHandlerTest, Patterns) { |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 362 args.AppendString("http://www.google.com"); | 368 args.AppendString("http://www.google.com"); |
| 363 handler()->HandleRemoveZoomLevel(&args); | 369 handler()->HandleRemoveZoomLevel(&args); |
| 364 ValidateZoom("", "", 3U); | 370 ValidateZoom("", "", 3U); |
| 365 | 371 |
| 366 double default_level = host_zoom_map->GetDefaultZoomLevel(); | 372 double default_level = host_zoom_map->GetDefaultZoomLevel(); |
| 367 double level = host_zoom_map->GetZoomLevelForHostAndScheme("http", host); | 373 double level = host_zoom_map->GetZoomLevelForHostAndScheme("http", host); |
| 368 EXPECT_EQ(default_level, level); | 374 EXPECT_EQ(default_level, level); |
| 369 } | 375 } |
| 370 | 376 |
| 371 } // namespace settings | 377 } // namespace settings |
| OLD | NEW |