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

Side by Side Diff: chrome/browser/content_settings/content_settings_pref_provider.cc

Issue 9537014: Merge a bunch of CLs to whitelist the Google Talk plug-in when turning on click-to-play. (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1025/src
Patch Set: sync Created 8 years, 9 months 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
« no previous file with comments | « no previous file | chrome/browser/content_settings/host_content_settings_map.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/content_settings/content_settings_pref_provider.h" 5 #include "chrome/browser/content_settings/content_settings_pref_provider.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 settings->RemoveWithoutPathExpansion(type_name, NULL); 63 settings->RemoveWithoutPathExpansion(type_name, NULL);
64 } 64 }
65 } 65 }
66 66
67 // If the given content type supports resource identifiers in user preferences, 67 // If the given content type supports resource identifiers in user preferences,
68 // returns true and sets |pref_key| to the key in the content settings 68 // returns true and sets |pref_key| to the key in the content settings
69 // dictionary under which per-resource content settings are stored. 69 // dictionary under which per-resource content settings are stored.
70 // Otherwise, returns false. 70 // Otherwise, returns false.
71 bool GetResourceTypeName(ContentSettingsType content_type, 71 bool GetResourceTypeName(ContentSettingsType content_type,
72 std::string* pref_key) { 72 std::string* pref_key) {
73 if (content_type == CONTENT_SETTINGS_TYPE_PLUGINS && 73 if (content_type == CONTENT_SETTINGS_TYPE_PLUGINS) {
74 CommandLine::ForCurrentProcess()->HasSwitch(
75 switches::kEnableResourceContentSettings)) {
76 *pref_key = kPerPluginPrefName; 74 *pref_key = kPerPluginPrefName;
77 return true; 75 return true;
78 } 76 }
79 return false; 77 return false;
80 } 78 }
81 79
82 } // namespace 80 } // namespace
83 81
84 namespace content_settings { 82 namespace content_settings {
85 83
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 const ResourceIdentifier& resource_identifier, 157 const ResourceIdentifier& resource_identifier,
160 Value* in_value) { 158 Value* in_value) {
161 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 159 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
162 DCHECK(prefs_); 160 DCHECK(prefs_);
163 // Default settings are set using a wildcard pattern for both 161 // Default settings are set using a wildcard pattern for both
164 // |primary_pattern| and |secondary_pattern|. Don't store default settings in 162 // |primary_pattern| and |secondary_pattern|. Don't store default settings in
165 // the |PrefProvider|. The |PrefProvider| handles settings for specific 163 // the |PrefProvider|. The |PrefProvider| handles settings for specific
166 // sites/origins defined by the |primary_pattern| and the |secondary_pattern|. 164 // sites/origins defined by the |primary_pattern| and the |secondary_pattern|.
167 // Default settings are handled by the |DefaultProvider|. 165 // Default settings are handled by the |DefaultProvider|.
168 if (primary_pattern == ContentSettingsPattern::Wildcard() && 166 if (primary_pattern == ContentSettingsPattern::Wildcard() &&
169 secondary_pattern == ContentSettingsPattern::Wildcard()) { 167 secondary_pattern == ContentSettingsPattern::Wildcard() &&
168 resource_identifier.empty()) {
170 return false; 169 return false;
171 } 170 }
172 171
173 // At this point take the ownership of the |in_value|. 172 // At this point take the ownership of the |in_value|.
174 scoped_ptr<base::Value> value(in_value); 173 scoped_ptr<base::Value> value(in_value);
175 // Update in memory value map. 174 // Update in memory value map.
176 OriginIdentifierValueMap* map_to_modify = &incognito_value_map_; 175 OriginIdentifierValueMap* map_to_modify = &incognito_value_map_;
177 if (!is_incognito_) 176 if (!is_incognito_)
178 map_to_modify = &value_map_; 177 map_to_modify = &value_map_;
179 178
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 found = resource_dictionary->GetIntegerWithoutPathExpansion( 417 found = resource_dictionary->GetIntegerWithoutPathExpansion(
419 resource_identifier, &setting); 418 resource_identifier, &setting);
420 DCHECK_NE(CONTENT_SETTING_DEFAULT, setting); 419 DCHECK_NE(CONTENT_SETTING_DEFAULT, setting);
421 value_map_.SetValue(pattern_pair.first, 420 value_map_.SetValue(pattern_pair.first,
422 pattern_pair.second, 421 pattern_pair.second,
423 content_type, 422 content_type,
424 resource_identifier, 423 resource_identifier,
425 Value::CreateIntegerValue(setting)); 424 Value::CreateIntegerValue(setting));
426 } 425 }
427 } 426 }
428 } else { 427 }
429 int setting = CONTENT_SETTING_DEFAULT; 428 int setting = CONTENT_SETTING_DEFAULT;
430 if (settings_dictionary->GetIntegerWithoutPathExpansion( 429 if (settings_dictionary->GetIntegerWithoutPathExpansion(
431 GetTypeName(ContentSettingsType(i)), &setting)) { 430 GetTypeName(ContentSettingsType(i)), &setting)) {
432 DCHECK_NE(CONTENT_SETTING_DEFAULT, setting); 431 DCHECK_NE(CONTENT_SETTING_DEFAULT, setting);
433 setting = FixObsoleteCookiePromptMode(content_type, 432 setting = FixObsoleteCookiePromptMode(content_type,
434 ContentSetting(setting)); 433 ContentSetting(setting));
435 value_map_.SetValue(pattern_pair.first, 434 value_map_.SetValue(pattern_pair.first,
436 pattern_pair.second, 435 pattern_pair.second,
437 content_type, 436 content_type,
438 ResourceIdentifier(""), 437 ResourceIdentifier(""),
439 Value::CreateIntegerValue(setting)); 438 Value::CreateIntegerValue(setting));
440 }
441 } 439 }
442 } 440 }
443 } 441 }
444 } 442 }
445 443
446 void PrefProvider::UpdateObsoletePatternsPref( 444 void PrefProvider::UpdateObsoletePatternsPref(
447 const ContentSettingsPattern& primary_pattern, 445 const ContentSettingsPattern& primary_pattern,
448 const ContentSettingsPattern& secondary_pattern, 446 const ContentSettingsPattern& secondary_pattern,
449 ContentSettingsType content_type, 447 ContentSettingsType content_type,
450 const ResourceIdentifier& resource_identifier, 448 const ResourceIdentifier& resource_identifier,
(...skipping 13 matching lines...) Expand all
464 pattern_str, &settings_dictionary); 462 pattern_str, &settings_dictionary);
465 463
466 if (!found && (setting != CONTENT_SETTING_DEFAULT)) { 464 if (!found && (setting != CONTENT_SETTING_DEFAULT)) {
467 settings_dictionary = new DictionaryValue; 465 settings_dictionary = new DictionaryValue;
468 all_settings_dictionary->SetWithoutPathExpansion( 466 all_settings_dictionary->SetWithoutPathExpansion(
469 pattern_str, settings_dictionary); 467 pattern_str, settings_dictionary);
470 } 468 }
471 469
472 if (settings_dictionary) { 470 if (settings_dictionary) {
473 std::string res_dictionary_path; 471 std::string res_dictionary_path;
474 if (GetResourceTypeName(content_type, &res_dictionary_path)) { 472 if (GetResourceTypeName(content_type, &res_dictionary_path) &&
473 !resource_identifier.empty()) {
475 DictionaryValue* resource_dictionary = NULL; 474 DictionaryValue* resource_dictionary = NULL;
476 found = settings_dictionary->GetDictionary( 475 found = settings_dictionary->GetDictionary(
477 res_dictionary_path, &resource_dictionary); 476 res_dictionary_path, &resource_dictionary);
478 if (!found) { 477 if (!found) {
479 if (setting == CONTENT_SETTING_DEFAULT) 478 if (setting == CONTENT_SETTING_DEFAULT)
480 return; // Nothing to remove. Exit early. 479 return; // Nothing to remove. Exit early.
481 resource_dictionary = new DictionaryValue; 480 resource_dictionary = new DictionaryValue;
482 settings_dictionary->Set(res_dictionary_path, resource_dictionary); 481 settings_dictionary->Set(res_dictionary_path, resource_dictionary);
483 } 482 }
484 // Update resource dictionary. 483 // Update resource dictionary.
(...skipping 11 matching lines...) Expand all
496 } else { 495 } else {
497 // Update settings dictionary. 496 // Update settings dictionary.
498 std::string setting_path = GetTypeName(content_type); 497 std::string setting_path = GetTypeName(content_type);
499 if (setting == CONTENT_SETTING_DEFAULT) { 498 if (setting == CONTENT_SETTING_DEFAULT) {
500 settings_dictionary->RemoveWithoutPathExpansion(setting_path, 499 settings_dictionary->RemoveWithoutPathExpansion(setting_path,
501 NULL); 500 NULL);
502 } else { 501 } else {
503 settings_dictionary->SetWithoutPathExpansion( 502 settings_dictionary->SetWithoutPathExpansion(
504 setting_path, Value::CreateIntegerValue(setting)); 503 setting_path, Value::CreateIntegerValue(setting));
505 } 504 }
506 // Remove the settings dictionary if it is empty. 505 }
507 if (settings_dictionary->empty()) { 506 // Remove the settings dictionary if it is empty.
508 all_settings_dictionary->RemoveWithoutPathExpansion( 507 if (settings_dictionary->empty()) {
509 pattern_str, NULL); 508 all_settings_dictionary->RemoveWithoutPathExpansion(
510 } 509 pattern_str, NULL);
511 } 510 }
512 } 511 }
513 } 512 }
514 513
515 void PrefProvider::UpdatePatternPairsSettings( 514 void PrefProvider::UpdatePatternPairsSettings(
516 const ContentSettingsPattern& primary_pattern, 515 const ContentSettingsPattern& primary_pattern,
517 const ContentSettingsPattern& secondary_pattern, 516 const ContentSettingsPattern& secondary_pattern,
518 ContentSettingsType content_type, 517 ContentSettingsType content_type,
519 const ResourceIdentifier& resource_identifier, 518 const ResourceIdentifier& resource_identifier,
520 const base::Value* value, 519 const base::Value* value,
521 DictionaryValue* pattern_pairs_settings) { 520 DictionaryValue* pattern_pairs_settings) {
522 // Get settings dictionary for the given patterns. 521 // Get settings dictionary for the given patterns.
523 std::string pattern_str(CreatePatternString(primary_pattern, 522 std::string pattern_str(CreatePatternString(primary_pattern,
524 secondary_pattern)); 523 secondary_pattern));
525 DictionaryValue* settings_dictionary = NULL; 524 DictionaryValue* settings_dictionary = NULL;
526 bool found = pattern_pairs_settings->GetDictionaryWithoutPathExpansion( 525 bool found = pattern_pairs_settings->GetDictionaryWithoutPathExpansion(
527 pattern_str, &settings_dictionary); 526 pattern_str, &settings_dictionary);
528 527
529 if (!found && value) { 528 if (!found && value) {
530 settings_dictionary = new DictionaryValue; 529 settings_dictionary = new DictionaryValue;
531 pattern_pairs_settings->SetWithoutPathExpansion( 530 pattern_pairs_settings->SetWithoutPathExpansion(
532 pattern_str, settings_dictionary); 531 pattern_str, settings_dictionary);
533 } 532 }
534 533
535 if (settings_dictionary) { 534 if (settings_dictionary) {
536 std::string res_dictionary_path; 535 std::string res_dictionary_path;
537 if (GetResourceTypeName(content_type, &res_dictionary_path)) { 536 if (GetResourceTypeName(content_type, &res_dictionary_path) &&
537 !resource_identifier.empty()) {
538 DictionaryValue* resource_dictionary = NULL; 538 DictionaryValue* resource_dictionary = NULL;
539 found = settings_dictionary->GetDictionary( 539 found = settings_dictionary->GetDictionary(
540 res_dictionary_path, &resource_dictionary); 540 res_dictionary_path, &resource_dictionary);
541 if (!found) { 541 if (!found) {
542 if (value == NULL) 542 if (value == NULL)
543 return; // Nothing to remove. Exit early. 543 return; // Nothing to remove. Exit early.
544 resource_dictionary = new DictionaryValue; 544 resource_dictionary = new DictionaryValue;
545 settings_dictionary->Set(res_dictionary_path, resource_dictionary); 545 settings_dictionary->Set(res_dictionary_path, resource_dictionary);
546 } 546 }
547 // Update resource dictionary. 547 // Update resource dictionary.
(...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after
1104 1104
1105 void PrefProvider::AssertLockNotHeld() const { 1105 void PrefProvider::AssertLockNotHeld() const {
1106 #if !defined(NDEBUG) 1106 #if !defined(NDEBUG)
1107 // |Lock::Acquire()| will assert if the lock is held by this thread. 1107 // |Lock::Acquire()| will assert if the lock is held by this thread.
1108 lock_.Acquire(); 1108 lock_.Acquire();
1109 lock_.Release(); 1109 lock_.Release();
1110 #endif 1110 #endif
1111 } 1111 }
1112 1112
1113 } // namespace content_settings 1113 } // namespace content_settings
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/content_settings/host_content_settings_map.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698