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_SESSION_SERVICE_TEST_HELPER_H_
      6 #define CHROME_BROWSER_SESSIONS_SESSION_SERVICE_TEST_HELPER_H_
      7 
      8 #include <string>
      9 #include <vector>
     10 
     11 #include "base/basictypes.h"
     12 #include "base/memory/scoped_ptr.h"
     13 #include "chrome/browser/sessions/session_id.h"
     14 
     15 class SessionBackend;
     16 class SessionCommand;
     17 class SessionService;
     18 struct SessionTab;
     19 struct SessionWindow;
     20 
     21 namespace sessions {
     22 class SerializedNavigationEntry;
     23 }
     24 
     25 // A simple class that makes writing SessionService related tests easier.
     26 
     27 class SessionServiceTestHelper {
     28  public:
     29   explicit SessionServiceTestHelper();
     30   explicit SessionServiceTestHelper(SessionService* service);
     31   ~SessionServiceTestHelper();
     32 
     33   void PrepareTabInWindow(const SessionID& window_id,
     34                           const SessionID& tab_id,
     35                           int visual_index,
     36                           bool select);
     37 
     38   void SetTabExtensionAppID(const SessionID& window_id,
     39                             const SessionID& tab_id,
     40                             const std::string& extension_app_id);
     41 
     42   void SetTabUserAgentOverride(const SessionID& window_id,
     43                                const SessionID& tab_id,
     44                                const std::string& user_agent_override);
     45 
     46   void SetForceBrowserNotAliveWithNoWindows(
     47       bool force_browser_not_alive_with_no_windows);
     48 
     49   // Reads the contents of the last session.
     50   void ReadWindows(std::vector<SessionWindow*>* windows,
     51                    SessionID::id_type* active_window_id);
     52 
     53   void AssertTabEquals(SessionID& window_id,
     54                        SessionID& tab_id,
     55                        int visual_index,
     56                        int nav_index,
     57                        size_t nav_count,
     58                        const SessionTab& session_tab);
     59 
     60   void AssertTabEquals(int visual_index,
     61                        int nav_index,
     62                        size_t nav_count,
     63                        const SessionTab& session_tab);
     64 
     65   void AssertNavigationEquals(
     66       const sessions::SerializedNavigationEntry& expected,
     67       const sessions::SerializedNavigationEntry& actual);
     68 
     69   void AssertSingleWindowWithSingleTab(
     70       const std::vector<SessionWindow*>& windows,
     71       size_t nav_count);
     72 
     73   void SetService(SessionService* service);
     74   SessionService* ReleaseService() { return service_.release(); }
     75   SessionService* service() { return service_.get(); }
     76 
     77   SessionBackend* backend();
     78 
     79  private:
     80   scoped_ptr<SessionService> service_;
     81 
     82   DISALLOW_COPY_AND_ASSIGN(SessionServiceTestHelper);
     83 };
     84 
     85 #endif  // CHROME_BROWSER_SESSIONS_SESSION_SERVICE_TEST_HELPER_H_
     86