OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 <map> | 5 #include <map> |
6 | 6 |
7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
8 #include "base/scoped_ptr.h" | 8 #include "base/scoped_ptr.h" |
9 #include "base/stl_util-inl.h" | 9 #include "base/stl_util-inl.h" |
10 #include "base/string_number_conversions.h" | 10 #include "base/string_number_conversions.h" |
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
305 const std::string& url, | 305 const std::string& url, |
306 UpdateManifest::Results* results) { | 306 UpdateManifest::Results* results) { |
307 UpdateManifest::Result result; | 307 UpdateManifest::Result result; |
308 result.extension_id = id; | 308 result.extension_id = id; |
309 result.version = version; | 309 result.version = version; |
310 result.crx_url = GURL(url); | 310 result.crx_url = GURL(url); |
311 results->list.push_back(result); | 311 results->list.push_back(result); |
312 } | 312 } |
313 | 313 |
314 static void TestExtensionUpdateCheckRequests(bool pending) { | 314 static void TestExtensionUpdateCheckRequests(bool pending) { |
| 315 MessageLoop message_loop; |
| 316 BrowserThread file_thread(BrowserThread::FILE, &message_loop); |
| 317 BrowserThread io_thread(BrowserThread::IO); |
| 318 io_thread.Start(); |
| 319 |
315 // Create an extension with an update_url. | 320 // Create an extension with an update_url. |
316 ServiceForManifestTests service; | 321 ServiceForManifestTests service; |
317 std::string update_url("http://foo.com/bar"); | 322 std::string update_url("http://foo.com/bar"); |
318 ExtensionList extensions; | 323 ExtensionList extensions; |
319 PendingExtensionMap pending_extensions; | 324 PendingExtensionMap pending_extensions; |
320 if (pending) { | 325 if (pending) { |
321 CreateTestPendingExtensions(1, GURL(update_url), &pending_extensions); | 326 CreateTestPendingExtensions(1, GURL(update_url), &pending_extensions); |
322 service.set_pending_extensions(pending_extensions); | 327 service.set_pending_extensions(pending_extensions); |
323 } else { | 328 } else { |
324 service.CreateTestExtensions(1, 1, &extensions, &update_url, | 329 service.CreateTestExtensions(1, 1, &extensions, &update_url, |
325 Extension::INTERNAL); | 330 Extension::INTERNAL); |
326 service.set_extensions(extensions); | 331 service.set_extensions(extensions); |
327 } | 332 } |
328 | 333 |
329 // Setup and start the updater. | 334 // Set up and start the updater. |
330 MessageLoop message_loop; | |
331 BrowserThread io_thread(BrowserThread::IO); | |
332 io_thread.Start(); | |
333 | |
334 TestURLFetcherFactory factory; | 335 TestURLFetcherFactory factory; |
335 URLFetcher::set_factory(&factory); | 336 URLFetcher::set_factory(&factory); |
336 scoped_refptr<ExtensionUpdater> updater( | 337 scoped_refptr<ExtensionUpdater> updater( |
337 new ExtensionUpdater(&service, service.pref_service(), 60*60*24)); | 338 new ExtensionUpdater(&service, service.pref_service(), 60*60*24)); |
338 updater->Start(); | 339 updater->Start(); |
339 | 340 |
340 // Tell the update that it's time to do update checks. | 341 // Tell the update that it's time to do update checks. |
341 SimulateTimerFired(updater.get()); | 342 SimulateTimerFired(updater.get()); |
342 | 343 |
343 // Get the url our mock fetcher was asked to fetch. | 344 // Get the url our mock fetcher was asked to fetch. |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
483 // Make sure that extensions that update from the gallery ignore any | 484 // Make sure that extensions that update from the gallery ignore any |
484 // update URL data. | 485 // update URL data. |
485 const std::string& update_url = fetch->full_url().spec(); | 486 const std::string& update_url = fetch->full_url().spec(); |
486 std::string::size_type x = update_url.find("x="); | 487 std::string::size_type x = update_url.find("x="); |
487 EXPECT_NE(std::string::npos, x); | 488 EXPECT_NE(std::string::npos, x); |
488 std::string::size_type ap = update_url.find("ap%3D", x); | 489 std::string::size_type ap = update_url.find("ap%3D", x); |
489 EXPECT_EQ(std::string::npos, ap); | 490 EXPECT_EQ(std::string::npos, ap); |
490 } | 491 } |
491 | 492 |
492 static void TestDetermineUpdates() { | 493 static void TestDetermineUpdates() { |
| 494 MessageLoop message_loop; |
| 495 BrowserThread file_thread(BrowserThread::FILE, &message_loop); |
| 496 |
493 // Create a set of test extensions | 497 // Create a set of test extensions |
494 ServiceForManifestTests service; | 498 ServiceForManifestTests service; |
495 ExtensionList tmp; | 499 ExtensionList tmp; |
496 service.CreateTestExtensions(1, 3, &tmp, NULL, Extension::INTERNAL); | 500 service.CreateTestExtensions(1, 3, &tmp, NULL, Extension::INTERNAL); |
497 service.set_extensions(tmp); | 501 service.set_extensions(tmp); |
498 | 502 |
499 MessageLoop message_loop; | |
500 scoped_refptr<ExtensionUpdater> updater( | 503 scoped_refptr<ExtensionUpdater> updater( |
501 new ExtensionUpdater(&service, service.pref_service(), | 504 new ExtensionUpdater(&service, service.pref_service(), |
502 kUpdateFrequencySecs)); | 505 kUpdateFrequencySecs)); |
503 updater->Start(); | 506 updater->Start(); |
504 | 507 |
505 // Check passing an empty list of parse results to DetermineUpdates | 508 // Check passing an empty list of parse results to DetermineUpdates |
506 ManifestFetchData fetch_data(GURL("http://localhost/foo")); | 509 ManifestFetchData fetch_data(GURL("http://localhost/foo")); |
507 UpdateManifest::Results updates; | 510 UpdateManifest::Results updates; |
508 std::vector<int> updateable = updater->DetermineUpdates(fetch_data, | 511 std::vector<int> updateable = updater->DetermineUpdates(fetch_data, |
509 updates); | 512 updates); |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
565 MessageLoop ui_loop; | 568 MessageLoop ui_loop; |
566 BrowserThread ui_thread(BrowserThread::UI, &ui_loop); | 569 BrowserThread ui_thread(BrowserThread::UI, &ui_loop); |
567 BrowserThread file_thread(BrowserThread::FILE); | 570 BrowserThread file_thread(BrowserThread::FILE); |
568 file_thread.Start(); | 571 file_thread.Start(); |
569 BrowserThread io_thread(BrowserThread::IO); | 572 BrowserThread io_thread(BrowserThread::IO); |
570 io_thread.Start(); | 573 io_thread.Start(); |
571 | 574 |
572 TestURLFetcherFactory factory; | 575 TestURLFetcherFactory factory; |
573 TestURLFetcher* fetcher = NULL; | 576 TestURLFetcher* fetcher = NULL; |
574 URLFetcher::set_factory(&factory); | 577 URLFetcher::set_factory(&factory); |
575 ServiceForDownloadTests service; | 578 scoped_ptr<ServiceForDownloadTests> service(new ServiceForDownloadTests); |
576 scoped_refptr<ExtensionUpdater> updater( | 579 scoped_refptr<ExtensionUpdater> updater( |
577 new ExtensionUpdater(&service, service.pref_service(), | 580 new ExtensionUpdater(service.get(), service->pref_service(), |
578 kUpdateFrequencySecs)); | 581 kUpdateFrequencySecs)); |
579 updater->Start(); | 582 updater->Start(); |
580 | 583 |
581 GURL url1("http://localhost/manifest1"); | 584 GURL url1("http://localhost/manifest1"); |
582 GURL url2("http://localhost/manifest2"); | 585 GURL url2("http://localhost/manifest2"); |
583 | 586 |
584 // Request 2 update checks - the first should begin immediately and the | 587 // Request 2 update checks - the first should begin immediately and the |
585 // second one should be queued up. | 588 // second one should be queued up. |
586 ManifestFetchData* fetch1 = new ManifestFetchData(url1); | 589 ManifestFetchData* fetch1 = new ManifestFetchData(url1); |
587 ManifestFetchData* fetch2 = new ManifestFetchData(url2); | 590 ManifestFetchData* fetch2 = new ManifestFetchData(url2); |
(...skipping 28 matching lines...) Expand all Loading... |
616 fetcher->delegate()->OnURLFetchComplete( | 619 fetcher->delegate()->OnURLFetchComplete( |
617 fetcher, url2, net::URLRequestStatus(), 200, ResponseCookies(), | 620 fetcher, url2, net::URLRequestStatus(), 200, ResponseCookies(), |
618 kValidXml); | 621 kValidXml); |
619 | 622 |
620 // This should run the manifest parsing, then we want to make sure that our | 623 // This should run the manifest parsing, then we want to make sure that our |
621 // service was called with GetExtensionById with the matching id from | 624 // service was called with GetExtensionById with the matching id from |
622 // kValidXml. | 625 // kValidXml. |
623 file_thread.Stop(); | 626 file_thread.Stop(); |
624 io_thread.Stop(); | 627 io_thread.Stop(); |
625 ui_loop.RunAllPending(); | 628 ui_loop.RunAllPending(); |
626 EXPECT_EQ("12345", service.last_inquired_extension_id()); | 629 EXPECT_EQ("12345", service->last_inquired_extension_id()); |
627 xmlCleanupGlobals(); | 630 xmlCleanupGlobals(); |
| 631 |
| 632 // The FILE thread is needed for |service|'s cleanup, |
| 633 // because of ImportantFileWriter. |
| 634 file_thread.Start(); |
| 635 service.reset(); |
628 } | 636 } |
629 | 637 |
630 static void TestSingleExtensionDownloading(bool pending) { | 638 static void TestSingleExtensionDownloading(bool pending) { |
631 MessageLoop ui_loop; | 639 MessageLoop ui_loop; |
632 BrowserThread ui_thread(BrowserThread::UI, &ui_loop); | 640 BrowserThread ui_thread(BrowserThread::UI, &ui_loop); |
633 BrowserThread file_thread(BrowserThread::FILE); | 641 BrowserThread file_thread(BrowserThread::FILE); |
634 file_thread.Start(); | 642 file_thread.Start(); |
635 BrowserThread io_thread(BrowserThread::IO); | 643 BrowserThread io_thread(BrowserThread::IO); |
636 io_thread.Start(); | 644 io_thread.Start(); |
637 | 645 |
638 TestURLFetcherFactory factory; | 646 TestURLFetcherFactory factory; |
639 TestURLFetcher* fetcher = NULL; | 647 TestURLFetcher* fetcher = NULL; |
640 URLFetcher::set_factory(&factory); | 648 URLFetcher::set_factory(&factory); |
641 ServiceForDownloadTests service; | 649 scoped_ptr<ServiceForDownloadTests> service(new ServiceForDownloadTests); |
642 scoped_refptr<ExtensionUpdater> updater( | 650 scoped_refptr<ExtensionUpdater> updater( |
643 new ExtensionUpdater(&service, service.pref_service(), | 651 new ExtensionUpdater(service.get(), service->pref_service(), |
644 kUpdateFrequencySecs)); | 652 kUpdateFrequencySecs)); |
645 updater->Start(); | 653 updater->Start(); |
646 | 654 |
647 GURL test_url("http://localhost/extension.crx"); | 655 GURL test_url("http://localhost/extension.crx"); |
648 | 656 |
649 std::string id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; | 657 std::string id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; |
650 std::string hash = ""; | 658 std::string hash = ""; |
651 scoped_ptr<Version> version(Version::GetVersionFromString("0.0.1")); | 659 scoped_ptr<Version> version(Version::GetVersionFromString("0.0.1")); |
652 ASSERT_TRUE(version.get()); | 660 ASSERT_TRUE(version.get()); |
653 updater->FetchUpdatedExtension(id, test_url, hash, version->GetString()); | 661 updater->FetchUpdatedExtension(id, test_url, hash, version->GetString()); |
654 | 662 |
655 if (pending) { | 663 if (pending) { |
656 const bool kIsFromSync = true; | 664 const bool kIsFromSync = true; |
657 const bool kInstallSilently = true; | 665 const bool kInstallSilently = true; |
658 const Extension::State kInitialState = Extension::ENABLED; | 666 const Extension::State kInitialState = Extension::ENABLED; |
659 const bool kInitialIncognitoEnabled = false; | 667 const bool kInitialIncognitoEnabled = false; |
660 PendingExtensionMap pending_extensions; | 668 PendingExtensionMap pending_extensions; |
661 pending_extensions[id] = | 669 pending_extensions[id] = |
662 PendingExtensionInfo(test_url, &ShouldAlwaysInstall, kIsFromSync, | 670 PendingExtensionInfo(test_url, &ShouldAlwaysInstall, kIsFromSync, |
663 kInstallSilently, kInitialState, | 671 kInstallSilently, kInitialState, |
664 kInitialIncognitoEnabled, Extension::INTERNAL); | 672 kInitialIncognitoEnabled, Extension::INTERNAL); |
665 service.set_pending_extensions(pending_extensions); | 673 service->set_pending_extensions(pending_extensions); |
666 } | 674 } |
667 | 675 |
668 // Call back the ExtensionUpdater with a 200 response and some test data | 676 // Call back the ExtensionUpdater with a 200 response and some test data |
669 std::string extension_data("whatever"); | 677 std::string extension_data("whatever"); |
670 fetcher = factory.GetFetcherByID(ExtensionUpdater::kExtensionFetcherId); | 678 fetcher = factory.GetFetcherByID(ExtensionUpdater::kExtensionFetcherId); |
671 EXPECT_TRUE(fetcher != NULL && fetcher->delegate() != NULL); | 679 EXPECT_TRUE(fetcher != NULL && fetcher->delegate() != NULL); |
672 EXPECT_TRUE(fetcher->load_flags() == expected_load_flags); | 680 EXPECT_TRUE(fetcher->load_flags() == expected_load_flags); |
673 fetcher->delegate()->OnURLFetchComplete( | 681 fetcher->delegate()->OnURLFetchComplete( |
674 fetcher, test_url, net::URLRequestStatus(), 200, ResponseCookies(), | 682 fetcher, test_url, net::URLRequestStatus(), 200, ResponseCookies(), |
675 extension_data); | 683 extension_data); |
676 | 684 |
677 file_thread.Stop(); | 685 file_thread.Stop(); |
678 ui_loop.RunAllPending(); | 686 ui_loop.RunAllPending(); |
679 | 687 |
680 // Expect that ExtensionUpdater asked the mock extensions service to install | 688 // Expect that ExtensionUpdater asked the mock extensions service to install |
681 // a file with the test data for the right id. | 689 // a file with the test data for the right id. |
682 EXPECT_EQ(id, service.extension_id()); | 690 EXPECT_EQ(id, service->extension_id()); |
683 FilePath tmpfile_path = service.install_path(); | 691 FilePath tmpfile_path = service->install_path(); |
684 EXPECT_FALSE(tmpfile_path.empty()); | 692 EXPECT_FALSE(tmpfile_path.empty()); |
685 EXPECT_EQ(test_url, service.download_url()); | 693 EXPECT_EQ(test_url, service->download_url()); |
686 std::string file_contents; | 694 std::string file_contents; |
687 EXPECT_TRUE(file_util::ReadFileToString(tmpfile_path, &file_contents)); | 695 EXPECT_TRUE(file_util::ReadFileToString(tmpfile_path, &file_contents)); |
688 EXPECT_TRUE(extension_data == file_contents); | 696 EXPECT_TRUE(extension_data == file_contents); |
689 | 697 |
| 698 // The FILE thread is needed for |service|'s cleanup, |
| 699 // because of ImportantFileWriter. |
| 700 file_thread.Start(); |
| 701 service.reset(); |
| 702 |
690 file_util::Delete(tmpfile_path, false); | 703 file_util::Delete(tmpfile_path, false); |
691 URLFetcher::set_factory(NULL); | 704 URLFetcher::set_factory(NULL); |
692 } | 705 } |
693 | 706 |
694 static void TestBlacklistDownloading() { | 707 static void TestBlacklistDownloading() { |
695 MessageLoop message_loop; | 708 MessageLoop message_loop; |
696 BrowserThread ui_thread(BrowserThread::UI, &message_loop); | 709 BrowserThread ui_thread(BrowserThread::UI, &message_loop); |
| 710 BrowserThread file_thread(BrowserThread::FILE, &message_loop); |
697 BrowserThread io_thread(BrowserThread::IO); | 711 BrowserThread io_thread(BrowserThread::IO); |
698 io_thread.Start(); | 712 io_thread.Start(); |
699 | 713 |
700 TestURLFetcherFactory factory; | 714 TestURLFetcherFactory factory; |
701 TestURLFetcher* fetcher = NULL; | 715 TestURLFetcher* fetcher = NULL; |
702 URLFetcher::set_factory(&factory); | 716 URLFetcher::set_factory(&factory); |
703 ServiceForBlacklistTests service; | 717 ServiceForBlacklistTests service; |
704 scoped_refptr<ExtensionUpdater> updater( | 718 scoped_refptr<ExtensionUpdater> updater( |
705 new ExtensionUpdater(&service, service.pref_service(), | 719 new ExtensionUpdater(&service, service.pref_service(), |
706 kUpdateFrequencySecs)); | 720 kUpdateFrequencySecs)); |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
801 | 815 |
802 // Make sure the correct crx contents were passed for the update call. | 816 // Make sure the correct crx contents were passed for the update call. |
803 std::string file_contents; | 817 std::string file_contents; |
804 EXPECT_TRUE(file_util::ReadFileToString(service.install_path(), | 818 EXPECT_TRUE(file_util::ReadFileToString(service.install_path(), |
805 &file_contents)); | 819 &file_contents)); |
806 EXPECT_TRUE(extension_data2 == file_contents); | 820 EXPECT_TRUE(extension_data2 == file_contents); |
807 file_util::Delete(service.install_path(), false); | 821 file_util::Delete(service.install_path(), false); |
808 } | 822 } |
809 | 823 |
810 static void TestGalleryRequests(int ping_days) { | 824 static void TestGalleryRequests(int ping_days) { |
| 825 MessageLoop message_loop; |
| 826 BrowserThread file_thread(BrowserThread::FILE, &message_loop); |
| 827 |
811 TestURLFetcherFactory factory; | 828 TestURLFetcherFactory factory; |
812 URLFetcher::set_factory(&factory); | 829 URLFetcher::set_factory(&factory); |
813 | 830 |
814 // Set up 2 mock extensions, one with a google.com update url and one | 831 // Set up 2 mock extensions, one with a google.com update url and one |
815 // without. | 832 // without. |
816 ServiceForManifestTests service; | 833 ServiceForManifestTests service; |
817 ExtensionList tmp; | 834 ExtensionList tmp; |
818 GURL url1("http://clients2.google.com/service/update2/crx"); | 835 GURL url1("http://clients2.google.com/service/update2/crx"); |
819 GURL url2("http://www.somewebsite.com"); | 836 GURL url2("http://www.somewebsite.com"); |
820 service.CreateTestExtensions(1, 1, &tmp, &url1.possibly_invalid_spec(), | 837 service.CreateTestExtensions(1, 1, &tmp, &url1.possibly_invalid_spec(), |
821 Extension::INTERNAL); | 838 Extension::INTERNAL); |
822 service.CreateTestExtensions(2, 1, &tmp, &url2.possibly_invalid_spec(), | 839 service.CreateTestExtensions(2, 1, &tmp, &url2.possibly_invalid_spec(), |
823 Extension::INTERNAL); | 840 Extension::INTERNAL); |
824 EXPECT_EQ(2u, tmp.size()); | 841 EXPECT_EQ(2u, tmp.size()); |
825 service.set_extensions(tmp); | 842 service.set_extensions(tmp); |
826 | 843 |
827 Time now = Time::Now(); | 844 Time now = Time::Now(); |
828 if (ping_days == 0) { | 845 if (ping_days == 0) { |
829 service.extension_prefs()->SetLastPingDay( | 846 service.extension_prefs()->SetLastPingDay( |
830 tmp[0]->id(), now - TimeDelta::FromSeconds(15)); | 847 tmp[0]->id(), now - TimeDelta::FromSeconds(15)); |
831 } else if (ping_days > 0) { | 848 } else if (ping_days > 0) { |
832 Time last_ping_day = | 849 Time last_ping_day = |
833 now - TimeDelta::FromDays(ping_days) - TimeDelta::FromSeconds(15); | 850 now - TimeDelta::FromDays(ping_days) - TimeDelta::FromSeconds(15); |
834 service.extension_prefs()->SetLastPingDay(tmp[0]->id(), last_ping_day); | 851 service.extension_prefs()->SetLastPingDay(tmp[0]->id(), last_ping_day); |
835 } | 852 } |
836 | 853 |
837 MessageLoop message_loop; | |
838 scoped_refptr<ExtensionUpdater> updater( | 854 scoped_refptr<ExtensionUpdater> updater( |
839 new ExtensionUpdater(&service, service.pref_service(), | 855 new ExtensionUpdater(&service, service.pref_service(), |
840 kUpdateFrequencySecs)); | 856 kUpdateFrequencySecs)); |
841 updater->Start(); | 857 updater->Start(); |
842 updater->set_blacklist_checks_enabled(false); | 858 updater->set_blacklist_checks_enabled(false); |
843 | 859 |
844 // Make the updater do manifest fetching, and note the urls it tries to | 860 // Make the updater do manifest fetching, and note the urls it tries to |
845 // fetch. | 861 // fetch. |
846 std::vector<GURL> fetched_urls; | 862 std::vector<GURL> fetched_urls; |
847 updater->CheckNow(); | 863 updater->CheckNow(); |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
929 TEST(ExtensionUpdaterTest, TestExtensionUpdateCheckRequestsPending) { | 945 TEST(ExtensionUpdaterTest, TestExtensionUpdateCheckRequestsPending) { |
930 ExtensionUpdaterTest::TestExtensionUpdateCheckRequests(true); | 946 ExtensionUpdaterTest::TestExtensionUpdateCheckRequests(true); |
931 } | 947 } |
932 | 948 |
933 // This test is disabled on Mac, see http://crbug.com/26035. | 949 // This test is disabled on Mac, see http://crbug.com/26035. |
934 TEST(ExtensionUpdaterTest, TestBlacklistUpdateCheckRequests) { | 950 TEST(ExtensionUpdaterTest, TestBlacklistUpdateCheckRequests) { |
935 ExtensionUpdaterTest::TestBlacklistUpdateCheckRequests(); | 951 ExtensionUpdaterTest::TestBlacklistUpdateCheckRequests(); |
936 } | 952 } |
937 | 953 |
938 TEST(ExtensionUpdaterTest, TestUpdateUrlData) { | 954 TEST(ExtensionUpdaterTest, TestUpdateUrlData) { |
| 955 MessageLoop message_loop; |
| 956 BrowserThread file_thread(BrowserThread::FILE, &message_loop); |
| 957 |
939 ExtensionUpdaterTest::TestUpdateUrlDataEmpty(); | 958 ExtensionUpdaterTest::TestUpdateUrlDataEmpty(); |
940 ExtensionUpdaterTest::TestUpdateUrlDataSimple(); | 959 ExtensionUpdaterTest::TestUpdateUrlDataSimple(); |
941 ExtensionUpdaterTest::TestUpdateUrlDataCompound(); | 960 ExtensionUpdaterTest::TestUpdateUrlDataCompound(); |
942 ExtensionUpdaterTest::TestUpdateUrlDataFromGallery( | 961 ExtensionUpdaterTest::TestUpdateUrlDataFromGallery( |
943 Extension::GalleryUpdateUrl(false).spec()); | 962 Extension::GalleryUpdateUrl(false).spec()); |
944 ExtensionUpdaterTest::TestUpdateUrlDataFromGallery( | 963 ExtensionUpdaterTest::TestUpdateUrlDataFromGallery( |
945 Extension::GalleryUpdateUrl(true).spec()); | 964 Extension::GalleryUpdateUrl(true).spec()); |
946 } | 965 } |
947 | 966 |
948 TEST(ExtensionUpdaterTest, TestDetermineUpdates) { | 967 TEST(ExtensionUpdaterTest, TestDetermineUpdates) { |
(...skipping 30 matching lines...) Expand all Loading... |
979 ExtensionUpdaterTest::TestGalleryRequests(0); | 998 ExtensionUpdaterTest::TestGalleryRequests(0); |
980 ExtensionUpdaterTest::TestGalleryRequests(1); | 999 ExtensionUpdaterTest::TestGalleryRequests(1); |
981 ExtensionUpdaterTest::TestGalleryRequests(5); | 1000 ExtensionUpdaterTest::TestGalleryRequests(5); |
982 } | 1001 } |
983 | 1002 |
984 TEST(ExtensionUpdaterTest, TestHandleManifestResults) { | 1003 TEST(ExtensionUpdaterTest, TestHandleManifestResults) { |
985 ExtensionUpdaterTest::TestHandleManifestResults(); | 1004 ExtensionUpdaterTest::TestHandleManifestResults(); |
986 } | 1005 } |
987 | 1006 |
988 TEST(ExtensionUpdaterTest, TestManifestFetchesBuilderAddExtension) { | 1007 TEST(ExtensionUpdaterTest, TestManifestFetchesBuilderAddExtension) { |
| 1008 MessageLoop message_loop; |
| 1009 BrowserThread file_thread(BrowserThread::FILE, &message_loop); |
| 1010 |
989 MockService service; | 1011 MockService service; |
990 ManifestFetchesBuilder builder(&service); | 1012 ManifestFetchesBuilder builder(&service); |
991 | 1013 |
992 // Non-internal non-external extensions should be rejected. | 1014 // Non-internal non-external extensions should be rejected. |
993 { | 1015 { |
994 ExtensionList extensions; | 1016 ExtensionList extensions; |
995 service.CreateTestExtensions(1, 1, &extensions, NULL, Extension::INVALID); | 1017 service.CreateTestExtensions(1, 1, &extensions, NULL, Extension::INVALID); |
996 ASSERT_FALSE(extensions.empty()); | 1018 ASSERT_FALSE(extensions.empty()); |
997 builder.AddExtension(*extensions[0]); | 1019 builder.AddExtension(*extensions[0]); |
998 EXPECT_TRUE(builder.GetFetches().empty()); | 1020 EXPECT_TRUE(builder.GetFetches().empty()); |
(...skipping 27 matching lines...) Expand all Loading... |
1026 std::vector<ManifestFetchData*> fetches = builder.GetFetches(); | 1048 std::vector<ManifestFetchData*> fetches = builder.GetFetches(); |
1027 ASSERT_EQ(1u, fetches.size()); | 1049 ASSERT_EQ(1u, fetches.size()); |
1028 scoped_ptr<ManifestFetchData> fetch(fetches[0]); | 1050 scoped_ptr<ManifestFetchData> fetch(fetches[0]); |
1029 fetches.clear(); | 1051 fetches.clear(); |
1030 EXPECT_FALSE(fetch->base_url().is_empty()); | 1052 EXPECT_FALSE(fetch->base_url().is_empty()); |
1031 EXPECT_FALSE(fetch->full_url().is_empty()); | 1053 EXPECT_FALSE(fetch->full_url().is_empty()); |
1032 } | 1054 } |
1033 | 1055 |
1034 TEST(ExtensionUpdaterTest, TestStartUpdateCheckMemory) { | 1056 TEST(ExtensionUpdaterTest, TestStartUpdateCheckMemory) { |
1035 MessageLoop message_loop; | 1057 MessageLoop message_loop; |
| 1058 BrowserThread file_thread(BrowserThread::FILE, &message_loop); |
| 1059 |
1036 ServiceForManifestTests service; | 1060 ServiceForManifestTests service; |
1037 TestURLFetcherFactory factory; | 1061 TestURLFetcherFactory factory; |
1038 URLFetcher::set_factory(&factory); | 1062 URLFetcher::set_factory(&factory); |
1039 scoped_refptr<ExtensionUpdater> updater( | 1063 scoped_refptr<ExtensionUpdater> updater( |
1040 new ExtensionUpdater(&service, service.pref_service(), | 1064 new ExtensionUpdater(&service, service.pref_service(), |
1041 kUpdateFrequencySecs)); | 1065 kUpdateFrequencySecs)); |
1042 updater->Start(); | 1066 updater->Start(); |
1043 updater->StartUpdateCheck(new ManifestFetchData(GURL())); | 1067 updater->StartUpdateCheck(new ManifestFetchData(GURL())); |
1044 // This should delete the newly-created ManifestFetchData. | 1068 // This should delete the newly-created ManifestFetchData. |
1045 updater->StartUpdateCheck(new ManifestFetchData(GURL())); | 1069 updater->StartUpdateCheck(new ManifestFetchData(GURL())); |
1046 // This should add into |manifests_pending_|. | 1070 // This should add into |manifests_pending_|. |
1047 updater->StartUpdateCheck(new ManifestFetchData( | 1071 updater->StartUpdateCheck(new ManifestFetchData( |
1048 GURL("http://www.google.com"))); | 1072 GURL("http://www.google.com"))); |
1049 // This should clear out |manifests_pending_|. | 1073 // This should clear out |manifests_pending_|. |
1050 updater->Stop(); | 1074 updater->Stop(); |
1051 } | 1075 } |
1052 | 1076 |
1053 TEST(ExtensionUpdaterTest, TestAfterStopBehavior) { | 1077 TEST(ExtensionUpdaterTest, TestAfterStopBehavior) { |
1054 MessageLoop message_loop; | 1078 MessageLoop message_loop; |
| 1079 BrowserThread file_thread(BrowserThread::FILE, &message_loop); |
| 1080 |
1055 ServiceForManifestTests service; | 1081 ServiceForManifestTests service; |
1056 scoped_refptr<ExtensionUpdater> updater( | 1082 scoped_refptr<ExtensionUpdater> updater( |
1057 new ExtensionUpdater(&service, service.pref_service(), | 1083 new ExtensionUpdater(&service, service.pref_service(), |
1058 kUpdateFrequencySecs)); | 1084 kUpdateFrequencySecs)); |
1059 updater->Start(); | 1085 updater->Start(); |
1060 updater->Stop(); | 1086 updater->Stop(); |
1061 // All the below functions should do nothing. | 1087 // All the below functions should do nothing. |
1062 updater->OnCRXFileWritten("", FilePath(), GURL()); | 1088 updater->OnCRXFileWritten("", FilePath(), GURL()); |
1063 GURL dummy_gurl; | 1089 GURL dummy_gurl; |
1064 ManifestFetchData dummy_manifest_fetch_data(dummy_gurl); | 1090 ManifestFetchData dummy_manifest_fetch_data(dummy_gurl); |
1065 updater->HandleManifestResults(dummy_manifest_fetch_data, | 1091 updater->HandleManifestResults(dummy_manifest_fetch_data, |
1066 UpdateManifest::Results()); | 1092 UpdateManifest::Results()); |
1067 } | 1093 } |
1068 | 1094 |
1069 // TODO(asargent) - (http://crbug.com/12780) add tests for: | 1095 // TODO(asargent) - (http://crbug.com/12780) add tests for: |
1070 // -prodversionmin (shouldn't update if browser version too old) | 1096 // -prodversionmin (shouldn't update if browser version too old) |
1071 // -manifests & updates arriving out of order / interleaved | 1097 // -manifests & updates arriving out of order / interleaved |
1072 // -malformed update url (empty, file://, has query, has a # fragment, etc.) | 1098 // -malformed update url (empty, file://, has query, has a # fragment, etc.) |
1073 // -An extension gets uninstalled while updates are in progress (so it doesn't | 1099 // -An extension gets uninstalled while updates are in progress (so it doesn't |
1074 // "come back from the dead") | 1100 // "come back from the dead") |
1075 // -An extension gets manually updated to v3 while we're downloading v2 (ie | 1101 // -An extension gets manually updated to v3 while we're downloading v2 (ie |
1076 // you don't get downgraded accidentally) | 1102 // you don't get downgraded accidentally) |
1077 // -An update manifest mentions multiple updates | 1103 // -An update manifest mentions multiple updates |
OLD | NEW |