Stop manually calling AddRef/Release for AutocompleteController::providers_

No need to manually manipulate the ref count when scoped_refptr can be used.

BUG=None

Review URL: https://codereview.chromium.org/376863003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@281987 0039d316-1c4b-4281-b951-d872f2087c98
parent 18a3be03
......@@ -210,9 +210,6 @@ AutocompleteController::AutocompleteController(
if (zero_suggest_provider_)
providers_.push_back(zero_suggest_provider_);
}
for (ACProviders::iterator i(providers_.begin()); i != providers_.end(); ++i)
(*i)->AddRef();
}
AutocompleteController::~AutocompleteController() {
......@@ -224,11 +221,6 @@ AutocompleteController::~AutocompleteController() {
// shutdown too, so we don't ask Stop() to clear |result_| (and notify).
result_.Reset(); // Not really necessary.
Stop(false);
for (ACProviders::iterator i(providers_.begin()); i != providers_.end(); ++i)
(*i)->Release();
providers_.clear(); // Not really necessary.
}
void AutocompleteController::Start(const AutocompleteInput& input) {
......@@ -254,8 +246,7 @@ void AutocompleteController::Start(const AutocompleteInput& input) {
// Start the new query.
in_start_ = true;
base::TimeTicks start_time = base::TimeTicks::Now();
for (ACProviders::iterator i(providers_.begin()); i != providers_.end();
++i) {
for (Providers::iterator i(providers_.begin()); i != providers_.end(); ++i) {
// TODO(mpearson): Remove timing code once bugs 178705 / 237703 / 168933
// are resolved.
base::TimeTicks provider_start_time = base::TimeTicks::Now();
......@@ -308,7 +299,7 @@ void AutocompleteController::Start(const AutocompleteInput& input) {
}
void AutocompleteController::Stop(bool clear_result) {
for (ACProviders::const_iterator i(providers_.begin()); i != providers_.end();
for (Providers::const_iterator i(providers_.begin()); i != providers_.end();
++i) {
(*i)->Stop(clear_result);
}
......@@ -333,8 +324,7 @@ void AutocompleteController::StartZeroSuggest(const AutocompleteInput& input) {
// Call Start() on all prefix-based providers with an INVALID
// AutocompleteInput to clear out cached |matches_|, which ensures that
// they aren't used with zero suggest.
for (ACProviders::iterator i(providers_.begin()); i != providers_.end();
++i) {
for (Providers::iterator i(providers_.begin()); i != providers_.end(); ++i) {
if (*i == zero_suggest_provider_)
(*i)->Start(input, false);
else
......@@ -383,7 +373,7 @@ void AutocompleteController::OnProviderUpdate(bool updated_matches) {
void AutocompleteController::AddProvidersInfo(
ProvidersInfo* provider_info) const {
provider_info->clear();
for (ACProviders::const_iterator i(providers_.begin()); i != providers_.end();
for (Providers::const_iterator i(providers_.begin()); i != providers_.end();
++i) {
// Add per-provider info, if any.
(*i)->AddProviderInfo(provider_info);
......@@ -394,7 +384,7 @@ void AutocompleteController::AddProvidersInfo(
}
void AutocompleteController::ResetSession() {
for (ACProviders::const_iterator i(providers_.begin()); i != providers_.end();
for (Providers::const_iterator i(providers_.begin()); i != providers_.end();
++i)
(*i)->ResetSession();
}
......@@ -446,7 +436,7 @@ void AutocompleteController::UpdateResult(
AutocompleteResult last_result;
last_result.Swap(&result_);
for (ACProviders::const_iterator i(providers_.begin());
for (Providers::const_iterator i(providers_.begin());
i != providers_.end(); ++i)
result_.AppendMatches((*i)->matches());
......@@ -626,7 +616,7 @@ void AutocompleteController::NotifyChanged(bool notify_default_match) {
}
void AutocompleteController::CheckIfDone() {
for (ACProviders::const_iterator i(providers_.begin()); i != providers_.end();
for (Providers::const_iterator i(providers_.begin()); i != providers_.end();
++i) {
if (!(*i)->done()) {
done_ = false;
......
......@@ -8,6 +8,7 @@
#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "base/gtest_prod_util.h"
#include "base/memory/ref_counted.h"
#include "base/strings/string16.h"
#include "base/time/time.h"
#include "base/timer/timer.h"
......@@ -46,6 +47,8 @@ class ZeroSuggestProvider;
// matches from a series of providers into one AutocompleteResult.
class AutocompleteController : public AutocompleteProviderListener {
public:
typedef std::vector<scoped_refptr<AutocompleteProvider> > Providers;
// |provider_types| is a bitmap containing AutocompleteProvider::Type values
// that will (potentially, depending on platform, flags, etc.) be
// instantiated. |template_url_service| is used to create URLs from the
......@@ -129,7 +132,7 @@ class AutocompleteController : public AutocompleteProviderListener {
const AutocompleteResult& result() const { return result_; }
bool done() const { return done_; }
const ACProviders* providers() const { return &providers_; }
const Providers& providers() const { return providers_; }
const base::TimeTicks& last_time_default_match_changed() const {
return last_time_default_match_changed_;
......@@ -191,7 +194,7 @@ class AutocompleteController : public AutocompleteProviderListener {
AutocompleteControllerDelegate* delegate_;
// A list of all providers.
ACProviders providers_;
Providers providers_;
HistoryURLProvider* history_url_provider_;
......
......@@ -258,6 +258,4 @@ class AutocompleteProvider
DISALLOW_COPY_AND_ASSIGN(AutocompleteProvider);
};
typedef std::vector<AutocompleteProvider*> ACProviders;
#endif // CHROME_BROWSER_AUTOCOMPLETE_AUTOCOMPLETE_PROVIDER_H_
......@@ -253,7 +253,7 @@ void AutocompleteProviderTest::ResetControllerWithTestProviders(
RegisterTemplateURL(base::ASCIIToUTF16(kTestTemplateURLKeyword),
"http://aqs/{searchTerms}/{google:assistedQueryStats}");
ACProviders providers;
AutocompleteController::Providers providers;
// Construct two new providers, with either the same or different prefixes.
TestProvider* provider1 = new TestProvider(
......@@ -261,7 +261,6 @@ void AutocompleteProviderTest::ResetControllerWithTestProviders(
base::ASCIIToUTF16("http://a"),
&profile_,
base::ASCIIToUTF16(kTestTemplateURLKeyword));
provider1->AddRef();
providers.push_back(provider1);
TestProvider* provider2 = new TestProvider(
......@@ -270,7 +269,6 @@ void AutocompleteProviderTest::ResetControllerWithTestProviders(
: base::ASCIIToUTF16("http://b"),
&profile_,
base::string16());
provider2->AddRef();
providers.push_back(provider2);
// Reset the controller to contain our new providers.
......
......@@ -19,7 +19,7 @@ class OmniboxControllerTest : public testing::Test {
void AssertProviders(int expected_providers);
PrefService* GetPrefs() { return profile_.GetPrefs(); }
const ACProviders* GetAutocompleteProviders() const {
const AutocompleteController::Providers& GetAutocompleteProviders() const {
return omnibox_controller_->autocomplete_controller()->providers();
}
......@@ -43,11 +43,12 @@ void OmniboxControllerTest::CreateController() {
// Checks that the list of autocomplete providers used by the OmniboxController
// matches the one in the |expected_providers| bit field.
void OmniboxControllerTest::AssertProviders(int expected_providers) {
const ACProviders* providers = GetAutocompleteProviders();
const AutocompleteController::Providers& providers =
GetAutocompleteProviders();
for (size_t i = 0; i < providers->size(); ++i) {
for (size_t i = 0; i < providers.size(); ++i) {
// Ensure this is a provider we wanted.
int type = providers->at(i)->type();
int type = providers[i]->type();
ASSERT_TRUE(expected_providers & type);
// Remove it from expectations so we fail if it's there twice.
......@@ -62,9 +63,10 @@ TEST_F(OmniboxControllerTest, CheckDefaultAutocompleteProviders) {
CreateController();
// First collect the basic providers.
int observed_providers = 0;
const ACProviders* providers = GetAutocompleteProviders();
for (size_t i = 0; i < providers->size(); ++i)
observed_providers |= providers->at(i)->type();
const AutocompleteController::Providers& providers =
GetAutocompleteProviders();
for (size_t i = 0; i < providers.size(); ++i)
observed_providers |= providers[i]->type();
// Ensure we have at least one provider.
ASSERT_NE(0, observed_providers);
......
......@@ -94,10 +94,10 @@ class TypeConverter<AutocompleteMatchMojoPtr, AutocompleteMatch> {
template <>
class TypeConverter<AutocompleteResultsForProviderMojoPtr,
AutocompleteProvider*> {
scoped_refptr<AutocompleteProvider> > {
public:
static AutocompleteResultsForProviderMojoPtr ConvertFrom(
const AutocompleteProvider* input) {
const scoped_refptr<AutocompleteProvider>& input) {
AutocompleteResultsForProviderMojoPtr result(
AutocompleteResultsForProviderMojo::New());
result->provider_name = input->GetName();
......@@ -140,7 +140,7 @@ void OmniboxUIHandler::OnResultChanged(bool default_match_changed) {
}
result->results_by_provider =
mojo::Array<AutocompleteResultsForProviderMojoPtr>::From(
*controller_->providers());
controller_->providers());
client()->HandleNewAutocompleteResult(result.Pass());
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment