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

Unified Diff: chrome/browser/component_updater/test/component_updater_service_unittest.cc

Issue 11859044: Add a way to specify different source urls for the component updater (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/component_updater/test/component_updater_service_unittest.cc
===================================================================
--- chrome/browser/component_updater/test/component_updater_service_unittest.cc (revision 177059)
+++ chrome/browser/component_updater/test/component_updater_service_unittest.cc (working copy)
@@ -32,7 +32,7 @@
// and loops faster. In actual usage it takes hours do to a full cycle.
class TestConfigurator : public ComponentUpdateService::Configurator {
public:
- TestConfigurator() : times_(1) {
+ TestConfigurator() : times_(1), recheck_time_(0) {
}
virtual int InitialDelay() OVERRIDE { return 0; }
@@ -54,10 +54,19 @@
}
virtual int MinimumReCheckWait() OVERRIDE {
- return 0;
+ return recheck_time_;
}
- virtual GURL UpdateUrl() OVERRIDE { return GURL("http://localhost/upd"); }
+ virtual GURL UpdateUrl(CrxComponent::UrlSource source) OVERRIDE {
+ switch (source) {
+ case CrxComponent::BANDAID:
+ return GURL("http://localhost/upd");
+ case CrxComponent::CWS_PUBLIC:
+ return GURL("http://localhost/cws");
+ default:
+ return GURL("http://wronghost/bad");
+ };
+ }
virtual const char* ExtraRequestParams() OVERRIDE { return "extra=foo"; }
@@ -76,8 +85,13 @@
// Set how many update checks are called, the default value is just once.
void SetLoopCount(int times) { times_ = times; }
+ void SetRecheckTime(int seconds) {
+ recheck_time_ = seconds;
+ }
+
private:
int times_;
+ int recheck_time_;
};
class TestInstaller : public ComponentInstaller {
@@ -349,6 +363,9 @@
EXPECT_EQ(0, static_cast<TestInstaller*>(com1.installer)->error());
EXPECT_EQ(1, static_cast<TestInstaller*>(com1.installer)->install_count());
+ EXPECT_EQ(0, static_cast<TestInstaller*>(com2.installer)->error());
+ EXPECT_EQ(0, static_cast<TestInstaller*>(com2.installer)->install_count());
+
EXPECT_EQ(3, interceptor.GetHitCount());
ASSERT_EQ(5ul, notification_tracker().size());
@@ -368,6 +385,78 @@
component_updater()->Stop();
}
+// This test is like the above InstallCrx but the second component
+// has a different source. In this case there would be two manifest
+// checks to different urls, each only containing one component.
+TEST_F(ComponentUpdaterTest, InstallCrxTwoSources) {
+ MessageLoop message_loop;
+ content::TestBrowserThread ui_thread(BrowserThread::UI, &message_loop);
+ content::TestBrowserThread file_thread(BrowserThread::FILE);
+ content::TestBrowserThread io_thread(BrowserThread::IO);
+
+ io_thread.StartIOThread();
+ file_thread.Start();
+
+ content::URLRequestPrepackagedInterceptor interceptor;
+
+ CrxComponent com1;
+ RegisterComponent(&com1, kTestComponent_abag, Version("2.2"));
+ CrxComponent com2;
+ com2.source = CrxComponent::CWS_PUBLIC;
+ RegisterComponent(&com2, kTestComponent_jebg, Version("0.9"));
+
+ const GURL expected_update_url_1(
+ "http://localhost/upd?extra=foo&x=id%3D"
+ "abagagagagagagagagagagagagagagag%26v%3D2.2%26uc");
+
+ const GURL expected_update_url_2(
+ "http://localhost/cws?extra=foo&x=id%3D"
+ "jebgalgnebhfojomionfpkfelancnnkf%26v%3D0.9%26uc");
+
+ interceptor.SetResponse(expected_update_url_1,
+ test_file("updatecheck_reply_3.xml"));
+ interceptor.SetResponse(expected_update_url_2,
+ test_file("updatecheck_reply_1.xml"));
+ interceptor.SetResponse(GURL(expected_crx_url),
+ test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
+
+ test_configurator()->SetLoopCount(3);
+
+ // We have to set SetRecheckTime to something bigger than 0 or else the
+ // component updater will keep re-checking the 'abag' component because
+ // the default source pre-empts the other sources.
+ test_configurator()->SetRecheckTime(60*60);
+
+ component_updater()->Start();
+ message_loop.Run();
+
+ EXPECT_EQ(0, static_cast<TestInstaller*>(com1.installer)->error());
+ EXPECT_EQ(0, static_cast<TestInstaller*>(com1.installer)->install_count());
+ EXPECT_EQ(0, static_cast<TestInstaller*>(com2.installer)->error());
+ EXPECT_EQ(1, static_cast<TestInstaller*>(com2.installer)->install_count());
+
+ EXPECT_EQ(3, interceptor.GetHitCount());
+
+ ASSERT_EQ(6ul, notification_tracker().size());
+
+ TestNotificationTracker::Event ev0 = notification_tracker().at(1);
+ EXPECT_EQ(chrome::NOTIFICATION_COMPONENT_UPDATER_SLEEPING, ev0.type);
+
+ TestNotificationTracker::Event ev1 = notification_tracker().at(2);
+ EXPECT_EQ(chrome::NOTIFICATION_COMPONENT_UPDATE_FOUND, ev1.type);
+
+ TestNotificationTracker::Event ev2 = notification_tracker().at(3);
+ EXPECT_EQ(chrome::NOTIFICATION_COMPONENT_UPDATE_READY, ev2.type);
+
+ TestNotificationTracker::Event ev3 = notification_tracker().at(4);
+ EXPECT_EQ(chrome::NOTIFICATION_COMPONENT_UPDATER_SLEEPING, ev3.type);
+
+ TestNotificationTracker::Event ev4 = notification_tracker().at(5);
+ EXPECT_EQ(chrome::NOTIFICATION_COMPONENT_UPDATER_SLEEPING, ev3.type);
+
+ component_updater()->Stop();
+}
+
// This test checks that the "prodversionmin" value is handled correctly. In
// particular there should not be an install because the minimum product
// version is much higher than of chrome.
« no previous file with comments | « chrome/browser/component_updater/component_updater_service.cc ('k') | chrome/test/data/components/updatecheck_reply_3.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698