Home | History | Annotate | Download | only in sessions
      1 // Copyright (c) 2012 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 #ifndef CHROME_BROWSER_SESSIONS_TAB_RESTORE_SERVICE_DELEGATE_H_
      6 #define CHROME_BROWSER_SESSIONS_TAB_RESTORE_SERVICE_DELEGATE_H_
      7 
      8 #include <string>
      9 #include <vector>
     10 
     11 #include "chrome/browser/profiles/profile.h"
     12 #include "chrome/browser/sessions/session_id.h"
     13 #include "chrome/browser/ui/host_desktop.h"
     14 
     15 class Profile;
     16 
     17 namespace content {
     18 class NavigationController;
     19 class SessionStorageNamespace;
     20 class WebContents;
     21 }
     22 
     23 namespace sessions {
     24 class SerializedNavigationEntry;
     25 }
     26 
     27 // Objects implement this interface to provide necessary functionality for
     28 // TabRestoreService to operate. These methods are mostly copies of existing
     29 // Browser methods.
     30 class TabRestoreServiceDelegate {
     31  public:
     32   // see BrowserWindow::Show()
     33   virtual void ShowBrowserWindow() = 0;
     34 
     35   // see Browser::session_id()
     36   virtual const SessionID& GetSessionID() const = 0;
     37 
     38   // see Browser::tab_count()
     39   virtual int GetTabCount() const = 0;
     40 
     41   // see Browser::active_index()
     42   virtual int GetSelectedIndex() const = 0;
     43 
     44   // see Browser::app_name()
     45   virtual std::string GetAppName() const = 0;
     46 
     47   // see Browser methods with the same names
     48   virtual content::WebContents* GetWebContentsAt(int index) const = 0;
     49   virtual content::WebContents* GetActiveWebContents() const = 0;
     50   virtual bool IsTabPinned(int index) const = 0;
     51   virtual content::WebContents* AddRestoredTab(
     52       const std::vector<sessions::SerializedNavigationEntry>& navigations,
     53       int tab_index,
     54       int selected_navigation,
     55       const std::string& extension_app_id,
     56       bool select,
     57       bool pin,
     58       bool from_last_session,
     59       content::SessionStorageNamespace* storage_namespace,
     60       const std::string& user_agent_override) = 0;
     61   virtual content::WebContents* ReplaceRestoredTab(
     62       const std::vector<sessions::SerializedNavigationEntry>& navigations,
     63       int selected_navigation,
     64       bool from_last_session,
     65       const std::string& extension_app_id,
     66       content::SessionStorageNamespace* session_storage_namespace,
     67       const std::string& user_agent_override) = 0;
     68   virtual void CloseTab() = 0;
     69 
     70   // see Browser::Create
     71   static TabRestoreServiceDelegate* Create(
     72       Profile* profile,
     73       chrome::HostDesktopType host_desktop_type,
     74       const std::string& app_name);
     75 
     76   // see browser::FindBrowserForWebContents
     77   static TabRestoreServiceDelegate* FindDelegateForWebContents(
     78       const content::WebContents* contents);
     79 
     80   // see chrome::FindBrowserWithID
     81   // Returns the TabRestoreServiceDelegate of the Browser with |desired_id| if
     82   // such a Browser exists and is on the desktop defined by |host_desktop_type|.
     83   static TabRestoreServiceDelegate* FindDelegateWithID(
     84       SessionID::id_type desired_id,
     85       chrome::HostDesktopType host_desktop_type);
     86 
     87  protected:
     88   virtual ~TabRestoreServiceDelegate() {}
     89 };
     90 
     91 #endif  // CHROME_BROWSER_SESSIONS_TAB_RESTORE_SERVICE_DELEGATE_H_
     92