14
14
* limitations under the License.
15
15
*/
16
16
17
+ import * as docready from '../../../../src/document-ready' ;
17
18
import { HighlightHandler , getHighlightParam } from '../highlight-handler' ;
18
19
import { Messaging , WindowPortEmulator } from '../messaging/messaging' ;
19
20
import { Services } from '../../../../src/services' ;
@@ -100,6 +101,7 @@ describes.realWin('HighlightHandler', {
100
101
} ,
101
102
} , env => {
102
103
let root = null ;
104
+ let docreadyCb = null ;
103
105
beforeEach ( ( ) => {
104
106
const { document} = env . win ;
105
107
root = document . createElement ( 'div' ) ;
@@ -110,6 +112,12 @@ describes.realWin('HighlightHandler', {
110
112
const div1 = document . createElement ( 'div' ) ;
111
113
div1 . textContent = 'highlighted text' ;
112
114
root . appendChild ( div1 ) ;
115
+
116
+ sandbox . stub ( docready , 'whenDocumentReady' ) . returns ( {
117
+ then : cb => {
118
+ docreadyCb = cb ;
119
+ } ,
120
+ } ) ;
113
121
} ) ;
114
122
115
123
it ( 'initialize with visibility=visible' , ( ) => {
@@ -125,6 +133,12 @@ describes.realWin('HighlightHandler', {
125
133
const handler = new HighlightHandler (
126
134
ampdoc , { sentences : [ 'amp' , 'highlight' ] } ) ;
127
135
136
+ // initHighlight_ is not called before document become ready.
137
+ expect ( handler . highlightedNodes_ ) . to . be . null ;
138
+ docreadyCb ( ) ;
139
+ // initHighlight_ was called in docreadyCb() and highlightedNodes_ is set.
140
+ expect ( handler . highlightedNodes_ ) . not . to . be . null ;
141
+
128
142
expect ( setScrollTop ) . to . be . calledOnce ;
129
143
expect ( setScrollTop . firstCall . args . length ) . to . equal ( 1 ) ;
130
144
@@ -173,6 +187,7 @@ describes.realWin('HighlightHandler', {
173
187
174
188
new HighlightHandler ( ampdoc ,
175
189
{ sentences : [ 'amp' , 'highlight' ] , skipRendering : true } ) ;
190
+ docreadyCb ( ) ;
176
191
177
192
expect ( scrollStub ) . not . to . be . called ;
178
193
@@ -202,6 +217,7 @@ describes.realWin('HighlightHandler', {
202
217
Services . viewerForDoc ( ampdoc ) , 'sendMessage' ) ;
203
218
204
219
new HighlightHandler ( ampdoc , { sentences : [ 'amp' , 'highlight' ] } ) ;
220
+ docreadyCb ( ) ;
205
221
206
222
expect ( scrollStub ) . not . to . be . called ;
207
223
@@ -230,6 +246,7 @@ describes.realWin('HighlightHandler', {
230
246
. returns ( VisibilityState . PRERENDER ) ;
231
247
232
248
new HighlightHandler ( ampdoc , { sentences : [ 'amp' , 'highlight' ] } ) ;
249
+ docreadyCb ( ) ;
233
250
234
251
expect ( setScrollTop ) . to . be . calledOnce ;
235
252
expect ( setScrollTop . firstCall . args . length ) . to . equal ( 1 ) ;
@@ -244,6 +261,7 @@ describes.realWin('HighlightHandler', {
244
261
245
262
it ( 'calcTopToCenterHighlightedNodes_ center elements' , ( ) => {
246
263
const handler = new HighlightHandler ( env . ampdoc , { sentences : [ 'amp' ] } ) ;
264
+ docreadyCb ( ) ;
247
265
expect ( handler . highlightedNodes_ ) . not . to . be . null ;
248
266
249
267
const viewport = Services . viewportForDoc ( env . ampdoc ) ;
@@ -259,6 +277,7 @@ describes.realWin('HighlightHandler', {
259
277
260
278
it ( 'calcTopToCenterHighlightedNodes_ too tall element' , ( ) => {
261
279
const handler = new HighlightHandler ( env . ampdoc , { sentences : [ 'amp' ] } ) ;
280
+ docreadyCb ( ) ;
262
281
expect ( handler . highlightedNodes_ ) . not . to . be . null ;
263
282
264
283
const viewport = Services . viewportForDoc ( env . ampdoc ) ;
@@ -276,6 +295,7 @@ describes.realWin('HighlightHandler', {
276
295
277
296
it ( 'mayAdjustTop_' , ( ) => {
278
297
const handler = new HighlightHandler ( env . ampdoc , { sentences : [ 'amp' ] } ) ;
298
+ docreadyCb ( ) ;
279
299
expect ( handler . highlightedNodes_ ) . not . to . be . null ;
280
300
281
301
// Set up an environment where calcTopToCenterHighlightedNodes_
0 commit comments