Home | History | Annotate | Download | only in shared_impl
      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 
     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 
     30 bool FileRefCreateInfo::IsValid() const {
     31   return file_system_type != PP_FILESYSTEMTYPE_INVALID;
     32 }
     33 
     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