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

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

Issue 13954013: Port some importer unit tests to browser tests to be able to fully exercise the ExternalProcessImpo… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix includes post-merge Created 7 years, 8 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) 2012 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 "testing/gtest/include/gtest/gtest.h"
6
7 // The order of these includes is important. 5 // The order of these includes is important.
8 #include <windows.h> 6 #include <windows.h>
9 #include <unknwn.h> 7 #include <unknwn.h>
10 #include <intshcut.h> 8 #include <intshcut.h>
11 #include <shlguid.h> 9 #include <shlguid.h>
12 #include <urlhist.h> 10 #include <urlhist.h>
13 #include <shlobj.h> 11 #include <shlobj.h>
14 #include <propvarutil.h> 12 #include <propvarutil.h>
15 13
16 #include <algorithm> 14 #include <algorithm>
17 #include <vector> 15 #include <vector>
18 16
19 #include "base/bind.h" 17 #include "base/bind.h"
20 #include "base/compiler_specific.h" 18 #include "base/compiler_specific.h"
21 #include "base/file_util.h" 19 #include "base/file_util.h"
20 #include "base/files/scoped_temp_dir.h"
22 #include "base/message_loop.h" 21 #include "base/message_loop.h"
23 #include "base/path_service.h" 22 #include "base/path_service.h"
24 #include "base/stl_util.h" 23 #include "base/stl_util.h"
24 #include "base/string16.h"
25 #include "base/string_util.h" 25 #include "base/string_util.h"
26 #include "base/utf_string_conversions.h" 26 #include "base/utf_string_conversions.h"
27 #include "base/win/registry.h" 27 #include "base/win/registry.h"
28 #include "base/win/scoped_com_initializer.h"
29 #include "base/win/scoped_comptr.h" 28 #include "base/win/scoped_comptr.h"
30 #include "base/win/scoped_propvariant.h" 29 #include "base/win/scoped_propvariant.h"
31 #include "base/win/windows_version.h" 30 #include "base/win/windows_version.h"
32 #include "chrome/browser/history/history_types.h" 31 #include "chrome/browser/history/history_types.h"
33 #include "chrome/browser/importer/ie_importer.h" 32 #include "chrome/browser/importer/ie_importer.h"
34 #include "chrome/browser/importer/importer_bridge.h" 33 #include "chrome/browser/importer/importer_bridge.h"
35 #include "chrome/browser/importer/importer_data_types.h" 34 #include "chrome/browser/importer/importer_data_types.h"
36 #include "chrome/browser/importer/importer_host.h" 35 #include "chrome/browser/importer/importer_host.h"
37 #include "chrome/browser/importer/importer_progress_observer.h" 36 #include "chrome/browser/importer/importer_progress_observer.h"
38 #include "chrome/browser/importer/importer_unittest_utils.h" 37 #include "chrome/browser/importer/importer_unittest_utils.h"
39 #include "chrome/browser/importer/pstore_declarations.h" 38 #include "chrome/browser/importer/pstore_declarations.h"
40 #include "chrome/browser/search_engines/template_url.h" 39 #include "chrome/browser/search_engines/template_url.h"
40 #include "chrome/browser/ui/browser.h"
41 #include "chrome/common/chrome_paths.h" 41 #include "chrome/common/chrome_paths.h"
42 #include "chrome/test/base/in_process_browser_test.h"
42 #include "chrome/test/base/testing_profile.h" 43 #include "chrome/test/base/testing_profile.h"
43 #include "components/webdata/encryptor/ie7_password.h"
44 #include "content/public/common/password_form.h" 44 #include "content/public/common/password_form.h"
45 #include "testing/gtest/include/gtest/gtest.h"
45 46
46 namespace { 47 namespace {
47 48
48 const char16 kUnitTestRegistrySubKey[] = L"SOFTWARE\\Chromium Unit Tests"; 49 const char16 kUnitTestRegistrySubKey[] = L"SOFTWARE\\Chromium Unit Tests";
49 const char16 kUnitTestUserOverrideSubKey[] = 50 const char16 kUnitTestUserOverrideSubKey[] =
50 L"SOFTWARE\\Chromium Unit Tests\\HKCU Override"; 51 L"SOFTWARE\\Chromium Unit Tests\\HKCU Override";
51 52
52 const BookmarkInfo kIEBookmarks[] = { 53 const BookmarkInfo kIEBookmarks[] = {
53 {true, 2, {L"Links", L"SubFolderOfLinks"}, 54 {true, 2, {L"Links", L"SubFolderOfLinks"},
54 L"SubLink", 55 L"SubLink",
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 return false; 158 return false;
158 } 159 }
159 if (key.WriteValue(L"Order", &blob[0], blob.size(), REG_BINARY) != 160 if (key.WriteValue(L"Order", &blob[0], blob.size(), REG_BINARY) !=
160 ERROR_SUCCESS) { 161 ERROR_SUCCESS) {
161 return false; 162 return false;
162 } 163 }
163 return true; 164 return true;
164 } 165 }
165 166
166 bool CreateUrlFileWithFavicon(const base::FilePath& file, 167 bool CreateUrlFileWithFavicon(const base::FilePath& file,
167 const std::wstring& url, 168 const string16& url,
168 const std::wstring& favicon_url) { 169 const string16& favicon_url) {
169 base::win::ScopedComPtr<IUniformResourceLocator> locator; 170 base::win::ScopedComPtr<IUniformResourceLocator> locator;
170 HRESULT result = locator.CreateInstance(CLSID_InternetShortcut, NULL, 171 HRESULT result = locator.CreateInstance(CLSID_InternetShortcut, NULL,
171 CLSCTX_INPROC_SERVER); 172 CLSCTX_INPROC_SERVER);
172 if (FAILED(result)) 173 if (FAILED(result))
173 return false; 174 return false;
174 base::win::ScopedComPtr<IPersistFile> persist_file; 175 base::win::ScopedComPtr<IPersistFile> persist_file;
175 result = persist_file.QueryFrom(locator); 176 result = persist_file.QueryFrom(locator);
176 if (FAILED(result)) 177 if (FAILED(result))
177 return false; 178 return false;
178 result = locator->SetURL(url.c_str(), 0); 179 result = locator->SetURL(url.c_str(), 0);
(...skipping 26 matching lines...) Expand all
205 result = persist_file->Save(file.value().c_str(), TRUE); 206 result = persist_file->Save(file.value().c_str(), TRUE);
206 if (FAILED(result)) 207 if (FAILED(result))
207 return false; 208 return false;
208 209
209 // Write dummy favicon image data in NTFS alternate data stream. 210 // Write dummy favicon image data in NTFS alternate data stream.
210 return favicon_url.empty() || (file_util::WriteFile( 211 return favicon_url.empty() || (file_util::WriteFile(
211 file.ReplaceExtension(kFaviconStreamSuffix), kDummyFaviconImageData, 212 file.ReplaceExtension(kFaviconStreamSuffix), kDummyFaviconImageData,
212 sizeof kDummyFaviconImageData) != -1); 213 sizeof kDummyFaviconImageData) != -1);
213 } 214 }
214 215
215 bool CreateUrlFile(const base::FilePath& file, const std::wstring& url) { 216 bool CreateUrlFile(const base::FilePath& file, const string16& url) {
216 return CreateUrlFileWithFavicon(file, url, std::wstring()); 217 return CreateUrlFileWithFavicon(file, url, string16());
217 } 218 }
218 219
219 void ClearPStoreType(IPStore* pstore, const GUID* type, const GUID* subtype) { 220 void ClearPStoreType(IPStore* pstore, const GUID* type, const GUID* subtype) {
220 base::win::ScopedComPtr<IEnumPStoreItems, NULL> item; 221 base::win::ScopedComPtr<IEnumPStoreItems, NULL> item;
221 HRESULT result = pstore->EnumItems(0, type, subtype, 0, item.Receive()); 222 HRESULT result = pstore->EnumItems(0, type, subtype, 0, item.Receive());
222 if (result == PST_E_OK) { 223 if (result == PST_E_OK) {
223 char16* item_name; 224 char16* item_name;
224 while (SUCCEEDED(item->Next(1, &item_name, 0))) { 225 while (SUCCEEDED(item->Next(1, &item_name, 0))) {
225 pstore->DeleteItem(0, type, subtype, item_name, NULL, 0); 226 pstore->DeleteItem(0, type, subtype, item_name, NULL, 0);
226 CoTaskMemFree(item_name); 227 CoTaskMemFree(item_name);
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 } 309 }
309 EXPECT_EQ(history::SOURCE_IE_IMPORTED, visit_source); 310 EXPECT_EQ(history::SOURCE_IE_IMPORTED, visit_source);
310 } 311 }
311 312
312 virtual void AddBookmarks(const std::vector<BookmarkEntry>& bookmarks, 313 virtual void AddBookmarks(const std::vector<BookmarkEntry>& bookmarks,
313 const string16& top_level_folder_name) OVERRIDE { 314 const string16& top_level_folder_name) OVERRIDE {
314 ASSERT_LE(bookmark_count_ + bookmarks.size(), arraysize(kIEBookmarks)); 315 ASSERT_LE(bookmark_count_ + bookmarks.size(), arraysize(kIEBookmarks));
315 // Importer should import the IE Favorites folder the same as the list, 316 // Importer should import the IE Favorites folder the same as the list,
316 // in the same order. 317 // in the same order.
317 for (size_t i = 0; i < bookmarks.size(); ++i) { 318 for (size_t i = 0; i < bookmarks.size(); ++i) {
318 EXPECT_TRUE(EqualBookmarkEntry(bookmarks[i], 319 EXPECT_NO_FATAL_FAILURE(
319 kIEBookmarks[bookmark_count_])); 320 TestEqualBookmarkEntry(bookmarks[i],
321 kIEBookmarks[bookmark_count_])) << i;
320 ++bookmark_count_; 322 ++bookmark_count_;
321 } 323 }
322 } 324 }
323 325
324 virtual void AddKeyword(std::vector<TemplateURL*> template_url, 326 virtual void AddKeyword(std::vector<TemplateURL*> template_url,
325 int default_keyword_index) { 327 int default_keyword_index) {
326 // TODO(jcampan): bug 1169230: we should test keyword importing for IE. 328 // TODO(jcampan): bug 1169230: we should test keyword importing for IE.
327 // In order to do that we'll probably need to mock the Windows registry. 329 // In order to do that we'll probably need to mock the Windows registry.
328 NOTREACHED(); 330 NOTREACHED();
329 STLDeleteContainerPointers(template_url.begin(), template_url.end()); 331 STLDeleteContainerPointers(template_url.begin(), template_url.end());
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 virtual void AddPasswordForm(const content::PasswordForm& form) {} 388 virtual void AddPasswordForm(const content::PasswordForm& form) {}
387 virtual void AddHistoryPage(const history::URLRows& page, 389 virtual void AddHistoryPage(const history::URLRows& page,
388 history::VisitSource visit_source) {} 390 history::VisitSource visit_source) {}
389 virtual void AddKeyword(std::vector<TemplateURL*> template_url, 391 virtual void AddKeyword(std::vector<TemplateURL*> template_url,
390 int default_keyword_index) {} 392 int default_keyword_index) {}
391 virtual void AddBookmarks(const std::vector<BookmarkEntry>& bookmarks, 393 virtual void AddBookmarks(const std::vector<BookmarkEntry>& bookmarks,
392 const string16& top_level_folder_name) OVERRIDE { 394 const string16& top_level_folder_name) OVERRIDE {
393 ASSERT_LE(bookmark_count_ + bookmarks.size(), 395 ASSERT_LE(bookmark_count_ + bookmarks.size(),
394 arraysize(kIESortedBookmarks)); 396 arraysize(kIESortedBookmarks));
395 for (size_t i = 0; i < bookmarks.size(); ++i) { 397 for (size_t i = 0; i < bookmarks.size(); ++i) {
396 EXPECT_TRUE(EqualBookmarkEntry(bookmarks[i], 398 EXPECT_NO_FATAL_FAILURE(
397 kIESortedBookmarks[bookmark_count_])); 399 TestEqualBookmarkEntry(bookmarks[i],
400 kIESortedBookmarks[bookmark_count_])) << i;
398 ++bookmark_count_; 401 ++bookmark_count_;
399 } 402 }
400 } 403 }
401 404
402 private: 405 private:
403 ~MalformedFavoritesRegistryTestObserver() {} 406 ~MalformedFavoritesRegistryTestObserver() {}
404 407
405 size_t bookmark_count_; 408 size_t bookmark_count_;
406 }; 409 };
407 410
408 } // namespace 411 } // namespace
409 412
410 class IEImporterTest : public ImporterTest { 413 // These tests need to be browser tests in order to be able to run the OOP
414 // import (via ExternalProcessImporterHost) which launches a utility process.
415 class IEImporterBrowserTest : public InProcessBrowserTest {
411 protected: 416 protected:
412 virtual void SetUp() OVERRIDE { 417 virtual void SetUp() OVERRIDE {
413 ImporterTest::SetUp(); 418 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
414 StartRegistryOverride(); 419 StartRegistryOverride();
420
421 // This will launch the browser test and thus needs to happen last.
422 InProcessBrowserTest::SetUp();
415 } 423 }
416 424
417 virtual void TearDown() OVERRIDE { 425 virtual void TearDown() OVERRIDE {
418 EndRegistryOverride(); 426 EndRegistryOverride();
419 } 427 }
420 428
421 void StartRegistryOverride() { 429 void StartRegistryOverride() {
422 EXPECT_EQ(ERROR_SUCCESS, RegOverridePredefKey(HKEY_CURRENT_USER, NULL)); 430 EXPECT_EQ(ERROR_SUCCESS, RegOverridePredefKey(HKEY_CURRENT_USER, NULL));
423 temp_hkcu_hive_key_.Create(HKEY_CURRENT_USER, 431 temp_hkcu_hive_key_.Create(HKEY_CURRENT_USER,
424 kUnitTestUserOverrideSubKey, 432 kUnitTestUserOverrideSubKey,
425 KEY_ALL_ACCESS); 433 KEY_ALL_ACCESS);
426 EXPECT_TRUE(temp_hkcu_hive_key_.Valid()); 434 EXPECT_TRUE(temp_hkcu_hive_key_.Valid());
427 EXPECT_EQ(ERROR_SUCCESS, 435 EXPECT_EQ(ERROR_SUCCESS,
428 RegOverridePredefKey(HKEY_CURRENT_USER, 436 RegOverridePredefKey(HKEY_CURRENT_USER,
429 temp_hkcu_hive_key_.Handle())); 437 temp_hkcu_hive_key_.Handle()));
430 } 438 }
431 439
432 void EndRegistryOverride() { 440 void EndRegistryOverride() {
433 EXPECT_EQ(ERROR_SUCCESS, RegOverridePredefKey(HKEY_CURRENT_USER, NULL)); 441 EXPECT_EQ(ERROR_SUCCESS, RegOverridePredefKey(HKEY_CURRENT_USER, NULL));
434 temp_hkcu_hive_key_.Close(); 442 temp_hkcu_hive_key_.Close();
435 base::win::RegKey key(HKEY_CURRENT_USER, kUnitTestRegistrySubKey, 443 base::win::RegKey key(HKEY_CURRENT_USER, kUnitTestRegistrySubKey,
436 KEY_ALL_ACCESS); 444 KEY_ALL_ACCESS);
437 key.DeleteKey(L""); 445 key.DeleteKey(L"");
438 } 446 }
439 447
448 base::ScopedTempDir temp_dir_;
440 base::win::RegKey temp_hkcu_hive_key_; 449 base::win::RegKey temp_hkcu_hive_key_;
441 }; 450 };
442 451
443 TEST_F(IEImporterTest, IEImporter) { 452 IN_PROC_BROWSER_TEST_F(IEImporterBrowserTest, IEImporter) {
444 // Sets up a favorites folder. 453 // Sets up a favorites folder.
445 base::win::ScopedCOMInitializer com_init;
446 base::FilePath path = temp_dir_.path().AppendASCII("Favorites"); 454 base::FilePath path = temp_dir_.path().AppendASCII("Favorites");
447 CreateDirectory(path.value().c_str(), NULL); 455 CreateDirectory(path.value().c_str(), NULL);
448 CreateDirectory(path.AppendASCII("SubFolder").value().c_str(), NULL); 456 CreateDirectory(path.AppendASCII("SubFolder").value().c_str(), NULL);
449 base::FilePath links_path = path.AppendASCII("Links"); 457 base::FilePath links_path = path.AppendASCII("Links");
450 CreateDirectory(links_path.value().c_str(), NULL); 458 CreateDirectory(links_path.value().c_str(), NULL);
451 CreateDirectory(links_path.AppendASCII("SubFolderOfLinks").value().c_str(), 459 CreateDirectory(links_path.AppendASCII("SubFolderOfLinks").value().c_str(),
452 NULL); 460 NULL);
453 CreateDirectory(path.AppendASCII("\x0061").value().c_str(), NULL); 461 CreateDirectory(path.AppendASCII("\x0061").value().c_str(), NULL);
454 ASSERT_TRUE(CreateUrlFileWithFavicon(path.AppendASCII("Google Home Page.url"), 462 ASSERT_TRUE(CreateUrlFileWithFavicon(path.AppendASCII("Google Home Page.url"),
455 L"http://www.google.com/", 463 L"http://www.google.com/",
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 503
496 // Sets up a special history link. 504 // Sets up a special history link.
497 base::win::ScopedComPtr<IUrlHistoryStg2> url_history_stg2; 505 base::win::ScopedComPtr<IUrlHistoryStg2> url_history_stg2;
498 res = url_history_stg2.CreateInstance(CLSID_CUrlHistory, NULL, 506 res = url_history_stg2.CreateInstance(CLSID_CUrlHistory, NULL,
499 CLSCTX_INPROC_SERVER); 507 CLSCTX_INPROC_SERVER);
500 ASSERT_TRUE(res == S_OK); 508 ASSERT_TRUE(res == S_OK);
501 res = url_history_stg2->AddUrl(kIEIdentifyUrl, kIEIdentifyTitle, 0); 509 res = url_history_stg2->AddUrl(kIEIdentifyUrl, kIEIdentifyTitle, 0);
502 ASSERT_TRUE(res == S_OK); 510 ASSERT_TRUE(res == S_OK);
503 511
504 // Starts to import the above settings. 512 // Starts to import the above settings.
505 MessageLoop* loop = MessageLoop::current(); 513 // TODO(gab): Use ExternalProcessImporterHost on Windows.
506 scoped_refptr<ImporterHost> host(new ImporterHost); 514 scoped_refptr<ImporterHost> host(new ImporterHost);
507
508 TestObserver* observer = new TestObserver(); 515 TestObserver* observer = new TestObserver();
509 host->SetObserver(observer); 516 host->SetObserver(observer);
517
510 importer::SourceProfile source_profile; 518 importer::SourceProfile source_profile;
511 source_profile.importer_type = importer::TYPE_IE; 519 source_profile.importer_type = importer::TYPE_IE;
512 source_profile.source_path = temp_dir_.path(); 520 source_profile.source_path = temp_dir_.path();
513 521
514 // IUrlHistoryStg2::AddUrl seems to reset the override. Ensure it here. 522 // IUrlHistoryStg2::AddUrl seems to reset the override. Ensure it here.
515 StartRegistryOverride(); 523 StartRegistryOverride();
516 524
517 loop->PostTask(FROM_HERE, base::Bind( 525 host->StartImportSettings(
518 &ImporterHost::StartImportSettings,
519 host.get(),
520 source_profile, 526 source_profile,
521 profile_.get(), 527 browser()->profile(),
522 importer::HISTORY | importer::PASSWORDS | importer::FAVORITES, 528 importer::HISTORY | importer::PASSWORDS | importer::FAVORITES,
523 observer)); 529 observer);
524 loop->Run(); 530 MessageLoop::current()->Run();
525 531
526 // Cleans up. 532 // Cleans up.
527 url_history_stg2->DeleteUrl(kIEIdentifyUrl, 0); 533 url_history_stg2->DeleteUrl(kIEIdentifyUrl, 0);
528 url_history_stg2.Release(); 534 url_history_stg2.Release();
529 } 535 }
530 536
531 TEST_F(IEImporterTest, IEImporterMalformedFavoritesRegistry) { 537 IN_PROC_BROWSER_TEST_F(IEImporterBrowserTest,
538 IEImporterMalformedFavoritesRegistry) {
532 // Sets up a favorites folder. 539 // Sets up a favorites folder.
533 base::win::ScopedCOMInitializer com_init;
534 base::FilePath path = temp_dir_.path().AppendASCII("Favorites"); 540 base::FilePath path = temp_dir_.path().AppendASCII("Favorites");
535 CreateDirectory(path.value().c_str(), NULL); 541 CreateDirectory(path.value().c_str(), NULL);
536 CreateDirectory(path.AppendASCII("b").value().c_str(), NULL); 542 CreateDirectory(path.AppendASCII("b").value().c_str(), NULL);
537 ASSERT_TRUE(CreateUrlFile(path.AppendASCII("a.url"), 543 ASSERT_TRUE(CreateUrlFile(path.AppendASCII("a.url"),
538 L"http://www.google.com/0")); 544 L"http://www.google.com/0"));
539 ASSERT_TRUE(CreateUrlFile(path.AppendASCII("b").AppendASCII("a.url"), 545 ASSERT_TRUE(CreateUrlFile(path.AppendASCII("b").AppendASCII("a.url"),
540 L"http://www.google.com/1")); 546 L"http://www.google.com/1"));
541 ASSERT_TRUE(CreateUrlFile(path.AppendASCII("b").AppendASCII("b.url"), 547 ASSERT_TRUE(CreateUrlFile(path.AppendASCII("b").AppendASCII("b.url"),
542 L"http://www.google.com/2")); 548 L"http://www.google.com/2"));
543 ASSERT_TRUE(CreateUrlFile(path.AppendASCII("c.url"), 549 ASSERT_TRUE(CreateUrlFile(path.AppendASCII("c.url"),
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
575 // sort is performed. 581 // sort is performed.
576 for (size_t i = 0; i < arraysize(kBadBinary); ++i) { 582 for (size_t i = 0; i < arraysize(kBadBinary); ++i) {
577 base::win::RegKey key; 583 base::win::RegKey key;
578 ASSERT_EQ(ERROR_SUCCESS, 584 ASSERT_EQ(ERROR_SUCCESS,
579 key.Create(HKEY_CURRENT_USER, kIEFavoritesOrderKey, KEY_WRITE)); 585 key.Create(HKEY_CURRENT_USER, kIEFavoritesOrderKey, KEY_WRITE));
580 ASSERT_EQ(ERROR_SUCCESS, 586 ASSERT_EQ(ERROR_SUCCESS,
581 key.WriteValue(L"Order", kBadBinary[i].data, kBadBinary[i].length, 587 key.WriteValue(L"Order", kBadBinary[i].data, kBadBinary[i].length,
582 REG_BINARY)); 588 REG_BINARY));
583 589
584 // Starts to import the above settings. 590 // Starts to import the above settings.
585 MessageLoop* loop = MessageLoop::current(); 591 // TODO(gab): Use ExternalProcessImporterHost on Windows.
586 scoped_refptr<ImporterHost> host(new ImporterHost); 592 scoped_refptr<ImporterHost> host(new ImporterHost);
587
588 MalformedFavoritesRegistryTestObserver* observer = 593 MalformedFavoritesRegistryTestObserver* observer =
589 new MalformedFavoritesRegistryTestObserver(); 594 new MalformedFavoritesRegistryTestObserver();
590 host->SetObserver(observer); 595 host->SetObserver(observer);
596
591 importer::SourceProfile source_profile; 597 importer::SourceProfile source_profile;
592 source_profile.importer_type = importer::TYPE_IE; 598 source_profile.importer_type = importer::TYPE_IE;
593 source_profile.source_path = temp_dir_.path(); 599 source_profile.source_path = temp_dir_.path();
594 600
595 loop->PostTask(FROM_HERE, base::Bind( 601 host->StartImportSettings(
596 &ImporterHost::StartImportSettings,
597 host.get(),
598 source_profile, 602 source_profile,
599 profile_.get(), 603 browser()->profile(),
600 importer::FAVORITES, 604 importer::FAVORITES,
601 observer)); 605 observer);
602 loop->Run(); 606 MessageLoop::current()->Run();
603 } 607 }
604 } 608 }
605
606 TEST_F(IEImporterTest, IE7Importer) {
607 // This is the unencrypted values of my keys under Storage2.
608 // The passwords have been manually changed to abcdef... but the size remains
609 // the same.
610 unsigned char data1[] = "\x0c\x00\x00\x00\x38\x00\x00\x00\x2c\x00\x00\x00"
611 "\x57\x49\x43\x4b\x18\x00\x00\x00\x02\x00\x00\x00"
612 "\x67\x00\x72\x00\x01\x00\x00\x00\x00\x00\x00\x00"
613 "\x00\x00\x00\x00\x4e\xfa\x67\x76\x22\x94\xc8\x01"
614 "\x08\x00\x00\x00\x12\x00\x00\x00\x4e\xfa\x67\x76"
615 "\x22\x94\xc8\x01\x0c\x00\x00\x00\x61\x00\x62\x00"
616 "\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00"
617 "\x00\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00"
618 "\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00"
619 "\x6c\x00\x00\x00";
620
621 unsigned char data2[] = "\x0c\x00\x00\x00\x38\x00\x00\x00\x24\x00\x00\x00"
622 "\x57\x49\x43\x4b\x18\x00\x00\x00\x02\x00\x00\x00"
623 "\x67\x00\x72\x00\x01\x00\x00\x00\x00\x00\x00\x00"
624 "\x00\x00\x00\x00\xa8\xea\xf4\xe5\x9f\x9a\xc8\x01"
625 "\x09\x00\x00\x00\x14\x00\x00\x00\xa8\xea\xf4\xe5"
626 "\x9f\x9a\xc8\x01\x07\x00\x00\x00\x61\x00\x62\x00"
627 "\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00"
628 "\x69\x00\x00\x00\x61\x00\x62\x00\x63\x00\x64\x00"
629 "\x65\x00\x66\x00\x67\x00\x00\x00";
630
631
632
633 std::vector<unsigned char> decrypted_data1;
634 decrypted_data1.resize(arraysize(data1));
635 memcpy(&decrypted_data1.front(), data1, sizeof(data1));
636
637 std::vector<unsigned char> decrypted_data2;
638 decrypted_data2.resize(arraysize(data2));
639 memcpy(&decrypted_data2.front(), data2, sizeof(data2));
640
641 string16 password;
642 string16 username;
643 ASSERT_TRUE(ie7_password::GetUserPassFromData(decrypted_data1, &username,
644 &password));
645 EXPECT_EQ(L"abcdefgh", username);
646 EXPECT_EQ(L"abcdefghijkl", password);
647
648 ASSERT_TRUE(ie7_password::GetUserPassFromData(decrypted_data2, &username,
649 &password));
650 EXPECT_EQ(L"abcdefghi", username);
651 EXPECT_EQ(L"abcdefg", password);
652 }
OLDNEW
« no previous file with comments | « chrome/browser/importer/firefox_importer_unittest.cc ('k') | chrome/browser/importer/ie_importer_unittest_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698