webfontloader 1.4.7 → 1.4.8

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,9 @@
1
+ v1.4.8 (June 24, 2013)
2
+ * Add support for the Chromium based Opera browser
3
+ * Change the debug task to do a Closure Compiler debug build
4
+ * Fix a global variable leak in the compiled output
5
+ * Add support for the PhantomJS user agent string
6
+
1
7
  v1.4.7 (June 6, 2013)
2
8
  * Fix backwards compatibility with version strings for Chrome
3
9
  * Restore specs that test against version strings for backwards compatibility with the old UserAgent API.
data/README.md CHANGED
@@ -24,7 +24,7 @@ Web Font Loader gives you added control when using linked fonts via `@font-face`
24
24
 
25
25
  To use the Web Font Loader library, just include it in your page and tell it which fonts to load. For example, you could load fonts from [Google Fonts](http://www.google.com/fonts/) using the Web Font Loader hosted on [Google Hosted Libraries](https://developers.google.com/speed/libraries/) using the following code.
26
26
 
27
- <script src="//ajax.googleapis.com/ajax/libs/webfont/1.4.2/webfont.js"></script>
27
+ <script src="//ajax.googleapis.com/ajax/libs/webfont/1.4.7/webfont.js"></script>
28
28
  <script>
29
29
  WebFont.load({
30
30
  google: {
@@ -33,7 +33,7 @@ To use the Web Font Loader library, just include it in your page and tell it whi
33
33
  });
34
34
  </script>
35
35
 
36
- Alternatively, you can link to the latest `1.x` version of the Web Font Loader by using `//ajax.googleapis.com/ajax/libs/webfont/1/webfont.js` as the `script` source. Note that the version in this url is less specific. It will always load the latest `1.x` version, but it also has a shorter cache time to ensure that your page gets updates in a timely manner. For performance reasons, we recommend using an explicit version number (such as `1.4.2`) in urls when using the Web Font Loader in production. You can manually update the Web Font Loader version number in the url when you want to adopt a new version.
36
+ Alternatively, you can link to the latest `1.x` version of the Web Font Loader by using `//ajax.googleapis.com/ajax/libs/webfont/1/webfont.js` as the `script` source. Note that the version in this url is less specific. It will always load the latest `1.x` version, but it also has a shorter cache time to ensure that your page gets updates in a timely manner. For performance reasons, we recommend using an explicit version number (such as `1.4.7`) in urls when using the Web Font Loader in production. You can manually update the Web Font Loader version number in the url when you want to adopt a new version.
37
37
 
38
38
  It is also possible to use the Web Font Loader asynchronously. For example, to load [Typekit](http://www.typekit.com) fonts asynchronously, you could use the following code.
39
39
 
@@ -45,7 +45,7 @@ It is also possible to use the Web Font Loader asynchronously. For example, to l
45
45
  (function() {
46
46
  var wf = document.createElement('script');
47
47
  wf.src = ('https:' == document.location.protocol ? 'https' : 'http') +
48
- '://ajax.googleapis.com/ajax/libs/webfont/1.4.2/webfont.js';
48
+ '://ajax.googleapis.com/ajax/libs/webfont/1.4.7/webfont.js';
49
49
  wf.type = 'text/javascript';
50
50
  wf.async = 'true';
51
51
  var s = document.getElementsByTagName('script')[0];
data/Rakefile CHANGED
@@ -95,7 +95,8 @@ file "target/webfont.js" => SourceJs + ["target"] do |t|
95
95
  "--generate_exports",
96
96
  ["--output_wrapper", %("#{output_wrapper}")],
97
97
  ["--warning_level", "VERBOSE"],
98
- ["--summary_detail_level", "3"]
98
+ ["--summary_detail_level", "3"],
99
+ "--define goog.DEBUG=false"
99
100
  ]
100
101
 
101
102
  # Extra args to add warnings.
@@ -115,12 +116,34 @@ desc "Creates debug version into target/webfont.js"
115
116
  task :debug => "target/webfont_debug.js"
116
117
 
117
118
  file "target/webfont_debug.js" => SourceJs + ["target"] do |t|
118
- File.open(t.name, "w") { |f|
119
- @modules.all_source_files.each { |src|
120
- f.puts File.read(src)
121
- f.puts ""
122
- }
123
- }
119
+
120
+ output_marker = "%output%"
121
+ output_wrapper = @modules.js_output_wrapper(output_marker)
122
+
123
+ args = [
124
+ ["-jar", JsCompilerJar],
125
+ ["--compilation_level", "ADVANCED_OPTIMIZATIONS"],
126
+ ["--js_output_file", t.name],
127
+ "--generate_exports",
128
+ ["--output_wrapper", %("#{output_wrapper}")],
129
+ ["--warning_level", "VERBOSE"],
130
+ ["--summary_detail_level", "3"],
131
+ "--debug=true",
132
+ "--formatting=PRETTY_PRINT",
133
+ "--formatting=PRINT_INPUT_DELIMITER"
134
+ ]
135
+
136
+ # Extra args to add warnings.
137
+ args.concat([
138
+ ["--warning_level", "VERBOSE"],
139
+ ["--summary_detail_level", "1"]
140
+ ])
141
+
142
+ source = @modules.all_source_files
143
+ args.concat source.map { |f| ["--js", f] }
144
+
145
+ output = `java #{args.flatten.join(' ')} 2>&1`
146
+ $?.success? ? (puts output) : (fail output)
124
147
  end
125
148
 
126
149
  #
data/lib/webfontloader.rb CHANGED
@@ -3,7 +3,7 @@ require 'yaml'
3
3
  require 'webfontloader/modules'
4
4
 
5
5
  module WebFontLoader
6
- VERSION = '1.4.7'
6
+ VERSION = '1.4.8'
7
7
 
8
8
  ProjectRoot = File.expand_path(File.dirname(__FILE__) + "/..")
9
9
 
@@ -1222,6 +1222,27 @@ describe('UserAgentParser', function () {
1222
1222
  }
1223
1223
  });
1224
1224
  });
1225
+
1226
+ it('should detect Opera Next (15)', function () {
1227
+ expect(parse('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.20 Safari/537.36 OPR/15.0.1147.18 (Edition Next)'))
1228
+ .toMatchUserAgent({
1229
+ name: 'Opera',
1230
+ parsedVersion: new Version(15, 0, 1147, 18),
1231
+ version: '15.0.1147.18',
1232
+ platform: 'Macintosh',
1233
+ parsedPlatformVersion: new Version(10, 8, 3),
1234
+ platformVersion: '10_8_3',
1235
+ engine: 'AppleWebKit',
1236
+ parsedEngineVersion: new Version(537, 36),
1237
+ engineVersion: '537.36',
1238
+ documentMode: undefined,
1239
+ browserInfo: {
1240
+ hasWebFontSupport: true,
1241
+ hasWebKitFallbackBug: false,
1242
+ hasWebKitMetricsBug: true
1243
+ }
1244
+ });
1245
+ });
1225
1246
  });
1226
1247
 
1227
1248
  describe('WebKit fallback bug', function () {
@@ -1429,5 +1450,28 @@ describe('UserAgentParser', function () {
1429
1450
  });
1430
1451
  });
1431
1452
  });
1453
+
1454
+ describe('PhantomJS', function () {
1455
+ it('should detect PhantomJS as having web font support', function () {
1456
+ expect(parse('Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.0 (development) Safari/534.34'))
1457
+ .toMatchUserAgent({
1458
+ name: 'PhantomJS',
1459
+ parsedVersion: new Version(1, 9, 0),
1460
+ version: '1.9.0',
1461
+ platform: 'Macintosh',
1462
+ parsedPlatformVersion: new Version(),
1463
+ platformVersion: 'Unknown',
1464
+ engine: 'AppleWebKit',
1465
+ parsedEngineVersion: new Version(534, 34),
1466
+ engineVersion: '534.34',
1467
+ documentMode: undefined,
1468
+ browserInfo: {
1469
+ hasWebFontSupport: true,
1470
+ hasWebKitFallbackBug: true,
1471
+ hasWebKitMetricsBug: true
1472
+ }
1473
+ });
1474
+ });
1475
+ });
1432
1476
  });
1433
1477
  });
data/spec/index.html CHANGED
@@ -13,7 +13,10 @@
13
13
  <link rel="stylesheet" href="fonts/sourcesansc.css">
14
14
  <link rel="stylesheet" href="fonts/sourcesanscbold.css">
15
15
  </head>
16
- <body>
16
+ <body>
17
+ <script>
18
+ CLOSURE_NO_DEPS = true;
19
+ </script>
17
20
  <script src="../tools/jasmine/jasmine.js"></script>
18
21
  <script src="../tools/jasmine/jasmine-html.js"></script>
19
22
  <script src="../tools/jasmine-phantomjs/terminal-reporter.js"></script>
@@ -60,8 +60,10 @@ goog.scope(function () {
60
60
  UserAgentParser.prototype.parse = function() {
61
61
  if (this.isIe_()) {
62
62
  return this.parseIeUserAgentString_();
63
+ } else if (this.isOldOpera_()) {
64
+ return this.parseOldOperaUserAgentString_();
63
65
  } else if (this.isOpera_()) {
64
- return this.parseOperaUserAgentString_();
66
+ return this.parseWebKitUserAgentString_();
65
67
  } else if (this.isWebKit_()) {
66
68
  return this.parseWebKitUserAgentString_();
67
69
  } else if (this.isGecko_()) {
@@ -175,14 +177,21 @@ goog.scope(function () {
175
177
  /**
176
178
  * @private
177
179
  */
178
- UserAgentParser.prototype.isOpera_ = function() {
180
+ UserAgentParser.prototype.isOldOpera_ = function() {
179
181
  return this.userAgent_.indexOf("Opera") != -1;
180
182
  };
181
183
 
182
184
  /**
183
185
  * @private
184
186
  */
185
- UserAgentParser.prototype.parseOperaUserAgentString_ = function() {
187
+ UserAgentParser.prototype.isOpera_ = function () {
188
+ return /OPR\/[\d.]+/.test(this.userAgent_);
189
+ };
190
+
191
+ /**
192
+ * @private
193
+ */
194
+ UserAgentParser.prototype.parseOldOperaUserAgentString_ = function() {
186
195
  var engineName = UserAgentParser.UNKNOWN,
187
196
  engineVersionString = this.getMatchingGroup_(this.userAgent_, /Presto\/([\d\w\.]+)/, 1),
188
197
  engineVersion = Version.parse(engineVersionString),
@@ -295,7 +304,9 @@ goog.scope(function () {
295
304
  browserVersionString = UserAgentParser.UNKNOWN,
296
305
  supportWebFont = false;
297
306
 
298
- if (this.userAgent_.indexOf("Chrome") != -1 ||
307
+ if (/OPR\/[\d.]+/.test(this.userAgent_)) {
308
+ browserName = "Opera";
309
+ } else if (this.userAgent_.indexOf("Chrome") != -1 ||
299
310
  this.userAgent_.indexOf("CrMo") != -1 ||
300
311
  this.userAgent_.indexOf("CriOS") != -1) {
301
312
  browserName = "Chrome";
@@ -303,6 +314,8 @@ goog.scope(function () {
303
314
  browserName = "Silk";
304
315
  } else if (platform == "BlackBerry" || platform == "Android") {
305
316
  browserName = UserAgentParser.BUILTIN_BROWSER;
317
+ } else if (this.userAgent_.indexOf("PhantomJS") != -1) {
318
+ browserName = "PhantomJS";
306
319
  } else if (this.userAgent_.indexOf("Safari") != -1) {
307
320
  browserName = "Safari";
308
321
  } else if (this.userAgent_.indexOf("AdobeAIR") != -1) {
@@ -319,6 +332,10 @@ goog.scope(function () {
319
332
  browserVersionString = this.getMatchingGroup_(this.userAgent_, /Version\/([\d\.\w]+)/, 1);
320
333
  } else if (browserName == "AdobeAIR") {
321
334
  browserVersionString = this.getMatchingGroup_(this.userAgent_, /AdobeAIR\/([\d\.]+)/, 1);
335
+ } else if (browserName == "Opera") {
336
+ browserVersionString = this.getMatchingGroup_(this.userAgent_, /OPR\/([\d.]+)/, 1);
337
+ } else if (browserName == "PhantomJS") {
338
+ browserVersionString = this.getMatchingGroup_(this.userAgent_, /PhantomJS\/([\d.]+)/, 1);
322
339
  }
323
340
  browserVersion = Version.parse(browserVersionString);
324
341
 
@@ -375,7 +375,7 @@ goog.global.CLOSURE_BASE_PATH;
375
375
  * the deps are written.
376
376
  * @type {boolean|undefined}
377
377
  */
378
- goog.global.CLOSURE_NO_DEPS = true;
378
+ goog.global.CLOSURE_NO_DEPS;
379
379
 
380
380
 
381
381
  /**
@@ -13,8 +13,8 @@ Gem::Specification.new do |s|
13
13
  ## If your rubyforge_project name is different, then edit it and comment out
14
14
  ## the sub! line in the Rakefile
15
15
  s.name = 'webfontloader'
16
- s.version = '1.4.7'
17
- s.date = '2013-06-06'
16
+ s.version = '1.4.8'
17
+ s.date = '2013-06-24'
18
18
 
19
19
  ## Make sure your summary is short. The description may be as long
20
20
  ## as you like.
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webfontloader
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 4
9
- - 7
10
- version: 1.4.7
9
+ - 8
10
+ version: 1.4.8
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ryan Carver
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2013-06-06 00:00:00 Z
19
+ date: 2013-06-24 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: rake