Index: ppapi/shared_impl/file_ref_create_info.cc |
diff --git a/ppapi/shared_impl/file_ref_create_info.cc b/ppapi/shared_impl/file_ref_create_info.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2fd3e13acd9dfba9179eac823ae33b70a3568fd9 |
--- /dev/null |
+++ b/ppapi/shared_impl/file_ref_create_info.cc |
@@ -0,0 +1,50 @@ |
+// Copyright 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "ppapi/shared_impl/file_ref_create_info.h" |
+ |
+#include "base/logging.h" |
+#include "base/strings/utf_string_conversions.h" |
+#include "ppapi/c/pp_file_info.h" |
+ |
+namespace ppapi { |
+ |
+namespace { |
+ |
+std::string GetNameForExternalFilePath(const base::FilePath& in_path) { |
+ const base::FilePath::StringType& path = in_path.value(); |
+ size_t pos = path.rfind(base::FilePath::kSeparators[0]); |
+ CHECK(pos != base::FilePath::StringType::npos); |
+#if defined(OS_WIN) |
+ return base::WideToUTF8(path.substr(pos + 1)); |
+#elif defined(OS_POSIX) |
+ return path.substr(pos + 1); |
+#else |
+#error "Unsupported platform." |
+#endif |
+} |
+ |
+} // namespace |
+ |
+bool FileRefCreateInfo::IsValid() const { |
+ return file_system_type != PP_FILESYSTEMTYPE_INVALID; |
+} |
+ |
+FileRefCreateInfo |
+MakeExternalFileRefCreateInfo(const base::FilePath& external_path, |
+ const std::string& display_name, |
+ int browser_pending_host_resource_id, |
+ int renderer_pending_host_resource_id) { |
+ FileRefCreateInfo info; |
+ info.file_system_type = PP_FILESYSTEMTYPE_EXTERNAL; |
+ if (!display_name.empty()) |
+ info.display_name = display_name; |
+ else |
+ info.display_name = GetNameForExternalFilePath(external_path); |
+ info.browser_pending_host_resource_id = browser_pending_host_resource_id; |
+ info.renderer_pending_host_resource_id = renderer_pending_host_resource_id; |
+ return info; |
+} |
+ |
+} // namespace ppapi |