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