182 lines
5.4 KiB
HTML
182 lines
5.4 KiB
HTML
<!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> |