OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/keyword_table.h" | 5 #include "chrome/browser/webdata/keyword_table.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "base/json/json_reader.h" | 9 #include "base/json/json_reader.h" |
10 #include "base/json/json_writer.h" | 10 #include "base/json/json_writer.h" |
11 #include "base/logging.h" | 11 #include "base/logging.h" |
12 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
13 #include "base/strings/string_number_conversions.h" | 13 #include "base/strings/string_number_conversions.h" |
14 #include "base/strings/string_split.h" | 14 #include "base/strings/string_split.h" |
15 #include "base/strings/string_util.h" | 15 #include "base/strings/string_util.h" |
16 #include "base/strings/utf_string_conversions.h" | 16 #include "base/strings/utf_string_conversions.h" |
17 #include "base/values.h" | 17 #include "base/values.h" |
18 #include "chrome/browser/history/history_database.h" | 18 #include "chrome/browser/history/history_database.h" |
19 #include "chrome/browser/search_engines/template_url.h" | 19 #include "chrome/browser/search_engines/template_url.h" |
20 #include "chrome/browser/search_engines/template_url_service.h" | |
21 #include "components/search_engines/search_terms_data.h" | 20 #include "components/search_engines/search_terms_data.h" |
22 #include "components/webdata/common/web_database.h" | 21 #include "components/webdata/common/web_database.h" |
23 #include "sql/statement.h" | 22 #include "sql/statement.h" |
24 #include "sql/transaction.h" | 23 #include "sql/transaction.h" |
25 #include "url/gurl.h" | 24 #include "url/gurl.h" |
26 | 25 |
27 using base::Time; | 26 using base::Time; |
28 | 27 |
29 // static | 28 // static |
30 const char KeywordTable::kDefaultSearchProviderKey[] = | 29 const char KeywordTable::kDefaultSearchProviderKey[] = |
(...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
605 data.SetKeyword(keyword); | 604 data.SetKeyword(keyword); |
606 data.SetURL(s.ColumnString(2)); | 605 data.SetURL(s.ColumnString(2)); |
607 TemplateURL turl(data); | 606 TemplateURL turl(data); |
608 // Don't persist extension keywords to disk. These will get added to the | 607 // Don't persist extension keywords to disk. These will get added to the |
609 // TemplateURLService as the extensions are loaded. | 608 // TemplateURLService as the extensions are loaded. |
610 bool delete_entry = turl.GetType() == TemplateURL::OMNIBOX_API_EXTENSION; | 609 bool delete_entry = turl.GetType() == TemplateURL::OMNIBOX_API_EXTENSION; |
611 if (!delete_entry && generate_keyword) { | 610 if (!delete_entry && generate_keyword) { |
612 // Explicitly generate keywords for all rows with the autogenerate bit set | 611 // Explicitly generate keywords for all rows with the autogenerate bit set |
613 // or where the keyword is empty. | 612 // or where the keyword is empty. |
614 SearchTermsData terms_data; | 613 SearchTermsData terms_data; |
615 GURL url(TemplateURLService::GenerateSearchURL(&turl, terms_data)); | 614 GURL url(turl.GenerateSearchURL(terms_data)); |
616 if (!url.is_valid()) { | 615 if (!url.is_valid()) { |
617 delete_entry = true; | 616 delete_entry = true; |
618 } else { | 617 } else { |
619 // Ensure autogenerated keywords are unique. | 618 // Ensure autogenerated keywords are unique. |
620 keyword = TemplateURLService::GenerateKeyword(url); | 619 keyword = TemplateURL::GenerateKeyword(url); |
621 while (keywords.count(keyword)) | 620 while (keywords.count(keyword)) |
622 keyword.append(base::ASCIIToUTF16("_")); | 621 keyword.append(base::ASCIIToUTF16("_")); |
623 sql::Statement u(db_->GetUniqueStatement( | 622 sql::Statement u(db_->GetUniqueStatement( |
624 "UPDATE keywords_temp SET keyword=? WHERE id=?")); | 623 "UPDATE keywords_temp SET keyword=? WHERE id=?")); |
625 u.BindString16(0, keyword); | 624 u.BindString16(0, keyword); |
626 u.BindInt64(1, s.ColumnInt64(0)); | 625 u.BindInt64(1, s.ColumnInt64(0)); |
627 if (!u.Run()) | 626 if (!u.Run()) |
628 return false; | 627 return false; |
629 } | 628 } |
630 } | 629 } |
631 if (delete_entry) { | 630 if (delete_entry) { |
632 sql::Statement u(db_->GetUniqueStatement( | 631 sql::Statement u(db_->GetUniqueStatement( |
633 "DELETE FROM keywords_temp WHERE id=?")); | 632 "DELETE FROM keywords_temp WHERE id=?")); |
634 u.BindInt64(0, s.ColumnInt64(0)); | 633 u.BindInt64(0, s.ColumnInt64(0)); |
635 if (!u.Run()) | 634 if (!u.Run()) |
636 return false; | 635 return false; |
637 } else { | 636 } else { |
638 keywords.insert(keyword); | 637 keywords.insert(keyword); |
639 } | 638 } |
640 } | 639 } |
641 | 640 |
642 // Replace the old table with the new one. | 641 // Replace the old table with the new one. |
643 sql = "DROP TABLE " + name; | 642 sql = "DROP TABLE " + name; |
644 if (!db_->Execute(sql.c_str())) | 643 if (!db_->Execute(sql.c_str())) |
645 return false; | 644 return false; |
646 sql = "ALTER TABLE keywords_temp RENAME TO " + name; | 645 sql = "ALTER TABLE keywords_temp RENAME TO " + name; |
647 return db_->Execute(sql.c_str()); | 646 return db_->Execute(sql.c_str()); |
648 } | 647 } |
OLD | NEW |