| 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 <algorithm> | 7 #include <algorithm> |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <utility> | 10 #include <utility> |
| 11 | 11 |
| 12 #include "base/bind.h" | 12 #include "base/bind.h" |
| 13 #include "base/i18n/number_formatting.h" | 13 #include "base/i18n/number_formatting.h" |
| 14 #include "base/macros.h" | 14 #include "base/macros.h" |
| 15 #include "base/values.h" | 15 #include "base/values.h" |
| 16 #include "chrome/browser/browsing_data/browsing_data_local_storage_helper.h" | 16 #include "chrome/browser/browsing_data/browsing_data_local_storage_helper.h" |
| 17 #include "chrome/browser/chrome_notification_types.h" | 17 #include "chrome/browser/chrome_notification_types.h" |
| 18 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" | 18 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" |
| 19 #include "chrome/browser/content_settings/web_site_settings_uma_util.h" |
| 19 #include "chrome/browser/permissions/chooser_context_base.h" | 20 #include "chrome/browser/permissions/chooser_context_base.h" |
| 21 #include "chrome/browser/permissions/permission_uma_util.h" |
| 22 #include "chrome/browser/permissions/permission_util.h" |
| 20 #include "chrome/browser/profiles/profile.h" | 23 #include "chrome/browser/profiles/profile.h" |
| 21 #include "chrome/browser/ui/webui/site_settings_helper.h" | 24 #include "chrome/browser/ui/webui/site_settings_helper.h" |
| 22 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" | 25 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" |
| 23 #include "chrome/grit/generated_resources.h" | 26 #include "chrome/grit/generated_resources.h" |
| 24 #include "components/content_settings/core/browser/host_content_settings_map.h" | 27 #include "components/content_settings/core/browser/host_content_settings_map.h" |
| 25 #include "components/content_settings/core/common/content_settings_types.h" | 28 #include "components/content_settings/core/common/content_settings_types.h" |
| 26 #include "components/crx_file/id_util.h" | 29 #include "components/crx_file/id_util.h" |
| 27 #include "content/public/browser/browser_thread.h" | 30 #include "content/public/browser/browser_thread.h" |
| 28 #include "content/public/browser/notification_service.h" | 31 #include "content/public/browser/notification_service.h" |
| 29 #include "content/public/browser/web_ui.h" | 32 #include "content/public/browser/web_ui.h" |
| (...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 445 map, content_type, extension_registry, web_ui(), /*incognito=*/true, | 448 map, content_type, extension_registry, web_ui(), /*incognito=*/true, |
| 446 /*filter=*/nullptr, exceptions.get()); | 449 /*filter=*/nullptr, exceptions.get()); |
| 447 } | 450 } |
| 448 | 451 |
| 449 ResolveJavascriptCallback(*callback_id, *exceptions.get()); | 452 ResolveJavascriptCallback(*callback_id, *exceptions.get()); |
| 450 } | 453 } |
| 451 | 454 |
| 452 void SiteSettingsHandler::HandleResetCategoryPermissionForOrigin( | 455 void SiteSettingsHandler::HandleResetCategoryPermissionForOrigin( |
| 453 const base::ListValue* args) { | 456 const base::ListValue* args) { |
| 454 CHECK_EQ(4U, args->GetSize()); | 457 CHECK_EQ(4U, args->GetSize()); |
| 455 std::string primary_pattern; | 458 std::string primary_pattern_string; |
| 456 CHECK(args->GetString(0, &primary_pattern)); | 459 CHECK(args->GetString(0, &primary_pattern_string)); |
| 457 std::string secondary_pattern; | 460 std::string secondary_pattern_string; |
| 458 CHECK(args->GetString(1, &secondary_pattern)); | 461 CHECK(args->GetString(1, &secondary_pattern_string)); |
| 459 std::string type; | 462 std::string type; |
| 460 CHECK(args->GetString(2, &type)); | 463 CHECK(args->GetString(2, &type)); |
| 461 bool incognito; | 464 bool incognito; |
| 462 CHECK(args->GetBoolean(3, &incognito)); | 465 CHECK(args->GetBoolean(3, &incognito)); |
| 463 | 466 |
| 464 ContentSettingsType content_type = | 467 ContentSettingsType content_type = |
| 465 static_cast<ContentSettingsType>(static_cast<int>( | 468 static_cast<ContentSettingsType>(static_cast<int>( |
| 466 site_settings::ContentSettingsTypeFromGroupName(type))); | 469 site_settings::ContentSettingsTypeFromGroupName(type))); |
| 467 | 470 |
| 468 Profile* profile = nullptr; | 471 Profile* profile = nullptr; |
| 469 if (incognito) { | 472 if (incognito) { |
| 470 if (!profile_->HasOffTheRecordProfile()) | 473 if (!profile_->HasOffTheRecordProfile()) |
| 471 return; | 474 return; |
| 472 profile = profile_->GetOffTheRecordProfile(); | 475 profile = profile_->GetOffTheRecordProfile(); |
| 473 } else { | 476 } else { |
| 474 profile = profile_; | 477 profile = profile_; |
| 475 } | 478 } |
| 476 | 479 |
| 477 HostContentSettingsMap* map = | 480 HostContentSettingsMap* map = |
| 478 HostContentSettingsMapFactory::GetForProfile(profile); | 481 HostContentSettingsMapFactory::GetForProfile(profile); |
| 479 map->SetContentSettingCustomScope( | 482 |
| 480 ContentSettingsPattern::FromString(primary_pattern), | 483 ContentSettingsPattern primary_pattern = |
| 481 secondary_pattern.empty() ? | 484 ContentSettingsPattern::FromString(primary_pattern_string); |
| 482 ContentSettingsPattern::Wildcard() : | 485 ContentSettingsPattern secondary_pattern = |
| 483 ContentSettingsPattern::FromString(secondary_pattern), | 486 secondary_pattern_string.empty() |
| 484 content_type, "", CONTENT_SETTING_DEFAULT); | 487 ? ContentSettingsPattern::Wildcard() |
| 488 : ContentSettingsPattern::FromString(secondary_pattern_string); |
| 489 PermissionUtil::ScopedRevocationReporter scoped_revocation_reporter( |
| 490 profile, primary_pattern, secondary_pattern, content_type, |
| 491 PermissionSourceUI::SITE_SETTINGS); |
| 492 |
| 493 map->SetContentSettingCustomScope(primary_pattern, secondary_pattern, |
| 494 content_type, "", CONTENT_SETTING_DEFAULT); |
| 495 |
| 496 WebSiteSettingsUmaUtil::LogPermissionChange( |
| 497 content_type, ContentSetting::CONTENT_SETTING_DEFAULT); |
| 485 } | 498 } |
| 486 | 499 |
| 487 void SiteSettingsHandler::HandleSetCategoryPermissionForOrigin( | 500 void SiteSettingsHandler::HandleSetCategoryPermissionForOrigin( |
| 488 const base::ListValue* args) { | 501 const base::ListValue* args) { |
| 489 CHECK_EQ(5U, args->GetSize()); | 502 CHECK_EQ(5U, args->GetSize()); |
| 490 std::string primary_pattern; | 503 std::string primary_pattern_string; |
| 491 CHECK(args->GetString(0, &primary_pattern)); | 504 CHECK(args->GetString(0, &primary_pattern_string)); |
| 492 std::string secondary_pattern; | 505 // TODO(dschuyler): Review whether |secondary_pattern_string| should be used. |
| 493 CHECK(args->GetString(1, &secondary_pattern)); | 506 std::string secondary_pattern_string; |
| 507 CHECK(args->GetString(1, &secondary_pattern_string)); |
| 494 std::string type; | 508 std::string type; |
| 495 CHECK(args->GetString(2, &type)); | 509 CHECK(args->GetString(2, &type)); |
| 496 std::string value; | 510 std::string value; |
| 497 CHECK(args->GetString(3, &value)); | 511 CHECK(args->GetString(3, &value)); |
| 498 bool incognito; | 512 bool incognito; |
| 499 CHECK(args->GetBoolean(4, &incognito)); | 513 CHECK(args->GetBoolean(4, &incognito)); |
| 500 | 514 |
| 501 ContentSettingsType content_type = | 515 ContentSettingsType content_type = |
| 502 static_cast<ContentSettingsType>(static_cast<int>( | 516 static_cast<ContentSettingsType>(static_cast<int>( |
| 503 site_settings::ContentSettingsTypeFromGroupName(type))); | 517 site_settings::ContentSettingsTypeFromGroupName(type))); |
| 504 ContentSetting setting; | 518 ContentSetting setting; |
| 505 CHECK(content_settings::ContentSettingFromString(value, &setting)); | 519 CHECK(content_settings::ContentSettingFromString(value, &setting)); |
| 506 | 520 |
| 507 Profile* profile = nullptr; | 521 Profile* profile = nullptr; |
| 508 if (incognito) { | 522 if (incognito) { |
| 509 if (!profile_->HasOffTheRecordProfile()) | 523 if (!profile_->HasOffTheRecordProfile()) |
| 510 return; | 524 return; |
| 511 profile = profile_->GetOffTheRecordProfile(); | 525 profile = profile_->GetOffTheRecordProfile(); |
| 512 } else { | 526 } else { |
| 513 profile = profile_; | 527 profile = profile_; |
| 514 } | 528 } |
| 515 | 529 |
| 516 HostContentSettingsMap* map = | 530 HostContentSettingsMap* map = |
| 517 HostContentSettingsMapFactory::GetForProfile(profile); | 531 HostContentSettingsMapFactory::GetForProfile(profile); |
| 518 map->SetContentSettingCustomScope( | 532 |
| 519 ContentSettingsPattern::FromString(primary_pattern), | 533 ContentSettingsPattern primary_pattern = |
| 520 secondary_pattern.empty() ? | 534 ContentSettingsPattern::FromString(primary_pattern_string); |
| 521 ContentSettingsPattern::Wildcard() : | 535 ContentSettingsPattern secondary_pattern = |
| 522 ContentSettingsPattern::FromString(secondary_pattern), | 536 secondary_pattern_string.empty() |
| 523 content_type, "", setting); | 537 ? ContentSettingsPattern::Wildcard() |
| 538 : ContentSettingsPattern::FromString(secondary_pattern_string); |
| 539 |
| 540 PermissionUtil::ScopedRevocationReporter scoped_revocation_reporter( |
| 541 profile, primary_pattern, secondary_pattern, content_type, |
| 542 PermissionSourceUI::SITE_SETTINGS); |
| 543 |
| 544 map->SetContentSettingCustomScope(primary_pattern, secondary_pattern, |
| 545 content_type, "", setting); |
| 546 |
| 547 WebSiteSettingsUmaUtil::LogPermissionChange(content_type, setting); |
| 524 } | 548 } |
| 525 | 549 |
| 526 void SiteSettingsHandler::HandleGetSiteDetails( | 550 void SiteSettingsHandler::HandleGetSiteDetails( |
| 527 const base::ListValue* args) { | 551 const base::ListValue* args) { |
| 528 AllowJavascript(); | 552 AllowJavascript(); |
| 529 | 553 |
| 530 CHECK_EQ(2U, args->GetSize()); | 554 CHECK_EQ(2U, args->GetSize()); |
| 531 const base::Value* callback_id; | 555 const base::Value* callback_id; |
| 532 CHECK(args->Get(0, &callback_id)); | 556 CHECK(args->Get(0, &callback_id)); |
| 533 std::string site; | 557 std::string site; |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 725 origin = content::kUnreachableWebDataURL; | 749 origin = content::kUnreachableWebDataURL; |
| 726 } | 750 } |
| 727 | 751 |
| 728 content::HostZoomMap* host_zoom_map; | 752 content::HostZoomMap* host_zoom_map; |
| 729 host_zoom_map = content::HostZoomMap::GetDefaultForBrowserContext(profile_); | 753 host_zoom_map = content::HostZoomMap::GetDefaultForBrowserContext(profile_); |
| 730 double default_level = host_zoom_map->GetDefaultZoomLevel(); | 754 double default_level = host_zoom_map->GetDefaultZoomLevel(); |
| 731 host_zoom_map->SetZoomLevelForHost(origin, default_level); | 755 host_zoom_map->SetZoomLevelForHost(origin, default_level); |
| 732 } | 756 } |
| 733 | 757 |
| 734 } // namespace settings | 758 } // namespace settings |
| OLD | NEW |