| Index: content/browser/renderer_host/pepper/pepper_file_system_browser_host.cc
|
| diff --git a/content/browser/renderer_host/pepper/pepper_file_system_browser_host.cc b/content/browser/renderer_host/pepper/pepper_file_system_browser_host.cc
|
| index 923ee684c719ca00d3de435bc42edceb0d00380a..76bff32bc2f7f44e3f8a4e519601a133f7311f10 100644
|
| --- a/content/browser/renderer_host/pepper/pepper_file_system_browser_host.cc
|
| +++ b/content/browser/renderer_host/pepper/pepper_file_system_browser_host.cc
|
| @@ -52,19 +52,24 @@ PepperFileSystemBrowserHost::PepperFileSystemBrowserHost(BrowserPpapiHost* host,
|
| weak_factory_(this) {
|
| }
|
|
|
| -PepperFileSystemBrowserHost::PepperFileSystemBrowserHost(BrowserPpapiHost* host,
|
| - PP_Instance instance,
|
| - PP_Resource resource,
|
| - const GURL& root_url,
|
| - PP_FileSystemType type)
|
| - : ResourceHost(host->GetPpapiHost(), instance, resource),
|
| - browser_ppapi_host_(host),
|
| - type_(type),
|
| - opened_(true),
|
| - root_url_(root_url),
|
| - fs_context_(NULL),
|
| - called_open_(true),
|
| - weak_factory_(this) {
|
| +void PepperFileSystemBrowserHost::OpenExisting(const GURL& root_url,
|
| + const base::Closure& callback) {
|
| + root_url_ = root_url;
|
| + int render_process_id = 0;
|
| + int unused;
|
| + if (!browser_ppapi_host_->GetRenderViewIDsForInstance(
|
| + pp_instance(), &render_process_id, &unused)) {
|
| + NOTREACHED();
|
| + }
|
| + called_open_ = true;
|
| + // Get the file system context asynchronously, and then complete the Open
|
| + // operation by calling |callback|.
|
| + BrowserThread::PostTaskAndReplyWithResult(
|
| + BrowserThread::UI,
|
| + FROM_HERE,
|
| + base::Bind(&GetFileSystemContextFromRenderId, render_process_id),
|
| + base::Bind(&PepperFileSystemBrowserHost::OpenExistingWithContext,
|
| + weak_factory_.GetWeakPtr(), callback));
|
| }
|
|
|
| PepperFileSystemBrowserHost::~PepperFileSystemBrowserHost() {
|
| @@ -135,6 +140,21 @@ int32_t PepperFileSystemBrowserHost::OnHostMsgOpen(
|
| return PP_OK_COMPLETIONPENDING;
|
| }
|
|
|
| +void PepperFileSystemBrowserHost::OpenExistingWithContext(
|
| + const base::Closure& callback,
|
| + scoped_refptr<fileapi::FileSystemContext> fs_context) {
|
| + if (fs_context.get()) {
|
| + opened_ = true;
|
| + } else {
|
| + // If there is no file system context, we log a warning and continue with an
|
| + // invalid resource (which will produce errors when used), since we have no
|
| + // way to communicate the error to the caller.
|
| + LOG(WARNING) << "Could not retrieve file system context.";
|
| + }
|
| + fs_context_ = fs_context;
|
| + callback.Run();
|
| +}
|
| +
|
| void PepperFileSystemBrowserHost::GotFileSystemContext(
|
| ppapi::host::ReplyMessageContext reply_context,
|
| fileapi::FileSystemType file_system_type,
|
|
|