Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3107)

Unified Diff: chrome/browser/search_engines/util.h

Issue 368273011: Revert of Componentize TemplateURLService (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/search_engines/util.h
diff --git a/chrome/browser/search_engines/util.h b/chrome/browser/search_engines/util.h
new file mode 100644
index 0000000000000000000000000000000000000000..18fa9cba925c4111bcd5a71017f0a922a2d5decd
--- /dev/null
+++ b/chrome/browser/search_engines/util.h
@@ -0,0 +1,136 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_SEARCH_ENGINES_UTIL_H_
+#define CHROME_BROWSER_SEARCH_ENGINES_UTIL_H_
+
+// This file contains utility functions for search engine functionality.
+#include <set>
+#include <string>
+#include <vector>
+
+#include "base/memory/scoped_ptr.h"
+#include "base/strings/string16.h"
+#include "chrome/browser/search_engines/template_url_service.h"
+
+class KeywordWebDataService;
+class PrefService;
+class TemplateURL;
+class WDTypedResult;
+
+// Returns the short name of the default search engine, or the empty string if
+// none is set.
+base::string16 GetDefaultSearchEngineName(TemplateURLService* service);
+
+// Returns a GURL that searches for |terms| using the default search engine of
+// |service|.
+GURL GetDefaultSearchURLForSearchTerms(TemplateURLService* service,
+ const base::string16& terms);
+
+// Returns matching URL from |template_urls| or NULL.
+TemplateURL* FindURLByPrepopulateID(
+ const TemplateURLService::TemplateURLVector& template_urls,
+ int prepopulate_id);
+
+// Modifies |prepopulated_url| so that it contains user-modified fields from
+// |original_turl|. Both URLs must have the same prepopulate_id.
+void MergeIntoPrepopulatedEngineData(const TemplateURL* original_turl,
+ TemplateURLData* prepopulated_url);
+
+// CreateActionsFromCurrentPrepopulateData() (see below) takes in the current
+// prepopulated URLs as well as the user's current URLs, and returns an instance
+// of the following struct representing the changes necessary to bring the
+// user's URLs in line with the prepopulated URLs.
+//
+// There are three types of changes:
+// (1) Previous prepopulated engines that no longer exist in the current set of
+// prepopulated engines and thus should be removed from the user's current
+// URLs.
+// (2) Previous prepopulated engines whose data has changed. The existing
+// entries for these engines should be updated to reflect the new data,
+// except for any user-set names and keywords, which can be preserved.
+// (3) New prepopulated engines not in the user's engine list, which should be
+// added.
+
+// The pair of current search engine and its new value.
+typedef std::pair<TemplateURL*, TemplateURLData> EditedSearchEngine;
+typedef std::vector<EditedSearchEngine> EditedEngines;
+
+struct ActionsFromPrepopulateData {
+ ActionsFromPrepopulateData();
+ ~ActionsFromPrepopulateData();
+
+ TemplateURLService::TemplateURLVector removed_engines;
+ EditedEngines edited_engines;
+ std::vector<TemplateURLData> added_engines;
+};
+
+// Given the user's current URLs and the current set of prepopulated URLs,
+// produces the set of actions (see above) required to make the user's URLs
+// reflect the prepopulate data. |default_search_provider| is used to avoid
+// placing the current default provider on the "to be removed" list.
+//
+// NOTE: Takes ownership of, and clears, |prepopulated_urls|.
+ActionsFromPrepopulateData CreateActionsFromCurrentPrepopulateData(
+ ScopedVector<TemplateURLData>* prepopulated_urls,
+ const TemplateURLService::TemplateURLVector& existing_urls,
+ const TemplateURL* default_search_provider);
+
+// Processes the results of KeywordWebDataService::GetKeywords, combining it
+// with prepopulated search providers to result in:
+// * a set of template_urls (search providers). The caller owns the
+// TemplateURL* returned in template_urls.
+// * whether there is a new resource keyword version (and the value).
+// |*new_resource_keyword_version| is set to 0 if no new value. Otherwise,
+// it is the new value.
+// Only pass in a non-NULL value for service if the KeywordWebDataService should
+// be updated. If |removed_keyword_guids| is not NULL, any TemplateURLs removed
+// from the keyword table in the KeywordWebDataService will have their Sync
+// GUIDs added to it. |default_search_provider| will be used to prevent removing
+// the current user-selected DSE, regardless of changes in prepopulate data.
+void GetSearchProvidersUsingKeywordResult(
+ const WDTypedResult& result,
+ KeywordWebDataService* service,
+ PrefService* prefs,
+ TemplateURLService::TemplateURLVector* template_urls,
+ TemplateURL* default_search_provider,
+ const SearchTermsData& search_terms_data,
+ int* new_resource_keyword_version,
+ std::set<std::string>* removed_keyword_guids);
+
+// Like GetSearchProvidersUsingKeywordResult(), but allows the caller to pass in
+// engines in |template_urls| instead of getting them via processing a web data
+// service request.
+// |resource_keyword_version| should contain the version number of the current
+// keyword data, i.e. the version number of the most recent prepopulate data
+// that has been merged into the current keyword data. On exit, this will be
+// set as in GetSearchProvidersUsingKeywordResult().
+void GetSearchProvidersUsingLoadedEngines(
+ KeywordWebDataService* service,
+ PrefService* prefs,
+ TemplateURLService::TemplateURLVector* template_urls,
+ TemplateURL* default_search_provider,
+ const SearchTermsData& search_terms_data,
+ int* resource_keyword_version,
+ std::set<std::string>* removed_keyword_guids);
+
+// Due to a bug, the |input_encodings| field of TemplateURLData could have
+// contained duplicate entries. This removes those entries and returns whether
+// any were found.
+bool DeDupeEncodings(std::vector<std::string>* encodings);
+
+// Removes (and deletes) TemplateURLs from |template_urls| and |service| if they
+// have duplicate prepopulate ids. If |removed_keyword_guids| is not NULL, the
+// Sync GUID of each item removed from the DB will be added to it. This is a
+// helper used by GetSearchProvidersUsingKeywordResult(), but is declared here
+// so it's accessible by unittests.
+void RemoveDuplicatePrepopulateIDs(
+ KeywordWebDataService* service,
+ const ScopedVector<TemplateURLData>& prepopulated_urls,
+ TemplateURL* default_search_provider,
+ TemplateURLService::TemplateURLVector* template_urls,
+ const SearchTermsData& search_terms_data,
+ std::set<std::string>* removed_keyword_guids);
+
+#endif // CHROME_BROWSER_SEARCH_ENGINES_UTIL_H_
« no previous file with comments | « chrome/browser/search_engines/template_url_service_util_unittest.cc ('k') | chrome/browser/search_engines/util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698