Remove non-const version of GetDefaultSearchProvider() and make all callers call the const version

BUG=672364

TBR=jam@chromium.org

Review-Url: https://codereview.chromium.org/2816383002
Cr-Commit-Position: refs/heads/master@{#466554}
diff --git a/chrome/browser/android/contextualsearch/contextual_search_delegate.cc b/chrome/browser/android/contextualsearch/contextual_search_delegate.cc
index eb1925f..525d8d2 100644
--- a/chrome/browser/android/contextualsearch/contextual_search_delegate.cc
+++ b/chrome/browser/android/contextualsearch/contextual_search_delegate.cc
@@ -245,7 +245,8 @@
     return std::string();
   }
 
-  TemplateURL* template_url = template_url_service_->GetDefaultSearchProvider();
+  const TemplateURL* template_url =
+      template_url_service_->GetDefaultSearchProvider();
 
   TemplateURLRef::SearchTermsArgs search_terms_args =
       TemplateURLRef::SearchTermsArgs(base::string16());
@@ -373,7 +374,7 @@
     return false;
 
   // Ensure that the default search provider is Google.
-  TemplateURL* default_search_provider =
+  const TemplateURL* default_search_provider =
       template_url_service->GetDefaultSearchProvider();
   bool is_default_search_provider_google =
       default_search_provider &&
diff --git a/chrome/browser/android/locale/special_locale_handler.cc b/chrome/browser/android/locale/special_locale_handler.cc
index e1f55b6..8f26c935 100644
--- a/chrome/browser/android/locale/special_locale_handler.cc
+++ b/chrome/browser/android/locale/special_locale_handler.cc
@@ -100,7 +100,8 @@
     JNIEnv* env,
     const JavaParamRef<jobject>& obj) {
   // If the user has changed their default search provider, no-op.
-  TemplateURL* current_dsp = template_url_service_->GetDefaultSearchProvider();
+  const TemplateURL* current_dsp =
+      template_url_service_->GetDefaultSearchProvider();
   if (!current_dsp ||
       current_dsp->prepopulate_id() != TemplateURLPrepopulateData::google.id) {
     return;
@@ -117,7 +118,8 @@
     JNIEnv* env,
     const JavaParamRef<jobject>& obj) {
   // If the user has changed their default search provider, no-op.
-  TemplateURL* current_dsp = template_url_service_->GetDefaultSearchProvider();
+  const TemplateURL* current_dsp =
+      template_url_service_->GetDefaultSearchProvider();
   if (!current_dsp ||
       current_dsp->prepopulate_id() != GetDesignatedSearchEngine()) {
     return;
diff --git a/chrome/browser/android/logo_service.cc b/chrome/browser/android/logo_service.cc
index 66e01099..eea93ac2 100644
--- a/chrome/browser/android/logo_service.cc
+++ b/chrome/browser/android/logo_service.cc
@@ -109,7 +109,8 @@
   if (!template_url_service)
     return;
 
-  TemplateURL* template_url = template_url_service->GetDefaultSearchProvider();
+  const TemplateURL* template_url =
+      template_url_service->GetDefaultSearchProvider();
   if (!template_url || !template_url->url_ref().HasGoogleBaseURLs(
           template_url_service->search_terms_data()))
     return;
diff --git a/chrome/browser/extensions/api/settings_overrides/settings_overrides_browsertest.cc b/chrome/browser/extensions/api/settings_overrides/settings_overrides_browsertest.cc
index 73734ab..a5ff980 100644
--- a/chrome/browser/extensions/api/settings_overrides/settings_overrides_browsertest.cc
+++ b/chrome/browser/extensions/api/settings_overrides/settings_overrides_browsertest.cc
@@ -116,7 +116,7 @@
       TemplateURLServiceFactory::GetForProfile(profile());
   ASSERT_TRUE(url_service);
   EXPECT_TRUE(VerifyTemplateURLServiceLoad(url_service));
-  TemplateURL* default_provider = url_service->GetDefaultSearchProvider();
+  const TemplateURL* default_provider = url_service->GetDefaultSearchProvider();
   ASSERT_TRUE(default_provider);
   EXPECT_EQ(TemplateURL::NORMAL, default_provider->type());
 
@@ -124,7 +124,7 @@
       test_data_dir_.AppendASCII("settings_override"), kFlagEnableFileAccess,
       "10");
   ASSERT_TRUE(extension);
-  TemplateURL* current_dse = url_service->GetDefaultSearchProvider();
+  const TemplateURL* current_dse = url_service->GetDefaultSearchProvider();
   EXPECT_EQ(TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION, current_dse->type());
 
   std::unique_ptr<TemplateURLData> extension_dse =
@@ -143,7 +143,7 @@
       TemplateURLServiceFactory::GetForProfile(profile());
   ASSERT_TRUE(url_service);
   EXPECT_TRUE(VerifyTemplateURLServiceLoad(url_service));
-  TemplateURL* default_provider = url_service->GetDefaultSearchProvider();
+  const TemplateURL* default_provider = url_service->GetDefaultSearchProvider();
   ASSERT_TRUE(default_provider);
   // Check that default provider is normal before extension is
   // installed and loaded.
@@ -193,7 +193,7 @@
   ASSERT_TRUE(url_service);
   EXPECT_TRUE(VerifyTemplateURLServiceLoad(url_service));
   EXPECT_TRUE(url_service->IsExtensionControlledDefaultSearch());
-  TemplateURL* default_provider = url_service->GetDefaultSearchProvider();
+  const TemplateURL* default_provider = url_service->GetDefaultSearchProvider();
   ASSERT_TRUE(default_provider);
   ExpectSimilar(extension_dse.get(), &default_provider->data());
 }
@@ -212,7 +212,7 @@
       test_data_dir_.AppendASCII("settings_override"), kFlagEnableFileAccess,
       "10");
   ASSERT_TRUE(extension);
-  TemplateURL* current_dse = url_service->GetDefaultSearchProvider();
+  const TemplateURL* current_dse = url_service->GetDefaultSearchProvider();
   EXPECT_EQ(TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION, current_dse->type());
   EXPECT_TRUE(url_service->IsExtensionControlledDefaultSearch());
 
diff --git a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
index 55c77226..2123d4f 100644
--- a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
+++ b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
@@ -311,7 +311,7 @@
         TemplateURLServiceFactory::GetForProfile(profile);
     if (!template_url_service)
       return;
-    TemplateURL* default_provider =
+    const TemplateURL* default_provider =
         template_url_service->GetDefaultSearchProvider();
     if (!default_provider)
       return;
diff --git a/chrome/browser/policy/policy_browsertest.cc b/chrome/browser/policy/policy_browsertest.cc
index 638587f..021efe75 100644
--- a/chrome/browser/policy/policy_browsertest.cc
+++ b/chrome/browser/policy/policy_browsertest.cc
@@ -973,7 +973,7 @@
   TemplateURLService* service = TemplateURLServiceFactory::GetForProfile(
       browser()->profile());
   search_test_utils::WaitForTemplateURLServiceToLoad(service);
-  TemplateURL* default_search = service->GetDefaultSearchProvider();
+  const TemplateURL* default_search = service->GetDefaultSearchProvider();
   ASSERT_TRUE(default_search);
   EXPECT_NE(kKeyword, default_search->keyword());
   EXPECT_NE(kSearchURL, default_search->url());
diff --git a/chrome/browser/profile_resetter/profile_resetter_unittest.cc b/chrome/browser/profile_resetter/profile_resetter_unittest.cc
index 88de55f3..b8310f67 100644
--- a/chrome/browser/profile_resetter/profile_resetter_unittest.cc
+++ b/chrome/browser/profile_resetter/profile_resetter_unittest.cc
@@ -438,7 +438,7 @@
 
   TemplateURLService* model =
       TemplateURLServiceFactory::GetForProfile(profile());
-  TemplateURL* default_engine = model->GetDefaultSearchProvider();
+  const TemplateURL* default_engine = model->GetDefaultSearchProvider();
   ASSERT_NE(static_cast<TemplateURL*>(NULL), default_engine);
   EXPECT_EQ(base::ASCIIToUTF16("first"), default_engine->short_name());
   EXPECT_EQ(base::ASCIIToUTF16("firstkey"), default_engine->keyword());
diff --git a/chrome/browser/profile_resetter/resettable_settings_snapshot.cc b/chrome/browser/profile_resetter/resettable_settings_snapshot.cc
index c0ca58a..81e38701 100644
--- a/chrome/browser/profile_resetter/resettable_settings_snapshot.cc
+++ b/chrome/browser/profile_resetter/resettable_settings_snapshot.cc
@@ -64,7 +64,7 @@
   TemplateURLService* service =
       TemplateURLServiceFactory::GetForProfile(profile);
   DCHECK(service);
-  TemplateURL* dse = service->GetDefaultSearchProvider();
+  const TemplateURL* dse = service->GetDefaultSearchProvider();
   if (dse)
     dse_url_ = dse->url();
 
@@ -292,7 +292,7 @@
   TemplateURLService* service =
       TemplateURLServiceFactory::GetForProfile(profile);
   DCHECK(service);
-  TemplateURL* dse = service->GetDefaultSearchProvider();
+  const TemplateURL* dse = service->GetDefaultSearchProvider();
   if (dse) {
     AddPair(list.get(),
             l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_DSE),
diff --git a/chrome/browser/search/search.cc b/chrome/browser/search/search.cc
index 3c64c75..a3d0a8e3 100644
--- a/chrome/browser/search/search.cc
+++ b/chrome/browser/search/search.cc
@@ -85,7 +85,7 @@
   "UseGoogleLocalNtp", base::FEATURE_DISABLED_BY_DEFAULT
 };
 
-TemplateURL* GetDefaultSearchProviderTemplateURL(Profile* profile) {
+const TemplateURL* GetDefaultSearchProviderTemplateURL(Profile* profile) {
   if (profile) {
     TemplateURLService* template_url_service =
         TemplateURLServiceFactory::GetForProfile(profile);
@@ -141,7 +141,8 @@
   if (new_tab_url.is_valid() && MatchesOriginAndPath(url, new_tab_url))
     return true;
 
-  TemplateURL* template_url = GetDefaultSearchProviderTemplateURL(profile);
+  const TemplateURL* template_url =
+      GetDefaultSearchProviderTemplateURL(profile);
   if (!template_url)
     return false;
 
@@ -218,7 +219,8 @@
     if (command_line->HasSwitch(switches::kForceLocalNtp))
       return NewTabURLDetails(local_url, NEW_TAB_URL_VALID);
 
-    TemplateURL* template_url = GetDefaultSearchProviderTemplateURL(profile);
+    const TemplateURL* template_url =
+        GetDefaultSearchProviderTemplateURL(profile);
     if (!profile || !template_url)
       return NewTabURLDetails(local_url, NEW_TAB_URL_BAD);
 
@@ -261,7 +263,8 @@
     return prerenderer->get_last_query();
   }
 
-  TemplateURL* template_url = GetDefaultSearchProviderTemplateURL(profile);
+  const TemplateURL* template_url =
+      GetDefaultSearchProviderTemplateURL(profile);
   base::string16 search_terms;
   if (template_url)
     template_url->ExtractSearchTermsFromURL(
@@ -350,7 +353,8 @@
   if (!IsInstantExtendedAPIEnabled() || !IsSuggestPrefEnabled(profile))
     return GURL();
 
-  TemplateURL* template_url = GetDefaultSearchProviderTemplateURL(profile);
+  const TemplateURL* template_url =
+      GetDefaultSearchProviderTemplateURL(profile);
   if (!template_url)
     return GURL();
 
@@ -380,7 +384,8 @@
 // Returns URLs associated with the default search engine for |profile|.
 std::vector<GURL> GetSearchURLs(Profile* profile) {
   std::vector<GURL> result;
-  TemplateURL* template_url = GetDefaultSearchProviderTemplateURL(profile);
+  const TemplateURL* template_url =
+      GetDefaultSearchProviderTemplateURL(profile);
   if (!template_url)
     return result;
   for (const TemplateURLRef& ref : template_url->url_refs()) {
diff --git a/chrome/browser/search_engines/template_url_service_android.cc b/chrome/browser/search_engines/template_url_service_android.cc
index a5b5b39..ce0b77e5 100644
--- a/chrome/browser/search_engines/template_url_service_android.cc
+++ b/chrome/browser/search_engines/template_url_service_android.cc
@@ -70,7 +70,7 @@
 jint TemplateUrlServiceAndroid::GetDefaultSearchProviderIndex(
     JNIEnv* env,
     const base::android::JavaParamRef<jobject>& obj) const {
-  TemplateURL* default_search_provider =
+  const TemplateURL* default_search_provider =
       template_url_service_->GetDefaultSearchProvider();
   auto it = std::find(template_urls_.begin(), template_urls_.end(),
                       default_search_provider);
@@ -111,7 +111,7 @@
 jboolean TemplateUrlServiceAndroid::IsDefaultSearchEngineGoogle(
     JNIEnv* env,
     const JavaParamRef<jobject>& obj) {
-  TemplateURL* default_search_provider =
+  const TemplateURL* default_search_provider =
       template_url_service_->GetDefaultSearchProvider();
   return default_search_provider &&
       default_search_provider->url_ref().HasGoogleBaseURLs(
@@ -158,7 +158,7 @@
             });
 
   // Place any user-selected default engine next.
-  TemplateURL* dsp = template_url_service_->GetDefaultSearchProvider();
+  const TemplateURL* dsp = template_url_service_->GetDefaultSearchProvider();
   it = std::partition(it, template_urls_.end(),
                       [dsp](const TemplateURL* t_url) { return t_url == dsp; });
 
@@ -238,7 +238,7 @@
     const JavaParamRef<jobject>& obj,
     const JavaParamRef<jstring>& jquery,
     const JavaParamRef<jstring>& jcurrent_url) {
-  TemplateURL* default_provider =
+  const TemplateURL* default_provider =
       template_url_service_->GetDefaultSearchProvider();
 
   base::string16 query(base::android::ConvertJavaStringToUTF16(env, jquery));
diff --git a/chrome/browser/search_engines/template_url_service_sync_unittest.cc b/chrome/browser/search_engines/template_url_service_sync_unittest.cc
index 93d5dbe..cfa9691 100644
--- a/chrome/browser/search_engines/template_url_service_sync_unittest.cc
+++ b/chrome/browser/search_engines/template_url_service_sync_unittest.cc
@@ -2423,11 +2423,11 @@
       syncer::SEARCH_ENGINES, list, PassProcessor(),
       CreateAndPassSyncErrorFactory());
 
-  result_turl = model()->GetDefaultSearchProvider();
-  EXPECT_TRUE(result_turl);
-  EXPECT_EQ(ASCIIToUTF16("new_kw"), result_turl->keyword());
-  EXPECT_EQ(ASCIIToUTF16("my name"), result_turl->short_name());
-  EXPECT_EQ(default_turl->url(), result_turl->url());
+  const TemplateURL* final_turl = model()->GetDefaultSearchProvider();
+  EXPECT_TRUE(final_turl);
+  EXPECT_EQ(ASCIIToUTF16("new_kw"), final_turl->keyword());
+  EXPECT_EQ(ASCIIToUTF16("my name"), final_turl->short_name());
+  EXPECT_EQ(default_turl->url(), final_turl->url());
 }
 
 TEST_F(TemplateURLServiceSyncTest, MergeNonEditedPrepopulatedEngine) {
diff --git a/chrome/browser/search_engines/template_url_service_unittest.cc b/chrome/browser/search_engines/template_url_service_unittest.cc
index 1d09327..845bcf3 100644
--- a/chrome/browser/search_engines/template_url_service_unittest.cc
+++ b/chrome/browser/search_engines/template_url_service_unittest.cc
@@ -955,7 +955,7 @@
                   ->GetString(prefs::kSyncedDefaultSearchProviderGUID)
                   .empty());
 
-  TemplateURL* initial_dse = model()->GetDefaultSearchProvider();
+  const TemplateURL* initial_dse = model()->GetDefaultSearchProvider();
   ASSERT_TRUE(initial_dse);
 
   // Add user provided default search engine.
@@ -1047,7 +1047,7 @@
                   .empty());
 
   // Get initial DSE to check its guid later.
-  TemplateURL* initial_dse = model()->GetDefaultSearchProvider();
+  const TemplateURL* initial_dse = model()->GetDefaultSearchProvider();
   ASSERT_TRUE(initial_dse);
 
   // Add user provided default search engine.
@@ -1327,7 +1327,7 @@
 TEST_F(TemplateURLServiceTest, LoadSavesPrepopulatedDefaultSearchProvider) {
   test_util()->VerifyLoad();
   // Verify that the default search provider is set to something.
-  TemplateURL* default_search = model()->GetDefaultSearchProvider();
+  const TemplateURL* default_search = model()->GetDefaultSearchProvider();
   ASSERT_TRUE(default_search != NULL);
   std::unique_ptr<TemplateURL> cloned_url(
       new TemplateURL(default_search->data()));
@@ -1398,10 +1398,16 @@
   EXPECT_TRUE(model()->GetDefaultSearchProvider()->SupportsReplacement(
       search_terms_data()));
 
-  // Make default search provider unusable (no search terms).
-  model()->ResetTemplateURL(model()->GetDefaultSearchProvider(),
-                            ASCIIToUTF16("test"), ASCIIToUTF16("test"),
-                            "http://example.com/");
+  // Force the model to load and make sure we have a default search provider.
+  const TemplateURL* default_search = model()->GetDefaultSearchProvider();
+  EXPECT_TRUE(default_search);
+  EXPECT_TRUE(default_search->SupportsReplacement(search_terms_data()));
+
+  // Make default search provider unusable (no search terms).  Using
+  // GetTemplateURLForKeyword() returns a non-const pointer.
+  model()->ResetTemplateURL(
+      model()->GetTemplateURLForKeyword(default_search->keyword()),
+      ASCIIToUTF16("test"), ASCIIToUTF16("test"), "http://example.com/");
   base::RunLoop().RunUntilIdle();
 
   // Reset the model and load it. There should be a usable default search
diff --git a/chrome/browser/ui/search/instant_extended_interactive_uitest.cc b/chrome/browser/ui/search/instant_extended_interactive_uitest.cc
index 0dfe420b..b3ceb1b 100644
--- a/chrome/browser/ui/search/instant_extended_interactive_uitest.cc
+++ b/chrome/browser/ui/search/instant_extended_interactive_uitest.cc
@@ -179,7 +179,7 @@
            GetStringFromJS(contents, "prefetchQuery", &prefetch_query_value_);
   }
 
-  TemplateURL* GetDefaultSearchProviderTemplateURL() {
+  const TemplateURL* GetDefaultSearchProviderTemplateURL() {
     TemplateURLService* template_url_service =
         TemplateURLServiceFactory::GetForProfile(browser()->profile());
     if (template_url_service)
@@ -188,7 +188,7 @@
   }
 
   bool AddSearchToHistory(base::string16 term, int visit_count) {
-    TemplateURL* template_url = GetDefaultSearchProviderTemplateURL();
+    const TemplateURL* template_url = GetDefaultSearchProviderTemplateURL();
     if (!template_url)
       return false;
 
diff --git a/chrome/browser/ui/search_engines/keyword_editor_controller.cc b/chrome/browser/ui/search_engines/keyword_editor_controller.cc
index fb4ef4b..6bfa791 100644
--- a/chrome/browser/ui/search_engines/keyword_editor_controller.cc
+++ b/chrome/browser/ui/search_engines/keyword_editor_controller.cc
@@ -76,7 +76,7 @@
   base::RecordAction(UserMetricsAction("KeywordEditor_RemoveKeyword"));
 }
 
-TemplateURL* KeywordEditorController::GetDefaultSearchProvider() {
+const TemplateURL* KeywordEditorController::GetDefaultSearchProvider() {
   return url_model_->GetDefaultSearchProvider();
 }
 
diff --git a/chrome/browser/ui/search_engines/keyword_editor_controller.h b/chrome/browser/ui/search_engines/keyword_editor_controller.h
index e39662c4..c84a1c5 100644
--- a/chrome/browser/ui/search_engines/keyword_editor_controller.h
+++ b/chrome/browser/ui/search_engines/keyword_editor_controller.h
@@ -48,7 +48,7 @@
   void RemoveTemplateURL(int index);
 
   // Returns the default search provider.
-  TemplateURL* GetDefaultSearchProvider();
+  const TemplateURL* GetDefaultSearchProvider();
 
   // Make the TemplateURL at the specified index (into the TableModel) the
   // default search provider.  Return the new index, or -1 if nothing was done.
diff --git a/components/omnibox/browser/history_url_provider.cc b/components/omnibox/browser/history_url_provider.cc
index b65ee72..ed391c9 100644
--- a/components/omnibox/browser/history_url_provider.cc
+++ b/components/omnibox/browser/history_url_provider.cc
@@ -419,7 +419,7 @@
     const AutocompleteInput& input,
     bool trim_http,
     const AutocompleteMatch& what_you_typed_match,
-    TemplateURL* default_search_provider,
+    const TemplateURL* default_search_provider,
     const SearchTermsData& search_terms_data)
     : origin_task_runner(base::SequencedTaskRunnerHandle::Get()),
       input(input),
@@ -504,7 +504,7 @@
   // retrieve these on the UI thread, and the second pass runs on the history
   // thread. |template_url_service| can be null when testing.
   TemplateURLService* template_url_service = client()->GetTemplateURLService();
-  TemplateURL* default_search_provider = template_url_service ?
+  const TemplateURL* default_search_provider = template_url_service ?
       template_url_service->GetDefaultSearchProvider() : nullptr;
 
   // Create the data structure for the autocomplete passes.  We'll save this off
diff --git a/components/omnibox/browser/history_url_provider.h b/components/omnibox/browser/history_url_provider.h
index 11c3aced..97856fd 100644
--- a/components/omnibox/browser/history_url_provider.h
+++ b/components/omnibox/browser/history_url_provider.h
@@ -104,7 +104,7 @@
   HistoryURLProviderParams(const AutocompleteInput& input,
                            bool trim_http,
                            const AutocompleteMatch& what_you_typed_match,
-                           TemplateURL* default_search_provider,
+                           const TemplateURL* default_search_provider,
                            const SearchTermsData& search_terms_data);
   ~HistoryURLProviderParams();
 
diff --git a/components/search_engines/template_url.cc b/components/search_engines/template_url.cc
index f1e4303f..b4fb1516 100644
--- a/components/search_engines/template_url.cc
+++ b/components/search_engines/template_url.cc
@@ -1350,7 +1350,7 @@
     const GURL& url,
     const TemplateURLRef::SearchTermsArgs& search_terms_args,
     const SearchTermsData& search_terms_data,
-    GURL* result) {
+    GURL* result) const {
   // TODO(beaudoin): Use AQS from |search_terms_args| too.
   url::Parsed::ComponentType search_term_component;
   url::Component search_terms_position;
diff --git a/components/search_engines/template_url.h b/components/search_engines/template_url.h
index 1aaa2645..a3c83ce 100644
--- a/components/search_engines/template_url.h
+++ b/components/search_engines/template_url.h
@@ -671,7 +671,7 @@
       const GURL& url,
       const TemplateURLRef::SearchTermsArgs& search_terms_args,
       const SearchTermsData& search_terms_data,
-      GURL* result);
+      GURL* result) const;
 
   // Encodes the search terms from |search_terms_args| so that we know the
   // |input_encoding|. Returns the |encoded_terms| and the
diff --git a/components/search_engines/template_url_service.cc b/components/search_engines/template_url_service.cc
index dfce55d..9433205 100644
--- a/components/search_engines/template_url_service.cc
+++ b/components/search_engines/template_url_service.cc
@@ -614,11 +614,6 @@
   }
 }
 
-TemplateURL* TemplateURLService::GetDefaultSearchProvider() {
-  return const_cast<TemplateURL*>(
-      static_cast<const TemplateURLService*>(this)->GetDefaultSearchProvider());
-}
-
 const TemplateURL* TemplateURLService::GetDefaultSearchProvider() const {
   return loaded_ ? default_search_provider_
                  : initial_default_search_provider_.get();
diff --git a/components/search_engines/template_url_service.h b/components/search_engines/template_url_service.h
index 7698f8fd..058b0a0 100644
--- a/components/search_engines/template_url_service.h
+++ b/components/search_engines/template_url_service.h
@@ -258,9 +258,6 @@
   // loaded, the default search provider is pulled from preferences.
   //
   // NOTE: At least in unittest mode, this may return NULL.
-  // TODO(blundell): See if all callers can be converted to take in const
-  // pointers and eliminate this version of the method.
-  TemplateURL* GetDefaultSearchProvider();
   const TemplateURL* GetDefaultSearchProvider() const;
 
   // Returns true if the |url| is a search results page from the default search
diff --git a/ios/chrome/browser/google/google_logo_service.mm b/ios/chrome/browser/google/google_logo_service.mm
index b646df9..c4cf8953 100644
--- a/ios/chrome/browser/google/google_logo_service.mm
+++ b/ios/chrome/browser/google/google_logo_service.mm
@@ -92,7 +92,8 @@
   if (!template_url_service)
     return;
 
-  TemplateURL* template_url = template_url_service->GetDefaultSearchProvider();
+  const TemplateURL* template_url =
+      template_url_service->GetDefaultSearchProvider();
   if (!template_url ||
       !template_url->url_ref().HasGoogleBaseURLs(
           template_url_service->search_terms_data()))
diff --git a/ios/chrome/browser/ui/browser_view_controller.mm b/ios/chrome/browser/ui/browser_view_controller.mm
index 0f622e4..d03e1c19 100644
--- a/ios/chrome/browser/ui/browser_view_controller.mm
+++ b/ios/chrome/browser/ui/browser_view_controller.mm
@@ -2625,7 +2625,7 @@
 
     TemplateURLService* service =
         ios::TemplateURLServiceFactory::GetForBrowserState(_browserState);
-    TemplateURL* defaultURL = service->GetDefaultSearchProvider();
+    const TemplateURL* defaultURL = service->GetDefaultSearchProvider();
     if (defaultURL && !defaultURL->image_url().empty() &&
         defaultURL->image_url_ref().IsValid(service->search_terms_data())) {
       title = l10n_util::GetNSStringF(IDS_IOS_CONTEXT_MENU_SEARCHWEBFORIMAGE,
@@ -3190,7 +3190,8 @@
 
   TemplateURLService* templateUrlService =
       ios::TemplateURLServiceFactory::GetForBrowserState(_browserState);
-  TemplateURL* defaultURL = templateUrlService->GetDefaultSearchProvider();
+  const TemplateURL* defaultURL =
+      templateUrlService->GetDefaultSearchProvider();
   DCHECK(!defaultURL->image_url().empty());
   DCHECK(defaultURL->image_url_ref().IsValid(
       templateUrlService->search_terms_data()));
diff --git a/ios/chrome/browser/ui/contextual_search/contextual_search_delegate.cc b/ios/chrome/browser/ui/contextual_search/contextual_search_delegate.cc
index 9386807..624a048 100644
--- a/ios/chrome/browser/ui/contextual_search/contextual_search_delegate.cc
+++ b/ios/chrome/browser/ui/contextual_search/contextual_search_delegate.cc
@@ -266,7 +266,8 @@
 std::string ContextualSearchDelegate::GetSearchTermResolutionUrlString(
     const std::string& selected_text,
     const std::string& base_page_url) {
-  TemplateURL* template_url = template_url_service_->GetDefaultSearchProvider();
+  const TemplateURL* template_url =
+      template_url_service_->GetDefaultSearchProvider();
 
   TemplateURLRef::SearchTermsArgs search_terms_args =
       TemplateURLRef::SearchTermsArgs(base::string16());
diff --git a/ios/chrome/browser/ui/contextual_search/touch_to_search_permissions_mediator.mm b/ios/chrome/browser/ui/contextual_search/touch_to_search_permissions_mediator.mm
index 7a2598c6..0fd872d9 100644
--- a/ios/chrome/browser/ui/contextual_search/touch_to_search_permissions_mediator.mm
+++ b/ios/chrome/browser/ui/contextual_search/touch_to_search_permissions_mediator.mm
@@ -212,7 +212,8 @@
   if (!templateUrlService)
     return NO;
 
-  TemplateURL* defaultURL = templateUrlService->GetDefaultSearchProvider();
+  const TemplateURL* defaultURL =
+      templateUrlService->GetDefaultSearchProvider();
 
   // Contextual search is supported if the template URL has a non-empty
   // contextual search URL.
diff --git a/ios/chrome/browser/ui/ntp/google_landing_mediator.mm b/ios/chrome/browser/ui/ntp/google_landing_mediator.mm
index a5a03eabc..0d5ce31 100644
--- a/ios/chrome/browser/ui/ntp/google_landing_mediator.mm
+++ b/ios/chrome/browser/ui/ntp/google_landing_mediator.mm
@@ -223,7 +223,8 @@
 
 - (void)updateShowLogo {
   BOOL showLogo = NO;
-  TemplateURL* defaultURL = _templateURLService->GetDefaultSearchProvider();
+  const TemplateURL* defaultURL =
+      _templateURLService->GetDefaultSearchProvider();
   if (defaultURL) {
     showLogo =
         defaultURL->GetEngineType(_templateURLService->search_terms_data()) ==
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_controller.mm b/ios/chrome/browser/ui/ntp/new_tab_page_controller.mm
index 29dbba4..691cb7d 100644
--- a/ios/chrome/browser/ui/ntp/new_tab_page_controller.mm
+++ b/ios/chrome/browser/ui/ntp/new_tab_page_controller.mm
@@ -353,7 +353,7 @@
   TemplateURLService* service =
       ios::TemplateURLServiceFactory::GetForBrowserState(browserState_);
   if (service) {
-    TemplateURL* defaultURL = service->GetDefaultSearchProvider();
+    const TemplateURL* defaultURL = service->GetDefaultSearchProvider();
     if (defaultURL &&
         defaultURL->GetEngineType(service->search_terms_data()) !=
             SEARCH_ENGINE_GOOGLE) {