// Copyright (c) 2012 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.

#ifndef CHROME_BROWSER_HISTORY_DOWNLOAD_ROW_H_
#define CHROME_BROWSER_HISTORY_DOWNLOAD_ROW_H_

#include "base/file_path.h"
#include "base/time.h"
#include "content/public/browser/download_item.h"
#include "googleurl/src/gurl.h"

namespace history {

// Contains the information that is stored in the download system's persistent
// store (or refers to it). DownloadHistory uses this to communicate with the
// DownloadDatabase through the HistoryService.
struct DownloadRow {
  DownloadRow();
  DownloadRow(
      const FilePath& path,
      const GURL& url,
      const GURL& referrer,
      const base::Time& start,
      const base::Time& end,
      int64 received,
      int64 total,
      content::DownloadItem::DownloadState download_state,
      int64 handle,
      bool download_opened);
  ~DownloadRow();

  // The current path to the downloaded file.
  // TODO(benjhayden/asanka): Persist the target filename as well.
  FilePath path;

  // The URL from which we are downloading. This is the final URL after any
  // redirection by the server for |url_chain|. Is not changed by
  // UpdateDownload().
  GURL url;

  // The URL that referred us. Is not changed by UpdateDownload().
  GURL referrer_url;

  // The time when the download started. Is not changed by UpdateDownload().
  base::Time start_time;

  // The time when the download completed.
  base::Time end_time;

  // The number of bytes received (so far).
  int64 received_bytes;

  // The total number of bytes in the download. Is not changed by
  // UpdateDownload().
  int64 total_bytes;

  // The current state of the download.
  content::DownloadItem::DownloadState state;

  // The handle of the download in the database. Is not changed by
  // UpdateDownload().
  int64 db_handle;

  // Whether this download has ever been opened from the browser.
  bool opened;
};

}  // namespace history

#endif  // CHROME_BROWSER_HISTORY_DOWNLOAD_ROW_H_