- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / gtk / omnibox / omnibox_view_gtk_unittest.cc
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.
4
5 #include "chrome/browser/ui/gtk/omnibox/omnibox_view_gtk.h"
6
7 #include <gtk/gtk.h>
8
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"
19
20 namespace {
21 class OmniboxEditControllerMock : public OmniboxEditController {
22  public:
23   OmniboxEditControllerMock() : OmniboxEditController(NULL) {}
24   virtual ~OmniboxEditControllerMock() {}
25
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*());
33 };
34 }  // namespace
35
36 class OmniboxViewGtkTest : public PlatformTest {
37  public:
38   OmniboxViewGtkTest() : file_thread_(content::BrowserThread::UI) {}
39
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_));
47     view_->Init();
48     text_buffer_ = view_->text_buffer_;
49   }
50
51   virtual void TearDown() {
52     gtk_widget_destroy(window_);
53     PlatformTest::TearDown();
54   }
55
56   void SetPasteClipboardRequested(bool b) {
57     view_->paste_clipboard_requested_ = b;
58   }
59
60   scoped_ptr<OmniboxEditControllerMock> controller_;
61   scoped_ptr<TestingProfile> profile_;
62   GtkTextBuffer* text_buffer_;
63   scoped_ptr<OmniboxViewGtk> view_;
64   GtkWidget* window_;
65   content::TestBrowserThread file_thread_;
66
67  private:
68   DISALLOW_COPY_AND_ASSIGN(OmniboxViewGtkTest);
69 };
70
71 TEST_F(OmniboxViewGtkTest, InsertText) {
72   GtkTextIter i;
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, UTF16ToUTF8(view_->GetText()));
78 }
79
80 TEST_F(OmniboxViewGtkTest, PasteText) {
81   GtkTextIter i;
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));
88
89   ASSERT_EQ(expected, UTF16ToUTF8(view_->GetText()));
90 }