blob: 8c4c316cf7673f90ebd3b6dd11a9ceb44e852eab [file] [log] [blame]
// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_SESSIONS_TAB_LOADER_TESTER_H_
#define CHROME_BROWSER_SESSIONS_TAB_LOADER_TESTER_H_
#include "base/memory/raw_ptr.h"
#include "base/timer/timer.h"
#include "chrome/browser/resource_coordinator/session_restore_policy.h"
#include "chrome/browser/sessions/tab_loader.h"
// Wraps a TabLoader and exposes helper functions for testing. See tab_loader.h
// for full documentation.
class TabLoaderTester {
public:
using TabVector = TabLoader::TabVector;
using TabSet = TabLoader::TabSet;
TabLoaderTester();
explicit TabLoaderTester(TabLoader* tab_loader);
TabLoaderTester(const TabLoaderTester&) = delete;
TabLoaderTester& operator=(const TabLoaderTester&) = delete;
~TabLoaderTester();
void SetTabLoader(TabLoader*);
TabLoader* tab_loader() { return tab_loader_; }
// Test only functions exposed from TabLoader.
static void SetMaxLoadedTabCountForTesting(size_t value);
static void SetConstructionCallbackForTesting(
base::RepeatingCallback<void(TabLoader*)>* callback);
void SetMaxSimultaneousLoadsForTesting(size_t loading_slots);
void SetTickClockForTesting(base::TickClock* tick_clock);
void MaybeLoadSomeTabsForTesting();
// Additional exposed TabLoader functions.
void ForceLoadTimerFired();
void OnMemoryPressure(
base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level);
void SetTabLoadingEnabled(bool enabled);
bool IsLoadingEnabled() const;
// Accessors to TabLoader internals.
size_t force_load_delay_multiplier() const;
base::TimeTicks force_load_time() const;
base::OneShotTimer& force_load_timer();
const TabVector& tabs_to_load() const;
const TabSet& tabs_load_initiated() const;
size_t scheduled_to_load_count() const;
static TabLoader* shared_tab_loader();
// Returns the session restore policy engine that is currently being used.
resource_coordinator::SessionRestorePolicy* GetPolicy();
// Additional helper functions.
bool IsSharedTabLoader() const;
bool HasTimedOutLoads() const;
void WaitForTabLoadingEnabled();
private:
raw_ptr<TabLoader, DanglingUntriaged> tab_loader_ = nullptr;
};
#endif // CHROME_BROWSER_SESSIONS_TAB_LOADER_TESTER_H_