blob: e69c8e6570ced04f088310d170ce368d9ac9317a [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.
#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 {
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;
// A local navigation occurred that triggered updates to favicon data for
// each page URL in |page_urls| (e.g. and the icon URL
// |icon_url| (e.g. This is routed through
// Sessions Sync so that we can filter (exclude) favicon updates for pages
// that aren't currently part of the set of local open tabs, and pass relevant
// updates on to FaviconCache for out-of-band favicon syncing.
virtual void OnFaviconsChanged(const std::set<GURL>& page_urls,
const GURL& icon_url) = 0;
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 {
virtual ~LocalSessionEventRouter() {}
virtual void StartRoutingTo(LocalSessionEventHandler* handler) = 0;
virtual void Stop() = 0;
LocalSessionEventRouter() {}
} // namespace sync_sessions