text: // Copyright (c) 2012 The Chromium Authors. All rights reserved.
  // Use of this source code is governed by a BSD-style license that can be
  // found in the LICENSE file.
  
  #ifndef SYNC_TEST_SESSIONS_TEST_SCOPED_SESSION_EVENT_LISTENER_H_
  #define SYNC_TEST_SESSIONS_TEST_SCOPED_SESSION_EVENT_LISTENER_H_
  
  #include "base/macros.h"
  #include "sync/sessions/sync_session_context.h"
  
  namespace syncer {
  namespace sessions {
  
  // Installs a SyncEventListener to a given session context for the lifetime of
  // the TestScopedSessionEventListener.
  class TestScopedSessionEventListener {
   public:
    TestScopedSessionEventListener(
        SyncSessionContext* context,
        SyncEngineEventListener* listener)
      : context_(context), listener_(listener) {
        context->listeners_.AddObserver(listener);
    }
    ~TestScopedSessionEventListener() {
      context_->listeners_.RemoveObserver(listener_);
    }
   private:
    SyncSessionContext* context_;
    SyncEngineEventListener* listener_;
    DISALLOW_COPY_AND_ASSIGN(TestScopedSessionEventListener);
  };
  
  }  // namespace sessions
  }  // namespace syncer
  
  #endif  // SYNC_TEST_SESSIONS_TEST_SCOPED_SESSION_EVENT_LISTENER_H_
  