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

Side by Side Diff: chrome/browser/sync/profile_sync_service.cc

Issue 2002012: sync: Add location info to unrecoverable error. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Add error handler back to bookmark model associator Created 10 years, 6 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) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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/sync/profile_sync_service.h" 5 #include "chrome/browser/sync/profile_sync_service.h"
6 6
7 #include <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 9
10 #include "app/l10n_util.h" 10 #include "app/l10n_util.h"
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 case syncable::TYPED_URLS: 393 case syncable::TYPED_URLS:
394 return prefs::kSyncTypedUrls; 394 return prefs::kSyncTypedUrls;
395 default: 395 default:
396 NOTREACHED(); 396 NOTREACHED();
397 return NULL; 397 return NULL;
398 } 398 }
399 } 399 }
400 400
401 // An invariant has been violated. Transition to an error state where we try 401 // An invariant has been violated. Transition to an error state where we try
402 // to do as little work as possible, to avoid further corruption or crashes. 402 // to do as little work as possible, to avoid further corruption or crashes.
403 void ProfileSyncService::OnUnrecoverableError() { 403 void ProfileSyncService::OnUnrecoverableError(
404 const tracked_objects::Location& from_here,
405 const std::string& message) {
404 unrecoverable_error_detected_ = true; 406 unrecoverable_error_detected_ = true;
405 // TODO(sync) remove this unrecoverable_error_detected_ variable_ as it only 407 unrecoverable_error_message_ = message;
406 // affects ShouldPushChanges(). 408 unrecoverable_error_location_.reset(
409 new tracked_objects::Location(from_here.function_name(),
410 from_here.file_name(),
411 from_here.line_number()));
407 412
408 // Shut all data types down. 413 // Shut all data types down.
409 if (data_type_manager_.get()) 414 if (data_type_manager_.get())
410 data_type_manager_->Stop(); 415 data_type_manager_->Stop();
411 416
412 // Tell the wizard so it can inform the user only if it is already open. 417 // Tell the wizard so it can inform the user only if it is already open.
413 wizard_.Step(SyncSetupWizard::FATAL_ERROR); 418 wizard_.Step(SyncSetupWizard::FATAL_ERROR);
414 419
415 FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged()); 420 FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
416 LOG(ERROR) << "Unrecoverable error detected -- ProfileSyncService unusable."; 421 LOG(ERROR) << "Unrecoverable error detected -- ProfileSyncService unusable.";
422 std::string location;
423 from_here.Write(true, true, &location);
424 LOG(ERROR) << location;
417 425
418 if (WizardIsVisible()) { 426 if (WizardIsVisible()) {
419 // We've hit an error in the middle of a startup process- shutdown all the 427 // We've hit an error in the middle of a startup process- shutdown all the
420 // backend stuff, and then restart it, so we're in the same state as before. 428 // backend stuff, and then restart it, so we're in the same state as before.
421 MessageLoop::current()->PostTask(FROM_HERE, 429 MessageLoop::current()->PostTask(FROM_HERE,
422 scoped_runnable_method_factory_.NewRunnableMethod( 430 scoped_runnable_method_factory_.NewRunnableMethod(
423 &ProfileSyncService::Shutdown, true)); 431 &ProfileSyncService::Shutdown, true));
424 MessageLoop::current()->PostTask(FROM_HERE, 432 MessageLoop::current()->PostTask(FROM_HERE,
425 scoped_runnable_method_factory_.NewRunnableMethod( 433 scoped_runnable_method_factory_.NewRunnableMethod(
426 &ProfileSyncService::StartUp)); 434 &ProfileSyncService::StartUp));
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
671 switch (type.value) { 679 switch (type.value) {
672 case NotificationType::SYNC_CONFIGURE_START: { 680 case NotificationType::SYNC_CONFIGURE_START: {
673 FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged()); 681 FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
674 // TODO(sync): Maybe toast? 682 // TODO(sync): Maybe toast?
675 break; 683 break;
676 } 684 }
677 case NotificationType::SYNC_CONFIGURE_DONE: { 685 case NotificationType::SYNC_CONFIGURE_DONE: {
678 DataTypeManager::ConfigureResult result = 686 DataTypeManager::ConfigureResult result =
679 *(Details<DataTypeManager::ConfigureResult>(details).ptr()); 687 *(Details<DataTypeManager::ConfigureResult>(details).ptr());
680 if (result != DataTypeManager::OK) { 688 if (result != DataTypeManager::OK) {
681 OnUnrecoverableError(); 689 OnUnrecoverableError(FROM_HERE, "Sync Configuration failed.");
682 return; 690 return;
683 } 691 }
684 692
685 // TODO(sync): Less wizard, more toast. 693 // TODO(sync): Less wizard, more toast.
686 wizard_.Step(SyncSetupWizard::DONE); 694 wizard_.Step(SyncSetupWizard::DONE);
687 FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged()); 695 FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
688 break; 696 break;
689 } 697 }
690 default: { 698 default: {
691 NOTREACHED(); 699 NOTREACHED();
(...skipping 24 matching lines...) Expand all
716 // is initialized, all enabled data types are consistent with one 724 // is initialized, all enabled data types are consistent with one
717 // another, and no unrecoverable error has transpired. 725 // another, and no unrecoverable error has transpired.
718 if (unrecoverable_error_detected_) 726 if (unrecoverable_error_detected_)
719 return false; 727 return false;
720 728
721 if (!data_type_manager_.get()) 729 if (!data_type_manager_.get())
722 return false; 730 return false;
723 731
724 return data_type_manager_->state() == DataTypeManager::CONFIGURED; 732 return data_type_manager_->state() == DataTypeManager::CONFIGURED;
725 } 733 }
OLDNEW
« no previous file with comments | « chrome/browser/sync/profile_sync_service.h ('k') | chrome/browser/sync/profile_sync_service_autofill_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698