author | Ting-Yu Lin <tlin@mozilla.com> |
Mon, 05 Oct 2015 16:52:29 +0800 | |
changeset 266187 | 4fa54b04cd609982a67d788faafd493041061780 |
parent 266186 | 13045de2414d2df6323281fe752c423f78ab523f |
child 266188 | f0865d36454c4c7b530fa8e3987b2798f79ab4ca |
push id | 66146 |
push user | tlin@mozilla.com |
push date | Tue, 06 Oct 2015 09:22:10 +0000 |
treeherder | mozilla-inbound@f0865d36454c [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | mtseng |
bugs | 1211365 |
milestone | 44.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/layout/base/gtest/TestAccessibleCaretManager.cpp +++ b/layout/base/gtest/TestAccessibleCaretManager.cpp @@ -325,9 +325,58 @@ TEST_F(AccessibleCaretManagerTester, Tes mManager.OnSelectionChanged(nullptr, nullptr, nsISelectionListener::NO_REASON); EXPECT_EQ(FirstCaretAppearance(), Appearance::None); mManager.OnScrollPositionChanged(); EXPECT_EQ(FirstCaretAppearance(), Appearance::None); } +TEST_F(AccessibleCaretManagerTester, TestScrollInSelectionMode) +{ + EXPECT_CALL(mManager, GetCaretMode()) + .WillRepeatedly(Return(CaretMode::Selection)); + + MockFunction<void(std::string aCheckPointName)> check; + { + InSequence dummy; + + // Initially, first caret is out of scrollport, and second caret is visible. + EXPECT_CALL(mManager.FirstCaret(), SetPosition(_, _)) + .WillRepeatedly(Return(PositionChangedResult::Invisible)); + EXPECT_CALL(mManager.SecondCaret(), SetPosition(_, _)) + .WillRepeatedly(Return(PositionChangedResult::Changed)); + + EXPECT_CALL(mManager, DispatchCaretStateChangedEvent( + CaretChangedReason::Updateposition)).Times(1); + EXPECT_CALL(check, Call("updatecarets")); + + EXPECT_CALL(mManager, DispatchCaretStateChangedEvent( + CaretChangedReason::Visibilitychange)).Times(1); + EXPECT_CALL(check, Call("scrollstart")); + + // After scroll ended, first caret is visible and second caret is out of + // scroll port. + EXPECT_CALL(mManager.FirstCaret(), SetPosition(_, _)) + .WillRepeatedly(Return(PositionChangedResult::Changed)); + EXPECT_CALL(mManager.SecondCaret(), SetPosition(_, _)) + .WillRepeatedly(Return(PositionChangedResult::Invisible)); + + EXPECT_CALL(mManager, DispatchCaretStateChangedEvent( + CaretChangedReason::Updateposition)).Times(1); + } + + mManager.UpdateCarets(); + EXPECT_EQ(FirstCaretAppearance(), Appearance::NormalNotShown); + EXPECT_EQ(SecondCaretAppearance(), Appearance::Normal); + check.Call("updatecarets"); + + mManager.OnScrollStart(); + EXPECT_EQ(FirstCaretAppearance(), Appearance::None); + EXPECT_EQ(SecondCaretAppearance(), Appearance::None); + check.Call("scrollstart"); + + mManager.OnScrollEnd(); + EXPECT_EQ(FirstCaretAppearance(), Appearance::Normal); + EXPECT_EQ(SecondCaretAppearance(), Appearance::NormalNotShown); +} + } // namespace mozilla