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

Side by Side Diff: chrome/browser/ui/omnibox/omnibox_edit_model.h

Issue 14358005: Omnibox refactor, moved OnResultChanged to OmniboxController (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed unit test. Created 7 years, 7 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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 Profile* profile); 82 Profile* profile);
83 virtual ~OmniboxEditModel(); 83 virtual ~OmniboxEditModel();
84 84
85 // TODO(beaudoin): Remove this accessor when the AutocompleteController has 85 // TODO(beaudoin): Remove this accessor when the AutocompleteController has
86 // completely moved to OmniboxController. 86 // completely moved to OmniboxController.
87 AutocompleteController* autocomplete_controller() const { 87 AutocompleteController* autocomplete_controller() const {
88 return omnibox_controller_->autocomplete_controller(); 88 return omnibox_controller_->autocomplete_controller();
89 } 89 }
90 90
91 void set_popup_model(OmniboxPopupModel* popup_model) { 91 void set_popup_model(OmniboxPopupModel* popup_model) {
92 popup_ = popup_model; 92 omnibox_controller_->set_popup_model(popup_model);
93 } 93 }
94 94
95 // TODO: The edit and popup should be siblings owned by the LocationBarView, 95 // TODO: The edit and popup should be siblings owned by the LocationBarView,
96 // making this accessor unnecessary. 96 // making this accessor unnecessary.
97 OmniboxPopupModel* popup_model() const { return popup_; } 97 OmniboxPopupModel* popup_model() const {
98 return omnibox_controller_->popup_model();
99 }
98 100
99 OmniboxEditController* controller() const { return controller_; } 101 OmniboxEditController* controller() const { return controller_; }
100 102
101 Profile* profile() const { return profile_; } 103 Profile* profile() const { return profile_; }
102 104
103 // Returns the current state. This assumes we are switching tabs, and changes 105 // Returns the current state. This assumes we are switching tabs, and changes
104 // the internal state appropriately. 106 // the internal state appropriately.
105 const State GetStateForTabSwitch(); 107 const State GetStateForTabSwitch();
106 108
107 // Restores local state from the saved |state|. 109 // Restores local state from the saved |state|.
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 // is_keyword_hint_). 224 // is_keyword_hint_).
223 const string16& keyword() const { return keyword_; } 225 const string16& keyword() const { return keyword_; }
224 bool is_keyword_hint() const { return is_keyword_hint_; } 226 bool is_keyword_hint() const { return is_keyword_hint_; }
225 227
226 // Accepts the current keyword hint as a keyword. It always returns true for 228 // Accepts the current keyword hint as a keyword. It always returns true for
227 // caller convenience. |entered_method| indicates how the use entered 229 // caller convenience. |entered_method| indicates how the use entered
228 // keyword mode. This parameter is only used for metrics/logging; it's not 230 // keyword mode. This parameter is only used for metrics/logging; it's not
229 // used to change user-visible behavior. 231 // used to change user-visible behavior.
230 bool AcceptKeyword(EnteredKeywordModeMethod entered_method); 232 bool AcceptKeyword(EnteredKeywordModeMethod entered_method);
231 233
234 // Accepts the current temporary text as the user text.
235 void AcceptTemporaryTextAsUserText();
236
232 // Clears the current keyword. |visible_text| is the (non-keyword) text 237 // Clears the current keyword. |visible_text| is the (non-keyword) text
233 // currently visible in the edit. 238 // currently visible in the edit.
234 void ClearKeyword(const string16& visible_text); 239 void ClearKeyword(const string16& visible_text);
235 240
236 // Returns the current autocomplete result. This logic should in the future 241 // Returns the current autocomplete result. This logic should in the future
237 // live in AutocompleteController but resides here for now. This method is 242 // live in AutocompleteController but resides here for now. This method is
238 // used by AutomationProvider::AutocompleteEditGetMatches. 243 // used by AutomationProvider::AutocompleteEditGetMatches.
239 const AutocompleteResult& result() const; 244 const AutocompleteResult& result() const {
245 return omnibox_controller_->result();
246 }
240 247
241 // Called when the view is gaining focus. |control_down| is whether the 248 // Called when the view is gaining focus. |control_down| is whether the
242 // control key is down (at the time we're gaining focus). 249 // control key is down (at the time we're gaining focus).
243 void OnSetFocus(bool control_down); 250 void OnSetFocus(bool control_down);
244 251
245 // Sets the visibility of the caret in the omnibox, if it has focus. The 252 // Sets the visibility of the caret in the omnibox, if it has focus. The
246 // visibility of the caret is reset to visible if either 253 // visibility of the caret is reset to visible if either
247 // - The user starts typing, or 254 // - The user starts typing, or
248 // - We explicitly focus the omnibox again. 255 // - We explicitly focus the omnibox again.
249 // The latter case must be handled in three separate places--OnSetFocus(), 256 // The latter case must be handled in three separate places--OnSetFocus(),
(...skipping 17 matching lines...) Expand all
267 // Called when the user presses or releases the control key. Changes state as 274 // Called when the user presses or releases the control key. Changes state as
268 // necessary. 275 // necessary.
269 void OnControlKeyChanged(bool pressed); 276 void OnControlKeyChanged(bool pressed);
270 277
271 // Called when the user pastes in text. 278 // Called when the user pastes in text.
272 void on_paste() { paste_state_ = PASTING; } 279 void on_paste() { paste_state_ = PASTING; }
273 280
274 // Returns true if pasting is in progress. 281 // Returns true if pasting is in progress.
275 bool is_pasting() const { return paste_state_ == PASTING; } 282 bool is_pasting() const { return paste_state_ == PASTING; }
276 283
284 // TODO(beaudoin): Try not to expose this.
285 bool in_revert() const { return in_revert_; }
286
277 // Called when the user presses up or down. |count| is a repeat count, 287 // Called when the user presses up or down. |count| is a repeat count,
278 // negative for moving up, positive for moving down. 288 // negative for moving up, positive for moving down.
279 virtual void OnUpOrDownKeyPressed(int count); 289 virtual void OnUpOrDownKeyPressed(int count);
280 290
281 // Called when any relevant data changes. This rolls together several 291 // Called when any relevant data changes. This rolls together several
282 // separate pieces of data into one call so we can update all the UI 292 // separate pieces of data into one call so we can update all the UI
283 // efficiently: 293 // efficiently:
284 // |text| is either the new temporary text from the user manually selecting 294 // |text| is either the new temporary text from the user manually selecting
285 // a different match, or the inline autocomplete text. We distinguish by 295 // a different match, or the inline autocomplete text. We distinguish by
286 // checking if |destination_for_temporary_text_change| is NULL. 296 // checking if |destination_for_temporary_text_change| is NULL.
(...skipping 29 matching lines...) Expand all
316 326
317 // Invoked when the popup has changed its bounds to |bounds|. |bounds| here 327 // Invoked when the popup has changed its bounds to |bounds|. |bounds| here
318 // is in screen coordinates. 328 // is in screen coordinates.
319 void OnPopupBoundsChanged(const gfx::Rect& bounds); 329 void OnPopupBoundsChanged(const gfx::Rect& bounds);
320 330
321 // Called when the results have changed in the OmniboxController. 331 // Called when the results have changed in the OmniboxController.
322 void OnResultChanged(bool default_match_changed); 332 void OnResultChanged(bool default_match_changed);
323 333
324 private: 334 private:
325 friend class InstantTestBase; 335 friend class InstantTestBase;
336 friend class OmniboxControllerTest;
326 337
327 enum PasteState { 338 enum PasteState {
328 NONE, // Most recent edit was not a paste. 339 NONE, // Most recent edit was not a paste.
329 PASTING, // In the middle of doing a paste. We need this intermediate 340 PASTING, // In the middle of doing a paste. We need this intermediate
330 // state because OnPaste() does the actual detection of 341 // state because OnPaste() does the actual detection of
331 // paste, but OnAfterPossibleChange() has to update the 342 // paste, but OnAfterPossibleChange() has to update the
332 // paste state for every edit. If OnPaste() set the state 343 // paste state for every edit. If OnPaste() set the state
333 // directly to PASTED, OnAfterPossibleChange() wouldn't know 344 // directly to PASTED, OnAfterPossibleChange() wouldn't know
334 // whether that represented the current edit or a past one. 345 // whether that represented the current edit or a past one.
335 PASTED, // Most recent edit was a paste. 346 PASTED, // Most recent edit was a paste.
(...skipping 18 matching lines...) Expand all
354 // AutocompleteController but resides here for now. This method is used by 365 // AutocompleteController but resides here for now. This method is used by
355 // AutomationProvider::AutocompleteEditIsQueryInProgress. 366 // AutomationProvider::AutocompleteEditIsQueryInProgress.
356 bool query_in_progress() const; 367 bool query_in_progress() const;
357 368
358 // Called whenever user_text_ should change. 369 // Called whenever user_text_ should change.
359 void InternalSetUserText(const string16& text); 370 void InternalSetUserText(const string16& text);
360 371
361 // Returns true if a keyword is selected. 372 // Returns true if a keyword is selected.
362 bool KeywordIsSelected() const; 373 bool KeywordIsSelected() const;
363 374
364 // Turns off keyword mode for the current match.
365 void ClearPopupKeywordMode() const;
366
367 // Conversion between user text and display text. User text is the text the 375 // Conversion between user text and display text. User text is the text the
368 // user has input. Display text is the text being shown in the edit. The 376 // user has input. Display text is the text being shown in the edit. The
369 // two are different if a keyword is selected. 377 // two are different if a keyword is selected.
370 string16 DisplayTextFromUserText(const string16& text) const; 378 string16 DisplayTextFromUserText(const string16& text) const;
371 string16 UserTextFromDisplayText(const string16& text) const; 379 string16 UserTextFromDisplayText(const string16& text) const;
372 380
373 // Copies the selected match into |match|. If an update is in progress, 381 // Copies the selected match into |match|. If an update is in progress,
374 // "selected" means "default in the latest matches". If there are no matches, 382 // "selected" means "default in the latest matches". If there are no matches,
375 // does not update |match|. 383 // does not update |match|.
376 // 384 //
377 // If |alternate_nav_url| is non-NULL, it will be set to the alternate 385 // If |alternate_nav_url| is non-NULL, it will be set to the alternate
378 // navigation URL for |url| if one exists, or left unchanged otherwise. See 386 // navigation URL for |url| if one exists, or left unchanged otherwise. See
379 // comments on AutocompleteResult::GetAlternateNavURL(). 387 // comments on AutocompleteResult::GetAlternateNavURL().
380 // 388 //
381 // TODO(pkasting): When manually_selected_match_ moves to the controller, this 389 // TODO(pkasting): When manually_selected_match_ moves to the controller, this
382 // can move too. 390 // can move too.
383 void InfoForCurrentSelection(AutocompleteMatch* match, 391 void InfoForCurrentSelection(AutocompleteMatch* match,
384 GURL* alternate_nav_url) const; 392 GURL* alternate_nav_url) const {
393 omnibox_controller_->InfoForCurrentSelection(match, alternate_nav_url);
394 }
385 395
386 // Returns the default match for the current text, as well as the alternate 396 // Returns the default match for the current text, as well as the alternate
387 // nav URL, if |alternate_nav_url| is non-NULL and there is such a URL. 397 // nav URL, if |alternate_nav_url| is non-NULL and there is such a URL.
388 void GetInfoForCurrentText(AutocompleteMatch* match, 398 void GetInfoForCurrentText(AutocompleteMatch* match,
389 GURL* alternate_nav_url) const; 399 GURL* alternate_nav_url) const;
390 400
391 // Reverts the edit box from a temporary text back to the original user text. 401 // Reverts the edit box from a temporary text back to the original user text.
392 // If |revert_popup| is true then the popup will be reverted as well. 402 // If |revert_popup| is true then the popup will be reverted as well.
393 void RevertTemporaryText(bool revert_popup); 403 void RevertTemporaryText(bool revert_popup);
394 404
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 // If focus_state_ does not match |state|, we update it and notify the 444 // If focus_state_ does not match |state|, we update it and notify the
435 // InstantController about the change (passing along the |reason| for the 445 // InstantController about the change (passing along the |reason| for the
436 // change). If the caret visibility changes, we call ApplyCaretVisibility() on 446 // change). If the caret visibility changes, we call ApplyCaretVisibility() on
437 // the view. 447 // the view.
438 void SetFocusState(OmniboxFocusState state, OmniboxFocusChangeReason reason); 448 void SetFocusState(OmniboxFocusState state, OmniboxFocusChangeReason reason);
439 449
440 scoped_ptr<OmniboxController> omnibox_controller_; 450 scoped_ptr<OmniboxController> omnibox_controller_;
441 451
442 OmniboxView* view_; 452 OmniboxView* view_;
443 453
444 OmniboxPopupModel* popup_;
445
446 OmniboxEditController* controller_; 454 OmniboxEditController* controller_;
447 455
448 scoped_ptr<OmniboxCurrentPageDelegate> delegate_; 456 scoped_ptr<OmniboxCurrentPageDelegate> delegate_;
449 457
450 OmniboxFocusState focus_state_; 458 OmniboxFocusState focus_state_;
451 459
452 // The URL of the currently displayed page. 460 // The URL of the currently displayed page.
453 string16 permanent_text_; 461 string16 permanent_text_;
454 462
455 // This flag is true when the user has modified the contents of the edit, but 463 // This flag is true when the user has modified the contents of the edit, but
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 // an exact keyword match. If this is true then keyword mode will be 570 // an exact keyword match. If this is true then keyword mode will be
563 // triggered automatically if the input is "<keyword> <search string>". We 571 // triggered automatically if the input is "<keyword> <search string>". We
564 // allow this when CreatedKeywordSearchByInsertingSpaceInMiddle() is true. 572 // allow this when CreatedKeywordSearchByInsertingSpaceInMiddle() is true.
565 // This has no effect if we're already in keyword mode. 573 // This has no effect if we're already in keyword mode.
566 bool allow_exact_keyword_match_; 574 bool allow_exact_keyword_match_;
567 575
568 DISALLOW_COPY_AND_ASSIGN(OmniboxEditModel); 576 DISALLOW_COPY_AND_ASSIGN(OmniboxEditModel);
569 }; 577 };
570 578
571 #endif // CHROME_BROWSER_UI_OMNIBOX_OMNIBOX_EDIT_MODEL_H_ 579 #endif // CHROME_BROWSER_UI_OMNIBOX_OMNIBOX_EDIT_MODEL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698