omnibox_view_views.h revision f2477e01787aa58f445919b809d89e252beef54f
1d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis// Copyright (c) 2012 The Chromium Authors. All rights reserved.
21eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump// Use of this source code is governed by a BSD-style license that can be
3f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenek// found in the LICENSE file.
4f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenek
5f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenek#ifndef CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_VIEW_VIEWS_H_
6f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenek#define CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_VIEW_VIEWS_H_
7f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenek
8f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenek#include <string>
9f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenek
10f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenek#include "base/basictypes.h"
118e49dd6e7e73b275a74338a5127a524f0765303cTed Kremenek#include "base/memory/scoped_ptr.h"
12f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenek#include "chrome/browser/ui/omnibox/omnibox_view.h"
13f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenek#include "chrome/browser/ui/toolbar/toolbar_model.h"
14f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenek#include "ui/base/window_open_disposition.h"
15d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis#include "ui/gfx/range/range.h"
16d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis#include "ui/views/controls/textfield/textfield.h"
17f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenek#include "ui/views/controls/textfield/textfield_controller.h"
1899c6ad3f22b865d0f4cce52bc36904403c9ed4c4Ted Kremenek
199b663716449b618ba0390b1dbebc54fa8e971124Ted Kremenek#if defined(OS_CHROMEOS)
209b663716449b618ba0390b1dbebc54fa8e971124Ted Kremenek#include "chromeos/ime/input_method_manager.h"
219b663716449b618ba0390b1dbebc54fa8e971124Ted Kremenek#endif
22f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenek
23f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenekclass LocationBarView;
24f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenekclass OmniboxPopupView;
250111f575b968e423dccae439e501225b8314b257Zhongxing Xuclass Profile;
26ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenek
27ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremeneknamespace ui {
289ef6537a894c33003359b1f9b9676e9178e028b7Ted Kremenekclass OSExchangeData;
295a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidis}  // namespace ui
30a19f4af7a94835ce4693bfe12d6270754e79eb56Anna Zaks
31a19f4af7a94835ce4693bfe12d6270754e79eb56Anna Zaks// Views-implementation of OmniboxView, based on the gtk implementation.
3224f1a967741ff9f8025ee23be12ba6feacc31f77Ted Kremenekclass OmniboxViewViews
33d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis    : public views::Textfield,
34922059dec59c7bed235da01aff75ae522a369811Ted Kremenek      public OmniboxView,
35922059dec59c7bed235da01aff75ae522a369811Ted Kremenek#if defined(OS_CHROMEOS)
36d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis      public
37922059dec59c7bed235da01aff75ae522a369811Ted Kremenek          chromeos::input_method::InputMethodManager::CandidateWindowObserver,
38922059dec59c7bed235da01aff75ae522a369811Ted Kremenek#endif
39922059dec59c7bed235da01aff75ae522a369811Ted Kremenek      public views::TextfieldController {
40922059dec59c7bed235da01aff75ae522a369811Ted Kremenek public:
41d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis  // The internal view class name.
42ebae6d0209e1ec3d5ea14f9e63bd0d740218ed14Anna Zaks  static const char kViewClassName[];
43f05aac8472d8ed081a361a218fd14d59ddc91b85Anna Zaks
44ebae6d0209e1ec3d5ea14f9e63bd0d740218ed14Anna Zaks  OmniboxViewViews(OmniboxEditController* controller,
45d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis                   Profile* profile,
46d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis                   CommandUpdater* command_updater,
47e36de1fe51c39d9161915dd3dbef880954af6476Ted Kremenek                   bool popup_window_mode,
48d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis                   LocationBarView* location_bar,
49d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis                   const gfx::FontList& font_list);
500111f575b968e423dccae439e501225b8314b257Zhongxing Xu  virtual ~OmniboxViewViews();
51a7a8a450d908b34fa5f569f2e694ebd4b61aae2fTom Care
52a7a8a450d908b34fa5f569f2e694ebd4b61aae2fTom Care  // Initialize, create the underlying views, etc;
5366750fa464ace9f8c41666c8585ec71a248c1ccaTed Kremenek  void Init();
54422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek
55422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek  // Sets the colors of the text view according to the theme.
56422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek  void SetBaseColor();
57422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek
58a7a8a450d908b34fa5f569f2e694ebd4b61aae2fTom Care  // views::Textfield:
59a7a8a450d908b34fa5f569f2e694ebd4b61aae2fTom Care  virtual const char* GetClassName() const OVERRIDE;
60d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis  virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE;
610111f575b968e423dccae439e501225b8314b257Zhongxing Xu  virtual void GetAccessibleState(ui::AccessibleViewState* state) OVERRIDE;
62f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenek  virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE;
6338b02b912e1a55c912f603c4369431264d36a381Zhongxing Xu  virtual bool OnMouseDragged(const ui::MouseEvent& event) OVERRIDE;
641eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump  virtual void OnMouseReleased(const ui::MouseEvent& event) OVERRIDE;
65f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenek  virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE;
66f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenek  virtual bool OnKeyReleased(const ui::KeyEvent& event) OVERRIDE;
67f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenek  virtual bool SkipDefaultKeyEventProcessing(
68d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis      const ui::KeyEvent& event) OVERRIDE;
691eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump  virtual void OnFocus() OVERRIDE;
70d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis  virtual void OnBlur() OVERRIDE;
718e49dd6e7e73b275a74338a5127a524f0765303cTed Kremenek
728e49dd6e7e73b275a74338a5127a524f0765303cTed Kremenek  // OmniboxView:
73d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis  virtual void SaveStateToTab(content::WebContents* tab) OVERRIDE;
74f598087b4adfea164acdd5b53ea2951bde740a2dTed Kremenek  virtual void OnTabChanged(const content::WebContents* web_contents) OVERRIDE;
75f598087b4adfea164acdd5b53ea2951bde740a2dTed Kremenek  virtual void Update() OVERRIDE;
76f598087b4adfea164acdd5b53ea2951bde740a2dTed Kremenek  virtual string16 GetText() const OVERRIDE;
7766750fa464ace9f8c41666c8585ec71a248c1ccaTed Kremenek  virtual void SetUserText(const string16& text,
78422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek                           const string16& display_text,
79422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek                           bool update_popup) OVERRIDE;
80422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek  virtual void SetWindowTextAndCaretPos(const string16& text,
81422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek                                        size_t caret_pos,
821eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump                                        bool update_popup,
8318c66fdc3c4008d335885695fe36fb5353c5f672Ted Kremenek                                        bool notify_text_changed) OVERRIDE;
8418c66fdc3c4008d335885695fe36fb5353c5f672Ted Kremenek  virtual void SetForcedQuery() OVERRIDE;
859c378f705405d37f49795d5e915989de774fe11fTed Kremenek  virtual bool IsSelectAll() const OVERRIDE;
861eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump  virtual bool DeleteAtEndPressed() OVERRIDE;
879c378f705405d37f49795d5e915989de774fe11fTed Kremenek  virtual void GetSelectionBounds(string16::size_type* start,
889c378f705405d37f49795d5e915989de774fe11fTed Kremenek                                  string16::size_type* end) const OVERRIDE;
899c378f705405d37f49795d5e915989de774fe11fTed Kremenek  virtual void SelectAll(bool reversed) OVERRIDE;
909c378f705405d37f49795d5e915989de774fe11fTed Kremenek  virtual void RevertAll() OVERRIDE;
911eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump  virtual void UpdatePopup() OVERRIDE;
929c378f705405d37f49795d5e915989de774fe11fTed Kremenek  virtual void SetFocus() OVERRIDE;
939c378f705405d37f49795d5e915989de774fe11fTed Kremenek  virtual void ApplyCaretVisibility() OVERRIDE;
94102acd5369bbb17c0d6ab868af376671acff7a93Douglas Gregor  virtual void OnTemporaryTextMaybeChanged(
95102acd5369bbb17c0d6ab868af376671acff7a93Douglas Gregor      const string16& display_text,
96102acd5369bbb17c0d6ab868af376671acff7a93Douglas Gregor      bool save_original_selection,
970111f575b968e423dccae439e501225b8314b257Zhongxing Xu      bool notify_text_changed) OVERRIDE;
98f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenek  virtual bool OnInlineAutocompleteTextMaybeChanged(
99d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis      const string16& display_text, size_t user_text_length) OVERRIDE;
100d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis  virtual void OnInlineAutocompleteTextCleared() OVERRIDE;
1011eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump  virtual void OnRevertTemporaryText() OVERRIDE;
102dd7ddf2b2296f95e7591ca3f9791f0eb9a15ee42Anna Zaks  virtual void OnBeforePossibleChange() OVERRIDE;
103dd7ddf2b2296f95e7591ca3f9791f0eb9a15ee42Anna Zaks  virtual bool OnAfterPossibleChange() OVERRIDE;
104dd7ddf2b2296f95e7591ca3f9791f0eb9a15ee42Anna Zaks  virtual gfx::NativeView GetNativeView() const OVERRIDE;
1054d2ae4a70336dc2aa11389b34946be152bb454c9Anna Zaks  virtual gfx::NativeView GetRelativeWindowForPopup() const OVERRIDE;
1064d2ae4a70336dc2aa11389b34946be152bb454c9Anna Zaks  virtual void SetGrayTextAutocompletion(const string16& input) OVERRIDE;
107f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenek  virtual string16 GetGrayTextAutocompletion() const OVERRIDE;
108d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis  virtual int TextWidth() const OVERRIDE;
1090111f575b968e423dccae439e501225b8314b257Zhongxing Xu  virtual bool IsImeComposing() const OVERRIDE;
110d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis  virtual bool IsImeShowingPopup() const OVERRIDE;
111d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis  virtual int GetMaxEditWidth(int entry_width) const OVERRIDE;
11255825aa2d88fe82bf3622f195046ae48532d3106Ted Kremenek  virtual int OnPerformDrop(const ui::DropTargetEvent& event) OVERRIDE;
113f598087b4adfea164acdd5b53ea2951bde740a2dTed Kremenek
1140111f575b968e423dccae439e501225b8314b257Zhongxing Xu  // views::TextfieldController:
115d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis  virtual void ContentsChanged(views::Textfield* sender,
1160111f575b968e423dccae439e501225b8314b257Zhongxing Xu                               const string16& new_contents) OVERRIDE;
117d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis  virtual bool HandleKeyEvent(views::Textfield* sender,
118d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis                              const ui::KeyEvent& key_event) OVERRIDE;
119d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis  virtual void OnBeforeUserAction(views::Textfield* sender) OVERRIDE;
120f598087b4adfea164acdd5b53ea2951bde740a2dTed Kremenek  virtual void OnAfterUserAction(views::Textfield* sender) OVERRIDE;
1210111f575b968e423dccae439e501225b8314b257Zhongxing Xu  virtual void OnAfterCutOrCopy() OVERRIDE;
122d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis  virtual void OnWriteDragData(ui::OSExchangeData* data) OVERRIDE;
1230111f575b968e423dccae439e501225b8314b257Zhongxing Xu  virtual void OnGetDragOperationsForTextfield(int* drag_operations) OVERRIDE;
1240111f575b968e423dccae439e501225b8314b257Zhongxing Xu  virtual void AppendDropFormats(
1250111f575b968e423dccae439e501225b8314b257Zhongxing Xu      int* formats,
1260111f575b968e423dccae439e501225b8314b257Zhongxing Xu      std::set<ui::OSExchangeData::CustomFormat>* custom_formats) OVERRIDE;
127031ccc0555a82afc2e8afe29e19dd57ff204e2deZhongxing Xu  virtual int OnDrop(const ui::OSExchangeData& data) OVERRIDE;
1281eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump  virtual void UpdateContextMenu(ui::SimpleMenuModel* menu_contents) OVERRIDE;
1290111f575b968e423dccae439e501225b8314b257Zhongxing Xu  virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE;
130fc8f0e14ad142ed811e90fbd9a30e419e301c717Chris Lattner  virtual bool IsItemForCommandIdDynamic(int command_id) const OVERRIDE;
131031ccc0555a82afc2e8afe29e19dd57ff204e2deZhongxing Xu  virtual string16 GetLabelForCommandId(int command_id) const OVERRIDE;
1320111f575b968e423dccae439e501225b8314b257Zhongxing Xu  virtual bool HandlesCommand(int command_id) const OVERRIDE;
133f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenek  virtual void ExecuteCommand(int command_id, int event_flags) OVERRIDE;
134f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenek
1352ce43c8f43254a9edea53a20dc0e69195bc82ae0Zhongxing Xu#if defined(OS_CHROMEOS)
13618c66fdc3c4008d335885695fe36fb5353c5f672Ted Kremenek  // chromeos::input_method::InputMethodManager::CandidateWindowObserver:
13718c66fdc3c4008d335885695fe36fb5353c5f672Ted Kremenek  virtual void CandidateWindowOpened(
13818c66fdc3c4008d335885695fe36fb5353c5f672Ted Kremenek      chromeos::input_method::InputMethodManager* manager) OVERRIDE;
13918c66fdc3c4008d335885695fe36fb5353c5f672Ted Kremenek  virtual void CandidateWindowClosed(
1402ce43c8f43254a9edea53a20dc0e69195bc82ae0Zhongxing Xu      chromeos::input_method::InputMethodManager* manager) OVERRIDE;
141bc42c533e7d3d946704a49e242939dd232f33072Tom Care#endif
142bc42c533e7d3d946704a49e242939dd232f33072Tom Care
143422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek private:
144422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek  // Return the number of characers in the current buffer.
145422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek  virtual int GetOmniboxTextLength() const OVERRIDE;
146422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek
147422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek  // Try to parse the current text as a URL and colorize the components.
148422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek  virtual void EmphasizeURLComponents() OVERRIDE;
149422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek
150422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek  // Update the field with |text| and set the selection.
151422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek  void SetTextAndSelectedRange(const string16& text,
152422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek                               const gfx::Range& range);
153422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek
154422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek  // Returns the selected text.
155d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis  string16 GetSelectedText() const;
156f598087b4adfea164acdd5b53ea2951bde740a2dTed Kremenek
157422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek  // Paste text from the clipboard into the omnibox.
15866750fa464ace9f8c41666c8585ec71a248c1ccaTed Kremenek  // Textfields implementation of Paste() pastes the contents of the clipboard
159f598087b4adfea164acdd5b53ea2951bde740a2dTed Kremenek  // as is. We want to strip whitespace and other things (see GetClipboardText()
160422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek  // for details).
16166750fa464ace9f8c41666c8585ec71a248c1ccaTed Kremenek  // It is assumed this is invoked after a call to OnBeforePossibleChange() and
162f598087b4adfea164acdd5b53ea2951bde740a2dTed Kremenek  // that after invoking this OnAfterPossibleChange() is invoked.
163422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek  void OnPaste();
164422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek
165422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek  // Handle keyword hint tab-to-search and tabbing through dropdown results.
166422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek  bool HandleEarlyTabActions(const ui::KeyEvent& event);
167422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek
168422ab7a49a9a4252dbc6350e49d7a5708337b9c7Ted Kremenek  // When true, the location bar view is read only and also is has a slightly
169a19f4af7a94835ce4693bfe12d6270754e79eb56Anna Zaks  // different presentation (smaller font size). This is used for popups.
170dd7ddf2b2296f95e7591ca3f9791f0eb9a15ee42Anna Zaks  bool popup_window_mode_;
1714d2ae4a70336dc2aa11389b34946be152bb454c9Anna Zaks
172dd7ddf2b2296f95e7591ca3f9791f0eb9a15ee42Anna Zaks  scoped_ptr<OmniboxPopupView> popup_view_;
173dd7ddf2b2296f95e7591ca3f9791f0eb9a15ee42Anna Zaks
174dd7ddf2b2296f95e7591ca3f9791f0eb9a15ee42Anna Zaks  ToolbarModel::SecurityLevel security_level_;
175dd7ddf2b2296f95e7591ca3f9791f0eb9a15ee42Anna Zaks
1764d2ae4a70336dc2aa11389b34946be152bb454c9Anna Zaks  // Selection persisted across temporary text changes, like popup suggestions.
1774d2ae4a70336dc2aa11389b34946be152bb454c9Anna Zaks  gfx::Range saved_temporary_selection_;
1784d2ae4a70336dc2aa11389b34946be152bb454c9Anna Zaks
1794d2ae4a70336dc2aa11389b34946be152bb454c9Anna Zaks  // Holds the user's selection across focus changes.  There is only a saved
180a19f4af7a94835ce4693bfe12d6270754e79eb56Anna Zaks  // selection if this range IsValid().
181a19f4af7a94835ce4693bfe12d6270754e79eb56Anna Zaks  gfx::Range saved_selection_for_focus_change_;
182c03a39e16762627b421247b12a2658be630a3300Anna Zaks
183a19f4af7a94835ce4693bfe12d6270754e79eb56Anna Zaks  // Tracking state before and after a possible change.
184a19f4af7a94835ce4693bfe12d6270754e79eb56Anna Zaks  string16 text_before_change_;
185a19f4af7a94835ce4693bfe12d6270754e79eb56Anna Zaks  gfx::Range sel_before_change_;
186af498a28797c075c48d7e943df5f5a8e78ed8eb0Anna Zaks  bool ime_composing_before_change_;
187c9003c89c7aead1686aba89c8e3ddcea1f2bec54Anna Zaks
188af498a28797c075c48d7e943df5f5a8e78ed8eb0Anna Zaks  // Was the delete key pressed with an empty selection at the end of the edit?
189ebae6d0209e1ec3d5ea14f9e63bd0d740218ed14Anna Zaks  bool delete_at_end_pressed_;
190c03a39e16762627b421247b12a2658be630a3300Anna Zaks  LocationBarView* location_bar_view_;
191c03a39e16762627b421247b12a2658be630a3300Anna Zaks
192ebae6d0209e1ec3d5ea14f9e63bd0d740218ed14Anna Zaks  // True if the IME candidate window is open. When this is true, we want to
193ebae6d0209e1ec3d5ea14f9e63bd0d740218ed14Anna Zaks  // avoid showing the popup. So far, the candidate window is detected only
194ebae6d0209e1ec3d5ea14f9e63bd0d740218ed14Anna Zaks  // on Chrome OS.
195ebae6d0209e1ec3d5ea14f9e63bd0d740218ed14Anna Zaks  bool ime_candidate_window_open_;
196ebae6d0209e1ec3d5ea14f9e63bd0d740218ed14Anna Zaks
197ebae6d0209e1ec3d5ea14f9e63bd0d740218ed14Anna Zaks  // Should we select all the text when we see the mouse button get released?
198ebae6d0209e1ec3d5ea14f9e63bd0d740218ed14Anna Zaks  // We select in response to a click that focuses the omnibox, but we defer
199af498a28797c075c48d7e943df5f5a8e78ed8eb0Anna Zaks  // until release, setting this variable back to false if we saw a drag, to
200ebae6d0209e1ec3d5ea14f9e63bd0d740218ed14Anna Zaks  // allow the user to select just a portion of the text.
201ebae6d0209e1ec3d5ea14f9e63bd0d740218ed14Anna Zaks  bool select_all_on_mouse_release_;
202f24af5bc2e01ca8e7396ed997378a77fddfa521eTed Kremenek
2031eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump  // Indicates if we want to select all text in the omnibox when we get a
204aa0aeb1cbe117db68d35700cb3a34aace0f99b99Anna Zaks  // GESTURE_TAP. We want to select all only when the textfield is not in focus
205aa0aeb1cbe117db68d35700cb3a34aace0f99b99Anna Zaks  // and gets a tap. So we use this variable to remember focus state before tap.
206aa0aeb1cbe117db68d35700cb3a34aace0f99b99Anna Zaks  bool select_all_on_gesture_tap_;
207aa0aeb1cbe117db68d35700cb3a34aace0f99b99Anna Zaks
208aa0aeb1cbe117db68d35700cb3a34aace0f99b99Anna Zaks  DISALLOW_COPY_AND_ASSIGN(OmniboxViewViews);
209aa0aeb1cbe117db68d35700cb3a34aace0f99b99Anna Zaks};
210aa0aeb1cbe117db68d35700cb3a34aace0f99b99Anna Zaks
211aa0aeb1cbe117db68d35700cb3a34aace0f99b99Anna Zaks#endif  // CHROME_BROWSER_UI_VIEWS_OMNIBOX_OMNIBOX_VIEW_VIEWS_H_
212aa0aeb1cbe117db68d35700cb3a34aace0f99b99Anna Zaks