Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(186)

Side by Side Diff: third_party/WebKit/Source/core/editing/FrameCaretTest.cpp

Issue 2887303002: Blink caret only if selection has focus. (Closed)
Patch Set: add test Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/WebKit/Source/core/editing/FrameCaret.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/editing/FrameCaret.h" 5 #include "core/editing/FrameCaret.h"
6 6
7 #include "core/editing/EditingTestBase.h" 7 #include "core/editing/EditingTestBase.h"
8 #include "core/editing/FrameSelection.h" 8 #include "core/editing/FrameSelection.h"
9 #include "core/editing/commands/TypingCommand.h" 9 #include "core/editing/commands/TypingCommand.h"
10 #include "core/frame/FrameView.h" 10 #include "core/frame/FrameView.h"
11 #include "core/layout/LayoutTheme.h" 11 #include "core/layout/LayoutTheme.h"
12 #include "core/page/FocusController.h" 12 #include "core/page/FocusController.h"
13 #include "platform/LayoutTestSupport.h" 13 #include "platform/LayoutTestSupport.h"
14 #include "platform/scheduler/test/fake_web_task_runner.h" 14 #include "platform/scheduler/test/fake_web_task_runner.h"
15 15
16 namespace blink { 16 namespace blink {
17 17
18 class FrameCaretTest : public EditingTestBase { 18 class FrameCaretTest : public EditingTestBase {
19 public: 19 public:
20 FrameCaretTest() 20 FrameCaretTest()
21 : was_running_layout_test_(LayoutTestSupport::IsRunningLayoutTest()) { 21 : was_running_layout_test_(LayoutTestSupport::IsRunningLayoutTest()) {
22 // The caret blink timer doesn't work if isRunningLayoutTest() because 22 // The caret blink timer doesn't work if isRunningLayoutTest() because
23 // LayoutTheme::caretBlinkInterval() returns 0. 23 // LayoutTheme::caretBlinkInterval() returns 0.
24 LayoutTestSupport::SetIsRunningLayoutTest(false); 24 LayoutTestSupport::SetIsRunningLayoutTest(false);
25 } 25 }
26 ~FrameCaretTest() override { 26 ~FrameCaretTest() override {
27 LayoutTestSupport::SetIsRunningLayoutTest(was_running_layout_test_); 27 LayoutTestSupport::SetIsRunningLayoutTest(was_running_layout_test_);
28 } 28 }
29 29
30 bool ShouldBlinkCaret(const FrameCaret& caret) {
31 return caret.ShouldBlinkCaret();
32 }
33
30 private: 34 private:
31 const bool was_running_layout_test_; 35 const bool was_running_layout_test_;
32 }; 36 };
33 37
34 TEST_F(FrameCaretTest, BlinkAfterTyping) { 38 TEST_F(FrameCaretTest, BlinkAfterTyping) {
35 FrameCaret& caret = Selection().FrameCaretForTesting(); 39 FrameCaret& caret = Selection().FrameCaretForTesting();
36 RefPtr<scheduler::FakeWebTaskRunner> task_runner = 40 RefPtr<scheduler::FakeWebTaskRunner> task_runner =
37 AdoptRef(new scheduler::FakeWebTaskRunner); 41 AdoptRef(new scheduler::FakeWebTaskRunner);
38 task_runner->SetTime(0); 42 task_runner->SetTime(0);
39 caret.RecreateCaretBlinkTimerForTesting(task_runner.Get()); 43 caret.RecreateCaretBlinkTimerForTesting(task_runner.Get());
(...skipping 24 matching lines...) Expand all
64 GetDocument().View()->UpdateAllLifecyclePhases(); 68 GetDocument().View()->UpdateAllLifecyclePhases();
65 EXPECT_TRUE(caret.ShouldPaintCaretForTesting()) 69 EXPECT_TRUE(caret.ShouldPaintCaretForTesting())
66 << "The typing command reset the timer. The caret is still visible."; 70 << "The typing command reset the timer. The caret is still visible.";
67 71
68 task_runner->AdvanceTimeAndRun(1); 72 task_runner->AdvanceTimeAndRun(1);
69 GetDocument().View()->UpdateAllLifecyclePhases(); 73 GetDocument().View()->UpdateAllLifecyclePhases();
70 EXPECT_FALSE(caret.ShouldPaintCaretForTesting()) 74 EXPECT_FALSE(caret.ShouldPaintCaretForTesting())
71 << "The caret should blink after the typing command."; 75 << "The caret should blink after the typing command.";
72 } 76 }
73 77
78 TEST_F(FrameCaretTest, ShouldNotBlinkWhenSelectionLooseFocus) {
79 FrameCaret& caret = Selection().FrameCaretForTesting();
80 GetDocument().GetPage()->GetFocusController().SetActive(true);
81 GetDocument().GetPage()->GetFocusController().SetFocused(true);
82 GetDocument().body()->setInnerHTML(
83 "<div id='outer' tabindex='-1'>"
84 "<div id='input' contenteditable>foo</div>"
85 "</div>");
86 Element* input = GetDocument().QuerySelector("#input");
87 input->focus();
88 Element* outer = GetDocument().QuerySelector("#outer");
89 outer->focus();
90 GetDocument().View()->UpdateAllLifecyclePhases();
91 const SelectionInDOMTree& dom = Selection().GetSelectionInDOMTree();
yosin_UTC9 2017/05/19 06:12:21 nit: s/dom/selection/ It is "DOM Selection" inste
yoichio 2017/05/19 08:00:18 Done.
92 EXPECT_EQ(dom.Base(), Position(input, PositionAnchorType::kBeforeChildren));
93 EXPECT_FALSE(ShouldBlinkCaret(caret));
94 }
95
74 } // namespace blink 96 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/editing/FrameCaret.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698