| Index: chrome/browser/login_prompt_mac.mm
|
| ===================================================================
|
| --- chrome/browser/login_prompt_mac.mm (revision 30691)
|
| +++ chrome/browser/login_prompt_mac.mm (working copy)
|
| @@ -7,8 +7,8 @@
|
|
|
| #include "app/l10n_util.h"
|
| #include "base/mac_util.h"
|
| -#include "base/message_loop.h"
|
| #include "base/sys_string_conversions.h"
|
| +#include "chrome/browser/chrome_thread.h"
|
| #include "chrome/browser/cocoa/constrained_window_mac.h"
|
| #include "chrome/browser/login_model.h"
|
| #include "chrome/browser/password_manager/password_manager.h"
|
| @@ -35,12 +35,10 @@
|
| public ConstrainedWindowMacDelegateCustomSheet,
|
| public LoginModelObserver {
|
| public:
|
| - LoginHandlerMac(URLRequest* request, MessageLoop* ui_loop)
|
| + LoginHandlerMac(URLRequest* request)
|
| : handled_auth_(false),
|
| dialog_(NULL),
|
| - ui_loop_(ui_loop),
|
| request_(request),
|
| - request_loop_(MessageLoop::current()),
|
| password_manager_(NULL),
|
| sheet_controller_(nil),
|
| login_model_(NULL) {
|
| @@ -80,7 +78,7 @@
|
| // LoginHandler:
|
| virtual void BuildViewForPasswordManager(PasswordManager* manager,
|
| std::wstring explanation) {
|
| - DCHECK(MessageLoop::current() == ui_loop_);
|
| + DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI));
|
|
|
| // Load nib here instead of in constructor.
|
| sheet_controller_ = [[[LoginHandlerSheet alloc]
|
| @@ -111,7 +109,7 @@
|
| }
|
|
|
| virtual TabContents* GetTabContentsForLogin() {
|
| - DCHECK(MessageLoop::current() == ui_loop_);
|
| + DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI));
|
|
|
| return tab_util::GetTabContentsByID(render_process_host_id_,
|
| tab_contents_id_);
|
| @@ -129,28 +127,35 @@
|
| password_manager_->ProvisionallySavePassword(password_form_);
|
| }
|
|
|
| - ui_loop_->PostTask(FROM_HERE, NewRunnableMethod(
|
| - this, &LoginHandlerMac::CloseContentsDeferred));
|
| - ui_loop_->PostTask(FROM_HERE, NewRunnableMethod(
|
| - this, &LoginHandlerMac::SendNotifications));
|
| - request_loop_->PostTask(FROM_HERE, NewRunnableMethod(
|
| - this, &LoginHandlerMac::SetAuthDeferred, username, password));
|
| + ChromeThread::PostTask(
|
| + ChromeThread::UI, FROM_HERE,
|
| + NewRunnableMethod(this, &LoginHandlerMac::CloseContentsDeferred));
|
| + ChromeThread::PostTask(
|
| + ChromeThread::UI, FROM_HERE,
|
| + NewRunnableMethod(this, &LoginHandlerMac::SendNotifications));
|
| + ChromeThread::PostTask(
|
| + ChromeThread::IO, FROM_HERE,
|
| + NewRunnableMethod(
|
| + this, &LoginHandlerMac::SetAuthDeferred, username, password));
|
| }
|
|
|
| virtual void CancelAuth() {
|
| if (WasAuthHandled(true))
|
| return;
|
|
|
| - ui_loop_->PostTask(FROM_HERE, NewRunnableMethod(
|
| - this, &LoginHandlerMac::CloseContentsDeferred));
|
| - ui_loop_->PostTask(FROM_HERE, NewRunnableMethod(
|
| - this, &LoginHandlerMac::SendNotifications));
|
| - request_loop_->PostTask(FROM_HERE, NewRunnableMethod(
|
| - this, &LoginHandlerMac::CancelAuthDeferred));
|
| + ChromeThread::PostTask(
|
| + ChromeThread::UI, FROM_HERE,
|
| + NewRunnableMethod(this, &LoginHandlerMac::CloseContentsDeferred));
|
| + ChromeThread::PostTask(
|
| + ChromeThread::UI, FROM_HERE,
|
| + NewRunnableMethod(this, &LoginHandlerMac::SendNotifications));
|
| + ChromeThread::PostTask(
|
| + ChromeThread::IO, FROM_HERE,
|
| + NewRunnableMethod(this, &LoginHandlerMac::CancelAuthDeferred));
|
| }
|
|
|
| virtual void OnRequestCancelled() {
|
| - DCHECK(MessageLoop::current() == request_loop_) <<
|
| + DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO)) <<
|
| "Why is OnRequestCancelled called from the UI thread?";
|
|
|
| // Reference is no longer valid.
|
| @@ -163,42 +168,44 @@
|
| // Overridden from ConstrainedWindowMacDelegate:
|
| virtual void DeleteDelegate() {
|
| if (!WasAuthHandled(true)) {
|
| - request_loop_->PostTask(FROM_HERE, NewRunnableMethod(
|
| - this, &LoginHandlerMac::CancelAuthDeferred));
|
| - ui_loop_->PostTask(FROM_HERE, NewRunnableMethod(
|
| - this, &LoginHandlerMac::SendNotifications));
|
| + ChromeThread::PostTask(
|
| + ChromeThread::IO, FROM_HERE,
|
| + NewRunnableMethod(this, &LoginHandlerMac::CancelAuthDeferred));
|
| + ChromeThread::PostTask(
|
| + ChromeThread::UI, FROM_HERE,
|
| + NewRunnableMethod(this, &LoginHandlerMac::SendNotifications));
|
| }
|
|
|
| // Close sheet if it's still open, as required by
|
| // ConstrainedWindowMacDelegate.
|
| - DCHECK(MessageLoop::current() == ui_loop_);
|
| + DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI));
|
| if (is_sheet_open())
|
| [NSApp endSheet:sheet()];
|
|
|
| SetModel(NULL);
|
|
|
| // Delete this object once all InvokeLaters have been called.
|
| - request_loop_->ReleaseSoon(FROM_HERE, this);
|
| + ChromeThread::ReleaseSoon(ChromeThread::IO, FROM_HERE, this);
|
| }
|
|
|
| void OnLoginPressed(const std::wstring& username,
|
| const std::wstring& password) {
|
| - DCHECK(MessageLoop::current() == ui_loop_);
|
| + DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI));
|
| SetAuth(username, password);
|
| }
|
|
|
| void OnCancelPressed() {
|
| - DCHECK(MessageLoop::current() == ui_loop_);
|
| + DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI));
|
| CancelAuth();
|
| }
|
|
|
| private:
|
| friend class LoginPrompt;
|
|
|
| - // Calls SetAuth from the request_loop.
|
| + // Calls SetAuth from the IO loop.
|
| void SetAuthDeferred(const std::wstring& username,
|
| const std::wstring& password) {
|
| - DCHECK(MessageLoop::current() == request_loop_);
|
| + DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO));
|
|
|
| if (request_) {
|
| request_->SetAuth(username, password);
|
| @@ -206,9 +213,9 @@
|
| }
|
| }
|
|
|
| - // Calls CancelAuth from the request_loop.
|
| + // Calls CancelAuth from the IO loop.
|
| void CancelAuthDeferred() {
|
| - DCHECK(MessageLoop::current() == request_loop_);
|
| + DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO));
|
|
|
| if (request_) {
|
| request_->CancelAuth();
|
| @@ -220,7 +227,7 @@
|
|
|
| // Closes the view_contents from the UI loop.
|
| void CloseContentsDeferred() {
|
| - DCHECK(MessageLoop::current() == ui_loop_);
|
| + DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI));
|
|
|
| // The hosting ConstrainedWindow may have been freed.
|
| if (dialog_)
|
| @@ -240,7 +247,7 @@
|
| // Notify observers that authentication is needed or received. The automation
|
| // proxy uses this for testing.
|
| void SendNotifications() {
|
| - DCHECK(MessageLoop::current() == ui_loop_);
|
| + DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI));
|
|
|
| NotificationService* service = NotificationService::current();
|
| TabContents* requesting_contents = GetTabContentsForLogin();
|
| @@ -266,28 +273,22 @@
|
| Lock handled_auth_lock_;
|
|
|
| // The ConstrainedWindow that is hosting our LoginView.
|
| - // This should only be accessed on the ui_loop_.
|
| + // This should only be accessed on the UI loop.
|
| ConstrainedWindow* dialog_;
|
|
|
| - // The MessageLoop of the thread that the ChromeViewContents lives in.
|
| - MessageLoop* ui_loop_;
|
| -
|
| // The request that wants login data.
|
| - // This should only be accessed on the request_loop_.
|
| + // This should only be accessed on the IO loop.
|
| URLRequest* request_;
|
|
|
| - // The MessageLoop of the thread that the URLRequest lives in.
|
| - MessageLoop* request_loop_;
|
| -
|
| // The PasswordForm sent to the PasswordManager. This is so we can refer to it
|
| // when later notifying the password manager if the credentials were accepted
|
| // or rejected.
|
| - // This should only be accessed on the ui_loop_.
|
| + // This should only be accessed on the UI loop.
|
| PasswordForm password_form_;
|
|
|
| // Points to the password manager owned by the TabContents requesting auth.
|
| // Can be null if the TabContents is not a TabContents.
|
| - // This should only be accessed on the ui_loop_.
|
| + // This should only be accessed on the UI loop.
|
| PasswordManager* password_manager_;
|
|
|
| // Cached from the URLRequest, in case it goes NULL on us.
|
| @@ -305,8 +306,8 @@
|
| };
|
|
|
| // static
|
| -LoginHandler* LoginHandler::Create(URLRequest* request, MessageLoop* ui_loop) {
|
| - return new LoginHandlerMac(request, ui_loop);
|
| +LoginHandler* LoginHandler::Create(URLRequest* request) {
|
| + return new LoginHandlerMac(request);
|
| }
|
|
|
| // ----------------------------------------------------------------------------
|
|
|