OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "storage/browser/blob/view_blob_internals_job.h" | 5 #include "storage/browser/blob/view_blob_internals_job.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
11 #include "base/compiler_specific.h" | 11 #include "base/compiler_specific.h" |
12 #include "base/format_macros.h" | 12 #include "base/format_macros.h" |
13 #include "base/i18n/number_formatting.h" | 13 #include "base/i18n/number_formatting.h" |
14 #include "base/i18n/time_formatting.h" | 14 #include "base/i18n/time_formatting.h" |
15 #include "base/location.h" | 15 #include "base/location.h" |
16 #include "base/logging.h" | 16 #include "base/logging.h" |
17 #include "base/single_thread_task_runner.h" | 17 #include "base/single_thread_task_runner.h" |
18 #include "base/strings/string_number_conversions.h" | 18 #include "base/strings/string_number_conversions.h" |
19 #include "base/strings/string_util.h" | 19 #include "base/strings/string_util.h" |
20 #include "base/strings/stringprintf.h" | 20 #include "base/strings/stringprintf.h" |
21 #include "base/strings/utf_string_conversions.h" | 21 #include "base/strings/utf_string_conversions.h" |
22 #include "base/threading/thread_task_runner_handle.h" | 22 #include "base/threading/thread_task_runner_handle.h" |
23 #include "net/base/escape.h" | 23 #include "net/base/escape.h" |
24 #include "net/base/net_errors.h" | 24 #include "net/base/net_errors.h" |
25 #include "net/disk_cache/disk_cache.h" | 25 #include "net/disk_cache/disk_cache.h" |
26 #include "net/url_request/url_request.h" | 26 #include "net/url_request/url_request.h" |
27 #include "storage/browser/blob/blob_data_item.h" | 27 #include "storage/browser/blob/blob_data_item.h" |
| 28 #include "storage/browser/blob/blob_entry.h" |
28 #include "storage/browser/blob/blob_storage_context.h" | 29 #include "storage/browser/blob/blob_storage_context.h" |
29 #include "storage/browser/blob/blob_storage_registry.h" | 30 #include "storage/browser/blob/blob_storage_registry.h" |
30 #include "storage/browser/blob/internal_blob_data.h" | 31 #include "storage/browser/blob/shareable_blob_data_item.h" |
31 | 32 |
32 namespace { | 33 namespace { |
33 | 34 |
34 const char kEmptyBlobStorageMessage[] = "No available blob data."; | 35 const char kEmptyBlobStorageMessage[] = "No available blob data."; |
35 const char kContentType[] = "Content Type: "; | 36 const char kContentType[] = "Content Type: "; |
36 const char kContentDisposition[] = "Content Disposition: "; | 37 const char kContentDisposition[] = "Content Disposition: "; |
37 const char kCount[] = "Count: "; | 38 const char kCount[] = "Count: "; |
38 const char kIndex[] = "Index: "; | 39 const char kIndex[] = "Index: "; |
39 const char kType[] = "Type: "; | 40 const char kType[] = "Type: "; |
40 const char kPath[] = "Path: "; | 41 const char kPath[] = "Path: "; |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 int ViewBlobInternalsJob::GetData( | 137 int ViewBlobInternalsJob::GetData( |
137 std::string* mime_type, | 138 std::string* mime_type, |
138 std::string* charset, | 139 std::string* charset, |
139 std::string* data, | 140 std::string* data, |
140 const net::CompletionCallback& callback) const { | 141 const net::CompletionCallback& callback) const { |
141 mime_type->assign("text/html"); | 142 mime_type->assign("text/html"); |
142 charset->assign("UTF-8"); | 143 charset->assign("UTF-8"); |
143 | 144 |
144 data->clear(); | 145 data->clear(); |
145 StartHTML(data); | 146 StartHTML(data); |
146 if (blob_storage_context_->registry_.blob_map_.empty()) | 147 if (blob_storage_context_->registry().blob_map_.empty()) |
147 data->append(kEmptyBlobStorageMessage); | 148 data->append(kEmptyBlobStorageMessage); |
148 else | 149 else |
149 GenerateHTML(data); | 150 GenerateHTML(data); |
150 EndHTML(data); | 151 EndHTML(data); |
151 return net::OK; | 152 return net::OK; |
152 } | 153 } |
153 | 154 |
154 void ViewBlobInternalsJob::GenerateHTML(std::string* out) const { | 155 void ViewBlobInternalsJob::GenerateHTML(std::string* out) const { |
155 for (BlobStorageRegistry::BlobMap::const_iterator iter = | 156 for (BlobStorageRegistry::BlobMap::const_iterator iter = |
156 blob_storage_context_->registry_.blob_map_.begin(); | 157 blob_storage_context_->registry().blob_map_.begin(); |
157 iter != blob_storage_context_->registry_.blob_map_.end(); ++iter) { | 158 iter != blob_storage_context_->registry().blob_map_.end(); ++iter) { |
158 AddHTMLBoldText(iter->first, out); | 159 AddHTMLBoldText(iter->first, out); |
159 GenerateHTMLForBlobData(*iter->second->data, iter->second->content_type, | 160 GenerateHTMLForBlobData(*iter->second, iter->second->content_type(), |
160 iter->second->content_disposition, | 161 iter->second->content_disposition(), |
161 iter->second->refcount, out); | 162 iter->second->refcount(), out); |
162 } | 163 } |
163 if (!blob_storage_context_->registry_.url_to_uuid_.empty()) { | 164 if (!blob_storage_context_->registry().url_to_uuid_.empty()) { |
164 AddHorizontalRule(out); | 165 AddHorizontalRule(out); |
165 for (BlobStorageRegistry::URLMap::const_iterator iter = | 166 for (BlobStorageRegistry::URLMap::const_iterator iter = |
166 blob_storage_context_->registry_.url_to_uuid_.begin(); | 167 blob_storage_context_->registry().url_to_uuid_.begin(); |
167 iter != blob_storage_context_->registry_.url_to_uuid_.end(); ++iter) { | 168 iter != blob_storage_context_->registry().url_to_uuid_.end(); ++iter) { |
168 AddHTMLBoldText(iter->first.spec(), out); | 169 AddHTMLBoldText(iter->first.spec(), out); |
169 StartHTMLList(out); | 170 StartHTMLList(out); |
170 AddHTMLListItem(kUUID, iter->second, out); | 171 AddHTMLListItem(kUUID, iter->second, out); |
171 EndHTMLList(out); | 172 EndHTMLList(out); |
172 } | 173 } |
173 } | 174 } |
174 } | 175 } |
175 | 176 |
176 void ViewBlobInternalsJob::GenerateHTMLForBlobData( | 177 void ViewBlobInternalsJob::GenerateHTMLForBlobData( |
177 const InternalBlobData& blob_data, | 178 const BlobEntry& blob_data, |
178 const std::string& content_type, | 179 const std::string& content_type, |
179 const std::string& content_disposition, | 180 const std::string& content_disposition, |
180 int refcount, | 181 int refcount, |
181 std::string* out) { | 182 std::string* out) { |
182 StartHTMLList(out); | 183 StartHTMLList(out); |
183 | 184 |
184 AddHTMLListItem(kRefcount, base::IntToString(refcount), out); | 185 AddHTMLListItem(kRefcount, base::IntToString(refcount), out); |
185 if (!content_type.empty()) | 186 if (!content_type.empty()) |
186 AddHTMLListItem(kContentType, content_type, out); | 187 AddHTMLListItem(kContentType, content_type, out); |
187 if (!content_disposition.empty()) | 188 if (!content_disposition.empty()) |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 AddHTMLListItem(kModificationTime, base::UTF16ToUTF8( | 226 AddHTMLListItem(kModificationTime, base::UTF16ToUTF8( |
226 TimeFormatFriendlyDateAndTime(item.expected_modification_time())), | 227 TimeFormatFriendlyDateAndTime(item.expected_modification_time())), |
227 out); | 228 out); |
228 } | 229 } |
229 break; | 230 break; |
230 case DataElement::TYPE_DISK_CACHE_ENTRY: | 231 case DataElement::TYPE_DISK_CACHE_ENTRY: |
231 AddHTMLListItem(kType, "disk cache entry", out); | 232 AddHTMLListItem(kType, "disk cache entry", out); |
232 AddHTMLListItem(kURL, item.disk_cache_entry()->GetKey(), out); | 233 AddHTMLListItem(kURL, item.disk_cache_entry()->GetKey(), out); |
233 break; | 234 break; |
234 case DataElement::TYPE_BYTES_DESCRIPTION: | 235 case DataElement::TYPE_BYTES_DESCRIPTION: |
| 236 AddHTMLListItem(kType, "pending data", out); |
235 case DataElement::TYPE_UNKNOWN: | 237 case DataElement::TYPE_UNKNOWN: |
236 NOTREACHED(); | 238 NOTREACHED(); |
237 break; | 239 break; |
238 } | 240 } |
239 if (item.offset()) { | 241 if (item.offset()) { |
240 AddHTMLListItem(kOffset, base::UTF16ToUTF8(base::FormatNumber( | 242 AddHTMLListItem(kOffset, base::UTF16ToUTF8(base::FormatNumber( |
241 static_cast<int64_t>(item.offset()))), | 243 static_cast<int64_t>(item.offset()))), |
242 out); | 244 out); |
243 } | 245 } |
244 if (static_cast<int64_t>(item.length()) != -1) { | 246 if (static_cast<int64_t>(item.length()) != -1) { |
245 AddHTMLListItem(kLength, base::UTF16ToUTF8(base::FormatNumber( | 247 AddHTMLListItem(kLength, base::UTF16ToUTF8(base::FormatNumber( |
246 static_cast<int64_t>(item.length()))), | 248 static_cast<int64_t>(item.length()))), |
247 out); | 249 out); |
248 } | 250 } |
249 | 251 |
250 if (has_multi_items) | 252 if (has_multi_items) |
251 EndHTMLList(out); | 253 EndHTMLList(out); |
252 } | 254 } |
253 | 255 |
254 EndHTMLList(out); | 256 EndHTMLList(out); |
255 } | 257 } |
256 | 258 |
257 } // namespace storage | 259 } // namespace storage |
OLD | NEW |