1 // Copyright 2013 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.
5 #include "ppapi/shared_impl/file_ref_create_info.h"
7 #include "base/logging.h"
8 #include "base/strings/utf_string_conversions.h"
9 #include "ppapi/c/pp_file_info.h"
15 std::string
GetNameForExternalFilePath(const base::FilePath
& in_path
) {
16 const base::FilePath::StringType
& path
= in_path
.value();
17 size_t pos
= path
.rfind(base::FilePath::kSeparators
[0]);
18 CHECK(pos
!= base::FilePath::StringType::npos
);
20 return base::WideToUTF8(path
.substr(pos
+ 1));
21 #elif defined(OS_POSIX)
22 return path
.substr(pos
+ 1);
24 #error "Unsupported platform."
30 bool FileRefCreateInfo::IsValid() const {
31 return file_system_type
!= PP_FILESYSTEMTYPE_INVALID
;
35 MakeExternalFileRefCreateInfo(const base::FilePath
& external_path
,
36 const std::string
& display_name
,
37 int browser_pending_host_resource_id
,
38 int renderer_pending_host_resource_id
) {
39 FileRefCreateInfo info
;
40 info
.file_system_type
= PP_FILESYSTEMTYPE_EXTERNAL
;
41 if (!display_name
.empty())
42 info
.display_name
= display_name
;
44 info
.display_name
= GetNameForExternalFilePath(external_path
);
45 info
.browser_pending_host_resource_id
= browser_pending_host_resource_id
;
46 info
.renderer_pending_host_resource_id
= renderer_pending_host_resource_id
;