webfontloader 1.4.3 → 1.4.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -19,8 +19,8 @@ describe('UserAgentParser', function () {
19
19
  return false;
20
20
  }
21
21
 
22
- if (actual.getVersion().ne(expected.version)) {
23
- this.message = msg('version', actual.getVersion(), expected.version);
22
+ if (actual.getParsedVersion().ne(expected.version)) {
23
+ this.message = msg('version', actual.getParsedVersion(), expected.version);
24
24
  return false;
25
25
  }
26
26
 
@@ -29,8 +29,8 @@ describe('UserAgentParser', function () {
29
29
  return false;
30
30
  }
31
31
 
32
- if (actual.getPlatformVersion().ne(expected.platformVersion)) {
33
- this.message = msg('platform version', actual.getPlatformVersion(), expected.platformVersion);
32
+ if (actual.getParsedPlatformVersion().ne(expected.platformVersion)) {
33
+ this.message = msg('platform version', actual.getParsedPlatformVersion(), expected.platformVersion);
34
34
  return false;
35
35
  }
36
36
 
@@ -39,8 +39,8 @@ describe('UserAgentParser', function () {
39
39
  return false;
40
40
  }
41
41
 
42
- if (actual.getEngineVersion().ne(expected.engineVersion)) {
43
- this.message = msg('engine version', actual.getEngineVersion(), expected.engineVersion);
42
+ if (actual.getParsedEngineVersion().ne(expected.engineVersion)) {
43
+ this.message = msg('engine version', actual.getParsedEngineVersion(), expected.engineVersion);
44
44
  return false;
45
45
  }
46
46
 
@@ -2,13 +2,26 @@ describe('WebFont', function () {
2
2
  var WebFont = webfont.WebFont,
3
3
  UserAgent = webfont.UserAgent,
4
4
  BrowserInfo = webfont.BrowserInfo,
5
+ Version = webfont.Version,
5
6
  Font = webfont.Font,
6
7
  FontModuleLoader = webfont.FontModuleLoader,
7
8
  fontModuleLoader = null,
8
9
  userAgent = null;
9
10
 
10
11
  beforeEach(function () {
11
- userAgent = new UserAgent('Firefox', '3.6', 'Gecko', '1.9.2', 'Macintosh', '10.6', undefined, new BrowserInfo(true, false, false));
12
+ userAgent = new UserAgent(
13
+ 'Firefox',
14
+ new Version(3, 6),
15
+ '3.6',
16
+ 'Gecko',
17
+ new Version(1, 9, 2),
18
+ '1.9.2',
19
+ 'Macintosh',
20
+ new Version(10, 6),
21
+ '10.6',
22
+ undefined,
23
+ new BrowserInfo(true, false, false)
24
+ );
12
25
  fontModuleLoader = new FontModuleLoader();
13
26
  });
14
27
 
@@ -121,7 +134,7 @@ describe('WebFont', function () {
121
134
  beforeEach(function () {
122
135
  font = new Font('Font1');
123
136
  jasmine.Clock.useMock();
124
- webfont = new WebFont(window, fontModuleLoader, new UserAgent('Firefox', '3.6', 'Gecko', '1.9.2', 'Macintosh', '10.6', undefined, new BrowserInfo(true, false)));
137
+ webfont = new WebFont(window, fontModuleLoader, userAgent);
125
138
  webfont.addModule('test', function (conf, domHelper) {
126
139
  testModule = new function () {
127
140
  this.conf = conf;
@@ -197,7 +210,7 @@ describe('WebFont', function () {
197
210
  testModule = null;
198
211
 
199
212
  beforeEach(function () {
200
- font = new WebFont(window, fontModuleLoader, new UserAgent('Firefox', '3.6', 'Gecko', '1.9.2', 'Macintosh', '10.6', undefined, new BrowserInfo(true, false, false)));
213
+ font = new WebFont(window, fontModuleLoader, userAgent);
201
214
 
202
215
  font.addModule('test', function (conf, domHelper) {
203
216
  testModule = new function () {};
@@ -228,7 +241,19 @@ describe('WebFont', function () {
228
241
  testModule = null;
229
242
 
230
243
  beforeEach(function () {
231
- font = new WebFont(window, fontModuleLoader, new UserAgent('Firefox', '3.6', 'Gecko', '1.9.2', 'Macintosh', '10.6', undefined, new BrowserInfo(false, false, false)));
244
+ font = new WebFont(window, fontModuleLoader, new UserAgent(
245
+ 'Firefox',
246
+ new Version(3, 6),
247
+ '3.6',
248
+ 'Gecko',
249
+ new Version(1, 9, 2),
250
+ '1.9.2',
251
+ 'Macintosh',
252
+ new Version(10, 6),
253
+ '10.6',
254
+ undefined,
255
+ new BrowserInfo(false, false, false)
256
+ ));
232
257
  font.addModule('test', function (conf, domHelper) {
233
258
  testModule = new function () {
234
259
  this.conf = conf;
@@ -2,7 +2,8 @@ describe('MonotypeScript', function () {
2
2
  var MonotypeScript = webfont.MonotypeScript,
3
3
  Font = webfont.Font,
4
4
  BrowserInfo = webfont.BrowserInfo,
5
- UserAgent = webfont.UserAgent;
5
+ UserAgent = webfont.UserAgent,
6
+ Version = webfont.Version;
6
7
 
7
8
  var configuration = {
8
9
  projectId: '01e2ff27-25bf-4801-a23e-73d328e6c7cc',
@@ -28,7 +29,19 @@ describe('MonotypeScript', function () {
28
29
  };
29
30
  support = jasmine.createSpy('support');
30
31
  load = jasmine.createSpy('load');
31
- useragent = new UserAgent('Firefox', '3.6', 'Gecko', '1.9.3', 'Macintosh', '10.6', undefined, new BrowserInfo(true, false, false));
32
+ useragent = new UserAgent(
33
+ 'Firefox',
34
+ new Version(3, 6),
35
+ '3.6',
36
+ 'Gecko',
37
+ new Version(1, 9, 3),
38
+ '1.9.3',
39
+ 'Macintosh',
40
+ new Version(10, 6),
41
+ '10.6',
42
+ undefined,
43
+ new BrowserInfo(true, false, false)
44
+ );
32
45
 
33
46
  monotype = new MonotypeScript(useragent, fakeDomHelper, configuration);
34
47
  monotype.supportUserAgent(useragent, support);
@@ -1,25 +1,49 @@
1
1
  goog.provide('webfont.UserAgent');
2
2
 
3
3
  /**
4
+ * A user agent string representation.
5
+ *
6
+ * This currently keeps a string and parsed `Version` representation
7
+ * of version strings. This is done for backwards compatibility with
8
+ * older versions of Typekit's KitJS when loaded through the Web Font
9
+ * Loader. The old string based API is deprecated and will eventually
10
+ * be removed.
11
+ *
4
12
  * @export
5
13
  * @param {string} name
6
14
  * @param {webfont.Version} version
15
+ * @param {string} versionString
7
16
  * @param {string} engine
8
17
  * @param {webfont.Version} engineVersion
18
+ * @param {string} engineVersionString
9
19
  * @param {string} platform
10
20
  * @param {webfont.Version} platformVersion
21
+ * @param {string} platformVersionString
11
22
  * @param {number|undefined} documentMode
12
23
  * @param {!webfont.BrowserInfo} browserInfo
13
24
  * @constructor
14
25
  */
15
- webfont.UserAgent = function(name, version, engine, engineVersion, platform,
16
- platformVersion, documentMode, browserInfo) {
26
+ webfont.UserAgent = function(
27
+ name,
28
+ version,
29
+ versionString,
30
+ engine,
31
+ engineVersion,
32
+ engineVersionString,
33
+ platform,
34
+ platformVersion,
35
+ platformVersionString,
36
+ documentMode,
37
+ browserInfo) {
17
38
  this.name_ = name;
18
39
  this.version_ = version;
40
+ this.versionString_ = versionString;
19
41
  this.engine_ = engine;
20
42
  this.engineVersion_ = engineVersion;
43
+ this.engineVersionString_ = engineVersionString;
21
44
  this.platform_ = platform;
22
45
  this.platformVersion_ = platformVersion;
46
+ this.platformVersionString_ = platformVersionString;
23
47
  this.documentMode_ = documentMode;
24
48
  this.browserInfo_ = browserInfo;
25
49
  };
@@ -37,9 +61,17 @@ goog.scope(function () {
37
61
 
38
62
  /**
39
63
  * @export
40
- * @return {webfont.Version}
64
+ * @deprecated
65
+ * @return {string}
41
66
  */
42
67
  UserAgent.prototype.getVersion = function() {
68
+ return this.versionString_;
69
+ };
70
+
71
+ /**
72
+ * @return {webfont.Version}
73
+ */
74
+ UserAgent.prototype.getParsedVersion = function() {
43
75
  return this.version_;
44
76
  };
45
77
 
@@ -53,9 +85,17 @@ goog.scope(function () {
53
85
 
54
86
  /**
55
87
  * @export
56
- * @return {webfont.Version}
88
+ * @deprecated
89
+ * @return {string}
57
90
  */
58
91
  UserAgent.prototype.getEngineVersion = function() {
92
+ return this.engineVersionString_;
93
+ };
94
+
95
+ /**
96
+ * @return {webfont.Version}
97
+ */
98
+ UserAgent.prototype.getParsedEngineVersion = function() {
59
99
  return this.engineVersion_;
60
100
  };
61
101
 
@@ -69,9 +109,17 @@ goog.scope(function () {
69
109
 
70
110
  /**
71
111
  * @export
72
- * @return {webfont.Version}
112
+ * @deprecated
113
+ * @return {string}
73
114
  */
74
115
  UserAgent.prototype.getPlatformVersion = function() {
116
+ return this.platformVersionString_;
117
+ };
118
+
119
+ /**
120
+ * @return {webfont.Version}
121
+ */
122
+ UserAgent.prototype.getParsedPlatformVersion = function() {
75
123
  return this.platformVersion_;
76
124
  };
77
125
 
@@ -37,9 +37,12 @@ webfont.UserAgentParser.UNKNOWN_USER_AGENT = new webfont.UserAgent(
37
37
  webfont.UserAgentParser.UNKNOWN,
38
38
  new webfont.Version(),
39
39
  webfont.UserAgentParser.UNKNOWN,
40
+ webfont.UserAgentParser.UNKNOWN,
40
41
  new webfont.Version(),
41
42
  webfont.UserAgentParser.UNKNOWN,
43
+ webfont.UserAgentParser.UNKNOWN,
42
44
  new webfont.Version(),
45
+ webfont.UserAgentParser.UNKNOWN,
43
46
  undefined,
44
47
  new webfont.BrowserInfo(false, false, false));
45
48
 
@@ -144,16 +147,29 @@ goog.scope(function () {
144
147
  */
145
148
  UserAgentParser.prototype.parseIeUserAgentString_ = function() {
146
149
  var platform = this.getPlatform_(),
147
- platformVersion = Version.parse(this.getPlatformVersionString_()),
148
- browserVersion = Version.parse(this.getMatchingGroup_(this.userAgent_, /MSIE ([\d\w\.]+)/, 1)),
150
+ platformVersionString = this.getPlatformVersionString_(),
151
+ platformVersion = Version.parse(platformVersionString),
152
+ browserVersionString = this.getMatchingGroup_(this.userAgent_, /MSIE ([\d\w\.]+)/, 1),
153
+ browserVersion = Version.parse(browserVersionString),
149
154
  documentMode = this.getDocumentMode_(this.doc_),
150
155
  supportWebFont = (platform == "Windows" && browserVersion.major >= 6) ||
151
156
  (platform == "Windows Phone" && platformVersion.major >= 8);
152
157
 
153
158
  // For IE we give MSIE as the engine name and the version of IE
154
159
  // instead of the specific Trident engine name and version
155
- return new UserAgent("MSIE", browserVersion, "MSIE", browserVersion,
156
- platform, platformVersion, documentMode, new BrowserInfo(supportWebFont, false, false));
160
+ return new UserAgent(
161
+ "MSIE",
162
+ browserVersion,
163
+ browserVersionString,
164
+ "MSIE",
165
+ browserVersion,
166
+ browserVersionString,
167
+ platform,
168
+ platformVersion,
169
+ platformVersionString,
170
+ documentMode,
171
+ new BrowserInfo(supportWebFont, false, false)
172
+ );
157
173
  };
158
174
 
159
175
  /**
@@ -168,8 +184,10 @@ goog.scope(function () {
168
184
  */
169
185
  UserAgentParser.prototype.parseOperaUserAgentString_ = function() {
170
186
  var engineName = UserAgentParser.UNKNOWN,
171
- engineVersion = Version.parse(this.getMatchingGroup_(this.userAgent_, /Presto\/([\d\w\.]+)/, 1)),
172
- platformVersion = Version.parse(this.getPlatformVersionString_()),
187
+ engineVersionString = this.getMatchingGroup_(this.userAgent_, /Presto\/([\d\w\.]+)/, 1),
188
+ engineVersion = Version.parse(engineVersionString),
189
+ platformVersionString = this.getPlatformVersionString_(),
190
+ platformVersion = Version.parse(platformVersionString),
173
191
  documentMode = this.getDocumentMode_(this.doc_);
174
192
 
175
193
  if (engineVersion.isValid()) {
@@ -178,35 +196,82 @@ goog.scope(function () {
178
196
  if (this.userAgent_.indexOf("Gecko") != -1) {
179
197
  engineName = "Gecko";
180
198
  }
181
- engineVersion = Version.parse(this.getMatchingGroup_(this.userAgent_, /rv:([^\)]+)/, 1));
199
+ engineVersionString = this.getMatchingGroup_(this.userAgent_, /rv:([^\)]+)/, 1);
200
+ engineVersion = Version.parse(engineVersionString);
182
201
  }
183
202
 
184
203
  // Check for Opera Mini first, since it looks like normal Opera
185
204
  if (this.userAgent_.indexOf("Opera Mini/") != -1) {
186
- var browserVersion = Version.parse(this.getMatchingGroup_(this.userAgent_, /Opera Mini\/([\d\.]+)/, 1));
187
-
188
- return new UserAgent("OperaMini", browserVersion, engineName,
189
- engineVersion, this.getPlatform_(), platformVersion,
190
- documentMode, new BrowserInfo(false, false, false));
205
+ var browserVersionString = this.getMatchingGroup_(this.userAgent_, /Opera Mini\/([\d\.]+)/, 1);
206
+ var browserVersion = Version.parse(browserVersionString);
207
+
208
+ return new UserAgent(
209
+ "OperaMini",
210
+ browserVersion,
211
+ browserVersionString,
212
+ engineName,
213
+ engineVersion,
214
+ engineVersionString,
215
+ this.getPlatform_(),
216
+ platformVersion,
217
+ platformVersionString,
218
+ documentMode,
219
+ new BrowserInfo(false, false, false)
220
+ );
191
221
  }
192
222
 
193
223
  // Otherwise, find version information for normal Opera or Opera Mobile
194
224
  if (this.userAgent_.indexOf("Version/") != -1) {
195
- var browserVersion = Version.parse(this.getMatchingGroup_(this.userAgent_, /Version\/([\d\.]+)/, 1));
225
+ var browserVersionString = this.getMatchingGroup_(this.userAgent_, /Version\/([\d\.]+)/, 1);
226
+ var browserVersion = Version.parse(browserVersionString);
196
227
 
197
228
  if (browserVersion.isValid()) {
198
- return new UserAgent("Opera", browserVersion, engineName, engineVersion, this.getPlatform_(),
199
- platformVersion, documentMode, new BrowserInfo(browserVersion.major >= 10, false, false));
229
+ return new UserAgent(
230
+ "Opera",
231
+ browserVersion,
232
+ browserVersionString,
233
+ engineName,
234
+ engineVersion,
235
+ engineVersionString,
236
+ this.getPlatform_(),
237
+ platformVersion,
238
+ platformVersionString,
239
+ documentMode,
240
+ new BrowserInfo(browserVersion.major >= 10, false, false)
241
+ );
200
242
  }
201
243
  }
202
- var browserVersion = Version.parse(this.getMatchingGroup_(this.userAgent_, /Opera[\/ ]([\d\.]+)/, 1));
244
+ var browserVersionString = this.getMatchingGroup_(this.userAgent_, /Opera[\/ ]([\d\.]+)/, 1);
245
+ var browserVersion = Version.parse(browserVersionString);
203
246
 
204
247
  if (browserVersion.isValid()) {
205
- return new UserAgent("Opera", browserVersion, engineName, engineVersion, this.getPlatform_(),
206
- platformVersion, documentMode, new BrowserInfo(browserVersion.major >= 10, false, false));
248
+ return new UserAgent(
249
+ "Opera",
250
+ browserVersion,
251
+ browserVersionString,
252
+ engineName,
253
+ engineVersion,
254
+ engineVersionString,
255
+ this.getPlatform_(),
256
+ platformVersion,
257
+ platformVersionString,
258
+ documentMode,
259
+ new BrowserInfo(browserVersion.major >= 10, false, false)
260
+ );
207
261
  }
208
- return new UserAgent("Opera", new Version(), engineName, engineVersion, this.getPlatform_(),
209
- platformVersion, documentMode, new BrowserInfo(false, false, false));
262
+ return new UserAgent(
263
+ "Opera",
264
+ new Version(),
265
+ UserAgentParser.UNKNOWN,
266
+ engineName,
267
+ engineVersion,
268
+ engineVersionString,
269
+ this.getPlatform_(),
270
+ platformVersion,
271
+ platformVersionString,
272
+ documentMode,
273
+ new BrowserInfo(false, false, false)
274
+ );
210
275
  };
211
276
 
212
277
  /**
@@ -221,10 +286,13 @@ goog.scope(function () {
221
286
  */
222
287
  UserAgentParser.prototype.parseWebKitUserAgentString_ = function() {
223
288
  var platform = this.getPlatform_(),
224
- platformVersion = Version.parse(this.getPlatformVersionString_()),
225
- webKitVersion = Version.parse(this.getMatchingGroup_(this.userAgent_, /AppleWeb(?:K|k)it\/([\d\.\+]+)/, 1)),
289
+ platformVersionString = this.getPlatformVersionString_(),
290
+ platformVersion = Version.parse(platformVersionString),
291
+ webKitVersionString = this.getMatchingGroup_(this.userAgent_, /AppleWeb(?:K|k)it\/([\d\.\+]+)/, 1),
292
+ webKitVersion = Version.parse(webKitVersionString),
226
293
  browserName = UserAgentParser.UNKNOWN,
227
294
  browserVersion = new Version(),
295
+ browserVersionString = UserAgentParser.UNKNOWN,
228
296
  supportWebFont = false;
229
297
 
230
298
  if (this.userAgent_.indexOf("Chrome") != -1 ||
@@ -266,8 +334,19 @@ goog.scope(function () {
266
334
  var hasWebKitFallbackBug = webKitVersion.major < 536 || (webKitVersion.major == 536 && webKitVersion.minor < 11),
267
335
  hasWebKitMetricsBug = platform == 'iPhone' || platform == 'iPad' || platform == 'iPod' || platform == 'Macintosh';
268
336
 
269
- return new UserAgent(browserName, browserVersion, "AppleWebKit", webKitVersion, platform, platformVersion,
270
- this.getDocumentMode_(this.doc_), new BrowserInfo(supportWebFont, hasWebKitFallbackBug, hasWebKitMetricsBug));
337
+ return new UserAgent(
338
+ browserName,
339
+ browserVersion,
340
+ browserVersionString,
341
+ "AppleWebKit",
342
+ webKitVersion,
343
+ webKitVersionString,
344
+ platform,
345
+ platformVersion,
346
+ platformVersionString,
347
+ this.getDocumentMode_(this.doc_),
348
+ new BrowserInfo(supportWebFont, hasWebKitFallbackBug, hasWebKitMetricsBug)
349
+ );
271
350
  };
272
351
 
273
352
  /**
@@ -283,12 +362,15 @@ goog.scope(function () {
283
362
  UserAgentParser.prototype.parseGeckoUserAgentString_ = function() {
284
363
  var name = UserAgentParser.UNKNOWN,
285
364
  version = new Version(),
286
- platformVersion = Version.parse(this.getPlatformVersionString_()),
365
+ versionString = UserAgentParser.UNKNOWN,
366
+ platformVersionString = this.getPlatformVersionString_(),
367
+ platformVersion = Version.parse(platformVersionString),
287
368
  supportWebFont = false;
288
369
 
289
370
  if (this.userAgent_.indexOf("Firefox") != -1) {
290
371
  name = "Firefox";
291
- version = Version.parse(this.getMatchingGroup_(this.userAgent_, /Firefox\/([\d\w\.]+)/, 1));
372
+ versionString = this.getMatchingGroup_(this.userAgent_, /Firefox\/([\d\w\.]+)/, 1);
373
+ version = Version.parse(versionString);
292
374
  supportWebFont = version.major >= 3 && version.minor >= 5;
293
375
  } else if (this.userAgent_.indexOf("Mozilla") != -1) {
294
376
  name = "Mozilla";
@@ -304,8 +386,19 @@ goog.scope(function () {
304
386
  engineVersionString.match(/1\.9\.1b[123]/) != null ||
305
387
  engineVersionString.match(/1\.9\.1\.[\d\.]+/) != null;
306
388
  }
307
- return new UserAgent(name, version, "Gecko", engineVersion,
308
- this.getPlatform_(), platformVersion, this.getDocumentMode_(this.doc_), new BrowserInfo(supportWebFont, false, false));
389
+ return new UserAgent(
390
+ name,
391
+ version,
392
+ versionString,
393
+ "Gecko",
394
+ engineVersion,
395
+ engineVersionString,
396
+ this.getPlatform_(),
397
+ platformVersion,
398
+ platformVersionString,
399
+ this.getDocumentMode_(this.doc_),
400
+ new BrowserInfo(supportWebFont, false, false)
401
+ );
309
402
  };
310
403
 
311
404
  /**