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

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

Issue 2701983002: Implement complete lifecycle transition for IdleSpellCheckCallback (Closed)
Patch Set: Add lifecycle transition unit tests Created 3 years, 10 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
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "core/editing/spellcheck/IdleSpellCheckCallback.h"
6
7 #include "core/editing/spellcheck/SpellCheckTestBase.h"
8 #include "core/editing/spellcheck/SpellChecker.h"
9 #include "core/frame/LocalFrame.h"
10 #include "platform/RuntimeEnabledFeatures.h"
11
12 namespace blink {
13
14 using State = IdleSpellCheckCallback::State;
15
16 class IdleSpellCheckCallbackTest : public SpellCheckTestBase {
17 protected:
18 IdleSpellCheckCallback& idleChecker() {
19 return frame().idleSpellCheckCallback();
20 }
21
22 void SetUp() override {
23 SpellCheckTestBase::SetUp();
24 idleChecker().documentAttached(frame().document());
25 }
26
27 void transitTo(State state) {
28 switch (state) {
29 case State::kInactive:
30 idleChecker().deactivate();
31 break;
32 case State::kHotModeRequested:
33 idleChecker().setNeedsInvocation();
34 break;
35 case State::kColdModeTimerStarted:
36 break;
37 case State::kColdModeRequested:
38 idleChecker().skipColdModeTimerForTesting();
39 break;
40 default:
41 NOTREACHED();
42 }
43 }
44 };
45
46 // Test cases for lifecycle state transitions.
47
48 TEST_F(IdleSpellCheckCallbackTest, Initialization) {
49 EXPECT_EQ(State::kColdModeTimerStarted, idleChecker().state());
50 }
51
52 TEST_F(IdleSpellCheckCallbackTest, RequestWhenInactive) {
53 transitTo(State::kInactive);
54 idleChecker().setNeedsInvocation();
55 EXPECT_EQ(State::kHotModeRequested, idleChecker().state());
56 EXPECT_NE(-1, idleChecker().idleCallbackHandle());
57 }
58
59 TEST_F(IdleSpellCheckCallbackTest, RequestWhenHotModeRequested) {
60 transitTo(State::kHotModeRequested);
61 int handle = idleChecker().idleCallbackHandle();
62 idleChecker().setNeedsInvocation();
63 EXPECT_EQ(State::kHotModeRequested, idleChecker().state());
64 EXPECT_EQ(handle, idleChecker().idleCallbackHandle());
65 EXPECT_NE(-1, idleChecker().idleCallbackHandle());
66 }
67
68 TEST_F(IdleSpellCheckCallbackTest, RequestWhenColdModeTimerStarted) {
69 transitTo(State::kColdModeTimerStarted);
70 idleChecker().setNeedsInvocation();
71 EXPECT_EQ(State::kHotModeRequested, idleChecker().state());
72 EXPECT_NE(-1, idleChecker().idleCallbackHandle());
73 }
74
75 TEST_F(IdleSpellCheckCallbackTest, RequestWhenColdModeRequested) {
76 transitTo(State::kColdModeRequested);
77 int handle = idleChecker().idleCallbackHandle();
78 idleChecker().setNeedsInvocation();
79 EXPECT_EQ(State::kHotModeRequested, idleChecker().state());
80 EXPECT_EQ(handle, idleChecker().idleCallbackHandle());
81 EXPECT_NE(-1, idleChecker().idleCallbackHandle());
82 }
83
84 TEST_F(IdleSpellCheckCallbackTest, HotModeTransitToColdMode) {
85 transitTo(State::kHotModeRequested);
86 idleChecker().forceInvocationForTesting();
87 EXPECT_EQ(State::kColdModeTimerStarted, idleChecker().state());
88 }
89
90 TEST_F(IdleSpellCheckCallbackTest, ColdModeTimerStartedToRequested) {
91 transitTo(State::kColdModeTimerStarted);
92 idleChecker().skipColdModeTimerForTesting();
93 EXPECT_EQ(State::kColdModeRequested, idleChecker().state());
94 EXPECT_NE(-1, idleChecker().idleCallbackHandle());
95 }
96
97 TEST_F(IdleSpellCheckCallbackTest, ColdModeStayAtColdMode) {
98 transitTo(State::kColdModeRequested);
99 idleChecker().setNeedsMoreColdModeInvocationForTesting();
100 idleChecker().forceInvocationForTesting();
101 EXPECT_EQ(State::kColdModeTimerStarted, idleChecker().state());
102 }
103
104 TEST_F(IdleSpellCheckCallbackTest, ColdModeToInactive) {
105 transitTo(State::kColdModeRequested);
106 idleChecker().forceInvocationForTesting();
107 EXPECT_EQ(State::kInactive, idleChecker().state());
108 }
109
110 TEST_F(IdleSpellCheckCallbackTest, DetachWhenInactive) {
111 transitTo(State::kInactive);
112 document().shutdown();
113 EXPECT_EQ(State::kInactive, idleChecker().state());
114 }
115
116 TEST_F(IdleSpellCheckCallbackTest, DetachWhenHotModeRequested) {
117 transitTo(State::kHotModeRequested);
118 document().shutdown();
119 EXPECT_EQ(State::kInactive, idleChecker().state());
120 }
121
122 TEST_F(IdleSpellCheckCallbackTest, DetachWhenColdModeTimerStarted) {
123 transitTo(State::kColdModeTimerStarted);
124 document().shutdown();
125 EXPECT_EQ(State::kInactive, idleChecker().state());
126 }
127
128 TEST_F(IdleSpellCheckCallbackTest, DetachWhenColdModeRequested) {
129 transitTo(State::kColdModeRequested);
130 document().shutdown();
131 EXPECT_EQ(State::kInactive, idleChecker().state());
132 }
133
134 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698