1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/ui/gtk/omnibox/omnibox_view_gtk.h"
9 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/browser/autocomplete/autocomplete_match.h"
11 #include "chrome/browser/ui/browser.h"
12 #include "chrome/browser/ui/omnibox/omnibox_edit_controller.h"
13 #include "chrome/test/base/testing_profile.h"
14 #include "content/public/test/test_browser_thread.h"
15 #include "testing/gmock/include/gmock/gmock.h"
16 #include "testing/platform_test.h"
17 #include "ui/base/gtk/gtk_hig_constants.h"
18 #include "ui/gfx/image/image.h"
21 class OmniboxEditControllerMock
: public OmniboxEditController
{
23 OmniboxEditControllerMock() : OmniboxEditController(NULL
) {}
24 virtual ~OmniboxEditControllerMock() {}
26 MOCK_METHOD1(Update
, void(const content::WebContents
* contents
));
27 MOCK_METHOD0(OnChanged
, void());
28 MOCK_METHOD0(OnSetFocus
, void());
29 MOCK_METHOD0(GetInstant
, InstantController
*());
30 MOCK_METHOD0(GetWebContents
, content::WebContents
*());
31 MOCK_METHOD0(GetToolbarModel
, ToolbarModel
*());
32 MOCK_CONST_METHOD0(GetToolbarModel
, ToolbarModel
*());
36 class OmniboxViewGtkTest
: public PlatformTest
{
38 OmniboxViewGtkTest() : file_thread_(content::BrowserThread::UI
) {}
40 virtual void SetUp() {
41 PlatformTest::SetUp();
42 profile_
.reset(new TestingProfile
);
43 window_
= gtk_window_new(GTK_WINDOW_POPUP
);
44 controller_
.reset(new OmniboxEditControllerMock
);
45 view_
.reset(new OmniboxViewGtk(controller_
.get(), NULL
, profile_
.get(),
46 NULL
, false, window_
));
48 text_buffer_
= view_
->text_buffer_
;
51 virtual void TearDown() {
52 gtk_widget_destroy(window_
);
53 PlatformTest::TearDown();
56 void SetPasteClipboardRequested(bool b
) {
57 view_
->paste_clipboard_requested_
= b
;
60 scoped_ptr
<OmniboxEditControllerMock
> controller_
;
61 scoped_ptr
<TestingProfile
> profile_
;
62 GtkTextBuffer
* text_buffer_
;
63 scoped_ptr
<OmniboxViewGtk
> view_
;
65 content::TestBrowserThread file_thread_
;
68 DISALLOW_COPY_AND_ASSIGN(OmniboxViewGtkTest
);
71 TEST_F(OmniboxViewGtkTest
, InsertText
) {
73 const char input
[] = " hello, world ";
74 const std::string expected
= input
;
75 gtk_text_buffer_get_iter_at_offset(text_buffer_
, &i
, 0);
76 gtk_text_buffer_insert(text_buffer_
, &i
, input
, strlen(input
));
77 ASSERT_EQ(expected
, base::UTF16ToUTF8(view_
->GetText()));
80 TEST_F(OmniboxViewGtkTest
, PasteText
) {
82 const char input
[] = " hello, world ";
83 const std::string expected
= "hello, world";
84 SetPasteClipboardRequested(true);
85 view_
->OnBeforePossibleChange();
86 gtk_text_buffer_get_iter_at_offset(text_buffer_
, &i
, 0);
87 gtk_text_buffer_insert(text_buffer_
, &i
, input
, strlen(input
));
89 ASSERT_EQ(expected
, base::UTF16ToUTF8(view_
->GetText()));