You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
182 lines
5.4 KiB
182 lines
5.4 KiB
<!DOCTYPE html> |
|
<html> |
|
<head> |
|
<script src="../../../dojo/dojo.js" data-dojo-config="async:true, isDebug:true, selectorEngine: 'lite'"></script> |
|
<script> |
|
// These are the values I expect to be the same across all [mobile] webkit browsers |
|
var expected = { |
|
// Default settings for a browser, from dojo.js; apparently these get modified in special cases |
|
// like when running under node, or against RequireJS, but nothing we need to worry about. |
|
"host-browser":1, |
|
"host-node": false, |
|
"host-rhino": false, |
|
"dom":1, |
|
"dojo-amd-factory-scan":1, |
|
"dojo-loader":1, |
|
"dojo-has-api":1, |
|
"dojo-inject-api":1, |
|
"dojo-timeout-api":1, |
|
"dojo-trace-api":1, |
|
"dojo-log-api":1, |
|
"dojo-dom-ready-api":1, |
|
"dojo-publish-privates":1, |
|
"dojo-config-api":1, |
|
"dojo-sniff":1, |
|
"dojo-sync-loader":1, |
|
"dojo-test-sniff":1, |
|
"config-tlmSiblingOfDojo":1, |
|
|
|
// Other configuration switches that are hardcoded in the source. |
|
// Setting some of these to false may reduce code size, but unclear what they all mean. |
|
"config-publishRequireResult": 1, |
|
"dojo-config-addOnLoad": 1, // hardcoded to 1 in the source |
|
"dojo-config-require": 1, |
|
"dojo-debug-messages": true, |
|
"dojo-gettext-api": 1, // apparently unused |
|
"dojo-guarantee-console": 1, |
|
"dojo-loader-eval-hint-url": 1, |
|
"dojo-modulePaths": 1, |
|
"dojo-moduleUrl": 1, |
|
"dojo-v1x-i18n-Api": 1, |
|
"dojo-xhr-factory": 1, // if require.getXhr() exists (true for dojo's AMD loader, false for requireJS?) |
|
"extend-dojo": 1, // add functions to global dojo object |
|
|
|
// Browser flags |
|
//"webkit": true, // this is actually a number like 525 but I don't think anyone is using it |
|
"air": false, |
|
"ff": undefined, |
|
"mozilla": undefined, |
|
"ie": undefined, |
|
|
|
// Configuration settings |
|
"config-selectorEngine": "lite", |
|
"dijit-legacy-requires": false, // don't load unrequested modules for back-compat |
|
"dom-quirks": false, // we assume/require that the app is in strict mode |
|
"quirks": false, // we assume/require that the app is in strict mode |
|
|
|
// Flags for old IE browser bugs / non-standard behavior |
|
"array-extensible": true, // false for old IE |
|
"bug-for-in-skips-shadowed": 0, // false for old IE |
|
"dom-attributes-explicit": true, // everyone except IE6, 7 |
|
"dom-attributes-specified-flag": true, //everyone except IE6-8 |
|
"dom-addeventlistener": true, // everyone except IE |
|
"native-xhr": true, // has XMLHTTPRequest |
|
"ie-event-behavior": undefined, |
|
"dojo-force-activex-xhr": false, // true is for IE path |
|
|
|
// Flags for features |
|
"dom-matches-selector": true, |
|
"dom-qsa": true, |
|
"dom-qsa2.1": true, |
|
"dom-qsa3": true, |
|
"json-parse": true, |
|
"json-stringify": true, |
|
|
|
// Behavior that varies by browser, but is constant across webkit mobile browsers |
|
"events-keypress-typed": true, // whether printable characters generate keypress event? |
|
"events-mouseenter": false, // this is set by mouse.html but never used |
|
"touch": true |
|
|
|
// Values which can be different across mobile devices, so intentionally not specified in this list. |
|
// "event-orientationchange": true, |
|
// "safari": true, |
|
// "android": true |
|
// "wii": true |
|
}; |
|
require([ |
|
// Modules I need for this script to run |
|
"dojo/has", |
|
"dojo/dom", |
|
"dojo/json", |
|
"dojo/domReady!", |
|
|
|
// These modules loaded because they have a has.add() call. |
|
// Generated from: |
|
// $ cd <root> |
|
// $ find . -name '*.js' -print |xargs fgrep -l 'has.add' |
|
"dojo/_base/browser", |
|
"dojo/_base/config", |
|
"dojo/_base/connect", |
|
"dojo/_base/kernel", |
|
"dojo/_base/lang", |
|
"dojo/_base/loader", |
|
"dojo/_base/sniff", |
|
"dojo/_base/window", |
|
"dojo/_base/xhr", |
|
"dojo/dom-class", |
|
"dojo/i18n", |
|
"dojo/main", |
|
"dojo/mouse", |
|
"dojo/on", |
|
"dojo/query", |
|
"dojo/ready", |
|
"dojo/selector/_loader", |
|
"dojo/selector/lite", |
|
"dojox/form/uploader/Base", |
|
"dojox/mobile/Audio", |
|
"dojox/mobile/sniff" |
|
], function(has, dom, json){ |
|
|
|
// Code to write output to textarea |
|
var res = dom.byId("res"); |
|
res.value = ""; // in case value was saved from this page from before |
|
function log(){ |
|
for(var i=0; i<arguments.length; i++){ |
|
res.value += arguments[i]; |
|
} |
|
res.value += "\n"; |
|
} |
|
|
|
log("userAgent: ", navigator.userAgent); |
|
log("appVersion: ", navigator.appVersion); |
|
|
|
/* |
|
// Rearrange the has() hash to alphabetical order, and dump it to console. |
|
// We could alternately get the list of has() flags from the builder: |
|
// $ cd util/buildscripts |
|
// $ ./build.sh action=release optimize=closure --profile webkitMobile --hasReport 1 |
|
|
|
var keys = [], newHash = {}; |
|
for(var key in has.cache){ |
|
keys.push(key); |
|
} |
|
keys.sort(); |
|
for(var i=0; i<keys.length; i++){ |
|
newHash[keys[i]] = has(keys[i]); |
|
} |
|
|
|
// Dump the hash |
|
log("has() values:") |
|
log(json.stringify(newHash, null, " ")); |
|
log("Total: " + keys.length); |
|
*/ |
|
|
|
log("\nDifferences from expected values for webkit:"); |
|
var cnt = 0; |
|
for(key in expected){ |
|
if(has(key) !== expected[key]){ |
|
log(key + ": expected = " + json.stringify(expected[key]) + ", actual: " + |
|
json.stringify(has(key))); |
|
cnt++; |
|
} |
|
} |
|
if(cnt == 0){ |
|
log("None!"); |
|
} |
|
}); |
|
</script> |
|
<style> |
|
textarea { |
|
width: 95%; |
|
height: 500px; |
|
} |
|
</style> |
|
</head> |
|
<body> |
|
<p> |
|
This file is for testing if the given browser matches the webkitMobile build profile. |
|
Results: |
|
</p> |
|
<textarea id="res"></textarea> |
|
</body> |
|
</html> |