| OLD | NEW |
| 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 "chrome/browser/ui/views/omnibox/omnibox_view_views.h" | 5 #include "chrome/browser/ui/views/omnibox/omnibox_view_views.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
| 10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 #include "ui/base/clipboard/scoped_clipboard_writer.h" | 36 #include "ui/base/clipboard/scoped_clipboard_writer.h" |
| 37 #include "ui/base/dragdrop/drag_drop_types.h" | 37 #include "ui/base/dragdrop/drag_drop_types.h" |
| 38 #include "ui/base/dragdrop/os_exchange_data.h" | 38 #include "ui/base/dragdrop/os_exchange_data.h" |
| 39 #include "ui/base/ime/text_input_client.h" | 39 #include "ui/base/ime/text_input_client.h" |
| 40 #include "ui/base/ime/text_input_type.h" | 40 #include "ui/base/ime/text_input_type.h" |
| 41 #include "ui/base/l10n/l10n_util.h" | 41 #include "ui/base/l10n/l10n_util.h" |
| 42 #include "ui/base/models/simple_menu_model.h" | 42 #include "ui/base/models/simple_menu_model.h" |
| 43 #include "ui/base/resource/resource_bundle.h" | 43 #include "ui/base/resource/resource_bundle.h" |
| 44 #include "ui/compositor/layer.h" | 44 #include "ui/compositor/layer.h" |
| 45 #include "ui/events/event.h" | 45 #include "ui/events/event.h" |
| 46 #include "ui/gfx/animation/slide_animation.h" | |
| 47 #include "ui/gfx/canvas.h" | 46 #include "ui/gfx/canvas.h" |
| 48 #include "ui/gfx/font_list.h" | 47 #include "ui/gfx/font_list.h" |
| 49 #include "ui/gfx/selection_model.h" | 48 #include "ui/gfx/selection_model.h" |
| 50 #include "ui/views/border.h" | 49 #include "ui/views/border.h" |
| 51 #include "ui/views/button_drag_utils.h" | 50 #include "ui/views/button_drag_utils.h" |
| 52 #include "ui/views/controls/textfield/textfield.h" | 51 #include "ui/views/controls/textfield/textfield.h" |
| 53 #include "ui/views/ime/input_method.h" | 52 #include "ui/views/ime/input_method.h" |
| 54 #include "ui/views/layout/fill_layout.h" | 53 #include "ui/views/layout/fill_layout.h" |
| 55 #include "ui/views/views_delegate.h" | 54 #include "ui/views/views_delegate.h" |
| 56 #include "ui/views/widget/widget.h" | 55 #include "ui/views/widget/widget.h" |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 SetReadOnly(true); | 169 SetReadOnly(true); |
| 171 | 170 |
| 172 // Initialize the popup view using the same font. | 171 // Initialize the popup view using the same font. |
| 173 popup_view_.reset(OmniboxPopupContentsView::Create( | 172 popup_view_.reset(OmniboxPopupContentsView::Create( |
| 174 GetFontList(), this, model(), location_bar_view_)); | 173 GetFontList(), this, model(), location_bar_view_)); |
| 175 | 174 |
| 176 #if defined(OS_CHROMEOS) | 175 #if defined(OS_CHROMEOS) |
| 177 chromeos::input_method::InputMethodManager::Get()-> | 176 chromeos::input_method::InputMethodManager::Get()-> |
| 178 AddCandidateWindowObserver(this); | 177 AddCandidateWindowObserver(this); |
| 179 #endif | 178 #endif |
| 180 | |
| 181 fade_in_animation_.reset(new gfx::SlideAnimation(this)); | |
| 182 fade_in_animation_->SetTweenType(gfx::Tween::LINEAR); | |
| 183 fade_in_animation_->SetSlideDuration(300); | |
| 184 } | |
| 185 | |
| 186 void OmniboxViewViews::FadeIn() { | |
| 187 fade_in_animation_->Show(); | |
| 188 } | 179 } |
| 189 | 180 |
| 190 void OmniboxViewViews::SaveStateToTab(content::WebContents* tab) { | 181 void OmniboxViewViews::SaveStateToTab(content::WebContents* tab) { |
| 191 DCHECK(tab); | 182 DCHECK(tab); |
| 192 | 183 |
| 193 // We don't want to keep the IME status, so force quit the current | 184 // We don't want to keep the IME status, so force quit the current |
| 194 // session here. It may affect the selection status, so order is | 185 // session here. It may affect the selection status, so order is |
| 195 // also important. | 186 // also important. |
| 196 if (IsIMEComposing()) { | 187 if (IsIMEComposing()) { |
| 197 GetTextInputClient()->ConfirmCompositionText(); | 188 GetTextInputClient()->ConfirmCompositionText(); |
| (...skipping 596 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 794 return true; | 785 return true; |
| 795 } | 786 } |
| 796 return Textfield::SkipDefaultKeyEventProcessing(event); | 787 return Textfield::SkipDefaultKeyEventProcessing(event); |
| 797 } | 788 } |
| 798 | 789 |
| 799 void OmniboxViewViews::GetAccessibleState(ui::AXViewState* state) { | 790 void OmniboxViewViews::GetAccessibleState(ui::AXViewState* state) { |
| 800 location_bar_view_->GetAccessibleState(state); | 791 location_bar_view_->GetAccessibleState(state); |
| 801 state->role = ui::AX_ROLE_TEXT_FIELD; | 792 state->role = ui::AX_ROLE_TEXT_FIELD; |
| 802 } | 793 } |
| 803 | 794 |
| 804 void OmniboxViewViews::OnPaint(gfx::Canvas* canvas) { | |
| 805 if (fade_in_animation_->is_animating()) { | |
| 806 canvas->SaveLayerAlpha(static_cast<uint8>( | |
| 807 fade_in_animation_->CurrentValueBetween(0, 255))); | |
| 808 views::Textfield::OnPaint(canvas); | |
| 809 canvas->Restore(); | |
| 810 } else { | |
| 811 views::Textfield::OnPaint(canvas); | |
| 812 } | |
| 813 } | |
| 814 | |
| 815 void OmniboxViewViews::OnFocus() { | 795 void OmniboxViewViews::OnFocus() { |
| 816 views::Textfield::OnFocus(); | 796 views::Textfield::OnFocus(); |
| 817 // TODO(oshima): Get control key state. | 797 // TODO(oshima): Get control key state. |
| 818 model()->OnSetFocus(false); | 798 model()->OnSetFocus(false); |
| 819 // Don't call controller()->OnSetFocus, this view has already acquired focus. | 799 // Don't call controller()->OnSetFocus, this view has already acquired focus. |
| 820 | 800 |
| 821 // Restore the selection we saved in OnBlur() if it's still valid. | 801 // Restore the selection we saved in OnBlur() if it's still valid. |
| 822 if (saved_selection_for_focus_change_.IsValid()) { | 802 if (saved_selection_for_focus_change_.IsValid()) { |
| 823 SelectRange(saved_selection_for_focus_change_); | 803 SelectRange(saved_selection_for_focus_change_); |
| 824 saved_selection_for_focus_change_ = gfx::Range::InvalidRange(); | 804 saved_selection_for_focus_change_ = gfx::Range::InvalidRange(); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 863 return controller()->GetToolbarModel()->WouldReplaceURL(); | 843 return controller()->GetToolbarModel()->WouldReplaceURL(); |
| 864 return command_id == IDS_MOVE_DOWN || command_id == IDS_MOVE_UP || | 844 return command_id == IDS_MOVE_DOWN || command_id == IDS_MOVE_UP || |
| 865 Textfield::IsCommandIdEnabled(command_id) || | 845 Textfield::IsCommandIdEnabled(command_id) || |
| 866 command_updater()->IsCommandEnabled(command_id); | 846 command_updater()->IsCommandEnabled(command_id); |
| 867 } | 847 } |
| 868 | 848 |
| 869 base::string16 OmniboxViewViews::GetSelectionClipboardText() const { | 849 base::string16 OmniboxViewViews::GetSelectionClipboardText() const { |
| 870 return SanitizeTextForPaste(Textfield::GetSelectionClipboardText()); | 850 return SanitizeTextForPaste(Textfield::GetSelectionClipboardText()); |
| 871 } | 851 } |
| 872 | 852 |
| 873 void OmniboxViewViews::AnimationProgressed(const gfx::Animation* animation) { | |
| 874 SchedulePaint(); | |
| 875 } | |
| 876 | |
| 877 void OmniboxViewViews::AnimationEnded(const gfx::Animation* animation) { | |
| 878 fade_in_animation_->Reset(); | |
| 879 } | |
| 880 | |
| 881 #if defined(OS_CHROMEOS) | 853 #if defined(OS_CHROMEOS) |
| 882 void OmniboxViewViews::CandidateWindowOpened( | 854 void OmniboxViewViews::CandidateWindowOpened( |
| 883 chromeos::input_method::InputMethodManager* manager) { | 855 chromeos::input_method::InputMethodManager* manager) { |
| 884 ime_candidate_window_open_ = true; | 856 ime_candidate_window_open_ = true; |
| 885 } | 857 } |
| 886 | 858 |
| 887 void OmniboxViewViews::CandidateWindowClosed( | 859 void OmniboxViewViews::CandidateWindowClosed( |
| 888 chromeos::input_method::InputMethodManager* manager) { | 860 chromeos::input_method::InputMethodManager* manager) { |
| 889 ime_candidate_window_open_ = false; | 861 ime_candidate_window_open_ = false; |
| 890 } | 862 } |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1037 menu_contents->InsertItemWithStringIdAt( | 1009 menu_contents->InsertItemWithStringIdAt( |
| 1038 select_all_position + 1, IDS_SHOW_URL, IDS_SHOW_URL); | 1010 select_all_position + 1, IDS_SHOW_URL, IDS_SHOW_URL); |
| 1039 } | 1011 } |
| 1040 | 1012 |
| 1041 // Minor note: We use IDC_ for command id here while the underlying textfield | 1013 // Minor note: We use IDC_ for command id here while the underlying textfield |
| 1042 // is using IDS_ for all its command ids. This is because views cannot depend | 1014 // is using IDS_ for all its command ids. This is because views cannot depend |
| 1043 // on IDC_ for now. | 1015 // on IDC_ for now. |
| 1044 menu_contents->AddItemWithStringId(IDC_EDIT_SEARCH_ENGINES, | 1016 menu_contents->AddItemWithStringId(IDC_EDIT_SEARCH_ENGINES, |
| 1045 IDS_EDIT_SEARCH_ENGINES); | 1017 IDS_EDIT_SEARCH_ENGINES); |
| 1046 } | 1018 } |
| OLD | NEW |