Index: chrome/browser/content_settings/content_settings_origin_identifier_value_map.cc |
diff --git a/chrome/browser/content_settings/content_settings_origin_identifier_value_map.cc b/chrome/browser/content_settings/content_settings_origin_identifier_value_map.cc |
deleted file mode 100644 |
index 896d16b353caa87f9b5d0a4e08176f2c8a14a615..0000000000000000000000000000000000000000 |
--- a/chrome/browser/content_settings/content_settings_origin_identifier_value_map.cc |
+++ /dev/null |
@@ -1,186 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/content_settings/content_settings_origin_identifier_value_map.h" |
- |
-#include "base/compiler_specific.h" |
-#include "base/logging.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/synchronization/lock.h" |
-#include "base/values.h" |
-#include "chrome/browser/content_settings/content_settings_utils.h" |
-#include "components/content_settings/core/browser/content_settings_rule.h" |
-#include "components/content_settings/core/common/content_settings_types.h" |
-#include "url/gurl.h" |
- |
-namespace content_settings { |
- |
-namespace { |
- |
-// This iterator is used for iterating the rules for |content_type| and |
-// |resource_identifier| in the precedence order of the rules. |
-class RuleIteratorImpl : public RuleIterator { |
- public: |
- // |RuleIteratorImpl| takes the ownership of |auto_lock|. |
- RuleIteratorImpl( |
- const OriginIdentifierValueMap::Rules::const_iterator& current_rule, |
- const OriginIdentifierValueMap::Rules::const_iterator& rule_end, |
- base::AutoLock* auto_lock) |
- : current_rule_(current_rule), |
- rule_end_(rule_end), |
- auto_lock_(auto_lock) { |
- } |
- virtual ~RuleIteratorImpl() {} |
- |
- virtual bool HasNext() const OVERRIDE { |
- return (current_rule_ != rule_end_); |
- } |
- |
- virtual Rule Next() OVERRIDE { |
- DCHECK(current_rule_ != rule_end_); |
- DCHECK(current_rule_->second.get()); |
- Rule to_return(current_rule_->first.primary_pattern, |
- current_rule_->first.secondary_pattern, |
- current_rule_->second.get()->DeepCopy()); |
- ++current_rule_; |
- return to_return; |
- } |
- |
- private: |
- OriginIdentifierValueMap::Rules::const_iterator current_rule_; |
- OriginIdentifierValueMap::Rules::const_iterator rule_end_; |
- scoped_ptr<base::AutoLock> auto_lock_; |
-}; |
- |
-} // namespace |
- |
-OriginIdentifierValueMap::EntryMapKey::EntryMapKey( |
- ContentSettingsType content_type, |
- const ResourceIdentifier& resource_identifier) |
- : content_type(content_type), |
- resource_identifier(resource_identifier) { |
-} |
- |
-bool OriginIdentifierValueMap::EntryMapKey::operator<( |
- const OriginIdentifierValueMap::EntryMapKey& other) const { |
- if (content_type != other.content_type) |
- return content_type < other.content_type; |
- return (resource_identifier < other.resource_identifier); |
-} |
- |
-OriginIdentifierValueMap::PatternPair::PatternPair( |
- const ContentSettingsPattern& primary_pattern, |
- const ContentSettingsPattern& secondary_pattern) |
- : primary_pattern(primary_pattern), |
- secondary_pattern(secondary_pattern) { |
-} |
- |
-bool OriginIdentifierValueMap::PatternPair::operator<( |
- const OriginIdentifierValueMap::PatternPair& other) const { |
- // Note that this operator is the other way around than |
- // |ContentSettingsPattern::operator<|. It sorts patterns with higher |
- // precedence first. |
- if (primary_pattern > other.primary_pattern) |
- return true; |
- else if (other.primary_pattern > primary_pattern) |
- return false; |
- return (secondary_pattern > other.secondary_pattern); |
-} |
- |
-RuleIterator* OriginIdentifierValueMap::GetRuleIterator( |
- ContentSettingsType content_type, |
- const ResourceIdentifier& resource_identifier, |
- base::Lock* lock) const { |
- EntryMapKey key(content_type, resource_identifier); |
- // We access |entries_| here, so we need to lock |lock_| first. The lock must |
- // be passed to the |RuleIteratorImpl| in a locked state, so that nobody can |
- // access |entries_| after |find()| but before the |RuleIteratorImpl| is |
- // created. |
- scoped_ptr<base::AutoLock> auto_lock; |
- if (lock) |
- auto_lock.reset(new base::AutoLock(*lock)); |
- EntryMap::const_iterator it = entries_.find(key); |
- if (it == entries_.end()) |
- return new EmptyRuleIterator(); |
- return new RuleIteratorImpl(it->second.begin(), |
- it->second.end(), |
- auto_lock.release()); |
-} |
- |
-size_t OriginIdentifierValueMap::size() const { |
- size_t size = 0; |
- EntryMap::const_iterator it; |
- for (it = entries_.begin(); it != entries_.end(); ++it) |
- size += it->second.size(); |
- return size; |
-} |
- |
-OriginIdentifierValueMap::OriginIdentifierValueMap() {} |
- |
-OriginIdentifierValueMap::~OriginIdentifierValueMap() {} |
- |
-base::Value* OriginIdentifierValueMap::GetValue( |
- const GURL& primary_url, |
- const GURL& secondary_url, |
- ContentSettingsType content_type, |
- const ResourceIdentifier& resource_identifier) const { |
- EntryMapKey key(content_type, resource_identifier); |
- EntryMap::const_iterator it = entries_.find(key); |
- if (it == entries_.end()) |
- return NULL; |
- |
- // Iterate the entries in until a match is found. Since the rules are stored |
- // in the order of decreasing precedence, the most specific match is found |
- // first. |
- Rules::const_iterator entry; |
- for (entry = it->second.begin(); entry != it->second.end(); ++entry) { |
- if (entry->first.primary_pattern.Matches(primary_url) && |
- entry->first.secondary_pattern.Matches(secondary_url)) { |
- return entry->second.get(); |
- } |
- } |
- return NULL; |
-} |
- |
-void OriginIdentifierValueMap::SetValue( |
- const ContentSettingsPattern& primary_pattern, |
- const ContentSettingsPattern& secondary_pattern, |
- ContentSettingsType content_type, |
- const ResourceIdentifier& resource_identifier, |
- base::Value* value) { |
- DCHECK(primary_pattern.IsValid()); |
- DCHECK(secondary_pattern.IsValid()); |
- DCHECK(value); |
- EntryMapKey key(content_type, resource_identifier); |
- PatternPair patterns(primary_pattern, secondary_pattern); |
- // This will create the entry and the linked_ptr if needed. |
- entries_[key][patterns].reset(value); |
-} |
- |
-void OriginIdentifierValueMap::DeleteValue( |
- const ContentSettingsPattern& primary_pattern, |
- const ContentSettingsPattern& secondary_pattern, |
- ContentSettingsType content_type, |
- const ResourceIdentifier& resource_identifier) { |
- EntryMapKey key(content_type, resource_identifier); |
- PatternPair patterns(primary_pattern, secondary_pattern); |
- entries_[key].erase(patterns); |
- if (entries_[key].empty()) { |
- entries_.erase(key); |
- } |
-} |
- |
-void OriginIdentifierValueMap::DeleteValues( |
- ContentSettingsType content_type, |
- const ResourceIdentifier& resource_identifier) { |
- EntryMapKey key(content_type, resource_identifier); |
- entries_.erase(key); |
-} |
- |
-void OriginIdentifierValueMap::clear() { |
- // Delete all owned value objects. |
- entries_.clear(); |
-} |
- |
-} // namespace content_settings |