Fix BrowserFileSystem context creation race condition between UI and IO threads (issue #442).

git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@404 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
Marshall Greenblatt
2011-12-06 10:16:51 +00:00
parent 1d6de4e8b9
commit a254639d2b
7 changed files with 36 additions and 25 deletions

View File

@ -4,6 +4,7 @@
#include "browser_file_system.h"
#include "browser_file_writer.h"
#include "cef_thread.h"
#include "base/file_path.h"
#include "base/memory/scoped_callback_factory.h"
@ -122,10 +123,19 @@ class BrowserFileSystemCallbackDispatcher
} // namespace
BrowserFileSystem::BrowserFileSystem() {
}
BrowserFileSystem::~BrowserFileSystem() {
}
void BrowserFileSystem::CreateContext() {
if (file_system_context_.get())
return;
if (file_system_dir_.CreateUniqueTempDir()) {
file_system_context_ = new FileSystemContext(
base::MessageLoopProxy::current(),
base::MessageLoopProxy::current(),
CefThread::GetMessageLoopProxyForThread(CefThread::FILE),
CefThread::GetMessageLoopProxyForThread(CefThread::IO),
NULL /* special storage policy */,
NULL /* quota manager */,
file_system_dir_.path(),
@ -138,9 +148,6 @@ BrowserFileSystem::BrowserFileSystem() {
}
}
BrowserFileSystem::~BrowserFileSystem() {
}
void BrowserFileSystem::OpenFileSystem(
WebFrame* frame, WebFileSystem::Type web_filesystem_type,
long long, bool create,