OLD | NEW |
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 #include "chrome/browser/ui/login/login_prompt.h" | 5 #include "chrome/browser/ui/login/login_prompt.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/synchronization/lock.h" | 10 #include "base/synchronization/lock.h" |
11 #include "base/utf_string_conversions.h" | 11 #include "base/utf_string_conversions.h" |
12 #include "chrome/browser/password_manager/password_manager.h" | 12 #include "chrome/browser/password_manager/password_manager.h" |
13 #include "chrome/browser/tab_contents/tab_util.h" | 13 #include "chrome/browser/tab_contents/tab_util.h" |
14 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 14 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
| 15 #include "chrome/common/chrome_notification_types.h" |
15 #include "content/browser/browser_thread.h" | 16 #include "content/browser/browser_thread.h" |
16 #include "content/browser/renderer_host/render_process_host.h" | 17 #include "content/browser/renderer_host/render_process_host.h" |
17 #include "content/browser/renderer_host/render_view_host.h" | 18 #include "content/browser/renderer_host/render_view_host.h" |
18 #include "content/browser/renderer_host/render_view_host_delegate.h" | 19 #include "content/browser/renderer_host/render_view_host_delegate.h" |
19 #include "content/browser/renderer_host/resource_dispatcher_host.h" | 20 #include "content/browser/renderer_host/resource_dispatcher_host.h" |
20 #include "content/browser/renderer_host/resource_dispatcher_host_request_info.h" | 21 #include "content/browser/renderer_host/resource_dispatcher_host_request_info.h" |
21 #include "content/browser/tab_contents/constrained_window.h" | 22 #include "content/browser/tab_contents/constrained_window.h" |
22 #include "content/browser/tab_contents/tab_contents.h" | 23 #include "content/browser/tab_contents/tab_contents.h" |
23 #include "content/common/notification_service.h" | 24 #include "content/common/notification_service.h" |
24 #include "grit/generated_resources.h" | 25 #include "grit/generated_resources.h" |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 // Reference is no longer valid. | 185 // Reference is no longer valid. |
185 request_ = NULL; | 186 request_ = NULL; |
186 | 187 |
187 // Give up on auth if the request was cancelled. | 188 // Give up on auth if the request was cancelled. |
188 CancelAuth(); | 189 CancelAuth(); |
189 } | 190 } |
190 | 191 |
191 void LoginHandler::AddObservers() { | 192 void LoginHandler::AddObservers() { |
192 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 193 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
193 | 194 |
194 registrar_.Add(this, NotificationType::AUTH_SUPPLIED, | 195 registrar_.Add(this, chrome::NOTIFICATION_AUTH_SUPPLIED, |
195 NotificationService::AllSources()); | 196 NotificationService::AllSources()); |
196 registrar_.Add(this, NotificationType::AUTH_CANCELLED, | 197 registrar_.Add(this, chrome::NOTIFICATION_AUTH_CANCELLED, |
197 NotificationService::AllSources()); | 198 NotificationService::AllSources()); |
198 } | 199 } |
199 | 200 |
200 void LoginHandler::RemoveObservers() { | 201 void LoginHandler::RemoveObservers() { |
201 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 202 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
202 | 203 |
203 registrar_.Remove(this, NotificationType::AUTH_SUPPLIED, | 204 registrar_.Remove(this, chrome::NOTIFICATION_AUTH_SUPPLIED, |
204 NotificationService::AllSources()); | 205 NotificationService::AllSources()); |
205 registrar_.Remove(this, NotificationType::AUTH_CANCELLED, | 206 registrar_.Remove(this, chrome::NOTIFICATION_AUTH_CANCELLED, |
206 NotificationService::AllSources()); | 207 NotificationService::AllSources()); |
207 | 208 |
208 DCHECK(registrar_.IsEmpty()); | 209 DCHECK(registrar_.IsEmpty()); |
209 } | 210 } |
210 | 211 |
211 void LoginHandler::Observe(NotificationType type, | 212 void LoginHandler::Observe(int type, |
212 const NotificationSource& source, | 213 const NotificationSource& source, |
213 const NotificationDetails& details) { | 214 const NotificationDetails& details) { |
214 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 215 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
215 DCHECK(type == NotificationType::AUTH_SUPPLIED || | 216 DCHECK(type == chrome::NOTIFICATION_AUTH_SUPPLIED || |
216 type == NotificationType::AUTH_CANCELLED); | 217 type == chrome::NOTIFICATION_AUTH_CANCELLED); |
217 | 218 |
218 TabContents* requesting_contents = GetTabContentsForLogin(); | 219 TabContents* requesting_contents = GetTabContentsForLogin(); |
219 if (!requesting_contents) | 220 if (!requesting_contents) |
220 return; | 221 return; |
221 | 222 |
222 // Break out early if we aren't interested in the notification. | 223 // Break out early if we aren't interested in the notification. |
223 if (WasAuthHandled()) | 224 if (WasAuthHandled()) |
224 return; | 225 return; |
225 | 226 |
226 LoginNotificationDetails* login_details = | 227 LoginNotificationDetails* login_details = |
227 Details<LoginNotificationDetails>(details).ptr(); | 228 Details<LoginNotificationDetails>(details).ptr(); |
228 | 229 |
229 // WasAuthHandled() should always test positive before we publish | 230 // WasAuthHandled() should always test positive before we publish |
230 // AUTH_SUPPLIED or AUTH_CANCELLED notifications. | 231 // AUTH_SUPPLIED or AUTH_CANCELLED notifications. |
231 DCHECK(login_details->handler() != this); | 232 DCHECK(login_details->handler() != this); |
232 | 233 |
233 // Only handle notification for the identical auth info. | 234 // Only handle notification for the identical auth info. |
234 if (*login_details->handler()->auth_info() != *auth_info()) | 235 if (*login_details->handler()->auth_info() != *auth_info()) |
235 return; | 236 return; |
236 | 237 |
237 // Set or cancel the auth in this handler. | 238 // Set or cancel the auth in this handler. |
238 if (type == NotificationType::AUTH_SUPPLIED) { | 239 if (type == chrome::NOTIFICATION_AUTH_SUPPLIED) { |
239 AuthSuppliedLoginNotificationDetails* supplied_details = | 240 AuthSuppliedLoginNotificationDetails* supplied_details = |
240 Details<AuthSuppliedLoginNotificationDetails>(details).ptr(); | 241 Details<AuthSuppliedLoginNotificationDetails>(details).ptr(); |
241 SetAuth(supplied_details->username(), supplied_details->password()); | 242 SetAuth(supplied_details->username(), supplied_details->password()); |
242 } else { | 243 } else { |
243 DCHECK(type == NotificationType::AUTH_CANCELLED); | 244 DCHECK(type == chrome::NOTIFICATION_AUTH_CANCELLED); |
244 CancelAuth(); | 245 CancelAuth(); |
245 } | 246 } |
246 } | 247 } |
247 | 248 |
248 void LoginHandler::SetModel(LoginModel* model) { | 249 void LoginHandler::SetModel(LoginModel* model) { |
249 if (login_model_) | 250 if (login_model_) |
250 login_model_->SetObserver(NULL); | 251 login_model_->SetObserver(NULL); |
251 login_model_ = model; | 252 login_model_ = model; |
252 if (login_model_) | 253 if (login_model_) |
253 login_model_->SetObserver(this); | 254 login_model_->SetObserver(this); |
(...skipping 10 matching lines...) Expand all Loading... |
264 | 265 |
265 NotificationService* service = NotificationService::current(); | 266 NotificationService* service = NotificationService::current(); |
266 NavigationController* controller = NULL; | 267 NavigationController* controller = NULL; |
267 | 268 |
268 TabContents* requesting_contents = GetTabContentsForLogin(); | 269 TabContents* requesting_contents = GetTabContentsForLogin(); |
269 if (requesting_contents) | 270 if (requesting_contents) |
270 controller = &requesting_contents->controller(); | 271 controller = &requesting_contents->controller(); |
271 | 272 |
272 LoginNotificationDetails details(this); | 273 LoginNotificationDetails details(this); |
273 | 274 |
274 service->Notify(NotificationType::AUTH_NEEDED, | 275 service->Notify(chrome::NOTIFICATION_AUTH_NEEDED, |
275 Source<NavigationController>(controller), | 276 Source<NavigationController>(controller), |
276 Details<LoginNotificationDetails>(&details)); | 277 Details<LoginNotificationDetails>(&details)); |
277 } | 278 } |
278 | 279 |
279 void LoginHandler::NotifyAuthCancelled() { | 280 void LoginHandler::NotifyAuthCancelled() { |
280 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 281 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
281 DCHECK(WasAuthHandled()); | 282 DCHECK(WasAuthHandled()); |
282 | 283 |
283 NotificationService* service = NotificationService::current(); | 284 NotificationService* service = NotificationService::current(); |
284 NavigationController* controller = NULL; | 285 NavigationController* controller = NULL; |
285 | 286 |
286 TabContents* requesting_contents = GetTabContentsForLogin(); | 287 TabContents* requesting_contents = GetTabContentsForLogin(); |
287 if (requesting_contents) | 288 if (requesting_contents) |
288 controller = &requesting_contents->controller(); | 289 controller = &requesting_contents->controller(); |
289 | 290 |
290 LoginNotificationDetails details(this); | 291 LoginNotificationDetails details(this); |
291 | 292 |
292 service->Notify(NotificationType::AUTH_CANCELLED, | 293 service->Notify(chrome::NOTIFICATION_AUTH_CANCELLED, |
293 Source<NavigationController>(controller), | 294 Source<NavigationController>(controller), |
294 Details<LoginNotificationDetails>(&details)); | 295 Details<LoginNotificationDetails>(&details)); |
295 } | 296 } |
296 | 297 |
297 void LoginHandler::NotifyAuthSupplied(const string16& username, | 298 void LoginHandler::NotifyAuthSupplied(const string16& username, |
298 const string16& password) { | 299 const string16& password) { |
299 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 300 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
300 DCHECK(WasAuthHandled()); | 301 DCHECK(WasAuthHandled()); |
301 | 302 |
302 TabContents* requesting_contents = GetTabContentsForLogin(); | 303 TabContents* requesting_contents = GetTabContentsForLogin(); |
303 if (!requesting_contents) | 304 if (!requesting_contents) |
304 return; | 305 return; |
305 | 306 |
306 NotificationService* service = NotificationService::current(); | 307 NotificationService* service = NotificationService::current(); |
307 NavigationController* controller = &requesting_contents->controller(); | 308 NavigationController* controller = &requesting_contents->controller(); |
308 AuthSuppliedLoginNotificationDetails details(this, username, password); | 309 AuthSuppliedLoginNotificationDetails details(this, username, password); |
309 | 310 |
310 service->Notify(NotificationType::AUTH_SUPPLIED, | 311 service->Notify(chrome::NOTIFICATION_AUTH_SUPPLIED, |
311 Source<NavigationController>(controller), | 312 Source<NavigationController>(controller), |
312 Details<AuthSuppliedLoginNotificationDetails>(&details)); | 313 Details<AuthSuppliedLoginNotificationDetails>(&details)); |
313 } | 314 } |
314 | 315 |
315 void LoginHandler::ReleaseSoon() { | 316 void LoginHandler::ReleaseSoon() { |
316 if (!TestAndSetAuthHandled()) { | 317 if (!TestAndSetAuthHandled()) { |
317 BrowserThread::PostTask( | 318 BrowserThread::PostTask( |
318 BrowserThread::IO, FROM_HERE, | 319 BrowserThread::IO, FROM_HERE, |
319 NewRunnableMethod(this, &LoginHandler::CancelAuthDeferred)); | 320 NewRunnableMethod(this, &LoginHandler::CancelAuthDeferred)); |
320 BrowserThread::PostTask( | 321 BrowserThread::PostTask( |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
479 // Public API | 480 // Public API |
480 | 481 |
481 LoginHandler* CreateLoginPrompt(net::AuthChallengeInfo* auth_info, | 482 LoginHandler* CreateLoginPrompt(net::AuthChallengeInfo* auth_info, |
482 net::URLRequest* request) { | 483 net::URLRequest* request) { |
483 LoginHandler* handler = LoginHandler::Create(auth_info, request); | 484 LoginHandler* handler = LoginHandler::Create(auth_info, request); |
484 BrowserThread::PostTask( | 485 BrowserThread::PostTask( |
485 BrowserThread::UI, FROM_HERE, new LoginDialogTask( | 486 BrowserThread::UI, FROM_HERE, new LoginDialogTask( |
486 request->url(), auth_info, handler)); | 487 request->url(), auth_info, handler)); |
487 return handler; | 488 return handler; |
488 } | 489 } |
OLD | NEW |