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

Side by Side Diff: chrome/browser/importer/firefox_importer_browsertest.cc

Issue 426653002: Import keywords for search engines imported from Firefox (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review feedback (nit fixes) Created 6 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
« no previous file with comments | « no previous file | chrome/test/data/firefox_profile/search-metadata.json » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "base/file_util.h" 5 #include "base/file_util.h"
6 #include "base/files/file_path.h" 6 #include "base/files/file_path.h"
7 #include "base/files/scoped_temp_dir.h" 7 #include "base/files/scoped_temp_dir.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "base/path_service.h" 9 #include "base/path_service.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 28 matching lines...) Expand all
39 const char* action; 39 const char* action;
40 const char* realm; 40 const char* realm;
41 const char* username_element; 41 const char* username_element;
42 const char* username; 42 const char* username;
43 const char* password_element; 43 const char* password_element;
44 const char* password; 44 const char* password;
45 bool blacklisted; 45 bool blacklisted;
46 }; 46 };
47 47
48 struct KeywordInfo { 48 struct KeywordInfo {
49 const wchar_t* keyword; 49 const wchar_t* keyword_in_sqlite;
50 const wchar_t* keyword_in_json;
50 const char* url; 51 const char* url;
51 }; 52 };
52 53
53 const BookmarkInfo kFirefoxBookmarks[] = { 54 const BookmarkInfo kFirefoxBookmarks[] = {
54 {true, 1, {"Bookmarks Toolbar"}, 55 {true, 1, {"Bookmarks Toolbar"},
55 L"Toolbar", 56 L"Toolbar",
56 "http://site/"}, 57 "http://site/"},
57 {false, 0, {}, 58 {false, 0, {},
58 L"Title", 59 L"Title",
59 "http://www.google.com/"}, 60 "http://www.google.com/"},
60 }; 61 };
61 62
62 const PasswordInfo kFirefoxPasswords[] = { 63 const PasswordInfo kFirefoxPasswords[] = {
63 {"http://localhost:8080/", "http://localhost:8080/", "http://localhost:8080/", 64 {"http://localhost:8080/", "http://localhost:8080/", "http://localhost:8080/",
64 "loginuser", "abc", "loginpass", "123", false}, 65 "loginuser", "abc", "loginpass", "123", false},
65 {"http://localhost:8080/", "", "http://localhost:8080/localhost", 66 {"http://localhost:8080/", "", "http://localhost:8080/localhost",
66 "", "http", "", "Http1+1abcdefg", false}, 67 "", "http", "", "Http1+1abcdefg", false},
67 }; 68 };
68 69
69 const KeywordInfo kFirefoxKeywords[] = { 70 const KeywordInfo kFirefoxKeywords[] = {
70 { L"amazon.com", 71 {L"amazon.com", L"amazon.com",
71 "http://www.amazon.com/exec/obidos/external-search/?field-keywords=" 72 "http://www.amazon.com/exec/obidos/external-search/?field-keywords="
72 "{searchTerms}&mode=blended" }, 73 "{searchTerms}&mode=blended"},
73 { L"answers.com", 74 {L"answers.com", L"answers.com",
74 "http://www.answers.com/main/ntquery?s={searchTerms}&gwp=13" }, 75 "http://www.answers.com/main/ntquery?s={searchTerms}&gwp=13"},
75 { L"search.creativecommons.org", 76 {L"search.creativecommons.org", L"search.creativecommons.org",
76 "http://search.creativecommons.org/?q={searchTerms}" }, 77 "http://search.creativecommons.org/?q={searchTerms}"},
77 { L"search.ebay.com", 78 {L"search.ebay.com", L"search.ebay.com",
78 "http://search.ebay.com/search/search.dll?query={searchTerms}&" 79 "http://search.ebay.com/search/search.dll?query={searchTerms}&"
79 "MfcISAPICommand=GetResult&ht=1&ebaytag1=ebayreg&srchdesc=n&" 80 "MfcISAPICommand=GetResult&ht=1&ebaytag1=ebayreg&srchdesc=n&"
80 "maxRecordsReturned=300&maxRecordsPerPage=50&SortProperty=MetaEndSort" }, 81 "maxRecordsReturned=300&maxRecordsPerPage=50&SortProperty=MetaEndSort"},
81 { L"google.com", 82 {L"google.com", L"google.com",
82 "http://www.google.com/search?q={searchTerms}&ie=utf-8&oe=utf-8&aq=t" }, 83 "http://www.google.com/search?q={searchTerms}&ie=utf-8&oe=utf-8&aq=t"},
83 { L"en.wikipedia.org", 84 {L"en.wikipedia.org", L"wiki",
84 "http://en.wikipedia.org/wiki/Special:Search?search={searchTerms}" }, 85 "http://en.wikipedia.org/wiki/Special:Search?search={searchTerms}"},
85 { L"search.yahoo.com", 86 {L"search.yahoo.com", L"search.yahoo.com",
86 "http://search.yahoo.com/search?p={searchTerms}&ei=UTF-8" }, 87 "http://search.yahoo.com/search?p={searchTerms}&ei=UTF-8"},
87 { L"flickr.com", 88 {L"flickr.com", L"flickr.com",
88 "http://www.flickr.com/photos/tags/?q={searchTerms}" }, 89 "http://www.flickr.com/photos/tags/?q={searchTerms}"},
89 { L"imdb.com", 90 {L"imdb.com", L"imdb.com", "http://www.imdb.com/find?q={searchTerms}"},
90 "http://www.imdb.com/find?q={searchTerms}" }, 91 {L"webster.com", L"webster.com",
91 { L"webster.com", 92 "http://www.webster.com/cgi-bin/dictionary?va={searchTerms}"},
92 "http://www.webster.com/cgi-bin/dictionary?va={searchTerms}" }, 93 // Search keywords.
93 // Search keywords. 94 {L"\x4E2D\x6587", L"\x4E2D\x6587", "http://www.google.com/"},
94 { L"\x4E2D\x6587", "http://www.google.com/" },
95 }; 95 };
96 96
97 class FirefoxObserver : public ProfileWriter, 97 class FirefoxObserver : public ProfileWriter,
98 public importer::ImporterProgressObserver { 98 public importer::ImporterProgressObserver {
99 public: 99 public:
100 FirefoxObserver() 100 explicit FirefoxObserver(bool use_keyword_in_json)
101 : ProfileWriter(NULL), 101 : ProfileWriter(NULL),
102 bookmark_count_(0), 102 bookmark_count_(0),
103 history_count_(0), 103 history_count_(0),
104 password_count_(0), 104 password_count_(0),
105 keyword_count_(0) {} 105 keyword_count_(0),
106 use_keyword_in_json_(use_keyword_in_json) {}
106 107
107 // importer::ImporterProgressObserver: 108 // importer::ImporterProgressObserver:
108 virtual void ImportStarted() OVERRIDE {} 109 virtual void ImportStarted() OVERRIDE {}
109 virtual void ImportItemStarted(importer::ImportItem item) OVERRIDE {} 110 virtual void ImportItemStarted(importer::ImportItem item) OVERRIDE {}
110 virtual void ImportItemEnded(importer::ImportItem item) OVERRIDE {} 111 virtual void ImportItemEnded(importer::ImportItem item) OVERRIDE {}
111 virtual void ImportEnded() OVERRIDE { 112 virtual void ImportEnded() OVERRIDE {
112 base::MessageLoop::current()->Quit(); 113 base::MessageLoop::current()->Quit();
113 EXPECT_EQ(arraysize(kFirefoxBookmarks), bookmark_count_); 114 EXPECT_EQ(arraysize(kFirefoxBookmarks), bookmark_count_);
114 EXPECT_EQ(1U, history_count_); 115 EXPECT_EQ(1U, history_count_);
115 EXPECT_EQ(arraysize(kFirefoxPasswords), password_count_); 116 EXPECT_EQ(arraysize(kFirefoxPasswords), password_count_);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 ++bookmark_count_; 166 ++bookmark_count_;
166 } 167 }
167 } 168 }
168 169
169 virtual void AddKeywords(ScopedVector<TemplateURL> template_urls, 170 virtual void AddKeywords(ScopedVector<TemplateURL> template_urls,
170 bool unique_on_host_and_path) OVERRIDE { 171 bool unique_on_host_and_path) OVERRIDE {
171 for (size_t i = 0; i < template_urls.size(); ++i) { 172 for (size_t i = 0; i < template_urls.size(); ++i) {
172 // The order might not be deterministic, look in the expected list for 173 // The order might not be deterministic, look in the expected list for
173 // that template URL. 174 // that template URL.
174 bool found = false; 175 bool found = false;
175 const base::string16& keyword = template_urls[i]->keyword(); 176 const base::string16& imported_keyword = template_urls[i]->keyword();
176 for (size_t j = 0; j < arraysize(kFirefoxKeywords); ++j) { 177 for (size_t j = 0; j < arraysize(kFirefoxKeywords); ++j) {
177 if (keyword == base::WideToUTF16(kFirefoxKeywords[j].keyword)) { 178 const base::string16 expected_keyword = base::WideToUTF16(
179 use_keyword_in_json_ ? kFirefoxKeywords[j].keyword_in_json :
180 kFirefoxKeywords[j].keyword_in_sqlite);
Ilya Sherman 2014/08/19 00:13:28 nit: Unless this is how clang-format formatted the
Nikhil 2014/08/19 05:57:46 clang-format wrapped before ? and :, which was inc
181 if (expected_keyword == imported_keyword) {
178 EXPECT_EQ(kFirefoxKeywords[j].url, template_urls[i]->url()); 182 EXPECT_EQ(kFirefoxKeywords[j].url, template_urls[i]->url());
179 found = true; 183 found = true;
180 break; 184 break;
181 } 185 }
182 } 186 }
183 EXPECT_TRUE(found); 187 EXPECT_TRUE(found);
184 ++keyword_count_; 188 ++keyword_count_;
185 } 189 }
186 } 190 }
187 191
188 virtual void AddFavicons( 192 virtual void AddFavicons(
189 const std::vector<ImportedFaviconUsage>& favicons) OVERRIDE { 193 const std::vector<ImportedFaviconUsage>& favicons) OVERRIDE {
190 } 194 }
191 195
192 private: 196 private:
193 virtual ~FirefoxObserver() {} 197 virtual ~FirefoxObserver() {}
194 198
195 size_t bookmark_count_; 199 size_t bookmark_count_;
196 size_t history_count_; 200 size_t history_count_;
197 size_t password_count_; 201 size_t password_count_;
198 size_t keyword_count_; 202 size_t keyword_count_;
203
204 // Newer versions of Firefox can store custom keyword names in json, which
205 // override the sqlite values. To be able to test both older and newer
206 // versions, tests set this variable to indicate whether to expect the
207 // |keyword_in_sqlite| or |keyword_in_json| values from the reference data.
208 bool use_keyword_in_json_;
199 }; 209 };
200 210
201 } // namespace 211 } // namespace
202 212
203 // These tests need to be browser tests in order to be able to run the OOP 213 // These tests need to be browser tests in order to be able to run the OOP
204 // import (via ExternalProcessImporterHost) which launches a utility process on 214 // import (via ExternalProcessImporterHost) which launches a utility process on
205 // supported platforms. 215 // supported platforms.
206 class FirefoxProfileImporterBrowserTest : public InProcessBrowserTest { 216 class FirefoxProfileImporterBrowserTest : public InProcessBrowserTest {
207 protected: 217 protected:
208 virtual void SetUp() OVERRIDE { 218 virtual void SetUp() OVERRIDE {
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 base::MessageLoop::current()->Run(); 280 base::MessageLoop::current()->Run();
271 } 281 }
272 282
273 base::ScopedTempDir temp_dir_; 283 base::ScopedTempDir temp_dir_;
274 base::FilePath profile_path_; 284 base::FilePath profile_path_;
275 base::FilePath app_path_; 285 base::FilePath app_path_;
276 }; 286 };
277 287
278 IN_PROC_BROWSER_TEST_F(FirefoxProfileImporterBrowserTest, 288 IN_PROC_BROWSER_TEST_F(FirefoxProfileImporterBrowserTest,
279 MAYBE_IMPORTER(Firefox30Importer)) { 289 MAYBE_IMPORTER(Firefox30Importer)) {
280 scoped_refptr<FirefoxObserver> observer(new FirefoxObserver()); 290 scoped_refptr<FirefoxObserver> observer(new FirefoxObserver(false));
281 FirefoxImporterBrowserTest( 291 FirefoxImporterBrowserTest(
282 "firefox3_profile", observer.get(), observer.get()); 292 "firefox3_profile", observer.get(), observer.get());
283 } 293 }
284 294
285 IN_PROC_BROWSER_TEST_F(FirefoxProfileImporterBrowserTest, 295 IN_PROC_BROWSER_TEST_F(FirefoxProfileImporterBrowserTest,
286 MAYBE_IMPORTER(Firefox35Importer)) { 296 MAYBE_IMPORTER(Firefox35Importer)) {
287 scoped_refptr<FirefoxObserver> observer(new FirefoxObserver()); 297 scoped_refptr<FirefoxObserver> observer(new FirefoxObserver(false));
288 FirefoxImporterBrowserTest( 298 FirefoxImporterBrowserTest(
289 "firefox35_profile", observer.get(), observer.get()); 299 "firefox35_profile", observer.get(), observer.get());
290 } 300 }
291 301
292 IN_PROC_BROWSER_TEST_F(FirefoxProfileImporterBrowserTest, 302 IN_PROC_BROWSER_TEST_F(FirefoxProfileImporterBrowserTest,
293 MAYBE_IMPORTER(FirefoxImporter)) { 303 MAYBE_IMPORTER(FirefoxImporter)) {
294 scoped_refptr<FirefoxObserver> observer(new FirefoxObserver()); 304 scoped_refptr<FirefoxObserver> observer(new FirefoxObserver(true));
295 FirefoxImporterBrowserTest("firefox_profile", observer.get(), observer.get()); 305 FirefoxImporterBrowserTest("firefox_profile", observer.get(), observer.get());
296 } 306 }
OLDNEW
« no previous file with comments | « no previous file | chrome/test/data/firefox_profile/search-metadata.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698