diff --git a/apps/tests/xml-declaration/xml-declaration-tests.ts b/apps/tests/xml-declaration/xml-declaration-tests.ts index 283cc308b..4083ea09d 100644 --- a/apps/tests/xml-declaration/xml-declaration-tests.ts +++ b/apps/tests/xml-declaration/xml-declaration-tests.ts @@ -3,6 +3,7 @@ import view = require("ui/core/view"); import builder = require("ui/builder"); import buttonModule = require("ui/button"); import switchModule = require("ui/switch"); +import searchBarModule = require("ui/search-bar"); import textFieldModule = require("ui/text-field"); import gridLayoutModule = require("ui/layouts/grid-layout"); import absoluteLayoutModule = require("ui/layouts/absolute-layout"); @@ -690,3 +691,17 @@ export function test_parse_NestedRepeaters() { helper.goBack(); } } + +export function test_searchbar_donotcrash_whentext_isempty() { + var p = builder.parse(''); + var sb = p.content; + + TKUnit.assertEqual(sb.text, ""); +}; + +export function test_searchbar_donotcrash_whentext_isspace() { + var p = builder.parse(''); + var sb = p.content; + + TKUnit.assertEqual(sb.text, " "); +}; \ No newline at end of file diff --git a/ui/builder/component-builder.ts b/ui/builder/component-builder.ts index cfb2d9ecc..b44f929da 100644 --- a/ui/builder/component-builder.ts +++ b/ui/builder/component-builder.ts @@ -169,14 +169,18 @@ export function setPropertyValue(instance: view.View, instanceModule: Object, ex attrHandled = (instance)._applyXmlAttribute(propertyName, propertyValue); } if (!attrHandled) { - // Try to convert value to number. - var valueAsNumber = +propertyValue; - if (!isNaN(valueAsNumber)) { - instance[propertyName] = valueAsNumber; - } else if (propertyValue && (propertyValue.toLowerCase() === "true" || propertyValue.toLowerCase() === "false")) { - instance[propertyName] = propertyValue.toLowerCase() === "true" ? true : false; - } else { + if (propertyValue.trim() === "") { instance[propertyName] = propertyValue; + } else { + // Try to convert value to number. + var valueAsNumber = +propertyValue; + if (!isNaN(valueAsNumber)) { + instance[propertyName] = valueAsNumber; + } else if (propertyValue && (propertyValue.toLowerCase() === "true" || propertyValue.toLowerCase() === "false")) { + instance[propertyName] = propertyValue.toLowerCase() === "true" ? true : false; + } else { + instance[propertyName] = propertyValue; + } } } }