UNPKG

dojox

Version:

Dojo eXtensions, a rollup of many useful sub-projects and varying states of maturity – from very stable and robust, to alpha and experimental. See individual projects contain README files for details.

181 lines (175 loc) 9.49 kB
<!DOCTYPE HTML> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no" /> <meta name="apple-mobile-web-app-capable" content="yes" /> <title>IconContainer and IconItem Tests</title> <script type="text/javascript" src="../../../deviceTheme.js"></script> <script type="text/javascript" src="../../../../../dojo/dojo.js" data-dojo-config="async: true, parseOnLoad: true"></script> <script language="JavaScript" type="text/javascript"> require([ "dojo/ready", "dijit/registry", "doh/runner", "dojox/mobile/IconContainer", "dojox/mobile/IconItem", "dojox/mobile", "dojox/mobile/compat", "dojox/mobile/parser" ], function(ready, registry, runner, IconContainer, IconItem){ ready(function(){ runner.register("dojox.mobile.test.doh.IconContainerTests2", [ { name: "test1", timeout: 3000, runTest: function(){ // Test case for #16868 var editableIconContainer = registry.byId("editableIconContainer1"); var item = registry.byId("item1"); try{ editableIconContainer.deleteItem(item); }catch(err){ runner.assertTrue(false, "deleteItem throws error! (#16868)"); } } }, { name: "test2", timeout: 3000, runTest: function(){ // Test case for #15064 var editableIconContainer = registry.byId("editableIconContainer2"); var d = new runner.Deferred(); var errorCounter = 0; var errorMsg; // Before the fix of #15064, there used to be an error thrown when destroying // right after startEdit(). To test it, we cannot use a simple try-catch, because // this is about an error thrown by the setTimeout function which used to be set // by startEdit() in an editable IconContainer. Hence: window.onerror = function(msg, url, lineNumber){ errorCounter++; errorMsg = "After destroy: " + msg + "\nURL: " + url + "\nLine number: " + lineNumber; console.log(errorMsg); }; editableIconContainer.startEdit(); editableIconContainer.destroyRecursive(false/*preserveDom*/); // Check that no error has been thrown setTimeout(d.getTestCallback(function(){ runner.assertEqual(0, errorCounter, errorMsg); }), 2000); // smaller than the total timeout of the test case return d; } }, { name: "test3", timeout: 3000, runTest: function(){ // Test case for #15064 var editableIconContainer = registry.byId("editableIconContainer3"); var item = registry.byId("item3"); var d = new runner.Deferred(); var errorCounter = 0; var errorMsg; // Before the fix of #15064, there used to be an error thrown when destroying // right after deleteItem(). To test it, we cannot use a simple try-catch, because // this is about an error thrown by the setTimeout function which used to be set // (indirectly) by deleteItem() in an editable IconContainer. Hence: window.onerror = function(msg, url, lineNumber){ errorCounter++; errorMsg = "After destroy: " + msg + "\nURL: " + url + "\nLine number: " + lineNumber; console.log(errorMsg); }; editableIconContainer.deleteItem(item); editableIconContainer.destroyRecursive(false/*preserveDom*/); // Check that no error has been thrown setTimeout(d.getTestCallback(function(){ runner.assertEqual(0, errorCounter, errorMsg); }), 2000); // smaller than the total timeout of the test case return d; } }, { name: "test4", timeout: 3000, runTest: function(){ // Test case for #15064 var editableIconContainer = registry.byId("editableIconContainer4"); var item = registry.byId("item4"); var d = new runner.Deferred(); var errorCounter = 0; var errorMsg; // Before the fix of #15064, there used to be an error thrown when destroying // right after IconItem.highlight(). To test it, we cannot use a simple try-catch, because // this is about an error thrown by the setTimeout function which used to be set // by IconItem.highlight(). Hence: window.onerror = function(msg, url, lineNumber){ errorCounter++; errorMsg = "After destroy: " + msg + "\nURL: " + url + "\nLine number: " + lineNumber; console.log(errorMsg); }; item.highlight(); editableIconContainer.destroyRecursive(false/*preserveDom*/); // Check that no error has been thrown setTimeout(d.getTestCallback(function(){ runner.assertEqual(0, errorCounter, errorMsg); }), 2000); // smaller than the total timeout of the test case return d; } } ]); runner.run(); }); }) </script> </head> <body> <!-- Test case for #16868 --> <div data-dojo-type="dojox/mobile/View"> <h1>View 1</h1> <ul id="editableIconContainer1" data-dojo-type="dojox/mobile/IconContainer" data-dojo-props="editable: true"> <li data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"app1", icon:"../../images/icon-1.png", lazy:"true"'><div class="box"></div></li> <li id="item1" data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"app2", icon:"../../images/icon-1.png", lazy:"true"'><div class="box"></div></li> <li data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"app3", icon:"../../images/icon-1.png", lazy:"true"'><div class="box"></div></li> <li data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"moveTo", icon:"../../images/icon-1.png", moveTo:"about", transition:"slide"'></li> <li data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"href", icon:"../../images/icon-1.png", href:"../../test_iPhone-RoundRectList.html", transition:"slide"'></li> <li data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"url" , icon:"../../images/icon-1.png", url:"../../view-sample.html", transition:"slide"'></li> </ul> </div> <!-- Test cases for #15064 --> <div id="view2" data-dojo-type="dojox/mobile/View"> <h1>View 2</h1> <ul id="editableIconContainer2" data-dojo-type="dojox/mobile/IconContainer" data-dojo-props="editable: true"> <li data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"app1", icon:"../../images/icon-1.png", lazy:"true"'><div class="box"></div></li> <li data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"app2", icon:"../../images/icon-1.png", lazy:"true"'><div class="box"></div></li> <li data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"app3", icon:"../../images/icon-1.png", lazy:"true"'><div class="box"></div></li> <li data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"moveTo", icon:"../../images/icon-1.png", moveTo:"about", transition:"slide"'></li> <li data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"href", icon:"../../images/icon-1.png", href:"../../test_iPhone-RoundRectList.html", transition:"slide"'></li> <li data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"url" , icon:"../../images/icon-1.png", url:"../../view-sample.html", transition:"slide"'></li> </ul> <ul id="editableIconContainer3" data-dojo-type="dojox/mobile/IconContainer" data-dojo-props="editable: true"> <li id="item3" data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"app1", icon:"../../images/icon-1.png", lazy:"true"'><div class="box"></div></li> <li data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"app2", icon:"../../images/icon-1.png", lazy:"true"'><div class="box"></div></li> <li data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"app3", icon:"../../images/icon-1.png", lazy:"true"'><div class="box"></div></li> <li data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"moveTo", icon:"../../images/icon-1.png", moveTo:"about", transition:"slide"'></li> <li data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"href", icon:"../../images/icon-1.png", href:"../../test_iPhone-RoundRectList.html", transition:"slide"'></li> <li data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"url" , icon:"../../images/icon-1.png", url:"../../view-sample.html", transition:"slide"'></li> </ul> <ul id="editableIconContainer4" data-dojo-type="dojox/mobile/IconContainer" data-dojo-props="editable: true"> <li id="item4" data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"app1", icon:"../../images/icon-1.png", lazy:"true"'><div class="box"></div></li> <li data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"app2", icon:"../../images/icon-1.png", lazy:"true"'><div class="box"></div></li> <li data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"app3", icon:"../../images/icon-1.png", lazy:"true"'><div class="box"></div></li> <li data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"moveTo", icon:"../../images/icon-1.png", moveTo:"about", transition:"slide"'></li> <li data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"href", icon:"../../images/icon-1.png", href:"../../test_iPhone-RoundRectList.html", transition:"slide"'></li> <li data-dojo-type="dojox/mobile/IconItem" data-dojo-props='label:"url" , icon:"../../images/icon-1.png", url:"../../view-sample.html", transition:"slide"'></li> </ul> </div> </body> </html>