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 <string> | 7 #include <string> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
11 #include "base/json/json_reader.h" | 11 #include "base/json/json_reader.h" |
| 12 #include "base/string16.h" |
12 #include "base/utf_string_conversions.h" | 13 #include "base/utf_string_conversions.h" |
13 #include "base/values.h" | 14 #include "base/values.h" |
14 #include "chrome/browser/profiles/profile.h" | 15 #include "chrome/browser/profiles/profile.h" |
15 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 16 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
16 #include "chrome/browser/ui/webui/chrome_url_data_manager.h" | 17 #include "chrome/browser/ui/webui/chrome_url_data_manager.h" |
17 #include "chrome/browser/ui/webui/constrained_html_ui.h" | 18 #include "chrome/browser/ui/webui/constrained_html_ui.h" |
18 #include "chrome/browser/ui/webui/html_dialog_ui.h" | 19 #include "chrome/browser/ui/webui/html_dialog_ui.h" |
19 #include "chrome/common/jstemplate_builder.h" | 20 #include "chrome/common/jstemplate_builder.h" |
20 #include "chrome/common/url_constants.h" | 21 #include "chrome/common/url_constants.h" |
21 #include "content/browser/tab_contents/tab_contents.h" | 22 #include "content/browser/tab_contents/tab_contents.h" |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 } | 121 } |
121 | 122 |
122 // WebUIMessageHandler method: | 123 // WebUIMessageHandler method: |
123 virtual void RegisterMessages() OVERRIDE { | 124 virtual void RegisterMessages() OVERRIDE { |
124 web_ui_->RegisterMessageCallback( | 125 web_ui_->RegisterMessageCallback( |
125 "GetAutofill", | 126 "GetAutofill", |
126 base::Bind(&LoginHandlerHtmlDelegate::GetAutofill, | 127 base::Bind(&LoginHandlerHtmlDelegate::GetAutofill, |
127 base::Unretained(this))); | 128 base::Unretained(this))); |
128 } | 129 } |
129 | 130 |
130 void ShowAutofillData(const std::wstring& username, | 131 void ShowAutofillData(const string16& username, |
131 const std::wstring& password); | 132 const string16& password); |
132 | 133 |
133 private: | 134 private: |
134 // Send autofill data to HTML once the dialog is ready and the data is | 135 // Send autofill data to HTML once the dialog is ready and the data is |
135 // available. | 136 // available. |
136 void SendAutofillData(); | 137 void SendAutofillData(); |
137 | 138 |
138 // Handle the request for autofill data from HTML. | 139 // Handle the request for autofill data from HTML. |
139 void GetAutofill(const ListValue* args) { | 140 void GetAutofill(const ListValue* args) { |
140 ready_for_autofill_ = true; | 141 ready_for_autofill_ = true; |
141 SendAutofillData(); | 142 SendAutofillData(); |
142 } | 143 } |
143 | 144 |
144 LoginHandlerHtml* login_handler_; | 145 LoginHandlerHtml* login_handler_; |
145 std::string explanation_; | 146 std::string explanation_; |
146 bool closed_; | 147 bool closed_; |
147 | 148 |
148 bool has_autofill_; | 149 bool has_autofill_; |
149 bool ready_for_autofill_; | 150 bool ready_for_autofill_; |
150 std::string autofill_username_; | 151 string16 autofill_username_; |
151 std::string autofill_password_; | 152 string16 autofill_password_; |
152 | 153 |
153 static const int kDialogWidth = 400; | 154 static const int kDialogWidth = 400; |
154 static const int kDialogHeight = 160; | 155 static const int kDialogHeight = 160; |
155 | 156 |
156 DISALLOW_COPY_AND_ASSIGN(LoginHandlerHtmlDelegate); | 157 DISALLOW_COPY_AND_ASSIGN(LoginHandlerHtmlDelegate); |
157 }; | 158 }; |
158 | 159 |
159 class LoginHandlerHtml : public LoginHandler { | 160 class LoginHandlerHtml : public LoginHandler { |
160 public: | 161 public: |
161 LoginHandlerHtml(net::AuthChallengeInfo* auth_info, net::URLRequest* request) | 162 LoginHandlerHtml(net::AuthChallengeInfo* auth_info, net::URLRequest* request) |
162 : LoginHandler(auth_info, request), | 163 : LoginHandler(auth_info, request), |
163 delegate_(NULL) { | 164 delegate_(NULL) { |
164 } | 165 } |
165 | 166 |
166 // LoginModelObserver method: | 167 // LoginModelObserver method: |
167 virtual void OnAutofillDataAvailable(const std::wstring& username, | 168 virtual void OnAutofillDataAvailable(const string16& username, |
168 const std::wstring& password) OVERRIDE { | 169 const string16& password) OVERRIDE { |
169 if (delegate_) | 170 if (delegate_) |
170 delegate_->ShowAutofillData(username, password); | 171 delegate_->ShowAutofillData(username, password); |
171 } | 172 } |
172 | 173 |
173 // LoginHandler method: | 174 // LoginHandler method: |
174 virtual void BuildViewForPasswordManager( | 175 virtual void BuildViewForPasswordManager( |
175 PasswordManager* manager, const string16& explanation) OVERRIDE; | 176 PasswordManager* manager, const string16& explanation) OVERRIDE; |
176 | 177 |
177 friend class LoginHandlerHtmlDelegate; | 178 friend class LoginHandlerHtmlDelegate; |
178 | 179 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 login_handler_->SetAuth(username, password); | 212 login_handler_->SetAuth(username, password); |
212 } | 213 } |
213 } | 214 } |
214 | 215 |
215 login_handler_->FreeAndRelease(); | 216 login_handler_->FreeAndRelease(); |
216 | 217 |
217 // We don't need to delete |this| here: the WebUI object will delete us since | 218 // We don't need to delete |this| here: the WebUI object will delete us since |
218 // we've registered ourselves as a WebUIMessageHandler. | 219 // we've registered ourselves as a WebUIMessageHandler. |
219 } | 220 } |
220 | 221 |
221 void LoginHandlerHtmlDelegate::ShowAutofillData(const std::wstring& username, | 222 void LoginHandlerHtmlDelegate::ShowAutofillData(const string16& username, |
222 const std::wstring& password) { | 223 const string16& password) { |
223 autofill_username_ = WideToUTF8(username); | 224 autofill_username_ = username; |
224 autofill_password_ = WideToUTF8(password); | 225 autofill_password_ = password; |
225 has_autofill_ = true; | 226 has_autofill_ = true; |
226 SendAutofillData(); | 227 SendAutofillData(); |
227 } | 228 } |
228 | 229 |
229 void LoginHandlerHtmlDelegate::SendAutofillData() { | 230 void LoginHandlerHtmlDelegate::SendAutofillData() { |
230 if (!closed_ && web_ui_ && has_autofill_ && ready_for_autofill_) { | 231 if (!closed_ && web_ui_ && has_autofill_ && ready_for_autofill_) { |
231 StringValue username_v(autofill_username_); | 232 StringValue username_v(autofill_username_); |
232 StringValue password_v(autofill_password_); | 233 StringValue password_v(autofill_password_); |
233 web_ui_->CallJavascriptFunction("setAutofillCredentials", | 234 web_ui_->CallJavascriptFunction("setAutofillCredentials", |
234 username_v, password_v); | 235 username_v, password_v); |
(...skipping 18 matching lines...) Expand all Loading... |
253 SetDialog(dialog); | 254 SetDialog(dialog); |
254 | 255 |
255 NotifyAuthNeeded(); | 256 NotifyAuthNeeded(); |
256 } | 257 } |
257 | 258 |
258 // static | 259 // static |
259 LoginHandler* LoginHandler::Create(net::AuthChallengeInfo* auth_info, | 260 LoginHandler* LoginHandler::Create(net::AuthChallengeInfo* auth_info, |
260 net::URLRequest* request) { | 261 net::URLRequest* request) { |
261 return new LoginHandlerHtml(auth_info, request); | 262 return new LoginHandlerHtml(auth_info, request); |
262 } | 263 } |
OLD | NEW |