| 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 |