This source file includes following definitions.
- dialog_
- OnAutofillDataAvailable
- OnLoginModelDestroying
- GetDialogButtonLabel
- GetWindowTitle
- WindowClosing
- DeleteDelegate
- GetModalType
- Cancel
- Accept
- GetInitiallyFocusedView
- GetContentsView
- GetWidget
- GetWidget
- BuildViewForPasswordManager
- CloseDialog
- Create
#include "chrome/browser/ui/login/login_prompt.h"
#include "base/strings/string16.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/tab_contents/tab_util.h"
#include "chrome/browser/ui/views/login_view.h"
#include "chrome/common/chrome_switches.h"
#include "components/password_manager/core/browser/password_manager.h"
#include "components/web_modal/web_contents_modal_dialog_host.h"
#include "components/web_modal/web_contents_modal_dialog_manager.h"
#include "components/web_modal/web_contents_modal_dialog_manager_delegate.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h"
#include "grit/generated_resources.h"
#include "net/url_request/url_request.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/views/widget/widget.h"
#include "ui/views/window/dialog_delegate.h"
using autofill::PasswordForm;
using content::BrowserThread;
using content::WebContents;
using web_modal::WebContentsModalDialogManager;
using web_modal::WebContentsModalDialogManagerDelegate;
class LoginHandlerViews : public LoginHandler,
public views::DialogDelegate {
public:
LoginHandlerViews(net::AuthChallengeInfo* auth_info, net::URLRequest* request)
: LoginHandler(auth_info, request),
login_view_(NULL),
dialog_(NULL) {
}
virtual void OnAutofillDataAvailable(
const base::string16& username,
const base::string16& password) OVERRIDE {
}
virtual void OnLoginModelDestroying() OVERRIDE {}
virtual base::string16 GetDialogButtonLabel(
ui::DialogButton button) const OVERRIDE {
if (button == ui::DIALOG_BUTTON_OK)
return l10n_util::GetStringUTF16(IDS_LOGIN_DIALOG_OK_BUTTON_LABEL);
return DialogDelegate::GetDialogButtonLabel(button);
}
virtual base::string16 GetWindowTitle() const OVERRIDE {
return l10n_util::GetStringUTF16(IDS_LOGIN_DIALOG_TITLE);
}
virtual void WindowClosing() OVERRIDE {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
WebContents* tab = GetWebContentsForLogin();
if (tab)
tab->GetRenderViewHost()->SetIgnoreInputEvents(false);
dialog_ = NULL;
CancelAuth();
}
virtual void DeleteDelegate() OVERRIDE {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
dialog_ = NULL;
SetModel(NULL);
ReleaseSoon();
}
virtual ui::ModalType GetModalType() const OVERRIDE {
#if defined(USE_ASH)
return ui::MODAL_TYPE_CHILD;
#else
return views::WidgetDelegate::GetModalType();
#endif
}
virtual bool Cancel() OVERRIDE {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
CancelAuth();
return true;
}
virtual bool Accept() OVERRIDE {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
SetAuth(login_view_->GetUsername(), login_view_->GetPassword());
return true;
}
virtual views::View* GetInitiallyFocusedView() OVERRIDE {
return login_view_->GetInitiallyFocusedView();
}
virtual views::View* GetContentsView() OVERRIDE {
return login_view_;
}
virtual views::Widget* GetWidget() OVERRIDE {
return login_view_->GetWidget();
}
virtual const views::Widget* GetWidget() const OVERRIDE {
return login_view_->GetWidget();
}
virtual void BuildViewForPasswordManager(
PasswordManager* manager,
const base::string16& explanation) OVERRIDE {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
login_view_ = new LoginView(explanation, manager);
WebContents* requesting_contents = GetWebContentsForLogin();
WebContentsModalDialogManager* web_contents_modal_dialog_manager =
WebContentsModalDialogManager::FromWebContents(requesting_contents);
WebContentsModalDialogManagerDelegate* modal_delegate =
web_contents_modal_dialog_manager->delegate();
CHECK(modal_delegate);
dialog_ = views::Widget::CreateWindowAsFramelessChild(
this, modal_delegate->GetWebContentsModalDialogHost()->GetHostView());
web_contents_modal_dialog_manager->ShowDialog(dialog_->GetNativeView());
NotifyAuthNeeded();
}
virtual void CloseDialog() OVERRIDE {
if (dialog_)
dialog_->Close();
}
private:
friend class base::RefCountedThreadSafe<LoginHandlerViews>;
friend class LoginPrompt;
virtual ~LoginHandlerViews() {}
LoginView* login_view_;
views::Widget* dialog_;
DISALLOW_COPY_AND_ASSIGN(LoginHandlerViews);
};
LoginHandler* LoginHandler::Create(net::AuthChallengeInfo* auth_info,
net::URLRequest* request) {
return new LoginHandlerViews(auth_info, request);
}