| Index: webkit/browser/blob/view_blob_internals_job.cc
|
| diff --git a/webkit/browser/blob/view_blob_internals_job.cc b/webkit/browser/blob/view_blob_internals_job.cc
|
| index 41ef7883de5c2bcb3d8fb0668db5d16ed3b2e274..e0523a4277ba744d2451c729b2770f6645fc3efc 100644
|
| --- a/webkit/browser/blob/view_blob_internals_job.cc
|
| +++ b/webkit/browser/blob/view_blob_internals_job.cc
|
| @@ -11,13 +11,14 @@
|
| #include "base/i18n/time_formatting.h"
|
| #include "base/logging.h"
|
| #include "base/message_loop/message_loop.h"
|
| +#include "base/strings/string_number_conversions.h"
|
| #include "base/strings/string_util.h"
|
| #include "base/strings/stringprintf.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "net/base/escape.h"
|
| #include "net/base/net_errors.h"
|
| #include "net/url_request/url_request.h"
|
| -#include "webkit/browser/blob/blob_storage_controller.h"
|
| +#include "webkit/browser/blob/blob_storage_context.h"
|
| #include "webkit/common/blob/blob_data.h"
|
|
|
| namespace {
|
| @@ -34,6 +35,8 @@ const char kURL[] = "URL: ";
|
| const char kModificationTime[] = "Modification Time: ";
|
| const char kOffset[] = "Offset: ";
|
| const char kLength[] = "Length: ";
|
| +const char kUUID[] = "Uuid: ";
|
| +const char kRefcount[] = "Refcount: ";
|
|
|
| void StartHTML(std::string* out) {
|
| out->append(
|
| @@ -48,11 +51,11 @@ void StartHTML(std::string* out) {
|
| ".subsection_body { margin: 10px 0 10px 2em; }\n"
|
| ".subsection_title { font-weight: bold; }\n"
|
| "</style>\n"
|
| - "</head><body>\n");
|
| + "</head><body>\n\n");
|
| }
|
|
|
| void EndHTML(std::string* out) {
|
| - out->append("</body></html>");
|
| + out->append("\n</body></html>");
|
| }
|
|
|
| void AddHTMLBoldText(const std::string& text, std::string* out) {
|
| @@ -62,11 +65,11 @@ void AddHTMLBoldText(const std::string& text, std::string* out) {
|
| }
|
|
|
| void StartHTMLList(std::string* out) {
|
| - out->append("<ul>");
|
| + out->append("\n<ul>");
|
| }
|
|
|
| void EndHTMLList(std::string* out) {
|
| - out->append("</ul>");
|
| + out->append("</ul>\n");
|
| }
|
|
|
| void AddHTMLListItem(const std::string& element_title,
|
| @@ -76,21 +79,11 @@ void AddHTMLListItem(const std::string& element_title,
|
| // No need to escape element_title since constant string is passed.
|
| out->append(element_title);
|
| out->append(net::EscapeForHTML(element_data));
|
| - out->append("</li>");
|
| + out->append("</li>\n");
|
| }
|
|
|
| -void AddHTMLButton(const std::string& title,
|
| - const std::string& command,
|
| - std::string* out) {
|
| - // No need to escape title since constant string is passed.
|
| - std::string escaped_command = net::EscapeForHTML(command.c_str());
|
| - base::StringAppendF(out,
|
| - "<form action=\"\" method=\"GET\">\n"
|
| - "<input type=\"hidden\" name=\"remove\" value=\"%s\">\n"
|
| - "<input type=\"submit\" value=\"%s\">\n"
|
| - "</form><br/>\n",
|
| - escaped_command.c_str(),
|
| - title.c_str());
|
| +void AddHorizontalRule(std::string* out) {
|
| + out->append("\n<hr>\n");
|
| }
|
|
|
| } // namespace
|
| @@ -100,9 +93,9 @@ namespace webkit_blob {
|
| ViewBlobInternalsJob::ViewBlobInternalsJob(
|
| net::URLRequest* request,
|
| net::NetworkDelegate* network_delegate,
|
| - BlobStorageController* blob_storage_controller)
|
| + BlobStorageContext* blob_storage_context)
|
| : net::URLRequestSimpleJob(request, network_delegate),
|
| - blob_storage_controller_(blob_storage_controller),
|
| + blob_storage_context_(blob_storage_context),
|
| weak_factory_(this) {
|
| }
|
|
|
| @@ -112,7 +105,7 @@ ViewBlobInternalsJob::~ViewBlobInternalsJob() {
|
| void ViewBlobInternalsJob::Start() {
|
| base::MessageLoop::current()->PostTask(
|
| FROM_HERE,
|
| - base::Bind(&ViewBlobInternalsJob::DoWorkAsync,
|
| + base::Bind(&ViewBlobInternalsJob::StartAsync,
|
| weak_factory_.GetWeakPtr()));
|
| }
|
|
|
| @@ -134,18 +127,6 @@ void ViewBlobInternalsJob::Kill() {
|
| weak_factory_.InvalidateWeakPtrs();
|
| }
|
|
|
| -void ViewBlobInternalsJob::DoWorkAsync() {
|
| - if (request_->url().has_query() &&
|
| - StartsWithASCII(request_->url().query(), "remove=", true)) {
|
| - std::string blob_url = request_->url().query().substr(strlen("remove="));
|
| - blob_url = net::UnescapeURLComponent(blob_url,
|
| - net::UnescapeRule::NORMAL | net::UnescapeRule::URL_SPECIAL_CHARS);
|
| - blob_storage_controller_->RemoveBlob(GURL(blob_url));
|
| - }
|
| -
|
| - StartAsync();
|
| -}
|
| -
|
| int ViewBlobInternalsJob::GetData(
|
| std::string* mime_type,
|
| std::string* charset,
|
| @@ -156,7 +137,7 @@ int ViewBlobInternalsJob::GetData(
|
|
|
| data->clear();
|
| StartHTML(data);
|
| - if (blob_storage_controller_->blob_map_.empty())
|
| + if (blob_storage_context_->blob_map_.empty())
|
| data->append(kEmptyBlobStorageMessage);
|
| else
|
| GenerateHTML(data);
|
| @@ -165,20 +146,47 @@ int ViewBlobInternalsJob::GetData(
|
| }
|
|
|
| void ViewBlobInternalsJob::GenerateHTML(std::string* out) const {
|
| - for (BlobStorageController::BlobMap::const_iterator iter =
|
| - blob_storage_controller_->blob_map_.begin();
|
| - iter != blob_storage_controller_->blob_map_.end();
|
| + for (BlobStorageContext::BlobMap::const_iterator iter =
|
| + blob_storage_context_->blob_map_.begin();
|
| + iter != blob_storage_context_->blob_map_.end();
|
| ++iter) {
|
| AddHTMLBoldText(iter->first, out);
|
| - AddHTMLButton(kRemove, iter->first, out);
|
| - GenerateHTMLForBlobData(*iter->second.get(), out);
|
| + GenerateHTMLForBlobData(*(iter->second.data.get()),
|
| + iter->second.refcount,
|
| + out);
|
| + }
|
| + if (!blob_storage_context_->public_blob_urls_.empty()) {
|
| + AddHorizontalRule(out);
|
| + for (BlobStorageContext::BlobURLMap::const_iterator iter =
|
| + blob_storage_context_->public_blob_urls_.begin();
|
| + iter != blob_storage_context_->public_blob_urls_.end();
|
| + ++iter) {
|
| + AddHTMLBoldText(iter->first.spec(), out);
|
| + StartHTMLList(out);
|
| + AddHTMLListItem(kUUID, iter->second, out);
|
| + EndHTMLList(out);
|
| + }
|
| + }
|
| + if (!blob_storage_context_->deprecated_blob_urls_.empty()) {
|
| + AddHorizontalRule(out);
|
| + for (BlobStorageContext::BlobURLMap::const_iterator iter =
|
| + blob_storage_context_->deprecated_blob_urls_.begin();
|
| + iter != blob_storage_context_->deprecated_blob_urls_.end();
|
| + ++iter) {
|
| + AddHTMLBoldText(iter->first.spec(), out);
|
| + StartHTMLList(out);
|
| + AddHTMLListItem(kUUID, iter->second, out);
|
| + EndHTMLList(out);
|
| + }
|
| }
|
| }
|
|
|
| void ViewBlobInternalsJob::GenerateHTMLForBlobData(const BlobData& blob_data,
|
| + int refcount,
|
| std::string* out) {
|
| StartHTMLList(out);
|
|
|
| + AddHTMLListItem(kRefcount, base::IntToString(refcount), out);
|
| if (!blob_data.content_type().empty())
|
| AddHTMLListItem(kContentType, blob_data.content_type(), out);
|
| if (!blob_data.content_disposition().empty())
|
| @@ -213,12 +221,11 @@ void ViewBlobInternalsJob::GenerateHTMLForBlobData(const BlobData& blob_data,
|
| }
|
| break;
|
| case BlobData::Item::TYPE_BLOB:
|
| - AddHTMLListItem(kType, "blob", out);
|
| - AddHTMLListItem(kURL, item.url().spec(), out);
|
| + NOTREACHED(); // Should be flattened in the storage context.
|
| break;
|
| case BlobData::Item::TYPE_FILE_FILESYSTEM:
|
| AddHTMLListItem(kType, "filesystem", out);
|
| - AddHTMLListItem(kURL, item.url().spec(), out);
|
| + AddHTMLListItem(kURL, item.filesystem_url().spec(), out);
|
| if (!item.expected_modification_time().is_null()) {
|
| AddHTMLListItem(kModificationTime, UTF16ToUTF8(
|
| TimeFormatFriendlyDateAndTime(item.expected_modification_time())),
|
|
|