Index: webkit/glue/plugins/pepper_private2.cc |
=================================================================== |
--- webkit/glue/plugins/pepper_private2.cc (revision 69381) |
+++ webkit/glue/plugins/pepper_private2.cc (working copy) |
@@ -1,243 +0,0 @@ |
-// Copyright (c) 2010 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 "webkit/glue/plugins/pepper_private2.h" |
- |
-#include <string.h> |
- |
-#include "base/file_path.h" |
-#include "base/stringprintf.h" |
-#include "base/utf_string_conversions.h" |
-#include "googleurl/src/gurl.h" |
-#include "ppapi/c/dev/pp_file_info_dev.h" |
-#include "ppapi/c/dev/ppb_file_io_dev.h" |
-#include "webkit/glue/plugins/pepper_error_util.h" |
-#include "webkit/glue/plugins/pepper_plugin_delegate.h" |
-#include "webkit/glue/plugins/pepper_plugin_instance.h" |
-#include "webkit/glue/plugins/pepper_plugin_module.h" |
-#include "webkit/glue/plugins/pepper_var.h" |
-#include "webkit/glue/plugins/ppb_private2.h" |
- |
-namespace pepper { |
- |
-namespace { |
- |
-PluginInstance* GetSomeInstance(PP_Module pp_module) { |
- PluginModule* module = ResourceTracker::Get()->GetModule(pp_module); |
- if (!module) |
- return NULL; |
- |
- return module->GetSomeInstance(); |
-} |
- |
-void SetInstanceAlwaysOnTop(PP_Instance pp_instance, bool on_top) { |
- PluginInstance* instance = ResourceTracker::Get()->GetInstance(pp_instance); |
- if (!instance) |
- return; |
- instance->set_always_on_top(on_top); |
-} |
- |
-PP_Var GetProxyForURL(PP_Module pp_module, const char* url) { |
- PluginInstance* instance = GetSomeInstance(pp_module); |
- if (!instance) |
- return PP_MakeUndefined(); |
- |
- GURL gurl(url); |
- if (!gurl.is_valid()) |
- return PP_MakeUndefined(); |
- |
- std::string proxy_host = instance->delegate()->ResolveProxy(gurl); |
- if (proxy_host.empty()) |
- return PP_MakeUndefined(); // No proxy. |
- return StringVar::StringToPPVar(instance->module(), proxy_host); |
-} |
- |
-FilePath GetFilePathFromUTF8(const char* path) { |
-#if defined(OS_WIN) |
- return FilePath(UTF8ToUTF16(path)); |
-#else |
- return FilePath(path); |
-#endif |
-} |
- |
-int32_t OpenModuleLocalFile(PP_Module module, |
- const char* path, |
- int32_t mode, |
- PP_FileHandle* file) { |
- PluginInstance* instance = GetSomeInstance(module); |
- if (!instance) |
- return PP_ERROR_FAILED; |
- |
- int flags = 0; |
- if (mode & PP_FILEOPENFLAG_READ) |
- flags |= base::PLATFORM_FILE_READ; |
- if (mode & PP_FILEOPENFLAG_WRITE) { |
- flags |= base::PLATFORM_FILE_WRITE; |
- flags |= base::PLATFORM_FILE_WRITE_ATTRIBUTES; |
- } |
- if (mode & PP_FILEOPENFLAG_TRUNCATE) { |
- DCHECK(mode & PP_FILEOPENFLAG_WRITE); |
- flags |= base::PLATFORM_FILE_TRUNCATE; |
- } |
- |
- if (mode & PP_FILEOPENFLAG_CREATE) { |
- if (mode & PP_FILEOPENFLAG_EXCLUSIVE) |
- flags |= base::PLATFORM_FILE_CREATE; |
- else |
- flags |= base::PLATFORM_FILE_OPEN_ALWAYS; |
- } else { |
- flags |= base::PLATFORM_FILE_OPEN; |
- } |
- |
- base::PlatformFile base_file; |
- base::PlatformFileError result = instance->delegate()->OpenModuleLocalFile( |
- instance->module()->name(), |
- GetFilePathFromUTF8(path), |
- flags, |
- &base_file); |
- *file = base_file; |
- return PlatformFileErrorToPepperError(result); |
-} |
- |
- |
-int32_t RenameModuleLocalFile(PP_Module module, |
- const char* path_from, |
- const char* path_to) { |
- PluginInstance* instance = GetSomeInstance(module); |
- if (!instance) |
- return PP_ERROR_FAILED; |
- |
- base::PlatformFileError result = instance->delegate()->RenameModuleLocalFile( |
- instance->module()->name(), |
- GetFilePathFromUTF8(path_from), |
- GetFilePathFromUTF8(path_to)); |
- return PlatformFileErrorToPepperError(result); |
-} |
- |
-int32_t DeleteModuleLocalFileOrDir(PP_Module module, |
- const char* path, |
- bool recursive) { |
- PluginInstance* instance = GetSomeInstance(module); |
- if (!instance) |
- return PP_ERROR_FAILED; |
- |
- base::PlatformFileError result = |
- instance->delegate()->DeleteModuleLocalFileOrDir( |
- instance->module()->name(), GetFilePathFromUTF8(path), recursive); |
- return PlatformFileErrorToPepperError(result); |
-} |
- |
-int32_t CreateModuleLocalDir(PP_Module module, const char* path) { |
- PluginInstance* instance = GetSomeInstance(module); |
- if (!instance) |
- return PP_ERROR_FAILED; |
- |
- base::PlatformFileError result = instance->delegate()->CreateModuleLocalDir( |
- instance->module()->name(), GetFilePathFromUTF8(path)); |
- return PlatformFileErrorToPepperError(result); |
-} |
- |
-int32_t QueryModuleLocalFile(PP_Module module, |
- const char* path, |
- PP_FileInfo_Dev* info) { |
- PluginInstance* instance = GetSomeInstance(module); |
- if (!instance) |
- return PP_ERROR_FAILED; |
- |
- base::PlatformFileInfo file_info; |
- base::PlatformFileError result = instance->delegate()->QueryModuleLocalFile( |
- instance->module()->name(), GetFilePathFromUTF8(path), &file_info); |
- if (result == base::PLATFORM_FILE_OK) { |
- info->size = file_info.size; |
- info->creation_time = file_info.creation_time.ToDoubleT(); |
- info->last_access_time = file_info.last_accessed.ToDoubleT(); |
- info->last_modified_time = file_info.last_modified.ToDoubleT(); |
- info->system_type = PP_FILESYSTEMTYPE_EXTERNAL; |
- if (file_info.is_directory) |
- info->type = PP_FILETYPE_DIRECTORY; |
- else |
- info->type = PP_FILETYPE_REGULAR; |
- } |
- return PlatformFileErrorToPepperError(result); |
-} |
- |
-int32_t GetModuleLocalDirContents(PP_Module module, |
- const char* path, |
- PP_DirContents_Dev** contents) { |
- PluginInstance* instance = GetSomeInstance(module); |
- if (!instance) |
- return PP_ERROR_FAILED; |
- |
- *contents = NULL; |
- PepperDirContents pepper_contents; |
- base::PlatformFileError result = |
- instance->delegate()->GetModuleLocalDirContents( |
- instance->module()->name(), |
- GetFilePathFromUTF8(path), |
- &pepper_contents); |
- |
- if (result != base::PLATFORM_FILE_OK) |
- return PlatformFileErrorToPepperError(result); |
- |
- *contents = new PP_DirContents_Dev; |
- size_t count = pepper_contents.size(); |
- (*contents)->count = count; |
- (*contents)->entries = new PP_DirEntry_Dev[count]; |
- for (size_t i = 0; i < count; ++i) { |
- PP_DirEntry_Dev& entry = (*contents)->entries[i]; |
-#if defined(OS_WIN) |
- const std::string& name = UTF16ToUTF8(pepper_contents[i].name.value()); |
-#else |
- const std::string& name = pepper_contents[i].name.value(); |
-#endif |
- size_t size = name.size() + 1; |
- char* name_copy = new char[size]; |
- memcpy(name_copy, name.c_str(), size); |
- entry.name = name_copy; |
- entry.is_dir = pepper_contents[i].is_dir; |
- } |
- return PP_OK; |
-} |
- |
-void FreeModuleLocalDirContents(PP_Module module, |
- PP_DirContents_Dev* contents) { |
- DCHECK(contents); |
- for (int32_t i = 0; i < contents->count; ++i) { |
- delete [] contents->entries[i].name; |
- } |
- delete [] contents->entries; |
- delete contents; |
-} |
- |
-bool NavigateToURL(PP_Instance pp_instance, |
- const char* url, |
- const char* target) { |
- PluginInstance* instance = ResourceTracker::Get()->GetInstance(pp_instance); |
- if (!instance) |
- return false; |
- return instance->NavigateToURL(url, target); |
-} |
- |
-const PPB_Private2 ppb_private2 = { |
- &SetInstanceAlwaysOnTop, |
- &Private2::DrawGlyphs, |
- &GetProxyForURL, |
- &OpenModuleLocalFile, |
- &RenameModuleLocalFile, |
- &DeleteModuleLocalFileOrDir, |
- &CreateModuleLocalDir, |
- &QueryModuleLocalFile, |
- &GetModuleLocalDirContents, |
- &FreeModuleLocalDirContents, |
- &NavigateToURL, |
-}; |
- |
-} // namespace |
- |
-// static |
-const PPB_Private2* Private2::GetInterface() { |
- return &ppb_private2; |
-} |
- |
-} // namespace pepper |