You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devicemap.apache.org by ra...@apache.org on 2013/11/18 15:39:39 UTC
svn commit: r1543039 - in /incubator/devicemap/trunk/browsermap/trunk:
package.json src/main/js/bmap.js src/test/js/tests.js
Author: radu
Date: Mon Nov 18 14:39:39 2013
New Revision: 1543039
URL: http://svn.apache.org/r1543039
Log:
DMAP-34 - Add a current variant attribute to the site variants BrowserMap uses for forwarding clients
* added BrowserMap.getCurrentVariant() which extracts the variant that has a ‘data-bmap-currentvar’ attribute with its value set to ‘true’
* updated tests
* bumped version to 1.4.0-dev (API changes)
Modified:
incubator/devicemap/trunk/browsermap/trunk/package.json
incubator/devicemap/trunk/browsermap/trunk/src/main/js/bmap.js
incubator/devicemap/trunk/browsermap/trunk/src/test/js/tests.js
Modified: incubator/devicemap/trunk/browsermap/trunk/package.json
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/browsermap/trunk/package.json?rev=1543039&r1=1543038&r2=1543039&view=diff
==============================================================================
--- incubator/devicemap/trunk/browsermap/trunk/package.json (original)
+++ incubator/devicemap/trunk/browsermap/trunk/package.json Mon Nov 18 14:39:39 2013
@@ -1,6 +1,6 @@
{
"name": "BrowserMap",
- "version": "1.3.0",
+ "version": "1.4.0-dev",
"description": "YABFDL - yet another browser features detection library",
"main": "index.js",
"scripts": {
@@ -27,7 +27,7 @@
"grunt-jsdoc": "~0.4.1",
"grunt-contrib-copy": "~0.4.1",
"grunt-contrib-compress": "~0.5.2",
- "grunt-qunit-cov": "~0.3.4",
+ "grunt-qunit-cov": "git+https://raducotescu@github.com/raducotescu/grunt-qunit-cov.git",
"karma-junit-reporter": "~0.1.0",
"karma-qunit": "~0.1.1",
"karma": "~0.10.2",
Modified: incubator/devicemap/trunk/browsermap/trunk/src/main/js/bmap.js
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/browsermap/trunk/src/main/js/bmap.js?rev=1543039&r1=1543038&r2=1543039&view=diff
==============================================================================
--- incubator/devicemap/trunk/browsermap/trunk/src/main/js/bmap.js (original)
+++ incubator/devicemap/trunk/browsermap/trunk/src/main/js/bmap.js Mon Nov 18 14:39:39 2013
@@ -44,6 +44,7 @@
BrowserMap.VERSION = '<%= pkg.version %>'; // replaced at build time by Grunt
var linkDataDevgroups = 'data-bmap-devgroups';
+ var linkcurrentVariant = 'data-bmap-currentvar';
/**
* Retrieves the probes Map - useful for outputting debugging information.
@@ -186,6 +187,45 @@
};
/**
+ * Returns the current variant, if one is found.
+ *
+ * @return {Object} an object with the <code>id, href, hreflang, devgroups</code> set of attributes; <code>null</code> if the current
+ * variant cannot be determined
+ */
+ BrowserMap.getCurrentVariant = function () {
+ var headElement = document.getElementsByTagName('head')[0],
+ i = 0,
+ currentVariant = null,
+ currentVariantAttribute,
+ links,
+ link,
+ onIE7,
+ linkHref,
+ devgroups;
+ onIE7 = navigator.appVersion.indexOf('MSIE 7') !== -1;
+ if (headElement) {
+ links = headElement.getElementsByTagName('link');
+ for (i = 0; i < links.length; i++) {
+ link = links[i];
+ if (link.rel == 'alternate') {
+ if (onIE7) {
+ linkHref = BrowserMapUtil.Url.qualifyURL(link.href);
+ } else {
+ linkHref = link.href;
+ }
+ devgroups = link.getAttribute(linkDataDevgroups);
+ currentVariantAttribute = link.getAttribute(linkcurrentVariant);
+ if (currentVariantAttribute && currentVariantAttribute === 'true') {
+ currentVariant = {'id' : link.id, 'href' : linkHref, 'hreflang' : link.hreflang, 'devgroups' : devgroups};
+ break;
+ }
+ }
+ }
+ }
+ return currentVariant;
+ };
+
+ /**
* Returns the defined DeviceGroups for this BrowserMap as an array in which the elements are ordered by their ranking property.
*
* @return {Array}
Modified: incubator/devicemap/trunk/browsermap/trunk/src/test/js/tests.js
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/browsermap/trunk/src/test/js/tests.js?rev=1543039&r1=1543038&r2=1543039&view=diff
==============================================================================
--- incubator/devicemap/trunk/browsermap/trunk/src/test/js/tests.js (original)
+++ incubator/devicemap/trunk/browsermap/trunk/src/test/js/tests.js Mon Nov 18 14:39:39 2013
@@ -22,9 +22,10 @@ QUnit.begin(function() {
headElementContent = headElement.innerHTML;
headElementContent += '\
<link rel="canonical" href="http://www.example.com/index.html">\
- <link rel="alternate" data-bmap-devgroups="browser" hreflang="en" href="http://www.example.com/index.html">\
- <link rel="alternate" data-bmap-devgroups="browser" hreflang="de" href="http://www.example.com/index.html">\
- <link rel="alternate" data-bmap-devgroups="smartphone" hreflang="en" href="http://www.example.com/index.smartphone.html">\
+ <link rel="alternate" data-bmap-devgroups="browser" hreflang="en" href="http://www.example.com/en/index.html" data-bmap-currentvar="true">\
+ <link rel="alternate" data-bmap-devgroups="browser" hreflang="de" href="http://www.example.com/de/index.html">\
+ <link rel="alternate" data-bmap-devgroups="smartphone" hreflang="de" href="http://www.example.com/de/index.smartphone.html">\
+ <link rel="alternate" data-bmap-devgroups="smartphone" hreflang="en" href="http://www.example.com/en/index.smartphone.html">\
<meta name="browsermap.enabled" content="false">';
headElement.innerHTML = headElementContent;
});
@@ -96,15 +97,16 @@ test('Array.indexOf', function() {
module('BrowserMap');
test("getAllAlternateSites", function() {
var alternateSites = [
- {href: 'http://www.example.com/index.html', hreflang : 'en', devgroups : 'browser', id : ''},
- {href: 'http://www.example.com/index.html', hreflang : 'de', devgroups : 'browser', id : ''},
- {href: 'http://www.example.com/index.smartphone.html', hreflang : 'en', devgroups : 'smartphone', id : ''}
- ];
+ {href: 'http://www.example.com/en/index.html', hreflang : 'en', devgroups : 'browser', id : ''},
+ {href: 'http://www.example.com/de/index.html', hreflang : 'de', devgroups : 'browser', id : ''},
+ {href: 'http://www.example.com/de/index.smartphone.html', hreflang : 'de', devgroups : 'smartphone', id : ''},
+ {href: 'http://www.example.com/en/index.smartphone.html', hreflang : 'en', devgroups : 'smartphone', id : ''}
+ ];
deepEqual(BrowserMap.getAllAlternateSites(), alternateSites);
});
test("getAlternateSite", function() {
var filter = function(link) {return link.hreflang == 'de'};
- deepEqual(BrowserMap.getAlternateSite(['browser'], filter), {href: 'http://www.example.com/index.html', hreflang : 'de', devgroups : 'browser', id : ''});
+ deepEqual(BrowserMap.getAlternateSite(['browser'], filter), {href: 'http://www.example.com/de/index.html', hreflang : 'de', devgroups : 'browser', id : ''});
});
test("getDeviceGroupsInRankingOrder", function() {
var expectedDgs = [
@@ -125,8 +127,12 @@ test("probe", function() {
equal('number', typeof BrowserMap.probe('clientWidth'));
});
test("getNewURL", function() {
- strictEqual(BrowserMap.getNewURL('http://www.example.com/index.html', ['smartphone'], ['smartphone']), 'http://www.example.com/index.smartphone.html');
- strictEqual(BrowserMap.getNewURL('http://www.example.com/index.html', ['tablet'], ['tablet']), 'http://www.example.com/index.tablet.html');
+ strictEqual(BrowserMap.getNewURL('http://www.example.com/en/index.html', ['smartphone'], ['smartphone']), 'http://www.example.com/en/index.smartphone.html');
+ // assume fallback to selectors-based URL even if no variant is present
+ strictEqual(BrowserMap.getNewURL('http://www.example.com/en/index.html', ['tablet'], ['tablet']), 'http://www.example.com/en/index.tablet.html');
+});
+test("getCurrentVariant", function() {
+ deepEqual(BrowserMap.getCurrentVariant(), {href: 'http://www.example.com/en/index.html', hreflang : 'en', devgroups : 'browser', id : ''});
});
test("isEnabled", function() {
strictEqual(BrowserMap.isEnabled(), false);