| // Copyright 2018 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/sessions/session_restore_test_utils.h" |
| |
| #include "chrome/browser/sessions/session_restore.h" |
| #include "chrome/browser/sessions/tab_loader_delegate.h" |
| |
| namespace testing { |
| |
| bool AlwayLoadSessionRestorePolicy::ShouldLoad( |
| content::WebContents* contents) const { |
| return true; |
| } |
| |
| ScopedAlwaysLoadSessionRestoreTestPolicy:: |
| ScopedAlwaysLoadSessionRestoreTestPolicy() { |
| TabLoaderDelegate::SetSessionRestorePolicyForTesting(&policy_); |
| } |
| |
| ScopedAlwaysLoadSessionRestoreTestPolicy:: |
| ~ScopedAlwaysLoadSessionRestoreTestPolicy() { |
| TabLoaderDelegate::SetSessionRestorePolicyForTesting(nullptr); |
| } |
| |
| SessionsRestoredWaiter::SessionsRestoredWaiter( |
| base::OnceClosure quit_closure, |
| int num_session_restores_expected) |
| : quit_closure_(std::move(quit_closure)), |
| num_session_restores_expected_(num_session_restores_expected) { |
| callback_subscription_ = SessionRestore::RegisterOnSessionRestoredCallback( |
| base::BindRepeating(&SessionsRestoredWaiter::OnSessionRestoreDone, |
| base::Unretained(this))); |
| } |
| |
| SessionsRestoredWaiter::~SessionsRestoredWaiter() = default; |
| |
| void SessionsRestoredWaiter::OnSessionRestoreDone(Profile* profile, |
| int num_tabs_restored) { |
| if (++num_sessions_restored_ == num_session_restores_expected_) |
| std::move(quit_closure_).Run(); |
| } |
| |
| } // namespace testing |