| Index: chrome/browser/dom_ui/net_internals_ui.cc | 
| =================================================================== | 
| --- chrome/browser/dom_ui/net_internals_ui.cc	(revision 50259) | 
| +++ chrome/browser/dom_ui/net_internals_ui.cc	(working copy) | 
| @@ -36,8 +36,6 @@ | 
| #include "chrome/common/net/url_request_context_getter.h" | 
| #include "chrome/common/url_constants.h" | 
| #include "grit/generated_resources.h" | 
| -#include "grit/net_internals_resources.h" | 
| -#include "grit/net_internals_resources_map.h" | 
| #include "net/base/escape.h" | 
| #include "net/base/host_resolver_impl.h" | 
| #include "net/base/net_errors.h" | 
| @@ -318,57 +316,51 @@ | 
| void NetInternalsHTMLSource::StartDataRequest(const std::string& path, | 
| bool is_off_the_record, | 
| int request_id) { | 
| +  // The provided |path| identifies a file in resources/net_internals/. | 
| +  std::string data_string; | 
| +  FilePath file_path; | 
| +  PathService::Get(chrome::DIR_NET_INTERNALS, &file_path); | 
| +  std::string filename; | 
| + | 
| // The provided "path" may contain a fragment, or query section. We only | 
| // care about the path itself, and will disregard anything else. | 
| -  std::string filename = | 
| -      GURL(std::string("chrome://net/") + path).path().substr(1); | 
| +  filename = GURL(std::string("chrome://net/") + path).path().substr(1); | 
| + | 
| if (filename.empty()) | 
| filename = "index.html"; | 
|  | 
| -  // The name of the files in the grd list are prefixed with the following | 
| -  // directory: | 
| -  std::string key("net_internals/"); | 
| -  key += filename; | 
| +  file_path = file_path.AppendASCII(filename); | 
|  | 
| -  const ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 
| -  for (size_t i = 0; i < kNetInternalsResourcesSize; ++i) { | 
| -    if (kNetInternalsResources[i].name == key) { | 
| -      scoped_refptr<RefCountedStaticMemory> bytes( | 
| -          rb.LoadDataResourceBytes(kNetInternalsResources[i].value)); | 
| -      if (bytes && bytes->front()) { | 
| -        SendResponse(request_id, bytes); | 
| -        return; | 
| -      } | 
| -    } | 
| +  if (!file_util::ReadFileToString(file_path, &data_string)) { | 
| +    LOG(WARNING) << "Could not read resource: " << file_path.value(); | 
| +    data_string = StringPrintf("<p style='color:red'>Failed to read file " | 
| +                               "RESOURCES/net_internals/%s</p>", | 
| +                               EscapeForHTML(filename).c_str()); | 
| + | 
| +    // During the transition from old implementation to new implementation, | 
| +    // users may be entering the URLs for the old frontend. | 
| +    data_string.append( | 
| +        "<p>Note that the URL scheme for net-internals has changed because of " | 
| +        "its new implementation (bug 37421):</p>" | 
| +        "<ul>" | 
| +        "<li>chrome://net-internals/proxyservice.* → " | 
| +        "<a href='chrome://net-internals#proxy'>chrome://net-internals#proxy" | 
| +        "</a></li>" | 
| +        "<li>chrome://net-internals/hostresolver.* → <a href='chrome://net" | 
| +        "-internals#dns'>chrome://net-internals#dns</a></li>" | 
| +        "<li>chrome://net-internals/urlrequest.* → <a href='chrome://net-" | 
| +        "internals#requests'>chrome://net-internals#requests</a></li>" | 
| +        "<li>chrome://net-internals/ (overview for copy-pasting) → <a href" | 
| +        "='chrome://net-internals#data'>chrome://net-internals#data</a></li>" | 
| +        "<li>chrome://net-internals/view-cache/* → <a href=" | 
| +        "'chrome://view-http-cache'>chrome://view-http-cache</a></li>" | 
| +        "</ul>"); | 
| } | 
|  | 
| -  LOG(WARNING) << "Could not read resource: " << path; | 
| -  std::string data_string = "<p style='color:red'>Failed to read resource"; | 
| -  data_string.append(EscapeForHTML(filename)); | 
| -  data_string.append("</p>"); | 
| - | 
| -  // During the transition from old implementation to new implementation, | 
| -  // users may be entering the URLs for the old frontend. | 
| -  data_string.append( | 
| -      "<p>Note that the URL scheme for net-internals has changed because of " | 
| -      "its new implementation (bug 37421):</p>" | 
| -      "<ul>" | 
| -      "<li>chrome://net-internals/proxyservice.* → " | 
| -      "<a href='chrome://net-internals#proxy'>chrome://net-internals#proxy" | 
| -      "</a></li>" | 
| -      "<li>chrome://net-internals/hostresolver.* → <a href='chrome://net" | 
| -      "-internals#dns'>chrome://net-internals#dns</a></li>" | 
| -      "<li>chrome://net-internals/urlrequest.* → <a href='chrome://net-" | 
| -      "internals#requests'>chrome://net-internals#requests</a></li>" | 
| -      "<li>chrome://net-internals/ (overview for copy-pasting) → <a href" | 
| -      "='chrome://net-internals#data'>chrome://net-internals#data</a></li>" | 
| -      "<li>chrome://net-internals/view-cache/* → <a href=" | 
| -      "'chrome://view-http-cache'>chrome://view-http-cache</a></li>" | 
| -      "</ul>"); | 
| - | 
| scoped_refptr<RefCountedBytes> bytes(new RefCountedBytes); | 
| bytes->data.resize(data_string.size()); | 
| std::copy(data_string.begin(), data_string.end(), bytes->data.begin()); | 
| + | 
| SendResponse(request_id, bytes); | 
| } | 
|  | 
|  |