1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
53345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#ifndef CHROME_BROWSER_DOWNLOAD_SAVE_FILE_H_
63345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#define CHROME_BROWSER_DOWNLOAD_SAVE_FILE_H_
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/basictypes.h"
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/file_path.h"
11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_ptr.h"
123345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/download/base_file.h"
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/download/save_types.h"
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// SaveFile ----------------------------------------------------------------
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// These objects live exclusively on the file thread and handle the writing
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// operations for one save item. These objects live only for the duration that
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// the saving job is 'in progress': once the saving job has been completed or
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// canceled, the SaveFile is destroyed. One SaveFile object represents one item
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// in a save session.
223345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickclass SaveFile : public BaseFile {
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  explicit SaveFile(const SaveFileCreateInfo* info);
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ~SaveFile();
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Accessors.
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  int save_id() const { return info_->save_id; }
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  int render_process_id() const { return info_->render_process_id; }
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  int render_view_id() const { return info_->render_view_id; }
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  int request_id() const { return info_->request_id; }
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SaveFileCreateInfo::SaveFileSource save_source() const {
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    return info_->save_source;
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private:
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<const SaveFileCreateInfo> info_;
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DISALLOW_COPY_AND_ASSIGN(SaveFile);
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
423345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#endif  // CHROME_BROWSER_DOWNLOAD_SAVE_FILE_H_
43