webfontloader 1.4.7 → 1.4.8

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 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