1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Use of this source code is governed by a BSD-style license that can be
3bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// found in the LICENSE file.
4bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
5bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/history/download_create_info.h"
6bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
7201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch#include <string>
8201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch
9201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch#include "base/format_macros.h"
10201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch#include "base/stringprintf.h"
11201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch
12bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenDownloadCreateInfo::DownloadCreateInfo(const FilePath& path,
13bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                                       const GURL& url,
14bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                                       base::Time start_time,
15bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                                       int64 received_bytes,
16bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                                       int64 total_bytes,
17bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                                       int32 state,
1821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                                       int32 download_id,
1921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                                       bool has_user_gesture)
20bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    : path(path),
21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      url_chain(1, url),
22bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      path_uniquifier(0),
23bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      start_time(start_time),
24bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      received_bytes(received_bytes),
25bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      total_bytes(total_bytes),
26bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      state(state),
27bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      download_id(download_id),
2821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen      has_user_gesture(has_user_gesture),
29bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      child_id(-1),
30bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      render_view_id(-1),
31bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      request_id(-1),
32bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      db_handle(0),
33bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      prompt_user_for_save_location(false),
34dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      is_dangerous_file(false),
35dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      is_dangerous_url(false),
36bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      is_extension_install(false) {
37bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
38bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
39bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenDownloadCreateInfo::DownloadCreateInfo()
40bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    : path_uniquifier(0),
41bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      received_bytes(0),
42bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      total_bytes(0),
43bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      state(-1),
44bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      download_id(-1),
4521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen      has_user_gesture(false),
46bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      child_id(-1),
47bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      render_view_id(-1),
48bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      request_id(-1),
49bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      db_handle(0),
50bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      prompt_user_for_save_location(false),
51dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      is_dangerous_file(false),
52dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      is_dangerous_url(false),
53bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      is_extension_install(false) {
54bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
55bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
56bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenDownloadCreateInfo::~DownloadCreateInfo() {
57bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
58201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch
59dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenbool DownloadCreateInfo::IsDangerous() {
60dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  return is_dangerous_url || is_dangerous_file;
61dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen}
62ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
63201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdochstd::string DownloadCreateInfo::DebugString() const {
64201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch  return base::StringPrintf("{"
65201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                            " url_ = \"%s\""
6621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                            " path = \"%" PRFilePath "\""
67201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                            " received_bytes = %" PRId64
68201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                            " total_bytes = %" PRId64
69201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                            " child_id = %d"
70201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                            " render_view_id = %d"
71201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                            " request_id = %d"
72201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                            " download_id = %d"
73201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                            " prompt_user_for_save_location = %c"
74201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                            " }",
75ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                            url().spec().c_str(),
76201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                            path.value().c_str(),
77201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                            received_bytes,
78201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                            total_bytes,
79201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                            child_id,
80201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                            render_view_id,
81201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                            request_id,
82201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                            download_id,
83201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch                            prompt_user_for_save_location ? 'T' : 'F');
84201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch}
85ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
86ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenconst GURL& DownloadCreateInfo::url() const {
87ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  return url_chain.empty() ? GURL::EmptyGURL() : url_chain.back();
88ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
89