diff options
author | michaeln@google.com <michaeln@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-02 21:36:00 +0000 |
---|---|---|
committer | michaeln@google.com <michaeln@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-02 21:36:00 +0000 |
commit | 1e4b00db041cde26d6e83cfccf6cdd807c603223 (patch) | |
tree | 2d298b791ce76ca6ef588f1e367a355f5991eccb /webkit | |
parent | a939356ce6f0ec9e30a2380b8d55bb3c3eafb760 (diff) | |
download | chromium_src-1e4b00db041cde26d6e83cfccf6cdd807c603223.zip chromium_src-1e4b00db041cde26d6e83cfccf6cdd807c603223.tar.gz chromium_src-1e4b00db041cde26d6e83cfccf6cdd807c603223.tar.bz2 |
Fix chrome://appcache-internals bustage caused by http://src.chromium.org/viewvc/chrome?view=rev&revision=95093
TEST=manual
Review URL: http://codereview.chromium.org/7549023
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@95161 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rw-r--r-- | webkit/appcache/view_appcache_internals_job.cc | 63 |
1 files changed, 35 insertions, 28 deletions
diff --git a/webkit/appcache/view_appcache_internals_job.cc b/webkit/appcache/view_appcache_internals_job.cc index efd0410..f9a49ff 100644 --- a/webkit/appcache/view_appcache_internals_job.cc +++ b/webkit/appcache/view_appcache_internals_job.cc @@ -67,29 +67,12 @@ void EmitPageEnd(std::string* out) { out->append("</body></html>\n"); } -// Appends an input button to |out| with text |label| that sends -// |command| and |param| back to the browser and navigates the frame -// to the resulting page. -void EmitCommandButton(const std::string& label, - const std::string& command, - const std::string& param, - std::string* out) { - base::StringAppendF(out, - "<form action=\"\" method=\"GET\">\n" - "<input type=\"hidden\" name=\"%s\" value=\"%s\">\n" - "<input type=\"submit\" value=\"%s\">\n" - "</form>", - EscapeForHTML(command).c_str(), - EscapeForHTML(param).c_str(), - EscapeForHTML(label).c_str()); -} - void EmitListItem(const std::string& label, const std::string& data, std::string* out) { out->append("<li>"); out->append(EscapeForHTML(label)); - out->append(data); + out->append(EscapeForHTML(data)); out->append("</li>\n"); } @@ -99,10 +82,26 @@ void EmitAnchor(const std::string& url, const std::string& text, out->append(EscapeForHTML(url)); out->append("\">"); out->append(EscapeForHTML(text)); - out->append("</a><br/>"); + out->append("</a>"); +} + +void EmitCommandAnchor(const char* label, + const GURL& base_url, + const char* command, + const char* param, + std::string* out) { + std::string query(command); + query.push_back('='); + query.append(param); + GURL::Replacements replacements; + replacements.SetQuery(query.data(), + url_parse::Component(0, query.length())); + GURL command_url = base_url.ReplaceComponents(replacements); + EmitAnchor(command_url.spec(), label, out); } -void EmitAppCacheInfo(AppCacheService* service, +void EmitAppCacheInfo(const GURL& base_url, + AppCacheService* service, const AppCacheInfo* info, std::string* out) { std::string manifest_url_base64; @@ -111,15 +110,18 @@ void EmitAppCacheInfo(AppCacheService* service, out->append("\n<p>"); out->append(kManifest); EmitAnchor(info->manifest_url.spec(), info->manifest_url.spec(), out); + out->append("<br/>\n"); if (!service->appcache_policy()->CanLoadAppCache( info->manifest_url)) { out->append(kFormattedDisabledAppCacheMsg); } out->append("\n<br/>\n"); - EmitCommandButton(kRemoveCacheLabel, kRemoveCacheCommand, - manifest_url_base64, out); - EmitCommandButton(kViewCacheLabel, kViewCacheCommand, - manifest_url_base64, out); + EmitCommandAnchor(kRemoveCacheLabel, base_url, + kRemoveCacheCommand, manifest_url_base64.c_str(), out); + out->append(" "); + EmitCommandAnchor(kViewCacheLabel, base_url, + kViewCacheCommand, manifest_url_base64.c_str(), out); + out->append("\n<br/>\n"); out->append("<ul>"); EmitListItem( kSize, @@ -141,13 +143,14 @@ void EmitAppCacheInfo(AppCacheService* service, } void EmitAppCacheInfoVector( + const GURL& base_url, AppCacheService* service, const AppCacheInfoVector& appcaches, std::string* out) { for (std::vector<AppCacheInfo>::const_iterator info = appcaches.begin(); info != appcaches.end(); ++info) { - EmitAppCacheInfo(service, &(*info), out); + EmitAppCacheInfo(base_url, service, &(*info), out); } } @@ -341,7 +344,9 @@ class MainPageJob : public BaseInternalsJob { origin->second.begin(), origin->second.end()); } std::sort(appcaches.begin(), appcaches.end(), SortByManifestUrl); - EmitAppCacheInfoVector(appcache_service_, appcaches, out); + + GURL base_url = ClearQuery(request_->url()); + EmitAppCacheInfoVector(base_url, appcache_service_, appcaches, out); } EmitPageEnd(out); return true; @@ -446,8 +451,9 @@ class ViewAppCacheJob : public BaseInternalsJob, if (appcache_info_.manifest_url.is_empty()) { out->append(kManifestNotFoundMessage); } else { - EmitAppCacheInfo(appcache_service_, &appcache_info_, out); - EmitAppCacheResourceInfoVector(ClearQuery(request_->url()), + GURL base_url = ClearQuery(request_->url()); + EmitAppCacheInfo(base_url, appcache_service_, &appcache_info_, out); + EmitAppCacheResourceInfoVector(base_url, manifest_url_, resource_infos_, out); } @@ -513,6 +519,7 @@ class ViewEntryJob : public BaseInternalsJob, out->clear(); EmitPageStart(out); EmitAnchor(entry_url_.spec(), entry_url_.spec(), out); + out->append("<br/>\n"); if (response_info_) { if (response_info_->http_response_info()) EmitResponseHeaders(response_info_->http_response_info()->headers, out); |