| 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/constrained_window.h" | 14 #include "chrome/browser/ui/constrained_window.h" |
| 15 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 15 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
| 16 #include "chrome/common/chrome_notification_types.h" | 16 #include "chrome/common/chrome_notification_types.h" |
| 17 #include "content/browser/browser_thread.h" | 17 #include "content/browser/browser_thread.h" |
| 18 #include "content/browser/renderer_host/render_process_host.h" | 18 #include "content/browser/renderer_host/render_process_host.h" |
| 19 #include "content/browser/renderer_host/render_view_host.h" | 19 #include "content/browser/renderer_host/render_view_host.h" |
| 20 #include "content/browser/renderer_host/render_view_host_delegate.h" | 20 #include "content/browser/renderer_host/render_view_host_delegate.h" |
| 21 #include "content/browser/renderer_host/resource_dispatcher_host.h" | 21 #include "content/browser/renderer_host/resource_dispatcher_host.h" |
| 22 #include "content/browser/renderer_host/resource_dispatcher_host_request_info.h" | 22 #include "content/browser/renderer_host/resource_dispatcher_host_request_info.h" |
| 23 #include "content/browser/tab_contents/tab_contents.h" | 23 #include "content/browser/tab_contents/tab_contents.h" |
| 24 #include "content/common/notification_service.h" | 24 #include "content/public/browser/notification_service.h" |
| 25 #include "grit/generated_resources.h" | 25 #include "grit/generated_resources.h" |
| 26 #include "net/base/auth.h" | 26 #include "net/base/auth.h" |
| 27 #include "net/base/net_util.h" | 27 #include "net/base/net_util.h" |
| 28 #include "net/url_request/url_request.h" | 28 #include "net/url_request/url_request.h" |
| 29 #include "ui/base/l10n/l10n_util.h" | 29 #include "ui/base/l10n/l10n_util.h" |
| 30 #include "ui/base/text/text_elider.h" | 30 #include "ui/base/text/text_elider.h" |
| 31 | 31 |
| 32 using webkit_glue::PasswordForm; | 32 using webkit_glue::PasswordForm; |
| 33 | 33 |
| 34 class LoginHandlerImpl; | 34 class LoginHandlerImpl; |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 188 // Give up on auth if the request was cancelled. | 188 // Give up on auth if the request was cancelled. |
| 189 CancelAuth(); | 189 CancelAuth(); |
| 190 } | 190 } |
| 191 | 191 |
| 192 void LoginHandler::AddObservers() { | 192 void LoginHandler::AddObservers() { |
| 193 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 193 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 194 | 194 |
| 195 // This is probably OK; we need to listen to everything and we break out of | 195 // This is probably OK; we need to listen to everything and we break out of |
| 196 // the Observe() if we aren't handling the same auth_info(). | 196 // the Observe() if we aren't handling the same auth_info(). |
| 197 registrar_.Add(this, chrome::NOTIFICATION_AUTH_SUPPLIED, | 197 registrar_.Add(this, chrome::NOTIFICATION_AUTH_SUPPLIED, |
| 198 NotificationService::AllBrowserContextsAndSources()); | 198 content::NotificationService::AllBrowserContextsAndSources()); |
| 199 registrar_.Add(this, chrome::NOTIFICATION_AUTH_CANCELLED, | 199 registrar_.Add(this, chrome::NOTIFICATION_AUTH_CANCELLED, |
| 200 NotificationService::AllBrowserContextsAndSources()); | 200 content::NotificationService::AllBrowserContextsAndSources()); |
| 201 } | 201 } |
| 202 | 202 |
| 203 void LoginHandler::RemoveObservers() { | 203 void LoginHandler::RemoveObservers() { |
| 204 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 204 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 205 | 205 |
| 206 registrar_.Remove(this, chrome::NOTIFICATION_AUTH_SUPPLIED, | 206 registrar_.Remove( |
| 207 NotificationService::AllBrowserContextsAndSources()); | 207 this, chrome::NOTIFICATION_AUTH_SUPPLIED, |
| 208 registrar_.Remove(this, chrome::NOTIFICATION_AUTH_CANCELLED, | 208 content::NotificationService::AllBrowserContextsAndSources()); |
| 209 NotificationService::AllBrowserContextsAndSources()); | 209 registrar_.Remove( |
| 210 this, chrome::NOTIFICATION_AUTH_CANCELLED, |
| 211 content::NotificationService::AllBrowserContextsAndSources()); |
| 210 | 212 |
| 211 DCHECK(registrar_.IsEmpty()); | 213 DCHECK(registrar_.IsEmpty()); |
| 212 } | 214 } |
| 213 | 215 |
| 214 void LoginHandler::Observe(int type, | 216 void LoginHandler::Observe(int type, |
| 215 const content::NotificationSource& source, | 217 const content::NotificationSource& source, |
| 216 const content::NotificationDetails& details) { | 218 const content::NotificationDetails& details) { |
| 217 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 219 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 218 DCHECK(type == chrome::NOTIFICATION_AUTH_SUPPLIED || | 220 DCHECK(type == chrome::NOTIFICATION_AUTH_SUPPLIED || |
| 219 type == chrome::NOTIFICATION_AUTH_CANCELLED); | 221 type == chrome::NOTIFICATION_AUTH_CANCELLED); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 258 | 260 |
| 259 void LoginHandler::SetDialog(ConstrainedWindow* dialog) { | 261 void LoginHandler::SetDialog(ConstrainedWindow* dialog) { |
| 260 dialog_ = dialog; | 262 dialog_ = dialog; |
| 261 } | 263 } |
| 262 | 264 |
| 263 void LoginHandler::NotifyAuthNeeded() { | 265 void LoginHandler::NotifyAuthNeeded() { |
| 264 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 266 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 265 if (WasAuthHandled()) | 267 if (WasAuthHandled()) |
| 266 return; | 268 return; |
| 267 | 269 |
| 268 NotificationService* service = NotificationService::current(); | 270 content::NotificationService* service = |
| 271 content::NotificationService::current(); |
| 269 NavigationController* controller = NULL; | 272 NavigationController* controller = NULL; |
| 270 | 273 |
| 271 TabContents* requesting_contents = GetTabContentsForLogin(); | 274 TabContents* requesting_contents = GetTabContentsForLogin(); |
| 272 if (requesting_contents) | 275 if (requesting_contents) |
| 273 controller = &requesting_contents->controller(); | 276 controller = &requesting_contents->controller(); |
| 274 | 277 |
| 275 LoginNotificationDetails details(this); | 278 LoginNotificationDetails details(this); |
| 276 | 279 |
| 277 service->Notify(chrome::NOTIFICATION_AUTH_NEEDED, | 280 service->Notify(chrome::NOTIFICATION_AUTH_NEEDED, |
| 278 content::Source<NavigationController>(controller), | 281 content::Source<NavigationController>(controller), |
| 279 content::Details<LoginNotificationDetails>(&details)); | 282 content::Details<LoginNotificationDetails>(&details)); |
| 280 } | 283 } |
| 281 | 284 |
| 282 void LoginHandler::NotifyAuthCancelled() { | 285 void LoginHandler::NotifyAuthCancelled() { |
| 283 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 286 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 284 DCHECK(WasAuthHandled()); | 287 DCHECK(WasAuthHandled()); |
| 285 | 288 |
| 286 NotificationService* service = NotificationService::current(); | 289 content::NotificationService* service = |
| 290 content::NotificationService::current(); |
| 287 NavigationController* controller = NULL; | 291 NavigationController* controller = NULL; |
| 288 | 292 |
| 289 TabContents* requesting_contents = GetTabContentsForLogin(); | 293 TabContents* requesting_contents = GetTabContentsForLogin(); |
| 290 if (requesting_contents) | 294 if (requesting_contents) |
| 291 controller = &requesting_contents->controller(); | 295 controller = &requesting_contents->controller(); |
| 292 | 296 |
| 293 LoginNotificationDetails details(this); | 297 LoginNotificationDetails details(this); |
| 294 | 298 |
| 295 service->Notify(chrome::NOTIFICATION_AUTH_CANCELLED, | 299 service->Notify(chrome::NOTIFICATION_AUTH_CANCELLED, |
| 296 content::Source<NavigationController>(controller), | 300 content::Source<NavigationController>(controller), |
| 297 content::Details<LoginNotificationDetails>(&details)); | 301 content::Details<LoginNotificationDetails>(&details)); |
| 298 } | 302 } |
| 299 | 303 |
| 300 void LoginHandler::NotifyAuthSupplied(const string16& username, | 304 void LoginHandler::NotifyAuthSupplied(const string16& username, |
| 301 const string16& password) { | 305 const string16& password) { |
| 302 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 306 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 303 DCHECK(WasAuthHandled()); | 307 DCHECK(WasAuthHandled()); |
| 304 | 308 |
| 305 TabContents* requesting_contents = GetTabContentsForLogin(); | 309 TabContents* requesting_contents = GetTabContentsForLogin(); |
| 306 if (!requesting_contents) | 310 if (!requesting_contents) |
| 307 return; | 311 return; |
| 308 | 312 |
| 309 NotificationService* service = NotificationService::current(); | 313 content::NotificationService* service = |
| 314 content::NotificationService::current(); |
| 310 NavigationController* controller = &requesting_contents->controller(); | 315 NavigationController* controller = &requesting_contents->controller(); |
| 311 AuthSuppliedLoginNotificationDetails details(this, username, password); | 316 AuthSuppliedLoginNotificationDetails details(this, username, password); |
| 312 | 317 |
| 313 service->Notify( | 318 service->Notify( |
| 314 chrome::NOTIFICATION_AUTH_SUPPLIED, | 319 chrome::NOTIFICATION_AUTH_SUPPLIED, |
| 315 content::Source<NavigationController>(controller), | 320 content::Source<NavigationController>(controller), |
| 316 content::Details<AuthSuppliedLoginNotificationDetails>(&details)); | 321 content::Details<AuthSuppliedLoginNotificationDetails>(&details)); |
| 317 } | 322 } |
| 318 | 323 |
| 319 void LoginHandler::ReleaseSoon() { | 324 void LoginHandler::ReleaseSoon() { |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 485 // Public API | 490 // Public API |
| 486 | 491 |
| 487 LoginHandler* CreateLoginPrompt(net::AuthChallengeInfo* auth_info, | 492 LoginHandler* CreateLoginPrompt(net::AuthChallengeInfo* auth_info, |
| 488 net::URLRequest* request) { | 493 net::URLRequest* request) { |
| 489 LoginHandler* handler = LoginHandler::Create(auth_info, request); | 494 LoginHandler* handler = LoginHandler::Create(auth_info, request); |
| 490 BrowserThread::PostTask( | 495 BrowserThread::PostTask( |
| 491 BrowserThread::UI, FROM_HERE, new LoginDialogTask( | 496 BrowserThread::UI, FROM_HERE, new LoginDialogTask( |
| 492 request->url(), auth_info, handler)); | 497 request->url(), auth_info, handler)); |
| 493 return handler; | 498 return handler; |
| 494 } | 499 } |
| OLD | NEW |