Windows: Support non-ASCII paths for CefStream file access (issue #481).

git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1611 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
Marshall Greenblatt 2014-02-10 19:26:35 +00:00
parent 9de5343501
commit b76b207ec4

View File

@ -4,6 +4,7 @@
#include "libcef/browser/stream_impl.h" #include "libcef/browser/stream_impl.h"
#include <stdlib.h> #include <stdlib.h>
#include "base/file_util.h"
#include "base/logging.h" #include "base/logging.h"
// Static functions // Static functions
@ -11,8 +12,7 @@
CefRefPtr<CefStreamReader> CefStreamReader::CreateForFile( CefRefPtr<CefStreamReader> CefStreamReader::CreateForFile(
const CefString& fileName) { const CefString& fileName) {
CefRefPtr<CefStreamReader> reader; CefRefPtr<CefStreamReader> reader;
std::string fileNameStr = fileName; FILE* file = base::OpenFile(base::FilePath(fileName), "rb");
FILE* file = fopen(fileNameStr.c_str(), "rb");
if (file) if (file)
reader = new CefFileReader(file, true); reader = new CefFileReader(file, true);
return reader; return reader;
@ -41,8 +41,7 @@ CefRefPtr<CefStreamWriter> CefStreamWriter::CreateForFile(
const CefString& fileName) { const CefString& fileName) {
DCHECK(!fileName.empty()); DCHECK(!fileName.empty());
CefRefPtr<CefStreamWriter> writer; CefRefPtr<CefStreamWriter> writer;
std::string fileNameStr = fileName; FILE* file = base::OpenFile(base::FilePath(fileName), "wb");
FILE* file = fopen(fileNameStr.c_str(), "wb");
if (file) if (file)
writer = new CefFileWriter(file, true); writer = new CefFileWriter(file, true);
return writer; return writer;
@ -67,7 +66,7 @@ CefFileReader::CefFileReader(FILE* file, bool close)
CefFileReader::~CefFileReader() { CefFileReader::~CefFileReader() {
AutoLock lock_scope(this); AutoLock lock_scope(this);
if (close_) if (close_)
fclose(file_); base::CloseFile(file_);
} }
size_t CefFileReader::Read(void* ptr, size_t size, size_t n) { size_t CefFileReader::Read(void* ptr, size_t size, size_t n) {
@ -109,7 +108,7 @@ CefFileWriter::CefFileWriter(FILE* file, bool close)
CefFileWriter::~CefFileWriter() { CefFileWriter::~CefFileWriter() {
AutoLock lock_scope(this); AutoLock lock_scope(this);
if (close_) if (close_)
fclose(file_); base::CloseFile(file_);
} }
size_t CefFileWriter::Write(const void* ptr, size_t size, size_t n) { size_t CefFileWriter::Write(const void* ptr, size_t size, size_t n) {