Index: chrome/browser/content_settings/content_settings_default_provider.cc |
diff --git a/chrome/browser/content_settings/content_settings_default_provider.cc b/chrome/browser/content_settings/content_settings_default_provider.cc |
index f330b70bfb53bc54f605249a9978373e51878b14..c9987a05deb17a1d043bfd31f5f2682d582b930b 100644 |
--- a/chrome/browser/content_settings/content_settings_default_provider.cc |
+++ b/chrome/browser/content_settings/content_settings_default_provider.cc |
@@ -55,7 +55,8 @@ namespace { |
class DefaultRuleIterator : public RuleIterator { |
public: |
explicit DefaultRuleIterator(const base::Value* value) { |
- value_.reset(value->DeepCopy()); |
+ if (value) |
+ value_.reset(value->DeepCopy()); |
} |
bool HasNext() const { |
@@ -316,9 +317,11 @@ void DefaultProvider::ReadDefaultSettings(bool overwrite) { |
void DefaultProvider::ForceDefaultsToBeExplicit() { |
for (int i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) { |
ContentSettingsType type = ContentSettingsType(i); |
- if (!default_settings_[type].get()) |
+ if (!default_settings_[type].get() && |
+ kDefaultSettings[i] != CONTENT_SETTING_DEFAULT) { |
default_settings_[type].reset( |
Value::CreateIntegerValue(kDefaultSettings[i])); |
+ } |
} |
} |