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)15std::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() const30bool FileRefCreateInfo::IsValid() const { 31 return file_system_type != PP_FILESYSTEMTYPE_INVALID; 32 } 33 34 FileRefCreateInfo MakeExternalFileRefCreateInfo(const base::FilePath & external_path,const std::string & display_name,int browser_pending_host_resource_id,int renderer_pending_host_resource_id)35MakeExternalFileRefCreateInfo(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