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

Side by Side Diff: chrome/browser/autocomplete/autocomplete_popup_model.h

Issue 9419043: Revert 122412 - Enabled pressing TAB to traverse through the Omnibox results (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 10 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 | 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 #ifndef CHROME_BROWSER_AUTOCOMPLETE_AUTOCOMPLETE_POPUP_MODEL_H_ 5 #ifndef CHROME_BROWSER_AUTOCOMPLETE_AUTOCOMPLETE_POPUP_MODEL_H_
6 #define CHROME_BROWSER_AUTOCOMPLETE_AUTOCOMPLETE_POPUP_MODEL_H_ 6 #define CHROME_BROWSER_AUTOCOMPLETE_AUTOCOMPLETE_POPUP_MODEL_H_
7 #pragma once 7 #pragma once
8 8
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "chrome/browser/autocomplete/autocomplete.h" 10 #include "chrome/browser/autocomplete/autocomplete.h"
11 #include "chrome/browser/autocomplete/autocomplete_edit.h" 11 #include "chrome/browser/autocomplete/autocomplete_edit.h"
12 12
13 class AutocompletePopupView; 13 class AutocompletePopupView;
14 class SkBitmap; 14 class SkBitmap;
15 15
16 class AutocompletePopupModel { 16 class AutocompletePopupModel {
17 public: 17 public:
18 // See selected_line_state_ for details.
19 enum LineState {
20 NORMAL = 0,
21 KEYWORD
22 };
23
24 AutocompletePopupModel(AutocompletePopupView* popup_view, 18 AutocompletePopupModel(AutocompletePopupView* popup_view,
25 AutocompleteEditModel* edit_model); 19 AutocompleteEditModel* edit_model);
26 ~AutocompletePopupModel(); 20 ~AutocompletePopupModel();
27 21
28 // Returns true if the popup is currently open. 22 // Returns true if the popup is currently open.
29 bool IsOpen() const; 23 bool IsOpen() const;
30 24
31 AutocompletePopupView* view() const { return view_; } 25 AutocompletePopupView* view() const { return view_; }
32 26
33 // Returns the AutocompleteController used by this popup. 27 // Returns the AutocompleteController used by this popup.
(...skipping 10 matching lines...) Expand all
44 } 38 }
45 39
46 // Call to change the hovered line. |line| should be within the range of 40 // Call to change the hovered line. |line| should be within the range of
47 // valid lines (to enable hover) or kNoMatch (to disable hover). 41 // valid lines (to enable hover) or kNoMatch (to disable hover).
48 void SetHoveredLine(size_t line); 42 void SetHoveredLine(size_t line);
49 43
50 size_t selected_line() const { 44 size_t selected_line() const {
51 return selected_line_; 45 return selected_line_;
52 } 46 }
53 47
54 LineState selected_line_state() const {
55 return selected_line_state_;
56 }
57
58 // Call to change the selected line. This will update all state and repaint 48 // Call to change the selected line. This will update all state and repaint
59 // the necessary parts of the window, as well as updating the edit with the 49 // the necessary parts of the window, as well as updating the edit with the
60 // new temporary text. |line| will be clamped to the range of valid lines. 50 // new temporary text. |line| will be clamped to the range of valid lines.
61 // |reset_to_default| is true when the selection is being reset back to the 51 // |reset_to_default| is true when the selection is being reset back to the
62 // default match, and thus there is no temporary text (and no 52 // default match, and thus there is no temporary text (and no
63 // |manually_selected_match_|). If |force| is true then the selected line will 53 // |manually_selected_match_|). If |force| is true then the selected line will
64 // be updated forcibly even if the |line| is same as the current selected 54 // be updated forcibly even if the |line| is same as the current selected
65 // line. 55 // line.
66 // NOTE: This assumes the popup is open, and thus both old and new values for 56 // NOTE: This assumes the popup is open, and thus both old and new values for
67 // the selected line should not be kNoMatch. 57 // the selected line should not be kNoMatch.
68 void SetSelectedLine(size_t line, bool reset_to_default, bool force); 58 void SetSelectedLine(size_t line, bool reset_to_default, bool force);
69 59
70 // Called when the user hits escape after arrowing around the popup. This 60 // Called when the user hits escape after arrowing around the popup. This
71 // will change the selected line back to the default match and redraw. 61 // will change the selected line back to the default match and redraw.
72 void ResetToDefaultMatch(); 62 void ResetToDefaultMatch();
73 63
64 // Gets the selected keyword or keyword hint for the given match. If the match
65 // is already keyword, then the keyword will be returned directly. Otherwise,
66 // it returns GetKeywordForText(match.fill_into_edit, keyword).
67 bool GetKeywordForMatch(const AutocompleteMatch& match,
68 string16* keyword) const;
69
70 // Gets the selected keyword or keyword hint for the given text. Returns
71 // true if |keyword| represents a keyword hint, or false if |keyword|
72 // represents a selected keyword. (|keyword| will always be set [though
73 // possibly to the empty string], and you cannot have both a selected keyword
74 // and a keyword hint simultaneously.)
75 bool GetKeywordForText(const string16& text, string16* keyword) const;
76
74 // Immediately updates and opens the popup if necessary, then moves the 77 // Immediately updates and opens the popup if necessary, then moves the
75 // current selection down (|count| > 0) or up (|count| < 0), clamping to the 78 // current selection down (|count| > 0) or up (|count| < 0), clamping to the
76 // first or last result if necessary. If |count| == 0, the selection will be 79 // first or last result if necessary. If |count| == 0, the selection will be
77 // unchanged, but the popup will still redraw and modify the text in the 80 // unchanged, but the popup will still redraw and modify the text in the
78 // AutocompleteEditModel. 81 // AutocompleteEditModel.
79 void Move(int count); 82 void Move(int count);
80 83
81 // If the selected line has both a normal match and a keyword match, this can
82 // be used to choose which to select. It is an error to call this when the
83 // selected line does not have both matches (or there is no selection).
84 void SetSelectedLineState(LineState state);
85
86 // Called when the user hits shift-delete. This should determine if the item 84 // Called when the user hits shift-delete. This should determine if the item
87 // can be removed from history, and if so, remove it and update the popup. 85 // can be removed from history, and if so, remove it and update the popup.
88 void TryDeletingCurrentItem(); 86 void TryDeletingCurrentItem();
89 87
90 // If |match| is from an extension, returns the extension icon; otherwise 88 // If |match| is from an extension, returns the extension icon; otherwise
91 // returns NULL. 89 // returns NULL.
92 const SkBitmap* GetIconIfExtensionMatch(const AutocompleteMatch& match) const; 90 const SkBitmap* GetIconIfExtensionMatch(const AutocompleteMatch& match) const;
93 91
94 // The match the user has manually chosen, if any. 92 // The match the user has manually chosen, if any.
95 const AutocompleteResult::Selection& manually_selected_match() const { 93 const AutocompleteResult::Selection& manually_selected_match() const {
96 return manually_selected_match_; 94 return manually_selected_match_;
97 } 95 }
98 96
99 // Invoked from the edit model any time the result set of the controller 97 // Invoked from the edit model any time the result set of the controller
100 // changes. 98 // changes.
101 void OnResultChanged(); 99 void OnResultChanged();
102 100
103 // The token value for selected_line_, hover_line_ and functions dealing with 101 // The token value for selected_line_, hover_line_ and functions dealing with
104 // a "line number" that indicates "no line". 102 // a "line number" that indicates "no line".
105 static const size_t kNoMatch; 103 static const size_t kNoMatch = -1;
106 104
107 private: 105 private:
108 AutocompletePopupView* view_; 106 AutocompletePopupView* view_;
109 107
110 AutocompleteEditModel* edit_model_; 108 AutocompleteEditModel* edit_model_;
111 109
112 // The line that's currently hovered. If we're not drawing a hover rect, 110 // The line that's currently hovered. If we're not drawing a hover rect,
113 // this will be kNoMatch, even if the cursor is over the popup contents. 111 // this will be kNoMatch, even if the cursor is over the popup contents.
114 size_t hovered_line_; 112 size_t hovered_line_;
115 113
116 // The currently selected line. This is kNoMatch when nothing is selected, 114 // The currently selected line. This is kNoMatch when nothing is selected,
117 // which should only be true when the popup is closed. 115 // which should only be true when the popup is closed.
118 size_t selected_line_; 116 size_t selected_line_;
119 117
120 // If the selected line has both a normal match and a keyword match, this
121 // determines whether the normal match (if NORMAL) or the keyword match
122 // (if KEYWORD) is selected.
123 LineState selected_line_state_;
124
125 // The match the user has manually chosen, if any. 118 // The match the user has manually chosen, if any.
126 AutocompleteResult::Selection manually_selected_match_; 119 AutocompleteResult::Selection manually_selected_match_;
127 120
128 DISALLOW_COPY_AND_ASSIGN(AutocompletePopupModel); 121 DISALLOW_COPY_AND_ASSIGN(AutocompletePopupModel);
129 }; 122 };
130 123
131 #endif // CHROME_BROWSER_AUTOCOMPLETE_AUTOCOMPLETE_POPUP_MODEL_H_ 124 #endif // CHROME_BROWSER_AUTOCOMPLETE_AUTOCOMPLETE_POPUP_MODEL_H_
OLDNEW
« no previous file with comments | « chrome/browser/autocomplete/autocomplete_match.cc ('k') | chrome/browser/autocomplete/autocomplete_popup_model.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698