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 #ifndef CHROME_BROWSER_UI_OMNIBOX_OMNIBOX_EDIT_MODEL_H_ | 5 #ifndef CHROME_BROWSER_UI_OMNIBOX_OMNIBOX_EDIT_MODEL_H_ |
6 #define CHROME_BROWSER_UI_OMNIBOX_OMNIBOX_EDIT_MODEL_H_ | 6 #define CHROME_BROWSER_UI_OMNIBOX_OMNIBOX_EDIT_MODEL_H_ |
7 | 7 |
8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 void RestoreState(const State& state); | 75 void RestoreState(const State& state); |
76 | 76 |
77 // Returns the match for the current text. If the user has not edited the text | 77 // Returns the match for the current text. If the user has not edited the text |
78 // this is the match corresponding to the permanent text. | 78 // this is the match corresponding to the permanent text. |
79 AutocompleteMatch CurrentMatch(); | 79 AutocompleteMatch CurrentMatch(); |
80 | 80 |
81 // Called when the user wants to export the entire current text as a URL. | 81 // Called when the user wants to export the entire current text as a URL. |
82 // Sets the url, and if known, the title and favicon. | 82 // Sets the url, and if known, the title and favicon. |
83 void GetDataForURLExport(GURL* url, string16* title, SkBitmap* favicon); | 83 void GetDataForURLExport(GURL* url, string16* title, SkBitmap* favicon); |
84 | 84 |
85 // Returns true if a verbatim query should be used for instant. A verbatim | 85 // Returns true if a verbatim query should be used for Instant. A verbatim |
86 // query is forced in certain situations, such as pressing delete at the end | 86 // query is forced in certain situations, such as pressing delete at the end |
87 // of the edit. | 87 // of the edit. |
88 bool UseVerbatimInstant(); | 88 bool UseVerbatimInstant(); |
89 | 89 |
90 // If the user presses ctrl-enter, it means "add .com to the the end". The | 90 // If the user presses ctrl-enter, it means "add .com to the the end". The |
91 // desired TLD is the TLD the user desires to add to the end of the current | 91 // desired TLD is the TLD the user desires to add to the end of the current |
92 // input, if any, based on their control key state and any other actions | 92 // input, if any, based on their control key state and any other actions |
93 // they've taken. | 93 // they've taken. |
94 string16 GetDesiredTLD() const; | 94 string16 GetDesiredTLD() const; |
95 | 95 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 void SetUserText(const string16& text); | 130 void SetUserText(const string16& text); |
131 | 131 |
132 // Calls through to SearchProvider::FinalizeInstantQuery. | 132 // Calls through to SearchProvider::FinalizeInstantQuery. |
133 // If |skip_inline_autocomplete| is true then the |suggest_text| will be | 133 // If |skip_inline_autocomplete| is true then the |suggest_text| will be |
134 // turned into final text instead of inline autocomplete suggest. | 134 // turned into final text instead of inline autocomplete suggest. |
135 void FinalizeInstantQuery(const string16& input_text, | 135 void FinalizeInstantQuery(const string16& input_text, |
136 const string16& suggest_text, | 136 const string16& suggest_text, |
137 bool skip_inline_autocomplete); | 137 bool skip_inline_autocomplete); |
138 | 138 |
139 // Sets the suggestion text. | 139 // Sets the suggestion text. |
140 void SetSuggestedText(const string16& text, | 140 void SetSuggestedText(const string16& text, InstantCompleteBehavior behavior); |
141 InstantCompleteBehavior behavior); | |
142 | 141 |
143 // Commits the suggested text. If |skip_inline_autocomplete| is true then the | 142 // Commits the suggested text. If |skip_inline_autocomplete| is true then the |
144 // suggested text will be committed as final text as if it's inputted by the | 143 // suggested text will be committed as final text as if it's inputted by the |
145 // user, rather than as inline autocomplete suggest. | 144 // user, rather than as inline autocomplete suggest. |
146 // Returns true if the text was committed. | 145 // Returns true if the text was committed. |
147 // TODO: can the return type be void? | 146 // TODO: can the return type be void? |
148 bool CommitSuggestedText(bool skip_inline_autocomplete); | 147 bool CommitSuggestedText(bool skip_inline_autocomplete); |
149 | 148 |
150 // Accepts the currently showing instant preview, if any, and returns true. | 149 // Accepts the currently showing Instant preview, if any, and returns true. |
151 // Returns false if there is no instant preview showing. | 150 // Returns false if there is no Instant preview showing. |
152 bool AcceptCurrentInstantPreview(); | 151 bool AcceptCurrentInstantPreview(); |
153 | 152 |
154 // Invoked any time the text may have changed in the edit. Updates instant and | 153 // Invoked any time the text may have changed in the edit. Updates Instant and |
155 // notifies the controller. | 154 // notifies the controller. |
156 void OnChanged(); | 155 void OnChanged(); |
157 | 156 |
158 // Reverts the edit model back to its unedited state (permanent text showing, | 157 // Reverts the edit model back to its unedited state (permanent text showing, |
159 // no user input in progress). | 158 // no user input in progress). |
160 void Revert(); | 159 void Revert(); |
161 | 160 |
162 // Directs the popup to start autocomplete. | 161 // Directs the popup to start autocomplete. |
163 void StartAutocomplete(bool has_selected_text, | 162 void StartAutocomplete(bool has_selected_text, |
164 bool prevent_inline_autocomplete) const; | 163 bool prevent_inline_autocomplete) const; |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 size_t selection_start, | 269 size_t selection_start, |
271 size_t selection_end, | 270 size_t selection_end, |
272 bool selection_differs, | 271 bool selection_differs, |
273 bool text_differs, | 272 bool text_differs, |
274 bool just_deleted_text, | 273 bool just_deleted_text, |
275 bool allow_keyword_ui_change); | 274 bool allow_keyword_ui_change); |
276 | 275 |
277 // Invoked when the popup is going to change its bounds to |bounds|. | 276 // Invoked when the popup is going to change its bounds to |bounds|. |
278 void PopupBoundsChangedTo(const gfx::Rect& bounds); | 277 void PopupBoundsChangedTo(const gfx::Rect& bounds); |
279 | 278 |
280 #if defined(UNIT_TEST) | |
281 InstantCompleteBehavior instant_complete_behavior() const { | |
282 return instant_complete_behavior_; | |
283 } | |
284 #endif | |
285 | |
286 private: | 279 private: |
287 enum PasteState { | 280 enum PasteState { |
288 NONE, // Most recent edit was not a paste. | 281 NONE, // Most recent edit was not a paste. |
289 PASTING, // In the middle of doing a paste. We need this intermediate | 282 PASTING, // In the middle of doing a paste. We need this intermediate |
290 // state because OnPaste() does the actual detection of | 283 // state because OnPaste() does the actual detection of |
291 // paste, but OnAfterPossibleChange() has to update the | 284 // paste, but OnAfterPossibleChange() has to update the |
292 // paste state for every edit. If OnPaste() set the state | 285 // paste state for every edit. If OnPaste() set the state |
293 // directly to PASTED, OnAfterPossibleChange() wouldn't know | 286 // directly to PASTED, OnAfterPossibleChange() wouldn't know |
294 // whether that represented the current edit or a past one. | 287 // whether that represented the current edit or a past one. |
295 PASTED, // Most recent edit was a paste. | 288 PASTED, // Most recent edit was a paste. |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 // Checks whether the user inserted a space into |old_text| and by doing so | 359 // Checks whether the user inserted a space into |old_text| and by doing so |
367 // created a |new_text| that looks like "<keyword> <search phrase>". | 360 // created a |new_text| that looks like "<keyword> <search phrase>". |
368 bool CreatedKeywordSearchByInsertingSpaceInMiddle( | 361 bool CreatedKeywordSearchByInsertingSpaceInMiddle( |
369 const string16& old_text, | 362 const string16& old_text, |
370 const string16& new_text, | 363 const string16& new_text, |
371 size_t caret_position) const; | 364 size_t caret_position) const; |
372 | 365 |
373 // Notifies the SearchTabHelper that autocomplete state has changed. | 366 // Notifies the SearchTabHelper that autocomplete state has changed. |
374 void NotifySearchTabHelper(); | 367 void NotifySearchTabHelper(); |
375 | 368 |
376 // Tries to start an instant preview for |match|. Returns true if instant | 369 // Tries to start an Instant preview for |match|. Returns true if Instant |
377 // processed the match. | 370 // processed the match. |suggested_text| should initially contain the current |
378 bool DoInstant(const AutocompleteMatch& match, string16* suggested_text); | 371 // inline autocomplete text. Instant will replace it with new suggested text |
| 372 // and set |complete_behavior| accordingly. |
| 373 bool DoInstant(const AutocompleteMatch& match, |
| 374 string16* suggested_text, |
| 375 InstantCompleteBehavior* complete_behavior); |
379 | 376 |
380 // Starts a prerender for the given |match|. | 377 // Starts a prerender for the given |match|. |
381 void DoPrerender(const AutocompleteMatch& match); | 378 void DoPrerender(const AutocompleteMatch& match); |
382 | 379 |
383 // Starts a DNS prefetch for the given |match|. | 380 // Starts a DNS prefetch for the given |match|. |
384 void DoPreconnect(const AutocompleteMatch& match); | 381 void DoPreconnect(const AutocompleteMatch& match); |
385 | 382 |
386 // Checks if a given character is a valid space character for accepting | 383 // Checks if a given character is a valid space character for accepting |
387 // keyword. | 384 // keyword. |
388 static bool IsSpaceCharForAcceptingKeyword(wchar_t c); | 385 static bool IsSpaceCharForAcceptingKeyword(wchar_t c); |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
490 string16 keyword_; | 487 string16 keyword_; |
491 | 488 |
492 // True if the keyword associated with this match is merely a hint, i.e. the | 489 // True if the keyword associated with this match is merely a hint, i.e. the |
493 // user hasn't actually selected a keyword yet. When this is true, we can use | 490 // user hasn't actually selected a keyword yet. When this is true, we can use |
494 // keyword_ to show a "Press <tab> to search" sort of hint. | 491 // keyword_ to show a "Press <tab> to search" sort of hint. |
495 bool is_keyword_hint_; | 492 bool is_keyword_hint_; |
496 | 493 |
497 Profile* profile_; | 494 Profile* profile_; |
498 | 495 |
499 // This is needed as prior to accepting the current text the model is | 496 // This is needed as prior to accepting the current text the model is |
500 // reverted, which triggers resetting instant. We don't want to update instant | 497 // reverted, which triggers resetting Instant. We don't want to update Instant |
501 // in this case, so we use the flag to determine if this is happening. | 498 // in this case, so we use the flag to determine if this is happening. |
502 bool in_revert_; | 499 bool in_revert_; |
503 | 500 |
504 // Indicates if the upcoming autocomplete search is allowed to be treated as | 501 // Indicates if the upcoming autocomplete search is allowed to be treated as |
505 // an exact keyword match. If this is true then keyword mode will be | 502 // an exact keyword match. If this is true then keyword mode will be |
506 // triggered automatically if the input is "<keyword> <search string>". We | 503 // triggered automatically if the input is "<keyword> <search string>". We |
507 // allow this when CreatedKeywordSearchByInsertingSpaceInMiddle() is true. | 504 // allow this when CreatedKeywordSearchByInsertingSpaceInMiddle() is true. |
508 // This has no effect if we're already in keyword mode. | 505 // This has no effect if we're already in keyword mode. |
509 bool allow_exact_keyword_match_; | 506 bool allow_exact_keyword_match_; |
510 | 507 |
511 // Last value of InstantCompleteBehavior supplied to |SetSuggestedText|. | |
512 InstantCompleteBehavior instant_complete_behavior_; | |
513 | |
514 DISALLOW_COPY_AND_ASSIGN(OmniboxEditModel); | 508 DISALLOW_COPY_AND_ASSIGN(OmniboxEditModel); |
515 }; | 509 }; |
516 | 510 |
517 #endif // CHROME_BROWSER_UI_OMNIBOX_OMNIBOX_EDIT_MODEL_H_ | 511 #endif // CHROME_BROWSER_UI_OMNIBOX_OMNIBOX_EDIT_MODEL_H_ |
OLD | NEW |