| 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
|
| deleted file mode 100644
|
| index d9a4319c55d46b5e989d1a584324eb3d96980ab6..0000000000000000000000000000000000000000
|
| --- a/webkit/browser/blob/view_blob_internals_job.cc
|
| +++ /dev/null
|
| @@ -1,242 +0,0 @@
|
| -// Copyright (c) 2012 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/browser/blob/view_blob_internals_job.h"
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/compiler_specific.h"
|
| -#include "base/format_macros.h"
|
| -#include "base/i18n/number_formatting.h"
|
| -#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_context.h"
|
| -#include "webkit/common/blob/blob_data.h"
|
| -
|
| -namespace {
|
| -
|
| -const char kEmptyBlobStorageMessage[] = "No available blob data.";
|
| -const char kContentType[] = "Content Type: ";
|
| -const char kContentDisposition[] = "Content Disposition: ";
|
| -const char kCount[] = "Count: ";
|
| -const char kIndex[] = "Index: ";
|
| -const char kType[] = "Type: ";
|
| -const char kPath[] = "Path: ";
|
| -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(
|
| - "<!DOCTYPE HTML>"
|
| - "<html><title>Blob Storage Internals</title>"
|
| - "<meta http-equiv=\"Content-Security-Policy\""
|
| - " content=\"object-src 'none'; script-src 'none'\">\n"
|
| - "<style>\n"
|
| - "body { font-family: sans-serif; font-size: 0.8em; }\n"
|
| - "tt, code, pre { font-family: WebKitHack, monospace; }\n"
|
| - "form { display: inline }\n"
|
| - ".subsection_body { margin: 10px 0 10px 2em; }\n"
|
| - ".subsection_title { font-weight: bold; }\n"
|
| - "</style>\n"
|
| - "</head><body>\n\n");
|
| -}
|
| -
|
| -void EndHTML(std::string* out) {
|
| - out->append("\n</body></html>");
|
| -}
|
| -
|
| -void AddHTMLBoldText(const std::string& text, std::string* out) {
|
| - out->append("<b>");
|
| - out->append(net::EscapeForHTML(text));
|
| - out->append("</b>");
|
| -}
|
| -
|
| -void StartHTMLList(std::string* out) {
|
| - out->append("\n<ul>");
|
| -}
|
| -
|
| -void EndHTMLList(std::string* out) {
|
| - out->append("</ul>\n");
|
| -}
|
| -
|
| -void AddHTMLListItem(const std::string& element_title,
|
| - const std::string& element_data,
|
| - std::string* out) {
|
| - out->append("<li>");
|
| - // No need to escape element_title since constant string is passed.
|
| - out->append(element_title);
|
| - out->append(net::EscapeForHTML(element_data));
|
| - out->append("</li>\n");
|
| -}
|
| -
|
| -void AddHorizontalRule(std::string* out) {
|
| - out->append("\n<hr>\n");
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -namespace storage {
|
| -
|
| -ViewBlobInternalsJob::ViewBlobInternalsJob(
|
| - net::URLRequest* request,
|
| - net::NetworkDelegate* network_delegate,
|
| - BlobStorageContext* blob_storage_context)
|
| - : net::URLRequestSimpleJob(request, network_delegate),
|
| - blob_storage_context_(blob_storage_context),
|
| - weak_factory_(this) {
|
| -}
|
| -
|
| -ViewBlobInternalsJob::~ViewBlobInternalsJob() {
|
| -}
|
| -
|
| -void ViewBlobInternalsJob::Start() {
|
| - base::MessageLoop::current()->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&ViewBlobInternalsJob::StartAsync,
|
| - weak_factory_.GetWeakPtr()));
|
| -}
|
| -
|
| -bool ViewBlobInternalsJob::IsRedirectResponse(GURL* location,
|
| - int* http_status_code) {
|
| - if (request_->url().has_query()) {
|
| - // Strip the query parameters.
|
| - GURL::Replacements replacements;
|
| - replacements.ClearQuery();
|
| - *location = request_->url().ReplaceComponents(replacements);
|
| - *http_status_code = 307;
|
| - return true;
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -void ViewBlobInternalsJob::Kill() {
|
| - net::URLRequestSimpleJob::Kill();
|
| - weak_factory_.InvalidateWeakPtrs();
|
| -}
|
| -
|
| -int ViewBlobInternalsJob::GetData(
|
| - std::string* mime_type,
|
| - std::string* charset,
|
| - std::string* data,
|
| - const net::CompletionCallback& callback) const {
|
| - mime_type->assign("text/html");
|
| - charset->assign("UTF-8");
|
| -
|
| - data->clear();
|
| - StartHTML(data);
|
| - if (blob_storage_context_->blob_map_.empty())
|
| - data->append(kEmptyBlobStorageMessage);
|
| - else
|
| - GenerateHTML(data);
|
| - EndHTML(data);
|
| - return net::OK;
|
| -}
|
| -
|
| -void ViewBlobInternalsJob::GenerateHTML(std::string* out) const {
|
| - for (BlobStorageContext::BlobMap::const_iterator iter =
|
| - blob_storage_context_->blob_map_.begin();
|
| - iter != blob_storage_context_->blob_map_.end();
|
| - ++iter) {
|
| - AddHTMLBoldText(iter->first, 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);
|
| - }
|
| - }
|
| -}
|
| -
|
| -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())
|
| - AddHTMLListItem(kContentDisposition, blob_data.content_disposition(), out);
|
| -
|
| - bool has_multi_items = blob_data.items().size() > 1;
|
| - if (has_multi_items) {
|
| - AddHTMLListItem(kCount,
|
| - base::UTF16ToUTF8(base::FormatNumber(blob_data.items().size())), out);
|
| - }
|
| -
|
| - for (size_t i = 0; i < blob_data.items().size(); ++i) {
|
| - if (has_multi_items) {
|
| - AddHTMLListItem(kIndex, base::UTF16ToUTF8(base::FormatNumber(i)), out);
|
| - StartHTMLList(out);
|
| - }
|
| - const BlobData::Item& item = blob_data.items().at(i);
|
| -
|
| - switch (item.type()) {
|
| - case BlobData::Item::TYPE_BYTES:
|
| - AddHTMLListItem(kType, "data", out);
|
| - break;
|
| - case BlobData::Item::TYPE_FILE:
|
| - AddHTMLListItem(kType, "file", out);
|
| - AddHTMLListItem(kPath,
|
| - net::EscapeForHTML(item.path().AsUTF8Unsafe()),
|
| - out);
|
| - if (!item.expected_modification_time().is_null()) {
|
| - AddHTMLListItem(kModificationTime, base::UTF16ToUTF8(
|
| - TimeFormatFriendlyDateAndTime(item.expected_modification_time())),
|
| - out);
|
| - }
|
| - break;
|
| - case BlobData::Item::TYPE_BLOB:
|
| - NOTREACHED(); // Should be flattened in the storage context.
|
| - break;
|
| - case BlobData::Item::TYPE_FILE_FILESYSTEM:
|
| - AddHTMLListItem(kType, "filesystem", out);
|
| - AddHTMLListItem(kURL, item.filesystem_url().spec(), out);
|
| - if (!item.expected_modification_time().is_null()) {
|
| - AddHTMLListItem(kModificationTime, base::UTF16ToUTF8(
|
| - TimeFormatFriendlyDateAndTime(item.expected_modification_time())),
|
| - out);
|
| - }
|
| - break;
|
| - case BlobData::Item::TYPE_UNKNOWN:
|
| - NOTREACHED();
|
| - break;
|
| - }
|
| - if (item.offset()) {
|
| - AddHTMLListItem(kOffset, base::UTF16ToUTF8(base::FormatNumber(
|
| - static_cast<int64>(item.offset()))), out);
|
| - }
|
| - if (static_cast<int64>(item.length()) != -1) {
|
| - AddHTMLListItem(kLength, base::UTF16ToUTF8(base::FormatNumber(
|
| - static_cast<int64>(item.length()))), out);
|
| - }
|
| -
|
| - if (has_multi_items)
|
| - EndHTMLList(out);
|
| - }
|
| -
|
| - EndHTMLList(out);
|
| -}
|
| -
|
| -} // namespace storage
|
|
|