• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
5 #include "ppapi/shared_impl/file_ref_create_info.h"
6 
7 #include "base/logging.h"
8 #include "base/strings/utf_string_conversions.h"
9 #include "ppapi/c/pp_file_info.h"
10 
11 namespace ppapi {
12 
13 namespace {
14 
GetNameForExternalFilePath(const base::FilePath & in_path)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);
19 #if defined(OS_WIN)
20   return base::WideToUTF8(path.substr(pos + 1));
21 #elif defined(OS_POSIX)
22   return path.substr(pos + 1);
23 #else
24 #error "Unsupported platform."
25 #endif
26 }
27 
28 }  // namespace
29 
IsValid() const30 bool FileRefCreateInfo::IsValid() const {
31   return file_system_type != PP_FILESYSTEMTYPE_INVALID;
32 }
33 
MakeExternalFileRefCreateInfo(const base::FilePath & external_path,const std::string & display_name,int browser_pending_host_resource_id,int renderer_pending_host_resource_id)34 FileRefCreateInfo MakeExternalFileRefCreateInfo(
35     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;
43   else
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;
47   return info;
48 }
49 
50 }  // namespace ppapi
51