webfontloader 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +9 -0
- data/Gemfile +2 -8
- data/README.md +31 -32
- data/Rakefile +2 -33
- data/docs/EVENTS.md +10 -1
- data/docs/MODULES.md +4 -3
- data/lib/webfontloader.rb +1 -1
- data/spec/ascender/ascenderscript_spec.js +43 -0
- data/spec/core/cssclassname_spec.js +42 -0
- data/spec/core/cssfontfamilyname_spec.js +38 -0
- data/spec/core/domhelper_spec.js +158 -0
- data/spec/core/eventdispatcher_spec.js +209 -0
- data/spec/core/font_spec.js +218 -0
- data/spec/core/fontmoduleloader_spec.js +55 -0
- data/spec/core/fontruler_spec.js +33 -0
- data/spec/core/fontvariationdescription_spec.js +67 -0
- data/spec/core/fontwatcher_spec.js +204 -0
- data/spec/core/fontwatchrunner_spec.js +398 -0
- data/spec/core/size_spec.js +17 -0
- data/spec/core/useragentparser_spec.js +921 -0
- data/spec/custom/customcss_spec.js +36 -0
- data/spec/fontdeck/fontdeckscript_spec.js +111 -0
- data/spec/fonts/LICENSE.txt +93 -0
- data/spec/fonts/nullfont.css +1 -0
- data/spec/fonts/nullfont1.css +1 -0
- data/spec/fonts/nullfont2.css +1 -0
- data/spec/fonts/nullfont3.css +1 -0
- data/spec/fonts/sourcesans.eot +0 -0
- data/spec/fonts/sourcesans.otf +0 -0
- data/spec/fonts/sourcesans.svg +2523 -0
- data/spec/fonts/sourcesans.ttf +0 -0
- data/spec/fonts/sourcesans.woff +0 -0
- data/spec/fonts/sourcesansa.css +1 -0
- data/spec/fonts/sourcesansb.css +1 -0
- data/spec/google/fontapiparser_spec.js +348 -0
- data/spec/google/fontapiurlbuilder_spec.js +40 -0
- data/spec/google/googlefontapi_spec.js +123 -0
- data/spec/google/lastresortwebkitfontwatchrunner_spec.js +145 -0
- data/spec/index.html +95 -0
- data/spec/monotype/monotypescript_spec.js +49 -0
- data/spec/typekit/typekitscript_spec.js +93 -0
- data/src/core/domhelper.js +6 -3
- data/src/core/fontruler.js +1 -1
- data/src/core/fontwatcher.js +5 -0
- data/src/core/fontwatchrunner.js +7 -4
- data/src/monotype/monotype_script.js +4 -3
- data/tools/jasmine-phantomjs/jasmine-phantomjs.js +26 -0
- data/tools/jasmine-phantomjs/terminal-reporter.js +177 -0
- data/tools/jasmine/MIT.LICENSE +20 -0
- data/tools/jasmine/jasmine-html.js +681 -0
- data/tools/jasmine/jasmine.css +82 -0
- data/tools/jasmine/jasmine.js +2600 -0
- data/webfontloader.gemspec +46 -25
- metadata +77 -42
- data/src-test/ascender/ascender_script_test.js +0 -51
- data/src-test/core/cssclassnametest.js +0 -42
- data/src-test/core/cssfontfamilynametest.js +0 -54
- data/src-test/core/domhelpertest.js +0 -151
- data/src-test/core/eventdispatchertest.js +0 -275
- data/src-test/core/fontmoduleloadertest.js +0 -30
- data/src-test/core/fonttest.js +0 -121
- data/src-test/core/fontvariationdescriptiontest.js +0 -76
- data/src-test/core/fontwatchertest.js +0 -287
- data/src-test/core/fontwatchrunnertest.js +0 -454
- data/src-test/core/useragenttest.js +0 -755
- data/src-test/custom/customcsstest.js +0 -35
- data/src-test/fontdeck/fontdeck_script_test.js +0 -116
- data/src-test/google/fontapiparsertest.js +0 -252
- data/src-test/google/fontapiurlbuildertest.js +0 -71
- data/src-test/google/googlefontapitest.js +0 -185
- data/src-test/google/lastresortwebkitfontwatchrunnertest.js +0 -204
- data/src-test/monotype/monotype_script_test.js +0 -304
- data/src-test/typekit/typekit_script_test.js +0 -195
- data/tools/jstestdriver/JsTestDriver-1.2.1.jar +0 -0
@@ -1,287 +0,0 @@
|
|
1
|
-
var FontWatcherTest = TestCase('FontWatcherTest');
|
2
|
-
|
3
|
-
FontWatcherTest.prototype.setUp = function() {
|
4
|
-
var self = this;
|
5
|
-
|
6
|
-
this.fontLoadingEventCalled_ = 0;
|
7
|
-
this.fontLoading_ = {};
|
8
|
-
this.fontActiveEventCalled_ = 0;
|
9
|
-
this.fontActive_ = {};
|
10
|
-
this.fontInactiveEventCalled_ = 0;
|
11
|
-
this.fontInactive_ = {};
|
12
|
-
this.activeEventCalled_ = 0;
|
13
|
-
this.inactiveEventCalled_ = 0;
|
14
|
-
this.fakeEventDispatcher_ = {
|
15
|
-
dispatchLoading: function() {
|
16
|
-
fail('dispatchLoading should not be called by FontWatcher.');
|
17
|
-
},
|
18
|
-
dispatchFontLoading: function(fontFamily, fontDescription) {
|
19
|
-
self.fontLoadingEventCalled_++;
|
20
|
-
self.fontLoading_[fontFamily + ' ' + fontDescription] = true;
|
21
|
-
},
|
22
|
-
dispatchFontActive: function(fontFamily, fontDescription) {
|
23
|
-
self.fontActiveEventCalled_++;
|
24
|
-
self.fontActive_[fontFamily + ' ' + fontDescription] = true;
|
25
|
-
},
|
26
|
-
dispatchFontInactive: function(fontFamily, fontDescription) {
|
27
|
-
self.fontInactiveEventCalled_++;
|
28
|
-
self.fontInactive_[fontFamily + ' ' + fontDescription] = true;
|
29
|
-
},
|
30
|
-
dispatchActive: function() {
|
31
|
-
self.activeEventCalled_++;
|
32
|
-
},
|
33
|
-
dispatchInactive: function() {
|
34
|
-
self.inactiveEventCalled_++;
|
35
|
-
}
|
36
|
-
};
|
37
|
-
|
38
|
-
this.fakeDomHelper_ = {
|
39
|
-
createElement: function(name, attrs, innerHtml) {
|
40
|
-
var element = document.createElement(name);
|
41
|
-
return element;
|
42
|
-
},
|
43
|
-
insertInto: function() {},
|
44
|
-
removeElement: function() {},
|
45
|
-
setStyle: function() {}
|
46
|
-
};
|
47
|
-
|
48
|
-
this.userAgent_ = new webfont.UserAgent('Firefox', '3.6', 'Gecko', '1.9.2', 'Macintosh', '10.6', undefined, new webfont.BrowserInfo(false, false));
|
49
|
-
|
50
|
-
this.fakeFontSizer_ = {
|
51
|
-
getSize: function() {
|
52
|
-
fail('Fake getSize should not be called.');
|
53
|
-
}
|
54
|
-
};
|
55
|
-
|
56
|
-
this.fakeAsyncCall_ = function() {
|
57
|
-
fail('Fake asyncCall should not be called.');
|
58
|
-
};
|
59
|
-
|
60
|
-
this.fakeGetTime_ = function() {
|
61
|
-
fail('Fake getTime should not be called.');
|
62
|
-
};
|
63
|
-
|
64
|
-
// Mock out FontWatchRunner to return active/inactive for families we give it
|
65
|
-
this.originalFontWatchRunner_ = webfont.FontWatchRunner;
|
66
|
-
this.fontWatchRunnerActiveFamilies_ = [];
|
67
|
-
this.testStringCount_ = 0;
|
68
|
-
this.testStrings_ = {};
|
69
|
-
webfont.FontWatchRunner = function(activeCallback, inactiveCallback, domHelper,
|
70
|
-
fontSizer, asyncCall, getTime, fontFamily, fontDescription, hasWebkitFallbackBug, opt_metricCompatibleFonts, opt_fontTestString) {
|
71
|
-
if (opt_fontTestString) {
|
72
|
-
self.testStringCount_++;
|
73
|
-
self.testStrings_[fontFamily] = opt_fontTestString;
|
74
|
-
}
|
75
|
-
this.activeCallback_ = activeCallback;
|
76
|
-
this.inactiveCallback_ = inactiveCallback;
|
77
|
-
this.fontFamily_ = fontFamily;
|
78
|
-
this.fontDescription_ = fontDescription;
|
79
|
-
};
|
80
|
-
|
81
|
-
webfont.FontWatchRunner.prototype.start = function() {
|
82
|
-
if (self.fontWatchRunnerActiveFamilies_.indexOf(this.fontFamily_) > -1) {
|
83
|
-
this.activeCallback_(this.fontFamily_, this.fontDescription_);
|
84
|
-
} else {
|
85
|
-
this.inactiveCallback_(this.fontFamily_, this.fontDescription_);
|
86
|
-
}
|
87
|
-
};
|
88
|
-
};
|
89
|
-
|
90
|
-
FontWatcherTest.prototype.tearDown = function() {
|
91
|
-
// Replace the original FontWatchRunner implementation
|
92
|
-
webfont.FontWatchRunner = this.originalFontWatchRunner_;
|
93
|
-
};
|
94
|
-
|
95
|
-
FontWatcherTest.prototype.testWatchOneFontNotLast = function() {
|
96
|
-
var fontFamilies = [ 'fontFamily1' ];
|
97
|
-
this.fontWatchRunnerActiveFamilies_ = [ 'fontFamily1' ];
|
98
|
-
|
99
|
-
var fontWatcher = new webfont.FontWatcher(this.userAgent_, this.fakeDomHelper_, this.fakeEventDispatcher_,
|
100
|
-
this.fakeFontSizer_, this.fakeAsyncCall_, this.fakeGetTime_);
|
101
|
-
|
102
|
-
fontWatcher.watch(fontFamilies, {}, {}, webfont.FontWatchRunner, false);
|
103
|
-
|
104
|
-
assertEquals(0, this.fontInactiveEventCalled_);
|
105
|
-
assertEquals(0, this.activeEventCalled_);
|
106
|
-
assertEquals(0, this.inactiveEventCalled_);
|
107
|
-
};
|
108
|
-
|
109
|
-
FontWatcherTest.prototype.testWatchOneFontActive = function() {
|
110
|
-
var fontFamilies = [ 'fontFamily1' ];
|
111
|
-
this.fontWatchRunnerActiveFamilies_ = [ 'fontFamily1' ];
|
112
|
-
|
113
|
-
var fontWatcher = new webfont.FontWatcher(this.userAgent_, this.fakeDomHelper_, this.fakeEventDispatcher_,
|
114
|
-
this.fakeFontSizer_, this.fakeAsyncCall_, this.fakeGetTime_);
|
115
|
-
|
116
|
-
fontWatcher.watch(fontFamilies, {}, {}, webfont.FontWatchRunner, true);
|
117
|
-
|
118
|
-
assertEquals(1, this.fontLoadingEventCalled_);
|
119
|
-
assertEquals(true, this.fontLoading_['fontFamily1 n4']);
|
120
|
-
assertEquals(1, this.fontActiveEventCalled_);
|
121
|
-
assertEquals(true, this.fontActive_['fontFamily1 n4']);
|
122
|
-
assertEquals(0, this.fontInactiveEventCalled_);
|
123
|
-
assertEquals(1, this.activeEventCalled_);
|
124
|
-
assertEquals(0, this.inactiveEventCalled_);
|
125
|
-
};
|
126
|
-
|
127
|
-
FontWatcherTest.prototype.testWatchOneFontInactive = function() {
|
128
|
-
var fontFamilies = [ 'fontFamily1' ];
|
129
|
-
this.fontWatchRunnerActiveFamilies_ = [];
|
130
|
-
|
131
|
-
var fontWatcher = new webfont.FontWatcher(this.userAgent_, this.fakeDomHelper_, this.fakeEventDispatcher_,
|
132
|
-
this.fakeFontSizer_, this.fakeAsyncCall_, this.fakeGetTime_);
|
133
|
-
|
134
|
-
fontWatcher.watch(fontFamilies, {}, {}, webfont.FontWatchRunner, true);
|
135
|
-
|
136
|
-
assertEquals(1, this.fontLoadingEventCalled_);
|
137
|
-
assertEquals(true, this.fontLoading_['fontFamily1 n4']);
|
138
|
-
assertEquals(0, this.fontActiveEventCalled_);
|
139
|
-
assertEquals(1, this.fontInactiveEventCalled_);
|
140
|
-
assertEquals(true, this.fontInactive_['fontFamily1 n4']);
|
141
|
-
assertEquals(0, this.activeEventCalled_);
|
142
|
-
assertEquals(1, this.inactiveEventCalled_);
|
143
|
-
};
|
144
|
-
|
145
|
-
FontWatcherTest.prototype.testWatchMultipleFontsActive = function() {
|
146
|
-
var fontFamilies = [ 'fontFamily1', 'fontFamily2', 'fontFamily3' ];
|
147
|
-
this.fontWatchRunnerActiveFamilies_ = [ 'fontFamily1', 'fontFamily2', 'fontFamily3' ];
|
148
|
-
|
149
|
-
var fontWatcher = new webfont.FontWatcher(this.userAgent_, this.fakeDomHelper_, this.fakeEventDispatcher_,
|
150
|
-
this.fakeFontSizer_, this.fakeAsyncCall_, this.fakeGetTime_);
|
151
|
-
|
152
|
-
fontWatcher.watch(fontFamilies, {}, {}, webfont.FontWatchRunner, true);
|
153
|
-
|
154
|
-
assertEquals(3, this.fontLoadingEventCalled_);
|
155
|
-
assertEquals(true, this.fontLoading_['fontFamily1 n4']);
|
156
|
-
assertEquals(true, this.fontLoading_['fontFamily2 n4']);
|
157
|
-
assertEquals(true, this.fontLoading_['fontFamily3 n4']);
|
158
|
-
assertEquals(3, this.fontActiveEventCalled_);
|
159
|
-
assertEquals(true, this.fontActive_['fontFamily1 n4']);
|
160
|
-
assertEquals(true, this.fontActive_['fontFamily2 n4']);
|
161
|
-
assertEquals(true, this.fontActive_['fontFamily3 n4']);
|
162
|
-
assertEquals(0, this.fontInactiveEventCalled_);
|
163
|
-
assertEquals(1, this.activeEventCalled_);
|
164
|
-
assertEquals(0, this.inactiveEventCalled_);
|
165
|
-
};
|
166
|
-
|
167
|
-
FontWatcherTest.prototype.testWatchMultipleFontsInactive = function() {
|
168
|
-
var fontFamilies = [ 'fontFamily1', 'fontFamily2', 'fontFamily3' ];
|
169
|
-
this.fontWatchRunnerActiveFamilies_ = [];
|
170
|
-
|
171
|
-
var fontWatcher = new webfont.FontWatcher(this.userAgent_, this.fakeDomHelper_, this.fakeEventDispatcher_,
|
172
|
-
this.fakeFontSizer_, this.fakeAsyncCall_, this.fakeGetTime_);
|
173
|
-
|
174
|
-
fontWatcher.watch(fontFamilies, {}, {}, webfont.FontWatchRunner, true);
|
175
|
-
|
176
|
-
assertEquals(3, this.fontLoadingEventCalled_);
|
177
|
-
assertEquals(true, this.fontLoading_['fontFamily1 n4']);
|
178
|
-
assertEquals(true, this.fontLoading_['fontFamily2 n4']);
|
179
|
-
assertEquals(true, this.fontLoading_['fontFamily3 n4']);
|
180
|
-
assertEquals(0, this.fontActiveEventCalled_);
|
181
|
-
assertEquals(3, this.fontInactiveEventCalled_);
|
182
|
-
assertEquals(true, this.fontInactive_['fontFamily1 n4']);
|
183
|
-
assertEquals(true, this.fontInactive_['fontFamily2 n4']);
|
184
|
-
assertEquals(true, this.fontInactive_['fontFamily3 n4']);
|
185
|
-
assertEquals(0, this.activeEventCalled_);
|
186
|
-
assertEquals(1, this.inactiveEventCalled_);
|
187
|
-
};
|
188
|
-
|
189
|
-
FontWatcherTest.prototype.testWatchMultipleFontsMixed = function() {
|
190
|
-
var fontFamilies = [ 'fontFamily1', 'fontFamily2', 'fontFamily3' ];
|
191
|
-
this.fontWatchRunnerActiveFamilies_ = [ 'fontFamily1', 'fontFamily3' ];
|
192
|
-
|
193
|
-
var fontWatcher = new webfont.FontWatcher(this.userAgent_, this.fakeDomHelper_, this.fakeEventDispatcher_,
|
194
|
-
this.fakeFontSizer_, this.fakeAsyncCall_, this.fakeGetTime_);
|
195
|
-
|
196
|
-
fontWatcher.watch(fontFamilies, {}, {}, webfont.FontWatchRunner, true);
|
197
|
-
|
198
|
-
assertEquals(3, this.fontLoadingEventCalled_);
|
199
|
-
assertEquals(true, this.fontLoading_['fontFamily1 n4']);
|
200
|
-
assertEquals(true, this.fontLoading_['fontFamily2 n4']);
|
201
|
-
assertEquals(true, this.fontLoading_['fontFamily3 n4']);
|
202
|
-
assertEquals(2, this.fontActiveEventCalled_);
|
203
|
-
assertEquals(true, this.fontActive_['fontFamily1 n4']);
|
204
|
-
assertEquals(true, this.fontActive_['fontFamily3 n4']);
|
205
|
-
assertEquals(1, this.fontInactiveEventCalled_);
|
206
|
-
assertEquals(true, this.fontInactive_['fontFamily2 n4']);
|
207
|
-
assertEquals(1, this.activeEventCalled_);
|
208
|
-
assertEquals(0, this.inactiveEventCalled_);
|
209
|
-
};
|
210
|
-
|
211
|
-
FontWatcherTest.prototype.testWatchMultipleFontsWithDescriptions = function() {
|
212
|
-
var fontFamilies = [ 'fontFamily1', 'fontFamily2', 'fontFamily3' ];
|
213
|
-
this.fontWatchRunnerActiveFamilies_ = [ 'fontFamily1', 'fontFamily2' ];
|
214
|
-
|
215
|
-
var fontDescriptions = {
|
216
|
-
'fontFamily1': ['i7'],
|
217
|
-
'fontFamily2': null,
|
218
|
-
'fontFamily3': ['n4', 'i4', 'n7']
|
219
|
-
};
|
220
|
-
|
221
|
-
var fontWatcher = new webfont.FontWatcher(this.userAgent_, this.fakeDomHelper_, this.fakeEventDispatcher_,
|
222
|
-
this.fakeFontSizer_, this.fakeAsyncCall_, this.fakeGetTime_);
|
223
|
-
|
224
|
-
fontWatcher.watch(fontFamilies, fontDescriptions, {}, webfont.FontWatchRunner, true);
|
225
|
-
|
226
|
-
assertEquals(5, this.fontLoadingEventCalled_);
|
227
|
-
assertEquals(true, this.fontLoading_['fontFamily1 i7']);
|
228
|
-
assertEquals(true, this.fontLoading_['fontFamily2 n4']);
|
229
|
-
assertEquals(true, this.fontLoading_['fontFamily3 n4']);
|
230
|
-
assertEquals(true, this.fontLoading_['fontFamily3 i4']);
|
231
|
-
assertEquals(true, this.fontLoading_['fontFamily3 n7']);
|
232
|
-
assertEquals(2, this.fontActiveEventCalled_);
|
233
|
-
assertEquals(true, this.fontActive_['fontFamily1 i7']);
|
234
|
-
assertEquals(true, this.fontActive_['fontFamily2 n4']);
|
235
|
-
assertEquals(3, this.fontInactiveEventCalled_);
|
236
|
-
assertEquals(true, this.fontInactive_['fontFamily3 n4']);
|
237
|
-
assertEquals(true, this.fontInactive_['fontFamily3 i4']);
|
238
|
-
assertEquals(true, this.fontInactive_['fontFamily3 n7']);
|
239
|
-
assertEquals(1, this.activeEventCalled_);
|
240
|
-
assertEquals(0, this.inactiveEventCalled_);
|
241
|
-
};
|
242
|
-
|
243
|
-
FontWatcherTest.prototype.testWatchMultipleFontsWithTestStrings = function() {
|
244
|
-
var fontFamilies = [ 'fontFamily1', 'fontFamily2', 'fontFamily3', 'fontFamily4' ];
|
245
|
-
this.fontWatchRunnerActiveFamilies_ = [ 'fontFamily1', 'fontFamily2' ];
|
246
|
-
|
247
|
-
var fontTestStrings = {
|
248
|
-
'fontFamily1': 'testString1',
|
249
|
-
'fontFamily2': null,
|
250
|
-
'fontFamily3': 'testString3',
|
251
|
-
'fontFamily4': null
|
252
|
-
};
|
253
|
-
|
254
|
-
var fontWatcher = new webfont.FontWatcher(this.userAgent_, this.fakeDomHelper_, this.fakeEventDispatcher_,
|
255
|
-
this.fakeFontSizer_, this.fakeAsyncCall_, this.fakeGetTime_);
|
256
|
-
|
257
|
-
fontWatcher.watch(fontFamilies, {}, fontTestStrings, webfont.FontWatchRunner,
|
258
|
-
true);
|
259
|
-
|
260
|
-
assertEquals(2, this.testStringCount_);
|
261
|
-
assertEquals('testString1', this.testStrings_['fontFamily1']);
|
262
|
-
assertEquals('testString3', this.testStrings_['fontFamily3']);
|
263
|
-
};
|
264
|
-
|
265
|
-
FontWatcherTest.prototype.testNoWebkitBugDetectionOnNonWebkit = function() {
|
266
|
-
var ua = new webfont.UserAgent('Firefox', '3.6', 'Gecko', '1.9.2', 'Macintosh', '10.6', undefined, new webfont.BrowserInfo(true, false));
|
267
|
-
var fontWatcher = new webfont.FontWatcher(ua, this.fakeDomHelper_, this.fakeEventDispatcher_,
|
268
|
-
this.fakeFontSizer_, this.fakeAsyncCall_, this.fakeGetTime_);
|
269
|
-
|
270
|
-
assertEquals(false, fontWatcher.hasWebKitFallbackBug_);
|
271
|
-
};
|
272
|
-
|
273
|
-
FontWatcherTest.prototype.testNoWebkitBugDetectionOnNewWebkit = function() {
|
274
|
-
var ua = new webfont.UserAgent('Safari', '6.0.2', 'AppleWebKit', '537.6.17', 'Macintosh', '10_7_5', undefined, new webfont.BrowserInfo(true, false));
|
275
|
-
var fontWatcher = new webfont.FontWatcher(ua, this.fakeDomHelper_, this.fakeEventDispatcher_,
|
276
|
-
this.fakeFontSizer_, this.fakeAsyncCall_, this.fakeGetTime_);
|
277
|
-
|
278
|
-
assertEquals(false, fontWatcher.hasWebKitFallbackBug_);
|
279
|
-
};
|
280
|
-
|
281
|
-
FontWatcherTest.prototype.testYesWebkitBugDetectionOnOlderWebkit = function() {
|
282
|
-
var ua = new webfont.UserAgent('Chrome', '16.0.912.75', 'AppleWebKit', '535.7', 'Android', '4.0.3', undefined, new webfont.BrowserInfo(true, true));
|
283
|
-
var fontWatcher = new webfont.FontWatcher(ua, this.fakeDomHelper_, this.fakeEventDispatcher_,
|
284
|
-
this.fakeFontSizer_, this.fakeAsyncCall_, this.fakeGetTime_);
|
285
|
-
|
286
|
-
assertEquals(true, fontWatcher.hasWebKitFallbackBug_);
|
287
|
-
};
|
@@ -1,454 +0,0 @@
|
|
1
|
-
var FontWatchRunnerTest = TestCase('FontWatchRunnerTest');
|
2
|
-
|
3
|
-
FontWatchRunnerTest.prototype.setUp = function() {
|
4
|
-
var self = this;
|
5
|
-
|
6
|
-
this.fontFamily_ = 'fontFamily1';
|
7
|
-
this.fontDescription_ = 'n4';
|
8
|
-
|
9
|
-
this.fontActiveCalled_ = 0;
|
10
|
-
this.fontActive_ = {};
|
11
|
-
this.fontInactiveCalled_ = 0;
|
12
|
-
this.fontInactive_ = {};
|
13
|
-
this.activeCallback_ = function(fontFamily, fontDescription) {
|
14
|
-
self.fontActiveCalled_++;
|
15
|
-
self.fontActive_[fontFamily + ' ' + fontDescription] = true;
|
16
|
-
};
|
17
|
-
this.inactiveCallback_ = function(fontFamily, fontDescription) {
|
18
|
-
self.fontInactiveCalled_++;
|
19
|
-
self.fontInactive_[fontFamily + ' ' + fontDescription] = true;
|
20
|
-
};
|
21
|
-
|
22
|
-
this.createElementCalled_ = 0;
|
23
|
-
this.createdElements_ = [];
|
24
|
-
this.insertIntoCalled_ = 0;
|
25
|
-
this.removeElementCalled_ = 0;
|
26
|
-
this.fakeDomHelper_ = {
|
27
|
-
createElement: function(name, attrs, innerHtml) {
|
28
|
-
self.createElementCalled_++;
|
29
|
-
var element = document.createElement(name);
|
30
|
-
self.createdElements_.push({
|
31
|
-
'name': name,
|
32
|
-
'attrs': attrs,
|
33
|
-
'innerHtml': innerHtml,
|
34
|
-
'element': element
|
35
|
-
});
|
36
|
-
|
37
|
-
for (var attr in attrs) {
|
38
|
-
element.setAttribute(attr, attrs[attr]);
|
39
|
-
}
|
40
|
-
element.innerHTML = innerHtml;
|
41
|
-
return element;
|
42
|
-
},
|
43
|
-
insertInto: function(name, el) {
|
44
|
-
self.insertIntoCalled_++;
|
45
|
-
},
|
46
|
-
removeElement: function(el) {
|
47
|
-
self.removeElementCalled_++;
|
48
|
-
},
|
49
|
-
setStyle: function(el, style) {
|
50
|
-
el.setAttribute('style', style);
|
51
|
-
for (var i = 0; i < self.createdElements_.length; i += 1) {
|
52
|
-
if (self.createdElements_[i].element === el) {
|
53
|
-
if (!self.createdElements_[i].attrs) {
|
54
|
-
self.createdElements_[i].attrs = {};
|
55
|
-
}
|
56
|
-
self.createdElements_[i].attrs.style = style;
|
57
|
-
break;
|
58
|
-
}
|
59
|
-
}
|
60
|
-
}
|
61
|
-
};
|
62
|
-
|
63
|
-
this.timesToCheckSizesBeforeChange_ = 0;
|
64
|
-
this.fakeFontSizer_ = {
|
65
|
-
getSize: function(el) {
|
66
|
-
if (el.style.fontFamily.indexOf(self.fontFamily_) != -1) {
|
67
|
-
// This is a font stack with fontFamily included (not just fallbacks)
|
68
|
-
if (self.timesToCheckSizesBeforeChange_ <= 0) {
|
69
|
-
// Decrement by 0.5 because we're checking two separate font stacks each iteration
|
70
|
-
self.timesToCheckSizesBeforeChange_ -= 0.5;
|
71
|
-
return new webfont.Size(2, 2);
|
72
|
-
} else {
|
73
|
-
// Decrement by 0.5 because we're checking two separate font stacks each iteration
|
74
|
-
self.timesToCheckSizesBeforeChange_ -= 0.5;
|
75
|
-
return new webfont.Size(1, 1);
|
76
|
-
}
|
77
|
-
} else {
|
78
|
-
return new webfont.Size(1, 1);
|
79
|
-
}
|
80
|
-
}
|
81
|
-
};
|
82
|
-
|
83
|
-
this.fakeFontSizerWithDifferentHeight_ = {
|
84
|
-
getSize: function(el) {
|
85
|
-
if (el.style.fontFamily.indexOf(self.fontFamily_) != -1) {
|
86
|
-
if (self.timesToCheckSizesBeforeChange_ <= 0) {
|
87
|
-
self.timesToCheckSizesBeforeChange_ -= 0.5;
|
88
|
-
return new webfont.Size(1, 2);
|
89
|
-
} else {
|
90
|
-
self.timesToCheckSizesBeforeChange_ -= 0.5;
|
91
|
-
return new webfont.Size(1, 1);
|
92
|
-
}
|
93
|
-
} else {
|
94
|
-
return new webfont.Size(1, 1);
|
95
|
-
}
|
96
|
-
}
|
97
|
-
};
|
98
|
-
|
99
|
-
/**
|
100
|
-
* This accurately models the way webkit used to handle
|
101
|
-
* fallback fonts while loading web fonts. Even though
|
102
|
-
* this Webkit bug is now patched, we still have a large
|
103
|
-
* portion of our users using old webkit builds.
|
104
|
-
*
|
105
|
-
* See: https://bugs.webkit.org/show_bug.cgi?id=76684
|
106
|
-
*/
|
107
|
-
this.timesToDelayChangedSizeWebkit_ = 1;
|
108
|
-
this.firstCallToRetrieveSizeWebkit_ = true;
|
109
|
-
this.fakeWebkitFontSizer_ = {
|
110
|
-
getSize: function(el) {
|
111
|
-
if (el.style.fontFamily.indexOf(self.fontFamily_) !== -1) {
|
112
|
-
if (self.timesToDelayChangedSizeWebkit_ > 0) {
|
113
|
-
self.timesToDelayChangedSizeWebkit_ -= 0.5;
|
114
|
-
// Return the incorrect width for a certain number of cycles.
|
115
|
-
// The actual number depends on how fast or how slow the font
|
116
|
-
// is parsed and applied.
|
117
|
-
return new webfont.Size(2, 2);
|
118
|
-
} else {
|
119
|
-
// Return the correct width
|
120
|
-
return new webfont.Size(3, 3);
|
121
|
-
}
|
122
|
-
} else {
|
123
|
-
if (self.firstCallToRetrieveSizeWebkit_) {
|
124
|
-
self.firstCallToRetrieveSizeWebkit_ = false;
|
125
|
-
return new webfont.Size(2, 2);
|
126
|
-
} else {
|
127
|
-
// Return the default width
|
128
|
-
return new webfont.Size(1, 1);
|
129
|
-
}
|
130
|
-
}
|
131
|
-
}
|
132
|
-
};
|
133
|
-
|
134
|
-
this.fakeWebkitFontSizerFailedLoad_ = {
|
135
|
-
getSize: function(el) {
|
136
|
-
if (el.style.fontFamily.indexOf(self.fontFamily_) !== -1) {
|
137
|
-
if (self.timesToDelayChangedSizeWebkit_ > 0) {
|
138
|
-
self.timesToDelayChangedSizeWebkit_ -= 0.5;
|
139
|
-
return new webfont.Size(2, 2);
|
140
|
-
} else {
|
141
|
-
// Return the original width, indicating the font
|
142
|
-
// failed to load. This should incorrectly trigger `inactive`.
|
143
|
-
return new webfont.Size(1, 1);
|
144
|
-
}
|
145
|
-
} else {
|
146
|
-
if (self.firstCallToRetrieveSizeWebkit_) {
|
147
|
-
self.firstCallToRetrieveSizeWebkit_ = false;
|
148
|
-
return new webfont.Size(2, 2);
|
149
|
-
} else {
|
150
|
-
return new webfont.Size(1, 1);
|
151
|
-
}
|
152
|
-
}
|
153
|
-
}
|
154
|
-
};
|
155
|
-
|
156
|
-
this.fakeWebkitFontSizerWithEqualMetrics_ = {
|
157
|
-
getSize: function(el) {
|
158
|
-
if (el.style.fontFamily.indexOf(self.fontFamily_) !== -1) {
|
159
|
-
if (self.timesToDelayChangedSizeWebkit_ > 0) {
|
160
|
-
self.timesToDelayChangedSizeWebkit_ -= 0.5;
|
161
|
-
return new webfont.Size(2, 2);
|
162
|
-
} else {
|
163
|
-
// This time the fallback font picked by Webkit has the
|
164
|
-
// same metrics as the font being loaded. This is a rare
|
165
|
-
// case but we should be able to handle it.
|
166
|
-
return new webfont.Size(2, 2);
|
167
|
-
}
|
168
|
-
} else {
|
169
|
-
if (self.firstCallToRetrieveSizeWebkit_) {
|
170
|
-
self.firstCallToRetrieveSizeWebkit_ = false;
|
171
|
-
return new webfont.Size(2, 2);
|
172
|
-
} else {
|
173
|
-
return new webfont.Size(1, 1);
|
174
|
-
}
|
175
|
-
}
|
176
|
-
}
|
177
|
-
};
|
178
|
-
|
179
|
-
this.fakeWebkitFontSizeWithDifferentMetrics_ = {
|
180
|
-
getSize: function(el) {
|
181
|
-
if (el.style.fontFamily.indexOf(self.fontFamily_) !== -1) {
|
182
|
-
if (self.timesToDelayChangedSizeWebkit_ > 0) {
|
183
|
-
self.timesToDelayChangedSizeWebkit_ -= 0.5;
|
184
|
-
return new webfont.Size(2, 2);
|
185
|
-
} else {
|
186
|
-
// Even though the width is the same, the height
|
187
|
-
// is different, so this should trigger the active event.
|
188
|
-
return new webfont.Size(2, 3);
|
189
|
-
}
|
190
|
-
} else {
|
191
|
-
if (self.firstCallToRetrieveSizeWebkit_) {
|
192
|
-
self.firstCallToRetrieveSizeWebkit_ = false;
|
193
|
-
return new webfont.Size(2, 2);
|
194
|
-
} else {
|
195
|
-
return new webfont.Size(1, 1);
|
196
|
-
}
|
197
|
-
}
|
198
|
-
}
|
199
|
-
};
|
200
|
-
|
201
|
-
this.timesToGetTimeBeforeTimeout_ = 10;
|
202
|
-
this.fakeGetTime_ = function() {
|
203
|
-
if (self.timesToGetTimeBeforeTimeout_ <= 0) {
|
204
|
-
return 6000;
|
205
|
-
} else {
|
206
|
-
self.timesToGetTimeBeforeTimeout_--;
|
207
|
-
return 1;
|
208
|
-
}
|
209
|
-
};
|
210
|
-
|
211
|
-
this.asyncCount_ = 0;
|
212
|
-
this.fakeAsyncCall_ = function(func, timeout) {
|
213
|
-
self.asyncCount_++;
|
214
|
-
func();
|
215
|
-
};
|
216
|
-
|
217
|
-
};
|
218
|
-
|
219
|
-
FontWatchRunnerTest.prototype.testWatchFontAlreadyLoaded = function() {
|
220
|
-
this.timesToCheckSizesBeforeChange_ = 0;
|
221
|
-
this.timesToGetTimeBeforeTimeout_ = 10;
|
222
|
-
|
223
|
-
var fontWatchRunner = new webfont.FontWatchRunner(this.activeCallback_,
|
224
|
-
this.inactiveCallback_, this.fakeDomHelper_, this.fakeFontSizer_,
|
225
|
-
this.fakeAsyncCall_, this.fakeGetTime_, this.fontFamily_,
|
226
|
-
this.fontDescription_, false);
|
227
|
-
|
228
|
-
fontWatchRunner.start();
|
229
|
-
|
230
|
-
assertEquals(0, this.asyncCount_);
|
231
|
-
|
232
|
-
assertEquals(1, this.fontActiveCalled_);
|
233
|
-
assertEquals(true, this.fontActive_['fontFamily1 n4']);
|
234
|
-
assertEquals(0, this.fontInactiveCalled_);
|
235
|
-
};
|
236
|
-
|
237
|
-
FontWatchRunnerTest.prototype.testWatchFontWaitForLoadActive = function() {
|
238
|
-
this.timesToCheckSizesBeforeChange_ = 3;
|
239
|
-
this.timesToGetTimeBeforeTimeout_ = 10;
|
240
|
-
|
241
|
-
var fontWatchRunner = new webfont.FontWatchRunner(this.activeCallback_,
|
242
|
-
this.inactiveCallback_, this.fakeDomHelper_, this.fakeFontSizer_,
|
243
|
-
this.fakeAsyncCall_, this.fakeGetTime_, this.fontFamily_,
|
244
|
-
this.fontDescription_, false);
|
245
|
-
|
246
|
-
fontWatchRunner.start();
|
247
|
-
|
248
|
-
assertEquals(3, this.asyncCount_);
|
249
|
-
|
250
|
-
assertEquals(1, this.fontActiveCalled_);
|
251
|
-
assertEquals(true, this.fontActive_['fontFamily1 n4']);
|
252
|
-
assertEquals(0, this.fontInactiveCalled_);
|
253
|
-
};
|
254
|
-
|
255
|
-
FontWatchRunnerTest.prototype.testWatchFontWaitForLoadActiveWithDifferentHeight = function() {
|
256
|
-
this.timesToCheckSizesBeforeChange_ = 3;
|
257
|
-
this.timesToGetTimeBeforeTimeout_ = 10;
|
258
|
-
|
259
|
-
var fontWatchRunner = new webfont.FontWatchRunner(this.activeCallback_,
|
260
|
-
this.inactiveCallback_, this.fakeDomHelper_, this.fakeFontSizerWithDifferentHeight_,
|
261
|
-
this.fakeAsyncCall_, this.fakeGetTime_, this.fontFamily_,
|
262
|
-
this.fontDescription_, false);
|
263
|
-
|
264
|
-
fontWatchRunner.start();
|
265
|
-
|
266
|
-
assertEquals(3, this.asyncCount_);
|
267
|
-
|
268
|
-
assertEquals(1, this.fontActiveCalled_);
|
269
|
-
assertEquals(true, this.fontActive_['fontFamily1 n4']);
|
270
|
-
assertEquals(0, this.fontInactiveCalled_);
|
271
|
-
};
|
272
|
-
|
273
|
-
FontWatchRunnerTest.prototype.testWatchFontWaitForLoadInactive = function() {
|
274
|
-
this.timesToCheckSizesBeforeChange_ = 10;
|
275
|
-
this.timesToGetTimeBeforeTimeout_ = 5;
|
276
|
-
|
277
|
-
var fontWatchRunner = new webfont.FontWatchRunner(this.activeCallback_,
|
278
|
-
this.inactiveCallback_, this.fakeDomHelper_, this.fakeFontSizer_,
|
279
|
-
this.fakeAsyncCall_, this.fakeGetTime_, this.fontFamily_,
|
280
|
-
this.fontDescription_, false);
|
281
|
-
|
282
|
-
fontWatchRunner.start();
|
283
|
-
|
284
|
-
assertEquals(4, this.asyncCount_);
|
285
|
-
|
286
|
-
assertEquals(0, this.fontActiveCalled_);
|
287
|
-
assertEquals(1, this.fontInactiveCalled_);
|
288
|
-
assertEquals(true, this.fontInactive_['fontFamily1 n4']);
|
289
|
-
};
|
290
|
-
|
291
|
-
FontWatchRunnerTest.prototype.testWatchFontWebkitWithFastFont = function() {
|
292
|
-
this.timesToGetTimeBeforeTimeout_ = 10;
|
293
|
-
this.timesToDelayChangedSizeWebkit_ = 1;
|
294
|
-
this.firstCallToRetrieveSizeWebkit_ = true;
|
295
|
-
|
296
|
-
var fontWatchRunner = new webfont.FontWatchRunner(this.activeCallback_,
|
297
|
-
this.inactiveCallback_, this.fakeDomHelper_, this.fakeWebkitFontSizer_,
|
298
|
-
this.fakeAsyncCall_, this.fakeGetTime_, this.fontFamily_,
|
299
|
-
this.fontDescription_, true);
|
300
|
-
|
301
|
-
fontWatchRunner.start();
|
302
|
-
assertEquals(1, this.asyncCount_);
|
303
|
-
assertEquals(1, this.fontActiveCalled_);
|
304
|
-
assertEquals(true, this.fontActive_['fontFamily1 n4']);
|
305
|
-
};
|
306
|
-
|
307
|
-
FontWatchRunnerTest.prototype.testWatchFontWebkitWithSlowFont = function() {
|
308
|
-
this.timesToGetTimeBeforeTimeout_ = 10;
|
309
|
-
this.timesToDelayChangedSizeWebkit_ = 2;
|
310
|
-
this.firstCallToRetrieveSizeWebkit_ = true;
|
311
|
-
|
312
|
-
var fontWatchRunner = new webfont.FontWatchRunner(this.activeCallback_,
|
313
|
-
this.inactiveCallback_, this.fakeDomHelper_, this.fakeWebkitFontSizer_,
|
314
|
-
this.fakeAsyncCall_, this.fakeGetTime_, this.fontFamily_,
|
315
|
-
this.fontDescription_, true);
|
316
|
-
|
317
|
-
fontWatchRunner.start();
|
318
|
-
assertEquals(2, this.asyncCount_);
|
319
|
-
assertEquals(1, this.fontActiveCalled_);
|
320
|
-
assertEquals(true, this.fontActive_['fontFamily1 n4']);
|
321
|
-
};
|
322
|
-
|
323
|
-
FontWatchRunnerTest.prototype.testWatchFontWebkitWithEqualMetrics = function() {
|
324
|
-
this.timesToGetTimeBeforeTimeout_ = 10;
|
325
|
-
this.timesToDelayChangedSizeWebkit_ = 2;
|
326
|
-
this.firstCallToRetrieveSizeWebkit_ = true;
|
327
|
-
|
328
|
-
var fontWatchRunner = new webfont.FontWatchRunner(this.activeCallback_,
|
329
|
-
this.inactiveCallback_, this.fakeDomHelper_, this.fakeWebkitFontSizerWithEqualMetrics_,
|
330
|
-
this.fakeAsyncCall_, this.fakeGetTime_, this.fontFamily_,
|
331
|
-
this.fontDescription_, true);
|
332
|
-
|
333
|
-
fontWatchRunner.start();
|
334
|
-
assertEquals(9, this.asyncCount_);
|
335
|
-
assertEquals(1, this.fontActiveCalled_);
|
336
|
-
assertEquals(true, this.fontActive_['fontFamily1 n4']);
|
337
|
-
};
|
338
|
-
|
339
|
-
FontWatchRunnerTest.prototype.testWatchFontWebkitWithDifferentMetrics = function() {
|
340
|
-
this.timesToGetTimeBeforeTimeout_ = 10;
|
341
|
-
this.timesToDelayChangedSizeWebkit_ = 2;
|
342
|
-
this.firstCallToRetrieveSizeWebkit_ = true;
|
343
|
-
|
344
|
-
var fontWatchRunner = new webfont.FontWatchRunner(this.activeCallback_,
|
345
|
-
this.inactiveCallback_, this.fakeDomHelper_, this.fakeWebkitFontSizeWithDifferentMetrics_,
|
346
|
-
this.fakeAsyncCall_, this.fakeGetTime_, this.fontFamily_,
|
347
|
-
this.fontDescription_, true);
|
348
|
-
|
349
|
-
fontWatchRunner.start();
|
350
|
-
assertEquals(2, this.asyncCount_);
|
351
|
-
assertEquals(1, this.fontActiveCalled_);
|
352
|
-
assertEquals(true, this.fontActive_['fontFamily1 n4']);
|
353
|
-
};
|
354
|
-
|
355
|
-
FontWatchRunnerTest.prototype.testWatchFontWebkitFailedLoad = function() {
|
356
|
-
this.timesToGetTimeBeforeTimeout_ = 10;
|
357
|
-
this.timesToDelayChangedSizeWebkit_ = 5;
|
358
|
-
this.firstCallToRetrieveSizeWebkit_ = true;
|
359
|
-
|
360
|
-
var fontWatchRunner = new webfont.FontWatchRunner(this.activeCallback_,
|
361
|
-
this.inactiveCallback_, this.fakeDomHelper_, this.fakeWebkitFontSizerFailedLoad_,
|
362
|
-
this.fakeAsyncCall_, this.fakeGetTime_, this.fontFamily_,
|
363
|
-
this.fontDescription_, true);
|
364
|
-
|
365
|
-
fontWatchRunner.start();
|
366
|
-
assertEquals(9, this.asyncCount_);
|
367
|
-
assertEquals(1, this.fontActiveCalled_);
|
368
|
-
assertEquals(true, this.fontActive_['fontFamily1 n4']);
|
369
|
-
};
|
370
|
-
|
371
|
-
FontWatchRunnerTest.prototype.testWatchFontWebkitWithEqualMetricsIncompatibleFont = function() {
|
372
|
-
this.timesToGetTimeBeforeTimeout_ = 10;
|
373
|
-
this.timesToDelayChangedSizeWebkit_ = 2;
|
374
|
-
this.firstCallToRetrieveSizeWebkit_ = true;
|
375
|
-
|
376
|
-
var fontWatchRunner = new webfont.FontWatchRunner(this.activeCallback_,
|
377
|
-
this.inactiveCallback_, this.fakeDomHelper_, this.fakeWebkitFontSizerWithEqualMetrics_,
|
378
|
-
this.fakeAsyncCall_, this.fakeGetTime_, this.fontFamily_,
|
379
|
-
this.fontDescription_, true, { 'fontFamily2': true });
|
380
|
-
|
381
|
-
fontWatchRunner.start();
|
382
|
-
assertEquals(9, this.asyncCount_);
|
383
|
-
assertEquals(1, this.fontInactiveCalled_);
|
384
|
-
assertEquals(true, this.fontInactive_['fontFamily1 n4']);
|
385
|
-
};
|
386
|
-
|
387
|
-
FontWatchRunnerTest.prototype.testWatchFontWebkitWithEqualMetricsCompatibleFont = function() {
|
388
|
-
this.timesToGetTimeBeforeTimeout_ = 10;
|
389
|
-
this.timesToDelayChangedSizeWebkit_ = 2;
|
390
|
-
this.firstCallToRetrieveSizeWebkit_ = true;
|
391
|
-
|
392
|
-
var fontWatchRunner = new webfont.FontWatchRunner(this.activeCallback_,
|
393
|
-
this.inactiveCallback_, this.fakeDomHelper_, this.fakeWebkitFontSizerWithEqualMetrics_,
|
394
|
-
this.fakeAsyncCall_, this.fakeGetTime_, this.fontFamily_,
|
395
|
-
this.fontDescription_, true, { 'fontFamily1': true });
|
396
|
-
|
397
|
-
fontWatchRunner.start();
|
398
|
-
assertEquals(9, this.asyncCount_);
|
399
|
-
assertEquals(1, this.fontActiveCalled_);
|
400
|
-
assertEquals(true, this.fontActive_['fontFamily1 n4']);
|
401
|
-
};
|
402
|
-
|
403
|
-
|
404
|
-
FontWatchRunnerTest.prototype.testDomWithDefaultTestString = function() {
|
405
|
-
this.timesToCheckSizesBeforeChange_ = 3;
|
406
|
-
this.timesToGetTimeBeforeTimeout_ = 10;
|
407
|
-
|
408
|
-
var fontWatchRunner = new webfont.FontWatchRunner(this.activeCallback_,
|
409
|
-
this.inactiveCallback_, this.fakeDomHelper_, this.fakeFontSizer_,
|
410
|
-
this.fakeAsyncCall_, this.fakeGetTime_, this.fontFamily_,
|
411
|
-
this.fontDescription_, false);
|
412
|
-
|
413
|
-
fontWatchRunner.start();
|
414
|
-
assertEquals(3, this.createElementCalled_);
|
415
|
-
assertEquals('span', this.createdElements_[0]['name']);
|
416
|
-
assertNotEquals(-1, this.createdElements_[0]['attrs']['style'].indexOf('fontFamily1'));
|
417
|
-
assertNotEquals(-1, this.createdElements_[0]['attrs']['style'].indexOf(webfont.FontWatchRunner.LastResortFonts.SERIF));
|
418
|
-
assertEquals('BESbswy', this.createdElements_[0]['innerHtml']);
|
419
|
-
|
420
|
-
assertEquals('span', this.createdElements_[1]['name']);
|
421
|
-
assertNotEquals(-1, this.createdElements_[1]['attrs']['style'].indexOf('fontFamily1'));
|
422
|
-
assertNotEquals(-1, this.createdElements_[1]['attrs']['style'].indexOf(webfont.FontWatchRunner.LastResortFonts.SANS_SERIF));
|
423
|
-
assertEquals('BESbswy', this.createdElements_[1]['innerHtml']);
|
424
|
-
|
425
|
-
assertEquals(3, this.insertIntoCalled_);
|
426
|
-
assertEquals(3, this.removeElementCalled_);
|
427
|
-
};
|
428
|
-
|
429
|
-
FontWatchRunnerTest.prototype.testDomWithNotDefaultTestString = function() {
|
430
|
-
this.timesToCheckSizesBeforeChange_ = 3;
|
431
|
-
this.timesToGetTimeBeforeTimeout_ = 10;
|
432
|
-
|
433
|
-
var fontWatchRunner = new webfont.FontWatchRunner(this.activeCallback_,
|
434
|
-
this.inactiveCallback_, this.fakeDomHelper_, this.fakeFontSizer_,
|
435
|
-
this.fakeAsyncCall_, this.fakeGetTime_, this.fontFamily_,
|
436
|
-
this.fontDescription_, false, null, 'testString');
|
437
|
-
|
438
|
-
fontWatchRunner.start();
|
439
|
-
|
440
|
-
assertEquals(3, this.createElementCalled_);
|
441
|
-
assertEquals('span', this.createdElements_[0]['name']);
|
442
|
-
assertNotEquals(-1, this.createdElements_[0]['attrs']['style'].indexOf('fontFamily1'));
|
443
|
-
assertNotEquals(-1, this.createdElements_[0]['attrs']['style'].indexOf(webfont.FontWatchRunner.LastResortFonts.SERIF));
|
444
|
-
assertEquals('testString', this.createdElements_[0]['innerHtml']);
|
445
|
-
|
446
|
-
assertEquals('span', this.createdElements_[1]['name']);
|
447
|
-
assertNotEquals(-1, this.createdElements_[1]['attrs']['style'].indexOf('fontFamily1'));
|
448
|
-
assertNotEquals(-1, this.createdElements_[1]['attrs']['style'].indexOf(webfont.FontWatchRunner.LastResortFonts.SANS_SERIF));
|
449
|
-
assertEquals('testString', this.createdElements_[1]['innerHtml']);
|
450
|
-
|
451
|
-
assertEquals(3, this.insertIntoCalled_);
|
452
|
-
assertEquals(3, this.removeElementCalled_);
|
453
|
-
|
454
|
-
};
|