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 "chrome/browser/chromeos/system/syslogs_provider.h" | 5 #include "chrome/browser/chromeos/system/syslogs_provider.h" |
6 | 6 |
7 #include "ash/shell.h" | 7 #include "ash/shell.h" |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/bind_helpers.h" | 9 #include "base/bind_helpers.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 } | 175 } |
176 | 176 |
177 return logs; | 177 return logs; |
178 } | 178 } |
179 | 179 |
180 } // namespace | 180 } // namespace |
181 | 181 |
182 class SyslogsProviderImpl : public SyslogsProvider { | 182 class SyslogsProviderImpl : public SyslogsProvider { |
183 public: | 183 public: |
184 // SyslogsProvider implementation: | 184 // SyslogsProvider implementation: |
185 virtual CancelableTaskTracker::TaskId RequestSyslogs( | 185 virtual base::CancelableTaskTracker::TaskId RequestSyslogs( |
186 bool compress_logs, | 186 bool compress_logs, |
187 SyslogsContext context, | 187 SyslogsContext context, |
188 const ReadCompleteCallback& callback, | 188 const ReadCompleteCallback& callback, |
189 CancelableTaskTracker* tracker) OVERRIDE; | 189 base::CancelableTaskTracker* tracker) OVERRIDE; |
190 | 190 |
191 static SyslogsProviderImpl* GetInstance(); | 191 static SyslogsProviderImpl* GetInstance(); |
192 | 192 |
193 private: | 193 private: |
194 friend struct DefaultSingletonTraits<SyslogsProviderImpl>; | 194 friend struct DefaultSingletonTraits<SyslogsProviderImpl>; |
195 | 195 |
196 // Reads system logs, compresses content if requested. | 196 // Reads system logs, compresses content if requested. |
197 // Called from blocking pool thread. | 197 // Called from blocking pool thread. |
198 void ReadSyslogs( | 198 void ReadSyslogs( |
199 const CancelableTaskTracker::IsCanceledCallback& is_canceled, | 199 const base::CancelableTaskTracker::IsCanceledCallback& is_canceled, |
200 bool compress_logs, | 200 bool compress_logs, |
201 SyslogsContext context, | 201 SyslogsContext context, |
202 const ReadCompleteCallback& callback); | 202 const ReadCompleteCallback& callback); |
203 | 203 |
204 // Loads compressed logs and writes into |zip_content|. | 204 // Loads compressed logs and writes into |zip_content|. |
205 void LoadCompressedLogs(const base::FilePath& zip_file, | 205 void LoadCompressedLogs(const base::FilePath& zip_file, |
206 std::string* zip_content); | 206 std::string* zip_content); |
207 | 207 |
208 SyslogsProviderImpl(); | 208 SyslogsProviderImpl(); |
209 | 209 |
210 // Gets syslogs context string from the enum value. | 210 // Gets syslogs context string from the enum value. |
211 const char* GetSyslogsContextString(SyslogsContext context); | 211 const char* GetSyslogsContextString(SyslogsContext context); |
212 | 212 |
213 // If not canceled, run callback on originating thread (the thread on which | 213 // If not canceled, run callback on originating thread (the thread on which |
214 // ReadSyslogs was run). | 214 // ReadSyslogs was run). |
215 static void RunCallbackIfNotCanceled( | 215 static void RunCallbackIfNotCanceled( |
216 const CancelableTaskTracker::IsCanceledCallback& is_canceled, | 216 const base::CancelableTaskTracker::IsCanceledCallback& is_canceled, |
217 base::TaskRunner* origin_runner, | 217 base::TaskRunner* origin_runner, |
218 const ReadCompleteCallback& callback, | 218 const ReadCompleteCallback& callback, |
219 LogDictionaryType* logs, | 219 LogDictionaryType* logs, |
220 std::string* zip_content); | 220 std::string* zip_content); |
221 | 221 |
222 DISALLOW_COPY_AND_ASSIGN(SyslogsProviderImpl); | 222 DISALLOW_COPY_AND_ASSIGN(SyslogsProviderImpl); |
223 }; | 223 }; |
224 | 224 |
225 SyslogsProviderImpl::SyslogsProviderImpl() { | 225 SyslogsProviderImpl::SyslogsProviderImpl() { |
226 } | 226 } |
227 | 227 |
228 CancelableTaskTracker::TaskId SyslogsProviderImpl::RequestSyslogs( | 228 base::CancelableTaskTracker::TaskId SyslogsProviderImpl::RequestSyslogs( |
229 bool compress_logs, | 229 bool compress_logs, |
230 SyslogsContext context, | 230 SyslogsContext context, |
231 const ReadCompleteCallback& callback, | 231 const ReadCompleteCallback& callback, |
232 CancelableTaskTracker* tracker) { | 232 base::CancelableTaskTracker* tracker) { |
233 CancelableTaskTracker::IsCanceledCallback is_canceled; | 233 base::CancelableTaskTracker::IsCanceledCallback is_canceled; |
234 CancelableTaskTracker::TaskId id = tracker->NewTrackedTaskId(&is_canceled); | 234 base::CancelableTaskTracker::TaskId id = |
| 235 tracker->NewTrackedTaskId(&is_canceled); |
235 | 236 |
236 ReadCompleteCallback callback_runner = | 237 ReadCompleteCallback callback_runner = |
237 base::Bind(&SyslogsProviderImpl::RunCallbackIfNotCanceled, | 238 base::Bind(&SyslogsProviderImpl::RunCallbackIfNotCanceled, |
238 is_canceled, base::MessageLoopProxy::current(), callback); | 239 is_canceled, base::MessageLoopProxy::current(), callback); |
239 | 240 |
240 // Schedule a task which will run the callback later when complete. | 241 // Schedule a task which will run the callback later when complete. |
241 BrowserThread::PostBlockingPoolTask( | 242 BrowserThread::PostBlockingPoolTask( |
242 FROM_HERE, | 243 FROM_HERE, |
243 base::Bind(&SyslogsProviderImpl::ReadSyslogs, base::Unretained(this), | 244 base::Bind(&SyslogsProviderImpl::ReadSyslogs, base::Unretained(this), |
244 is_canceled, compress_logs, context, callback_runner)); | 245 is_canceled, compress_logs, context, callback_runner)); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
288 | 289 |
289 void SyslogsMemoryHandler::OnDetailsAvailable() { | 290 void SyslogsMemoryHandler::OnDetailsAvailable() { |
290 (*logs_)["mem_usage"] = ToLogString(); | 291 (*logs_)["mem_usage"] = ToLogString(); |
291 callback_.Run(logs_, zip_content_); | 292 callback_.Run(logs_, zip_content_); |
292 } | 293 } |
293 | 294 |
294 SyslogsMemoryHandler::~SyslogsMemoryHandler() {} | 295 SyslogsMemoryHandler::~SyslogsMemoryHandler() {} |
295 | 296 |
296 // Called from blocking pool thread. | 297 // Called from blocking pool thread. |
297 void SyslogsProviderImpl::ReadSyslogs( | 298 void SyslogsProviderImpl::ReadSyslogs( |
298 const CancelableTaskTracker::IsCanceledCallback& is_canceled, | 299 const base::CancelableTaskTracker::IsCanceledCallback& is_canceled, |
299 bool compress_logs, | 300 bool compress_logs, |
300 SyslogsContext context, | 301 SyslogsContext context, |
301 const ReadCompleteCallback& callback) { | 302 const ReadCompleteCallback& callback) { |
302 DCHECK(BrowserThread::GetBlockingPool()->RunsTasksOnCurrentThread()); | 303 DCHECK(BrowserThread::GetBlockingPool()->RunsTasksOnCurrentThread()); |
303 | 304 |
304 if (is_canceled.Run()) | 305 if (is_canceled.Run()) |
305 return; | 306 return; |
306 | 307 |
307 // Create temp file. | 308 // Create temp file. |
308 base::FilePath zip_file; | 309 base::FilePath zip_file; |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 case(SYSLOGS_DEFAULT): | 367 case(SYSLOGS_DEFAULT): |
367 return kContextSysInfo; | 368 return kContextSysInfo; |
368 default: | 369 default: |
369 NOTREACHED(); | 370 NOTREACHED(); |
370 return ""; | 371 return ""; |
371 } | 372 } |
372 } | 373 } |
373 | 374 |
374 // static | 375 // static |
375 void SyslogsProviderImpl::RunCallbackIfNotCanceled( | 376 void SyslogsProviderImpl::RunCallbackIfNotCanceled( |
376 const CancelableTaskTracker::IsCanceledCallback& is_canceled, | 377 const base::CancelableTaskTracker::IsCanceledCallback& is_canceled, |
377 base::TaskRunner* origin_runner, | 378 base::TaskRunner* origin_runner, |
378 const ReadCompleteCallback& callback, | 379 const ReadCompleteCallback& callback, |
379 LogDictionaryType* logs, | 380 LogDictionaryType* logs, |
380 std::string* zip_content) { | 381 std::string* zip_content) { |
381 DCHECK(!is_canceled.is_null() && !callback.is_null()); | 382 DCHECK(!is_canceled.is_null() && !callback.is_null()); |
382 | 383 |
383 if (is_canceled.Run()) { | 384 if (is_canceled.Run()) { |
384 delete logs; | 385 delete logs; |
385 delete zip_content; | 386 delete zip_content; |
386 return; | 387 return; |
(...skipping 11 matching lines...) Expand all Loading... |
398 return Singleton<SyslogsProviderImpl, | 399 return Singleton<SyslogsProviderImpl, |
399 DefaultSingletonTraits<SyslogsProviderImpl> >::get(); | 400 DefaultSingletonTraits<SyslogsProviderImpl> >::get(); |
400 } | 401 } |
401 | 402 |
402 SyslogsProvider* SyslogsProvider::GetInstance() { | 403 SyslogsProvider* SyslogsProvider::GetInstance() { |
403 return SyslogsProviderImpl::GetInstance(); | 404 return SyslogsProviderImpl::GetInstance(); |
404 } | 405 } |
405 | 406 |
406 } // namespace system | 407 } // namespace system |
407 } // namespace chromeos | 408 } // namespace chromeos |
OLD | NEW |