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

Unified Diff: content/browser/worker_host/worker_process_host.cc

Issue 338353007: Implementation of shared worker code path for WebView file system permission. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master_sharedworker
Patch Set: Small changes are made. Created 6 years, 5 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/worker_host/worker_process_host.h ('k') | content/public/browser/content_browser_client.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/worker_host/worker_process_host.cc
diff --git a/content/browser/worker_host/worker_process_host.cc b/content/browser/worker_host/worker_process_host.cc
index 18a3aabed486eb8f7985ee7cf1f67fe358a7ba48..960baf693e0d312eac8d433d021e0740e8f07ef6 100644
--- a/content/browser/worker_host/worker_process_host.cc
+++ b/content/browser/worker_host/worker_process_host.cc
@@ -141,7 +141,8 @@ WorkerProcessHost::WorkerProcessHost(
const WorkerStoragePartition& partition)
: resource_context_(resource_context),
partition_(partition),
- process_launched_(false) {
+ process_launched_(false),
+ weak_factory_(this) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
DCHECK(resource_context_);
process_.reset(
@@ -385,8 +386,9 @@ bool WorkerProcessHost::OnMessageReceived(const IPC::Message& message) {
IPC_MESSAGE_HANDLER(WorkerHostMsg_WorkerConnected,
OnWorkerConnected)
IPC_MESSAGE_HANDLER(WorkerProcessHostMsg_AllowDatabase, OnAllowDatabase)
- IPC_MESSAGE_HANDLER(WorkerProcessHostMsg_RequestFileSystemAccessSync,
- OnRequestFileSystemAccessSync)
+ IPC_MESSAGE_HANDLER_DELAY_REPLY(
+ WorkerProcessHostMsg_RequestFileSystemAccessSync,
+ OnRequestFileSystemAccess)
IPC_MESSAGE_HANDLER(WorkerProcessHostMsg_AllowIndexedDB, OnAllowIndexedDB)
IPC_MESSAGE_HANDLER(WorkerProcessHostMsg_ForceKillWorker,
OnForceKillWorkerProcess)
@@ -472,11 +474,25 @@ void WorkerProcessHost::OnAllowDatabase(int worker_route_id,
GetRenderFrameIDsForWorker(worker_route_id));
}
-void WorkerProcessHost::OnRequestFileSystemAccessSync(int worker_route_id,
- const GURL& url,
- bool* result) {
- *result = GetContentClient()->browser()->AllowWorkerFileSystem(
- url, resource_context_, GetRenderFrameIDsForWorker(worker_route_id));
+void WorkerProcessHost::OnRequestFileSystemAccess(int worker_route_id,
+ const GURL& url,
+ IPC::Message* reply_msg) {
+ GetContentClient()->browser()->AllowWorkerFileSystem(
+ url,
+ resource_context_,
+ GetRenderFrameIDsForWorker(worker_route_id),
+ base::Bind(&WorkerProcessHost::OnRequestFileSystemAccessResponse,
+ weak_factory_.GetWeakPtr(),
+ base::Passed(scoped_ptr<IPC::Message>(reply_msg))));
+}
+
+void WorkerProcessHost::OnRequestFileSystemAccessResponse(
+ scoped_ptr<IPC::Message> reply_msg,
+ bool allowed) {
+ WorkerProcessHostMsg_RequestFileSystemAccessSync::WriteReplyParams(
+ reply_msg.get(),
+ allowed);
+ Send(reply_msg.release());
}
void WorkerProcessHost::OnAllowIndexedDB(int worker_route_id,
« no previous file with comments | « content/browser/worker_host/worker_process_host.h ('k') | content/public/browser/content_browser_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698