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

#include "components/omnibox/browser/history_test_util.h"

#include "base/time/time.h"
#include "components/history/core/browser/history_database.h"

namespace history {

void AddFakeURLToHistoryDB(HistoryDatabase* history_db, const URLRow& url_row) {
  base::Time visit_time = url_row.last_visit();
  URLID url_id = history_db->AddURL(url_row);

  auto AddVisit = [&](ui::PageTransition transition) mutable {
    // Assume earlier visits are at one-day intervals.
    visit_time -= base::TimeDelta::FromDays(1);
    VisitRow row(url_id, visit_time, 0, transition, 1);
    history_db->AddVisit(&row, SOURCE_BROWSED);
  };

  // Mark the most recent |test_info.typed_count| visits as typed.
  for (int j = 0; j < url_row.typed_count(); ++j)
    AddVisit(ui::PAGE_TRANSITION_TYPED);

  for (int j = url_row.typed_count(); j < url_row.visit_count(); ++j)
    AddVisit(ui::PAGE_TRANSITION_LINK);
}

}  // namespace history
