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

Side by Side Diff: content/browser/renderer_host/render_view_host_notification_task.h

Issue 8669014: Fix a bug where redirect chain gets lost on process swap. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 // This file defines utility functions for sending notifications (calling 5 // This file defines utility functions for sending notifications (calling
6 // methods that return void and do not have out params) to the RenderViewHost 6 // methods that return void and do not have out params) to the RenderViewHost
7 // or one of its delegate interfaces. The notifications are dispatched 7 // or one of its delegate interfaces. The notifications are dispatched
8 // asynchronously, and only if the specified RenderViewHost still exists. 8 // asynchronously, and only if the specified RenderViewHost still exists.
9 9
10 #ifndef CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_NOTIFICATION_TASK_H_ 10 #ifndef CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_NOTIFICATION_TASK_H_
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 Method method, const Params& params) { 64 Method method, const Params& params) {
65 using content::BrowserThread; 65 using content::BrowserThread;
66 BrowserThread::PostTask( 66 BrowserThread::PostTask(
67 BrowserThread::UI, FROM_HERE, 67 BrowserThread::UI, FROM_HERE,
68 new RenderViewHostNotificationTask<Method, Params>(render_process_id, 68 new RenderViewHostNotificationTask<Method, Params>(render_process_id,
69 render_view_id, 69 render_view_id,
70 method, 70 method,
71 params)); 71 params));
72 } 72 }
73 73
74 class RenderViewHostToDelegate {
75 public:
76 typedef RenderViewHostDelegate MappedType;
77 static MappedType* Map(RenderViewHost* rvh) {
78 return rvh ? rvh->delegate() : NULL;
79 }
80 };
81
82 template <typename Method, typename Params>
83 inline void CallRenderViewHostDelegateHelper(
84 int render_process_id,
85 int render_view_id,
86 Method method,
87 const Params& params) {
88 BrowserThread::PostTask(
89 BrowserThread::UI, FROM_HERE,
90 new RenderViewHostNotificationTask<
91 Method, Params, RenderViewHostToDelegate>(
92 render_process_id,
93 render_view_id,
94 method,
95 params));
96 }
Matt Perry 2011/11/23 02:51:20 this stuff is only necessary for step 1 of the hac
97
74 // For proxying calls to RenderViewHostDelegate::RendererManagement 98 // For proxying calls to RenderViewHostDelegate::RendererManagement
75 99
76 class RenderViewHostToRendererManagementDelegate { 100 class RenderViewHostToRendererManagementDelegate {
77 public: 101 public:
78 typedef RenderViewHostDelegate::RendererManagement MappedType; 102 typedef RenderViewHostDelegate::RendererManagement MappedType;
79 static MappedType* Map(RenderViewHost* rvh) { 103 static MappedType* Map(RenderViewHost* rvh) {
80 return rvh ? rvh->delegate()->GetRendererManagementDelegate() : NULL; 104 return rvh ? rvh->delegate()->GetRendererManagementDelegate() : NULL;
81 } 105 }
82 }; 106 };
83 107
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 Method method, 154 Method method,
131 const A& a, 155 const A& a,
132 const B& b) { 156 const B& b) {
133 internal::CallRenderViewHostHelper(render_process_id, 157 internal::CallRenderViewHostHelper(render_process_id,
134 render_view_id, 158 render_view_id,
135 method, 159 method,
136 MakeTuple(a, b)); 160 MakeTuple(a, b));
137 } 161 }
138 162
139 // ---------------------------------------------------------------------------- 163 // ----------------------------------------------------------------------------
164 // Proxy calls to the specified RenderViewHostDelegate.
165
166 template <typename Method>
167 inline void CallRenderViewHostDelegate(int render_process_id,
168 int render_view_id,
169 Method method) {
170 internal::CallRenderViewHostDelegateHelper(render_process_id,
171 render_view_id,
172 method,
173 MakeTuple());
174 }
175
176 template <typename Method, typename A>
177 inline void CallRenderViewHostDelegate(int render_process_id,
178 int render_view_id,
179 Method method,
180 const A& a) {
181 internal::CallRenderViewHostDelegateHelper(render_process_id,
182 render_view_id,
183 method,
184 MakeTuple(a));
185 }
186
187 template <typename Method, typename A, typename B>
188 inline void CallRenderViewHostDelegate(int render_process_id,
189 int render_view_id,
190 Method method,
191 const A& a,
192 const B& b) {
193 internal::CallRenderViewHostDelegateHelper(render_process_id,
194 render_view_id,
195 method,
196 MakeTuple(a, b));
197 }
198
199 template <typename Method, typename A, typename B, typename C>
200 inline void CallRenderViewHostDelegate(int render_process_id,
201 int render_view_id,
202 Method method,
203 const A& a,
204 const B& b,
205 const C& c) {
206 internal::CallRenderViewHostDelegateHelper(render_process_id,
207 render_view_id,
208 method,
209 MakeTuple(a, b, c));
210 }
211
212 template <typename Method, typename A, typename B, typename C, typename D>
213 inline void CallRenderViewHostDelegate(int render_process_id,
214 int render_view_id,
215 Method method,
216 const A& a,
217 const B& b,
218 const C& c,
219 const D& d) {
220 internal::CallRenderViewHostDelegateHelper(render_process_id,
221 render_view_id,
222 method,
223 MakeTuple(a, b, c, d));
224 }
225 // ----------------------------------------------------------------------------
140 // Proxy calls to the specified RenderViewHost's RendererManagement delegate. 226 // Proxy calls to the specified RenderViewHost's RendererManagement delegate.
141 227
142 template <typename Method> 228 template <typename Method>
143 inline void CallRenderViewHostRendererManagementDelegate(int render_process_id, 229 inline void CallRenderViewHostRendererManagementDelegate(int render_process_id,
144 int render_view_id, 230 int render_view_id,
145 Method method) { 231 Method method) {
146 internal::CallRenderViewHostRendererManagementDelegateHelper( 232 internal::CallRenderViewHostRendererManagementDelegateHelper(
147 render_process_id, 233 render_process_id,
148 render_view_id, 234 render_view_id,
149 method, 235 method,
(...skipping 21 matching lines...) Expand all
171 internal::CallRenderViewHostRendererManagementDelegateHelper( 257 internal::CallRenderViewHostRendererManagementDelegateHelper(
172 render_process_id, 258 render_process_id,
173 render_view_id, 259 render_view_id,
174 method, 260 method,
175 MakeTuple(a, b)); 261 MakeTuple(a, b));
176 } 262 }
177 263
178 // ---------------------------------------------------------------------------- 264 // ----------------------------------------------------------------------------
179 265
180 #endif // CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_NOTIFICATION_TASK_H_ 266 #endif // CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_NOTIFICATION_TASK_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698