summaryrefslogtreecommitdiffstats
path: root/chrome/browser/history/shortcuts_database.cc
diff options
context:
space:
mode:
authorpkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-14 21:34:32 +0000
committerpkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-14 21:34:32 +0000
commit9d2b5f3b2a8640c6fbb067b16cb22eb0d081568e (patch)
tree90bb6891dd794d538dcea68e3ba27b0c31fa9fee /chrome/browser/history/shortcuts_database.cc
parent8579b5cac19f736f344fb8354448d469ccaf23ec (diff)
downloadchromium_src-9d2b5f3b2a8640c6fbb067b16cb22eb0d081568e.zip
chromium_src-9d2b5f3b2a8640c6fbb067b16cb22eb0d081568e.tar.gz
chromium_src-9d2b5f3b2a8640c6fbb067b16cb22eb0d081568e.tar.bz2
Clean up ShortcutsProvider and related classes:
* Move SpansToString()/SpansFromString() and AddLastMatchIfNeeded() from static functions in shortcuts_provider_shortcut.cc to static members on AutocompleteMatch and rename them, to go along with the other existing classification-related functions there, since there's nothing particularly shortcut-related about them. * Move the definitions of Shortcut and ShortcutMap to the ShortcutsBackend, mainly to "namespace" them -- having a global-scope type named "Shortcut" didn't seem like a good idea. This made sense as a location anyway since the backend already depended heavily on these types. * Eliminate using statements. * Modify ShortcutsProviderTest::FillData() so it can be reused in an additional place. * Shortcut had two different constructors whose function and use was confusing and error-prone -- they took some of the same fields but as different types, and didn't guarantee all the members were initialized. Condense to one constructor which takes the most logical types and sets all members. * Eliminate ShortcutsBackend::guid_map() (unused). * Simplify/clarify code. * Eliminate 2K clamp on shortcut data fields. We don't clamp like this elsewhere, and if the clamp kicks in, it could lead to corrupted results -- e.g. trimming a "description" field but not updating the classifications for that field. BUG=none TEST=none Review URL: https://chromiumcodereview.appspot.com/9689085 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@126743 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/history/shortcuts_database.cc')
-rw-r--r--chrome/browser/history/shortcuts_database.cc63
1 files changed, 22 insertions, 41 deletions
diff --git a/chrome/browser/history/shortcuts_database.cc b/chrome/browser/history/shortcuts_database.cc
index 877c28b..035d82b 100644
--- a/chrome/browser/history/shortcuts_database.cc
+++ b/chrome/browser/history/shortcuts_database.cc
@@ -9,58 +9,35 @@
#include <vector>
#include "base/logging.h"
-#include "base/string_number_conversions.h"
#include "base/stringprintf.h"
#include "base/time.h"
-#include "base/utf_string_conversions.h"
-#include "chrome/browser/autocomplete/shortcuts_provider.h"
#include "chrome/common/guid.h"
#include "sql/statement.h"
-using base::Time;
-
namespace {
// Using define instead of const char, so I could use ## in the statements.
#define kShortcutsDBName "omni_box_shortcuts"
-// The maximum length allowed for form data.
-const size_t kMaxDataLength = 2048; // 2K is a hard limit on URLs URI.
-
-string16 LimitDataSize(const string16& data) {
- if (data.size() > kMaxDataLength)
- return data.substr(0, kMaxDataLength);
-
- return data;
-}
-
-void BindShortcutToStatement(const shortcuts_provider::Shortcut& shortcut,
- sql::Statement* s) {
+void BindShortcutToStatement(
+ const history::ShortcutsBackend::Shortcut& shortcut,
+ sql::Statement* s) {
DCHECK(guid::IsValidGUID(shortcut.id));
s->BindString(0, shortcut.id);
- s->BindString16(1, LimitDataSize(shortcut.text));
- s->BindString16(2, LimitDataSize(UTF8ToUTF16(shortcut.url.spec())));
- s->BindString16(3, LimitDataSize(shortcut.contents));
- s->BindString16(4, LimitDataSize(shortcut.contents_class_as_str()));
- s->BindString16(5, LimitDataSize(shortcut.description));
- s->BindString16(6, LimitDataSize(shortcut.description_class_as_str()));
+ s->BindString16(1, shortcut.text);
+ s->BindString(2, shortcut.url.spec());
+ s->BindString16(3, shortcut.contents);
+ s->BindString(4,
+ AutocompleteMatch::ClassificationsToString(shortcut.contents_class));
+ s->BindString16(5, shortcut.description);
+ s->BindString(6,
+ AutocompleteMatch::ClassificationsToString(shortcut.description_class));
s->BindInt64(7, shortcut.last_access_time.ToInternalValue());
s->BindInt(8, shortcut.number_of_hits);
}
-shortcuts_provider::Shortcut ShortcutFromStatement(const sql::Statement& s) {
- return shortcuts_provider::Shortcut(s.ColumnString(0),
- s.ColumnString16(1),
- s.ColumnString16(2),
- s.ColumnString16(3),
- s.ColumnString16(4),
- s.ColumnString16(5),
- s.ColumnString16(6),
- s.ColumnInt64(7),
- s.ColumnInt(8));
-}
-
-bool DeleteShortcut(const char* field_name, const std::string& id,
+bool DeleteShortcut(const char* field_name,
+ const std::string& id,
sql::Connection& db) {
sql::Statement s(db.GetUniqueStatement(
base::StringPrintf("DELETE FROM %s WHERE %s = ?", kShortcutsDBName,
@@ -104,7 +81,7 @@ bool ShortcutsDatabase::Init() {
}
bool ShortcutsDatabase::AddShortcut(
- const shortcuts_provider::Shortcut& shortcut) {
+ const ShortcutsBackend::Shortcut& shortcut) {
sql::Statement s(db_.GetCachedStatement(SQL_FROM_HERE,
"INSERT INTO " kShortcutsDBName
" (id, text, url, contents, contents_class, description,"
@@ -116,7 +93,7 @@ bool ShortcutsDatabase::AddShortcut(
}
bool ShortcutsDatabase::UpdateShortcut(
- const shortcuts_provider::Shortcut& shortcut) {
+ const ShortcutsBackend::Shortcut& shortcut) {
sql::Statement s(db_.GetCachedStatement(SQL_FROM_HERE,
"UPDATE " kShortcutsDBName " "
"SET id=?, text=?, url=?, contents=?, contents_class=?,"
@@ -158,8 +135,7 @@ bool ShortcutsDatabase::DeleteAllShortcuts() {
}
// Loads all of the shortcuts.
-bool ShortcutsDatabase::LoadShortcuts(
- std::map<std::string, shortcuts_provider::Shortcut>* shortcuts) {
+bool ShortcutsDatabase::LoadShortcuts(GuidToShortcutMap* shortcuts) {
DCHECK(shortcuts);
sql::Statement s(db_.GetCachedStatement(SQL_FROM_HERE,
"SELECT id, text, url, contents, contents_class, "
@@ -172,7 +148,12 @@ bool ShortcutsDatabase::LoadShortcuts(
shortcuts->clear();
while (s.Step()) {
shortcuts->insert(std::make_pair(s.ColumnString(0),
- ShortcutFromStatement(s)));
+ ShortcutsBackend::Shortcut(s.ColumnString(0), s.ColumnString16(1),
+ GURL(s.ColumnString(2)), s.ColumnString16(3),
+ AutocompleteMatch::ClassificationsFromString(s.ColumnString(4)),
+ s.ColumnString16(5),
+ AutocompleteMatch::ClassificationsFromString(s.ColumnString(6)),
+ base::Time::FromInternalValue(s.ColumnInt64(7)), s.ColumnInt(8))));
}
return true;
}