summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorweisert <weisert@yandex-team.ru>2015-11-26 08:04:39 -0800
committerCommit bot <commit-bot@chromium.org>2015-11-26 16:05:19 +0000
commit12177f716b731a9fafa7cf11eaf0b7d23e8edc9d (patch)
treeec3e8cd37294c300e0f9500ab09a290f8382b74f
parent7c2671f0eaf3f55b3c36858f651d414689d63365 (diff)
downloadchromium_src-12177f716b731a9fafa7cf11eaf0b7d23e8edc9d.zip
chromium_src-12177f716b731a9fafa7cf11eaf0b7d23e8edc9d.tar.gz
chromium_src-12177f716b731a9fafa7cf11eaf0b7d23e8edc9d.tar.bz2
Remove ScopedVector from extensions/api/declarative_content/*
BUG=554289 R=bauerb@chromium.org, rkc@chromium.org, rdevlin.cronin@chromium.org, battre@chromium.org Review URL: https://codereview.chromium.org/1459323005 Cr-Commit-Position: refs/heads/master@{#361896}
-rw-r--r--chrome/browser/content_settings/content_settings_internal_extension_provider.cc2
-rw-r--r--chrome/browser/content_settings/content_settings_internal_extension_provider.h7
-rw-r--r--chrome/browser/content_settings/content_settings_policy_provider_unittest.cc7
-rw-r--r--chrome/browser/content_settings/content_settings_supervised_provider.cc2
-rw-r--r--chrome/browser/content_settings/content_settings_supervised_provider.h7
-rw-r--r--chrome/browser/content_settings/content_settings_supervised_provider_unittest.cc28
-rw-r--r--chrome/browser/extensions/active_script_controller_browsertest.cc8
-rw-r--r--chrome/browser/extensions/api/audio_modem/audio_modem_api_unittest.cc35
-rw-r--r--chrome/browser/extensions/api/content_settings/content_settings_custom_extension_provider.cc3
-rw-r--r--chrome/browser/extensions/api/content_settings/content_settings_custom_extension_provider.h7
-rw-r--r--chrome/browser/extensions/api/content_settings/content_settings_store.cc10
-rw-r--r--chrome/browser/extensions/api/content_settings/content_settings_store.h2
-rw-r--r--chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.cc75
-rw-r--r--chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.h13
-rw-r--r--chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry_unittest.cc10
-rw-r--r--chrome/browser/extensions/api/declarative_content/content_condition.cc12
-rw-r--r--chrome/browser/extensions/api/declarative_content/content_condition.h7
-rw-r--r--chrome/browser/extensions/api/declarative_content/content_condition_unittest.cc7
-rw-r--r--chrome/browser/extensions/api/declarative_content/declarative_content_css_condition_tracker_unittest.cc9
-rw-r--r--chrome/browser/extensions/api/declarative_content/declarative_content_is_bookmarked_condition_tracker_unittest.cc156
-rw-r--r--chrome/browser/extensions/api/declarative_content/declarative_content_page_url_condition_tracker_unittest.cc55
-rw-r--r--chrome/browser/extensions/api/declarative_content/default_content_predicate_evaluators.cc19
-rw-r--r--chrome/browser/extensions/api/declarative_content/default_content_predicate_evaluators.h7
-rw-r--r--components/content_settings/core/browser/content_settings_binary_value_map.cc8
-rw-r--r--components/content_settings/core/browser/content_settings_binary_value_map.h7
-rw-r--r--components/content_settings/core/browser/content_settings_default_provider.cc6
-rw-r--r--components/content_settings/core/browser/content_settings_default_provider.h7
-rw-r--r--components/content_settings/core/browser/content_settings_mock_provider.cc5
-rw-r--r--components/content_settings/core/browser/content_settings_mock_provider.h7
-rw-r--r--components/content_settings/core/browser/content_settings_origin_identifier_value_map.cc9
-rw-r--r--components/content_settings/core/browser/content_settings_origin_identifier_value_map.h17
-rw-r--r--components/content_settings/core/browser/content_settings_policy_provider.cc3
-rw-r--r--components/content_settings/core/browser/content_settings_policy_provider.h7
-rw-r--r--components/content_settings/core/browser/content_settings_pref.cc2
-rw-r--r--components/content_settings/core/browser/content_settings_pref.h5
-rw-r--r--components/content_settings/core/browser/content_settings_pref_provider.cc2
-rw-r--r--components/content_settings/core/browser/content_settings_pref_provider.h7
-rw-r--r--components/content_settings/core/browser/content_settings_provider.h11
-rw-r--r--components/content_settings/core/browser/content_settings_rule.cc11
-rw-r--r--components/content_settings/core/browser/content_settings_rule.h7
-rw-r--r--components/content_settings/core/browser/content_settings_rule_unittest.cc10
41 files changed, 329 insertions, 290 deletions
diff --git a/chrome/browser/content_settings/content_settings_internal_extension_provider.cc b/chrome/browser/content_settings/content_settings_internal_extension_provider.cc
index 45e2af7..b6c49a1 100644
--- a/chrome/browser/content_settings/content_settings_internal_extension_provider.cc
+++ b/chrome/browser/content_settings/content_settings_internal_extension_provider.cc
@@ -60,7 +60,7 @@ InternalExtensionProvider::~InternalExtensionProvider() {
DCHECK(!registrar_.get());
}
-RuleIterator* InternalExtensionProvider::GetRuleIterator(
+scoped_ptr<RuleIterator> InternalExtensionProvider::GetRuleIterator(
ContentSettingsType content_type,
const ResourceIdentifier& resource_identifier,
bool incognito) const {
diff --git a/chrome/browser/content_settings/content_settings_internal_extension_provider.h b/chrome/browser/content_settings/content_settings_internal_extension_provider.h
index 99a67af..a815bf0 100644
--- a/chrome/browser/content_settings/content_settings_internal_extension_provider.h
+++ b/chrome/browser/content_settings/content_settings_internal_extension_provider.h
@@ -36,9 +36,10 @@ class InternalExtensionProvider : public ObservableProvider,
~InternalExtensionProvider() override;
// ProviderInterface methods:
- RuleIterator* GetRuleIterator(ContentSettingsType content_type,
- const ResourceIdentifier& resource_identifier,
- bool incognito) const override;
+ scoped_ptr<RuleIterator> GetRuleIterator(
+ ContentSettingsType content_type,
+ const ResourceIdentifier& resource_identifier,
+ bool incognito) const override;
bool SetWebsiteSetting(const ContentSettingsPattern& primary_pattern,
const ContentSettingsPattern& secondary_pattern,
diff --git a/chrome/browser/content_settings/content_settings_policy_provider_unittest.cc b/chrome/browser/content_settings/content_settings_policy_provider_unittest.cc
index 619ab75..bcb56d9 100644
--- a/chrome/browser/content_settings/content_settings_policy_provider_unittest.cc
+++ b/chrome/browser/content_settings/content_settings_policy_provider_unittest.cc
@@ -54,11 +54,8 @@ TEST_F(PolicyProviderTest, DefaultGeolocationContentSetting) {
prefs->SetManagedPref(prefs::kManagedDefaultGeolocationSetting,
new base::FundamentalValue(CONTENT_SETTING_BLOCK));
- rule_iterator.reset(
- provider.GetRuleIterator(
- CONTENT_SETTINGS_TYPE_GEOLOCATION,
- std::string(),
- false));
+ rule_iterator = provider.GetRuleIterator(CONTENT_SETTINGS_TYPE_GEOLOCATION,
+ std::string(), false);
EXPECT_TRUE(rule_iterator->HasNext());
Rule rule = rule_iterator->Next();
EXPECT_FALSE(rule_iterator->HasNext());
diff --git a/chrome/browser/content_settings/content_settings_supervised_provider.cc b/chrome/browser/content_settings/content_settings_supervised_provider.cc
index e956f0a..af3c721 100644
--- a/chrome/browser/content_settings/content_settings_supervised_provider.cc
+++ b/chrome/browser/content_settings/content_settings_supervised_provider.cc
@@ -51,7 +51,7 @@ SupervisedProvider::SupervisedProvider(
SupervisedProvider::~SupervisedProvider() {
}
-RuleIterator* SupervisedProvider::GetRuleIterator(
+scoped_ptr<RuleIterator> SupervisedProvider::GetRuleIterator(
ContentSettingsType content_type,
const ResourceIdentifier& resource_identifier,
bool incognito) const {
diff --git a/chrome/browser/content_settings/content_settings_supervised_provider.h b/chrome/browser/content_settings/content_settings_supervised_provider.h
index ef305a5..a5cc640 100644
--- a/chrome/browser/content_settings/content_settings_supervised_provider.h
+++ b/chrome/browser/content_settings/content_settings_supervised_provider.h
@@ -26,9 +26,10 @@ class SupervisedProvider : public ObservableProvider {
~SupervisedProvider() override;
// ProviderInterface implementations.
- RuleIterator* GetRuleIterator(ContentSettingsType content_type,
- const ResourceIdentifier& resource_identifier,
- bool incognito) const override;
+ scoped_ptr<RuleIterator> GetRuleIterator(
+ ContentSettingsType content_type,
+ const ResourceIdentifier& resource_identifier,
+ bool incognito) const override;
bool SetWebsiteSetting(const ContentSettingsPattern& primary_pattern,
const ContentSettingsPattern& secondary_pattern,
diff --git a/chrome/browser/content_settings/content_settings_supervised_provider_unittest.cc b/chrome/browser/content_settings/content_settings_supervised_provider_unittest.cc
index 1533cb7..56e2f04 100644
--- a/chrome/browser/content_settings/content_settings_supervised_provider_unittest.cc
+++ b/chrome/browser/content_settings/content_settings_supervised_provider_unittest.cc
@@ -61,8 +61,8 @@ TEST_F(SupervisedUserProviderTest, GeolocationTest) {
supervised_users::kGeolocationDisabled,
scoped_ptr<base::Value>(new base::FundamentalValue(true)));
- rule_iterator.reset(provider_->GetRuleIterator(
- CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(), false));
+ rule_iterator = provider_->GetRuleIterator(CONTENT_SETTINGS_TYPE_GEOLOCATION,
+ std::string(), false);
ASSERT_TRUE(rule_iterator->HasNext());
Rule rule = rule_iterator->Next();
EXPECT_FALSE(rule_iterator->HasNext());
@@ -79,8 +79,8 @@ TEST_F(SupervisedUserProviderTest, GeolocationTest) {
supervised_users::kGeolocationDisabled,
scoped_ptr<base::Value>(new base::FundamentalValue(false)));
- rule_iterator.reset(provider_->GetRuleIterator(
- CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string(), false));
+ rule_iterator = provider_->GetRuleIterator(CONTENT_SETTINGS_TYPE_GEOLOCATION,
+ std::string(), false);
EXPECT_FALSE(rule_iterator->HasNext());
}
@@ -89,8 +89,8 @@ TEST_F(SupervisedUserProviderTest, CameraMicTest) {
CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, std::string(), false));
EXPECT_FALSE(rule_iterator->HasNext());
rule_iterator.reset();
- rule_iterator.reset(provider_->GetRuleIterator(
- CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, std::string(), false));
+ rule_iterator = provider_->GetRuleIterator(
+ CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, std::string(), false);
EXPECT_FALSE(rule_iterator->HasNext());
rule_iterator.reset();
@@ -105,8 +105,8 @@ TEST_F(SupervisedUserProviderTest, CameraMicTest) {
supervised_users::kCameraMicDisabled,
scoped_ptr<base::Value>(new base::FundamentalValue(true)));
- rule_iterator.reset(provider_->GetRuleIterator(
- CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, std::string(), false));
+ rule_iterator = provider_->GetRuleIterator(
+ CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, std::string(), false);
ASSERT_TRUE(rule_iterator->HasNext());
Rule rule = rule_iterator->Next();
EXPECT_FALSE(rule_iterator->HasNext());
@@ -116,8 +116,8 @@ TEST_F(SupervisedUserProviderTest, CameraMicTest) {
EXPECT_EQ(CONTENT_SETTING_BLOCK, ValueToContentSetting(rule.value.get()));
rule_iterator.reset();
- rule_iterator.reset(provider_->GetRuleIterator(
- CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, std::string(), false));
+ rule_iterator = provider_->GetRuleIterator(
+ CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, std::string(), false);
ASSERT_TRUE(rule_iterator->HasNext());
rule = rule_iterator->Next();
EXPECT_FALSE(rule_iterator->HasNext());
@@ -138,12 +138,12 @@ TEST_F(SupervisedUserProviderTest, CameraMicTest) {
supervised_users::kCameraMicDisabled,
scoped_ptr<base::Value>(new base::FundamentalValue(false)));
- rule_iterator.reset(provider_->GetRuleIterator(
- CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, std::string(), false));
+ rule_iterator = provider_->GetRuleIterator(
+ CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, std::string(), false);
EXPECT_FALSE(rule_iterator->HasNext());
rule_iterator.reset();
- rule_iterator.reset(provider_->GetRuleIterator(
- CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, std::string(), false));
+ rule_iterator = provider_->GetRuleIterator(
+ CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, std::string(), false);
EXPECT_FALSE(rule_iterator->HasNext());
}
diff --git a/chrome/browser/extensions/active_script_controller_browsertest.cc b/chrome/browser/extensions/active_script_controller_browsertest.cc
index ce80212..3b81195 100644
--- a/chrome/browser/extensions/active_script_controller_browsertest.cc
+++ b/chrome/browser/extensions/active_script_controller_browsertest.cc
@@ -2,8 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <utility>
+#include <vector>
+
#include "base/files/file_path.h"
#include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
#include "base/strings/stringprintf.h"
#include "chrome/browser/extensions/active_script_controller.h"
#include "chrome/browser/extensions/extension_action.h"
@@ -83,7 +87,7 @@ class ActiveScriptControllerBrowserTest : public ExtensionBrowserTest {
InjectionType injection_type);
private:
- ScopedVector<TestExtensionDir> test_extension_dirs_;
+ std::vector<scoped_ptr<TestExtensionDir>> test_extension_dirs_;
std::vector<const Extension*> extensions_;
};
@@ -151,7 +155,7 @@ const Extension* ActiveScriptControllerBrowserTest::CreateExtension(
const Extension* extension = LoadExtension(dir->unpacked_path());
if (extension) {
- test_extension_dirs_.push_back(dir.release());
+ test_extension_dirs_.push_back(std::move(dir));
extensions_.push_back(extension);
}
diff --git a/chrome/browser/extensions/api/audio_modem/audio_modem_api_unittest.cc b/chrome/browser/extensions/api/audio_modem/audio_modem_api_unittest.cc
index f2cd614..d1d0c5e 100644
--- a/chrome/browser/extensions/api/audio_modem/audio_modem_api_unittest.cc
+++ b/chrome/browser/extensions/api/audio_modem/audio_modem_api_unittest.cc
@@ -4,6 +4,7 @@
#include <map>
#include <string>
+#include <utility>
#include <vector>
#include "base/callback.h"
@@ -141,12 +142,7 @@ scoped_ptr<KeyedService> StubEventRouterFactoryFunction(
class AudioModemApiUnittest : public ExtensionApiUnittest {
public:
AudioModemApiUnittest() {}
- ~AudioModemApiUnittest() override {
- for (const auto& events : events_by_extension_id_) {
- for (const Event* event : events.second)
- delete event;
- }
- }
+ ~AudioModemApiUnittest() override {}
protected:
template<typename Function>
@@ -185,14 +181,14 @@ class AudioModemApiUnittest : public ExtensionApiUnittest {
return extensions_by_name_[name].get();
}
- const std::vector<const Event*>&
- GetEventsForExtension(const std::string& name) {
+ const std::vector<scoped_ptr<const Event>>& GetEventsForExtension(
+ const std::string& name) {
const Extension* extension = extensions_by_name_[name].get();
DCHECK(extension);
return events_by_extension_id_[extension->id()];
}
- const std::vector<const Event*>& GetEvents() {
+ const std::vector<scoped_ptr<const Event>>& GetEvents() {
return GetEventsForExtension(std::string());
}
@@ -211,16 +207,13 @@ class AudioModemApiUnittest : public ExtensionApiUnittest {
void CaptureEvent(const std::string& extension_id,
scoped_ptr<Event> event) {
- // Since scoped_ptr (and ScopedVector) do not work inside STL containers,
- // we must manage this memory manually. It is cleaned up by the destructor.
- events_by_extension_id_[extension_id].push_back(event.release());
+ events_by_extension_id_[extension_id].push_back(std::move(event));
}
std::map<std::string, scoped_refptr<Extension>> extensions_by_name_;
- // We own all of these pointers.
- // Do not remove them from the map without calling delete.
- std::map<std::string, std::vector<const Event*>> events_by_extension_id_;
+ std::map<std::string, std::vector<scoped_ptr<const Event>>>
+ events_by_extension_id_;
};
TEST_F(AudioModemApiUnittest, TransmitBasic) {
@@ -360,10 +353,10 @@ TEST_F(AudioModemApiUnittest, ReceiveMultiple) {
// Check the token received.
scoped_ptr<DictionaryValue> expected_token(
CreateReceivedToken("abcd", "inaudible"));
- EXPECT_TRUE(ReceivedSingleToken(
- GetEventsForExtension("ext1")[0], expected_token.get()));
- EXPECT_TRUE(ReceivedSingleToken(
- GetEventsForExtension("ext2")[0], expected_token.get()));
+ EXPECT_TRUE(ReceivedSingleToken(GetEventsForExtension("ext1")[0].get(),
+ expected_token.get()));
+ EXPECT_TRUE(ReceivedSingleToken(GetEventsForExtension("ext2")[0].get(),
+ expected_token.get()));
// If one extension stops, the modem is still receiving for the other.
EXPECT_EQ("success", RunFunction<AudioModemStopReceiveFunction>(
@@ -376,8 +369,8 @@ TEST_F(AudioModemApiUnittest, ReceiveMultiple) {
EXPECT_EQ(1u, GetEventsForExtension("ext1").size());
EXPECT_EQ(2u, GetEventsForExtension("ext2").size());
expected_token.reset(CreateReceivedToken("1234", "inaudible"));
- EXPECT_TRUE(ReceivedSingleToken(
- GetEventsForExtension("ext2")[1], expected_token.get()));
+ EXPECT_TRUE(ReceivedSingleToken(GetEventsForExtension("ext2")[1].get(),
+ expected_token.get()));
EXPECT_EQ("success", RunFunction<AudioModemStopReceiveFunction>(
CreateList(new StringValue("inaudible")), GetExtension("ext2")));
diff --git a/chrome/browser/extensions/api/content_settings/content_settings_custom_extension_provider.cc b/chrome/browser/extensions/api/content_settings/content_settings_custom_extension_provider.cc
index 172ff8e0..188227b 100644
--- a/chrome/browser/extensions/api/content_settings/content_settings_custom_extension_provider.cc
+++ b/chrome/browser/extensions/api/content_settings/content_settings_custom_extension_provider.cc
@@ -6,6 +6,7 @@
#include "base/memory/scoped_ptr.h"
#include "chrome/browser/extensions/api/content_settings/content_settings_store.h"
+#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"
@@ -21,7 +22,7 @@ CustomExtensionProvider::CustomExtensionProvider(
CustomExtensionProvider::~CustomExtensionProvider() {
}
-RuleIterator* CustomExtensionProvider::GetRuleIterator(
+scoped_ptr<RuleIterator> CustomExtensionProvider::GetRuleIterator(
ContentSettingsType content_type,
const ResourceIdentifier& resource_identifier,
bool incognito) const {
diff --git a/chrome/browser/extensions/api/content_settings/content_settings_custom_extension_provider.h b/chrome/browser/extensions/api/content_settings/content_settings_custom_extension_provider.h
index e74343a..f34346e 100644
--- a/chrome/browser/extensions/api/content_settings/content_settings_custom_extension_provider.h
+++ b/chrome/browser/extensions/api/content_settings/content_settings_custom_extension_provider.h
@@ -24,9 +24,10 @@ class CustomExtensionProvider : public ObservableProvider,
~CustomExtensionProvider() override;
// ProviderInterface methods:
- RuleIterator* GetRuleIterator(ContentSettingsType content_type,
- const ResourceIdentifier& resource_identifier,
- bool incognito) const override;
+ scoped_ptr<RuleIterator> GetRuleIterator(
+ ContentSettingsType content_type,
+ const ResourceIdentifier& resource_identifier,
+ bool incognito) const override;
bool SetWebsiteSetting(const ContentSettingsPattern& primary_pattern,
const ContentSettingsPattern& secondary_pattern,
diff --git a/chrome/browser/extensions/api/content_settings/content_settings_store.cc b/chrome/browser/extensions/api/content_settings/content_settings_store.cc
index 523203d..ee4a2cc 100644
--- a/chrome/browser/extensions/api/content_settings/content_settings_store.cc
+++ b/chrome/browser/extensions/api/content_settings/content_settings_store.cc
@@ -5,11 +5,12 @@
#include "chrome/browser/extensions/api/content_settings/content_settings_store.h"
#include <set>
+#include <utility>
+#include <vector>
#include "base/debug/alias.h"
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
-#include "base/memory/scoped_vector.h"
#include "base/stl_util.h"
#include "base/strings/string_util.h"
#include "base/values.h"
@@ -54,11 +55,11 @@ ContentSettingsStore::~ContentSettingsStore() {
STLDeleteValues(&entries_);
}
-RuleIterator* ContentSettingsStore::GetRuleIterator(
+scoped_ptr<RuleIterator> ContentSettingsStore::GetRuleIterator(
ContentSettingsType type,
const content_settings::ResourceIdentifier& identifier,
bool incognito) const {
- ScopedVector<RuleIterator> iterators;
+ std::vector<scoped_ptr<RuleIterator>> iterators;
// Iterate the extensions based on install time (last installed extensions
// first).
ExtensionEntryMap::const_reverse_iterator entry;
@@ -87,7 +88,8 @@ RuleIterator* ContentSettingsStore::GetRuleIterator(
entry->second->settings.GetRuleIterator(type, identifier, NULL));
}
}
- return new ConcatenationIterator(&iterators, auto_lock.release());
+ return scoped_ptr<RuleIterator>(
+ new ConcatenationIterator(std::move(iterators), auto_lock.release()));
}
void ContentSettingsStore::SetExtensionContentSetting(
diff --git a/chrome/browser/extensions/api/content_settings/content_settings_store.h b/chrome/browser/extensions/api/content_settings/content_settings_store.h
index 33aa972..c40df85 100644
--- a/chrome/browser/extensions/api/content_settings/content_settings_store.h
+++ b/chrome/browser/extensions/api/content_settings/content_settings_store.h
@@ -51,7 +51,7 @@ class ContentSettingsStore
// //////////////////////////////////////////////////////////////////////////
- content_settings::RuleIterator* GetRuleIterator(
+ scoped_ptr<content_settings::RuleIterator> GetRuleIterator(
ContentSettingsType type,
const content_settings::ResourceIdentifier& identifier,
bool incognito) const;
diff --git a/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.cc b/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.cc
index 4a21a40..cd6b3f9 100644
--- a/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.cc
+++ b/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.cc
@@ -4,8 +4,6 @@
#include "chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.h"
-#include <utility>
-
#include "base/bind.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/extensions/api/declarative_content/content_constants.h"
@@ -132,7 +130,7 @@ void ChromeContentRulesRegistry::MonitorWebContentsForRuleEvaluation(
active_rules_[contents] = std::set<const ContentRule*>();
EvaluationScope evaluation_scope(this);
- for (ContentPredicateEvaluator* evaluator : evaluators_)
+ for (const scoped_ptr<ContentPredicateEvaluator>& evaluator : evaluators_)
evaluator->TrackForWebContents(contents);
}
@@ -142,21 +140,20 @@ void ChromeContentRulesRegistry::DidNavigateMainFrame(
const content::FrameNavigateParams& params) {
if (ContainsKey(active_rules_, contents)) {
EvaluationScope evaluation_scope(this);
- for (ContentPredicateEvaluator* evaluator : evaluators_)
+ for (const scoped_ptr<ContentPredicateEvaluator>& evaluator : evaluators_)
evaluator->OnWebContentsNavigation(contents, details, params);
}
}
ChromeContentRulesRegistry::ContentRule::ContentRule(
const Extension* extension,
- ScopedVector<const ContentCondition> conditions,
- ScopedVector<const ContentAction> actions,
+ std::vector<scoped_ptr<const ContentCondition>> conditions,
+ std::vector<scoped_ptr<const ContentAction>> actions,
int priority)
: extension(extension),
- conditions(conditions.Pass()),
- actions(actions.Pass()),
- priority(priority) {
-}
+ conditions(std::move(conditions)),
+ actions(std::move(actions)),
+ priority(priority) {}
ChromeContentRulesRegistry::ContentRule::~ContentRule() {}
@@ -166,7 +163,7 @@ ChromeContentRulesRegistry::CreateRule(
const std::map<std::string, ContentPredicateFactory*>& predicate_factories,
const api::events::Rule& api_rule,
std::string* error) {
- ScopedVector<const ContentCondition> conditions;
+ std::vector<scoped_ptr<const ContentCondition>> conditions;
for (const linked_ptr<base::Value>& value : api_rule.conditions) {
conditions.push_back(
CreateContentCondition(extension, predicate_factories, *value, error));
@@ -174,7 +171,7 @@ ChromeContentRulesRegistry::CreateRule(
return scoped_ptr<ContentRule>();
}
- ScopedVector<const ContentAction> actions;
+ std::vector<scoped_ptr<const ContentAction>> actions;
for (const linked_ptr<base::Value>& value : api_rule.actions) {
actions.push_back(ContentAction::Create(browser_context(), extension,
*value, error));
@@ -184,9 +181,9 @@ ChromeContentRulesRegistry::CreateRule(
// Note: |api_rule| may contain tags, but these are ignored.
- return make_scoped_ptr(
- new ContentRule(extension, conditions.Pass(), actions.Pass(),
- *api_rule.priority));
+ return make_scoped_ptr(new ContentRule(extension, std::move(conditions),
+ std::move(actions),
+ *api_rule.priority));
}
bool ChromeContentRulesRegistry::ManagingRulesForBrowserContext(
@@ -200,10 +197,10 @@ bool ChromeContentRulesRegistry::ManagingRulesForBrowserContext(
bool ChromeContentRulesRegistry::EvaluateConditionForTab(
const ContentCondition* condition,
content::WebContents* tab) {
- for (const ContentPredicate* predicate : condition->predicates) {
- if (predicate &&
- !predicate->IsIgnored() &&
- !predicate->GetEvaluator()->EvaluatePredicate(predicate, tab)) {
+ for (const scoped_ptr<const ContentPredicate>& predicate :
+ condition->predicates) {
+ if (predicate && !predicate->IsIgnored() &&
+ !predicate->GetEvaluator()->EvaluatePredicate(predicate.get(), tab)) {
return false;
}
}
@@ -221,8 +218,9 @@ ChromeContentRulesRegistry::GetMatchingRules(content::WebContents* tab) const {
!ShouldEvaluateExtensionRulesForIncognitoRenderer(rule->extension))
continue;
- for (const ContentCondition* condition : rule->conditions) {
- if (EvaluateConditionForTab(condition, tab))
+ for (const scoped_ptr<const ContentCondition>& condition :
+ rule->conditions) {
+ if (EvaluateConditionForTab(condition.get(), tab))
matching_rules.insert(rule);
}
}
@@ -244,8 +242,10 @@ std::string ChromeContentRulesRegistry::AddRulesImpl(
new_predicates;
std::map<std::string, ContentPredicateFactory*> predicate_factories;
- for (ContentPredicateEvaluator* evaluator : evaluators_)
- predicate_factories[evaluator->GetPredicateApiAttributeName()] = evaluator;
+ for (const scoped_ptr<ContentPredicateEvaluator>& evaluator : evaluators_) {
+ predicate_factories[evaluator->GetPredicateApiAttributeName()] =
+ evaluator.get();
+ }
for (const linked_ptr<api::events::Rule>& api_rule : api_rules) {
ExtensionIdRuleIdPair rule_id(extension_id, *api_rule->id);
@@ -256,8 +256,9 @@ std::string ChromeContentRulesRegistry::AddRulesImpl(
if (!error.empty()) {
// Notify evaluators that none of the created predicates will be tracked
// after all.
- for (ContentPredicateEvaluator* evaluator : evaluators_) {
- if (!new_predicates[evaluator].empty()) {
+ for (const scoped_ptr<ContentPredicateEvaluator>& evaluator :
+ evaluators_) {
+ if (!new_predicates[evaluator.get()].empty()) {
evaluator->TrackPredicates(
std::map<const void*, std::vector<const ContentPredicate*>>());
}
@@ -269,11 +270,13 @@ std::string ChromeContentRulesRegistry::AddRulesImpl(
// Group predicates by evaluator and rule, so we can later notify the
// evaluators that they have new predicates to manage.
- for (const ContentCondition* condition : rule->conditions) {
- for (const ContentPredicate* predicate : condition->predicates) {
- if (predicate) {
+ for (const scoped_ptr<const ContentCondition>& condition :
+ rule->conditions) {
+ for (const scoped_ptr<const ContentPredicate>& predicate :
+ condition->predicates) {
+ if (predicate.get()) {
new_predicates[predicate->GetEvaluator()][rule.get()].push_back(
- predicate);
+ predicate.get());
}
}
}
@@ -282,8 +285,8 @@ std::string ChromeContentRulesRegistry::AddRulesImpl(
}
// Notify the evaluators about their new predicates.
- for (ContentPredicateEvaluator* evaluator : evaluators_)
- evaluator->TrackPredicates(new_predicates[evaluator]);
+ for (const scoped_ptr<ContentPredicateEvaluator>& evaluator : evaluators_)
+ evaluator->TrackPredicates(new_predicates[evaluator.get()]);
// Wohoo, everything worked fine.
content_rules_.insert(new_rules.begin(), new_rules.end());
@@ -321,7 +324,7 @@ std::string ChromeContentRulesRegistry::RemoveRulesImpl(
ContentAction::ApplyInfo apply_info =
{rule->extension, browser_context(), tab_rules_pair.first,
rule->priority};
- for (const ContentAction* action : rule->actions)
+ for (const auto& action : rule->actions)
action->Revert(apply_info);
tab_rules_pair.second.erase(rule);
}
@@ -332,7 +335,7 @@ std::string ChromeContentRulesRegistry::RemoveRulesImpl(
}
// Notify the evaluators to stop tracking the predicates that will be removed.
- for (ContentPredicateEvaluator* evaluator : evaluators_)
+ for (const scoped_ptr<ContentPredicateEvaluator>& evaluator : evaluators_)
evaluator->StopTrackingPredicates(predicate_groups_to_stop_tracking);
// Remove the rules.
@@ -366,10 +369,10 @@ void ChromeContentRulesRegistry::EvaluateConditionsForTab(
ContentAction::ApplyInfo apply_info =
{rule->extension, browser_context(), tab, rule->priority};
if (!ContainsKey(prev_matching_rules, rule)) {
- for (const ContentAction* action : rule->actions)
+ for (const scoped_ptr<const ContentAction>& action : rule->actions)
action->Apply(apply_info);
} else {
- for (const ContentAction* action : rule->actions)
+ for (const scoped_ptr<const ContentAction>& action : rule->actions)
action->Reapply(apply_info);
}
}
@@ -377,7 +380,7 @@ void ChromeContentRulesRegistry::EvaluateConditionsForTab(
if (!ContainsKey(matching_rules, rule)) {
ContentAction::ApplyInfo apply_info =
{rule->extension, browser_context(), tab, rule->priority};
- for (const ContentAction* action : rule->actions)
+ for (const scoped_ptr<const ContentAction>& action : rule->actions)
action->Revert(apply_info);
}
}
diff --git a/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.h b/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.h
index 494715e..d2aa910 100644
--- a/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.h
+++ b/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.h
@@ -14,7 +14,6 @@
#include "base/callback.h"
#include "base/memory/linked_ptr.h"
#include "base/memory/scoped_ptr.h"
-#include "base/memory/scoped_vector.h"
#include "chrome/browser/extensions/api/declarative_content/content_action.h"
#include "chrome/browser/extensions/api/declarative_content/content_condition.h"
#include "chrome/browser/extensions/api/declarative_content/content_predicate_evaluator.h"
@@ -54,7 +53,7 @@ class ChromeContentRulesRegistry
public ContentPredicateEvaluator::Delegate {
public:
using PredicateEvaluatorsFactory =
- base::Callback<ScopedVector<ContentPredicateEvaluator>(
+ base::Callback<std::vector<scoped_ptr<ContentPredicateEvaluator>>(
ContentPredicateEvaluator::Delegate*)>;
// For testing, |cache_delegate| can be NULL. In that case it constructs the
@@ -103,14 +102,14 @@ class ChromeContentRulesRegistry
struct ContentRule {
public:
ContentRule(const Extension* extension,
- ScopedVector<const ContentCondition> conditions,
- ScopedVector<const ContentAction> actions,
+ std::vector<scoped_ptr<const ContentCondition>> conditions,
+ std::vector<scoped_ptr<const ContentAction>> actions,
int priority);
~ContentRule();
const Extension* extension;
- ScopedVector<const ContentCondition> conditions;
- ScopedVector<const ContentAction> actions;
+ std::vector<scoped_ptr<const ContentCondition>> conditions;
+ std::vector<scoped_ptr<const ContentAction>> actions;
int priority;
private:
@@ -173,7 +172,7 @@ class ChromeContentRulesRegistry
// The evaluators responsible for creating predicates and tracking
// predicate-related state.
- ScopedVector<ContentPredicateEvaluator> evaluators_;
+ std::vector<scoped_ptr<ContentPredicateEvaluator>> evaluators_;
// Specifies what to do with evaluation requests.
EvaluationDisposition evaluation_disposition_;
diff --git a/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry_unittest.cc b/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry_unittest.cc
index a9d1a6c..e392baf 100644
--- a/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry_unittest.cc
+++ b/chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry_unittest.cc
@@ -4,8 +4,6 @@
#include "chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.h"
-#include <string>
-
#include "base/bind.h"
#include "base/test/values_test_util.h"
#include "chrome/browser/extensions/api/declarative_content/content_predicate.h"
@@ -116,13 +114,13 @@ class TestPredicateEvaluator : public ContentPredicateEvaluator {
};
// Create the test evaluator and set |evaluator| to its pointer.
-ScopedVector<ContentPredicateEvaluator> CreateTestEvaluator(
+std::vector<scoped_ptr<ContentPredicateEvaluator>> CreateTestEvaluator(
TestPredicateEvaluator** evaluator,
ContentPredicateEvaluator::Delegate* delegate) {
- ScopedVector<ContentPredicateEvaluator> evaluators;
+ std::vector<scoped_ptr<ContentPredicateEvaluator>> evaluators;
*evaluator = new TestPredicateEvaluator(delegate);
- evaluators.push_back(*evaluator);
- return evaluators.Pass();
+ evaluators.push_back(scoped_ptr<ContentPredicateEvaluator>(*evaluator));
+ return evaluators;
}
} // namespace
diff --git a/chrome/browser/extensions/api/declarative_content/content_condition.cc b/chrome/browser/extensions/api/declarative_content/content_condition.cc
index 5f217cb..6cce824 100644
--- a/chrome/browser/extensions/api/declarative_content/content_condition.cc
+++ b/chrome/browser/extensions/api/declarative_content/content_condition.cc
@@ -4,6 +4,8 @@
#include "chrome/browser/extensions/api/declarative_content/content_condition.h"
+#include <utility>
+
#include "base/bind.h"
#include "base/strings/stringprintf.h"
#include "base/values.h"
@@ -25,9 +27,8 @@ const char kUnknownConditionAttribute[] = "Unknown condition attribute '%s'";
} // namespace
ContentCondition::ContentCondition(
- ScopedVector<const ContentPredicate> predicates)
- : predicates(predicates.Pass()) {
-}
+ std::vector<scoped_ptr<const ContentPredicate>> predicates)
+ : predicates(std::move(predicates)) {}
ContentCondition::~ContentCondition() {}
@@ -54,7 +55,7 @@ scoped_ptr<ContentCondition> CreateContentCondition(
return scoped_ptr<ContentCondition>();
}
- ScopedVector<const ContentPredicate> predicates;
+ std::vector<scoped_ptr<const ContentPredicate>> predicates;
for (base::DictionaryValue::Iterator iter(*api_condition_dict);
!iter.IsAtEnd(); iter.Advance()) {
const std::string& predicate_name = iter.key();
@@ -75,7 +76,8 @@ scoped_ptr<ContentCondition> CreateContentCondition(
return scoped_ptr<ContentCondition>();
}
- return scoped_ptr<ContentCondition>(new ContentCondition(predicates.Pass()));
+ return scoped_ptr<ContentCondition>(
+ new ContentCondition(std::move(predicates)));
}
} // namespace extensions
diff --git a/chrome/browser/extensions/api/declarative_content/content_condition.h b/chrome/browser/extensions/api/declarative_content/content_condition.h
index 7df7fe3..baefed6 100644
--- a/chrome/browser/extensions/api/declarative_content/content_condition.h
+++ b/chrome/browser/extensions/api/declarative_content/content_condition.h
@@ -7,9 +7,9 @@
#include <map>
#include <string>
+#include <vector>
#include "base/memory/scoped_ptr.h"
-#include "base/memory/scoped_vector.h"
#include "chrome/browser/extensions/api/declarative_content/content_predicate_evaluator.h"
namespace base {
@@ -29,10 +29,11 @@ class Extension;
// rule1['conditions'][0] is represented by a ContentCondition.
struct ContentCondition {
public:
- explicit ContentCondition(ScopedVector<const ContentPredicate> predicates);
+ explicit ContentCondition(
+ std::vector<scoped_ptr<const ContentPredicate>> predicates);
~ContentCondition();
- ScopedVector<const ContentPredicate> predicates;
+ std::vector<scoped_ptr<const ContentPredicate>> predicates;
private:
DISALLOW_COPY_AND_ASSIGN(ContentCondition);
diff --git a/chrome/browser/extensions/api/declarative_content/content_condition_unittest.cc b/chrome/browser/extensions/api/declarative_content/content_condition_unittest.cc
index 0f07761..3f8413f 100644
--- a/chrome/browser/extensions/api/declarative_content/content_condition_unittest.cc
+++ b/chrome/browser/extensions/api/declarative_content/content_condition_unittest.cc
@@ -4,6 +4,8 @@
#include "chrome/browser/extensions/api/declarative_content/content_condition.h"
+#include <vector>
+
#include "base/bind.h"
#include "base/test/values_test_util.h"
#include "base/values.h"
@@ -127,7 +129,10 @@ TEST(DeclarativeContentConditionTest, AllSpecifiedPredicatesCreated) {
ASSERT_TRUE(condition);
ASSERT_EQ(1u, factory1.created_predicates().size());
ASSERT_EQ(1u, factory2.created_predicates().size());
- EXPECT_THAT(condition->predicates,
+ std::vector<const ContentPredicate*> predicates;
+ for (const auto& predicate : condition->predicates)
+ predicates.push_back(predicate.get());
+ EXPECT_THAT(predicates,
UnorderedElementsAre(factory1.created_predicates()[0],
factory2.created_predicates()[0]));
}
diff --git a/chrome/browser/extensions/api/declarative_content/declarative_content_css_condition_tracker_unittest.cc b/chrome/browser/extensions/api/declarative_content/declarative_content_css_condition_tracker_unittest.cc
index 0eb7979..a2cda6a 100644
--- a/chrome/browser/extensions/api/declarative_content/declarative_content_css_condition_tracker_unittest.cc
+++ b/chrome/browser/extensions/api/declarative_content/declarative_content_css_condition_tracker_unittest.cc
@@ -5,7 +5,6 @@
#include "chrome/browser/extensions/api/declarative_content/declarative_content_css_condition_tracker.h"
#include "base/memory/scoped_ptr.h"
-#include "base/memory/scoped_vector.h"
#include "base/test/values_test_util.h"
#include "chrome/browser/extensions/api/declarative_content/content_predicate_evaluator.h"
#include "chrome/browser/extensions/api/declarative_content/declarative_content_condition_tracker_test.h"
@@ -148,7 +147,7 @@ TEST_F(DeclarativeContentCssConditionTrackerTest, AddAndRemovePredicates) {
// Check that adding predicates sends a WatchPages message with the
// corresponding selectors to the tab's RenderProcessHost.
- ScopedVector<const ContentPredicate> predicates;
+ std::vector<scoped_ptr<const ContentPredicate>> predicates;
predicates.push_back(CreatePredicate("[\"a\", \"div\"]"));
predicates.push_back(CreatePredicate("[\"b\"]"));
predicates.push_back(CreatePredicate("[\"input\"]"));
@@ -156,10 +155,10 @@ TEST_F(DeclarativeContentCssConditionTrackerTest, AddAndRemovePredicates) {
// Add the predicates in two groups: (0, 1) and (2).
std::map<const void*, std::vector<const ContentPredicate*>> predicate_groups;
const void* const group1 = GeneratePredicateGroupID();
- predicate_groups[group1].push_back(predicates[0]);
- predicate_groups[group1].push_back(predicates[1]);
+ predicate_groups[group1].push_back(predicates[0].get());
+ predicate_groups[group1].push_back(predicates[1].get());
const void* const group2 = GeneratePredicateGroupID();
- predicate_groups[group2].push_back(predicates[2]);
+ predicate_groups[group2].push_back(predicates[2].get());
std::set<std::string> watched_selectors;
watched_selectors.insert("a");
diff --git a/chrome/browser/extensions/api/declarative_content/declarative_content_is_bookmarked_condition_tracker_unittest.cc b/chrome/browser/extensions/api/declarative_content/declarative_content_is_bookmarked_condition_tracker_unittest.cc
index 5027c6c..b114258 100644
--- a/chrome/browser/extensions/api/declarative_content/declarative_content_is_bookmarked_condition_tracker_unittest.cc
+++ b/chrome/browser/extensions/api/declarative_content/declarative_content_is_bookmarked_condition_tracker_unittest.cc
@@ -6,10 +6,10 @@
#include <set>
#include <utility>
+#include <vector>
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
-#include "base/memory/scoped_vector.h"
#include "base/stl_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/test/values_test_util.h"
@@ -230,24 +230,26 @@ TEST_F(DeclarativeContentIsBookmarkedConditionTrackerTest,
TEST_F(DeclarativeContentIsBookmarkedConditionTrackerTest,
AddAndRemoveBookmark) {
// Create two tabs.
- ScopedVector<content::WebContents> tabs;
+ std::vector<scoped_ptr<content::WebContents>> tabs;
for (int i = 0; i < 2; ++i) {
tabs.push_back(MakeTab());
delegate_.evaluation_requests().clear();
- tracker_->TrackForWebContents(tabs.back());
+ tracker_->TrackForWebContents(tabs.back().get());
EXPECT_THAT(delegate_.evaluation_requests(),
- UnorderedElementsAre(tabs.back()));
- EXPECT_TRUE(CheckPredicates(tabs.back(), false));
+ UnorderedElementsAre(tabs.back().get()));
+ EXPECT_TRUE(CheckPredicates(tabs.back().get(), false));
}
// Navigate the first tab to a URL that we will bookmark.
delegate_.evaluation_requests().clear();
- LoadURL(tabs[0], GURL("http://bookmarked/"));
- tracker_->OnWebContentsNavigation(tabs[0], content::LoadCommittedDetails(),
+ LoadURL(tabs[0].get(), GURL("http://bookmarked/"));
+ tracker_->OnWebContentsNavigation(tabs[0].get(),
+ content::LoadCommittedDetails(),
content::FrameNavigateParams());
- EXPECT_THAT(delegate_.evaluation_requests(), UnorderedElementsAre(tabs[0]));
- EXPECT_TRUE(CheckPredicates(tabs[0], false));
- EXPECT_TRUE(CheckPredicates(tabs[1], false));
+ EXPECT_THAT(delegate_.evaluation_requests(),
+ UnorderedElementsAre(tabs[0].get()));
+ EXPECT_TRUE(CheckPredicates(tabs[0].get(), false));
+ EXPECT_TRUE(CheckPredicates(tabs[1].get(), false));
// Bookmark the first tab's URL.
delegate_.evaluation_requests().clear();
@@ -255,40 +257,44 @@ TEST_F(DeclarativeContentIsBookmarkedConditionTrackerTest,
bookmark_model_->AddURL(bookmark_model_->other_node(), 0,
base::ASCIIToUTF16("title"),
GURL("http://bookmarked/"));
- EXPECT_THAT(delegate_.evaluation_requests(), UnorderedElementsAre(tabs[0]));
- EXPECT_TRUE(CheckPredicates(tabs[0], true));
- EXPECT_TRUE(CheckPredicates(tabs[1], false));
+ EXPECT_THAT(delegate_.evaluation_requests(),
+ UnorderedElementsAre(tabs[0].get()));
+ EXPECT_TRUE(CheckPredicates(tabs[0].get(), true));
+ EXPECT_TRUE(CheckPredicates(tabs[1].get(), false));
// Remove the bookmark.
delegate_.evaluation_requests().clear();
bookmark_model_->Remove(node);
- EXPECT_THAT(delegate_.evaluation_requests(), UnorderedElementsAre(tabs[0]));
- EXPECT_TRUE(CheckPredicates(tabs[0], false));
- EXPECT_TRUE(CheckPredicates(tabs[1], false));
+ EXPECT_THAT(delegate_.evaluation_requests(),
+ UnorderedElementsAre(tabs[0].get()));
+ EXPECT_TRUE(CheckPredicates(tabs[0].get(), false));
+ EXPECT_TRUE(CheckPredicates(tabs[1].get(), false));
}
// Tests that adding and removing bookmarks triggers evaluation requests for the
// matching WebContents.
TEST_F(DeclarativeContentIsBookmarkedConditionTrackerTest, ExtensiveChanges) {
// Create two tabs.
- ScopedVector<content::WebContents> tabs;
+ std::vector<scoped_ptr<content::WebContents>> tabs;
for (int i = 0; i < 2; ++i) {
tabs.push_back(MakeTab());
delegate_.evaluation_requests().clear();
- tracker_->TrackForWebContents(tabs.back());
+ tracker_->TrackForWebContents(tabs.back().get());
EXPECT_THAT(delegate_.evaluation_requests(),
- UnorderedElementsAre(tabs.back()));
- EXPECT_TRUE(CheckPredicates(tabs.back(), false));
+ UnorderedElementsAre(tabs.back().get()));
+ EXPECT_TRUE(CheckPredicates(tabs.back().get(), false));
}
// Navigate the first tab to a URL that we will bookmark.
delegate_.evaluation_requests().clear();
- LoadURL(tabs[0], GURL("http://bookmarked/"));
- tracker_->OnWebContentsNavigation(tabs[0], content::LoadCommittedDetails(),
+ LoadURL(tabs[0].get(), GURL("http://bookmarked/"));
+ tracker_->OnWebContentsNavigation(tabs[0].get(),
+ content::LoadCommittedDetails(),
content::FrameNavigateParams());
- EXPECT_THAT(delegate_.evaluation_requests(), UnorderedElementsAre(tabs[0]));
- EXPECT_TRUE(CheckPredicates(tabs[0], false));
- EXPECT_TRUE(CheckPredicates(tabs[1], false));
+ EXPECT_THAT(delegate_.evaluation_requests(),
+ UnorderedElementsAre(tabs[0].get()));
+ EXPECT_TRUE(CheckPredicates(tabs[0].get(), false));
+ EXPECT_TRUE(CheckPredicates(tabs[1].get(), false));
{
// Check that evaluation requests occur outside ExtensiveBookmarkChanges for
@@ -300,12 +306,13 @@ TEST_F(DeclarativeContentIsBookmarkedConditionTrackerTest, ExtensiveChanges) {
base::ASCIIToUTF16("title"),
GURL("http://bookmarked/"));
EXPECT_TRUE(delegate_.evaluation_requests().empty());
- EXPECT_TRUE(CheckPredicates(tabs[0], false));
- EXPECT_TRUE(CheckPredicates(tabs[1], false));
+ EXPECT_TRUE(CheckPredicates(tabs[0].get(), false));
+ EXPECT_TRUE(CheckPredicates(tabs[1].get(), false));
bookmark_model_->EndExtensiveChanges();
- EXPECT_THAT(delegate_.evaluation_requests(), UnorderedElementsAre(tabs[0]));
- EXPECT_TRUE(CheckPredicates(tabs[0], true));
- EXPECT_TRUE(CheckPredicates(tabs[1], false));
+ EXPECT_THAT(delegate_.evaluation_requests(),
+ UnorderedElementsAre(tabs[0].get()));
+ EXPECT_TRUE(CheckPredicates(tabs[0].get(), true));
+ EXPECT_TRUE(CheckPredicates(tabs[1].get(), false));
// Check that evaluation requests occur outside ExtensiveBookmarkChanges for
// removed nodes.
@@ -313,12 +320,13 @@ TEST_F(DeclarativeContentIsBookmarkedConditionTrackerTest, ExtensiveChanges) {
bookmark_model_->BeginExtensiveChanges();
bookmark_model_->Remove(node);
EXPECT_TRUE(delegate_.evaluation_requests().empty());
- EXPECT_TRUE(CheckPredicates(tabs[0], true));
- EXPECT_TRUE(CheckPredicates(tabs[1], false));
+ EXPECT_TRUE(CheckPredicates(tabs[0].get(), true));
+ EXPECT_TRUE(CheckPredicates(tabs[1].get(), false));
bookmark_model_->EndExtensiveChanges();
- EXPECT_THAT(delegate_.evaluation_requests(), UnorderedElementsAre(tabs[0]));
- EXPECT_TRUE(CheckPredicates(tabs[0], false));
- EXPECT_TRUE(CheckPredicates(tabs[1], false));
+ EXPECT_THAT(delegate_.evaluation_requests(),
+ UnorderedElementsAre(tabs[0].get()));
+ EXPECT_TRUE(CheckPredicates(tabs[0].get(), false));
+ EXPECT_TRUE(CheckPredicates(tabs[1].get(), false));
}
{
@@ -332,12 +340,13 @@ TEST_F(DeclarativeContentIsBookmarkedConditionTrackerTest, ExtensiveChanges) {
base::ASCIIToUTF16("title"),
GURL("http://bookmarked/"));
EXPECT_TRUE(delegate_.evaluation_requests().empty());
- EXPECT_TRUE(CheckPredicates(tabs[0], false));
- EXPECT_TRUE(CheckPredicates(tabs[1], false));
+ EXPECT_TRUE(CheckPredicates(tabs[0].get(), false));
+ EXPECT_TRUE(CheckPredicates(tabs[1].get(), false));
}
- EXPECT_THAT(delegate_.evaluation_requests(), UnorderedElementsAre(tabs[0]));
- EXPECT_TRUE(CheckPredicates(tabs[0], true));
- EXPECT_TRUE(CheckPredicates(tabs[1], false));
+ EXPECT_THAT(delegate_.evaluation_requests(),
+ UnorderedElementsAre(tabs[0].get()));
+ EXPECT_TRUE(CheckPredicates(tabs[0].get(), true));
+ EXPECT_TRUE(CheckPredicates(tabs[1].get(), false));
// Check that evaluation requests occur outside ScopedGroupBookmarkActions
// for removed nodes.
@@ -346,12 +355,13 @@ TEST_F(DeclarativeContentIsBookmarkedConditionTrackerTest, ExtensiveChanges) {
bookmarks::ScopedGroupBookmarkActions scoped_group(bookmark_model_);
bookmark_model_->Remove(node);
EXPECT_TRUE(delegate_.evaluation_requests().empty());
- EXPECT_TRUE(CheckPredicates(tabs[0], true));
- EXPECT_TRUE(CheckPredicates(tabs[1], false));
+ EXPECT_TRUE(CheckPredicates(tabs[0].get(), true));
+ EXPECT_TRUE(CheckPredicates(tabs[1].get(), false));
}
- EXPECT_THAT(delegate_.evaluation_requests(), UnorderedElementsAre(tabs[0]));
- EXPECT_TRUE(CheckPredicates(tabs[0], false));
- EXPECT_TRUE(CheckPredicates(tabs[1], false));
+ EXPECT_THAT(delegate_.evaluation_requests(),
+ UnorderedElementsAre(tabs[0].get()));
+ EXPECT_TRUE(CheckPredicates(tabs[0].get(), false));
+ EXPECT_TRUE(CheckPredicates(tabs[1].get(), false));
}
}
@@ -368,55 +378,63 @@ TEST_F(DeclarativeContentIsBookmarkedConditionTrackerTest, Navigation) {
GURL("http://bookmarked2/"));
// Create two tabs.
- ScopedVector<content::WebContents> tabs;
+ std::vector<scoped_ptr<content::WebContents>> tabs;
for (int i = 0; i < 2; ++i) {
tabs.push_back(MakeTab());
delegate_.evaluation_requests().clear();
- tracker_->TrackForWebContents(tabs.back());
+ tracker_->TrackForWebContents(tabs.back().get());
EXPECT_THAT(delegate_.evaluation_requests(),
- UnorderedElementsAre(tabs.back()));
- EXPECT_TRUE(CheckPredicates(tabs.back(), false));
+ UnorderedElementsAre(tabs.back().get()));
+ EXPECT_TRUE(CheckPredicates(tabs.back().get(), false));
}
// Navigate the first tab to one bookmarked URL.
delegate_.evaluation_requests().clear();
- LoadURL(tabs[0], GURL("http://bookmarked1/"));
- tracker_->OnWebContentsNavigation(tabs[0], content::LoadCommittedDetails(),
+ LoadURL(tabs[0].get(), GURL("http://bookmarked1/"));
+ tracker_->OnWebContentsNavigation(tabs[0].get(),
+ content::LoadCommittedDetails(),
content::FrameNavigateParams());
- EXPECT_THAT(delegate_.evaluation_requests(), UnorderedElementsAre(tabs[0]));
- EXPECT_TRUE(CheckPredicates(tabs[0], true));
- EXPECT_TRUE(CheckPredicates(tabs[1], false));
+ EXPECT_THAT(delegate_.evaluation_requests(),
+ UnorderedElementsAre(tabs[0].get()));
+ EXPECT_TRUE(CheckPredicates(tabs[0].get(), true));
+ EXPECT_TRUE(CheckPredicates(tabs[1].get(), false));
// Navigate the first tab to another bookmarked URL. The contents have
// changed, so we should receive a new evaluation request even though the
// bookmarked state hasn't.
delegate_.evaluation_requests().clear();
- LoadURL(tabs[0], GURL("http://bookmarked2/"));
- tracker_->OnWebContentsNavigation(tabs[0], content::LoadCommittedDetails(),
+ LoadURL(tabs[0].get(), GURL("http://bookmarked2/"));
+ tracker_->OnWebContentsNavigation(tabs[0].get(),
+ content::LoadCommittedDetails(),
content::FrameNavigateParams());
- EXPECT_THAT(delegate_.evaluation_requests(), UnorderedElementsAre(tabs[0]));
- EXPECT_TRUE(CheckPredicates(tabs[0], true));
- EXPECT_TRUE(CheckPredicates(tabs[1], false));
+ EXPECT_THAT(delegate_.evaluation_requests(),
+ UnorderedElementsAre(tabs[0].get()));
+ EXPECT_TRUE(CheckPredicates(tabs[0].get(), true));
+ EXPECT_TRUE(CheckPredicates(tabs[1].get(), false));
// Navigate the first tab to a non-bookmarked URL.
delegate_.evaluation_requests().clear();
- LoadURL(tabs[0], GURL("http://not-bookmarked1/"));
- tracker_->OnWebContentsNavigation(tabs[0], content::LoadCommittedDetails(),
+ LoadURL(tabs[0].get(), GURL("http://not-bookmarked1/"));
+ tracker_->OnWebContentsNavigation(tabs[0].get(),
+ content::LoadCommittedDetails(),
content::FrameNavigateParams());
- EXPECT_THAT(delegate_.evaluation_requests(), UnorderedElementsAre(tabs[0]));
- EXPECT_TRUE(CheckPredicates(tabs[0], false));
- EXPECT_TRUE(CheckPredicates(tabs[1], false));
+ EXPECT_THAT(delegate_.evaluation_requests(),
+ UnorderedElementsAre(tabs[0].get()));
+ EXPECT_TRUE(CheckPredicates(tabs[0].get(), false));
+ EXPECT_TRUE(CheckPredicates(tabs[1].get(), false));
// Navigate the first tab to another non-bookmarked URL. The contents have
// changed, so we should receive a new evaluation request even though the
// bookmarked state hasn't.
delegate_.evaluation_requests().clear();
- LoadURL(tabs[0], GURL("http://not-bookmarked2/"));
- tracker_->OnWebContentsNavigation(tabs[0], content::LoadCommittedDetails(),
+ LoadURL(tabs[0].get(), GURL("http://not-bookmarked2/"));
+ tracker_->OnWebContentsNavigation(tabs[0].get(),
+ content::LoadCommittedDetails(),
content::FrameNavigateParams());
- EXPECT_THAT(delegate_.evaluation_requests(), UnorderedElementsAre(tabs[0]));
- EXPECT_TRUE(CheckPredicates(tabs[0], false));
- EXPECT_TRUE(CheckPredicates(tabs[1], false));
+ EXPECT_THAT(delegate_.evaluation_requests(),
+ UnorderedElementsAre(tabs[0].get()));
+ EXPECT_TRUE(CheckPredicates(tabs[0].get(), false));
+ EXPECT_TRUE(CheckPredicates(tabs[1].get(), false));
}
} // namespace extensions
diff --git a/chrome/browser/extensions/api/declarative_content/declarative_content_page_url_condition_tracker_unittest.cc b/chrome/browser/extensions/api/declarative_content/declarative_content_page_url_condition_tracker_unittest.cc
index a6bc408..54d043f 100644
--- a/chrome/browser/extensions/api/declarative_content/declarative_content_page_url_condition_tracker_unittest.cc
+++ b/chrome/browser/extensions/api/declarative_content/declarative_content_page_url_condition_tracker_unittest.cc
@@ -5,9 +5,9 @@
#include "chrome/browser/extensions/api/declarative_content/declarative_content_page_url_condition_tracker.h"
#include <set>
+#include <vector>
#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_vector.h"
#include "base/stl_util.h"
#include "base/test/values_test_util.h"
#include "chrome/browser/extensions/api/declarative_content/content_predicate_evaluator.h"
@@ -133,22 +133,22 @@ TEST(DeclarativeContentPageUrlPredicateTest, PageUrlPredicate) {
// the matching WebContents.
TEST_F(DeclarativeContentPageUrlConditionTrackerTest, AddAndRemovePredicates) {
// Create four tabs.
- ScopedVector<content::WebContents> tabs;
+ std::vector<scoped_ptr<content::WebContents>> tabs;
for (int i = 0; i < 4; ++i) {
tabs.push_back(MakeTab());
delegate_.evaluation_requests().clear();
- tracker_.TrackForWebContents(tabs.back());
+ tracker_.TrackForWebContents(tabs.back().get());
EXPECT_THAT(delegate_.evaluation_requests(),
- UnorderedElementsAre(tabs.back()));
+ UnorderedElementsAre(tabs.back().get()));
}
// Navigate three of them to URLs that will match with predicats we're about
// to add.
- LoadURL(tabs[0], GURL("http://test1/"));
- LoadURL(tabs[1], GURL("http://test2/"));
- LoadURL(tabs[2], GURL("http://test3/"));
+ LoadURL(tabs[0].get(), GURL("http://test1/"));
+ LoadURL(tabs[1].get(), GURL("http://test2/"));
+ LoadURL(tabs[2].get(), GURL("http://test3/"));
- ScopedVector<const ContentPredicate> predicates;
+ std::vector<scoped_ptr<const ContentPredicate>> predicates;
std::string error;
predicates.push_back(CreatePredicate("{\"hostPrefix\": \"test1\"}"));
predicates.push_back(CreatePredicate("{\"hostPrefix\": \"test2\"}"));
@@ -158,41 +158,42 @@ TEST_F(DeclarativeContentPageUrlConditionTrackerTest, AddAndRemovePredicates) {
delegate_.evaluation_requests().clear();
std::map<const void*, std::vector<const ContentPredicate*>> predicate_groups;
const void* const group1 = GeneratePredicateGroupID();
- predicate_groups[group1].push_back(predicates[0]);
- predicate_groups[group1].push_back(predicates[1]);
+ predicate_groups[group1].push_back(predicates[0].get());
+ predicate_groups[group1].push_back(predicates[1].get());
const void* const group2 = GeneratePredicateGroupID();
- predicate_groups[group2].push_back(predicates[2]);
+ predicate_groups[group2].push_back(predicates[2].get());
tracker_.TrackPredicates(predicate_groups);
- EXPECT_THAT(delegate_.evaluation_requests(),
- UnorderedElementsAre(tabs[0], tabs[1], tabs[2]));
+ EXPECT_THAT(
+ delegate_.evaluation_requests(),
+ UnorderedElementsAre(tabs[0].get(), tabs[1].get(), tabs[2].get()));
// Check that the predicates evaluate as expected for the tabs.
- EXPECT_TRUE(tracker_.EvaluatePredicate(predicates[0], tabs[0]));
- EXPECT_FALSE(tracker_.EvaluatePredicate(predicates[0], tabs[1]));
- EXPECT_FALSE(tracker_.EvaluatePredicate(predicates[0], tabs[2]));
- EXPECT_FALSE(tracker_.EvaluatePredicate(predicates[0], tabs[3]));
+ EXPECT_TRUE(tracker_.EvaluatePredicate(predicates[0].get(), tabs[0].get()));
+ EXPECT_FALSE(tracker_.EvaluatePredicate(predicates[0].get(), tabs[1].get()));
+ EXPECT_FALSE(tracker_.EvaluatePredicate(predicates[0].get(), tabs[2].get()));
+ EXPECT_FALSE(tracker_.EvaluatePredicate(predicates[0].get(), tabs[3].get()));
- EXPECT_FALSE(tracker_.EvaluatePredicate(predicates[1], tabs[0]));
- EXPECT_TRUE(tracker_.EvaluatePredicate(predicates[1], tabs[1]));
- EXPECT_FALSE(tracker_.EvaluatePredicate(predicates[1], tabs[2]));
- EXPECT_FALSE(tracker_.EvaluatePredicate(predicates[1], tabs[3]));
+ EXPECT_FALSE(tracker_.EvaluatePredicate(predicates[1].get(), tabs[0].get()));
+ EXPECT_TRUE(tracker_.EvaluatePredicate(predicates[1].get(), tabs[1].get()));
+ EXPECT_FALSE(tracker_.EvaluatePredicate(predicates[1].get(), tabs[2].get()));
+ EXPECT_FALSE(tracker_.EvaluatePredicate(predicates[1].get(), tabs[3].get()));
- EXPECT_FALSE(tracker_.EvaluatePredicate(predicates[2], tabs[0]));
- EXPECT_FALSE(tracker_.EvaluatePredicate(predicates[2], tabs[1]));
- EXPECT_TRUE(tracker_.EvaluatePredicate(predicates[2], tabs[2]));
- EXPECT_FALSE(tracker_.EvaluatePredicate(predicates[2], tabs[3]));
+ EXPECT_FALSE(tracker_.EvaluatePredicate(predicates[2].get(), tabs[0].get()));
+ EXPECT_FALSE(tracker_.EvaluatePredicate(predicates[2].get(), tabs[1].get()));
+ EXPECT_TRUE(tracker_.EvaluatePredicate(predicates[2].get(), tabs[2].get()));
+ EXPECT_FALSE(tracker_.EvaluatePredicate(predicates[2].get(), tabs[3].get()));
// Remove the first group of predicates.
delegate_.evaluation_requests().clear();
tracker_.StopTrackingPredicates(std::vector<const void*>(1, group1));
EXPECT_THAT(delegate_.evaluation_requests(),
- UnorderedElementsAre(tabs[0], tabs[1]));
+ UnorderedElementsAre(tabs[0].get(), tabs[1].get()));
// Remove the second group of predicates.
delegate_.evaluation_requests().clear();
tracker_.StopTrackingPredicates(std::vector<const void*>(1, group2));
EXPECT_THAT(delegate_.evaluation_requests(),
- UnorderedElementsAre(tabs[2]));
+ UnorderedElementsAre(tabs[2].get()));
}
// Tests that tracking WebContents triggers evaluation requests for matching
diff --git a/chrome/browser/extensions/api/declarative_content/default_content_predicate_evaluators.cc b/chrome/browser/extensions/api/declarative_content/default_content_predicate_evaluators.cc
index ff2af09..cce04f6 100644
--- a/chrome/browser/extensions/api/declarative_content/default_content_predicate_evaluators.cc
+++ b/chrome/browser/extensions/api/declarative_content/default_content_predicate_evaluators.cc
@@ -10,16 +10,19 @@
namespace extensions {
-ScopedVector<ContentPredicateEvaluator> CreateDefaultContentPredicateEvaluators(
+std::vector<scoped_ptr<ContentPredicateEvaluator>>
+CreateDefaultContentPredicateEvaluators(
content::BrowserContext* browser_context,
ContentPredicateEvaluator::Delegate* delegate) {
- ScopedVector<ContentPredicateEvaluator> evaluators;
- evaluators.push_back(new DeclarativeContentPageUrlConditionTracker(delegate));
- evaluators.push_back(new DeclarativeContentCssConditionTracker(delegate));
- evaluators.push_back(new DeclarativeContentIsBookmarkedConditionTracker(
- browser_context,
- delegate));
- return evaluators.Pass();
+ std::vector<scoped_ptr<ContentPredicateEvaluator>> evaluators;
+ evaluators.push_back(scoped_ptr<ContentPredicateEvaluator>(
+ new DeclarativeContentPageUrlConditionTracker(delegate)));
+ evaluators.push_back(scoped_ptr<ContentPredicateEvaluator>(
+ new DeclarativeContentCssConditionTracker(delegate)));
+ evaluators.push_back(scoped_ptr<ContentPredicateEvaluator>(
+ new DeclarativeContentIsBookmarkedConditionTracker(browser_context,
+ delegate)));
+ return evaluators;
}
} // namespace extensions
diff --git a/chrome/browser/extensions/api/declarative_content/default_content_predicate_evaluators.h b/chrome/browser/extensions/api/declarative_content/default_content_predicate_evaluators.h
index a1516a8..b7f1a90 100644
--- a/chrome/browser/extensions/api/declarative_content/default_content_predicate_evaluators.h
+++ b/chrome/browser/extensions/api/declarative_content/default_content_predicate_evaluators.h
@@ -5,7 +5,9 @@
#ifndef CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_CONTENT_DEFAULT_CONTENT_PREDICATE_EVALUATORS_H_
#define CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_CONTENT_DEFAULT_CONTENT_PREDICATE_EVALUATORS_H_
-#include "base/memory/scoped_vector.h"
+#include <vector>
+
+#include "base/memory/scoped_ptr.h"
#include "chrome/browser/extensions/api/declarative_content/content_predicate_evaluator.h"
namespace content {
@@ -14,7 +16,8 @@ class BrowserContext;
namespace extensions {
-ScopedVector<ContentPredicateEvaluator> CreateDefaultContentPredicateEvaluators(
+std::vector<scoped_ptr<ContentPredicateEvaluator>>
+CreateDefaultContentPredicateEvaluators(
content::BrowserContext* browser_context,
ContentPredicateEvaluator::Delegate* delegate);
diff --git a/components/content_settings/core/browser/content_settings_binary_value_map.cc b/components/content_settings/core/browser/content_settings_binary_value_map.cc
index 48f2412..088a941 100644
--- a/components/content_settings/core/browser/content_settings_binary_value_map.cc
+++ b/components/content_settings/core/browser/content_settings_binary_value_map.cc
@@ -39,15 +39,15 @@ BinaryValueMap::BinaryValueMap() {}
BinaryValueMap::~BinaryValueMap() {}
-RuleIterator* BinaryValueMap::GetRuleIterator(
+scoped_ptr<RuleIterator> BinaryValueMap::GetRuleIterator(
ContentSettingsType content_type,
const ResourceIdentifier& resource_identifier,
scoped_ptr<base::AutoLock> auto_lock) const {
if (resource_identifier.empty()) {
- return new RuleIteratorBinary(IsContentSettingEnabled(content_type),
- auto_lock.Pass());
+ return scoped_ptr<RuleIterator>(new RuleIteratorBinary(
+ IsContentSettingEnabled(content_type), auto_lock.Pass()));
}
- return new EmptyRuleIterator();
+ return scoped_ptr<RuleIterator>(new EmptyRuleIterator());
}
void BinaryValueMap::SetContentSettingDisabled(ContentSettingsType content_type,
diff --git a/components/content_settings/core/browser/content_settings_binary_value_map.h b/components/content_settings/core/browser/content_settings_binary_value_map.h
index 17c1e55..0eea112 100644
--- a/components/content_settings/core/browser/content_settings_binary_value_map.h
+++ b/components/content_settings/core/browser/content_settings_binary_value_map.h
@@ -26,9 +26,10 @@ class BinaryValueMap {
BinaryValueMap();
~BinaryValueMap();
- RuleIterator* GetRuleIterator(ContentSettingsType content_type,
- const ResourceIdentifier& resource_identifier,
- scoped_ptr<base::AutoLock> lock) const;
+ scoped_ptr<RuleIterator> GetRuleIterator(
+ ContentSettingsType content_type,
+ const ResourceIdentifier& resource_identifier,
+ scoped_ptr<base::AutoLock> lock) const;
void SetContentSettingDisabled(ContentSettingsType content_type,
bool disabled);
bool IsContentSettingEnabled(ContentSettingsType content_type) const;
diff --git a/components/content_settings/core/browser/content_settings_default_provider.cc b/components/content_settings/core/browser/content_settings_default_provider.cc
index c1ca4cc..90531a5 100644
--- a/components/content_settings/core/browser/content_settings_default_provider.cc
+++ b/components/content_settings/core/browser/content_settings_default_provider.cc
@@ -256,7 +256,7 @@ bool DefaultProvider::SetWebsiteSetting(
return true;
}
-RuleIterator* DefaultProvider::GetRuleIterator(
+scoped_ptr<RuleIterator> DefaultProvider::GetRuleIterator(
ContentSettingsType content_type,
const ResourceIdentifier& resource_identifier,
bool incognito) const {
@@ -264,10 +264,10 @@ RuleIterator* DefaultProvider::GetRuleIterator(
if (resource_identifier.empty()) {
auto it(default_settings_.find(content_type));
if (it != default_settings_.end())
- return new DefaultRuleIterator(it->second);
+ return scoped_ptr<RuleIterator>(new DefaultRuleIterator(it->second));
NOTREACHED();
}
- return new EmptyRuleIterator();
+ return scoped_ptr<RuleIterator>(new EmptyRuleIterator());
}
void DefaultProvider::ClearAllContentSettingsRules(
diff --git a/components/content_settings/core/browser/content_settings_default_provider.h b/components/content_settings/core/browser/content_settings_default_provider.h
index 0877c6f..0312ae8 100644
--- a/components/content_settings/core/browser/content_settings_default_provider.h
+++ b/components/content_settings/core/browser/content_settings_default_provider.h
@@ -36,9 +36,10 @@ class DefaultProvider : public ObservableProvider {
~DefaultProvider() override;
// ProviderInterface implementations.
- RuleIterator* GetRuleIterator(ContentSettingsType content_type,
- const ResourceIdentifier& resource_identifier,
- bool incognito) const override;
+ scoped_ptr<RuleIterator> GetRuleIterator(
+ ContentSettingsType content_type,
+ const ResourceIdentifier& resource_identifier,
+ bool incognito) const override;
bool SetWebsiteSetting(const ContentSettingsPattern& primary_pattern,
const ContentSettingsPattern& secondary_pattern,
diff --git a/components/content_settings/core/browser/content_settings_mock_provider.cc b/components/content_settings/core/browser/content_settings_mock_provider.cc
index fb79057..57cd64b 100644
--- a/components/content_settings/core/browser/content_settings_mock_provider.cc
+++ b/components/content_settings/core/browser/content_settings_mock_provider.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include "components/content_settings/core/browser/content_settings_mock_provider.h"
+#include "components/content_settings/core/browser/content_settings_rule.h"
namespace content_settings {
@@ -15,11 +16,11 @@ MockProvider::MockProvider(bool read_only)
MockProvider::~MockProvider() {}
-RuleIterator* MockProvider::GetRuleIterator(
+scoped_ptr<RuleIterator> MockProvider::GetRuleIterator(
ContentSettingsType content_type,
const ResourceIdentifier& resource_identifier,
bool incognito) const {
- return value_map_.GetRuleIterator(content_type, resource_identifier, NULL);
+ return value_map_.GetRuleIterator(content_type, resource_identifier, nullptr);
}
bool MockProvider::SetWebsiteSetting(
diff --git a/components/content_settings/core/browser/content_settings_mock_provider.h b/components/content_settings/core/browser/content_settings_mock_provider.h
index 7d16b9b0..cd3d19b 100644
--- a/components/content_settings/core/browser/content_settings_mock_provider.h
+++ b/components/content_settings/core/browser/content_settings_mock_provider.h
@@ -22,9 +22,10 @@ class MockProvider : public ObservableProvider {
explicit MockProvider(bool read_only);
~MockProvider() override;
- RuleIterator* GetRuleIterator(ContentSettingsType content_type,
- const ResourceIdentifier& resource_identifier,
- bool incognito) const override;
+ scoped_ptr<RuleIterator> GetRuleIterator(
+ ContentSettingsType content_type,
+ const ResourceIdentifier& resource_identifier,
+ bool incognito) const override;
// The MockProvider is only able to store one content setting. So every time
// this method is called the previously set content settings is overwritten.
diff --git a/components/content_settings/core/browser/content_settings_origin_identifier_value_map.cc b/components/content_settings/core/browser/content_settings_origin_identifier_value_map.cc
index 0c3ab90..363f605f 100644
--- a/components/content_settings/core/browser/content_settings_origin_identifier_value_map.cc
+++ b/components/content_settings/core/browser/content_settings_origin_identifier_value_map.cc
@@ -83,7 +83,7 @@ bool OriginIdentifierValueMap::PatternPair::operator<(
std::tie(other.primary_pattern, other.secondary_pattern);
}
-RuleIterator* OriginIdentifierValueMap::GetRuleIterator(
+scoped_ptr<RuleIterator> OriginIdentifierValueMap::GetRuleIterator(
ContentSettingsType content_type,
const ResourceIdentifier& resource_identifier,
base::Lock* lock) const {
@@ -97,10 +97,9 @@ RuleIterator* OriginIdentifierValueMap::GetRuleIterator(
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());
+ return scoped_ptr<RuleIterator>(new EmptyRuleIterator());
+ return scoped_ptr<RuleIterator>(new RuleIteratorImpl(
+ it->second.begin(), it->second.end(), auto_lock.release()));
}
size_t OriginIdentifierValueMap::size() const {
diff --git a/components/content_settings/core/browser/content_settings_origin_identifier_value_map.h b/components/content_settings/core/browser/content_settings_origin_identifier_value_map.h
index 09cac65..b0f3d83 100644
--- a/components/content_settings/core/browser/content_settings_origin_identifier_value_map.h
+++ b/components/content_settings/core/browser/content_settings_origin_identifier_value_map.h
@@ -9,6 +9,7 @@
#include <string>
#include "base/memory/linked_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "components/content_settings/core/common/content_settings.h"
class GURL;
@@ -66,14 +67,14 @@ class OriginIdentifierValueMap {
size_t size() const;
// Returns an iterator for reading the rules for |content_type| and
- // |resource_identifier|. The caller takes the ownership of the iterator. It
- // is not allowed to call functions of |OriginIdentifierValueMap| (also
- // |GetRuleIterator|) before the iterator has been destroyed. If |lock| is
- // non-NULL, the returned |RuleIterator| locks it and releases it when it is
- // destroyed.
- RuleIterator* GetRuleIterator(ContentSettingsType content_type,
- const ResourceIdentifier& resource_identifier,
- base::Lock* lock) const;
+ // |resource_identifier|. It is not allowed to call functions of
+ // |OriginIdentifierValueMap| (also |GetRuleIterator|) before the iterator
+ // has been destroyed. If |lock| is non-NULL, the returned |RuleIterator|
+ // locks it and releases it when it is destroyed.
+ scoped_ptr<RuleIterator> GetRuleIterator(
+ ContentSettingsType content_type,
+ const ResourceIdentifier& resource_identifier,
+ base::Lock* lock) const;
OriginIdentifierValueMap();
~OriginIdentifierValueMap();
diff --git a/components/content_settings/core/browser/content_settings_policy_provider.cc b/components/content_settings/core/browser/content_settings_policy_provider.cc
index df1becd..3e82333 100644
--- a/components/content_settings/core/browser/content_settings_policy_provider.cc
+++ b/components/content_settings/core/browser/content_settings_policy_provider.cc
@@ -5,7 +5,6 @@
#include "components/content_settings/core/browser/content_settings_policy_provider.h"
#include <string>
-#include <vector>
#include "base/bind.h"
#include "base/json/json_reader.h"
@@ -182,7 +181,7 @@ PolicyProvider::~PolicyProvider() {
DCHECK(!prefs_);
}
-RuleIterator* PolicyProvider::GetRuleIterator(
+scoped_ptr<RuleIterator> PolicyProvider::GetRuleIterator(
ContentSettingsType content_type,
const ResourceIdentifier& resource_identifier,
bool incognito) const {
diff --git a/components/content_settings/core/browser/content_settings_policy_provider.h b/components/content_settings/core/browser/content_settings_policy_provider.h
index a8153c3..dde632d 100644
--- a/components/content_settings/core/browser/content_settings_policy_provider.h
+++ b/components/content_settings/core/browser/content_settings_policy_provider.h
@@ -31,9 +31,10 @@ class PolicyProvider : public ObservableProvider {
static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
// ProviderInterface implementations.
- RuleIterator* GetRuleIterator(ContentSettingsType content_type,
- const ResourceIdentifier& resource_identifier,
- bool incognito) const override;
+ scoped_ptr<RuleIterator> GetRuleIterator(
+ ContentSettingsType content_type,
+ const ResourceIdentifier& resource_identifier,
+ bool incognito) const override;
bool SetWebsiteSetting(const ContentSettingsPattern& primary_pattern,
const ContentSettingsPattern& secondary_pattern,
diff --git a/components/content_settings/core/browser/content_settings_pref.cc b/components/content_settings/core/browser/content_settings_pref.cc
index c79c973..762cb62 100644
--- a/components/content_settings/core/browser/content_settings_pref.cc
+++ b/components/content_settings/core/browser/content_settings_pref.cc
@@ -82,7 +82,7 @@ ContentSettingsPref::ContentSettingsPref(
ContentSettingsPref::~ContentSettingsPref() {
}
-RuleIterator* ContentSettingsPref::GetRuleIterator(
+scoped_ptr<RuleIterator> ContentSettingsPref::GetRuleIterator(
const ResourceIdentifier& resource_identifier,
bool incognito) const {
if (incognito)
diff --git a/components/content_settings/core/browser/content_settings_pref.h b/components/content_settings/core/browser/content_settings_pref.h
index 5b9e5bb..2f0aea7 100644
--- a/components/content_settings/core/browser/content_settings_pref.h
+++ b/components/content_settings/core/browser/content_settings_pref.h
@@ -48,8 +48,9 @@ class ContentSettingsPref {
NotifyObserversCallback notify_callback);
~ContentSettingsPref();
- RuleIterator* GetRuleIterator(const ResourceIdentifier& resource_identifier,
- bool incognito) const;
+ scoped_ptr<RuleIterator> GetRuleIterator(
+ const ResourceIdentifier& resource_identifier,
+ bool incognito) const;
bool SetWebsiteSetting(const ContentSettingsPattern& primary_pattern,
const ContentSettingsPattern& secondary_pattern,
diff --git a/components/content_settings/core/browser/content_settings_pref_provider.cc b/components/content_settings/core/browser/content_settings_pref_provider.cc
index 92aa5d22..2bbc1cf 100644
--- a/components/content_settings/core/browser/content_settings_pref_provider.cc
+++ b/components/content_settings/core/browser/content_settings_pref_provider.cc
@@ -119,7 +119,7 @@ PrefProvider::~PrefProvider() {
DCHECK(!prefs_);
}
-RuleIterator* PrefProvider::GetRuleIterator(
+scoped_ptr<RuleIterator> PrefProvider::GetRuleIterator(
ContentSettingsType content_type,
const ResourceIdentifier& resource_identifier,
bool incognito) const {
diff --git a/components/content_settings/core/browser/content_settings_pref_provider.h b/components/content_settings/core/browser/content_settings_pref_provider.h
index 8554bcf..d35f3ea 100644
--- a/components/content_settings/core/browser/content_settings_pref_provider.h
+++ b/components/content_settings/core/browser/content_settings_pref_provider.h
@@ -41,9 +41,10 @@ class PrefProvider : public ObservableProvider {
~PrefProvider() override;
// ProviderInterface implementations.
- RuleIterator* GetRuleIterator(ContentSettingsType content_type,
- const ResourceIdentifier& resource_identifier,
- bool incognito) const override;
+ scoped_ptr<RuleIterator> GetRuleIterator(
+ ContentSettingsType content_type,
+ const ResourceIdentifier& resource_identifier,
+ bool incognito) const override;
bool SetWebsiteSetting(const ContentSettingsPattern& primary_pattern,
const ContentSettingsPattern& secondary_pattern,
diff --git a/components/content_settings/core/browser/content_settings_provider.h b/components/content_settings/core/browser/content_settings_provider.h
index c3e63e7..e2bfcc6 100644
--- a/components/content_settings/core/browser/content_settings_provider.h
+++ b/components/content_settings/core/browser/content_settings_provider.h
@@ -9,7 +9,9 @@
#include <string>
+#include "base/memory/scoped_ptr.h"
#include "base/values.h"
+#include "components/content_settings/core/browser/content_settings_rule.h"
#include "components/content_settings/core/common/content_settings.h"
class ContentSettingsPattern;
@@ -27,11 +29,10 @@ class ProviderInterface {
// provider. If |incognito| is true, the iterator returns only the content
// settings which are applicable to the incognito mode and differ from the
// normal mode. Otherwise, it returns the content settings for the normal
- // mode. The caller takes the ownership of the returned |RuleIterator|. It is
- // not allowed to call other |ProviderInterface| functions (including
- // |GetRuleIterator|) for the same provider until the |RuleIterator| is
- // destroyed.
- virtual RuleIterator* GetRuleIterator(
+ // mode. It is not allowed to call other |ProviderInterface| functions
+ // (including |GetRuleIterator|) for the same provider until the
+ // |RuleIterator| is destroyed.
+ virtual scoped_ptr<RuleIterator> GetRuleIterator(
ContentSettingsType content_type,
const ResourceIdentifier& resource_identifier,
bool incognito) const = 0;
diff --git a/components/content_settings/core/browser/content_settings_rule.cc b/components/content_settings/core/browser/content_settings_rule.cc
index 9549c1c..470c563 100644
--- a/components/content_settings/core/browser/content_settings_rule.cc
+++ b/components/content_settings/core/browser/content_settings_rule.cc
@@ -35,12 +35,10 @@ Rule EmptyRuleIterator::Next() {
}
ConcatenationIterator::ConcatenationIterator(
- ScopedVector<RuleIterator>* iterators,
+ std::vector<scoped_ptr<RuleIterator>> iterators,
base::AutoLock* auto_lock)
- : auto_lock_(auto_lock) {
- iterators_.swap(*iterators);
-
- ScopedVector<RuleIterator>::iterator it = iterators_.begin();
+ : iterators_(std::move(iterators)), auto_lock_(auto_lock) {
+ auto it = iterators_.begin();
while (it != iterators_.end()) {
if (!(*it)->HasNext())
it = iterators_.erase(it);
@@ -56,8 +54,7 @@ bool ConcatenationIterator::HasNext() const {
}
Rule ConcatenationIterator::Next() {
- ScopedVector<RuleIterator>::iterator current_iterator =
- iterators_.begin();
+ auto current_iterator = iterators_.begin();
DCHECK(current_iterator != iterators_.end());
DCHECK((*current_iterator)->HasNext());
const Rule& to_return = (*current_iterator)->Next();
diff --git a/components/content_settings/core/browser/content_settings_rule.h b/components/content_settings/core/browser/content_settings_rule.h
index 6305c8c..9c4d2d5 100644
--- a/components/content_settings/core/browser/content_settings_rule.h
+++ b/components/content_settings/core/browser/content_settings_rule.h
@@ -7,10 +7,11 @@
#ifndef COMPONENTS_CONTENT_SETTINGS_CORE_BROWSER_CONTENT_SETTINGS_RULE_H_
#define COMPONENTS_CONTENT_SETTINGS_CORE_BROWSER_CONTENT_SETTINGS_RULE_H_
+#include <vector>
+
#include "base/compiler_specific.h"
#include "base/memory/linked_ptr.h"
#include "base/memory/scoped_ptr.h"
-#include "base/memory/scoped_vector.h"
#include "base/synchronization/lock.h"
#include "base/values.h"
#include "components/content_settings/core/common/content_settings_pattern.h"
@@ -48,14 +49,14 @@ class ConcatenationIterator : public RuleIterator {
public:
// ConcatenationIterator takes ownership of the pointers in the |iterators|
// list and |auto_lock|. |auto_lock| can be NULL if no locking is needed.
- ConcatenationIterator(ScopedVector<RuleIterator>* iterators,
+ ConcatenationIterator(std::vector<scoped_ptr<RuleIterator>> iterators,
base::AutoLock* auto_lock);
~ConcatenationIterator() override;
bool HasNext() const override;
Rule Next() override;
private:
- ScopedVector<RuleIterator> iterators_;
+ std::vector<scoped_ptr<RuleIterator>> iterators_;
scoped_ptr<base::AutoLock> auto_lock_;
};
diff --git a/components/content_settings/core/browser/content_settings_rule_unittest.cc b/components/content_settings/core/browser/content_settings_rule_unittest.cc
index e588596..8796d03 100644
--- a/components/content_settings/core/browser/content_settings_rule_unittest.cc
+++ b/components/content_settings/core/browser/content_settings_rule_unittest.cc
@@ -3,6 +3,8 @@
// found in the LICENSE file.
#include <list>
+#include <utility>
+#include <vector>
#include "components/content_settings/core/browser/content_settings_rule.h"
#include "components/content_settings/core/common/content_settings_pattern.h"
@@ -52,10 +54,10 @@ TEST(RuleTest, ConcatenationIterator) {
ContentSettingsPattern::Wildcard(),
new base::FundamentalValue(0)));
- ScopedVector<RuleIterator> iterators;
- iterators.push_back(new ListIterator(rules1));
- iterators.push_back(new ListIterator(rules2));
- ConcatenationIterator concatenation_iterator(&iterators, NULL);
+ std::vector<scoped_ptr<RuleIterator>> iterators;
+ iterators.push_back(scoped_ptr<RuleIterator>(new ListIterator(rules1)));
+ iterators.push_back(scoped_ptr<RuleIterator>(new ListIterator(rules2)));
+ ConcatenationIterator concatenation_iterator(std::move(iterators), nullptr);
Rule rule;
ASSERT_TRUE(concatenation_iterator.HasNext());