diff --git a/apps/tests/ui/image/image-tests.ts b/apps/tests/ui/image/image-tests.ts index dbd587d4c..e9fa9d410 100644 --- a/apps/tests/ui/image/image-tests.ts +++ b/apps/tests/ui/image/image-tests.ts @@ -131,6 +131,31 @@ export var test_SettingImageSrcToFileWithinApp = function (done) { helper.buildUIAndRunTest(image, testFunc); } +export var test_SettingImageSrcToDataURI = function (done) { + // + // ### How to create an image and set its src to Data URI. + // ``` JavaScript + var image = new ImageModule.Image(); + image.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAIAAAAmkwkpAAAAAXNSR0IArs4c6QAAABxpRE9UAAAAAgAAAAAAAAACAAAAKAAAAAIAAAACAAAARiS4uJEAAAASSURBVBgZYvjPwABHSMz/DAAAAAD//0GWpK0AAAAOSURBVGNgYPiPhBgQAACEvQv1D5y/pAAAAABJRU5ErkJggg=="; + // ``` + // + + var testFunc = function (views: Array) { + var testImage = views[0]; + TKUnit.waitUntilReady(() => !testImage.isLoading, 3); + try { + TKUnit.assertTrue(!testImage.isLoading, "isLoading should be false."); + TKUnit.assertNotNull(testImage.imageSource); + done(null); + } + catch (e) { + done(e); + } + } + + helper.buildUIAndRunTest(image, testFunc); +} + export var test_SettingStretch_AspectFit = function () { // // ### How to set image stretching. diff --git a/ui/image/image-common.ts b/ui/image/image-common.ts index 6acc3e466..28affba7c 100644 --- a/ui/image/image-common.ts +++ b/ui/image/image-common.ts @@ -5,6 +5,8 @@ import imageSource = require("image-source"); import definition = require("ui/image"); import enums = require("ui/enums"); import platform = require("platform"); +import utils = require("utils/utils"); + import * as typesModule from "utils/types"; var SRC = "src"; @@ -30,7 +32,14 @@ function onSrcPropertyChanged(data: dependencyObservable.PropertyChangeData) { image._setValue(Image.isLoadingProperty, true); - if (imageSource.isFileOrResourcePath(value)) { + if (utils.isDataURI(value)) { + var base64Data = value.split(",")[1]; + if (types.isDefined(base64Data)) { + image.imageSource = imageSource.fromBase64(base64Data); + image._setValue(Image.isLoadingProperty, false); + } + } + else if (imageSource.isFileOrResourcePath(value)) { image.imageSource = imageSource.fromFileOrResource(value); image._setValue(Image.isLoadingProperty, false); } else {