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

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

Issue 8747001: Reintroduce password support to NativeTextfieldViews (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase, const syntax, password->obscured, dead methods, DCHECK, Ctrl+[CX] tests, fix other tests Created 9 years 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 | Annotate | Revision Log
OLDNEW
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 "ui/views/controls/textfield/native_textfield_views.h" 5 #include "ui/views/controls/textfield/native_textfield_views.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 void NativeTextfieldViews::WriteDragDataForView(views::View* sender, 292 void NativeTextfieldViews::WriteDragDataForView(views::View* sender,
293 const gfx::Point& press_pt, 293 const gfx::Point& press_pt,
294 OSExchangeData* data) { 294 OSExchangeData* data) {
295 DCHECK_NE(ui::DragDropTypes::DRAG_NONE, 295 DCHECK_NE(ui::DragDropTypes::DRAG_NONE,
296 GetDragOperationsForView(sender, press_pt)); 296 GetDragOperationsForView(sender, press_pt));
297 data->SetString(GetSelectedText()); 297 data->SetString(GetSelectedText());
298 } 298 }
299 299
300 int NativeTextfieldViews::GetDragOperationsForView(views::View* sender, 300 int NativeTextfieldViews::GetDragOperationsForView(views::View* sender,
301 const gfx::Point& p) { 301 const gfx::Point& p) {
302 if (!textfield_->IsEnabled() || !GetRenderText()->IsPointInSelection(p)) 302 if (!textfield_->IsEnabled() || textfield_->IsPassword()
303 || !GetRenderText()->IsPointInSelection(p))
303 return ui::DragDropTypes::DRAG_NONE; 304 return ui::DragDropTypes::DRAG_NONE;
304 if (sender == this && !textfield_->read_only()) 305 if (sender == this && !textfield_->read_only())
305 return ui::DragDropTypes::DRAG_MOVE | ui::DragDropTypes::DRAG_COPY; 306 return ui::DragDropTypes::DRAG_MOVE | ui::DragDropTypes::DRAG_COPY;
306 return ui::DragDropTypes::DRAG_COPY; 307 return ui::DragDropTypes::DRAG_COPY;
307 } 308 }
308 309
309 bool NativeTextfieldViews::CanStartDragForView(View* sender, 310 bool NativeTextfieldViews::CanStartDragForView(View* sender,
310 const gfx::Point& press_pt, 311 const gfx::Point& press_pt,
311 const gfx::Point& p) { 312 const gfx::Point& p) {
312 return GetRenderText()->IsPointInSelection(press_pt); 313 return GetRenderText()->IsPointInSelection(press_pt);
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 // Update the default text style. 392 // Update the default text style.
392 gfx::StyleRange default_style(GetRenderText()->default_style()); 393 gfx::StyleRange default_style(GetRenderText()->default_style());
393 default_style.font = textfield_->font(); 394 default_style.font = textfield_->font();
394 GetRenderText()->set_default_style(default_style); 395 GetRenderText()->set_default_style(default_style);
395 GetRenderText()->ApplyDefaultStyle(); 396 GetRenderText()->ApplyDefaultStyle();
396 397
397 OnCaretBoundsChanged(); 398 OnCaretBoundsChanged();
398 } 399 }
399 400
400 void NativeTextfieldViews::UpdateIsPassword() { 401 void NativeTextfieldViews::UpdateIsPassword() {
401 model_->set_is_password(textfield_->IsPassword()); 402 GetRenderText()->SetIsObscured(textfield_->IsPassword());
402 OnCaretBoundsChanged(); 403 OnCaretBoundsChanged();
403 SchedulePaint(); 404 SchedulePaint();
404 OnTextInputTypeChanged(); 405 OnTextInputTypeChanged();
405 } 406 }
406 407
407 void NativeTextfieldViews::UpdateEnabled() { 408 void NativeTextfieldViews::UpdateEnabled() {
408 SetEnabled(textfield_->IsEnabled()); 409 SetEnabled(textfield_->IsEnabled());
409 SchedulePaint(); 410 SchedulePaint();
410 OnTextInputTypeChanged(); 411 OnTextInputTypeChanged();
411 } 412 }
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 527
527 bool NativeTextfieldViews::IsCommandIdChecked(int command_id) const { 528 bool NativeTextfieldViews::IsCommandIdChecked(int command_id) const {
528 return true; 529 return true;
529 } 530 }
530 531
531 bool NativeTextfieldViews::IsCommandIdEnabled(int command_id) const { 532 bool NativeTextfieldViews::IsCommandIdEnabled(int command_id) const {
532 bool editable = !textfield_->read_only(); 533 bool editable = !textfield_->read_only();
533 string16 result; 534 string16 result;
534 switch (command_id) { 535 switch (command_id) {
535 case IDS_APP_CUT: 536 case IDS_APP_CUT:
536 return editable && model_->HasSelection(); 537 return editable && model_->HasSelection() && !textfield_->IsPassword();
oshima 2011/12/06 23:57:18 I assume you'll change IsPassword in another CL?
benrg 2011/12/08 21:40:55 It's changed in 8748001, which should land someday
537 case IDS_APP_COPY: 538 case IDS_APP_COPY:
538 return model_->HasSelection(); 539 return model_->HasSelection() && !textfield_->IsPassword();
539 case IDS_APP_PASTE: 540 case IDS_APP_PASTE:
540 ViewsDelegate::views_delegate->GetClipboard() 541 ViewsDelegate::views_delegate->GetClipboard()
541 ->ReadText(ui::Clipboard::BUFFER_STANDARD, &result); 542 ->ReadText(ui::Clipboard::BUFFER_STANDARD, &result);
542 return editable && !result.empty(); 543 return editable && !result.empty();
543 case IDS_APP_DELETE: 544 case IDS_APP_DELETE:
544 return editable && model_->HasSelection(); 545 return editable && model_->HasSelection();
545 case IDS_APP_SELECT_ALL: 546 case IDS_APP_SELECT_ALL:
546 return true; 547 return true;
547 default: 548 default:
548 NOTREACHED(); 549 NOTREACHED();
549 return false; 550 return false;
550 } 551 }
551 } 552 }
552 553
553 bool NativeTextfieldViews::GetAcceleratorForCommandId(int command_id, 554 bool NativeTextfieldViews::GetAcceleratorForCommandId(int command_id,
554 ui::Accelerator* accelerator) { 555 ui::Accelerator* accelerator) {
555 return false; 556 return false;
556 } 557 }
557 558
558 void NativeTextfieldViews::ExecuteCommand(int command_id) { 559 void NativeTextfieldViews::ExecuteCommand(int command_id) {
559 bool text_changed = false; 560 bool text_changed = false;
560 bool editable = !textfield_->read_only(); 561 DCHECK(IsCommandIdEnabled(command_id));
oshima 2011/12/06 23:57:18 won't this break read_only behavior?
benrg 2011/12/08 21:40:55 I thought ExecuteCommand is only called when a men
561 OnBeforeUserAction(); 562 OnBeforeUserAction();
562 switch (command_id) { 563 switch (command_id) {
563 case IDS_APP_CUT: 564 case IDS_APP_CUT:
564 if (editable) 565 text_changed = model_->Cut();
565 text_changed = model_->Cut();
566 break; 566 break;
567 case IDS_APP_COPY: 567 case IDS_APP_COPY:
568 model_->Copy(); 568 model_->Copy();
569 break; 569 break;
570 case IDS_APP_PASTE: 570 case IDS_APP_PASTE:
571 if (editable) 571 text_changed = Paste();
572 text_changed = Paste();
573 break; 572 break;
574 case IDS_APP_DELETE: 573 case IDS_APP_DELETE:
575 if (editable) 574 text_changed = model_->Delete();
576 text_changed = model_->Delete();
577 break; 575 break;
578 case IDS_APP_SELECT_ALL: 576 case IDS_APP_SELECT_ALL:
579 SelectAll(); 577 SelectAll();
580 break; 578 break;
581 default: 579 default:
582 NOTREACHED() << "unknown command: " << command_id; 580 NOTREACHED() << "unknown command: " << command_id;
583 break; 581 break;
584 } 582 }
585 583
586 // The cursor must have changed if text changed during cut/paste/delete. 584 // The cursor must have changed if text changed during cut/paste/delete.
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after
1076 1074
1077 #if defined(USE_AURA) 1075 #if defined(USE_AURA)
1078 // static 1076 // static
1079 NativeTextfieldWrapper* NativeTextfieldWrapper::CreateWrapper( 1077 NativeTextfieldWrapper* NativeTextfieldWrapper::CreateWrapper(
1080 Textfield* field) { 1078 Textfield* field) {
1081 return new NativeTextfieldViews(field); 1079 return new NativeTextfieldViews(field);
1082 } 1080 }
1083 #endif 1081 #endif
1084 1082
1085 } // namespace views 1083 } // namespace views
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698