Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(166)

Side by Side Diff: content/browser/renderer_host/pepper/pepper_file_system_browser_host.cc

Issue 55133010: [PPAPI] Fixed FileSystems from JavaScript not having a context. (Closed) Base URL: http://git.chromium.org/chromium/src.git@pepper-fs-fileio-test-disable
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/renderer_host/pepper/pepper_file_system_browser_host.h " 5 #include "content/browser/renderer_host/pepper/pepper_file_system_browser_host.h "
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "content/public/browser/browser_ppapi_host.h" 9 #include "content/public/browser/browser_ppapi_host.h"
10 #include "content/public/browser/browser_thread.h" 10 #include "content/public/browser/browser_thread.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 PP_FileSystemType type) 58 PP_FileSystemType type)
59 : ResourceHost(host->GetPpapiHost(), instance, resource), 59 : ResourceHost(host->GetPpapiHost(), instance, resource),
60 browser_ppapi_host_(host), 60 browser_ppapi_host_(host),
61 type_(type), 61 type_(type),
62 opened_(false), 62 opened_(false),
63 fs_context_(NULL), 63 fs_context_(NULL),
64 called_open_(false), 64 called_open_(false),
65 weak_factory_(this) { 65 weak_factory_(this) {
66 } 66 }
67 67
68 PepperFileSystemBrowserHost::PepperFileSystemBrowserHost(BrowserPpapiHost* host, 68 void PepperFileSystemBrowserHost::OpenExisting(const GURL& root_url,
69 PP_Instance instance, 69 base::Closure callback) {
70 PP_Resource resource, 70 root_url_ = root_url;
71 const GURL& root_url, 71 int render_process_id = 0;
72 PP_FileSystemType type) 72 int unused;
73 : ResourceHost(host->GetPpapiHost(), instance, resource), 73 if (!browser_ppapi_host_->GetRenderViewIDsForInstance(
74 browser_ppapi_host_(host), 74 pp_instance(), &render_process_id, &unused)) {
75 type_(type), 75 NOTREACHED();
76 opened_(true), 76 }
77 root_url_(root_url), 77 called_open_ = true;
78 fs_context_(NULL), 78 // Get the file system context asynchronously, and then complete the Open
79 called_open_(true), 79 // operation by calling |callback|.
80 weak_factory_(this) { 80 BrowserThread::PostTaskAndReplyWithResult(
81 BrowserThread::UI,
82 FROM_HERE,
83 base::Bind(&GetFileSystemContextFromRenderId, render_process_id),
84 base::Bind(&PepperFileSystemBrowserHost::OpenExistingHaveContext,
85 weak_factory_.GetWeakPtr(), callback));
81 } 86 }
82 87
83 PepperFileSystemBrowserHost::~PepperFileSystemBrowserHost() { 88 PepperFileSystemBrowserHost::~PepperFileSystemBrowserHost() {
84 // TODO(teravest): Create a FileSystemOperationRunner 89 // TODO(teravest): Create a FileSystemOperationRunner
85 // per-PepperFileSystemBrowserHost, force users of this FileSystem to use it, 90 // per-PepperFileSystemBrowserHost, force users of this FileSystem to use it,
86 // and call Shutdown() on it here. 91 // and call Shutdown() on it here.
87 } 92 }
88 93
89 int32_t PepperFileSystemBrowserHost::OnResourceMessageReceived( 94 int32_t PepperFileSystemBrowserHost::OnResourceMessageReceived(
90 const IPC::Message& msg, 95 const IPC::Message& msg,
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 BrowserThread::UI, 146 BrowserThread::UI,
142 FROM_HERE, 147 FROM_HERE,
143 base::Bind(&GetFileSystemContextFromRenderId, render_process_id), 148 base::Bind(&GetFileSystemContextFromRenderId, render_process_id),
144 base::Bind(&PepperFileSystemBrowserHost::GotFileSystemContext, 149 base::Bind(&PepperFileSystemBrowserHost::GotFileSystemContext,
145 weak_factory_.GetWeakPtr(), 150 weak_factory_.GetWeakPtr(),
146 context->MakeReplyMessageContext(), 151 context->MakeReplyMessageContext(),
147 file_system_type)); 152 file_system_type));
148 return PP_OK_COMPLETIONPENDING; 153 return PP_OK_COMPLETIONPENDING;
149 } 154 }
150 155
156 void PepperFileSystemBrowserHost::OpenExistingHaveContext(
157 base::Closure callback,
158 scoped_refptr<fileapi::FileSystemContext> fs_context) {
159 opened_ = true;
yzshen1 2013/11/01 22:27:39 Is it intended to set it to true even if fs_contex
Matt Giuca 2013/11/01 23:19:47 Good point. I changed it so that opened_ is only t
160 // If there is no file system context, we log a warning and continue with an
161 // invalid resource (which will produce errors when used), since we have no
162 // way to communicate the error to the caller.
163 if (!fs_context.get())
164 LOG(WARNING) << "Could not retrieve file system context.";
165 fs_context_ = fs_context;
166 callback.Run();
167 }
168
151 void PepperFileSystemBrowserHost::GotFileSystemContext( 169 void PepperFileSystemBrowserHost::GotFileSystemContext(
152 ppapi::host::ReplyMessageContext reply_context, 170 ppapi::host::ReplyMessageContext reply_context,
153 fileapi::FileSystemType file_system_type, 171 fileapi::FileSystemType file_system_type,
154 scoped_refptr<fileapi::FileSystemContext> fs_context) { 172 scoped_refptr<fileapi::FileSystemContext> fs_context) {
155 if (!fs_context.get()) { 173 if (!fs_context.get()) {
156 OpenFileSystemComplete( 174 OpenFileSystemComplete(
157 reply_context, GURL(), std::string(), base::PLATFORM_FILE_ERROR_FAILED); 175 reply_context, GURL(), std::string(), base::PLATFORM_FILE_ERROR_FAILED);
158 return; 176 return;
159 } 177 }
160 GURL origin = browser_ppapi_host_->GetDocumentURLForInstance( 178 GURL origin = browser_ppapi_host_->GetDocumentURLForInstance(
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 BrowserThread::UI, 238 BrowserThread::UI,
221 FROM_HERE, 239 FROM_HERE,
222 base::Bind(&GetFileSystemContextFromRenderId, render_process_id), 240 base::Bind(&GetFileSystemContextFromRenderId, render_process_id),
223 base::Bind(&PepperFileSystemBrowserHost::GotIsolatedFileSystemContext, 241 base::Bind(&PepperFileSystemBrowserHost::GotIsolatedFileSystemContext,
224 weak_factory_.GetWeakPtr(), 242 weak_factory_.GetWeakPtr(),
225 context->MakeReplyMessageContext())); 243 context->MakeReplyMessageContext()));
226 return PP_OK_COMPLETIONPENDING; 244 return PP_OK_COMPLETIONPENDING;
227 } 245 }
228 246
229 } // namespace content 247 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698