blob: 46ef7fbf019b47939ac384fbab38aff00ed05e2b [file] [log] [blame]
// Copyright 2015 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 COMPONENTS_SYNC_SESSIONS_LOCAL_SESSION_EVENT_ROUTER_H_
#define COMPONENTS_SYNC_SESSIONS_LOCAL_SESSION_EVENT_ROUTER_H_
#include <set>
#include "base/macros.h"
#include "url/gurl.h"
namespace sync_sessions {
class SyncedTabDelegate;
// An interface defining the ways in which local open tab events can interact
// with session sync. All local tab events flow to sync via this interface.
// In that way it is analogous to sync changes flowing to the local model
// via ProcessSyncChanges, just with a more granular breakdown.
class LocalSessionEventHandler {
public:
virtual ~LocalSessionEventHandler() {}
// Called when asynchronous session restore has completed. On Android, this
// can be called multiple times (e.g. transition from a CCT without tabbed
// window to actually starting a tabbed activity).
virtual void OnSessionRestoreComplete() = 0;
// A local navigation event took place that affects the synced session
// for this instance of Chrome.
virtual void OnLocalTabModified(SyncedTabDelegate* modified_tab) = 0;
protected:
LocalSessionEventHandler() {}
private:
DISALLOW_COPY_AND_ASSIGN(LocalSessionEventHandler);
};
// The LocalSessionEventRouter is responsible for hooking itself up to various
// notification sources in the browser process and forwarding relevant
// events to a handler as defined in the LocalSessionEventHandler contract.
class LocalSessionEventRouter {
public:
virtual ~LocalSessionEventRouter() {}
virtual void StartRoutingTo(LocalSessionEventHandler* handler) = 0;
virtual void Stop() = 0;
protected:
LocalSessionEventRouter() {}
private:
DISALLOW_COPY_AND_ASSIGN(LocalSessionEventRouter);
};
} // namespace sync_sessions
#endif // COMPONENTS_SYNC_SESSIONS_LOCAL_SESSION_EVENT_ROUTER_H_