Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(227)

Side by Side Diff: net/tools/dump_cache/cache_dumper.cc

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "net/tools/dump_cache/cache_dumper.h" 5 #include "net/tools/dump_cache/cache_dumper.h"
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "net/base/io_buffer.h" 9 #include "net/base/io_buffer.h"
10 #include "net/base/net_errors.h" 10 #include "net/base/net_errors.h"
11 #include "net/disk_cache/blockfile/entry_impl.h" 11 #include "net/disk_cache/blockfile/entry_impl.h"
12 #include "net/http/http_cache.h" 12 #include "net/http/http_cache.h"
13 #include "net/http/http_response_headers.h" 13 #include "net/http/http_response_headers.h"
14 #include "net/http/http_response_info.h" 14 #include "net/http/http_response_info.h"
15 #include "net/tools/dump_cache/url_to_filename_encoder.h" 15 #include "net/tools/dump_cache/url_to_filename_encoder.h"
16 16
17 CacheDumper::CacheDumper(disk_cache::Backend* cache) 17 CacheDumper::CacheDumper(disk_cache::Backend* cache) : cache_(cache) {
18 : cache_(cache) {
19 } 18 }
20 19
21 int CacheDumper::CreateEntry(const std::string& key, 20 int CacheDumper::CreateEntry(const std::string& key,
22 disk_cache::Entry** entry, 21 disk_cache::Entry** entry,
23 const net::CompletionCallback& callback) { 22 const net::CompletionCallback& callback) {
24 return cache_->CreateEntry(key, entry, callback); 23 return cache_->CreateEntry(key, entry, callback);
25 } 24 }
26 25
27 int CacheDumper::WriteEntry(disk_cache::Entry* entry, int index, int offset, 26 int CacheDumper::WriteEntry(disk_cache::Entry* entry,
28 net::IOBuffer* buf, int buf_len, 27 int index,
28 int offset,
29 net::IOBuffer* buf,
30 int buf_len,
29 const net::CompletionCallback& callback) { 31 const net::CompletionCallback& callback) {
30 return entry->WriteData(index, offset, buf, buf_len, callback, false); 32 return entry->WriteData(index, offset, buf, buf_len, callback, false);
31 } 33 }
32 34
33 void CacheDumper::CloseEntry(disk_cache::Entry* entry, base::Time last_used, 35 void CacheDumper::CloseEntry(disk_cache::Entry* entry,
36 base::Time last_used,
34 base::Time last_modified) { 37 base::Time last_modified) {
35 if (entry) { 38 if (entry) {
36 static_cast<disk_cache::EntryImpl*>(entry)->SetTimes(last_used, 39 static_cast<disk_cache::EntryImpl*>(entry)
37 last_modified); 40 ->SetTimes(last_used, last_modified);
38 entry->Close(); 41 entry->Close();
39 } 42 }
40 } 43 }
41 44
42 // A version of CreateDirectory which supports lengthy filenames. 45 // A version of CreateDirectory which supports lengthy filenames.
43 // Returns true on success, false on failure. 46 // Returns true on success, false on failure.
44 bool SafeCreateDirectory(const base::FilePath& path) { 47 bool SafeCreateDirectory(const base::FilePath& path) {
45 #ifdef WIN32_LARGE_FILENAME_SUPPORT 48 #ifdef WIN32_LARGE_FILENAME_SUPPORT
46 // Due to large paths on windows, it can't simply do a 49 // Due to large paths on windows, it can't simply do a
47 // CreateDirectory("a/b/c"). Instead, create each subdirectory manually. 50 // CreateDirectory("a/b/c"). Instead, create each subdirectory manually.
(...skipping 14 matching lines...) Expand all
62 // we keep going even if directory creation failed. 65 // we keep going even if directory creation failed.
63 pos++; 66 pos++;
64 } 67 }
65 // Now create the full path 68 // Now create the full path
66 return CreateDirectoryW(path.value().c_str(), NULL) == TRUE; 69 return CreateDirectoryW(path.value().c_str(), NULL) == TRUE;
67 #else 70 #else
68 return base::CreateDirectory(path); 71 return base::CreateDirectory(path);
69 #endif 72 #endif
70 } 73 }
71 74
72 DiskDumper::DiskDumper(const base::FilePath& path) 75 DiskDumper::DiskDumper(const base::FilePath& path) : path_(path), entry_(NULL) {
73 : path_(path), entry_(NULL) {
74 base::CreateDirectory(path); 76 base::CreateDirectory(path);
75 } 77 }
76 78
77 int DiskDumper::CreateEntry(const std::string& key, 79 int DiskDumper::CreateEntry(const std::string& key,
78 disk_cache::Entry** entry, 80 disk_cache::Entry** entry,
79 const net::CompletionCallback& callback) { 81 const net::CompletionCallback& callback) {
80 // The URL may not start with a valid protocol; search for it. 82 // The URL may not start with a valid protocol; search for it.
81 int urlpos = key.find("http"); 83 int urlpos = key.find("http");
82 std::string url = urlpos > 0 ? key.substr(urlpos) : key; 84 std::string url = urlpos > 0 ? key.substr(urlpos) : key;
83 std::string base_path = path_.MaybeAsASCII(); 85 std::string base_path = path_.MaybeAsASCII();
(...skipping 11 matching lines...) Expand all
95 name.append(entry_path_.value()); 97 name.append(entry_path_.value());
96 entry_path_ = base::FilePath(name); 98 entry_path_ = base::FilePath(name);
97 #endif 99 #endif
98 100
99 entry_url_ = key; 101 entry_url_ = key;
100 102
101 SafeCreateDirectory(entry_path_.DirName()); 103 SafeCreateDirectory(entry_path_.DirName());
102 104
103 base::FilePath::StringType file = entry_path_.value(); 105 base::FilePath::StringType file = entry_path_.value();
104 #ifdef WIN32_LARGE_FILENAME_SUPPORT 106 #ifdef WIN32_LARGE_FILENAME_SUPPORT
105 entry_ = CreateFileW(file.c_str(), GENERIC_WRITE|GENERIC_READ, 0, 0, 107 entry_ = CreateFileW(file.c_str(),
106 CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); 108 GENERIC_WRITE | GENERIC_READ,
109 0,
110 0,
111 CREATE_ALWAYS,
112 FILE_ATTRIBUTE_NORMAL,
113 0);
107 if (entry_ == INVALID_HANDLE_VALUE) 114 if (entry_ == INVALID_HANDLE_VALUE)
108 wprintf(L"CreateFileW (%s) failed: %d\n", file.c_str(), GetLastError()); 115 wprintf(L"CreateFileW (%s) failed: %d\n", file.c_str(), GetLastError());
109 return (entry_ != INVALID_HANDLE_VALUE) ? net::OK : net::ERR_FAILED; 116 return (entry_ != INVALID_HANDLE_VALUE) ? net::OK : net::ERR_FAILED;
110 #else 117 #else
111 entry_ = base::OpenFile(entry_path_, "w+"); 118 entry_ = base::OpenFile(entry_path_, "w+");
112 return (entry_ != NULL) ? net::OK : net::ERR_FAILED; 119 return (entry_ != NULL) ? net::OK : net::ERR_FAILED;
113 #endif 120 #endif
114 } 121 }
115 122
116 // Utility Function to create a normalized header string from a 123 // Utility Function to create a normalized header string from a
(...skipping 29 matching lines...) Expand all
146 output->append(name); 153 output->append(name);
147 output->append(": "); 154 output->append(": ");
148 output->append(value); 155 output->append(value);
149 output->append("\r\n"); 156 output->append("\r\n");
150 } 157 }
151 158
152 // Mark the end of headers 159 // Mark the end of headers
153 output->append("\r\n"); 160 output->append("\r\n");
154 } 161 }
155 162
156 int DiskDumper::WriteEntry(disk_cache::Entry* entry, int index, int offset, 163 int DiskDumper::WriteEntry(disk_cache::Entry* entry,
157 net::IOBuffer* buf, int buf_len, 164 int index,
165 int offset,
166 net::IOBuffer* buf,
167 int buf_len,
158 const net::CompletionCallback& callback) { 168 const net::CompletionCallback& callback) {
159 if (!entry_) 169 if (!entry_)
160 return 0; 170 return 0;
161 171
162 std::string headers; 172 std::string headers;
163 const char *data; 173 const char* data;
164 size_t len; 174 size_t len;
165 if (index == 0) { // Stream 0 is the headers. 175 if (index == 0) { // Stream 0 is the headers.
166 net::HttpResponseInfo response_info; 176 net::HttpResponseInfo response_info;
167 bool truncated; 177 bool truncated;
168 if (!net::HttpCache::ParseResponseInfo(buf->data(), buf_len, 178 if (!net::HttpCache::ParseResponseInfo(
169 &response_info, &truncated)) 179 buf->data(), buf_len, &response_info, &truncated))
170 return 0; 180 return 0;
171 181
172 // Skip this entry if it was truncated (results in an empty file). 182 // Skip this entry if it was truncated (results in an empty file).
173 if (truncated) 183 if (truncated)
174 return buf_len; 184 return buf_len;
175 185
176 // Remove the size headers. 186 // Remove the size headers.
177 response_info.headers->RemoveHeader("transfer-encoding"); 187 response_info.headers->RemoveHeader("transfer-encoding");
178 response_info.headers->RemoveHeader("content-length"); 188 response_info.headers->RemoveHeader("content-length");
179 response_info.headers->RemoveHeader("x-original-url"); 189 response_info.headers->RemoveHeader("x-original-url");
(...skipping 26 matching lines...) Expand all
206 DWORD bytes; 216 DWORD bytes;
207 if (!WriteFile(entry_, data, len, &bytes, 0)) 217 if (!WriteFile(entry_, data, len, &bytes, 0))
208 return 0; 218 return 0;
209 219
210 return bytes; 220 return bytes;
211 #else 221 #else
212 return fwrite(data, 1, len, entry_); 222 return fwrite(data, 1, len, entry_);
213 #endif 223 #endif
214 } 224 }
215 225
216 void DiskDumper::CloseEntry(disk_cache::Entry* entry, base::Time last_used, 226 void DiskDumper::CloseEntry(disk_cache::Entry* entry,
217 base::Time last_modified) { 227 base::Time last_used,
228 base::Time last_modified) {
218 #ifdef WIN32_LARGE_FILENAME_SUPPORT 229 #ifdef WIN32_LARGE_FILENAME_SUPPORT
219 CloseHandle(entry_); 230 CloseHandle(entry_);
220 #else 231 #else
221 base::CloseFile(entry_); 232 base::CloseFile(entry_);
222 #endif 233 #endif
223 } 234 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698