| Index: sync/engine/update_applicator.h
 | 
| diff --git a/sync/engine/update_applicator.h b/sync/engine/update_applicator.h
 | 
| index 487b41d16c93d3dec7fd1e1ce406e8e61e98fdd6..d996471ae20a7df7b3515df069855913e76075d7 100644
 | 
| --- a/sync/engine/update_applicator.h
 | 
| +++ b/sync/engine/update_applicator.h
 | 
| @@ -17,12 +17,12 @@
 | 
|  #include "base/port.h"
 | 
|  #include "sync/internal_api/public/engine/model_safe_worker.h"
 | 
|  #include "sync/syncable/syncable_id.h"
 | 
| +#include "sync/sessions/status_controller.h"
 | 
|  
 | 
|  namespace syncer {
 | 
|  
 | 
|  namespace sessions {
 | 
| -class ConflictProgress;
 | 
| -class UpdateProgress;
 | 
| +class StatusController;
 | 
|  }
 | 
|  
 | 
|  namespace syncable {
 | 
| @@ -37,75 +37,35 @@ class UpdateApplicator {
 | 
|   public:
 | 
|    typedef std::vector<int64>::iterator UpdateIterator;
 | 
|  
 | 
| -  UpdateApplicator(ConflictResolver* resolver,
 | 
| -                   Cryptographer* cryptographer,
 | 
| -                   const UpdateIterator& begin,
 | 
| -                   const UpdateIterator& end,
 | 
| +  UpdateApplicator(Cryptographer* cryptographer,
 | 
|                     const ModelSafeRoutingInfo& routes,
 | 
|                     ModelSafeGroup group_filter);
 | 
|    ~UpdateApplicator();
 | 
|  
 | 
| -  // returns true if there's more we can do.
 | 
| -  bool AttemptOneApplication(syncable::WriteTransaction* trans);
 | 
| -  // return true if we've applied all updates.
 | 
| -  bool AllUpdatesApplied() const;
 | 
| +  // Attempt to apply the specified updates.
 | 
| +  void AttemptApplications(syncable::WriteTransaction* trans,
 | 
| +                           std::vector<int64> to_apply,
 | 
| +                           std::set<syncable::Id>* simple_conflict_ids);
 | 
|  
 | 
| -  // This class does not automatically save its progress into the
 | 
| -  // SyncSession -- to get that to happen, call this method after update
 | 
| -  // application is finished (i.e., when AttemptOneAllocation stops returning
 | 
| -  // true).
 | 
| -  void SaveProgressIntoSessionState(
 | 
| -      sessions::ConflictProgress* conflict_progress,
 | 
| -      sessions::UpdateProgress* update_progress);
 | 
| +  // Save our internal stat counters to the StatusController.
 | 
| +  void SaveStats(sessions::StatusController* status);
 | 
|  
 | 
|   private:
 | 
| -  // Track the status of all applications.
 | 
| -  class ResultTracker {
 | 
| -   public:
 | 
| -     explicit ResultTracker(size_t num_results);
 | 
| -     virtual ~ResultTracker();
 | 
| -     void AddSimpleConflict(syncable::Id);
 | 
| -     void AddEncryptionConflict(syncable::Id);
 | 
| -     void AddHierarchyConflict(syncable::Id);
 | 
| -     void AddSuccess(syncable::Id);
 | 
| -     void SaveProgress(sessions::ConflictProgress* conflict_progress,
 | 
| -                       sessions::UpdateProgress* update_progress);
 | 
| -     void ClearConflicts();
 | 
| -
 | 
| -     // Returns true iff conflicting_ids_ is empty. Does not check
 | 
| -     // encryption_conflict_ids_.
 | 
| -     bool no_conflicts() const;
 | 
| -   private:
 | 
| -    std::vector<syncable::Id> conflicting_ids_;
 | 
| -    std::vector<syncable::Id> successful_ids_;
 | 
| -    std::vector<syncable::Id> encryption_conflict_ids_;
 | 
| -    std::vector<syncable::Id> hierarchy_conflict_ids_;
 | 
| -  };
 | 
| -
 | 
|    // If true, AttemptOneApplication will skip over |entry| and return true.
 | 
|    bool SkipUpdate(const syncable::Entry& entry);
 | 
|  
 | 
| -  // Adjusts the UpdateIterator members to move ahead by one update.
 | 
| -  void Advance();
 | 
| -
 | 
| -  // Used to resolve conflicts when trying to apply updates.
 | 
| -  ConflictResolver* const resolver_;
 | 
| -
 | 
|    // Used to decrypt sensitive sync nodes.
 | 
|    Cryptographer* cryptographer_;
 | 
|  
 | 
| -  UpdateIterator const begin_;
 | 
| -  UpdateIterator end_;
 | 
| -  UpdateIterator pointer_;
 | 
|    ModelSafeGroup group_filter_;
 | 
| -  bool progress_;
 | 
|  
 | 
|    const ModelSafeRoutingInfo routing_info_;
 | 
|  
 | 
| -  // Track the result of the attempts to update applications.
 | 
| -  ResultTracker application_results_;
 | 
| -
 | 
|    DISALLOW_COPY_AND_ASSIGN(UpdateApplicator);
 | 
| +
 | 
| +  int updates_applied_;
 | 
| +  int encryption_conflicts_;
 | 
| +  int hierarchy_conflicts_;
 | 
|  };
 | 
|  
 | 
|  }  // namespace syncer
 | 
| 
 |