Make TemplateURLService batch up keyword table changes.
commitad94ea33e8cbead18a80ad2f818a8ae6ace344bb
authorpkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Wed, 2 Apr 2014 01:40:47 +0000 (2 01:40 +0000)
committerpkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Wed, 2 Apr 2014 01:40:47 +0000 (2 01:40 +0000)
treeae87bc9dd35ded886957510ccef804a3f803d87e
parent6aa2df5c010cf79db839bddec7785135c2af3932
Make TemplateURLService batch up keyword table changes.

This came about because a trace showed the database thread spending a long
period of time executing a series of many individual keyword updates, each of
which was committed separately and took ~90 ms.

With this change, pieces of TemplateURLService that may make more than one
change to the keyword table at a time batch those changes together so there is a
single call to the database thread and a single SQL transaction wrapping all the
changes.  In manual testing of TwoClientSearchEnginesSyncTest.AddMultiple (which
adds a bunch of search engines to one client and then syncs those changes to
another client), with the number of search engines synced elevated to 50 and
also 100, these changes saved approximately 6 seconds per test run.

By making WebDataService wrap even individual keyword table changes in a batch,
this also allows eliminating some implementation methods on WebDataService and
making similar methods on KeywordTable private.

BUG=308371
TEST=none
R=shess@chromium.org, stevet@chromium.org

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@261027 0039d316-1c4b-4281-b951-d872f2087c98
chrome/browser/search_engines/template_url_service.cc
chrome/browser/webdata/keyword_table.cc
chrome/browser/webdata/keyword_table.h
chrome/browser/webdata/web_data_service.cc
chrome/browser/webdata/web_data_service.h