OLD | NEW |
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/url_request/url_request_file_dir_job.h" | 5 #include "net/url_request/url_request_file_dir_job.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
10 #include "base/strings/sys_string_conversions.h" | 10 #include "base/strings/sys_string_conversions.h" |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 // SysNativeMBToWide takes care of it at least for now. We can try something | 109 // SysNativeMBToWide takes care of it at least for now. We can try something |
110 // more sophisticated if necessary later. | 110 // more sophisticated if necessary later. |
111 const base::string16& title = WideToUTF16( | 111 const base::string16& title = WideToUTF16( |
112 base::SysNativeMBToWide(dir_path_.value())); | 112 base::SysNativeMBToWide(dir_path_.value())); |
113 #endif | 113 #endif |
114 data_.append(GetDirectoryListingHeader(title)); | 114 data_.append(GetDirectoryListingHeader(title)); |
115 wrote_header_ = true; | 115 wrote_header_ = true; |
116 } | 116 } |
117 | 117 |
118 #if defined(OS_WIN) | 118 #if defined(OS_WIN) |
119 int64 size = (static_cast<unsigned __int64>(data.info.nFileSizeHigh) << 32) | | 119 std::string raw_bytes; // Empty on Windows means UTF-8 encoded name. |
120 data.info.nFileSizeLow; | |
121 | |
122 // Note that we should not convert ftLastWriteTime to the local time because | |
123 // ICU's datetime formatting APIs expect time in UTC and take into account | |
124 // the timezone before formatting. | |
125 data_.append(GetDirectoryListingEntry( | |
126 data.info.cFileName, | |
127 std::string(), | |
128 ((data.info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0), | |
129 size, | |
130 base::Time::FromFileTime(data.info.ftLastWriteTime))); | |
131 #elif defined(OS_POSIX) | 120 #elif defined(OS_POSIX) |
132 // TOOD(jungshik): The same issue as for the directory name. | 121 // TOOD(jungshik): The same issue as for the directory name. |
| 122 const std::string& raw_bytes = data.info.GetName().value(); |
| 123 #endif |
133 data_.append(GetDirectoryListingEntry( | 124 data_.append(GetDirectoryListingEntry( |
134 WideToUTF16(base::SysNativeMBToWide(data.info.filename)), | 125 data.info.GetName().LossyDisplayName(), |
135 data.info.filename, | 126 raw_bytes, |
136 S_ISDIR(data.info.stat.st_mode), | 127 data.info.IsDirectory(), |
137 data.info.stat.st_size, | 128 data.info.GetSize(), |
138 base::Time::FromTimeT(data.info.stat.st_mtime))); | 129 data.info.GetLastModifiedTime())); |
139 #endif | |
140 | 130 |
141 // TODO(darin): coalesce more? | 131 // TODO(darin): coalesce more? |
142 CompleteRead(); | 132 CompleteRead(); |
143 } | 133 } |
144 | 134 |
145 void URLRequestFileDirJob::OnListDone(int error) { | 135 void URLRequestFileDirJob::OnListDone(int error) { |
146 DCHECK(!canceled_); | 136 DCHECK(!canceled_); |
147 if (error != OK) { | 137 if (error != OK) { |
148 read_pending_ = false; | 138 read_pending_ = false; |
149 NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, error)); | 139 NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, error)); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
188 *bytes_read = count; | 178 *bytes_read = count; |
189 return true; | 179 return true; |
190 } else if (list_complete_) { | 180 } else if (list_complete_) { |
191 // EOF | 181 // EOF |
192 return true; | 182 return true; |
193 } | 183 } |
194 return false; | 184 return false; |
195 } | 185 } |
196 | 186 |
197 } // namespace net | 187 } // namespace net |
OLD | NEW |