webfontloader 1.0.29 → 1.0.30

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,7 @@
1
+ v1.0.30 (August 17, 2012)
2
+ * Added support for detecting the Windows Phone platform in UserAgentParser, which supports web fonts at version 8 and above.
3
+ * Changes to make the global namespace of the library easier to configure when used in 3rd-party projects. (Thanks cbosco!)
4
+
1
5
  v1.0.29 (July 26, 2012)
2
6
  * Added test to ensure Firefox for Android is properly detected as "Firefox" by UserAgentParser.
3
7
  * Added test to ensure Opera Mobile for Android is properly detected as "Opera" by UserAgentParser.
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.0.29'
6
+ VERSION = '1.0.30'
7
7
 
8
8
  ProjectRoot = File.expand_path(File.dirname(__FILE__) + "/..")
9
9
 
@@ -148,6 +148,38 @@ UserAgentTest.prototype.testBrowserIsIEMinimal = function() {
148
148
  assertTrue(userAgent.isSupportingWebFont());
149
149
  };
150
150
 
151
+ UserAgentTest.prototype.testBrowserIsIEOnWindowsPhone = function() {
152
+ var userAgentParser = new webfont.UserAgentParser(
153
+ "Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; ARM; Touch; IEMobile/10.0; <Manufacturer>; <Device>; <Operator>)",
154
+ this.defaultDocument_);
155
+ var userAgent = userAgentParser.parse();
156
+
157
+ assertEquals("MSIE", userAgent.getName());
158
+ assertEquals("10.0", userAgent.getVersion());
159
+ assertEquals("Windows Phone", userAgent.getPlatform());
160
+ assertEquals("8.0", userAgent.getPlatformVersion());
161
+ assertEquals("MSIE", userAgent.getEngine());
162
+ assertEquals("10.0", userAgent.getEngineVersion());
163
+ assertEquals(undefined, userAgent.getDocumentMode());
164
+ assertTrue(userAgent.isSupportingWebFont());
165
+ };
166
+
167
+ UserAgentTest.prototype.testBrowserIsIEOnOldWindowsPhone = function() {
168
+ var userAgentParser = new webfont.UserAgentParser(
169
+ "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917)",
170
+ this.defaultDocument_);
171
+ var userAgent = userAgentParser.parse();
172
+
173
+ assertEquals("MSIE", userAgent.getName());
174
+ assertEquals("9.0", userAgent.getVersion());
175
+ assertEquals("Windows Phone", userAgent.getPlatform());
176
+ assertEquals("7.5", userAgent.getPlatformVersion());
177
+ assertEquals("MSIE", userAgent.getEngine());
178
+ assertEquals("9.0", userAgent.getEngineVersion());
179
+ assertEquals(undefined, userAgent.getDocumentMode());
180
+ assertFalse(userAgent.isSupportingWebFont());
181
+ };
182
+
151
183
  UserAgentTest.prototype.testBrowserIsIPhone = function() {
152
184
  var userAgentParser = new webfont.UserAgentParser(
153
185
  "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_2 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7D11 Safari/528.16",
@@ -78,7 +78,7 @@ webfont.AscenderScript.prototype.parseVariations = function(source){
78
78
  return variations;
79
79
  };
80
80
 
81
- window['WebFont'].addModule(webfont.AscenderScript.NAME, function(configuration) {
81
+ globalNamespaceObject.addModule(webfont.AscenderScript.NAME, function(configuration) {
82
82
  var domHelper = new webfont.DomHelper(document);
83
83
  return new webfont.AscenderScript(domHelper, configuration);
84
84
  });
data/src/async_load.js CHANGED
@@ -1,3 +1,3 @@
1
1
  if (window['WebFontConfig']) {
2
- window['WebFont']['load'](window['WebFontConfig']);
2
+ globalNamespaceObject['load'](window['WebFontConfig']);
3
3
  }
@@ -2,7 +2,7 @@
2
2
  var globalName = 'WebFont';
3
3
 
4
4
  // Provide an instance of WebFont in the global namespace.
5
- window[globalName] = (function() {
5
+ var globalNamespaceObject = window[globalName] = (function() {
6
6
  var userAgentParser = new webfont.UserAgentParser(navigator.userAgent, document);
7
7
  var userAgent = userAgentParser.parse();
8
8
  var domHelper = new webfont.DomHelper(document);
@@ -13,8 +13,8 @@ window[globalName] = (function() {
13
13
  })();
14
14
 
15
15
  // Export the public API.
16
- window[globalName]['load'] = window[globalName].load;
17
- window[globalName]['addModule'] = window[globalName].addModule;
16
+ globalNamespaceObject['load'] = globalNamespaceObject.load;
17
+ globalNamespaceObject['addModule'] = globalNamespaceObject.addModule;
18
18
 
19
19
  // Export the UserAgent API because we pass this object to external modules.
20
20
  webfont.UserAgent.prototype['getName'] = webfont.UserAgent.prototype.getName;
@@ -50,7 +50,7 @@ webfont.UserAgentParser.prototype.parse = function() {
50
50
  */
51
51
  webfont.UserAgentParser.prototype.getPlatform_ = function() {
52
52
  var mobileOs = this.getMatchingGroup_(this.userAgent_,
53
- /(iPod|iPad|iPhone|Android)/, 1);
53
+ /(iPod|iPad|iPhone|Android|Windows Phone)/, 1);
54
54
 
55
55
  if (mobileOs != "") {
56
56
  return mobileOs;
@@ -76,6 +76,11 @@ webfont.UserAgentParser.prototype.getPlatformVersion_ = function() {
76
76
  if (genericVersion) {
77
77
  return genericVersion;
78
78
  }
79
+ var winPhoneVersion = this.getMatchingGroup_(this.userAgent_,
80
+ /Windows Phone( OS)? ([^;)]+)/, 2);
81
+ if (winPhoneVersion) {
82
+ return winPhoneVersion;
83
+ }
79
84
  var iVersion = this.getMatchingGroup_(this.userAgent_,
80
85
  /(iPhone )?OS ([\d_]+)/, 2);
81
86
  if (iVersion) {
@@ -101,25 +106,32 @@ webfont.UserAgentParser.prototype.isIe_ = function() {
101
106
  * @private
102
107
  */
103
108
  webfont.UserAgentParser.prototype.parseIeUserAgentString_ = function() {
109
+ // For IE we give MSIE as the engine name and the version of IE
110
+ // instead of the specific Trident engine name and version
111
+
112
+ var platform = this.getPlatform_();
113
+ var platformVersion = this.getPlatformVersion_();
114
+
104
115
  var browser = this.getMatchingGroup_(this.userAgent_, /(MSIE [\d\w\.]+)/, 1);
105
- var engineName = webfont.UserAgentParser.UNKNOWN;
106
- var engineVersion = webfont.UserAgentParser.UNKNOWN;
107
116
 
108
117
  if (browser != "") {
109
118
  var pair = browser.split(' ');
110
119
  var name = pair[0];
111
120
  var version = pair[1];
121
+ var majorVersion = this.getMajorVersion_(version);
122
+ var majorPlatformVersion = this.getMajorVersion_(platformVersion);
123
+
124
+ var supportWebFont = (platform == "Windows" && majorVersion >= 6) ||
125
+ (platform == "Windows Phone" && majorPlatformVersion >= 8);
112
126
 
113
- // For IE we give MSIE as the engine name and the version of IE
114
- // instead of the specific Trident engine name and version
115
127
  return new webfont.UserAgent(name, version, name, version,
116
- this.getPlatform_(), this.getPlatformVersion_(),
117
- this.getDocumentMode_(this.doc_), this.getMajorVersion_(version) >= 6);
128
+ platform, platformVersion, this.getDocumentMode_(this.doc_),
129
+ supportWebFont);
118
130
  }
131
+
119
132
  return new webfont.UserAgent("MSIE", webfont.UserAgentParser.UNKNOWN,
120
133
  "MSIE", webfont.UserAgentParser.UNKNOWN,
121
- this.getPlatform_(), this.getPlatformVersion_(),
122
- this.getDocumentMode_(this.doc_), false);
134
+ platform, platformVersion, this.getDocumentMode_(this.doc_), false);
123
135
  };
124
136
 
125
137
  /**
@@ -31,7 +31,7 @@ webfont.CustomCss.prototype.supportUserAgent = function(userAgent, support) {
31
31
  return support(userAgent.isSupportingWebFont());
32
32
  };
33
33
 
34
- window['WebFont'].addModule(webfont.CustomCss.NAME, function(configuration) {
34
+ globalNamespaceObject.addModule(webfont.CustomCss.NAME, function(configuration) {
35
35
  var domHelper = new webfont.DomHelper(document);
36
36
  return new webfont.CustomCss(domHelper, configuration);
37
37
  });
@@ -55,7 +55,7 @@ webfont.FontdeckScript.prototype.load = function(onReady) {
55
55
  onReady(this.fontFamilies_, this.fontVariations_);
56
56
  };
57
57
 
58
- window['WebFont'].addModule(webfont.FontdeckScript.NAME, function(configuration) {
58
+ globalNamespaceObject.addModule(webfont.FontdeckScript.NAME, function(configuration) {
59
59
  var domHelper = new webfont.DomHelper(document);
60
60
  return new webfont.FontdeckScript(window, domHelper, configuration);
61
- });
61
+ });
@@ -48,7 +48,7 @@ webfont.GoogleFontApi.prototype.insertLink_ = function(onReady) {
48
48
  fontApiParser.getFontTestStrings());
49
49
  };
50
50
 
51
- window['WebFont'].addModule(webfont.GoogleFontApi.NAME, function(configuration) {
51
+ globalNamespaceObject.addModule(webfont.GoogleFontApi.NAME, function(configuration) {
52
52
  var userAgentParser = new webfont.UserAgentParser(navigator.userAgent, document);
53
53
  var userAgent = userAgentParser.parse();
54
54
  return new webfont.GoogleFontApi(userAgent, new webfont.DomHelper(document),
@@ -97,7 +97,7 @@ webfont.MonotypeScript.prototype.protocol = function () {
97
97
  return defaultProtocol;
98
98
  };
99
99
 
100
- window['WebFont'].addModule(webfont.MonotypeScript.NAME, function (configuration) {
100
+ globalNamespaceObject.addModule(webfont.MonotypeScript.NAME, function (configuration) {
101
101
  var userAgentParser = new webfont.UserAgentParser(navigator.userAgent, document);
102
102
  var userAgent = userAgentParser.parse();
103
103
  var domHelper = new webfont.DomHelper(document);
@@ -53,7 +53,7 @@ webfont.TypekitScript.prototype.load = function(onReady) {
53
53
  onReady(this.fontFamilies_, this.fontVariations_);
54
54
  };
55
55
 
56
- window['WebFont'].addModule(webfont.TypekitScript.NAME, function(configuration) {
56
+ globalNamespaceObject.addModule(webfont.TypekitScript.NAME, function(configuration) {
57
57
  var domHelper = new webfont.DomHelper(document);
58
58
  return new webfont.TypekitScript(window, domHelper, configuration);
59
59
  });
@@ -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.0.29'
17
- s.date = '2012-07-26'
16
+ s.version = '1.0.30'
17
+ s.date = '2012-08-17'
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: 45
4
+ hash: 43
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 29
10
- version: 1.0.29
9
+ - 30
10
+ version: 1.0.30
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: 2012-07-26 00:00:00 Z
19
+ date: 2012-08-17 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  prerelease: false