OLD | NEW |
---|---|
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 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 | 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/dom_ui/options/content_settings_handler.h" | 5 #include "chrome/browser/dom_ui/options/content_settings_handler.h" |
6 | 6 |
7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
8 #include "base/callback.h" | 8 #include "base/callback.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
11 #include "base/values.h" | 11 #include "base/values.h" |
12 #include "chrome/browser/browser_list.h" | 12 #include "chrome/browser/browser_list.h" |
13 #include "chrome/browser/browser_process.h" | |
13 #include "chrome/browser/content_settings/content_settings_details.h" | 14 #include "chrome/browser/content_settings/content_settings_details.h" |
14 #include "chrome/browser/content_settings/host_content_settings_map.h" | 15 #include "chrome/browser/content_settings/host_content_settings_map.h" |
15 #include "chrome/browser/geolocation/geolocation_content_settings_map.h" | 16 #include "chrome/browser/geolocation/geolocation_content_settings_map.h" |
16 #include "chrome/browser/notifications/desktop_notification_service.h" | 17 #include "chrome/browser/notifications/desktop_notification_service.h" |
17 #include "chrome/browser/profiles/profile.h" | 18 #include "chrome/browser/profiles/profile.h" |
18 #include "chrome/common/chrome_switches.h" | 19 #include "chrome/common/chrome_switches.h" |
19 #include "chrome/common/content_settings_helper.h" | 20 #include "chrome/common/content_settings_helper.h" |
20 #include "chrome/common/notification_service.h" | 21 #include "chrome/common/notification_service.h" |
21 #include "chrome/common/notification_source.h" | 22 #include "chrome/common/notification_source.h" |
22 #include "chrome/common/notification_type.h" | 23 #include "chrome/common/notification_type.h" |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
209 localized_strings->SetString("cookies_header", | 210 localized_strings->SetString("cookies_header", |
210 l10n_util::GetStringUTF16(IDS_COOKIES_HEADER)); | 211 l10n_util::GetStringUTF16(IDS_COOKIES_HEADER)); |
211 localized_strings->SetString("cookies_allow", | 212 localized_strings->SetString("cookies_allow", |
212 l10n_util::GetStringUTF16(IDS_COOKIES_ALLOW_RADIO)); | 213 l10n_util::GetStringUTF16(IDS_COOKIES_ALLOW_RADIO)); |
213 localized_strings->SetString("cookies_ask", | 214 localized_strings->SetString("cookies_ask", |
214 l10n_util::GetStringUTF16(IDS_COOKIES_ASK_EVERY_TIME_RADIO)); | 215 l10n_util::GetStringUTF16(IDS_COOKIES_ASK_EVERY_TIME_RADIO)); |
215 localized_strings->SetString("cookies_block", | 216 localized_strings->SetString("cookies_block", |
216 l10n_util::GetStringUTF16(IDS_COOKIES_BLOCK_RADIO)); | 217 l10n_util::GetStringUTF16(IDS_COOKIES_BLOCK_RADIO)); |
217 localized_strings->SetString("cookies_block_3rd_party", | 218 localized_strings->SetString("cookies_block_3rd_party", |
218 l10n_util::GetStringUTF16(IDS_COOKIES_BLOCK_3RDPARTY_CHKBOX)); | 219 l10n_util::GetStringUTF16(IDS_COOKIES_BLOCK_3RDPARTY_CHKBOX)); |
219 localized_strings->SetString("cookies_clear_on_exit", | |
220 l10n_util::GetStringUTF16(IDS_COOKIES_CLEAR_WHEN_CLOSE_CHKBOX)); | |
221 localized_strings->SetString("cookies_show_cookies", | 220 localized_strings->SetString("cookies_show_cookies", |
222 l10n_util::GetStringUTF16(IDS_COOKIES_SHOW_COOKIES_BUTTON)); | 221 l10n_util::GetStringUTF16(IDS_COOKIES_SHOW_COOKIES_BUTTON)); |
223 localized_strings->SetString("flash_storage_settings", | 222 localized_strings->SetString("flash_storage_settings", |
224 l10n_util::GetStringUTF16(IDS_FLASH_STORAGE_SETTINGS)); | 223 l10n_util::GetStringUTF16(IDS_FLASH_STORAGE_SETTINGS)); |
225 localized_strings->SetString("flash_storage_url", | 224 localized_strings->SetString("flash_storage_url", |
226 l10n_util::GetStringUTF16(IDS_FLASH_STORAGE_URL)); | 225 l10n_util::GetStringUTF16(IDS_FLASH_STORAGE_URL)); |
227 | 226 |
228 // Image filter. | 227 // Image filter. |
229 localized_strings->SetString("images_tab_label", | 228 localized_strings->SetString("images_tab_label", |
230 l10n_util::GetStringUTF16(IDS_IMAGES_TAB_LABEL)); | 229 l10n_util::GetStringUTF16(IDS_IMAGES_TAB_LABEL)); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
297 l10n_util::GetStringUTF16(IDS_NOTIFICATIONS_BLOCK_RADIO)); | 296 l10n_util::GetStringUTF16(IDS_NOTIFICATIONS_BLOCK_RADIO)); |
298 } | 297 } |
299 | 298 |
300 void ContentSettingsHandler::Initialize() { | 299 void ContentSettingsHandler::Initialize() { |
301 const HostContentSettingsMap* settings_map = GetContentSettingsMap(); | 300 const HostContentSettingsMap* settings_map = GetContentSettingsMap(); |
302 scoped_ptr<Value> block_3rd_party(Value::CreateBooleanValue( | 301 scoped_ptr<Value> block_3rd_party(Value::CreateBooleanValue( |
303 settings_map->BlockThirdPartyCookies())); | 302 settings_map->BlockThirdPartyCookies())); |
304 dom_ui_->CallJavascriptFunction( | 303 dom_ui_->CallJavascriptFunction( |
305 L"ContentSettings.setBlockThirdPartyCookies", *block_3rd_party.get()); | 304 L"ContentSettings.setBlockThirdPartyCookies", *block_3rd_party.get()); |
306 | 305 |
306 clear_plugin_lso_data_enabled_.Init(prefs::kClearPluginLSODataEnabled, | |
307 g_browser_process->local_state(), | |
308 this); | |
309 UpdateClearPluginLSOData(); | |
310 | |
307 notification_registrar_.Add( | 311 notification_registrar_.Add( |
308 this, NotificationType::OTR_PROFILE_CREATED, | 312 this, NotificationType::OTR_PROFILE_CREATED, |
309 NotificationService::AllSources()); | 313 NotificationService::AllSources()); |
310 notification_registrar_.Add( | 314 notification_registrar_.Add( |
311 this, NotificationType::PROFILE_DESTROYED, | 315 this, NotificationType::PROFILE_DESTROYED, |
312 NotificationService::AllSources()); | 316 NotificationService::AllSources()); |
313 | 317 |
314 UpdateAllExceptionsViewsFromModel(); | 318 UpdateAllExceptionsViewsFromModel(); |
315 notification_registrar_.Add( | 319 notification_registrar_.Add( |
316 this, NotificationType::CONTENT_SETTINGS_CHANGED, | 320 this, NotificationType::CONTENT_SETTINGS_CHANGED, |
317 NotificationService::AllSources()); | 321 NotificationService::AllSources()); |
318 notification_registrar_.Add( | 322 notification_registrar_.Add( |
319 this, NotificationType::DESKTOP_NOTIFICATION_DEFAULT_CHANGED, | 323 this, NotificationType::DESKTOP_NOTIFICATION_DEFAULT_CHANGED, |
320 NotificationService::AllSources()); | 324 NotificationService::AllSources()); |
321 notification_registrar_.Add( | 325 notification_registrar_.Add( |
322 this, NotificationType::DESKTOP_NOTIFICATION_SETTINGS_CHANGED, | 326 this, NotificationType::DESKTOP_NOTIFICATION_SETTINGS_CHANGED, |
323 NotificationService::AllSources()); | 327 NotificationService::AllSources()); |
324 | 328 |
325 PrefService* prefs = dom_ui_->GetProfile()->GetPrefs(); | 329 PrefService* prefs = dom_ui_->GetProfile()->GetPrefs(); |
326 pref_change_registrar_.Init(prefs); | 330 pref_change_registrar_.Init(prefs); |
327 pref_change_registrar_.Add(prefs::kGeolocationDefaultContentSetting, this); | 331 pref_change_registrar_.Add(prefs::kGeolocationDefaultContentSetting, this); |
328 pref_change_registrar_.Add(prefs::kGeolocationContentSettings, this); | 332 pref_change_registrar_.Add(prefs::kGeolocationContentSettings, this); |
Evan Stade
2011/01/13 19:31:51
need prefs::kClearPluginLSODataEnabled here?
| |
329 } | 333 } |
330 | 334 |
331 void ContentSettingsHandler::Observe(NotificationType type, | 335 void ContentSettingsHandler::Observe(NotificationType type, |
332 const NotificationSource& source, | 336 const NotificationSource& source, |
333 const NotificationDetails& details) { | 337 const NotificationDetails& details) { |
334 switch (type.value) { | 338 switch (type.value) { |
335 case NotificationType::PROFILE_DESTROYED: { | 339 case NotificationType::PROFILE_DESTROYED: { |
336 Profile* profile = static_cast<Source<Profile> >(source).ptr(); | 340 Profile* profile = static_cast<Source<Profile> >(source).ptr(); |
337 if (profile->IsOffTheRecord()) { | 341 if (profile->IsOffTheRecord()) { |
338 dom_ui_->CallJavascriptFunction( | 342 dom_ui_->CallJavascriptFunction( |
(...skipping 18 matching lines...) Expand all Loading... | |
357 UpdateExceptionsViewFromModel(settings_details->type()); | 361 UpdateExceptionsViewFromModel(settings_details->type()); |
358 break; | 362 break; |
359 } | 363 } |
360 | 364 |
361 case NotificationType::PREF_CHANGED: { | 365 case NotificationType::PREF_CHANGED: { |
362 const std::string& pref_name = *Details<std::string>(details).ptr(); | 366 const std::string& pref_name = *Details<std::string>(details).ptr(); |
363 if (pref_name == prefs::kGeolocationDefaultContentSetting) | 367 if (pref_name == prefs::kGeolocationDefaultContentSetting) |
364 UpdateSettingDefaultFromModel(CONTENT_SETTINGS_TYPE_GEOLOCATION); | 368 UpdateSettingDefaultFromModel(CONTENT_SETTINGS_TYPE_GEOLOCATION); |
365 else if (pref_name == prefs::kGeolocationContentSettings) | 369 else if (pref_name == prefs::kGeolocationContentSettings) |
366 UpdateGeolocationExceptionsView(); | 370 UpdateGeolocationExceptionsView(); |
371 else if (pref_name == prefs::kClearPluginLSODataEnabled) | |
372 UpdateClearPluginLSOData(); | |
367 break; | 373 break; |
368 } | 374 } |
369 | 375 |
370 case NotificationType::DESKTOP_NOTIFICATION_DEFAULT_CHANGED: { | 376 case NotificationType::DESKTOP_NOTIFICATION_DEFAULT_CHANGED: { |
371 UpdateSettingDefaultFromModel(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | 377 UpdateSettingDefaultFromModel(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
372 break; | 378 break; |
373 } | 379 } |
374 | 380 |
375 case NotificationType::DESKTOP_NOTIFICATION_SETTINGS_CHANGED: { | 381 case NotificationType::DESKTOP_NOTIFICATION_SETTINGS_CHANGED: { |
376 UpdateNotificationExceptionsView(); | 382 UpdateNotificationExceptionsView(); |
377 break; | 383 break; |
378 } | 384 } |
379 | 385 |
380 default: | 386 default: |
381 OptionsPageUIHandler::Observe(type, source, details); | 387 OptionsPageUIHandler::Observe(type, source, details); |
382 } | 388 } |
383 } | 389 } |
384 | 390 |
391 void ContentSettingsHandler::UpdateClearPluginLSOData() { | |
392 int label_id = clear_plugin_lso_data_enabled_.GetValue() ? | |
393 IDS_COOKIES_LSO_CLEAR_WHEN_CLOSE_CHKBOX : | |
394 IDS_COOKIES_CLEAR_WHEN_CLOSE_CHKBOX; | |
395 scoped_ptr<Value> label( | |
396 Value::CreateStringValue(l10n_util::GetStringUTF16(label_id))); | |
397 dom_ui_->CallJavascriptFunction( | |
398 L"ContentSettings.setClearLocalDataOnShutdownLabel", *label); | |
399 } | |
400 | |
385 void ContentSettingsHandler::UpdateSettingDefaultFromModel( | 401 void ContentSettingsHandler::UpdateSettingDefaultFromModel( |
386 ContentSettingsType type) { | 402 ContentSettingsType type) { |
387 DictionaryValue filter_settings; | 403 DictionaryValue filter_settings; |
388 filter_settings.SetString(ContentSettingsTypeToGroupName(type) + ".value", | 404 filter_settings.SetString(ContentSettingsTypeToGroupName(type) + ".value", |
389 GetSettingDefaultFromModel(type)); | 405 GetSettingDefaultFromModel(type)); |
390 filter_settings.SetBoolean(ContentSettingsTypeToGroupName(type) + ".managed", | 406 filter_settings.SetBoolean(ContentSettingsTypeToGroupName(type) + ".managed", |
391 GetDefaultSettingManagedFromModel(type)); | 407 GetDefaultSettingManagedFromModel(type)); |
392 | 408 |
393 dom_ui_->CallJavascriptFunction( | 409 dom_ui_->CallJavascriptFunction( |
394 L"ContentSettings.setContentFilterSettingsValue", filter_settings); | 410 L"ContentSettings.setContentFilterSettingsValue", filter_settings); |
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
762 return dom_ui_->GetProfile()->GetHostContentSettingsMap(); | 778 return dom_ui_->GetProfile()->GetHostContentSettingsMap(); |
763 } | 779 } |
764 | 780 |
765 HostContentSettingsMap* | 781 HostContentSettingsMap* |
766 ContentSettingsHandler::GetOTRContentSettingsMap() { | 782 ContentSettingsHandler::GetOTRContentSettingsMap() { |
767 Profile* profile = dom_ui_->GetProfile(); | 783 Profile* profile = dom_ui_->GetProfile(); |
768 if (profile->HasOffTheRecordProfile()) | 784 if (profile->HasOffTheRecordProfile()) |
769 return profile->GetOffTheRecordProfile()->GetHostContentSettingsMap(); | 785 return profile->GetOffTheRecordProfile()->GetHostContentSettingsMap(); |
770 return NULL; | 786 return NULL; |
771 } | 787 } |
OLD | NEW |