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

Side by Side Diff: chrome/browser/webdata/web_database.cc

Issue 3189004: Fix first run search engine dialog images. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/webdata/web_database.h" 5 #include "chrome/browser/webdata/web_database.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 // show_in_default_list 49 // show_in_default_list
50 // safe_for_autoreplace 50 // safe_for_autoreplace
51 // originating_url 51 // originating_url
52 // date_created This column was added after we allowed keywords. 52 // date_created This column was added after we allowed keywords.
53 // Keywords created before we started tracking 53 // Keywords created before we started tracking
54 // creation date have a value of 0 for this. 54 // creation date have a value of 0 for this.
55 // usage_count 55 // usage_count
56 // input_encodings Semicolon separated list of supported input 56 // input_encodings Semicolon separated list of supported input
57 // encodings, may be empty. 57 // encodings, may be empty.
58 // suggest_url 58 // suggest_url
59 // prepopulate_id See TemplateURL::prepoulate_id. 59 // prepopulate_id See TemplateURL::prepopulate_id.
60 // autogenerate_keyword 60 // autogenerate_keyword
61 // logo_id See TemplateURL::logo_id
61 // 62 //
62 // logins 63 // logins
63 // origin_url 64 // origin_url
64 // action_url 65 // action_url
65 // username_element 66 // username_element
66 // username_value 67 // username_value
67 // password_element 68 // password_element
68 // password_value 69 // password_value
69 // submit_element 70 // submit_element
70 // signon_realm The authority (scheme, host, port). 71 // signon_realm The authority (scheme, host, port).
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 // 151 //
151 //////////////////////////////////////////////////////////////////////////////// 152 ////////////////////////////////////////////////////////////////////////////////
152 153
153 using base::Time; 154 using base::Time;
154 155
155 namespace { 156 namespace {
156 157
157 typedef std::vector<Tuple3<int64, string16, string16> > AutofillElementList; 158 typedef std::vector<Tuple3<int64, string16, string16> > AutofillElementList;
158 159
159 // Current version number. 160 // Current version number.
160 const int kCurrentVersionNumber = 24; 161 const int kCurrentVersionNumber = 25;
161 const int kCompatibleVersionNumber = 21; 162 const int kCompatibleVersionNumber = 25;
163 const int kUrlIdPosition = 14;
162 164
163 // Keys used in the meta table. 165 // Keys used in the meta table.
164 const char* kDefaultSearchProviderKey = "Default Search Provider ID"; 166 const char* kDefaultSearchProviderKey = "Default Search Provider ID";
165 const char* kBuiltinKeywordVersion = "Builtin Keyword Version"; 167 const char* kBuiltinKeywordVersion = "Builtin Keyword Version";
166 168
167 // The maximum length allowed for form data. 169 // The maximum length allowed for form data.
168 const size_t kMaxDataLength = 1024; 170 const size_t kMaxDataLength = 1024;
169 171
170 std::string JoinStrings(const std::string& separator, 172 std::string JoinStrings(const std::string& separator,
171 const std::vector<std::string>& strings) { 173 const std::vector<std::string>& strings) {
(...skipping 30 matching lines...) Expand all
202 s->BindInt64(6, url.date_created().ToTimeT()); 204 s->BindInt64(6, url.date_created().ToTimeT());
203 s->BindInt(7, url.usage_count()); 205 s->BindInt(7, url.usage_count());
204 s->BindString(8, JoinStrings(";", url.input_encodings())); 206 s->BindString(8, JoinStrings(";", url.input_encodings()));
205 s->BindInt(9, url.show_in_default_list() ? 1 : 0); 207 s->BindInt(9, url.show_in_default_list() ? 1 : 0);
206 if (url.suggestions_url()) 208 if (url.suggestions_url())
207 s->BindString(10, url.suggestions_url()->url()); 209 s->BindString(10, url.suggestions_url()->url());
208 else 210 else
209 s->BindString(10, std::string()); 211 s->BindString(10, std::string());
210 s->BindInt(11, url.prepopulate_id()); 212 s->BindInt(11, url.prepopulate_id());
211 s->BindInt(12, url.autogenerate_keyword() ? 1 : 0); 213 s->BindInt(12, url.autogenerate_keyword() ? 1 : 0);
214 s->BindInt(13, url.logo_id());
212 } 215 }
213 216
214 void InitPasswordFormFromStatement(PasswordForm* form, sql::Statement* s) { 217 void InitPasswordFormFromStatement(PasswordForm* form, sql::Statement* s) {
215 std::string tmp; 218 std::string tmp;
216 string16 decrypted_password; 219 string16 decrypted_password;
217 tmp = s->ColumnString(0); 220 tmp = s->ColumnString(0);
218 form->origin = GURL(tmp); 221 form->origin = GURL(tmp);
219 tmp = s->ColumnString(1); 222 tmp = s->ColumnString(1);
220 form->action = GURL(tmp); 223 form->action = GURL(tmp);
221 form->username_element = s->ColumnString16(2); 224 form->username_element = s->ColumnString16(2);
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after
616 "favicon_url VARCHAR NOT NULL," 619 "favicon_url VARCHAR NOT NULL,"
617 "url VARCHAR NOT NULL," 620 "url VARCHAR NOT NULL,"
618 "show_in_default_list INTEGER," 621 "show_in_default_list INTEGER,"
619 "safe_for_autoreplace INTEGER," 622 "safe_for_autoreplace INTEGER,"
620 "originating_url VARCHAR," 623 "originating_url VARCHAR,"
621 "date_created INTEGER DEFAULT 0," 624 "date_created INTEGER DEFAULT 0,"
622 "usage_count INTEGER DEFAULT 0," 625 "usage_count INTEGER DEFAULT 0,"
623 "input_encodings VARCHAR," 626 "input_encodings VARCHAR,"
624 "suggest_url VARCHAR," 627 "suggest_url VARCHAR,"
625 "prepopulate_id INTEGER DEFAULT 0," 628 "prepopulate_id INTEGER DEFAULT 0,"
626 "autogenerate_keyword INTEGER DEFAULT 0)")) { 629 "autogenerate_keyword INTEGER DEFAULT 0,"
630 "logo_id INTEGER DEFAULT 0)")) {
627 NOTREACHED(); 631 NOTREACHED();
628 return false; 632 return false;
629 } 633 }
630 } 634 }
631 return true; 635 return true;
632 } 636 }
633 637
634 bool WebDatabase::InitLoginsTable() { 638 bool WebDatabase::InitLoginsTable() {
635 if (!db_.DoesTableExist("logins")) { 639 if (!db_.DoesTableExist("logins")) {
636 if (!db_.Execute("CREATE TABLE logins (" 640 if (!db_.Execute("CREATE TABLE logins ("
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
822 return true; 826 return true;
823 } 827 }
824 828
825 bool WebDatabase::AddKeyword(const TemplateURL& url) { 829 bool WebDatabase::AddKeyword(const TemplateURL& url) {
826 DCHECK(url.id()); 830 DCHECK(url.id());
827 sql::Statement s(db_.GetCachedStatement(SQL_FROM_HERE, 831 sql::Statement s(db_.GetCachedStatement(SQL_FROM_HERE,
828 "INSERT INTO keywords " 832 "INSERT INTO keywords "
829 "(short_name, keyword, favicon_url, url, safe_for_autoreplace, " 833 "(short_name, keyword, favicon_url, url, safe_for_autoreplace, "
830 "originating_url, date_created, usage_count, input_encodings, " 834 "originating_url, date_created, usage_count, input_encodings, "
831 "show_in_default_list, suggest_url, prepopulate_id, " 835 "show_in_default_list, suggest_url, prepopulate_id, "
832 "autogenerate_keyword, id) VALUES " 836 "autogenerate_keyword, logo_id, id) VALUES "
833 "(?,?,?,?,?,?,?,?,?,?,?,?,?,?)")); 837 "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"));
834 if (!s) { 838 if (!s) {
835 NOTREACHED() << "Statement prepare failed"; 839 NOTREACHED() << "Statement prepare failed";
836 return false; 840 return false;
837 } 841 }
838 BindURLToStatement(url, &s); 842 BindURLToStatement(url, &s);
839 s.BindInt64(13, url.id()); 843 s.BindInt64(kUrlIdPosition, url.id());
840 if (!s.Run()) { 844 if (!s.Run()) {
841 NOTREACHED(); 845 NOTREACHED();
842 return false; 846 return false;
843 } 847 }
844 return true; 848 return true;
845 } 849 }
846 850
847 bool WebDatabase::RemoveKeyword(TemplateURL::IDType id) { 851 bool WebDatabase::RemoveKeyword(TemplateURL::IDType id) {
848 DCHECK(id); 852 DCHECK(id);
849 sql::Statement s(db_.GetUniqueStatement("DELETE FROM keywords WHERE id = ?")); 853 sql::Statement s(db_.GetUniqueStatement("DELETE FROM keywords WHERE id = ?"));
850 if (!s) { 854 if (!s) {
851 NOTREACHED() << "Statement prepare failed"; 855 NOTREACHED() << "Statement prepare failed";
852 return false; 856 return false;
853 } 857 }
854 s.BindInt64(0, id); 858 s.BindInt64(0, id);
855 return s.Run(); 859 return s.Run();
856 } 860 }
857 861
858 bool WebDatabase::GetKeywords(std::vector<TemplateURL*>* urls) { 862 bool WebDatabase::GetKeywords(std::vector<TemplateURL*>* urls) {
859 sql::Statement s(db_.GetUniqueStatement( 863 sql::Statement s(db_.GetUniqueStatement(
860 "SELECT id, short_name, keyword, favicon_url, url, " 864 "SELECT id, short_name, keyword, favicon_url, url, "
861 "safe_for_autoreplace, originating_url, date_created, " 865 "safe_for_autoreplace, originating_url, date_created, "
862 "usage_count, input_encodings, show_in_default_list, " 866 "usage_count, input_encodings, show_in_default_list, "
863 "suggest_url, prepopulate_id, autogenerate_keyword " 867 "suggest_url, prepopulate_id, autogenerate_keyword, logo_id "
864 "FROM keywords ORDER BY id ASC")); 868 "FROM keywords ORDER BY id ASC"));
865 if (!s) { 869 if (!s) {
866 NOTREACHED() << "Statement prepare failed"; 870 NOTREACHED() << "Statement prepare failed";
867 return false; 871 return false;
868 } 872 }
869 while (s.Step()) { 873 while (s.Step()) {
870 TemplateURL* template_url = new TemplateURL(); 874 TemplateURL* template_url = new TemplateURL();
871 template_url->set_id(s.ColumnInt64(0)); 875 template_url->set_id(s.ColumnInt64(0));
872 876
873 std::string tmp; 877 std::string tmp;
(...skipping 27 matching lines...) Expand all
901 905
902 template_url->set_show_in_default_list(s.ColumnInt(10) == 1); 906 template_url->set_show_in_default_list(s.ColumnInt(10) == 1);
903 907
904 tmp = s.ColumnString(11); 908 tmp = s.ColumnString(11);
905 template_url->SetSuggestionsURL(tmp, 0, 0); 909 template_url->SetSuggestionsURL(tmp, 0, 0);
906 910
907 template_url->set_prepopulate_id(s.ColumnInt(12)); 911 template_url->set_prepopulate_id(s.ColumnInt(12));
908 912
909 template_url->set_autogenerate_keyword(s.ColumnInt(13) == 1); 913 template_url->set_autogenerate_keyword(s.ColumnInt(13) == 1);
910 914
915 template_url->set_logo_id(s.ColumnInt(14));
916
911 urls->push_back(template_url); 917 urls->push_back(template_url);
912 } 918 }
913 return s.Succeeded(); 919 return s.Succeeded();
914 } 920 }
915 921
916 bool WebDatabase::UpdateKeyword(const TemplateURL& url) { 922 bool WebDatabase::UpdateKeyword(const TemplateURL& url) {
917 DCHECK(url.id()); 923 DCHECK(url.id());
918 sql::Statement s(db_.GetUniqueStatement( 924 sql::Statement s(db_.GetUniqueStatement(
919 "UPDATE keywords " 925 "UPDATE keywords "
920 "SET short_name=?, keyword=?, favicon_url=?, url=?, " 926 "SET short_name=?, keyword=?, favicon_url=?, url=?, "
921 "safe_for_autoreplace=?, originating_url=?, date_created=?, " 927 "safe_for_autoreplace=?, originating_url=?, date_created=?, "
922 "usage_count=?, input_encodings=?, show_in_default_list=?, " 928 "usage_count=?, input_encodings=?, show_in_default_list=?, "
923 "suggest_url=?, prepopulate_id=?, autogenerate_keyword=? " 929 "suggest_url=?, prepopulate_id=?, autogenerate_keyword=?, "
924 "WHERE id=?")); 930 "logo_id=? WHERE id=?"));
925 if (!s) { 931 if (!s) {
926 NOTREACHED() << "Statement prepare failed"; 932 NOTREACHED() << "Statement prepare failed";
927 return false; 933 return false;
928 } 934 }
929 BindURLToStatement(url, &s); 935 BindURLToStatement(url, &s);
930 s.BindInt64(13, url.id()); 936 s.BindInt64(kUrlIdPosition, url.id());
931 return s.Run(); 937 return s.Run();
932 } 938 }
933 939
934 bool WebDatabase::SetDefaultSearchProviderID(int64 id) { 940 bool WebDatabase::SetDefaultSearchProviderID(int64 id) {
935 return meta_table_.SetValue(kDefaultSearchProviderKey, id); 941 return meta_table_.SetValue(kDefaultSearchProviderKey, id);
936 } 942 }
937 943
938 int64 WebDatabase::GetDefaulSearchProviderID() { 944 int64 WebDatabase::GetDefaulSearchProviderID() {
939 int64 value = 0; 945 int64 value = 0;
940 meta_table_.GetValue(kDefaultSearchProviderKey, &value); 946 meta_table_.GetValue(kDefaultSearchProviderKey, &value);
(...skipping 1026 matching lines...) Expand 10 before | Expand all | Expand 10 after
1967 NOTREACHED(); 1973 NOTREACHED();
1968 LOG(WARNING) << "Unable to update web database to version 24."; 1974 LOG(WARNING) << "Unable to update web database to version 24.";
1969 return; 1975 return;
1970 } 1976 }
1971 1977
1972 meta_table_.SetVersionNumber(24); 1978 meta_table_.SetVersionNumber(24);
1973 1979
1974 // FALL THROUGH 1980 // FALL THROUGH
1975 } 1981 }
1976 1982
1983 case 24:
1984 // Add the logo_id column.
1985 if (!db_.Execute("ALTER TABLE keywords ADD COLUMN logo_id "
1986 "INTEGER DEFAULT 0")) {
1987 NOTREACHED();
1988 LOG(WARNING) << "Unable to update web database to version 25.";
1989 return;
1990 }
1991 meta_table_.SetVersionNumber(25);
1992 meta_table_.SetCompatibleVersionNumber(
1993 std::min(25, kCompatibleVersionNumber));
1994 // FALL THROUGH
1995
1977 // Add successive versions here. Each should set the version number and 1996 // Add successive versions here. Each should set the version number and
1978 // compatible version number as appropriate, then fall through to the next 1997 // compatible version number as appropriate, then fall through to the next
1979 // case. 1998 // case.
1980 1999
1981 case kCurrentVersionNumber: 2000 case kCurrentVersionNumber:
1982 // No migration needed. 2001 // No migration needed.
1983 return; 2002 return;
1984 } 2003 }
1985 } 2004 }
OLDNEW
« no previous file with comments | « chrome/browser/search_engines/template_url_prepopulate_data.cc ('k') | chrome/browser/webdata/web_database_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698