summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content/browser/appcache/appcache_update_job.cc11
-rw-r--r--content/browser/appcache/appcache_update_job.h2
-rw-r--r--content/browser/appcache/appcache_update_job_unittest.cc34
3 files changed, 10 insertions, 37 deletions
diff --git a/content/browser/appcache/appcache_update_job.cc b/content/browser/appcache/appcache_update_job.cc
index b5d29a9..4b21286 100644
--- a/content/browser/appcache/appcache_update_job.cc
+++ b/content/browser/appcache/appcache_update_job.cc
@@ -7,11 +7,12 @@
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/compiler_specific.h"
-#include "base/message_loop/message_loop.h"
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
+#include "base/thread_task_runner_handle.h"
#include "content/browser/appcache/appcache_group.h"
#include "content/browser/appcache/appcache_histograms.h"
+#include "content/public/browser/browser_thread.h"
#include "net/base/io_buffer.h"
#include "net/base/load_flags.h"
#include "net/base/net_errors.h"
@@ -360,7 +361,8 @@ AppCacheUpdateJob::AppCacheUpdateJob(AppCacheServiceImpl* service,
manifest_fetcher_(NULL),
manifest_has_valid_mime_type_(false),
stored_state_(UNSTORED),
- storage_(service->storage()) {
+ storage_(service->storage()),
+ weak_factory_(this) {
service_->AddObserver(this);
}
@@ -440,7 +442,10 @@ void AppCacheUpdateJob::StartUpdate(AppCacheHost* host,
is_new_pending_master_entry);
}
- FetchManifest(true);
+ BrowserThread::PostAfterStartupTask(
+ FROM_HERE, base::ThreadTaskRunnerHandle::Get(),
+ base::Bind(&AppCacheUpdateJob::FetchManifest, weak_factory_.GetWeakPtr(),
+ true));
}
AppCacheResponseWriter* AppCacheUpdateJob::CreateResponseWriter() {
diff --git a/content/browser/appcache/appcache_update_job.h b/content/browser/appcache/appcache_update_job.h
index 4d2d896..8dfd153 100644
--- a/content/browser/appcache/appcache_update_job.h
+++ b/content/browser/appcache/appcache_update_job.h
@@ -13,6 +13,7 @@
#include "base/gtest_prod_util.h"
#include "base/memory/ref_counted.h"
+#include "base/memory/weak_ptr.h"
#include "base/time/time.h"
#include "content/browser/appcache/appcache.h"
#include "content/browser/appcache/appcache_host.h"
@@ -335,6 +336,7 @@ class CONTENT_EXPORT AppCacheUpdateJob
StoredState stored_state_;
AppCacheStorage* storage_;
+ base::WeakPtrFactory<AppCacheUpdateJob> weak_factory_;
FRIEND_TEST_ALL_PREFIXES(content::AppCacheGroupTest, QueueUpdate);
diff --git a/content/browser/appcache/appcache_update_job_unittest.cc b/content/browser/appcache/appcache_update_job_unittest.cc
index 4955a71..b69af52 100644
--- a/content/browser/appcache/appcache_update_job_unittest.cc
+++ b/content/browser/appcache/appcache_update_job_unittest.cc
@@ -724,9 +724,6 @@ class AppCacheUpdateJobTest : public testing::Test,
MockFrontend* frontend = MakeMockFrontend();
AppCacheHost* host = MakeHost(1, frontend);
update->StartUpdate(host, GURL());
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
-
- update->manifest_fetcher_->request()->CancelWithError(-100);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -757,9 +754,6 @@ class AppCacheUpdateJobTest : public testing::Test,
host2->AssociateCompleteCache(cache);
update->StartUpdate(NULL, GURL());
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
-
- update->manifest_fetcher_->request()->CancelWithError(-100);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -794,7 +788,6 @@ class AppCacheUpdateJobTest : public testing::Test,
MockFrontend* frontend = MakeMockFrontend();
AppCacheHost* host = MakeHost(1, frontend);
update->StartUpdate(host, GURL());
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -826,7 +819,6 @@ class AppCacheUpdateJobTest : public testing::Test,
frontend->SetVerifyProgressEvents(true);
update->StartUpdate(NULL, GURL());
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -864,7 +856,6 @@ class AppCacheUpdateJobTest : public testing::Test,
host2->AssociateCompleteCache(cache);
update->StartUpdate(NULL, GURL());
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -895,7 +886,6 @@ class AppCacheUpdateJobTest : public testing::Test,
MockFrontend* frontend = MakeMockFrontend();
AppCacheHost* host = MakeHost(1, frontend);
update->StartUpdate(host, GURL());
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -921,7 +911,6 @@ class AppCacheUpdateJobTest : public testing::Test,
MockFrontend* frontend = MakeMockFrontend();
AppCacheHost* host = MakeHost(1, frontend);
update->StartUpdate(host, GURL());
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -953,7 +942,6 @@ class AppCacheUpdateJobTest : public testing::Test,
host2->AssociateCompleteCache(cache);
update->StartUpdate(NULL, GURL());
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -1040,7 +1028,6 @@ class AppCacheUpdateJobTest : public testing::Test,
host->AssociateCompleteCache(cache);
update->StartUpdate(NULL, GURL());
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -1061,7 +1048,6 @@ class AppCacheUpdateJobTest : public testing::Test,
AppCacheUpdateJob* update = group_->update_job_;
update->StartUpdate(NULL, GURL());
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
WaitForUpdateToFinish();
}
@@ -1391,7 +1377,6 @@ class AppCacheUpdateJobTest : public testing::Test,
AppCacheEntry(AppCacheEntry::MASTER, 111));
update->StartUpdate(NULL, GURL());
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -1431,7 +1416,6 @@ class AppCacheUpdateJobTest : public testing::Test,
MockFrontend* frontend = MakeMockFrontend();
AppCacheHost* host = MakeHost(1, frontend);
update->StartUpdate(host, GURL());
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -1465,7 +1449,6 @@ class AppCacheUpdateJobTest : public testing::Test,
host2->AssociateCompleteCache(cache);
update->StartUpdate(NULL, GURL());
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -1533,7 +1516,6 @@ class AppCacheUpdateJobTest : public testing::Test,
MakeAppCacheResponseInfo(kManifestUrl, 555, kRawHeaders);
update->StartUpdate(NULL, GURL());
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -1602,7 +1584,6 @@ class AppCacheUpdateJobTest : public testing::Test,
frontend1->SetVerifyProgressEvents(true);
update->StartUpdate(NULL, GURL());
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -1642,7 +1623,6 @@ class AppCacheUpdateJobTest : public testing::Test,
frontend->SetVerifyProgressEvents(true);
update->StartUpdate(host, GURL());
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -1681,7 +1661,6 @@ class AppCacheUpdateJobTest : public testing::Test,
MockFrontend* frontend = MakeMockFrontend();
AppCacheHost* host = MakeHost(1, frontend);
update->StartUpdate(host, GURL());
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -1715,7 +1694,6 @@ class AppCacheUpdateJobTest : public testing::Test,
MockFrontend* frontend = MakeMockFrontend();
AppCacheHost* host = MakeHost(1, frontend);
update->StartUpdate(host, GURL());
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -1750,7 +1728,6 @@ class AppCacheUpdateJobTest : public testing::Test,
MockFrontend* frontend = MakeMockFrontend();
AppCacheHost* host = MakeHost(1, frontend);
update->StartUpdate(host, GURL());
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -1784,7 +1761,6 @@ class AppCacheUpdateJobTest : public testing::Test,
MockFrontend* frontend = MakeMockFrontend();
AppCacheHost* host = MakeHost(1, frontend);
update->StartUpdate(host, GURL());
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -1817,7 +1793,6 @@ class AppCacheUpdateJobTest : public testing::Test,
MockFrontend* frontend = MakeMockFrontend();
AppCacheHost* host = MakeHost(1, frontend);
update->StartUpdate(host, GURL());
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -1978,7 +1953,6 @@ class AppCacheUpdateJobTest : public testing::Test,
host2->AssociateCompleteCache(cache);
update->StartUpdate(NULL, GURL());
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -2008,9 +1982,6 @@ class AppCacheUpdateJobTest : public testing::Test,
AppCacheHost* host = MakeHost(1, frontend);
host->new_master_entry_url_ = GURL("http://failme/blah");
update->StartUpdate(host, host->new_master_entry_url_);
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
-
- update->manifest_fetcher_->request()->CancelWithError(-100);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -2037,7 +2008,6 @@ class AppCacheUpdateJobTest : public testing::Test,
AppCacheHost* host = MakeHost(1, frontend);
host->new_master_entry_url_ = MockHttpServer::GetMockUrl("files/blah");
update->StartUpdate(host, host->new_master_entry_url_);
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -2067,7 +2037,6 @@ class AppCacheUpdateJobTest : public testing::Test,
host->new_master_entry_url_ = MockHttpServer::GetMockUrl("files/blah");
update->StartUpdate(host, host->new_master_entry_url_);
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -2097,7 +2066,6 @@ class AppCacheUpdateJobTest : public testing::Test,
MockHttpServer::GetMockUrl("files/explicit1");
update->StartUpdate(host, host->new_master_entry_url_);
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up checks for when update job finishes.
do_checks_after_update_finished_ = true;
@@ -2386,7 +2354,6 @@ class AppCacheUpdateJobTest : public testing::Test,
host1->new_master_entry_url_ =
MockHttpServer::GetMockUrl("files/explicit2");
update->StartUpdate(host1, host1->new_master_entry_url_);
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up additional updates to be started while update is in progress.
MockFrontend* frontend2 = MakeMockFrontend();
@@ -2484,7 +2451,6 @@ class AppCacheUpdateJobTest : public testing::Test,
host2->new_master_entry_url_ =
MockHttpServer::GetMockUrl("files/nosuchfile");
update->StartUpdate(host2, host2->new_master_entry_url_);
- EXPECT_TRUE(update->manifest_fetcher_ != NULL);
// Set up additional updates to be started while update is in progress.
MockFrontend* frontend3 = MakeMockFrontend();