blob: eb0c23f9958e362736e4a269881e4048af094948 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
// Copyright (c) 2009 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "webkit/appcache/appcache_storage.h"
#include "base/stl_util-inl.h"
namespace appcache {
// static
const int64 AppCacheStorage::kUnitializedId = -1;
AppCacheStorage::AppCacheStorage(AppCacheService* service)
: last_cache_id_(kUnitializedId), last_group_id_(kUnitializedId),
last_response_id_(kUnitializedId), service_(service) {
}
AppCacheStorage::~AppCacheStorage() {
STLDeleteValues(&pending_info_loads_);
DCHECK(delegate_references_.empty());
}
void AppCacheStorage::LoadResponseInfo(
const GURL& manifest_url, int64 id, Delegate* delegate) {
AppCacheResponseInfo* info = working_set_.GetResponseInfo(id);
if (info) {
delegate->OnResponseInfoLoaded(info, id);
return;
}
ResponseInfoLoadTask* info_load =
GetOrCreateResponseInfoLoadTask(manifest_url, id);
DCHECK(manifest_url == info_load->manifest_url());
DCHECK(id == info_load->response_id());
info_load->AddDelegate(GetOrCreateDelegateReference(delegate));
info_load->StartIfNeeded();
}
} // namespace appcache
|