| 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/autocomplete/autocomplete_edit.h" | 5 #include "chrome/browser/autocomplete/autocomplete_edit.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| (...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 472 NotificationService::current()->Notify( | 472 NotificationService::current()->Notify( |
| 473 NotificationType::AUTOCOMPLETE_EDIT_FOCUSED, | 473 NotificationType::AUTOCOMPLETE_EDIT_FOCUSED, |
| 474 Source<AutocompleteEditModel>(this), | 474 Source<AutocompleteEditModel>(this), |
| 475 NotificationService::NoDetails()); | 475 NotificationService::NoDetails()); |
| 476 } | 476 } |
| 477 | 477 |
| 478 void AutocompleteEditModel::OnKillFocus() { | 478 void AutocompleteEditModel::OnKillFocus() { |
| 479 has_focus_ = false; | 479 has_focus_ = false; |
| 480 control_key_state_ = UP; | 480 control_key_state_ = UP; |
| 481 paste_state_ = NONE; | 481 paste_state_ = NONE; |
| 482 | |
| 483 // Like typing, killing focus "accepts" the temporary text as the user | |
| 484 // text, because it makes little sense to have temporary text when the | |
| 485 // popup is closed. | |
| 486 InternalSetUserText(UserTextFromDisplayText(view_->GetText())); | |
| 487 has_temporary_text_ = false; | |
| 488 } | 482 } |
| 489 | 483 |
| 490 bool AutocompleteEditModel::OnEscapeKeyPressed() { | 484 bool AutocompleteEditModel::OnEscapeKeyPressed() { |
| 491 if (has_temporary_text_) { | 485 if (has_temporary_text_) { |
| 492 AutocompleteMatch match; | 486 AutocompleteMatch match; |
| 493 popup_->InfoForCurrentSelection(&match, NULL); | 487 popup_->InfoForCurrentSelection(&match, NULL); |
| 494 if (match.destination_url != original_url_) { | 488 if (match.destination_url != original_url_) { |
| 495 // The user typed something, then selected a different item. Restore the | 489 // The user typed something, then selected a different item. Restore the |
| 496 // text they typed and change back to the default item. | 490 // text they typed and change back to the default item. |
| 497 // NOTE: This purposefully does not reset paste_state_. | 491 // NOTE: This purposefully does not reset paste_state_. |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 673 } | 667 } |
| 674 | 668 |
| 675 view_->UpdatePopup(); | 669 view_->UpdatePopup(); |
| 676 return true; | 670 return true; |
| 677 } | 671 } |
| 678 | 672 |
| 679 void AutocompleteEditModel::PopupBoundsChangedTo(const gfx::Rect& bounds) { | 673 void AutocompleteEditModel::PopupBoundsChangedTo(const gfx::Rect& bounds) { |
| 680 controller_->OnPopupBoundsChanged(bounds); | 674 controller_->OnPopupBoundsChanged(bounds); |
| 681 } | 675 } |
| 682 | 676 |
| 677 void AutocompleteEditModel::OnPopupClosed() { |
| 678 // Accepts the temporary text as the user text, because it makes little |
| 679 // sense to have temporary text when the popup is closed. |
| 680 InternalSetUserText(UserTextFromDisplayText(view_->GetText())); |
| 681 has_temporary_text_ = false; |
| 682 } |
| 683 |
| 683 // Return true if the suggestion type warrants a TCP/IP preconnection. | 684 // Return true if the suggestion type warrants a TCP/IP preconnection. |
| 684 // i.e., it is now highly likely that the user will select the related domain. | 685 // i.e., it is now highly likely that the user will select the related domain. |
| 685 static bool IsPreconnectable(AutocompleteMatch::Type type) { | 686 static bool IsPreconnectable(AutocompleteMatch::Type type) { |
| 686 UMA_HISTOGRAM_ENUMERATION("Autocomplete.MatchType", type, | 687 UMA_HISTOGRAM_ENUMERATION("Autocomplete.MatchType", type, |
| 687 AutocompleteMatch::NUM_TYPES); | 688 AutocompleteMatch::NUM_TYPES); |
| 688 switch (type) { | 689 switch (type) { |
| 689 // Matches using the user's default search engine. | 690 // Matches using the user's default search engine. |
| 690 case AutocompleteMatch::SEARCH_WHAT_YOU_TYPED: | 691 case AutocompleteMatch::SEARCH_WHAT_YOU_TYPED: |
| 691 case AutocompleteMatch::SEARCH_HISTORY: | 692 case AutocompleteMatch::SEARCH_HISTORY: |
| 692 case AutocompleteMatch::SEARCH_SUGGEST: | 693 case AutocompleteMatch::SEARCH_SUGGEST: |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 793 // static | 794 // static |
| 794 bool AutocompleteEditModel::IsSpaceCharForAcceptingKeyword(wchar_t c) { | 795 bool AutocompleteEditModel::IsSpaceCharForAcceptingKeyword(wchar_t c) { |
| 795 switch (c) { | 796 switch (c) { |
| 796 case 0x0020: // Space | 797 case 0x0020: // Space |
| 797 case 0x3000: // Ideographic Space | 798 case 0x3000: // Ideographic Space |
| 798 return true; | 799 return true; |
| 799 default: | 800 default: |
| 800 return false; | 801 return false; |
| 801 } | 802 } |
| 802 } | 803 } |
| OLD | NEW |