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

Unified Diff: chrome/browser/login_prompt_win.cc

Issue 345037: Fifth patch in getting rid of caching MessageLoop pointers. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/login_prompt_win.cc
===================================================================
--- chrome/browser/login_prompt_win.cc (revision 30691)
+++ chrome/browser/login_prompt_win.cc (working copy)
@@ -5,7 +5,7 @@
#include "chrome/browser/login_prompt.h"
#include "app/l10n_util.h"
-#include "base/message_loop.h"
+#include "chrome/browser/chrome_thread.h"
#include "chrome/browser/password_manager/password_manager.h"
#include "chrome/browser/renderer_host/resource_dispatcher_host.h"
#include "chrome/browser/tab_contents/navigation_controller.h"
@@ -30,12 +30,10 @@
public base::RefCountedThreadSafe<LoginHandlerWin>,
public views::DialogDelegate {
public:
- LoginHandlerWin(URLRequest* request, MessageLoop* ui_loop)
+ LoginHandlerWin(URLRequest* request)
: dialog_(NULL),
handled_auth_(false),
request_(request),
- request_loop_(MessageLoop::current()),
- ui_loop_(ui_loop),
password_manager_(NULL) {
DCHECK(request_) << "LoginHandler constructed with NULL request";
@@ -65,29 +63,30 @@
return l10n_util::GetString(IDS_LOGIN_DIALOG_TITLE);
}
virtual void WindowClosing() {
- DCHECK(MessageLoop::current() == ui_loop_);
+ DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI));
// Reference is no longer valid.
dialog_ = NULL;
if (!WasAuthHandled(true)) {
- request_loop_->PostTask(FROM_HERE, NewRunnableMethod(
- this, &LoginHandlerWin::CancelAuthDeferred));
+ ChromeThread::PostTask(
+ ChromeThread::IO, FROM_HERE,
+ NewRunnableMethod(this, &LoginHandlerWin::CancelAuthDeferred));
SendNotifications();
}
}
virtual void DeleteDelegate() {
// Delete this object once all InvokeLaters have been called.
- request_loop_->ReleaseSoon(FROM_HERE, this);
+ ChromeThread::ReleaseSoon(ChromeThread::IO, FROM_HERE, this);
}
virtual bool Cancel() {
- DCHECK(MessageLoop::current() == ui_loop_);
+ DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI));
DCHECK(dialog_) << "LoginHandler invoked without being attached";
CancelAuth();
return true;
}
virtual bool Accept() {
- DCHECK(MessageLoop::current() == ui_loop_);
+ DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI));
DCHECK(dialog_) << "LoginHandler invoked without being attached";
SetAuth(login_view_->GetUsername(), login_view_->GetPassword());
return true;
@@ -100,7 +99,7 @@
virtual void BuildViewForPasswordManager(PasswordManager* manager,
std::wstring explanation) {
- DCHECK(MessageLoop::current() == ui_loop_);
+ DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI));
LoginView* view = new LoginView(explanation);
@@ -130,7 +129,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_);
@@ -148,28 +147,35 @@
password_manager_->ProvisionallySavePassword(password_form_);
}
- ui_loop_->PostTask(FROM_HERE, NewRunnableMethod(
- this, &LoginHandlerWin::CloseContentsDeferred));
- ui_loop_->PostTask(FROM_HERE, NewRunnableMethod(
- this, &LoginHandlerWin::SendNotifications));
- request_loop_->PostTask(FROM_HERE, NewRunnableMethod(
- this, &LoginHandlerWin::SetAuthDeferred, username, password));
+ ChromeThread::PostTask(
+ ChromeThread::UI, FROM_HERE,
+ NewRunnableMethod(this, &LoginHandlerWin::CloseContentsDeferred));
+ ChromeThread::PostTask(
+ ChromeThread::UI, FROM_HERE,
+ NewRunnableMethod(this, &LoginHandlerWin::SendNotifications));
+ ChromeThread::PostTask(
+ ChromeThread::IO, FROM_HERE,
+ NewRunnableMethod(
+ this, &LoginHandlerWin::SetAuthDeferred, username, password));
}
virtual void CancelAuth() {
if (WasAuthHandled(true))
return;
- ui_loop_->PostTask(FROM_HERE, NewRunnableMethod(
- this, &LoginHandlerWin::CloseContentsDeferred));
- ui_loop_->PostTask(FROM_HERE, NewRunnableMethod(
- this, &LoginHandlerWin::SendNotifications));
- request_loop_->PostTask(FROM_HERE, NewRunnableMethod(
- this, &LoginHandlerWin::CancelAuthDeferred));
+ ChromeThread::PostTask(
+ ChromeThread::UI, FROM_HERE,
+ NewRunnableMethod(this, &LoginHandlerWin::CloseContentsDeferred));
+ ChromeThread::PostTask(
+ ChromeThread::UI, FROM_HERE,
+ NewRunnableMethod(this, &LoginHandlerWin::SendNotifications));
+ ChromeThread::PostTask(
+ ChromeThread::IO, FROM_HERE,
+ NewRunnableMethod(this, &LoginHandlerWin::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.
@@ -182,10 +188,10 @@
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);
@@ -193,9 +199,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();
@@ -207,7 +213,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_)
@@ -227,7 +233,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();
@@ -253,31 +259,25 @@
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 LoginView that contains the user's login information
LoginView* login_view_;
// 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.
@@ -288,6 +288,6 @@
};
// static
-LoginHandler* LoginHandler::Create(URLRequest* request, MessageLoop* ui_loop) {
- return new LoginHandlerWin(request, ui_loop);
+LoginHandler* LoginHandler::Create(URLRequest* request) {
+ return new LoginHandlerWin(request);
}

Powered by Google App Engine
This is Rietveld 408576698