| // 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; |
| |
| // A local navigation occurred that triggered updates to favicon data for |
| // each page URL in |page_urls| (e.g. http://www.google.com) and the icon URL |
| // |icon_url| (e.g. http://www.google.com/favicon.ico). 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; |
| |
| 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_ |