rvargas@google.com | b1ae319 | 2013-11-28 10:31:31 +0900 | [diff] [blame] | 1 | // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
rvargas@chromium.org | 12938d7 | 2013-12-04 09:46:32 +0900 | [diff] [blame] | 5 | #include "base/files/file.h" |
| 6 | |
| 7 | // TODO(rvargas): remove this (needed for kInvalidPlatformFileValue). |
rvargas@google.com | b1ae319 | 2013-11-28 10:31:31 +0900 | [diff] [blame] | 8 | #include "base/platform_file.h" |
| 9 | |
| 10 | namespace base { |
| 11 | |
rvargas@chromium.org | 12938d7 | 2013-12-04 09:46:32 +0900 | [diff] [blame] | 12 | File::Info::Info() |
rvargas@google.com | b1ae319 | 2013-11-28 10:31:31 +0900 | [diff] [blame] | 13 | : size(0), |
| 14 | is_directory(false), |
| 15 | is_symbolic_link(false) { |
| 16 | } |
| 17 | |
rvargas@chromium.org | 12938d7 | 2013-12-04 09:46:32 +0900 | [diff] [blame] | 18 | File::Info::~Info() { |
| 19 | } |
| 20 | |
| 21 | File::File() |
| 22 | : file_(kInvalidPlatformFileValue), |
rvargas@chromium.org | 9cce032 | 2014-01-09 07:30:21 +0900 | [diff] [blame^] | 23 | error_details_(FILE_OK), |
rvargas@chromium.org | 12938d7 | 2013-12-04 09:46:32 +0900 | [diff] [blame] | 24 | created_(false), |
| 25 | async_(false) { |
| 26 | } |
rvargas@google.com | b1ae319 | 2013-11-28 10:31:31 +0900 | [diff] [blame] | 27 | |
| 28 | #if !defined(OS_NACL) |
rvargas@chromium.org | 12938d7 | 2013-12-04 09:46:32 +0900 | [diff] [blame] | 29 | File::File(const FilePath& name, uint32 flags) |
| 30 | : file_(kInvalidPlatformFileValue), |
rvargas@chromium.org | 9cce032 | 2014-01-09 07:30:21 +0900 | [diff] [blame^] | 31 | error_details_(FILE_OK), |
rvargas@chromium.org | 12938d7 | 2013-12-04 09:46:32 +0900 | [diff] [blame] | 32 | created_(false), |
| 33 | async_(false) { |
rvargas@chromium.org | e207eae | 2014-01-04 07:14:15 +0900 | [diff] [blame] | 34 | Initialize(name, flags); |
rvargas@google.com | b1ae319 | 2013-11-28 10:31:31 +0900 | [diff] [blame] | 35 | } |
| 36 | #endif |
| 37 | |
rvargas@chromium.org | e207eae | 2014-01-04 07:14:15 +0900 | [diff] [blame] | 38 | File::File(PlatformFile platform_file) |
| 39 | : file_(platform_file), |
rvargas@chromium.org | 9cce032 | 2014-01-09 07:30:21 +0900 | [diff] [blame^] | 40 | error_details_(FILE_OK), |
rvargas@chromium.org | e207eae | 2014-01-04 07:14:15 +0900 | [diff] [blame] | 41 | created_(false), |
| 42 | async_(false) { |
| 43 | } |
| 44 | |
rvargas@chromium.org | 12938d7 | 2013-12-04 09:46:32 +0900 | [diff] [blame] | 45 | File::File(RValue other) |
| 46 | : file_(other.object->TakePlatformFile()), |
rvargas@chromium.org | 9cce032 | 2014-01-09 07:30:21 +0900 | [diff] [blame^] | 47 | error_details_(other.object->error_details()), |
rvargas@chromium.org | 12938d7 | 2013-12-04 09:46:32 +0900 | [diff] [blame] | 48 | created_(other.object->created()), |
| 49 | async_(other.object->async_) { |
| 50 | } |
| 51 | |
| 52 | File::~File() { |
| 53 | Close(); |
| 54 | } |
| 55 | |
| 56 | File& File::operator=(RValue other) { |
| 57 | if (this != other.object) { |
| 58 | Close(); |
| 59 | SetPlatformFile(other.object->TakePlatformFile()); |
rvargas@chromium.org | 9cce032 | 2014-01-09 07:30:21 +0900 | [diff] [blame^] | 60 | error_details_ = other.object->error_details(); |
rvargas@chromium.org | 12938d7 | 2013-12-04 09:46:32 +0900 | [diff] [blame] | 61 | created_ = other.object->created(); |
| 62 | async_ = other.object->async_; |
| 63 | } |
| 64 | return *this; |
| 65 | } |
| 66 | |
rvargas@chromium.org | e207eae | 2014-01-04 07:14:15 +0900 | [diff] [blame] | 67 | #if !defined(OS_NACL) |
| 68 | void File::Initialize(const FilePath& name, uint32 flags) { |
| 69 | if (name.ReferencesParent()) { |
rvargas@chromium.org | 9cce032 | 2014-01-09 07:30:21 +0900 | [diff] [blame^] | 70 | error_details_ = FILE_ERROR_ACCESS_DENIED; |
rvargas@chromium.org | e207eae | 2014-01-04 07:14:15 +0900 | [diff] [blame] | 71 | return; |
| 72 | } |
| 73 | InitializeUnsafe(name, flags); |
| 74 | } |
| 75 | #endif |
| 76 | |
rvargas@google.com | b1ae319 | 2013-11-28 10:31:31 +0900 | [diff] [blame] | 77 | } // namespace base |