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

Unified Diff: webkit/browser/appcache/appcache_update_job.cc

Issue 22314003: NavigationController prototype Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: NavController prototype - chrome side Created 7 years, 3 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
« no previous file with comments | « webkit/browser/appcache/appcache_update_job.h ('k') | webkit/browser/appcache/appcache_url_request_job.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/browser/appcache/appcache_update_job.cc
diff --git a/webkit/browser/appcache/appcache_update_job.cc b/webkit/browser/appcache/appcache_update_job.cc
index 4efe947af845e32051033d6640e9cf37cea0e7b3..a59ce163c16c776f5677871df0c7287e2ab4c426 100644
--- a/webkit/browser/appcache/appcache_update_job.cc
+++ b/webkit/browser/appcache/appcache_update_job.cc
@@ -302,7 +302,8 @@ AppCacheUpdateJob::AppCacheUpdateJob(AppCacheService* service,
master_entries_completed_(0),
url_fetches_completed_(0),
manifest_fetcher_(NULL),
- stored_state_(UNSTORED) {
+ stored_state_(UNSTORED),
+ using_fake_manifest_(false) {
}
AppCacheUpdateJob::~AppCacheUpdateJob() {
@@ -324,6 +325,14 @@ void AppCacheUpdateJob::StartUpdate(AppCacheHost* host,
DCHECK(group_->update_job() == this);
DCHECK(!group_->is_obsolete());
+ // Hackery for 'registerController'
+ if (group_->HasCache() &&
+ !group_->newest_complete_cache()->GetEntry(group_->manifest_url())) {
+ using_fake_manifest_ = true;
+ DeleteSoon();
+ return;
+ }
+
bool is_new_pending_master_entry = false;
if (!new_master_resource.is_empty()) {
DCHECK(new_master_resource == host->pending_master_entry_url());
@@ -381,6 +390,29 @@ void AppCacheUpdateJob::StartUpdate(AppCacheHost* host,
FetchManifest(true);
}
+// Hackery for 'registerController'
+void AppCacheUpdateJob::StartUpdateWithFakeManifest(Manifest* manifest) {
+ DCHECK(group_->update_job() == this);
+ DCHECK(!group_->is_obsolete());
+
+ using_fake_manifest_ = true;
+
+ // Begin the update process for the group.
+ group_->SetUpdateStatus(AppCacheGroup::CHECKING);
+ DCHECK(!group_->HasCache()); // we don't ever 'upgrade' these caches
+ update_type_ = CACHE_ATTEMPT;
+
+ // Jump straight into downloading the controller script.
+ internal_state_ = DOWNLOADING;
+ inprogress_cache_ = new AppCache(service_->storage(),
+ service_->storage()->NewCacheId());
+ BuildUrlFileList(*manifest);
+ inprogress_cache_->InitializeWithManifest(manifest);
+ group_->SetUpdateStatus(AppCacheGroup::DOWNLOADING);
+ NotifyAllAssociatedHosts(DOWNLOADING_EVENT);
+ FetchUrls();
+}
+
AppCacheResponseWriter* AppCacheUpdateJob::CreateResponseWriter() {
AppCacheResponseWriter* writer =
service_->storage()->CreateResponseWriter(manifest_url_,
@@ -1222,6 +1254,18 @@ void AppCacheUpdateJob::MaybeCompleteUpdate() {
return;
}
+ // Hackery for 'registerController'
+ if (using_fake_manifest_) {
+ if (stored_state_ == UNSTORED) {
+ // Skip refetching the manifest that does not exist.
+ StoreGroupAndCache();
+ return;
+ }
+ if (stored_state_ == STORING)
+ return;
+ internal_state_ = REFETCH_MANIFEST; // hackery to fallthru to below
+ }
+
switch (internal_state_) {
case NO_UPDATE:
if (master_entries_completed_ > 0) {
« no previous file with comments | « webkit/browser/appcache/appcache_update_job.h ('k') | webkit/browser/appcache/appcache_url_request_job.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698