| Index: chrome/browser/chromeos/input_method/candidate_window_view_unittest.cc
|
| diff --git a/chrome/browser/chromeos/input_method/candidate_window_view_unittest.cc b/chrome/browser/chromeos/input_method/candidate_window_view_unittest.cc
|
| index dbd8915f487313616eeb0132964fc7d5cdca16e9..f63d7d6d1fc35927755f7629610c36fc6ef93e50 100644
|
| --- a/chrome/browser/chromeos/input_method/candidate_window_view_unittest.cc
|
| +++ b/chrome/browser/chromeos/input_method/candidate_window_view_unittest.cc
|
| @@ -63,7 +63,41 @@ void InitCandidateWindowWithCandidatesFilled(
|
| } // namespace
|
|
|
| class CandidateWindowViewTest : public views::ViewsTestBase {
|
| + public:
|
| + CandidateWindowViewTest() {}
|
| + virtual ~CandidateWindowViewTest() {}
|
| +
|
| protected:
|
| + virtual void SetUp() {
|
| + views::ViewsTestBase::SetUp();
|
| + candidate_window_view_ = new CandidateWindowView(GetContext());
|
| + candidate_window_view_->InitWidget();
|
| + }
|
| +
|
| + CandidateWindowView* candidate_window_view() {
|
| + return candidate_window_view_;
|
| + }
|
| +
|
| + int selected_candidate_index_in_page() {
|
| + return candidate_window_view_->selected_candidate_index_in_page_;
|
| + }
|
| +
|
| + size_t GetCandidatesSize() const {
|
| + return candidate_window_view_->candidate_views_.size();
|
| + }
|
| +
|
| + CandidateView* GetCandidateAt(size_t i) {
|
| + return candidate_window_view_->candidate_views_[i];
|
| + }
|
| +
|
| + void SelectCandidateAt(int index_in_page) {
|
| + candidate_window_view_->SelectCandidateAt(index_in_page);
|
| + }
|
| +
|
| + void MaybeInitializeCandidateViews(const CandidateWindow& candidate_window) {
|
| + candidate_window_view_->MaybeInitializeCandidateViews(candidate_window);
|
| + }
|
| +
|
| void ExpectLabels(const std::string& shortcut,
|
| const std::string& candidate,
|
| const std::string& annotation,
|
| @@ -72,61 +106,50 @@ class CandidateWindowViewTest : public views::ViewsTestBase {
|
| EXPECT_EQ(candidate, base::UTF16ToUTF8(row->candidate_label_->text()));
|
| EXPECT_EQ(annotation, base::UTF16ToUTF8(row->annotation_label_->text()));
|
| }
|
| -};
|
|
|
| -TEST_F(CandidateWindowViewTest, UpdateCandidatesTest_CursorVisibility) {
|
| - views::Widget* widget = new views::Widget;
|
| - views::Widget::InitParams params =
|
| - CreateParams(views::Widget::InitParams::TYPE_WINDOW);
|
| - widget->Init(params);
|
| + private:
|
| + // owned by |parent_|.
|
| + CandidateWindowView* candidate_window_view_;
|
|
|
| - CandidateWindowView candidate_window_view(widget);
|
| - candidate_window_view.Init();
|
| + DISALLOW_COPY_AND_ASSIGN(CandidateWindowViewTest);
|
| +};
|
|
|
| +TEST_F(CandidateWindowViewTest, UpdateCandidatesTest_CursorVisibility) {
|
| // Visible (by default) cursor.
|
| CandidateWindow candidate_window;
|
| const int candidate_window_size = 9;
|
| InitCandidateWindowWithCandidatesFilled(candidate_window_size,
|
| &candidate_window);
|
| - candidate_window_view.UpdateCandidates(candidate_window);
|
| - EXPECT_EQ(0, candidate_window_view.selected_candidate_index_in_page_);
|
| + candidate_window_view()->UpdateCandidates(candidate_window);
|
| + EXPECT_EQ(0, selected_candidate_index_in_page());
|
|
|
| // Invisible cursor.
|
| candidate_window.set_is_cursor_visible(false);
|
| - candidate_window_view.UpdateCandidates(candidate_window);
|
| - EXPECT_EQ(-1, candidate_window_view.selected_candidate_index_in_page_);
|
| + candidate_window_view()->UpdateCandidates(candidate_window);
|
| + EXPECT_EQ(-1, selected_candidate_index_in_page());
|
|
|
| // Move the cursor to the end.
|
| candidate_window.set_cursor_position(candidate_window_size - 1);
|
| - candidate_window_view.UpdateCandidates(candidate_window);
|
| - EXPECT_EQ(-1, candidate_window_view.selected_candidate_index_in_page_);
|
| + candidate_window_view()->UpdateCandidates(candidate_window);
|
| + EXPECT_EQ(-1, selected_candidate_index_in_page());
|
|
|
| // Change the cursor to visible. The cursor must be at the end.
|
| candidate_window.set_is_cursor_visible(true);
|
| - candidate_window_view.UpdateCandidates(candidate_window);
|
| - EXPECT_EQ(candidate_window_size - 1,
|
| - candidate_window_view.selected_candidate_index_in_page_);
|
| + candidate_window_view()->UpdateCandidates(candidate_window);
|
| + EXPECT_EQ(candidate_window_size - 1, selected_candidate_index_in_page());
|
| }
|
|
|
| TEST_F(CandidateWindowViewTest, SelectCandidateAtTest) {
|
| - views::Widget* widget = new views::Widget;
|
| - views::Widget::InitParams params =
|
| - CreateParams(views::Widget::InitParams::TYPE_WINDOW);
|
| - widget->Init(params);
|
| -
|
| - CandidateWindowView candidate_window_view(widget);
|
| - candidate_window_view.Init();
|
| -
|
| // Set 9 candidates.
|
| CandidateWindow candidate_window_large;
|
| const int candidate_window_large_size = 9;
|
| InitCandidateWindowWithCandidatesFilled(candidate_window_large_size,
|
| &candidate_window_large);
|
| candidate_window_large.set_cursor_position(candidate_window_large_size - 1);
|
| - candidate_window_view.UpdateCandidates(candidate_window_large);
|
| + candidate_window_view()->UpdateCandidates(candidate_window_large);
|
|
|
| // Select the last candidate.
|
| - candidate_window_view.SelectCandidateAt(candidate_window_large_size - 1);
|
| + SelectCandidateAt(candidate_window_large_size - 1);
|
|
|
| // Reduce the number of candidates to 3.
|
| CandidateWindow candidate_window_small;
|
| @@ -136,8 +159,8 @@ TEST_F(CandidateWindowViewTest, SelectCandidateAtTest) {
|
| candidate_window_small.set_cursor_position(candidate_window_small_size - 1);
|
| // Make sure the test doesn't crash if the candidate window reduced
|
| // its size. (crbug.com/174163)
|
| - candidate_window_view.UpdateCandidates(candidate_window_small);
|
| - candidate_window_view.SelectCandidateAt(candidate_window_small_size - 1);
|
| + candidate_window_view()->UpdateCandidates(candidate_window_small);
|
| + SelectCandidateAt(candidate_window_small_size - 1);
|
| }
|
|
|
| TEST_F(CandidateWindowViewTest, ShortcutSettingTest) {
|
| @@ -145,22 +168,14 @@ TEST_F(CandidateWindowViewTest, ShortcutSettingTest) {
|
| const char* kCustomizedLabel[] = { "a", "s", "d" };
|
| const char* kExpectedHorizontalCustomizedLabel[] = { "a.", "s.", "d." };
|
|
|
| - views::Widget* widget = new views::Widget;
|
| - views::Widget::InitParams params =
|
| - CreateParams(views::Widget::InitParams::TYPE_WINDOW);
|
| - widget->Init(params);
|
| -
|
| - CandidateWindowView candidate_window_view(widget);
|
| - candidate_window_view.Init();
|
| -
|
| {
|
| SCOPED_TRACE("candidate_views allocation test");
|
| const size_t kMaxPageSize = 16;
|
| for (size_t i = 1; i < kMaxPageSize; ++i) {
|
| CandidateWindow candidate_window;
|
| InitCandidateWindow(i, &candidate_window);
|
| - candidate_window_view.UpdateCandidates(candidate_window);
|
| - EXPECT_EQ(i, candidate_window_view.candidate_views_.size());
|
| + candidate_window_view()->UpdateCandidates(candidate_window);
|
| + EXPECT_EQ(i, GetCandidatesSize());
|
| }
|
| }
|
| {
|
| @@ -180,12 +195,12 @@ TEST_F(CandidateWindowViewTest, ShortcutSettingTest) {
|
| candidate_window.mutable_candidates()->push_back(entry);
|
| }
|
|
|
| - candidate_window_view.UpdateCandidates(candidate_window);
|
| + candidate_window_view()->UpdateCandidates(candidate_window);
|
|
|
| - ASSERT_EQ(kPageSize, candidate_window_view.candidate_views_.size());
|
| + ASSERT_EQ(kPageSize, GetCandidatesSize());
|
| for (size_t i = 0; i < kPageSize; ++i) {
|
| ExpectLabels(kEmptyLabel, kSampleCandidate[i], kSampleAnnotation[i],
|
| - candidate_window_view.candidate_views_[i]);
|
| + GetCandidateAt(i));
|
| }
|
| }
|
| {
|
| @@ -206,13 +221,13 @@ TEST_F(CandidateWindowViewTest, ShortcutSettingTest) {
|
| candidate_window.mutable_candidates()->push_back(entry);
|
| }
|
|
|
| - candidate_window_view.UpdateCandidates(candidate_window);
|
| + candidate_window_view()->UpdateCandidates(candidate_window);
|
|
|
| - ASSERT_EQ(kPageSize, candidate_window_view.candidate_views_.size());
|
| + ASSERT_EQ(kPageSize, GetCandidatesSize());
|
| // Confirm actual labels not containing ".".
|
| for (size_t i = 0; i < kPageSize; ++i) {
|
| ExpectLabels(kEmptyLabel, kSampleCandidate[i], kSampleAnnotation[i],
|
| - candidate_window_view.candidate_views_[i]);
|
| + GetCandidateAt(i));
|
| }
|
| }
|
| {
|
| @@ -232,15 +247,15 @@ TEST_F(CandidateWindowViewTest, ShortcutSettingTest) {
|
| candidate_window.mutable_candidates()->push_back(entry);
|
| }
|
|
|
| - candidate_window_view.UpdateCandidates(candidate_window);
|
| + candidate_window_view()->UpdateCandidates(candidate_window);
|
|
|
| - ASSERT_EQ(kPageSize, candidate_window_view.candidate_views_.size());
|
| + ASSERT_EQ(kPageSize, GetCandidatesSize());
|
| // Confirm actual labels not containing ".".
|
| for (size_t i = 0; i < kPageSize; ++i) {
|
| ExpectLabels(kCustomizedLabel[i],
|
| kSampleCandidate[i],
|
| kSampleAnnotation[i],
|
| - candidate_window_view.candidate_views_[i]);
|
| + GetCandidateAt(i));
|
| }
|
| }
|
| {
|
| @@ -260,20 +275,17 @@ TEST_F(CandidateWindowViewTest, ShortcutSettingTest) {
|
| candidate_window.mutable_candidates()->push_back(entry);
|
| }
|
|
|
| - candidate_window_view.UpdateCandidates(candidate_window);
|
| + candidate_window_view()->UpdateCandidates(candidate_window);
|
|
|
| - ASSERT_EQ(kPageSize, candidate_window_view.candidate_views_.size());
|
| + ASSERT_EQ(kPageSize, GetCandidatesSize());
|
| // Confirm actual labels not containing ".".
|
| for (size_t i = 0; i < kPageSize; ++i) {
|
| ExpectLabels(kExpectedHorizontalCustomizedLabel[i],
|
| kSampleCandidate[i],
|
| kSampleAnnotation[i],
|
| - candidate_window_view.candidate_views_[i]);
|
| + GetCandidateAt(i));
|
| }
|
| }
|
| -
|
| - // We should call CloseNow method, otherwise this test will leak memory.
|
| - widget->CloseNow();
|
| }
|
|
|
| TEST_F(CandidateWindowViewTest, DoNotChangeRowHeightWithLabelSwitchTest) {
|
| @@ -293,17 +305,6 @@ TEST_F(CandidateWindowViewTest, DoNotChangeRowHeightWithLabelSwitchTest) {
|
| const char kSampleAnnotation2[] = "\xE3\x81\x82"; // multi byte string.
|
| const char kSampleAnnotation3[] = "......";
|
|
|
| - // For testing, we have to prepare empty widget.
|
| - // We should NOT manually free widget by default, otherwise double free will
|
| - // be occurred. So, we should instantiate widget class with "new" operation.
|
| - views::Widget* widget = new views::Widget;
|
| - views::Widget::InitParams params =
|
| - CreateParams(views::Widget::InitParams::TYPE_WINDOW);
|
| - widget->Init(params);
|
| -
|
| - CandidateWindowView candidate_window_view(widget);
|
| - candidate_window_view.Init();
|
| -
|
| // Create CandidateWindow object.
|
| InitCandidateWindow(kPageSize, &candidate_window);
|
|
|
| @@ -336,64 +337,46 @@ TEST_F(CandidateWindowViewTest, DoNotChangeRowHeightWithLabelSwitchTest) {
|
|
|
| // Test for shortcut mode to no-shortcut mode.
|
| // Initialize with a shortcut mode candidate window.
|
| - candidate_window_view.MaybeInitializeCandidateViews(candidate_window);
|
| - ASSERT_EQ(3UL, candidate_window_view.candidate_views_.size());
|
| + MaybeInitializeCandidateViews(candidate_window);
|
| + ASSERT_EQ(3UL, GetCandidatesSize());
|
| // Check the selected index is invalidated.
|
| - EXPECT_EQ(-1, candidate_window_view.selected_candidate_index_in_page_);
|
| + EXPECT_EQ(-1, selected_candidate_index_in_page());
|
| before_height =
|
| - candidate_window_view.candidate_views_[0]->GetContentsBounds().height();
|
| + GetCandidateAt(0)->GetContentsBounds().height();
|
| // Checks all entry have same row height.
|
| - for (size_t i = 1; i < candidate_window_view.candidate_views_.size(); ++i) {
|
| - const CandidateView* view = candidate_window_view.candidate_views_[i];
|
| - EXPECT_EQ(before_height, view->GetContentsBounds().height());
|
| - }
|
| + for (size_t i = 1; i < GetCandidatesSize(); ++i)
|
| + EXPECT_EQ(before_height, GetCandidateAt(i)->GetContentsBounds().height());
|
|
|
| // Initialize with a no shortcut mode candidate window.
|
| - candidate_window_view.MaybeInitializeCandidateViews(
|
| - no_shortcut_candidate_window);
|
| - ASSERT_EQ(3UL, candidate_window_view.candidate_views_.size());
|
| + MaybeInitializeCandidateViews(no_shortcut_candidate_window);
|
| + ASSERT_EQ(3UL, GetCandidatesSize());
|
| // Check the selected index is invalidated.
|
| - EXPECT_EQ(-1, candidate_window_view.selected_candidate_index_in_page_);
|
| - EXPECT_EQ(before_height,
|
| - candidate_window_view.candidate_views_[0]->GetContentsBounds()
|
| - .height());
|
| + EXPECT_EQ(-1, selected_candidate_index_in_page());
|
| + EXPECT_EQ(before_height, GetCandidateAt(0)->GetContentsBounds().height());
|
| // Checks all entry have same row height.
|
| - for (size_t i = 1; i < candidate_window_view.candidate_views_.size(); ++i) {
|
| - const CandidateView* view = candidate_window_view.candidate_views_[i];
|
| - EXPECT_EQ(before_height, view->GetContentsBounds().height());
|
| - }
|
| + for (size_t i = 1; i < GetCandidatesSize(); ++i)
|
| + EXPECT_EQ(before_height, GetCandidateAt(i)->GetContentsBounds().height());
|
|
|
| // Test for no-shortcut mode to shortcut mode.
|
| // Initialize with a no shortcut mode candidate window.
|
| - candidate_window_view.MaybeInitializeCandidateViews(
|
| - no_shortcut_candidate_window);
|
| - ASSERT_EQ(3UL, candidate_window_view.candidate_views_.size());
|
| + MaybeInitializeCandidateViews(no_shortcut_candidate_window);
|
| + ASSERT_EQ(3UL, GetCandidatesSize());
|
| // Check the selected index is invalidated.
|
| - EXPECT_EQ(-1, candidate_window_view.selected_candidate_index_in_page_);
|
| - before_height =
|
| - candidate_window_view.candidate_views_[0]->GetContentsBounds().height();
|
| + EXPECT_EQ(-1, selected_candidate_index_in_page());
|
| + before_height = GetCandidateAt(0)->GetContentsBounds().height();
|
| // Checks all entry have same row height.
|
| - for (size_t i = 1; i < candidate_window_view.candidate_views_.size(); ++i) {
|
| - const CandidateView* view = candidate_window_view.candidate_views_[i];
|
| - EXPECT_EQ(before_height, view->GetContentsBounds().height());
|
| - }
|
| + for (size_t i = 1; i < GetCandidatesSize(); ++i)
|
| + EXPECT_EQ(before_height, GetCandidateAt(i)->GetContentsBounds().height());
|
|
|
| // Initialize with a shortcut mode candidate window.
|
| - candidate_window_view.MaybeInitializeCandidateViews(candidate_window);
|
| - ASSERT_EQ(3UL, candidate_window_view.candidate_views_.size());
|
| + MaybeInitializeCandidateViews(candidate_window);
|
| + ASSERT_EQ(3UL, GetCandidatesSize());
|
| // Check the selected index is invalidated.
|
| - EXPECT_EQ(-1, candidate_window_view.selected_candidate_index_in_page_);
|
| - EXPECT_EQ(before_height,
|
| - candidate_window_view.candidate_views_[0]->GetContentsBounds()
|
| - .height());
|
| + EXPECT_EQ(-1, selected_candidate_index_in_page());
|
| + EXPECT_EQ(before_height, GetCandidateAt(0)->GetContentsBounds().height());
|
| // Checks all entry have same row height.
|
| - for (size_t i = 1; i < candidate_window_view.candidate_views_.size(); ++i) {
|
| - const CandidateView* view = candidate_window_view.candidate_views_[i];
|
| - EXPECT_EQ(before_height, view->GetContentsBounds().height());
|
| - }
|
| -
|
| - // We should call CloseNow method, otherwise this test will leak memory.
|
| - widget->CloseNow();
|
| + for (size_t i = 1; i < GetCandidatesSize(); ++i)
|
| + EXPECT_EQ(before_height, GetCandidateAt(i)->GetContentsBounds().height());
|
| }
|
| } // namespace input_method
|
| } // namespace chromeos
|
|
|