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

Side by Side Diff: chrome/browser/diagnostics/recon_diagnostics.cc

Issue 16948012: This adds a recovery mode to the diagnostics (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 5 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 "chrome/browser/diagnostics/recon_diagnostics.h" 5 #include "chrome/browser/diagnostics/recon_diagnostics.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/json/json_reader.h" 10 #include "base/json/json_reader.h"
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 private: 321 private:
322 DISALLOW_COPY_AND_ASSIGN(DiskSpaceTest); 322 DISALLOW_COPY_AND_ASSIGN(DiskSpaceTest);
323 }; 323 };
324 324
325 // Checks that a given json file can be correctly parsed. 325 // Checks that a given json file can be correctly parsed.
326 class JSONTest : public DiagnosticsTest { 326 class JSONTest : public DiagnosticsTest {
327 public: 327 public:
328 JSONTest(const base::FilePath& path, 328 JSONTest(const base::FilePath& path,
329 const std::string& id, 329 const std::string& id,
330 const std::string& name, 330 const std::string& name,
331 int64 max_file_size) 331 int64 max_file_size,
332 : DiagnosticsTest(id, name), path_(path), max_file_size_(max_file_size) {} 332 bool critical)
333 : DiagnosticsTest(id, name),
334 path_(path),
335 max_file_size_(max_file_size),
336 critical_(critical) {}
333 337
334 virtual bool ExecuteImpl(DiagnosticsModel::Observer* observer) OVERRIDE { 338 virtual bool ExecuteImpl(DiagnosticsModel::Observer* observer) OVERRIDE {
335 if (!base::PathExists(path_)) { 339 if (!base::PathExists(path_)) {
336 RecordFailure(DIAG_RECON_FILE_NOT_FOUND, "File not found"); 340 if (critical_) {
341 RecordOutcome(DIAG_RECON_FILE_NOT_FOUND,
342 "File not found",
343 DiagnosticsModel::TEST_FAIL_CONTINUE);
344 } else {
345 RecordOutcome(DIAG_RECON_FILE_NOT_FOUND_OK,
346 "File not found (but that is OK)",
347 DiagnosticsModel::TEST_OK);
348 }
337 return true; 349 return true;
338 } 350 }
339 int64 file_size; 351 int64 file_size;
340 if (!file_util::GetFileSize(path_, &file_size)) { 352 if (!file_util::GetFileSize(path_, &file_size)) {
341 RecordFailure(DIAG_RECON_CANNOT_OBTAIN_FILE_SIZE, 353 RecordFailure(DIAG_RECON_CANNOT_OBTAIN_FILE_SIZE,
342 "Cannot obtain file size"); 354 "Cannot obtain file size");
343 return true; 355 return true;
344 } 356 }
345 357
346 if (file_size > max_file_size_) { 358 if (file_size > max_file_size_) {
(...skipping 20 matching lines...) Expand all
367 return true; 379 return true;
368 } 380 }
369 381
370 RecordSuccess("File parsed OK"); 382 RecordSuccess("File parsed OK");
371 return true; 383 return true;
372 } 384 }
373 385
374 private: 386 private:
375 base::FilePath path_; 387 base::FilePath path_;
376 int64 max_file_size_; 388 int64 max_file_size_;
389 bool critical_; // Is it required that the file exist?
377 DISALLOW_COPY_AND_ASSIGN(JSONTest); 390 DISALLOW_COPY_AND_ASSIGN(JSONTest);
378 }; 391 };
379 392
380 } // namespace 393 } // namespace
381 394
382 DiagnosticsTest* MakeUserDirTest() { return new PathTest(kPathsToTest[0]); } 395 DiagnosticsTest* MakeUserDirTest() { return new PathTest(kPathsToTest[0]); }
383 396
384 DiagnosticsTest* MakeLocalStateFileTest() { 397 DiagnosticsTest* MakeLocalStateFileTest() {
385 return new PathTest(kPathsToTest[1]); 398 return new PathTest(kPathsToTest[1]);
386 } 399 }
(...skipping 12 matching lines...) Expand all
399 412
400 DiagnosticsTest* MakeOperatingSystemTest() { return new OperatingSystemTest(); } 413 DiagnosticsTest* MakeOperatingSystemTest() { return new OperatingSystemTest(); }
401 414
402 DiagnosticsTest* MakeConflictingDllsTest() { return new ConflictingDllsTest(); } 415 DiagnosticsTest* MakeConflictingDllsTest() { return new ConflictingDllsTest(); }
403 416
404 DiagnosticsTest* MakeInstallTypeTest() { return new InstallTypeTest(); } 417 DiagnosticsTest* MakeInstallTypeTest() { return new InstallTypeTest(); }
405 418
406 DiagnosticsTest* MakePreferencesTest() { 419 DiagnosticsTest* MakePreferencesTest() {
407 base::FilePath path = DiagnosticsTest::GetUserDefaultProfileDir(); 420 base::FilePath path = DiagnosticsTest::GetUserDefaultProfileDir();
408 path = path.Append(chrome::kPreferencesFilename); 421 path = path.Append(chrome::kPreferencesFilename);
409 return new JSONTest( 422 return new JSONTest(path,
410 path, kJSONProfileTest, "Profile JSON", 100 * kOneKilobyte); 423 kJSONProfileTest,
424 "Profile JSON",
425 100 * kOneKilobyte,
426 true /* critical */);
cpu_(ooo_6.6-7.5) 2013/07/25 19:40:56 please remove /* critical */ and everywhere or use
Greg Spencer (Chromium) 2013/07/26 18:51:30 Done.
411 } 427 }
412 428
413 DiagnosticsTest* MakeBookMarksTest() { 429 DiagnosticsTest* MakeBookMarksTest() {
414 base::FilePath path = DiagnosticsTest::GetUserDefaultProfileDir(); 430 base::FilePath path = DiagnosticsTest::GetUserDefaultProfileDir();
415 path = path.Append(chrome::kBookmarksFileName); 431 path = path.Append(chrome::kBookmarksFileName);
416 return new JSONTest( 432 return new JSONTest(path,
417 path, kJSONBookmarksTest, "Bookmarks JSON", 2 * kOneMegabyte); 433 kJSONBookmarksTest,
434 "Bookmarks JSON",
435 2 * kOneMegabyte,
436 false /* critical */);
418 } 437 }
419 438
420 DiagnosticsTest* MakeLocalStateTest() { 439 DiagnosticsTest* MakeLocalStateTest() {
421 base::FilePath path; 440 base::FilePath path;
422 PathService::Get(chrome::DIR_USER_DATA, &path); 441 PathService::Get(chrome::DIR_USER_DATA, &path);
423 path = path.Append(chrome::kLocalStateFilename); 442 path = path.Append(chrome::kLocalStateFilename);
424 return new JSONTest( 443 return new JSONTest(path,
425 path, kJSONLocalStateTest, "Local State JSON", 50 * kOneKilobyte); 444 kJSONLocalStateTest,
445 "Local State JSON",
446 50 * kOneKilobyte,
447 true /* critical */);
426 } 448 }
427 449
428 } // namespace diagnostics 450 } // namespace diagnostics
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698