| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/leveldb/leveldb_mojo_proxy.h" | 5 #include "components/leveldb/leveldb_mojo_proxy.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| 11 #include "mojo/platform_handle/platform_handle_functions.h" | |
| 12 #include "mojo/public/cpp/bindings/interface_request.h" | 11 #include "mojo/public/cpp/bindings/interface_request.h" |
| 12 #include "mojo/public/cpp/system/platform_handle.h" |
| 13 | 13 |
| 14 namespace leveldb { | 14 namespace leveldb { |
| 15 | 15 |
| 16 struct LevelDBMojoProxy::OpaqueLock { | 16 struct LevelDBMojoProxy::OpaqueLock { |
| 17 filesystem::mojom::FilePtr lock_file; | 17 filesystem::mojom::FilePtr lock_file; |
| 18 }; | 18 }; |
| 19 | 19 |
| 20 struct LevelDBMojoProxy::OpaqueDir { | 20 struct LevelDBMojoProxy::OpaqueDir { |
| 21 explicit OpaqueDir( | 21 explicit OpaqueDir( |
| 22 mojo::InterfacePtrInfo<filesystem::mojom::Directory> directory_info) { | 22 mojo::InterfacePtrInfo<filesystem::mojom::Directory> directory_info) { |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 182 base::File* output_file) { | 182 base::File* output_file) { |
| 183 mojo::ScopedHandle handle; | 183 mojo::ScopedHandle handle; |
| 184 filesystem::mojom::FileError error = filesystem::mojom::FileError::FAILED; | 184 filesystem::mojom::FileError error = filesystem::mojom::FileError::FAILED; |
| 185 bool completed = dir->directory->OpenFileHandle(mojo::String::From(name), | 185 bool completed = dir->directory->OpenFileHandle(mojo::String::From(name), |
| 186 open_flags, &error, &handle); | 186 open_flags, &error, &handle); |
| 187 DCHECK(completed); | 187 DCHECK(completed); |
| 188 | 188 |
| 189 if (error != filesystem::mojom::FileError::OK) { | 189 if (error != filesystem::mojom::FileError::OK) { |
| 190 *output_file = base::File(static_cast<base::File::Error>(error)); | 190 *output_file = base::File(static_cast<base::File::Error>(error)); |
| 191 } else { | 191 } else { |
| 192 MojoPlatformHandle platform_handle; | 192 base::PlatformFile platform_file; |
| 193 MojoResult extract_result = | 193 MojoResult unwrap_result = mojo::UnwrapPlatformFile(std::move(handle), |
| 194 MojoExtractPlatformHandle(handle.release().value(), &platform_handle); | 194 &platform_file); |
| 195 | 195 if (unwrap_result == MOJO_RESULT_OK) { |
| 196 if (extract_result == MOJO_RESULT_OK) { | 196 *output_file = base::File(platform_file); |
| 197 *output_file = base::File(platform_handle); | |
| 198 } else { | 197 } else { |
| 199 NOTREACHED(); | 198 NOTREACHED(); |
| 200 *output_file = base::File(base::File::Error::FILE_ERROR_FAILED); | 199 *output_file = base::File(base::File::Error::FILE_ERROR_FAILED); |
| 201 } | 200 } |
| 202 } | 201 } |
| 203 } | 202 } |
| 204 | 203 |
| 205 void LevelDBMojoProxy::SyncDirectoryImpl( | 204 void LevelDBMojoProxy::SyncDirectoryImpl( |
| 206 OpaqueDir* dir, | 205 OpaqueDir* dir, |
| 207 std::string name, | 206 std::string name, |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 321 *out_lock = l; | 320 *out_lock = l; |
| 322 } | 321 } |
| 323 } | 322 } |
| 324 | 323 |
| 325 void LevelDBMojoProxy::UnlockFileImpl(std::unique_ptr<OpaqueLock> lock, | 324 void LevelDBMojoProxy::UnlockFileImpl(std::unique_ptr<OpaqueLock> lock, |
| 326 filesystem::mojom::FileError* out_error) { | 325 filesystem::mojom::FileError* out_error) { |
| 327 lock->lock_file->Unlock(out_error); | 326 lock->lock_file->Unlock(out_error); |
| 328 } | 327 } |
| 329 | 328 |
| 330 } // namespace leveldb | 329 } // namespace leveldb |
| OLD | NEW |