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

Side by Side Diff: content/browser/shared_worker/shared_worker_message_filter.cc

Issue 166273002: Add SharedWorkerMessageFilter for the embedded SharedWorker. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Incorporated kinuko's comments. Created 6 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/worker_host/worker_message_filter.h" 5 #include "content/browser/shared_worker/shared_worker_message_filter.h"
6 6
7 #include "content/browser/devtools/worker_devtools_manager.h"
7 #include "content/browser/message_port_message_filter.h" 8 #include "content/browser/message_port_message_filter.h"
8 #include "content/browser/worker_host/worker_service_impl.h" 9 #include "content/browser/shared_worker/shared_worker_service_impl.h"
10 #include "content/common/devtools_messages.h"
9 #include "content/common/view_messages.h" 11 #include "content/common/view_messages.h"
10 #include "content/common/worker_messages.h" 12 #include "content/common/worker_messages.h"
11 #include "content/public/browser/resource_context.h"
12 13
13 namespace content { 14 namespace content {
14 15
15 WorkerMessageFilter::WorkerMessageFilter( 16 SharedWorkerMessageFilter::SharedWorkerMessageFilter(
16 int render_process_id, 17 int render_process_id,
17 ResourceContext* resource_context, 18 ResourceContext* resource_context,
18 const WorkerStoragePartition& partition, 19 const WorkerStoragePartition& partition,
19 MessagePortMessageFilter* message_port_message_filter) 20 MessagePortMessageFilter* message_port_message_filter)
20 : render_process_id_(render_process_id), 21 : render_process_id_(render_process_id),
21 resource_context_(resource_context), 22 resource_context_(resource_context),
22 partition_(partition), 23 partition_(partition),
23 message_port_message_filter_(message_port_message_filter) { 24 message_port_message_filter_(message_port_message_filter) {
24 // Note: This constructor is called on both IO or UI thread.
25 DCHECK(resource_context);
26 }
27
28 WorkerMessageFilter::~WorkerMessageFilter() {
29 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 25 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
30 } 26 }
31 27
32 void WorkerMessageFilter::OnChannelClosing() { 28 SharedWorkerMessageFilter::~SharedWorkerMessageFilter() {
33 WorkerServiceImpl::GetInstance()->OnWorkerMessageFilterClosing(this); 29 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
34 } 30 }
35 31
36 bool WorkerMessageFilter::OnMessageReceived(const IPC::Message& message, 32 void SharedWorkerMessageFilter::OnChannelClosing() {
37 bool* message_was_ok) { 33 SharedWorkerServiceImpl::GetInstance()->OnSharedWorkerMessageFilterClosing(
34 this);
35 }
36
37 bool SharedWorkerMessageFilter::OnMessageReceived(const IPC::Message& message,
38 bool* message_was_ok) {
38 bool handled = true; 39 bool handled = true;
39 IPC_BEGIN_MESSAGE_MAP_EX(WorkerMessageFilter, message, *message_was_ok) 40 IPC_BEGIN_MESSAGE_MAP_EX(SharedWorkerMessageFilter, message, *message_was_ok)
40 // Worker messages.
41 // Only sent from renderer for now, until we have nested workers. 41 // Only sent from renderer for now, until we have nested workers.
42 IPC_MESSAGE_HANDLER(ViewHostMsg_CreateWorker, OnCreateWorker) 42 IPC_MESSAGE_HANDLER(ViewHostMsg_CreateWorker, OnCreateWorker)
43 IPC_MESSAGE_HANDLER(ViewHostMsg_ForwardToWorker, OnForwardToWorker) 43 IPC_MESSAGE_HANDLER(ViewHostMsg_ForwardToWorker, OnForwardToWorker)
44 // Only sent from renderer. 44 // Only sent from renderer.
45 IPC_MESSAGE_HANDLER(ViewHostMsg_DocumentDetached, OnDocumentDetached) 45 IPC_MESSAGE_HANDLER(ViewHostMsg_DocumentDetached, OnDocumentDetached)
46 // Only sent from SharedWorker in renderer.
47 IPC_MESSAGE_HANDLER(WorkerHostMsg_WorkerContextClosed,
48 OnWorkerContextClosed)
49 IPC_MESSAGE_HANDLER(WorkerHostMsg_WorkerContextDestroyed,
50 OnWorkerContextDestroyed)
51 IPC_MESSAGE_HANDLER(WorkerHostMsg_WorkerScriptLoaded,
52 OnWorkerScriptLoaded)
53 IPC_MESSAGE_HANDLER(WorkerHostMsg_WorkerScriptLoadFailed,
54 OnWorkerScriptLoadFailed)
55 IPC_MESSAGE_HANDLER(WorkerHostMsg_WorkerConnected,
56 OnWorkerConnected)
57 IPC_MESSAGE_HANDLER(WorkerProcessHostMsg_AllowDatabase, OnAllowDatabase)
58 IPC_MESSAGE_HANDLER(WorkerProcessHostMsg_AllowFileSystem, OnAllowFileSystem)
59 IPC_MESSAGE_HANDLER(WorkerProcessHostMsg_AllowIndexedDB, OnAllowIndexedDB)
46 IPC_MESSAGE_UNHANDLED(handled = false) 60 IPC_MESSAGE_UNHANDLED(handled = false)
47 IPC_END_MESSAGE_MAP_EX() 61 IPC_END_MESSAGE_MAP_EX()
48
49 return handled; 62 return handled;
50 } 63 }
51 64
52 int WorkerMessageFilter::GetNextRoutingID() { 65 int SharedWorkerMessageFilter::GetNextRoutingID() {
53 return message_port_message_filter_->GetNextRoutingID(); 66 return message_port_message_filter_->GetNextRoutingID();
54 } 67 }
55 68
56 void WorkerMessageFilter::OnCreateWorker( 69 void SharedWorkerMessageFilter::OnCreateWorker(
57 const ViewHostMsg_CreateWorker_Params& params, 70 const ViewHostMsg_CreateWorker_Params& params,
58 int* route_id) { 71 int* route_id) {
59 bool url_error = false; 72 bool url_error = false;
60 *route_id = GetNextRoutingID(); 73 *route_id = GetNextRoutingID();
61 WorkerServiceImpl::GetInstance()->CreateWorker( 74 SharedWorkerServiceImpl::GetInstance()->CreateWorker(
62 params, *route_id, this, resource_context_, partition_, &url_error); 75 params, *route_id, this, resource_context_, partition_, &url_error);
63 if (url_error) 76 if (url_error)
64 *route_id = MSG_ROUTING_NONE; 77 *route_id = MSG_ROUTING_NONE;
65 } 78 }
66 79
67 void WorkerMessageFilter::OnForwardToWorker(const IPC::Message& message) { 80 void SharedWorkerMessageFilter::OnForwardToWorker(const IPC::Message& message) {
68 WorkerServiceImpl::GetInstance()->ForwardToWorker(message, this); 81 SharedWorkerServiceImpl::GetInstance()->ForwardToWorker(message, this);
69 } 82 }
70 83
71 void WorkerMessageFilter::OnDocumentDetached(unsigned long long document_id) { 84 void SharedWorkerMessageFilter::OnDocumentDetached(
72 WorkerServiceImpl::GetInstance()->DocumentDetached(document_id, this); 85 unsigned long long document_id) {
86 SharedWorkerServiceImpl::GetInstance()->DocumentDetached(document_id, this);
87 }
88
89 void SharedWorkerMessageFilter::OnWorkerContextClosed(int worker_route_id) {
90 SharedWorkerServiceImpl::GetInstance()->WorkerContextClosed(worker_route_id,
91 this);
92 }
93
94 void SharedWorkerMessageFilter::OnWorkerContextDestroyed(int worker_route_id) {
95 SharedWorkerServiceImpl::GetInstance()->WorkerContextDestroyed(
96 worker_route_id,
97 this);
98 }
99
100 void SharedWorkerMessageFilter::OnWorkerScriptLoaded(int worker_route_id) {
101 SharedWorkerServiceImpl::GetInstance()->WorkerScriptLoaded(worker_route_id,
102 this);
103 }
104
105 void SharedWorkerMessageFilter::OnWorkerScriptLoadFailed(int worker_route_id) {
106 SharedWorkerServiceImpl::GetInstance()->WorkerScriptLoadFailed(
107 worker_route_id,
108 this);
109 }
110
111 void SharedWorkerMessageFilter::OnWorkerConnected(int message_port_id,
112 int worker_route_id) {
113 SharedWorkerServiceImpl::GetInstance()->WorkerConnected(
114 message_port_id,
115 worker_route_id,
116 this);
117 }
118
119 void SharedWorkerMessageFilter::OnAllowDatabase(
120 int worker_route_id,
121 const GURL& url,
122 const base::string16& name,
123 const base::string16& display_name,
124 unsigned long estimated_size,
125 bool* result) {
126 SharedWorkerServiceImpl::GetInstance()->AllowDatabase(worker_route_id,
127 url,
128 name,
129 display_name,
130 estimated_size,
131 result,
132 this);
133 }
134
135 void SharedWorkerMessageFilter::OnAllowFileSystem(int worker_route_id,
136 const GURL& url,
137 bool* result) {
138 SharedWorkerServiceImpl::GetInstance()->AllowFileSystem(worker_route_id,
139 url,
140 result,
141 this);
142 }
143
144 void SharedWorkerMessageFilter::OnAllowIndexedDB(int worker_route_id,
145 const GURL& url,
146 const base::string16& name,
147 bool* result) {
148 SharedWorkerServiceImpl::GetInstance()->AllowIndexedDB(worker_route_id,
149 url,
150 name,
151 result,
152 this);
73 } 153 }
74 154
75 } // namespace content 155 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698