1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file.
4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/views/omnibox/omnibox_view_views.h"
6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/command_line.h"
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/browser.h"
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/browser_commands.h"
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/browser_window.h"
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/omnibox/location_bar.h"
12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/omnibox/omnibox_popup_model.h"
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/view_ids.h"
1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/ui/views/frame/browser_view.h"
150de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)#include "chrome/browser/ui/views/location_bar/location_bar_view.h"
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/test/base/in_process_browser_test.h"
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/test/base/interactive_test_utils.h"
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "grit/generated_resources.h"
195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/aura/test/event_generator.h"
20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "ui/aura/window.h"
21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/aura/window_tree_host.h"
225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "ui/base/clipboard/clipboard.h"
235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "ui/base/clipboard/scoped_clipboard_writer.h"
24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "ui/base/ime/text_input_focus_manager.h"
255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "ui/base/test/ui_controls.h"
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/base/ui_base_switches.h"
27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/events/event_processor.h"
2846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "ui/events/event_utils.h"
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/views/controls/textfield/textfield_test_api.h"
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class OmniboxViewViewsTest : public InProcessBrowserTest {
3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) protected:
3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  OmniboxViewViewsTest() {}
3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  static void GetOmniboxViewForBrowser(const Browser* browser,
3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                                       OmniboxView** omnibox_view) {
3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    BrowserWindow* window = browser->window();
3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    ASSERT_TRUE(window);
3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    LocationBar* location_bar = window->GetLocationBar();
4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    ASSERT_TRUE(location_bar);
41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    *omnibox_view = location_bar->GetOmniboxView();
4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    ASSERT_TRUE(*omnibox_view);
4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // Move the mouse to the center of the browser window and left-click.
4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  void ClickBrowserWindowCenter() {
4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    ASSERT_TRUE(ui_test_utils::SendMouseMoveSync(
4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)        BrowserView::GetBrowserViewForBrowser(
4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)            browser())->GetBoundsInScreen().CenterPoint()));
5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    ASSERT_TRUE(ui_test_utils::SendMouseEventsSync(ui_controls::LEFT,
5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                                                   ui_controls::DOWN));
5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    ASSERT_TRUE(
5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)        ui_test_utils::SendMouseEventsSync(ui_controls::LEFT, ui_controls::UP));
5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
5558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
56f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Press and release the mouse at the specified locations.  If
57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // |release_offset| differs from |press_offset|, the mouse will be moved
5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // between the press and release.
59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void Click(ui_controls::MouseButton button,
60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)             const gfx::Point& press_location,
61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)             const gfx::Point& release_location) {
62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    ASSERT_TRUE(ui_test_utils::SendMouseMoveSync(press_location));
6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    ASSERT_TRUE(ui_test_utils::SendMouseEventsSync(button, ui_controls::DOWN));
6458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    if (press_location != release_location)
66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      ASSERT_TRUE(ui_test_utils::SendMouseMoveSync(release_location));
6758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    ASSERT_TRUE(ui_test_utils::SendMouseEventsSync(button, ui_controls::UP));
6858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
6958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
70f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Tap the center of the browser window.
71f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void TapBrowserWindowCenter() {
72f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    gfx::Point center = BrowserView::GetBrowserViewForBrowser(
73f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)        browser())->GetBoundsInScreen().CenterPoint();
745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    aura::test::EventGenerator generator(browser()->window()->
755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        GetNativeWindow()->GetRootWindow());
765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    generator.GestureTapAt(center);
77f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  }
78f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
79f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Touch down and release at the specified locations.
80f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void Tap(const gfx::Point& press_location,
81f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)           const gfx::Point& release_location) {
82a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    ui::EventProcessor* dispatcher =
83a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        browser()->window()->GetNativeWindow()->GetHost()->event_processor();
84f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
8546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    base::TimeDelta timestamp = ui::EventTimeForNow();
8646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    ui::TouchEvent press(
8746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)        ui::ET_TOUCH_PRESSED, press_location, 5, timestamp);
885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    ui::EventDispatchDetails details = dispatcher->OnEventFromSource(&press);
895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    ASSERT_FALSE(details.dispatcher_destroyed);
90f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
9146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    if (press_location != release_location) {
9246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      timestamp += base::TimeDelta::FromMilliseconds(10);
9346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      ui::TouchEvent move(
9446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          ui::ET_TOUCH_MOVED, release_location, 5, timestamp);
9546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      details = dispatcher->OnEventFromSource(&move);
9646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    }
9746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
9846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    timestamp += base::TimeDelta::FromMilliseconds(50);
9946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    ui::TouchEvent release(
10046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)        ui::ET_TOUCH_RELEASED, release_location, 5, timestamp);
1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    details = dispatcher->OnEventFromSource(&release);
1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    ASSERT_FALSE(details.dispatcher_destroyed);
103f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  }
104f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
10558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) private:
10658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // InProcessBrowserTest:
10758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void SetUpOnMainThread() OVERRIDE {
10858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser()));
10958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    chrome::FocusLocationBar(browser());
11058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    ASSERT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX));
11158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
11258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
11358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(OmniboxViewViewsTest);
11458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)};
115c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(OmniboxViewViewsTest, PasteAndGoDoesNotLeavePopupOpen) {
1170de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  OmniboxView* view = NULL;
1180de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(GetOmniboxViewForBrowser(browser(), &view));
119f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OmniboxViewViews* omnibox_view_views = static_cast<OmniboxViewViews*>(view);
120c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Put an URL on the clipboard.
122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  {
123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    ui::ScopedClipboardWriter clipboard_writer(
1244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)        ui::Clipboard::GetForCurrentThread(), ui::CLIPBOARD_TYPE_COPY_PASTE);
1255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    clipboard_writer.WriteURL(base::ASCIIToUTF16("http://www.example.com/"));
126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Paste and go.
1295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  omnibox_view_views->ExecuteCommand(IDS_PASTE_AND_GO, ui::EF_NONE);
130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // The popup should not be open.
132c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_FALSE(view->model()->popup_model()->IsOpen());
133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
13458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
13558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(OmniboxViewViewsTest, SelectAllOnClick) {
13658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  OmniboxView* omnibox_view = NULL;
13758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(GetOmniboxViewForBrowser(browser(), &omnibox_view));
1385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  omnibox_view->SetUserText(base::ASCIIToUTF16("http://www.google.com/"));
13958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
14058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // Take the focus away from the omnibox.
14158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(ClickBrowserWindowCenter());
14258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_FALSE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX));
14358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_FALSE(omnibox_view->IsSelectAll());
14458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
14558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // Clicking in the omnibox should take focus and select all text.
146f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  const gfx::Rect omnibox_bounds = BrowserView::GetBrowserViewForBrowser(
147f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)        browser())->GetViewByID(VIEW_ID_OMNIBOX)->GetBoundsInScreen();
148f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  const gfx::Point click_location = omnibox_bounds.CenterPoint();
149f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(Click(ui_controls::LEFT,
150f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                                click_location, click_location));
15158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX));
15258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_TRUE(omnibox_view->IsSelectAll());
15358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
15458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // Clicking in another view should clear focus and the selection.
15558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(ClickBrowserWindowCenter());
15658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_FALSE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX));
15758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_FALSE(omnibox_view->IsSelectAll());
15858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
15958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // Clicking in the omnibox again should take focus and select all text again.
160f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(Click(ui_controls::LEFT,
161f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                                click_location, click_location));
16258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX));
16358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_TRUE(omnibox_view->IsSelectAll());
16458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
16558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // Clicking another omnibox spot should keep focus but clear the selection.
16658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  omnibox_view->SelectAll(false);
167f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  const gfx::Point click2_location = omnibox_bounds.origin() +
168f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      gfx::Vector2d(omnibox_bounds.width() / 4, omnibox_bounds.height() / 4);
169f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(Click(ui_controls::LEFT,
170f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                                click2_location, click2_location));
17158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX));
17258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_FALSE(omnibox_view->IsSelectAll());
17358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
17458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // Take the focus away and click in the omnibox again, but drag a bit before
17558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // releasing.  We should focus the omnibox but not select all of its text.
17658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(ClickBrowserWindowCenter());
177f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(Click(ui_controls::LEFT,
178f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                                click_location, click2_location));
17958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX));
18058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_FALSE(omnibox_view->IsSelectAll());
18158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
18258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // Middle-clicking should not be handled by the omnibox.
18358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(ClickBrowserWindowCenter());
184f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(Click(ui_controls::MIDDLE,
185f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                                click_location, click_location));
186f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_FALSE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX));
187f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_FALSE(omnibox_view->IsSelectAll());
188f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
189f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
190f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(OmniboxViewViewsTest, SelectAllOnTap) {
191f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OmniboxView* omnibox_view = NULL;
192f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(GetOmniboxViewForBrowser(browser(), &omnibox_view));
1935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  omnibox_view->SetUserText(base::ASCIIToUTF16("http://www.google.com/"));
194f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
195f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Take the focus away from the omnibox.
196f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(TapBrowserWindowCenter());
19758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_FALSE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX));
19858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_FALSE(omnibox_view->IsSelectAll());
199f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
200f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Tapping in the omnibox should take focus and select all text.
201f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  const gfx::Rect omnibox_bounds = BrowserView::GetBrowserViewForBrowser(
202f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      browser())->GetViewByID(VIEW_ID_OMNIBOX)->GetBoundsInScreen();
203f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  const gfx::Point tap_location = omnibox_bounds.CenterPoint();
204f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(Tap(tap_location, tap_location));
205f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX));
206f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_TRUE(omnibox_view->IsSelectAll());
207f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
208f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Tapping in another view should clear focus and the selection.
209f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(TapBrowserWindowCenter());
210f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_FALSE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX));
211f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_FALSE(omnibox_view->IsSelectAll());
212f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
213f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Tapping in the omnibox again should take focus and select all text again.
214f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(Tap(tap_location, tap_location));
215f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX));
216f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_TRUE(omnibox_view->IsSelectAll());
217f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
218f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Tapping another omnibox spot should keep focus and selection.
219f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  omnibox_view->SelectAll(false);
220f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  const gfx::Point tap2_location = omnibox_bounds.origin() +
221f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      gfx::Vector2d(omnibox_bounds.width() / 4, omnibox_bounds.height() / 4);
222f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(Tap(tap2_location, tap2_location));
223f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX));
224f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // We don't test if the all text is selected because it depends on whether or
225f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // not there was text under the tap, which appears to be flaky.
226f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
227f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Take the focus away and tap in the omnibox again, but drag a bit before
228f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // releasing.  We should focus the omnibox but not select all of its text.
229f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(TapBrowserWindowCenter());
230f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(Tap(tap_location, tap2_location));
231f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX));
232f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_FALSE(omnibox_view->IsSelectAll());
23358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
234a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
235a02191e04bc25c4935f804f2c080ae28663d096dBen MurdochIN_PROC_BROWSER_TEST_F(OmniboxViewViewsTest, SelectAllOnTabToFocus) {
236a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  OmniboxView* omnibox_view = NULL;
237a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  ASSERT_NO_FATAL_FAILURE(GetOmniboxViewForBrowser(browser(), &omnibox_view));
238a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  ui_test_utils::NavigateToURL(browser(), GURL("http://www.google.com/"));
239a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  // RevertAll after navigation to invalidate the selection range saved on blur.
240a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  omnibox_view->RevertAll();
241a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  EXPECT_FALSE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX));
242a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  EXPECT_FALSE(omnibox_view->IsSelectAll());
243a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
244a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  // Pressing tab to focus the omnibox should select all text.
245a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  while (!ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX)) {
246a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    ASSERT_TRUE(ui_test_utils::SendKeyPressSync(browser(), ui::VKEY_TAB,
247a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch                                                false, false, false, false));
248a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  }
249a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX));
250a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  EXPECT_TRUE(omnibox_view->IsSelectAll());
251a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch}
2520de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)
2530de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(OmniboxViewViewsTest, CloseOmniboxPopupOnTextDrag) {
2540de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  OmniboxView* omnibox_view = NULL;
2550de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(GetOmniboxViewForBrowser(browser(), &omnibox_view));
2560de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  OmniboxViewViews* omnibox_view_views =
2570de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)      static_cast<OmniboxViewViews*>(omnibox_view);
2580de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)
2590de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  // Populate suggestions for the omnibox popup.
2600de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  AutocompleteController* autocomplete_controller =
2610de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)      omnibox_view->model()->popup_model()->autocomplete_controller();
2620de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  AutocompleteResult& results = autocomplete_controller->result_;
2630de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  ACMatches matches;
2640de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  AutocompleteMatch match;
2650de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  match.destination_url = GURL("http://autocomplete-result/");
2660de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  match.allowed_to_be_default_match = true;
2670de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  match.type = AutocompleteMatchType::HISTORY_TITLE;
2680de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  match.relevance = 500;
2690de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  matches.push_back(match);
2700de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  match.destination_url = GURL("http://autocomplete-result2/");
2710de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  matches.push_back(match);
2720de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  results.AppendMatches(matches);
2730de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  results.SortAndCull(AutocompleteInput(), browser()->profile());
2740de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)
2750de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  // The omnibox popup should open with suggestions displayed.
2760de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  omnibox_view->model()->popup_model()->OnResultChanged();
2770de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  EXPECT_TRUE(omnibox_view->model()->popup_model()->IsOpen());
2780de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)
2790de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  // The omnibox text should be selected.
2800de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  EXPECT_TRUE(omnibox_view->IsSelectAll());
2810de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)
2820de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  // Simulate a mouse click before dragging the mouse.
2830de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  gfx::Point point(omnibox_view_views->x(), omnibox_view_views->y());
2840de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  ui::MouseEvent pressed(ui::ET_MOUSE_PRESSED, point, point,
2850de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)                         ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON);
2860de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  omnibox_view_views->OnMousePressed(pressed);
2870de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  EXPECT_TRUE(omnibox_view->model()->popup_model()->IsOpen());
2880de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)
2890de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  // Simulate a mouse drag of the omnibox text, and the omnibox should close.
2900de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  ui::MouseEvent dragged(ui::ET_MOUSE_DRAGGED, point, point,
2910de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)                         ui::EF_LEFT_MOUSE_BUTTON, 0);
2920de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  omnibox_view_views->OnMouseDragged(dragged);
2930de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)
2940de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  EXPECT_FALSE(omnibox_view->model()->popup_model()->IsOpen());
2950de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)}
2960de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)
2970de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(OmniboxViewViewsTest, BackgroundIsOpaque) {
2980de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  // The omnibox text should be rendered on an opaque background. Otherwise, we
2990de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  // can't use subpixel rendering.
3000de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  BrowserWindowTesting* window = browser()->window()->GetBrowserWindowTesting();
3010de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  ASSERT_TRUE(window);
3020de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  OmniboxViewViews* view = window->GetLocationBarView()->omnibox_view();
3030de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  ASSERT_TRUE(view);
3040de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)  EXPECT_FALSE(view->GetRenderText()->background_is_transparent());
3050de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)}
306cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
307cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Tests if executing a command hides touch editing handles.
308cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(OmniboxViewViewsTest,
309cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                       DeactivateTouchEditingOnExecuteCommand) {
310cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  CommandLine::ForCurrentProcess()->AppendSwitch(switches::kEnableTouchEditing);
311cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
312cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  OmniboxView* view = NULL;
313cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(GetOmniboxViewForBrowser(browser(), &view));
314cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  OmniboxViewViews* omnibox_view_views = static_cast<OmniboxViewViews*>(view);
315cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  views::TextfieldTestApi textfield_test_api(omnibox_view_views);
316cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
317cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Put a URL on the clipboard. It is written to the clipboard upon destruction
318cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // of the writer.
319cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  {
320cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    ui::ScopedClipboardWriter clipboard_writer(
321cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        ui::Clipboard::GetForCurrentThread(),
322cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        ui::CLIPBOARD_TYPE_COPY_PASTE);
323cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    clipboard_writer.WriteURL(base::ASCIIToUTF16("http://www.example.com/"));
324cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  }
325cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
326cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Tap to activate touch editing.
327cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  gfx::Point omnibox_center =
328cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      omnibox_view_views->GetBoundsInScreen().CenterPoint();
329cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  Tap(omnibox_center, omnibox_center);
330cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_TRUE(textfield_test_api.touch_selection_controller());
331cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
332cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Execute a command and check if it deactivate touch editing. Paste & Go is
333cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // chosen since it is specific to Omnibox and its execution wouldn't be
334cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // delgated to the base Textfield class.
335cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  omnibox_view_views->ExecuteCommand(IDS_PASTE_AND_GO, ui::EF_NONE);
336cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_FALSE(textfield_test_api.touch_selection_controller());
337cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
338f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
339f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(OmniboxViewViewsTest, FocusedTextInputClient) {
340f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
341f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  cmd_line->AppendSwitch(switches::kEnableTextInputFocusManager);
342f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
343f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  // TODO(yukishiino): The following call to FocusLocationBar is not necessary
344f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  // if the flag is enabled by default.  Remove the call once the transition to
345f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  // TextInputFocusManager completes.
346f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  chrome::FocusLocationBar(browser());
347f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  OmniboxView* view = NULL;
348f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(GetOmniboxViewForBrowser(browser(), &view));
349f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  OmniboxViewViews* omnibox_view_views = static_cast<OmniboxViewViews*>(view);
350f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  ui::TextInputFocusManager* text_input_focus_manager =
351f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      ui::TextInputFocusManager::GetInstance();
352f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  EXPECT_EQ(omnibox_view_views->GetTextInputClient(),
353f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)            text_input_focus_manager->GetFocusedTextInputClient());
354f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
355