Home | History | Annotate | Download | only in glue
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_SYNC_GLUE_FAILED_DATA_TYPES_HANDLER_H_
      6 #define CHROME_BROWSER_SYNC_GLUE_FAILED_DATA_TYPES_HANDLER_H_
      7 
      8 #include <string>
      9 
     10 #include "chrome/browser/sync/glue/data_type_manager.h"
     11 
     12 namespace browser_sync {
     13 
     14 // Class to keep track of data types that have encountered an error during sync.
     15 class FailedDataTypesHandler {
     16  public:
     17   typedef std::map<syncer::ModelType, syncer::SyncError> TypeErrorMap;
     18 
     19   explicit FailedDataTypesHandler();
     20   ~FailedDataTypesHandler();
     21 
     22   // Update the failed datatypes. Types will be added to their corresponding
     23   // error map based on their |error_type()|.
     24   bool UpdateFailedDataTypes(const TypeErrorMap& errors);
     25 
     26   // Resets the current set of data type errors.
     27   void Reset();
     28 
     29   // Resets the set of types with cryptographer errors.
     30   void ResetCryptoErrors();
     31 
     32   // Resets those persistence errors that intersect with |purged_types|.
     33   void ResetPersistenceErrorsFrom(syncer::ModelTypeSet purged_types);
     34 
     35   // Returns a list of all the errors this class has recorded.
     36   TypeErrorMap GetAllErrors() const;
     37 
     38   // Returns all types with errors.
     39   syncer::ModelTypeSet GetFailedTypes() const;
     40 
     41   // Returns the types that are failing due to startup or runtime errors.
     42   syncer::ModelTypeSet GetFatalErrorTypes() const;
     43 
     44   // Returns the types that are failing due to cryptographer errors.
     45   syncer::ModelTypeSet GetCryptoErrorTypes() const;
     46 
     47   // Returns the types that are failing due to persistence errors.
     48   syncer::ModelTypeSet GetPersistenceErrorTypes() const;
     49 
     50  private:
     51   // Returns true if there are any types with errors.
     52   bool AnyFailedDataType() const;
     53 
     54   // List of data types that failed at startup due to association errors or
     55   // runtime due to data type errors.
     56   TypeErrorMap fatal_errors_;
     57 
     58   // List of data types that failed due to the cryptographer not being ready.
     59   TypeErrorMap crypto_errors_;
     60 
     61   // List of data type that failed because sync did not persist the newest
     62   // version of their data.
     63   TypeErrorMap persistence_errors_;
     64 
     65   DISALLOW_COPY_AND_ASSIGN(FailedDataTypesHandler);
     66 };
     67 
     68 }  // namespace browser_sync
     69 
     70 #endif  // CHROME_BROWSER_SYNC_GLUE_FAILED_DATA_TYPES_HANDLER_H_
     71