Chromium Code Reviews| 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" |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 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_entry.h" |
| 29 #include "storage/browser/blob/blob_storage_context.h" | 29 #include "storage/browser/blob/blob_storage_context.h" |
| 30 #include "storage/browser/blob/blob_storage_registry.h" | 30 #include "storage/browser/blob/blob_storage_registry.h" |
| 31 #include "storage/browser/blob/shareable_blob_data_item.h" | 31 #include "storage/browser/blob/shareable_blob_data_item.h" |
| 32 #include "storage/common/blob_storage/blob_storage_constants.h" | |
| 32 | 33 |
| 33 namespace { | 34 namespace { |
| 35 using storage::BlobStatus; | |
| 34 | 36 |
| 35 const char kEmptyBlobStorageMessage[] = "No available blob data."; | 37 const char kEmptyBlobStorageMessage[] = "No available blob data."; |
| 36 const char kContentType[] = "Content Type: "; | 38 const char kContentType[] = "Content Type: "; |
| 37 const char kContentDisposition[] = "Content Disposition: "; | 39 const char kContentDisposition[] = "Content Disposition: "; |
| 38 const char kCount[] = "Count: "; | 40 const char kCount[] = "Count: "; |
| 39 const char kIndex[] = "Index: "; | 41 const char kIndex[] = "Index: "; |
| 40 const char kType[] = "Type: "; | 42 const char kType[] = "Type: "; |
| 41 const char kPath[] = "Path: "; | 43 const char kPath[] = "Path: "; |
| 42 const char kURL[] = "URL: "; | 44 const char kURL[] = "URL: "; |
| 43 const char kModificationTime[] = "Modification Time: "; | 45 const char kModificationTime[] = "Modification Time: "; |
| 44 const char kOffset[] = "Offset: "; | 46 const char kOffset[] = "Offset: "; |
| 45 const char kLength[] = "Length: "; | 47 const char kLength[] = "Length: "; |
| 46 const char kUUID[] = "Uuid: "; | 48 const char kUUID[] = "Uuid: "; |
| 47 const char kRefcount[] = "Refcount: "; | 49 const char kRefcount[] = "Refcount: "; |
| 50 const char kStatus[] = "Status: "; | |
| 48 | 51 |
| 49 void StartHTML(std::string* out) { | 52 void StartHTML(std::string* out) { |
| 50 out->append( | 53 out->append( |
| 51 "<!DOCTYPE HTML>" | 54 "<!DOCTYPE HTML>" |
| 52 "<html><title>Blob Storage Internals</title>" | 55 "<html><title>Blob Storage Internals</title>" |
| 53 "<meta http-equiv=\"Content-Security-Policy\"" | 56 "<meta http-equiv=\"Content-Security-Policy\"" |
| 54 " content=\"object-src 'none'; script-src 'none'\">\n" | 57 " content=\"object-src 'none'; script-src 'none'\">\n" |
| 55 "<style>\n" | 58 "<style>\n" |
| 56 "body { font-family: sans-serif; font-size: 0.8em; }\n" | 59 "body { font-family: sans-serif; font-size: 0.8em; }\n" |
| 57 "tt, code, pre { font-family: WebKitHack, monospace; }\n" | 60 "tt, code, pre { font-family: WebKitHack, monospace; }\n" |
| 58 "form { display: inline }\n" | 61 "form { display: inline }\n" |
| 59 ".subsection_body { margin: 10px 0 10px 2em; }\n" | 62 ".subsection_body { margin: 10px 0 10px 2em; }\n" |
| 60 ".subsection_title { font-weight: bold; }\n" | 63 ".subsection_title { font-weight: bold; }\n" |
| 61 "</style>\n" | 64 "</style>\n" |
| 62 "</head><body>\n\n"); | 65 "</head><body>\n\n"); |
| 63 } | 66 } |
| 64 | 67 |
| 68 std::string StatusToString(BlobStatus status) { | |
| 69 switch (status) { | |
| 70 case BlobStatus::ERR_INVALID_CONSTRUCTION_ARGUMENTS: | |
| 71 return "Illegal blob construction."; | |
|
pwnall
2017/03/01 16:44:05
Can you also add the constant names here? It'll ma
dmurph
2017/03/01 20:36:57
sgtm - I made it a little shorter by removing the
| |
| 72 case BlobStatus::ERR_OUT_OF_MEMORY: | |
| 73 return "Not enough memory or disk space available for blob."; | |
| 74 case BlobStatus::ERR_FILE_WRITE_FAILED: | |
| 75 return "File operation filed"; | |
| 76 case BlobStatus::ERR_SOURCE_DIED_IN_TRANSIT: | |
| 77 return "Blob source died before transporting data to browser."; | |
| 78 case BlobStatus::ERR_BLOB_DEREFERENCED_WHILE_BUILDING: | |
| 79 return "Blob references removed while building."; | |
| 80 case BlobStatus::ERR_REFERENCED_BLOB_BROKEN: | |
| 81 return "Blob contains dependency blob that is broken."; | |
| 82 case BlobStatus::DONE: | |
| 83 return "Blob built with no errors."; | |
| 84 case BlobStatus::PENDING_QUOTA: | |
| 85 return "Blob construction is pending on memory or file quota."; | |
| 86 case BlobStatus::PENDING_TRANSPORT: | |
| 87 return "Blob construction is pending on data transport from renderer."; | |
| 88 case BlobStatus::PENDING_INTERNALS: | |
| 89 return "Blob construction is pending on dependency blobs to finish " | |
| 90 "construction."; | |
| 91 } | |
| 92 NOTREACHED(); | |
| 93 return "Invalid blob state."; | |
| 94 } | |
| 95 | |
| 65 void EndHTML(std::string* out) { | 96 void EndHTML(std::string* out) { |
| 66 out->append("\n</body></html>"); | 97 out->append("\n</body></html>"); |
| 67 } | 98 } |
| 68 | 99 |
| 69 void AddHTMLBoldText(const std::string& text, std::string* out) { | 100 void AddHTMLBoldText(const std::string& text, std::string* out) { |
| 70 out->append("<b>"); | 101 out->append("<b>"); |
| 71 out->append(net::EscapeForHTML(text)); | 102 out->append(net::EscapeForHTML(text)); |
| 72 out->append("</b>"); | 103 out->append("</b>"); |
| 73 } | 104 } |
| 74 | 105 |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 174 | 205 |
| 175 void ViewBlobInternalsJob::GenerateHTMLForBlobData( | 206 void ViewBlobInternalsJob::GenerateHTMLForBlobData( |
| 176 const BlobEntry& blob_data, | 207 const BlobEntry& blob_data, |
| 177 const std::string& content_type, | 208 const std::string& content_type, |
| 178 const std::string& content_disposition, | 209 const std::string& content_disposition, |
| 179 int refcount, | 210 int refcount, |
| 180 std::string* out) { | 211 std::string* out) { |
| 181 StartHTMLList(out); | 212 StartHTMLList(out); |
| 182 | 213 |
| 183 AddHTMLListItem(kRefcount, base::IntToString(refcount), out); | 214 AddHTMLListItem(kRefcount, base::IntToString(refcount), out); |
| 215 AddHTMLListItem(kStatus, StatusToString(blob_data.status()), out); | |
| 184 if (!content_type.empty()) | 216 if (!content_type.empty()) |
| 185 AddHTMLListItem(kContentType, content_type, out); | 217 AddHTMLListItem(kContentType, content_type, out); |
| 186 if (!content_disposition.empty()) | 218 if (!content_disposition.empty()) |
| 187 AddHTMLListItem(kContentDisposition, content_disposition, out); | 219 AddHTMLListItem(kContentDisposition, content_disposition, out); |
| 188 | 220 |
| 189 bool has_multi_items = blob_data.items().size() > 1; | 221 bool has_multi_items = blob_data.items().size() > 1; |
| 190 if (has_multi_items) { | 222 if (has_multi_items) { |
| 191 AddHTMLListItem(kCount, | 223 AddHTMLListItem(kCount, |
| 192 base::UTF16ToUTF8(base::FormatNumber(blob_data.items().size())), out); | 224 base::UTF16ToUTF8(base::FormatNumber(blob_data.items().size())), out); |
| 193 } | 225 } |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 248 } | 280 } |
| 249 | 281 |
| 250 if (has_multi_items) | 282 if (has_multi_items) |
| 251 EndHTMLList(out); | 283 EndHTMLList(out); |
| 252 } | 284 } |
| 253 | 285 |
| 254 EndHTMLList(out); | 286 EndHTMLList(out); |
| 255 } | 287 } |
| 256 | 288 |
| 257 } // namespace storage | 289 } // namespace storage |
| OLD | NEW |