Home | History | Annotate | Download | only in engine
      1 // Copyright (c) 2009 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 #include "chrome/browser/sync/engine/syncer_command.h"
      6 
      7 #include "chrome/browser/sync/engine/net/server_connection_manager.h"
      8 #include "chrome/browser/sync/sessions/sync_session.h"
      9 #include "chrome/browser/sync/syncable/directory_manager.h"
     10 #include "chrome/common/deprecated/event_sys-inl.h"
     11 
     12 namespace browser_sync {
     13 using sessions::SyncSession;
     14 
     15 SyncerCommand::SyncerCommand() {}
     16 SyncerCommand::~SyncerCommand() {}
     17 
     18 void SyncerCommand::Execute(SyncSession* session) {
     19   ExecuteImpl(session);
     20   SendNotifications(session);
     21 }
     22 
     23 void SyncerCommand::SendNotifications(SyncSession* session) {
     24   syncable::ScopedDirLookup dir(session->context()->directory_manager(),
     25                                 session->context()->account_name());
     26   if (!dir.good()) {
     27     LOG(ERROR) << "Scoped dir lookup failed!";
     28     return;
     29   }
     30 
     31   if (session->status_controller()->TestAndClearIsDirty()) {
     32     SyncEngineEvent event(SyncEngineEvent::STATUS_CHANGED);
     33     const sessions::SyncSessionSnapshot& snapshot(session->TakeSnapshot());
     34     event.snapshot = &snapshot;
     35     session->context()->NotifyListeners(event);
     36   }
     37 }
     38 
     39 }  // namespace browser_sync
     40