1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "extensions/browser/api/content_settings/content_settings_custom_extension_provider.h"
#include <memory>
#include "components/content_settings/core/browser/content_settings_rule.h"
#include "components/content_settings/core/browser/content_settings_utils.h"
#include "components/content_settings/core/common/content_settings_pattern.h"
#include "extensions/common/extension_id.h"
namespace content_settings {
CustomExtensionProvider::CustomExtensionProvider(
const scoped_refptr<extensions::ContentSettingsStore>& extensions_settings,
bool incognito)
: incognito_(incognito), extensions_settings_(extensions_settings) {
extensions_settings_->AddObserver(this);
}
CustomExtensionProvider::~CustomExtensionProvider() = default;
std::unique_ptr<RuleIterator> CustomExtensionProvider::GetRuleIterator(
ContentSettingsType content_type,
bool incognito,
const content_settings::PartitionKey& partition_key) const {
return extensions_settings_->GetRuleIterator(content_type,
incognito);
}
std::unique_ptr<content_settings::Rule> CustomExtensionProvider::GetRule(
const GURL& primary_url,
const GURL& secondary_url,
ContentSettingsType content_type,
bool off_the_record,
const content_settings::PartitionKey& partition_key) const {
return extensions_settings_->GetRule(primary_url, secondary_url, content_type,
off_the_record);
}
bool CustomExtensionProvider::SetWebsiteSetting(
const ContentSettingsPattern& primary_pattern,
const ContentSettingsPattern& secondary_pattern,
ContentSettingsType content_type,
base::Value&& value,
const ContentSettingConstraints& constraints,
const content_settings::PartitionKey& partition_key) {
return false;
}
void CustomExtensionProvider::ShutdownOnUIThread() {
RemoveAllObservers();
extensions_settings_->RemoveObserver(this);
}
void CustomExtensionProvider::OnContentSettingChanged(
const extensions::ExtensionId& extension_id,
bool incognito) {
if (incognito_ != incognito) {
return;
}
// TODO(crbug.com/40196354): Be more concise and use the type/pattern that
// actually changed.
NotifyObservers(ContentSettingsPattern::Wildcard(),
ContentSettingsPattern::Wildcard(),
ContentSettingsType::DEFAULT, /*partition_key=*/nullptr);
}
} // namespace content_settings
|