15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ash/ime/candidate_window_view.h" 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include <string> 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ash/ime/candidate_view.h" 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/strings/stringprintf.h" 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/views/test/views_test_base.h" 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/views/widget/widget.h" 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace ash { 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace ime { 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace { 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)const char* kSampleCandidate[] = { 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample Candidate 1", 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample Candidate 2", 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample Candidate 3" 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)const char* kSampleAnnotation[] = { 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample Annotation 1", 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample Annotation 2", 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample Annotation 3" 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)const char* kSampleDescriptionTitle[] = { 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample Description Title 1", 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample Description Title 2", 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample Description Title 3", 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)const char* kSampleDescriptionBody[] = { 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample Description Body 1", 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample Description Body 2", 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample Description Body 3", 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void InitCandidateWindow(size_t page_size, 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::CandidateWindow* candidate_window) { 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window->set_cursor_position(0); 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window->set_page_size(page_size); 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window->mutable_candidates()->clear(); 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window->set_orientation(ui::CandidateWindow::VERTICAL); 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void InitCandidateWindowWithCandidatesFilled( 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) size_t page_size, 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::CandidateWindow* candidate_window) { 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) InitCandidateWindow(page_size, candidate_window); 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (size_t i = 0; i < page_size; ++i) { 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::CandidateWindow::Entry entry; 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.value = base::UTF8ToUTF16(base::StringPrintf( 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "value %lld", static_cast<unsigned long long>(i))); 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.label = base::UTF8ToUTF16(base::StringPrintf( 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "%lld", static_cast<unsigned long long>(i))); 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window->mutable_candidates()->push_back(entry); 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class CandidateWindowViewTest : public views::ViewsTestBase { 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public: 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CandidateWindowViewTest() {} 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual ~CandidateWindowViewTest() {} 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) protected: 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void SetUp() { 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) views::ViewsTestBase::SetUp(); 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window_view_ = new CandidateWindowView(GetContext()); 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window_view_->InitWidget(); 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CandidateWindowView* candidate_window_view() { 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return candidate_window_view_; 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int selected_candidate_index_in_page() { 825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return candidate_window_view_->selected_candidate_index_in_page_; 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) size_t GetCandidatesSize() const { 865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return candidate_window_view_->candidate_views_.size(); 875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CandidateView* GetCandidateAt(size_t i) { 905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return candidate_window_view_->candidate_views_[i]; 915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void SelectCandidateAt(int index_in_page) { 945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window_view_->SelectCandidateAt(index_in_page); 955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void MaybeInitializeCandidateViews( 985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const ui::CandidateWindow& candidate_window) { 995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window_view_->MaybeInitializeCandidateViews(candidate_window); 1005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void ExpectLabels(const std::string& shortcut, 1035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& candidate, 1045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& annotation, 1055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const CandidateView* row) { 1065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(shortcut, base::UTF16ToUTF8(row->shortcut_label_->text())); 1075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(candidate, base::UTF16ToUTF8(row->candidate_label_->text())); 1085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(annotation, base::UTF16ToUTF8(row->annotation_label_->text())); 1095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private: 1125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // owned by |parent_|. 1135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CandidateWindowView* candidate_window_view_; 1145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(CandidateWindowViewTest); 1165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 1175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST_F(CandidateWindowViewTest, UpdateCandidatesTest_CursorVisibility) { 1195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Visible (by default) cursor. 1205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::CandidateWindow candidate_window; 1215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const int candidate_window_size = 9; 1225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) InitCandidateWindowWithCandidatesFilled(candidate_window_size, 1235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &candidate_window); 1245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window_view()->UpdateCandidates(candidate_window); 1255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(0, selected_candidate_index_in_page()); 1265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Invisible cursor. 1285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.set_is_cursor_visible(false); 1295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window_view()->UpdateCandidates(candidate_window); 1305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(-1, selected_candidate_index_in_page()); 1315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Move the cursor to the end. 1335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.set_cursor_position(candidate_window_size - 1); 1345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window_view()->UpdateCandidates(candidate_window); 1355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(-1, selected_candidate_index_in_page()); 1365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Change the cursor to visible. The cursor must be at the end. 1385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.set_is_cursor_visible(true); 1395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window_view()->UpdateCandidates(candidate_window); 1405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(candidate_window_size - 1, selected_candidate_index_in_page()); 1415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST_F(CandidateWindowViewTest, SelectCandidateAtTest) { 1445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Set 9 candidates. 1455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::CandidateWindow candidate_window_large; 1465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const int candidate_window_large_size = 9; 1475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) InitCandidateWindowWithCandidatesFilled(candidate_window_large_size, 1485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &candidate_window_large); 1495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window_large.set_cursor_position(candidate_window_large_size - 1); 1505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window_view()->UpdateCandidates(candidate_window_large); 1515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Select the last candidate. 1535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) SelectCandidateAt(candidate_window_large_size - 1); 1545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Reduce the number of candidates to 3. 1565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::CandidateWindow candidate_window_small; 1575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const int candidate_window_small_size = 3; 1585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) InitCandidateWindowWithCandidatesFilled(candidate_window_small_size, 1595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &candidate_window_small); 1605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window_small.set_cursor_position(candidate_window_small_size - 1); 1615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Make sure the test doesn't crash if the candidate window reduced 1625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // its size. (crbug.com/174163) 1635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window_view()->UpdateCandidates(candidate_window_small); 1645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) SelectCandidateAt(candidate_window_small_size - 1); 1655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST_F(CandidateWindowViewTest, ShortcutSettingTest) { 1685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const char* kEmptyLabel = ""; 1695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const char* kCustomizedLabel[] = { "a", "s", "d" }; 1705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const char* kExpectedHorizontalCustomizedLabel[] = { "a.", "s.", "d." }; 1715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) { 1735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) SCOPED_TRACE("candidate_views allocation test"); 1745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const size_t kMaxPageSize = 16; 1755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (size_t i = 1; i < kMaxPageSize; ++i) { 1765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::CandidateWindow candidate_window; 1775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) InitCandidateWindow(i, &candidate_window); 1785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window_view()->UpdateCandidates(candidate_window); 1795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(i, GetCandidatesSize()); 1805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) { 1835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) SCOPED_TRACE("Empty string for each labels expects empty labels(vertical)"); 1845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const size_t kPageSize = 3; 1855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::CandidateWindow candidate_window; 1865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) InitCandidateWindow(kPageSize, &candidate_window); 1875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.set_orientation(ui::CandidateWindow::VERTICAL); 1895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (size_t i = 0; i < kPageSize; ++i) { 1905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::CandidateWindow::Entry entry; 1915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.value = base::UTF8ToUTF16(kSampleCandidate[i]); 1925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.annotation = base::UTF8ToUTF16(kSampleAnnotation[i]); 1935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.description_title = base::UTF8ToUTF16(kSampleDescriptionTitle[i]); 1945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.description_body = base::UTF8ToUTF16(kSampleDescriptionBody[i]); 1955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.label = base::UTF8ToUTF16(kEmptyLabel); 1965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.mutable_candidates()->push_back(entry); 1975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window_view()->UpdateCandidates(candidate_window); 2005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_EQ(kPageSize, GetCandidatesSize()); 2025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (size_t i = 0; i < kPageSize; ++i) { 2035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ExpectLabels(kEmptyLabel, kSampleCandidate[i], kSampleAnnotation[i], 2045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GetCandidateAt(i)); 2055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 2065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 2075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) { 2085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) SCOPED_TRACE( 2095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Empty string for each labels expect empty labels(horizontal)"); 2105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const size_t kPageSize = 3; 2115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::CandidateWindow candidate_window; 2125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) InitCandidateWindow(kPageSize, &candidate_window); 2135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.set_orientation(ui::CandidateWindow::HORIZONTAL); 2155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (size_t i = 0; i < kPageSize; ++i) { 2165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::CandidateWindow::Entry entry; 2175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.value = base::UTF8ToUTF16(kSampleCandidate[i]); 2185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.annotation = base::UTF8ToUTF16(kSampleAnnotation[i]); 2195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.description_title = base::UTF8ToUTF16(kSampleDescriptionTitle[i]); 2205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.description_body = base::UTF8ToUTF16(kSampleDescriptionBody[i]); 2215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.label = base::UTF8ToUTF16(kEmptyLabel); 2225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.mutable_candidates()->push_back(entry); 2235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 2245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window_view()->UpdateCandidates(candidate_window); 2265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_EQ(kPageSize, GetCandidatesSize()); 2285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Confirm actual labels not containing ".". 2295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (size_t i = 0; i < kPageSize; ++i) { 2305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ExpectLabels(kEmptyLabel, kSampleCandidate[i], kSampleAnnotation[i], 2315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GetCandidateAt(i)); 2325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 2335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 2345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) { 2355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) SCOPED_TRACE("Vertical customized label case"); 2365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const size_t kPageSize = 3; 2375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::CandidateWindow candidate_window; 2385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) InitCandidateWindow(kPageSize, &candidate_window); 2395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.set_orientation(ui::CandidateWindow::VERTICAL); 2415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (size_t i = 0; i < kPageSize; ++i) { 2425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::CandidateWindow::Entry entry; 2435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.value = base::UTF8ToUTF16(kSampleCandidate[i]); 2445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.annotation = base::UTF8ToUTF16(kSampleAnnotation[i]); 2455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.description_title = base::UTF8ToUTF16(kSampleDescriptionTitle[i]); 2465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.description_body = base::UTF8ToUTF16(kSampleDescriptionBody[i]); 2475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.label = base::UTF8ToUTF16(kCustomizedLabel[i]); 2485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.mutable_candidates()->push_back(entry); 2495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 2505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window_view()->UpdateCandidates(candidate_window); 2525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_EQ(kPageSize, GetCandidatesSize()); 2545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Confirm actual labels not containing ".". 2555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (size_t i = 0; i < kPageSize; ++i) { 2565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ExpectLabels(kCustomizedLabel[i], 2575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) kSampleCandidate[i], 2585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) kSampleAnnotation[i], 2595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GetCandidateAt(i)); 2605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 2615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 2625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) { 2635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) SCOPED_TRACE("Horizontal customized label case"); 2645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const size_t kPageSize = 3; 2655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::CandidateWindow candidate_window; 2665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) InitCandidateWindow(kPageSize, &candidate_window); 2675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.set_orientation(ui::CandidateWindow::HORIZONTAL); 2695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (size_t i = 0; i < kPageSize; ++i) { 2705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::CandidateWindow::Entry entry; 2715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.value = base::UTF8ToUTF16(kSampleCandidate[i]); 2725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.annotation = base::UTF8ToUTF16(kSampleAnnotation[i]); 2735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.description_title = base::UTF8ToUTF16(kSampleDescriptionTitle[i]); 2745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.description_body = base::UTF8ToUTF16(kSampleDescriptionBody[i]); 2755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.label = base::UTF8ToUTF16(kCustomizedLabel[i]); 2765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.mutable_candidates()->push_back(entry); 2775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 2785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window_view()->UpdateCandidates(candidate_window); 2805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_EQ(kPageSize, GetCandidatesSize()); 2825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Confirm actual labels not containing ".". 2835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (size_t i = 0; i < kPageSize; ++i) { 2845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ExpectLabels(kExpectedHorizontalCustomizedLabel[i], 2855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) kSampleCandidate[i], 2865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) kSampleAnnotation[i], 2875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GetCandidateAt(i)); 2885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 2895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 2905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 2915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST_F(CandidateWindowViewTest, DoNotChangeRowHeightWithLabelSwitchTest) { 2935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const size_t kPageSize = 10; 2945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::CandidateWindow candidate_window; 2955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::CandidateWindow no_shortcut_candidate_window; 2965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16 kSampleCandidate1 = base::UTF8ToUTF16( 2985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample String 1"); 2995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16 kSampleCandidate2 = base::UTF8ToUTF16( 3005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "\xE3\x81\x82"); // multi byte string. 3015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16 kSampleCandidate3 = base::UTF8ToUTF16("....."); 3025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16 kSampleShortcut1 = base::UTF8ToUTF16("1"); 3045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16 kSampleShortcut2 = base::UTF8ToUTF16("b"); 3055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16 kSampleShortcut3 = base::UTF8ToUTF16("C"); 3065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16 kSampleAnnotation1 = base::UTF8ToUTF16( 3085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample Annotation 1"); 3095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16 kSampleAnnotation2 = base::UTF8ToUTF16( 3105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "\xE3\x81\x82"); // multi byte string. 3115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16 kSampleAnnotation3 = base::UTF8ToUTF16("......"); 3125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Create CandidateWindow object. 3145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) InitCandidateWindow(kPageSize, &candidate_window); 3155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.set_cursor_position(0); 3175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.set_page_size(3); 3185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.mutable_candidates()->clear(); 3195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.set_orientation(ui::CandidateWindow::VERTICAL); 3205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) no_shortcut_candidate_window.CopyFrom(candidate_window); 3215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::CandidateWindow::Entry entry; 3235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.value = kSampleCandidate1; 3245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.annotation = kSampleAnnotation1; 3255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.mutable_candidates()->push_back(entry); 3265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.label = kSampleShortcut1; 3275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) no_shortcut_candidate_window.mutable_candidates()->push_back(entry); 3285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.value = kSampleCandidate2; 3305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.annotation = kSampleAnnotation2; 3315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.mutable_candidates()->push_back(entry); 3325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.label = kSampleShortcut2; 3335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) no_shortcut_candidate_window.mutable_candidates()->push_back(entry); 3345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.value = kSampleCandidate3; 3365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.annotation = kSampleAnnotation3; 3375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.mutable_candidates()->push_back(entry); 3385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.label = kSampleShortcut3; 3395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) no_shortcut_candidate_window.mutable_candidates()->push_back(entry); 3405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int before_height = 0; 3425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Test for shortcut mode to no-shortcut mode. 3445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Initialize with a shortcut mode candidate window. 3455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MaybeInitializeCandidateViews(candidate_window); 3465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_EQ(3UL, GetCandidatesSize()); 3475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Check the selected index is invalidated. 3485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(-1, selected_candidate_index_in_page()); 3495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) before_height = 3505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GetCandidateAt(0)->GetContentsBounds().height(); 3515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Checks all entry have same row height. 3525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (size_t i = 1; i < GetCandidatesSize(); ++i) 3535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(before_height, GetCandidateAt(i)->GetContentsBounds().height()); 3545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Initialize with a no shortcut mode candidate window. 3565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MaybeInitializeCandidateViews(no_shortcut_candidate_window); 3575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_EQ(3UL, GetCandidatesSize()); 3585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Check the selected index is invalidated. 3595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(-1, selected_candidate_index_in_page()); 3605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(before_height, GetCandidateAt(0)->GetContentsBounds().height()); 3615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Checks all entry have same row height. 3625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (size_t i = 1; i < GetCandidatesSize(); ++i) 3635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(before_height, GetCandidateAt(i)->GetContentsBounds().height()); 3645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Test for no-shortcut mode to shortcut mode. 3665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Initialize with a no shortcut mode candidate window. 3675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MaybeInitializeCandidateViews(no_shortcut_candidate_window); 3685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_EQ(3UL, GetCandidatesSize()); 3695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Check the selected index is invalidated. 3705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(-1, selected_candidate_index_in_page()); 3715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) before_height = GetCandidateAt(0)->GetContentsBounds().height(); 3725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Checks all entry have same row height. 3735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (size_t i = 1; i < GetCandidatesSize(); ++i) 3745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(before_height, GetCandidateAt(i)->GetContentsBounds().height()); 3755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Initialize with a shortcut mode candidate window. 3775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) MaybeInitializeCandidateViews(candidate_window); 3785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_EQ(3UL, GetCandidatesSize()); 3795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Check the selected index is invalidated. 3805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(-1, selected_candidate_index_in_page()); 3815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(before_height, GetCandidateAt(0)->GetContentsBounds().height()); 3825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Checks all entry have same row height. 3835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (size_t i = 1; i < GetCandidatesSize(); ++i) 3845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(before_height, GetCandidateAt(i)->GetContentsBounds().height()); 3855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 3865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace ime 3885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace ash 389