Chromium Code Reviews| 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 "base/bind.h" | 7 #include "base/bind.h" | 
| 8 #include "base/values.h" | 8 #include "base/values.h" | 
| 9 #include "chrome/browser/browsing_data/browsing_data_local_storage_helper.h" | 9 #include "chrome/browser/browsing_data/browsing_data_local_storage_helper.h" | 
| 10 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" | |
| 10 #include "chrome/browser/profiles/profile.h" | 11 #include "chrome/browser/profiles/profile.h" | 
| 12 #include "components/content_settings/core/browser/host_content_settings_map.h" | |
| 11 #include "components/content_settings/core/common/content_settings_types.h" | 13 #include "components/content_settings/core/common/content_settings_types.h" | 
| 12 #include "content/public/browser/browser_thread.h" | 14 #include "content/public/browser/browser_thread.h" | 
| 13 #include "content/public/browser/web_ui.h" | 15 #include "content/public/browser/web_ui.h" | 
| 14 #include "ui/base/text/bytes_formatting.h" | 16 #include "ui/base/text/bytes_formatting.h" | 
| 15 | 17 | 
| 16 namespace settings { | 18 namespace settings { | 
| 17 | 19 | 
| 18 SiteSettingsHandler::SiteSettingsHandler(Profile* profile) | 20 SiteSettingsHandler::SiteSettingsHandler(Profile* profile) | 
| 19 : profile_(profile) { | 21 : profile_(profile) { | 
| 20 } | 22 } | 
| 21 | 23 | 
| 22 SiteSettingsHandler::~SiteSettingsHandler() { | 24 SiteSettingsHandler::~SiteSettingsHandler() { | 
| 23 } | 25 } | 
| 24 | 26 | 
| 25 void SiteSettingsHandler::RegisterMessages() { | 27 void SiteSettingsHandler::RegisterMessages() { | 
| 26 web_ui()->RegisterMessageCallback( | 28 web_ui()->RegisterMessageCallback( | 
| 27 "fetchUsageTotal", | 29 "fetchUsageTotal", | 
| 28 base::Bind(&SiteSettingsHandler::HandleFetchUsageTotal, | 30 base::Bind(&SiteSettingsHandler::HandleFetchUsageTotal, | 
| 29 base::Unretained(this))); | 31 base::Unretained(this))); | 
| 30 web_ui()->RegisterMessageCallback( | 32 web_ui()->RegisterMessageCallback( | 
| 31 "clearUsage", | 33 "clearUsage", | 
| 32 base::Bind(&SiteSettingsHandler::HandleClearUsage, | 34 base::Bind(&SiteSettingsHandler::HandleClearUsage, | 
| 33 base::Unretained(this))); | 35 base::Unretained(this))); | 
| 36 web_ui()->RegisterMessageCallback( | |
| 37 "setDefaultValueForContentType", | |
| 38 base::Bind(&SiteSettingsHandler::HandleSetDefaultValueForContentType, | |
| 39 base::Unretained(this))); | |
| 40 web_ui()->RegisterMessageCallback( | |
| 41 "getDefaultValueForContentType", | |
| 42 base::Bind(&SiteSettingsHandler::HandleGetDefaultValueForContentType, | |
| 43 base::Unretained(this))); | |
| 34 } | 44 } | 
| 35 | 45 | 
| 36 void SiteSettingsHandler::OnGetUsageInfo( | 46 void SiteSettingsHandler::OnGetUsageInfo( | 
| 37 const storage::UsageInfoEntries& entries) { | 47 const storage::UsageInfoEntries& entries) { | 
| 38 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 48 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 
| 39 | 49 | 
| 40 for (const auto& entry : entries) { | 50 for (const auto& entry : entries) { | 
| 41 if (entry.usage <= 0) continue; | 51 if (entry.usage <= 0) continue; | 
| 42 if (entry.host == usage_host_) { | 52 if (entry.host == usage_host_) { | 
| 43 web_ui()->CallJavascriptFunction( | 53 web_ui()->CallJavascriptFunction( | 
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 92 base::Bind(&SiteSettingsHandler::OnUsageInfoCleared, | 102 base::Bind(&SiteSettingsHandler::OnUsageInfoCleared, | 
| 93 base::Unretained(this))); | 103 base::Unretained(this))); | 
| 94 | 104 | 
| 95 // Also clear the *local* storage data. | 105 // Also clear the *local* storage data. | 
| 96 scoped_refptr<BrowsingDataLocalStorageHelper> local_storage_helper = | 106 scoped_refptr<BrowsingDataLocalStorageHelper> local_storage_helper = | 
| 97 new BrowsingDataLocalStorageHelper(profile_); | 107 new BrowsingDataLocalStorageHelper(profile_); | 
| 98 local_storage_helper->DeleteOrigin(url); | 108 local_storage_helper->DeleteOrigin(url); | 
| 99 } | 109 } | 
| 100 } | 110 } | 
| 101 | 111 | 
| 112 void SiteSettingsHandler::HandleSetDefaultValueForContentType( | |
| 
 
tommycli
2016/02/17 18:18:06
What was the motivation for changing this from usi
 
Finnur
2016/02/18 20:38:18
That's in the email I referred to but in short: pr
 
tommycli
2016/02/18 22:15:18
finnur: I brain farted and neglected to read the e
 
Finnur
2016/02/19 10:18:13
No harm, no foul. :)
 
 | |
| 113 const base::ListValue* args) { | |
| 114 CHECK_EQ(2U, args->GetSize()); | |
| 115 int content_type; | |
| 116 CHECK(args->GetInteger(0, &content_type)); | |
| 117 int default_setting; | |
| 118 CHECK(args->GetInteger(1, &default_setting)); | |
| 119 | |
| 120 HostContentSettingsMap* map = | |
| 121 HostContentSettingsMapFactory::GetForProfile(profile_); | |
| 122 map->SetDefaultContentSetting(static_cast<ContentSettingsType>(content_type), | |
| 123 static_cast<ContentSetting>(default_setting)); | |
| 124 } | |
| 125 | |
| 126 void SiteSettingsHandler::HandleGetDefaultValueForContentType( | |
| 127 const base::ListValue* args) { | |
| 128 CHECK_EQ(2U, args->GetSize()); | |
| 129 const base::Value* callback_id; | |
| 130 CHECK(args->Get(0, &callback_id)); | |
| 131 int type; | |
| 132 CHECK(args->GetInteger(1, &type)); | |
| 133 | |
| 134 ContentSettingsType content_type = static_cast<ContentSettingsType>(type); | |
| 135 HostContentSettingsMap* map = | |
| 136 HostContentSettingsMapFactory::GetForProfile(profile_); | |
| 137 ContentSetting setting = map->GetDefaultContentSetting(content_type, nullptr); | |
| 138 | |
| 139 // FullScreen is Allow vs. Ask. | |
| 140 bool enabled; | |
| 141 if (content_type == CONTENT_SETTINGS_TYPE_FULLSCREEN) | |
| 142 enabled = setting != CONTENT_SETTING_ASK; | |
| 143 else | |
| 144 enabled = setting != CONTENT_SETTING_BLOCK; | |
| 145 | |
| 146 CallJavascriptCallback(*callback_id, base::FundamentalValue(enabled)); | |
| 147 } | |
| 148 | |
| 102 } // namespace settings | 149 } // namespace settings | 
| OLD | NEW |