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

Side by Side Diff: content/browser/service_worker/service_worker_dispatcher_host.cc

Issue 324143002: Decouple IPC::MessageFilter from IPC::Channel (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixing compilation errors Created 6 years, 6 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 | Annotate | Revision Log
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/service_worker/service_worker_dispatcher_host.h" 5 #include "content/browser/service_worker/service_worker_dispatcher_host.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "content/browser/message_port_message_filter.h" 9 #include "content/browser/message_port_message_filter.h"
10 #include "content/browser/message_port_service.h" 10 #include "content/browser/message_port_service.h"
(...skipping 27 matching lines...) Expand all
38 38
39 } // namespace 39 } // namespace
40 40
41 ServiceWorkerDispatcherHost::ServiceWorkerDispatcherHost( 41 ServiceWorkerDispatcherHost::ServiceWorkerDispatcherHost(
42 int render_process_id, 42 int render_process_id,
43 MessagePortMessageFilter* message_port_message_filter) 43 MessagePortMessageFilter* message_port_message_filter)
44 : BrowserMessageFilter(kFilteredMessageClasses, 44 : BrowserMessageFilter(kFilteredMessageClasses,
45 arraysize(kFilteredMessageClasses)), 45 arraysize(kFilteredMessageClasses)),
46 render_process_id_(render_process_id), 46 render_process_id_(render_process_id),
47 message_port_message_filter_(message_port_message_filter), 47 message_port_message_filter_(message_port_message_filter),
48 channel_ready_(false) { 48 sender_ready_(false) {
49 } 49 }
50 50
51 ServiceWorkerDispatcherHost::~ServiceWorkerDispatcherHost() { 51 ServiceWorkerDispatcherHost::~ServiceWorkerDispatcherHost() {
52 if (context_) { 52 if (context_) {
53 context_->RemoveAllProviderHostsForProcess(render_process_id_); 53 context_->RemoveAllProviderHostsForProcess(render_process_id_);
54 context_->embedded_worker_registry()->RemoveChildProcessSender( 54 context_->embedded_worker_registry()->RemoveChildProcessSender(
55 render_process_id_); 55 render_process_id_);
56 } 56 }
57 } 57 }
58 58
59 void ServiceWorkerDispatcherHost::Init( 59 void ServiceWorkerDispatcherHost::Init(
60 ServiceWorkerContextWrapper* context_wrapper) { 60 ServiceWorkerContextWrapper* context_wrapper) {
61 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { 61 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
62 BrowserThread::PostTask( 62 BrowserThread::PostTask(
63 BrowserThread::IO, FROM_HERE, 63 BrowserThread::IO, FROM_HERE,
64 base::Bind(&ServiceWorkerDispatcherHost::Init, 64 base::Bind(&ServiceWorkerDispatcherHost::Init,
65 this, make_scoped_refptr(context_wrapper))); 65 this, make_scoped_refptr(context_wrapper)));
66 return; 66 return;
67 } 67 }
68 context_ = context_wrapper->context()->AsWeakPtr(); 68 context_ = context_wrapper->context()->AsWeakPtr();
69 context_->embedded_worker_registry()->AddChildProcessSender( 69 context_->embedded_worker_registry()->AddChildProcessSender(
70 render_process_id_, this); 70 render_process_id_, this);
71 } 71 }
72 72
73 void ServiceWorkerDispatcherHost::OnFilterAdded(IPC::Channel* channel) { 73 void ServiceWorkerDispatcherHost::OnFilterAdded(IPC::Sender* sender) {
74 BrowserMessageFilter::OnFilterAdded(channel); 74 BrowserMessageFilter::OnFilterAdded(sender);
75 channel_ready_ = true; 75 sender_ready_ = true;
76 std::vector<IPC::Message*> messages; 76 std::vector<IPC::Message*> messages;
77 pending_messages_.release(&messages); 77 pending_messages_.release(&messages);
78 for (size_t i = 0; i < messages.size(); ++i) { 78 for (size_t i = 0; i < messages.size(); ++i) {
79 BrowserMessageFilter::Send(messages[i]); 79 BrowserMessageFilter::Send(messages[i]);
80 } 80 }
81 } 81 }
82 82
83 void ServiceWorkerDispatcherHost::OnDestruct() const { 83 void ServiceWorkerDispatcherHost::OnDestruct() const {
84 BrowserThread::DeleteOnIOThread::Destruct(this); 84 BrowserThread::DeleteOnIOThread::Destruct(this);
85 } 85 }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 if (!handled && context_) { 122 if (!handled && context_) {
123 handled = context_->embedded_worker_registry()->OnMessageReceived(message); 123 handled = context_->embedded_worker_registry()->OnMessageReceived(message);
124 if (!handled) 124 if (!handled)
125 BadMessageReceived(); 125 BadMessageReceived();
126 } 126 }
127 127
128 return handled; 128 return handled;
129 } 129 }
130 130
131 bool ServiceWorkerDispatcherHost::Send(IPC::Message* message) { 131 bool ServiceWorkerDispatcherHost::Send(IPC::Message* message) {
132 if (channel_ready_) { 132 if (sender_ready_) {
133 BrowserMessageFilter::Send(message); 133 BrowserMessageFilter::Send(message);
134 // Don't bother passing through Send()'s result: it's not reliable. 134 // Don't bother passing through Send()'s result: it's not reliable.
135 return true; 135 return true;
136 } 136 }
137 137
138 pending_messages_.push_back(message); 138 pending_messages_.push_back(message);
139 return true; 139 return true;
140 } 140 }
141 141
142 void ServiceWorkerDispatcherHost::RegisterServiceWorkerHandle( 142 void ServiceWorkerDispatcherHost::RegisterServiceWorkerHandle(
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 ServiceWorkerStatusCode status) { 403 ServiceWorkerStatusCode status) {
404 base::string16 error_message; 404 base::string16 error_message;
405 blink::WebServiceWorkerError::ErrorType error_type; 405 blink::WebServiceWorkerError::ErrorType error_type;
406 GetServiceWorkerRegistrationStatusResponse( 406 GetServiceWorkerRegistrationStatusResponse(
407 status, &error_type, &error_message); 407 status, &error_type, &error_message);
408 Send(new ServiceWorkerMsg_ServiceWorkerRegistrationError( 408 Send(new ServiceWorkerMsg_ServiceWorkerRegistrationError(
409 thread_id, request_id, error_type, error_message)); 409 thread_id, request_id, error_type, error_message));
410 } 410 }
411 411
412 } // namespace content 412 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698