Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(127)

Side by Side Diff: chrome/browser/host_content_settings_map.cc

Issue 4643007: Move click-to-play to about:flags. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix tests Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/host_content_settings_map.h" 5 #include "chrome/browser/host_content_settings_map.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "chrome/browser/browser_thread.h" 10 #include "chrome/browser/browser_thread.h"
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 } 384 }
385 const size_t next_dot = key.find('.', kDomainWildcardLength); 385 const size_t next_dot = key.find('.', kDomainWildcardLength);
386 if (next_dot == std::string::npos) 386 if (next_dot == std::string::npos)
387 break; 387 break;
388 key.erase(kDomainWildcardLength, next_dot - kDomainWildcardLength + 1); 388 key.erase(kDomainWildcardLength, next_dot - kDomainWildcardLength + 1);
389 } 389 }
390 390
391 return output; 391 return output;
392 } 392 }
393 393
394 ContentSetting HostContentSettingsMap::ClickToPlayFixup(
395 ContentSettingsType content_type,
396 ContentSetting setting) {
397 if (setting == CONTENT_SETTING_ASK &&
398 content_type == CONTENT_SETTINGS_TYPE_PLUGINS &&
399 !CommandLine::ForCurrentProcess()->HasSwitch(
400 switches::kEnableClickToPlay)) {
401 return CONTENT_SETTING_BLOCK;
402 }
403 return setting;
404 }
405
394 void HostContentSettingsMap::GetSettingsForOneType( 406 void HostContentSettingsMap::GetSettingsForOneType(
395 ContentSettingsType content_type, 407 ContentSettingsType content_type,
396 const std::string& resource_identifier, 408 const std::string& resource_identifier,
397 SettingsForOneType* settings) const { 409 SettingsForOneType* settings) const {
398 DCHECK(RequiresResourceIdentifier(content_type) != 410 DCHECK(RequiresResourceIdentifier(content_type) !=
399 resource_identifier.empty()); 411 resource_identifier.empty());
400 DCHECK(settings); 412 DCHECK(settings);
401 settings->clear(); 413 settings->clear();
402 414
403 const HostContentSettings* map_to_return = 415 const HostContentSettings* map_to_return =
(...skipping 21 matching lines...) Expand all
425 settings->push_back(std::make_pair(Pattern(i->first), setting)); 437 settings->push_back(std::make_pair(Pattern(i->first), setting));
426 } 438 }
427 } 439 }
428 } 440 }
429 441
430 void HostContentSettingsMap::SetDefaultContentSetting( 442 void HostContentSettingsMap::SetDefaultContentSetting(
431 ContentSettingsType content_type, 443 ContentSettingsType content_type,
432 ContentSetting setting) { 444 ContentSetting setting) {
433 DCHECK(kTypeNames[content_type] != NULL); // Don't call this for Geolocation. 445 DCHECK(kTypeNames[content_type] != NULL); // Don't call this for Geolocation.
434 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 446 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
447 DCHECK(content_type != CONTENT_SETTINGS_TYPE_PLUGINS ||
448 setting != CONTENT_SETTING_ASK ||
449 CommandLine::ForCurrentProcess()->HasSwitch(
450 switches::kEnableClickToPlay));
435 PrefService* prefs = profile_->GetPrefs(); 451 PrefService* prefs = profile_->GetPrefs();
436 452
437 // The default settings may not be directly modified for OTR sessions. 453 // The default settings may not be directly modified for OTR sessions.
438 // Instead, they are synced to the main profile's setting. 454 // Instead, they are synced to the main profile's setting.
439 if (is_off_the_record_) { 455 if (is_off_the_record_) {
440 NOTREACHED(); 456 NOTREACHED();
441 return; 457 return;
442 } 458 }
443 459
444 DictionaryValue* default_settings_dictionary = 460 DictionaryValue* default_settings_dictionary =
(...skipping 22 matching lines...) Expand all
467 483
468 void HostContentSettingsMap::SetContentSetting( 484 void HostContentSettingsMap::SetContentSetting(
469 const Pattern& original_pattern, 485 const Pattern& original_pattern,
470 ContentSettingsType content_type, 486 ContentSettingsType content_type,
471 const std::string& resource_identifier, 487 const std::string& resource_identifier,
472 ContentSetting setting) { 488 ContentSetting setting) {
473 DCHECK(kTypeNames[content_type] != NULL); // Don't call this for Geolocation. 489 DCHECK(kTypeNames[content_type] != NULL); // Don't call this for Geolocation.
474 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 490 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
475 DCHECK_NE(RequiresResourceIdentifier(content_type), 491 DCHECK_NE(RequiresResourceIdentifier(content_type),
476 resource_identifier.empty()); 492 resource_identifier.empty());
493 DCHECK(content_type != CONTENT_SETTINGS_TYPE_PLUGINS ||
494 setting != CONTENT_SETTING_ASK ||
495 CommandLine::ForCurrentProcess()->HasSwitch(
496 switches::kEnableClickToPlay));
477 497
478 const Pattern pattern(original_pattern.CanonicalizePattern()); 498 const Pattern pattern(original_pattern.CanonicalizePattern());
479 499
480 bool early_exit = false; 500 bool early_exit = false;
481 std::string pattern_str(pattern.AsString()); 501 std::string pattern_str(pattern.AsString());
482 PrefService* prefs = NULL; 502 PrefService* prefs = NULL;
483 DictionaryValue* all_settings_dictionary = NULL; 503 DictionaryValue* all_settings_dictionary = NULL;
484 HostContentSettings* map_to_modify = &off_the_record_settings_; 504 HostContentSettings* map_to_modify = &off_the_record_settings_;
485 if (!is_off_the_record_) { 505 if (!is_off_the_record_) {
486 prefs = profile_->GetPrefs(); 506 prefs = profile_->GetPrefs();
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after
789 DCHECK(found); 809 DCHECK(found);
790 settings->settings[type] = IntToContentSetting(setting); 810 settings->settings[type] = IntToContentSetting(setting);
791 break; 811 break;
792 } 812 }
793 } 813 }
794 } 814 }
795 // Migrate obsolete cookie prompt mode. 815 // Migrate obsolete cookie prompt mode.
796 if (settings->settings[CONTENT_SETTINGS_TYPE_COOKIES] == 816 if (settings->settings[CONTENT_SETTINGS_TYPE_COOKIES] ==
797 CONTENT_SETTING_ASK) 817 CONTENT_SETTING_ASK)
798 settings->settings[CONTENT_SETTINGS_TYPE_COOKIES] = CONTENT_SETTING_BLOCK; 818 settings->settings[CONTENT_SETTINGS_TYPE_COOKIES] = CONTENT_SETTING_BLOCK;
819
820 settings->settings[CONTENT_SETTINGS_TYPE_PLUGINS] =
821 ClickToPlayFixup(CONTENT_SETTINGS_TYPE_PLUGINS,
822 settings->settings[CONTENT_SETTINGS_TYPE_PLUGINS]);
799 } 823 }
800 824
801 void HostContentSettingsMap::GetResourceSettingsFromDictionary( 825 void HostContentSettingsMap::GetResourceSettingsFromDictionary(
802 const DictionaryValue* dictionary, 826 const DictionaryValue* dictionary,
803 ResourceContentSettings* settings) { 827 ResourceContentSettings* settings) {
804 for (DictionaryValue::key_iterator i(dictionary->begin_keys()); 828 for (DictionaryValue::key_iterator i(dictionary->begin_keys());
805 i != dictionary->end_keys(); ++i) { 829 i != dictionary->end_keys(); ++i) {
806 const std::string& content_type(*i); 830 const std::string& content_type(*i);
807 for (size_t type = 0; type < arraysize(kResourceTypeNames); ++type) { 831 for (size_t type = 0; type < arraysize(kResourceTypeNames); ++type) {
808 if ((kResourceTypeNames[type] != NULL) && 832 if ((kResourceTypeNames[type] != NULL) &&
809 (kResourceTypeNames[type] == content_type)) { 833 (kResourceTypeNames[type] == content_type)) {
810 DictionaryValue* resource_dictionary = NULL; 834 DictionaryValue* resource_dictionary = NULL;
811 bool found = dictionary->GetDictionary(content_type, 835 bool found = dictionary->GetDictionary(content_type,
812 &resource_dictionary); 836 &resource_dictionary);
813 DCHECK(found); 837 DCHECK(found);
814 for (DictionaryValue::key_iterator j(resource_dictionary->begin_keys()); 838 for (DictionaryValue::key_iterator j(resource_dictionary->begin_keys());
815 j != resource_dictionary->end_keys(); ++j) { 839 j != resource_dictionary->end_keys(); ++j) {
816 const std::string& resource_identifier(*j); 840 const std::string& resource_identifier(*j);
817 int setting = CONTENT_SETTING_DEFAULT; 841 int setting = CONTENT_SETTING_DEFAULT;
818 bool found = resource_dictionary->GetIntegerWithoutPathExpansion( 842 bool found = resource_dictionary->GetIntegerWithoutPathExpansion(
819 resource_identifier, &setting); 843 resource_identifier, &setting);
820 DCHECK(found); 844 DCHECK(found);
821 (*settings)[ContentSettingsTypeResourceIdentifierPair( 845 (*settings)[ContentSettingsTypeResourceIdentifierPair(
822 ContentSettingsType(type), resource_identifier)] = 846 ContentSettingsType(type), resource_identifier)] =
823 ContentSetting(setting); 847 ClickToPlayFixup(ContentSettingsType(type),
848 ContentSetting(setting));
824 } 849 }
825 850
826 break; 851 break;
827 } 852 }
828 } 853 }
829 } 854 }
830 } 855 }
831 856
832 void HostContentSettingsMap::ForceDefaultsToBeExplicit() { 857 void HostContentSettingsMap::ForceDefaultsToBeExplicit() {
833 DCHECK_EQ(arraysize(kDefaultSettings), 858 DCHECK_EQ(arraysize(kDefaultSettings),
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
1006 } 1031 }
1007 1032
1008 for (size_t i = 0; i < move_items.size(); ++i) { 1033 for (size_t i = 0; i < move_items.size(); ++i) {
1009 Value* pattern_settings_dictionary = NULL; 1034 Value* pattern_settings_dictionary = NULL;
1010 all_settings_dictionary->RemoveWithoutPathExpansion( 1035 all_settings_dictionary->RemoveWithoutPathExpansion(
1011 move_items[i].first, &pattern_settings_dictionary); 1036 move_items[i].first, &pattern_settings_dictionary);
1012 all_settings_dictionary->SetWithoutPathExpansion( 1037 all_settings_dictionary->SetWithoutPathExpansion(
1013 move_items[i].second, pattern_settings_dictionary); 1038 move_items[i].second, pattern_settings_dictionary);
1014 } 1039 }
1015 } 1040 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698