webfontloader 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. data/CHANGELOG +9 -0
  2. data/Gemfile +2 -8
  3. data/README.md +31 -32
  4. data/Rakefile +2 -33
  5. data/docs/EVENTS.md +10 -1
  6. data/docs/MODULES.md +4 -3
  7. data/lib/webfontloader.rb +1 -1
  8. data/spec/ascender/ascenderscript_spec.js +43 -0
  9. data/spec/core/cssclassname_spec.js +42 -0
  10. data/spec/core/cssfontfamilyname_spec.js +38 -0
  11. data/spec/core/domhelper_spec.js +158 -0
  12. data/spec/core/eventdispatcher_spec.js +209 -0
  13. data/spec/core/font_spec.js +218 -0
  14. data/spec/core/fontmoduleloader_spec.js +55 -0
  15. data/spec/core/fontruler_spec.js +33 -0
  16. data/spec/core/fontvariationdescription_spec.js +67 -0
  17. data/spec/core/fontwatcher_spec.js +204 -0
  18. data/spec/core/fontwatchrunner_spec.js +398 -0
  19. data/spec/core/size_spec.js +17 -0
  20. data/spec/core/useragentparser_spec.js +921 -0
  21. data/spec/custom/customcss_spec.js +36 -0
  22. data/spec/fontdeck/fontdeckscript_spec.js +111 -0
  23. data/spec/fonts/LICENSE.txt +93 -0
  24. data/spec/fonts/nullfont.css +1 -0
  25. data/spec/fonts/nullfont1.css +1 -0
  26. data/spec/fonts/nullfont2.css +1 -0
  27. data/spec/fonts/nullfont3.css +1 -0
  28. data/spec/fonts/sourcesans.eot +0 -0
  29. data/spec/fonts/sourcesans.otf +0 -0
  30. data/spec/fonts/sourcesans.svg +2523 -0
  31. data/spec/fonts/sourcesans.ttf +0 -0
  32. data/spec/fonts/sourcesans.woff +0 -0
  33. data/spec/fonts/sourcesansa.css +1 -0
  34. data/spec/fonts/sourcesansb.css +1 -0
  35. data/spec/google/fontapiparser_spec.js +348 -0
  36. data/spec/google/fontapiurlbuilder_spec.js +40 -0
  37. data/spec/google/googlefontapi_spec.js +123 -0
  38. data/spec/google/lastresortwebkitfontwatchrunner_spec.js +145 -0
  39. data/spec/index.html +95 -0
  40. data/spec/monotype/monotypescript_spec.js +49 -0
  41. data/spec/typekit/typekitscript_spec.js +93 -0
  42. data/src/core/domhelper.js +6 -3
  43. data/src/core/fontruler.js +1 -1
  44. data/src/core/fontwatcher.js +5 -0
  45. data/src/core/fontwatchrunner.js +7 -4
  46. data/src/monotype/monotype_script.js +4 -3
  47. data/tools/jasmine-phantomjs/jasmine-phantomjs.js +26 -0
  48. data/tools/jasmine-phantomjs/terminal-reporter.js +177 -0
  49. data/tools/jasmine/MIT.LICENSE +20 -0
  50. data/tools/jasmine/jasmine-html.js +681 -0
  51. data/tools/jasmine/jasmine.css +82 -0
  52. data/tools/jasmine/jasmine.js +2600 -0
  53. data/webfontloader.gemspec +46 -25
  54. metadata +77 -42
  55. data/src-test/ascender/ascender_script_test.js +0 -51
  56. data/src-test/core/cssclassnametest.js +0 -42
  57. data/src-test/core/cssfontfamilynametest.js +0 -54
  58. data/src-test/core/domhelpertest.js +0 -151
  59. data/src-test/core/eventdispatchertest.js +0 -275
  60. data/src-test/core/fontmoduleloadertest.js +0 -30
  61. data/src-test/core/fonttest.js +0 -121
  62. data/src-test/core/fontvariationdescriptiontest.js +0 -76
  63. data/src-test/core/fontwatchertest.js +0 -287
  64. data/src-test/core/fontwatchrunnertest.js +0 -454
  65. data/src-test/core/useragenttest.js +0 -755
  66. data/src-test/custom/customcsstest.js +0 -35
  67. data/src-test/fontdeck/fontdeck_script_test.js +0 -116
  68. data/src-test/google/fontapiparsertest.js +0 -252
  69. data/src-test/google/fontapiurlbuildertest.js +0 -71
  70. data/src-test/google/googlefontapitest.js +0 -185
  71. data/src-test/google/lastresortwebkitfontwatchrunnertest.js +0 -204
  72. data/src-test/monotype/monotype_script_test.js +0 -304
  73. data/src-test/typekit/typekit_script_test.js +0 -195
  74. data/tools/jstestdriver/JsTestDriver-1.2.1.jar +0 -0
@@ -1,185 +0,0 @@
1
- var GoogleFontApiTest = TestCase('GoogleFontApiTest');
2
-
3
- GoogleFontApiTest.prototype.testCallOnReadyWithFontFamilyLoading = function() {
4
- var insert = '';
5
- var link = '';
6
- var fakeDomHelper = {
7
- insertInto: function(tag, e) {
8
- insert = tag;
9
- },
10
- createCssLink: function(csslink) {
11
- link = csslink;
12
- },
13
- getProtocol: function() {
14
- return 'http:';
15
- }
16
- };
17
- var userAgent = new webfont.UserAgent("Test", "1.0", true);
18
- var googleFontApi = new webfont.GoogleFontApi(userAgent, fakeDomHelper,
19
- { families: [ 'Font1', 'Font2' ] });
20
-
21
- var families = null;
22
- var descriptions = null;
23
-
24
- googleFontApi.load(function(fontFamilies, fontDescriptions) {
25
- families = fontFamilies;
26
- descriptions = fontDescriptions;
27
- });
28
-
29
- assertEquals('head', insert);
30
- assertEquals('http://fonts.googleapis.com/css?family=' +
31
- 'Font1%7CFont2', link);
32
-
33
- assertNotNull(families);
34
- assertEquals(2, families.length);
35
- assertEquals('Font1', families[0]);
36
- assertEquals('Font2', families[1]);
37
-
38
- var font1Descriptions = descriptions['Font1'];
39
- assertNotNull(font1Descriptions);
40
- assertEquals(1, font1Descriptions.length);
41
- assertEquals('n4', font1Descriptions[0]);
42
-
43
- var font2Descriptions = descriptions['Font2'];
44
- assertNotNull(font2Descriptions);
45
- assertEquals(1, font2Descriptions.length);
46
- assertEquals('n4', font2Descriptions[0]);
47
- };
48
-
49
- GoogleFontApiTest.prototype.testCallOnReadyWithFontFamilyLoadingApiUrlChanged =
50
- function() {
51
- var insert = '';
52
- var link = '';
53
- var fakeDomHelper = {
54
- insertInto: function(tag, e) {
55
- insert = tag;
56
- },
57
- createCssLink: function(csslink) {
58
- link = csslink;
59
- },
60
- getProtocol: function() {
61
- return 'http:';
62
- }
63
- };
64
- var userAgent = new webfont.UserAgent("Test", "1.0", true);
65
- var googleFontApi = new webfont.GoogleFontApi(userAgent, fakeDomHelper,
66
- { api: 'http://moo', families: [ 'Font1', 'Font2' ] });
67
-
68
- var families = null;
69
- var descriptions = null;
70
-
71
- googleFontApi.load(function(fontFamilies, fontDescriptions) {
72
- families = fontFamilies;
73
- descriptions = fontDescriptions;
74
- });
75
-
76
- assertEquals('head', insert);
77
- assertEquals('http://moo?family=Font1%7CFont2', link);
78
-
79
- assertNotNull(families);
80
- assertEquals(2, families.length);
81
- assertEquals('Font1', families[0]);
82
- assertEquals('Font2', families[1]);
83
-
84
- var font1Descriptions = descriptions['Font1'];
85
- assertNotNull(font1Descriptions);
86
- assertEquals(1, font1Descriptions.length);
87
- assertEquals('n4', font1Descriptions[0]);
88
-
89
- var font2Descriptions = descriptions['Font2'];
90
- assertNotNull(font2Descriptions);
91
- assertEquals(1, font2Descriptions.length);
92
- assertEquals('n4', font2Descriptions[0]);
93
- };
94
-
95
- GoogleFontApiTest.prototype.testSpacesReplacedByPlus = function() {
96
- var insert = '';
97
- var link = '';
98
- var fakeDomHelper = {
99
- insertInto: function(tag, e) {
100
- insert = tag;
101
- },
102
- createCssLink: function(csslink) {
103
- link = csslink;
104
- },
105
- getProtocol: function() {
106
- return 'http:';
107
- }
108
- };
109
- var userAgent = new webfont.UserAgent("Test", "1.0", true);
110
- var googleFontApi = new webfont.GoogleFontApi(userAgent, fakeDomHelper,
111
- { families: [ 'Font1 WithSpace', 'Font2 WithSpaceToo' ] });
112
-
113
- var families = null;
114
- var descriptions = null;
115
-
116
- googleFontApi.load(function(fontFamilies, fontDescriptions) {
117
- families = fontFamilies;
118
- descriptions = fontDescriptions;
119
- });
120
-
121
- assertEquals('head', insert);
122
- assertEquals('http://fonts.googleapis.com/css?family=Font1+WithSpace%7CFont2+WithSpaceToo', link);
123
-
124
- assertNotNull(families);
125
- assertEquals(2, families.length);
126
- assertEquals('Font1 WithSpace', families[0]);
127
- assertEquals('Font2 WithSpaceToo', families[1]);
128
-
129
- var font1Descriptions = descriptions['Font1 WithSpace'];
130
- assertNotNull(font1Descriptions);
131
- assertEquals(1, font1Descriptions.length);
132
- assertEquals('n4', font1Descriptions[0]);
133
-
134
- var font2Descriptions = descriptions['Font2 WithSpaceToo'];
135
- assertNotNull(font2Descriptions);
136
- assertEquals(1, font2Descriptions.length);
137
- assertEquals('n4', font2Descriptions[0]);
138
- };
139
-
140
- GoogleFontApiTest.prototype.testLoadWithVariations = function() {
141
- var insert = '';
142
- var link = '';
143
- var fakeDomHelper = {
144
- insertInto: function(tag, e) {
145
- insert = tag;
146
- },
147
- createCssLink: function(csslink) {
148
- link = csslink;
149
- },
150
- getProtocol: function() {
151
- return 'http:';
152
- }
153
- };
154
- var userAgent = new webfont.UserAgent("Test", "1.0", true);
155
- var googleFontApi = new webfont.GoogleFontApi(userAgent, fakeDomHelper,
156
- { families: [ 'Font1 WithSpace:bi', 'Font2 WithSpaceToo:b,r' ] });
157
-
158
- var families = null;
159
- var descriptions = null;
160
-
161
- googleFontApi.load(function(fontFamilies, fontDescriptions) {
162
- families = fontFamilies;
163
- descriptions = fontDescriptions;
164
- });
165
-
166
- assertEquals('head', insert);
167
- assertEquals('http://fonts.googleapis.com/css?family=Font1+WithSpace:bi%7CFont2+WithSpaceToo:b,r', link);
168
-
169
- assertNotNull(families);
170
- assertEquals(2, families.length);
171
- assertEquals('Font1 WithSpace', families[0]);
172
- assertEquals('Font2 WithSpaceToo', families[1]);
173
- assertNotNull(descriptions);
174
-
175
- var font1Descriptions = descriptions['Font1 WithSpace'];
176
- assertNotNull(font1Descriptions);
177
- assertEquals(1, font1Descriptions.length);
178
- assertEquals('i7', font1Descriptions[0]);
179
-
180
- var font2Descriptions = descriptions['Font2 WithSpaceToo'];
181
- assertNotNull(font2Descriptions);
182
- assertEquals(2, font2Descriptions.length);
183
- assertEquals('n7', font2Descriptions[0]);
184
- assertEquals('n4', font2Descriptions[1]);
185
- };
@@ -1,204 +0,0 @@
1
- var LastResortWebKitFontWatchRunnerTest =
2
- TestCase('LastResortWebKitFontWatchRunnerTest');
3
-
4
- LastResortWebKitFontWatchRunnerTest.prototype.setUp = function() {
5
- var self = this;
6
-
7
- this.fontFamily_ = 'fontFamily1';
8
- this.fontDescription_ = 'n4';
9
-
10
- this.fontActiveCalled_ = 0;
11
- this.fontActive_ = {};
12
- this.fontInactiveCalled_ = 0;
13
- this.fontInactive_ = {};
14
- this.activeCallback_ = function(fontFamily, fontDescription) {
15
- self.fontActiveCalled_++;
16
- self.fontActive_[fontFamily + ' ' + fontDescription] = true;
17
- };
18
- this.inactiveCallback_ = function(fontFamily, fontDescription) {
19
- self.fontInactiveCalled_++;
20
- self.fontInactive_[fontFamily + ' ' + fontDescription] = true;
21
- };
22
-
23
- this.createElementCalled_ = 0;
24
- this.createdElements_ = [];
25
- this.insertIntoCalled_ = 0;
26
- this.removeElementCalled_ = 0;
27
- this.setStyleCalled_ = 0;
28
- this.fakeDomHelper_ = {
29
- createElement: function(name, attrs, innerHtml) {
30
- self.createElementCalled_++;
31
- self.createdElements_.push({
32
- 'name': name,
33
- 'attrs': attrs,
34
- 'innerHtml': innerHtml
35
- });
36
-
37
- var element = document.createElement(name);
38
-
39
- for (var attr in attrs) {
40
- element.setAttribute(attr, attrs[attr]);
41
- }
42
- element.innerHTML = innerHtml;
43
- return element;
44
- },
45
- insertInto: function(name, el) {
46
- self.insertIntoCalled_++;
47
- },
48
- removeElement: function(el) {
49
- self.removeElementCalled_++;
50
- },
51
- setStyle: function(e, s) {
52
- self.setStyleCalled_++;
53
- }
54
- };
55
-
56
- this.timesToGetTimeBeforeTimeout_ = 10;
57
- this.fakeGetTime_ = function() {
58
- if (self.timesToGetTimeBeforeTimeout_ <= 0) {
59
- return 6000;
60
- } else {
61
- self.timesToGetTimeBeforeTimeout_--;
62
- return 1;
63
- }
64
- };
65
-
66
- this.asyncCount_ = 0;
67
- this.fakeAsyncCall_ = function(func, timeout) {
68
- self.asyncCount_++;
69
- func();
70
- };
71
- };
72
-
73
- LastResortWebKitFontWatchRunnerTest.prototype.testLastResortFontIgnored =
74
- function() {
75
- var originalSizeCount = 2;
76
- var lastResortFontsCount = 5;
77
- var firstSize = 2;
78
- var secondSize = 2;
79
- var thirdSize = 2;
80
-
81
- var fontWatchRunner = new webfont.LastResortWebKitFontWatchRunner(
82
- this.activeCallback_,
83
- this.inactiveCallback_,
84
- this.fakeDomHelper_, {getSize: function() {
85
- if (originalSizeCount > 0) {
86
- originalSizeCount--;
87
- return new webfont.Size(1, 1);
88
- }
89
- if (lastResortFontsCount > 0) {
90
- lastResortFontsCount--;
91
- return new webfont.Size(2, 2);
92
- }
93
- if (firstSize > 0) {
94
- firstSize--;
95
- return new webfont.Size(1, 1);
96
- }
97
- if (secondSize > 0) {
98
- secondSize--;
99
- return new webfont.Size(2, 2);
100
- }
101
- if (thirdSize > 0) {
102
- thirdSize--;
103
- return new webfont.Size(3, 3);
104
- }
105
- }}, this.fakeAsyncCall_, this.fakeGetTime_, this.fontFamily_,
106
- this.fontDescription_, false);
107
-
108
- fontWatchRunner.start();
109
- assertEquals(1, this.asyncCount_);
110
-
111
- // When on webkit time out ends up activating the font.
112
- assertEquals(1, this.fontActiveCalled_);
113
- assertEquals(0, this.fontInactiveCalled_);
114
- assertEquals(true, this.fontActive_['fontFamily1 n4']);
115
- };
116
-
117
- LastResortWebKitFontWatchRunnerTest.prototype.testLastResortFontActiveWhenSizeMatch
118
- = function() {
119
- this.timesToGetTimeBeforeTimeout_ = 3;
120
- var originalSizeCount = 2;
121
- var lastResortFontsCount = 5;
122
- var firstSize = 2;
123
-
124
- this.fontFamily_ = "Arimo";
125
-
126
- var fontWatchRunner = new webfont.LastResortWebKitFontWatchRunner(
127
- this.activeCallback_,
128
- this.inactiveCallback_,
129
- this.fakeDomHelper_, {getSize: function() {
130
- if (originalSizeCount > 0) {
131
- originalSizeCount--;
132
- return new webfont.Size(1, 1);
133
- }
134
- if (lastResortFontsCount > 0) {
135
- lastResortFontsCount--;
136
- return new webfont.Size(2, 2);
137
- }
138
- if (firstSize > 0) {
139
- firstSize--;
140
- return new webfont.Size(1, 1);
141
- }
142
- return new webfont.Size(2, 2);
143
- }}, this.fakeAsyncCall_, this.fakeGetTime_, this.fontFamily_,
144
- this.fontDescription_, false);
145
-
146
- fontWatchRunner.start();
147
-
148
- assertEquals(2, this.asyncCount_);
149
-
150
- assertEquals(1, this.fontActiveCalled_);
151
- assertEquals(0, this.fontInactiveCalled_);
152
- assertEquals(true, this.fontActive_['Arimo n4']);
153
- };
154
-
155
- LastResortWebKitFontWatchRunnerTest.prototype.testLastResortFontInactiveWhenSizeNoMatch
156
- = function() {
157
- this.timesToGetTimeBeforeTimeout_ = 3;
158
- var originalSizeCount = 2;
159
- var lastResortFontsCount = 5;
160
- var firstSize = 2;
161
- var secondSize = 2;
162
- var thirdSize = 2;
163
-
164
- var fontWatchRunner = new webfont.LastResortWebKitFontWatchRunner(
165
- this.activeCallback_,
166
- this.inactiveCallback_,
167
- this.fakeDomHelper_, {getSize: function(elem) {
168
- if (originalSizeCount > 0) {
169
- originalSizeCount--;
170
- return new webfont.Size(1, 1);
171
- }
172
- if (lastResortFontsCount > 0) {
173
- lastResortFontsCount--;
174
- return new webfont.Size(2, 2);
175
- }
176
- if (firstSize > 0) {
177
- firstSize--;
178
- return new webfont.Size(1, 1)
179
- }
180
- if (secondSize > 0) {
181
- secondSize--;
182
- return new webfont.Size(2, 2)
183
- }
184
- if (thirdSize == 2) {
185
- thirdSize--;
186
- return new webfont.Size(2, 2);
187
- }
188
- if (thirdSize == 1) {
189
- thirdSize--;
190
- return new webfont.Size(4, 4);
191
- }
192
- return new webfont.Size(2, 2);
193
- }}, this.fakeAsyncCall_, this.fakeGetTime_, this.fontFamily_,
194
- this.fontDescription_, false);
195
-
196
- fontWatchRunner.start();
197
-
198
- assertEquals(2, this.asyncCount_);
199
-
200
- // When on webkit time out ends up activating the font.
201
- assertEquals(0, this.fontActiveCalled_);
202
- assertEquals(1, this.fontInactiveCalled_);
203
- assertEquals(true, this.fontInactive_['fontFamily1 n4']);
204
- };
@@ -1,304 +0,0 @@
1
- var MonotypeScriptTest = TestCase('MonotypeScriptTest');
2
-
3
- MonotypeScriptTest.prototype.testIfScriptTagIsAdded = function () {
4
- var fakedom = { 'head': [], 'body': [] };
5
- var script = null;
6
- var global = {}; // should be window in actual situation.
7
- var families = null;
8
- var config = { projectId: '01e2ff27-25bf-4801-a23e-73d328e6c7cc', api: "http://fast.fonts.com/jsapidev" };
9
-
10
- var fakeDomHelper = {
11
- createElement: function () {
12
- script = {
13
- addEventListener: function () {}
14
- };
15
- return script;
16
- },
17
- insertInto: function (tag, elem) {
18
- fakedom[tag].push(elem);
19
- global[webfont.MonotypeScript.HOOK + config.projectId] = function () {
20
- return ["aachen bold", "kid print regualr"];
21
- };
22
- if (script.onload) {
23
- script.onload();
24
- }
25
- },
26
- getLoadWindow: function () {
27
- return global;
28
- },
29
- getProtocol: function () {
30
- return "http:";
31
- }
32
- };
33
-
34
- function getElementById(Id) {
35
- var p;
36
- for (p in fakedom) {
37
- if (fakedom[p].length > 0) {
38
- for (i = 0; i < fakedom[p].length; i++) {
39
- if (fakedom[p][i].id === Id) {
40
- return fakedom[p][i];
41
- }
42
- }
43
- }
44
- }
45
- return null;
46
- }
47
- var isSupport = null;
48
- var userAgent = new webfont.UserAgent("Test", "1.0", "TestEngine", "2.0", "TestPlatform", "3.0", undefined, new webfont.BrowserInfo(false, false));
49
- var monotypeScript = new webfont.MonotypeScript(userAgent, fakeDomHelper, config);
50
- monotypeScript.supportUserAgent(userAgent, function (support) { isSupport = support; });
51
- monotypeScript.load(function (fontFamilies) {
52
- families = fontFamilies;
53
- });
54
- script = getElementById(webfont.MonotypeScript.SCRIPTID + config.projectId);
55
-
56
- assertEquals(null, isSupport);
57
- assertNotNull(script);
58
- assertEquals("http://fast.fonts.com/jsapidev/01e2ff27-25bf-4801-a23e-73d328e6c7cc.js", script.src);
59
- assertEquals(2, families.length);
60
- };
61
-
62
- //If current page is browsed using https protocol, the added script should be requested with SSL.
63
- MonotypeScriptTest.prototype.testIfScriptTagHasCorrectSSL = function () {
64
- var fakedom = { 'head': [], 'body': [] };
65
- var fakeProtocol = "https:";
66
- var script = null;
67
- var global = {}; // should be window in actual situation.
68
- var families = null;
69
- var config = { projectId: '01e2ff27-25bf-4801-a23e-73d328e6c7cc', api: "http://fast.fonts.com/jsapidev" };
70
-
71
- var fakeDomHelper = {
72
- createElement: function () {
73
- script = {
74
- addEventListener: function () {}
75
- };
76
- return script;
77
- },
78
- insertInto: function (tag, elem) {
79
- fakedom[tag].push(elem);
80
- global[webfont.MonotypeScript.HOOK + config.projectId] = function () {
81
- return ["aachen bold", "kid print regualr"];
82
- };
83
- if (script.onload) {
84
- script.onload();
85
- }
86
- },
87
- getLoadWindow: function () {
88
- return global;
89
- },
90
- getProtocol: function () {
91
- return fakeProtocol;
92
- }
93
- };
94
-
95
- //trys to simulates exactly the getElementById behaviour, by returning the first found element.
96
- function getElementById(Id) {
97
- var p;
98
- for (p in fakedom) {
99
- if (fakedom[p].length > 0) {
100
- for (i = 0; i < fakedom[p].length; i++) {
101
- if (fakedom[p][i].id === Id) {
102
- return fakedom[p][i];
103
- }
104
- }
105
- }
106
- }
107
- return null;
108
- }
109
- var isSupport = null;
110
- var userAgent = new webfont.UserAgent("Test", "1.0", "TestEngine", "2.0", "TestPlatform", "3.0", undefined, new webfont.BrowserInfo(false, false));
111
- var monotypeScript = new webfont.MonotypeScript(userAgent, fakeDomHelper, config);
112
- monotypeScript.supportUserAgent(userAgent, function (support) { isSupport = support; });
113
- monotypeScript.load(function (fontFamilies) {
114
- families = fontFamilies;
115
- });
116
- script = getElementById(webfont.MonotypeScript.SCRIPTID + config.projectId);
117
-
118
- assertEquals(null, isSupport);
119
- assertNotNull(script);
120
- assertEquals("https://fast.fonts.com/jsapidev/01e2ff27-25bf-4801-a23e-73d328e6c7cc.js", script.src);
121
- assertEquals(2, families.length);
122
-
123
- //one page can have multiple projects, but not 2 projects with same projectId.
124
- config = { projectId: '01e2ff27-25bf-4801-a23e-73d328e6c7c1', api: "http://fast.fonts.com/jsapidev" };
125
- fakeProtocol = "http:";
126
- var monotypeScript2 = new webfont.MonotypeScript(userAgent, fakeDomHelper, config);
127
- monotypeScript2.supportUserAgent(userAgent, function (support) { isSupport = support; });
128
- monotypeScript2.load(function (fontFamilies) {
129
- families = fontFamilies;
130
- });
131
- script = getElementById(webfont.MonotypeScript.SCRIPTID + config.projectId);
132
- assertEquals(null, isSupport);
133
- assertNotNull(script);
134
- assertEquals("http://fast.fonts.com/jsapidev/01e2ff27-25bf-4801-a23e-73d328e6c7c1.js", script.src);
135
- assertEquals(2, families.length);
136
- };
137
-
138
- MonotypeScriptTest.prototype.testIfScriptTagIsAddedWithoutApiurl = function () {
139
- var fakedom = { 'head': [], 'body': [] };
140
- var global = {}; // should be window in actual situation.
141
- var script = null;
142
- var families = null;
143
- var config = { projectId: '01e2ff27-25bf-4801-a23e-73d328e6c7cc' };
144
-
145
- var fakeDomHelper = {
146
- createElement: function () {
147
- script = {
148
- addEventListener: function () {}
149
- };
150
- return script;
151
- },
152
- insertInto: function (tag, elem) {
153
- fakedom[tag].push(elem);
154
- global[webfont.MonotypeScript.HOOK + config.projectId] = function () {
155
- return ["aachen bold", "kid print regualr"];
156
- };
157
- if (script.onload) {
158
- script.onload();
159
- }
160
- },
161
- getLoadWindow: function () {
162
- return global;
163
- },
164
- getProtocol: function () {
165
- return "http:";
166
- }
167
- };
168
-
169
- function getElementById(Id) {
170
- var p;
171
- for (p in fakedom) {
172
- if (fakedom[p].length > 0) {
173
- for (i = 0; i < fakedom[p].length; i++) {
174
- if (fakedom[p][i].id === Id) {
175
- return fakedom[p][i];
176
- }
177
- }
178
- }
179
- }
180
- return null;
181
- }
182
-
183
- var isSupport = null;
184
- var userAgent = new webfont.UserAgent("Test", "1.0", "TestEngine", "2.0", "TestPlatform", "3.0", undefined, new webfont.BrowserInfo(false, false));
185
- var monotypeScript = new webfont.MonotypeScript(userAgent, fakeDomHelper, config);
186
- monotypeScript.supportUserAgent(userAgent, function (support) { isSupport = support; });
187
-
188
- monotypeScript.load(function (fontFamilies) {
189
- families = fontFamilies;
190
- });
191
- //just for testing purpose
192
- script = getElementById(webfont.MonotypeScript.SCRIPTID + config.projectId);
193
-
194
- assertNotNull(script);
195
- assertEquals("http://fast.fonts.com/jsapi/01e2ff27-25bf-4801-a23e-73d328e6c7cc.js", script.src);
196
- assertEquals(2, families.length);
197
- };
198
-
199
- //If current page is browsed using https protocol, the added script should be requested with SSL.
200
- MonotypeScriptTest.prototype.testIfScriptTagIsAddedWithoutApiurlAndTheScriptUrlHasCorrectSSL = function () {
201
- var fakedom = { 'head': [], 'body': [] };
202
- var global = {}; // should be window in actual situation.
203
- var script = null;
204
- var families = null;
205
- var config = { projectId: '01e2ff27-25bf-4801-a23e-73d328e6c7cc' };
206
-
207
- var fakeDomHelper = {
208
- createElement: function () {
209
- script = {
210
- addEventListener: function () {}
211
- };
212
- return script;
213
- },
214
- insertInto: function (tag, elem) {
215
- fakedom[tag].push(elem);
216
- global[webfont.MonotypeScript.HOOK + config.projectId] = function () {
217
- return ["aachen bold", "kid print regualr"];
218
- };
219
- if (script.onload) {
220
- script.onload();
221
- }
222
- },
223
- getLoadWindow: function () {
224
- return global;
225
- },
226
- getProtocol: function () {
227
- return "https:";
228
- }
229
- };
230
-
231
- function getElementById(Id) {
232
- var p;
233
- for (p in fakedom) {
234
- if (fakedom[p].length > 0) {
235
- for (i = 0; i < fakedom[p].length; i++) {
236
- if (fakedom[p][i].id === Id) {
237
- return fakedom[p][i];
238
- }
239
- }
240
- }
241
- }
242
- return null;
243
- }
244
-
245
- var isSupport = null;
246
- var userAgent = new webfont.UserAgent("Test", "1.0", "TestEngine", "2.0", "TestPlatform", "3.0", undefined, new webfont.BrowserInfo(false, false));
247
- var monotypeScript = new webfont.MonotypeScript(userAgent, fakeDomHelper, config);
248
- monotypeScript.supportUserAgent(userAgent, function (support) { isSupport = support; });
249
-
250
- monotypeScript.load(function (fontFamilies) {
251
- families = fontFamilies;
252
- });
253
- //just for testing purpose
254
- script = getElementById(webfont.MonotypeScript.SCRIPTID + config.projectId);
255
-
256
- assertNotNull(script);
257
- assertEquals("https://fast.fonts.com/jsapi/01e2ff27-25bf-4801-a23e-73d328e6c7cc.js", script.src);
258
- assertEquals(2, families.length);
259
- };
260
-
261
- //if no projectId is provided in config, the script should not be added.
262
- MonotypeScriptTest.prototype.testWithoutProjectId = function () {
263
- var fakedom = { 'head': [], 'body': [] };
264
- var global = {}; // should be window in actual situation.
265
- var script = null;
266
- var families = null;
267
- var config = {};
268
-
269
- var fakeDomHelper = {
270
- createElement: function () {
271
- script = {
272
- addEventListener: function () {}
273
- };
274
- return script;
275
- },
276
- insertInto: function (tag, elem) {
277
- fakedom[tag].push(elem);
278
- global[webfont.MonotypeScript.HOOK + config.projectId] = function () {
279
- return ["aachen bold", "kid print regualr"];
280
- };
281
- if (script.onload) {
282
- script.onload();
283
- }
284
- },
285
- getLoadWindow: function () {
286
- return global;
287
- },
288
- getProtocol: function () {
289
- return "http:";
290
- }
291
- };
292
-
293
- var isSupport = null;
294
- var userAgent = new webfont.UserAgent("Test", "1.0", "TestEngine", "2.0", "TestPlatform", "3.0", undefined, new webfont.BrowserInfo(false, false));
295
- var monotypeScript = new webfont.MonotypeScript(userAgent, fakeDomHelper, config);
296
- monotypeScript.supportUserAgent(userAgent, function (support) { isSupport = support; });
297
-
298
- monotypeScript.load(function (fontFamilies) {
299
- families = fontFamilies;
300
- });
301
- assertNull(script);
302
- assertEquals(0, families.length);
303
-
304
- };