chromium/components/history/core/test/history_service_test_util.h

// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_HISTORY_CORE_TEST_HISTORY_SERVICE_TEST_UTIL_H_
#define COMPONENTS_HISTORY_CORE_TEST_HISTORY_SERVICE_TEST_UTIL_H_

#include <memory>

namespace base {
class FilePath;
}

namespace history {
class HistoryService;

// Creates a new HistoryService that stores its data in `history_dir`.  If
// `create_db` is false, the HistoryService will fail to initialize its
// database; this is useful for testing error conditions.  This method spins the
// runloop before returning to ensure that any initialization-related tasks are
// run.
std::unique_ptr<HistoryService> CreateHistoryService(
    const base::FilePath& history_dir,
    bool create_db);

// Schedules a task on the history backend and runs a nested loop until the task
// is processed.  This blocks the caller until the history service processes all
// pending requests.
void BlockUntilHistoryProcessesPendingRequests(
    HistoryService* history_service);

}  // namespace history

#endif  // COMPONENTS_HISTORY_CORE_TEST_HISTORY_SERVICE_TEST_UTIL_H_