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

Side by Side Diff: ui/views/controls/textfield/textfield.cc

Issue 2286433002: views: Textfield gets password reveal duration from ViewsDelegate (Closed)
Patch Set: move GetPasswordRevealDuration to cc and revert TextfieldTestApi change Created 4 years, 3 months 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 unified diff | Download patch
« no previous file with comments | « ui/views/controls/textfield/textfield.h ('k') | ui/views/views_delegate.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ui/views/controls/textfield/textfield.h" 5 #include "ui/views/controls/textfield/textfield.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/trace_event/trace_event.h" 10 #include "base/trace_event/trace_event.h"
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 // The DELETE menu action only works in case of an active selection. 205 // The DELETE menu action only works in case of an active selection.
206 if (has_selection) 206 if (has_selection)
207 return ui::TextEditCommand::DELETE_FORWARD; 207 return ui::TextEditCommand::DELETE_FORWARD;
208 break; 208 break;
209 case IDS_APP_SELECT_ALL: 209 case IDS_APP_SELECT_ALL:
210 return ui::TextEditCommand::SELECT_ALL; 210 return ui::TextEditCommand::SELECT_ALL;
211 } 211 }
212 return ui::TextEditCommand::INVALID_COMMAND; 212 return ui::TextEditCommand::INVALID_COMMAND;
213 } 213 }
214 214
215 base::TimeDelta GetPasswordRevealDuration() {
216 return ViewsDelegate::GetInstance()
217 ? ViewsDelegate::GetInstance()
218 ->GetTextfieldPasswordRevealDuration()
219 : base::TimeDelta();
220 }
221
215 } // namespace 222 } // namespace
216 223
217 // static 224 // static
218 const char Textfield::kViewClassName[] = "Textfield"; 225 const char Textfield::kViewClassName[] = "Textfield";
219 const int Textfield::kTextPadding = 3; 226 const int Textfield::kTextPadding = 3;
220 227
221 // static 228 // static
222 size_t Textfield::GetCaretBlinkMs() { 229 size_t Textfield::GetCaretBlinkMs() {
223 static const size_t default_value = 500; 230 static const size_t default_value = 500;
224 #if defined(OS_WIN) 231 #if defined(OS_WIN)
(...skipping 29 matching lines...) Expand all
254 aggregated_clicks_(0), 261 aggregated_clicks_(0),
255 drag_start_display_offset_(0), 262 drag_start_display_offset_(0),
256 touch_handles_hidden_due_to_scroll_(false), 263 touch_handles_hidden_due_to_scroll_(false),
257 weak_ptr_factory_(this) { 264 weak_ptr_factory_(this) {
258 set_context_menu_controller(this); 265 set_context_menu_controller(this);
259 set_drag_controller(this); 266 set_drag_controller(this);
260 GetRenderText()->SetFontList(GetDefaultFontList()); 267 GetRenderText()->SetFontList(GetDefaultFontList());
261 SetBorder(std::unique_ptr<Border>(new FocusableBorder())); 268 SetBorder(std::unique_ptr<Border>(new FocusableBorder()));
262 SetFocusBehavior(FocusBehavior::ALWAYS); 269 SetFocusBehavior(FocusBehavior::ALWAYS);
263 270
264 if (ViewsDelegate::GetInstance()) {
265 password_reveal_duration_ =
266 ViewsDelegate::GetInstance()
267 ->GetDefaultTextfieldObscuredRevealDuration();
268 }
269
270 // These allow BrowserView to pass edit commands from the Chrome menu to us 271 // These allow BrowserView to pass edit commands from the Chrome menu to us
271 // when we're focused by simply asking the FocusManager to 272 // when we're focused by simply asking the FocusManager to
272 // ProcessAccelerator() with the relevant accelerators. 273 // ProcessAccelerator() with the relevant accelerators.
273 AddAccelerator(ui::Accelerator(ui::VKEY_X, ui::EF_CONTROL_DOWN)); 274 AddAccelerator(ui::Accelerator(ui::VKEY_X, ui::EF_CONTROL_DOWN));
274 AddAccelerator(ui::Accelerator(ui::VKEY_C, ui::EF_CONTROL_DOWN)); 275 AddAccelerator(ui::Accelerator(ui::VKEY_C, ui::EF_CONTROL_DOWN));
275 AddAccelerator(ui::Accelerator(ui::VKEY_V, ui::EF_CONTROL_DOWN)); 276 AddAccelerator(ui::Accelerator(ui::VKEY_V, ui::EF_CONTROL_DOWN));
276 } 277 }
277 278
278 Textfield::~Textfield() { 279 Textfield::~Textfield() {
279 if (GetInputMethod()) { 280 if (GetInputMethod()) {
(...skipping 1004 matching lines...) Expand 10 before | Expand all | Expand 10 after
1284 // care about. 1285 // care about.
1285 const base::char16 ch = event.GetCharacter(); 1286 const base::char16 ch = event.GetCharacter();
1286 const bool should_insert_char = ((ch >= 0x20 && ch < 0x7F) || ch > 0x9F) && 1287 const bool should_insert_char = ((ch >= 0x20 && ch < 0x7F) || ch > 0x9F) &&
1287 !ui::IsSystemKeyModifier(event.flags()); 1288 !ui::IsSystemKeyModifier(event.flags());
1288 if (GetTextInputType() == ui::TEXT_INPUT_TYPE_NONE || !should_insert_char) 1289 if (GetTextInputType() == ui::TEXT_INPUT_TYPE_NONE || !should_insert_char)
1289 return; 1290 return;
1290 1291
1291 DoInsertChar(ch); 1292 DoInsertChar(ch);
1292 1293
1293 if (text_input_type_ == ui::TEXT_INPUT_TYPE_PASSWORD && 1294 if (text_input_type_ == ui::TEXT_INPUT_TYPE_PASSWORD &&
1294 !password_reveal_duration_.is_zero()) { 1295 !GetPasswordRevealDuration().is_zero()) {
1295 const size_t change_offset = model_->GetCursorPosition(); 1296 const size_t change_offset = model_->GetCursorPosition();
1296 DCHECK_GT(change_offset, 0u); 1297 DCHECK_GT(change_offset, 0u);
1297 RevealPasswordChar(change_offset - 1); 1298 RevealPasswordChar(change_offset - 1);
1298 } 1299 }
1299 } 1300 }
1300 1301
1301 ui::TextInputType Textfield::GetTextInputType() const { 1302 ui::TextInputType Textfield::GetTextInputType() const {
1302 if (read_only() || !enabled()) 1303 if (read_only() || !enabled())
1303 return ui::TEXT_INPUT_TYPE_NONE; 1304 return ui::TEXT_INPUT_TYPE_NONE;
1304 return text_input_type_; 1305 return text_input_type_;
(...skipping 673 matching lines...) Expand 10 before | Expand all | Expand 10 after
1978 // Disallow input method editing of password fields. 1979 // Disallow input method editing of password fields.
1979 ui::TextInputType t = GetTextInputType(); 1980 ui::TextInputType t = GetTextInputType();
1980 return (t != ui::TEXT_INPUT_TYPE_NONE && t != ui::TEXT_INPUT_TYPE_PASSWORD); 1981 return (t != ui::TEXT_INPUT_TYPE_NONE && t != ui::TEXT_INPUT_TYPE_PASSWORD);
1981 } 1982 }
1982 1983
1983 void Textfield::RevealPasswordChar(int index) { 1984 void Textfield::RevealPasswordChar(int index) {
1984 GetRenderText()->SetObscuredRevealIndex(index); 1985 GetRenderText()->SetObscuredRevealIndex(index);
1985 SchedulePaint(); 1986 SchedulePaint();
1986 1987
1987 if (index != -1) { 1988 if (index != -1) {
1988 password_reveal_timer_.Start(FROM_HERE, password_reveal_duration_, 1989 password_reveal_timer_.Start(FROM_HERE, GetPasswordRevealDuration(),
1989 base::Bind(&Textfield::RevealPasswordChar, 1990 base::Bind(&Textfield::RevealPasswordChar,
1990 weak_ptr_factory_.GetWeakPtr(), -1)); 1991 weak_ptr_factory_.GetWeakPtr(), -1));
1991 } 1992 }
1992 } 1993 }
1993 1994
1994 void Textfield::CreateTouchSelectionControllerAndNotifyIt() { 1995 void Textfield::CreateTouchSelectionControllerAndNotifyIt() {
1995 if (!HasFocus()) 1996 if (!HasFocus())
1996 return; 1997 return;
1997 1998
1998 if (!touch_selection_controller_) { 1999 if (!touch_selection_controller_) {
(...skipping 26 matching lines...) Expand all
2025 RequestFocus(); 2026 RequestFocus();
2026 model_->MoveCursorTo(mouse); 2027 model_->MoveCursorTo(mouse);
2027 if (!selection_clipboard_text.empty()) { 2028 if (!selection_clipboard_text.empty()) {
2028 model_->InsertText(selection_clipboard_text); 2029 model_->InsertText(selection_clipboard_text);
2029 UpdateAfterChange(true, true); 2030 UpdateAfterChange(true, true);
2030 } 2031 }
2031 OnAfterUserAction(); 2032 OnAfterUserAction();
2032 } 2033 }
2033 2034
2034 } // namespace views 2035 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/controls/textfield/textfield.h ('k') | ui/views/views_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698