From b3729961624b63a4f38bcf4eb02fef4cd03b31b0 Mon Sep 17 00:00:00 2001 From: Rebecca Muraira Date: Mon, 8 Jul 2019 17:08:38 -0700 Subject: [PATCH 1/2] [UWP] Add handling for column fallback --- samples/v1.2/Elements/Column.Fallback.json | 49 ++ .../v1.2/Tests/ContainerDoubleFallback.json | 1 + .../AdaptiveCardsSharedModelUnitTest.vcxproj | 1 + ...veCardsSharedModelUnitTest.vcxproj.filters | 3 + .../FallbackTests.cpp | 778 ++++++++++++++++++ .../ObjectModelTest.cpp | 680 --------------- source/shared/cpp/ObjectModel/Column.cpp | 14 + ...eractive.v1.0.Elements.Input.ChoiceSet.png | Bin 7537 -> 5985 bytes ...ractive.v1.0.Elements.Input.Text.Style.png | Bin 3439 -> 2909 bytes ...n-Interactive.v1.0.Elements.Input.Text.png | Bin 2702 -> 2510 bytes ... Non-Interactive.v1.0.Scenarios.Inputs.png | Bin 3695 -> 5410 bytes ...ze Non-Interactive.v1.0.Tests.Feedback.png | Bin 2965 -> 2965 bytes ...umnSet.Input.ChoiceSet.VerticalStretch.png | Bin 5733 -> 6079 bytes ...s.ColumnSet.Input.Date.VerticalStretch.png | Bin 7376 -> 7525 bytes ...ColumnSet.Input.Number.VerticalStretch.png | Bin 7376 -> 7525 bytes ...nput.Text.InlineAction.VerticalStretch.png | Bin 7376 -> 7525 bytes ...s.ColumnSet.Input.Text.VerticalStretch.png | Bin 7376 -> 7525 bytes ...s.ColumnSet.Input.Time.VerticalStretch.png | Bin 7376 -> 7525 bytes ...ColumnSet.Input.Toggle.VerticalStretch.png | Bin 7376 -> 7525 bytes ...ctive.v1.1.Tests.MediaAudioInColumnSet.png | Bin 7680 -> 7585 bytes ...on-Interactive.v1.2.Elements.ActionSet.png | Bin 3876 -> 3823 bytes ...ractive.v1.2.Elements.Column.Fallback.json | 1 + ...eractive.v1.2.Elements.Column.Fallback.png | Bin 0 -> 1487 bytes ....v1.2.Elements.Input.Text.InlineAction.png | Bin 4047 -> 3346 bytes ...t.AllElements.Stretch.HiddenVisibility.png | Bin 6624 -> 7031 bytes ...ve.v1.2.Tests.ContainerDoubleFallback.json | 1 + ...ive.v1.2.Tests.ContainerDoubleFallback.png | Bin 0 -> 1269 bytes ...on-Interactive.v1.2.Tests.DeepFallback.png | Bin 5941 -> 5934 bytes ...n-Interactive.v1.2.Tests.SearchResults.png | Bin 3618 -> 3566 bytes ...values).v1.2.Elements.Column.Fallback.json | 1 + ... values).v1.2.Elements.Column.Fallback.png | Bin 0 -> 1072 bytes ...s).v1.2.Tests.ContainerDoubleFallback.json | 1 + ...es).v1.2.Tests.ContainerDoubleFallback.png | Bin 0 -> 873 bytes ...efault values).v1.2.Tests.DeepFallback.png | Bin 8712 -> 8679 bytes ...v1.2.Elements.Column.Fallback.f5673a9.json | 49 ++ ...Tests.ContainerDoubleFallback.43be8cb.json | 1 + ...tConfig.v1.2.Elements.Column.Fallback.json | 1 + ...stConfig.v1.2.Elements.Column.Fallback.png | Bin 0 -> 1432 bytes ...ig.v1.2.Tests.ContainerDoubleFallback.json | 1 + ...fig.v1.2.Tests.ContainerDoubleFallback.png | Bin 0 -> 1109 bytes ...iantHostConfig.v1.2.Tests.DeepFallback.png | Bin 11682 -> 11616 bytes .../v1.2.Elements.Column.FallbackToJson.json | 1 + ...2.Tests.ContainerDoubleFallbackToJson.json | 1 + source/uwp/Renderer/lib/Util.cpp | 9 + source/uwp/Renderer/lib/XamlBuilder.cpp | 267 +++--- source/uwp/Renderer/lib/XamlBuilder.h | 5 + source/uwp/UWPUnitTests/FallbackTests.cs | 70 ++ source/uwp/UWPUnitTests/ObjectModelTests.cs | 8 +- source/uwp/UWPUnitTests/UWPUnitTests.csproj | 1 + source/uwp/UWPUnitTests/UnitTest.cs | 2 - 50 files changed, 1156 insertions(+), 790 deletions(-) create mode 100644 samples/v1.2/Elements/Column.Fallback.json create mode 100644 samples/v1.2/Tests/ContainerDoubleFallback.json create mode 100644 source/shared/cpp/AdaptiveCardsSharedModel/AdaptiveCardsSharedModelUnitTest/FallbackTests.cpp create mode 100644 source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.2.Elements.Column.Fallback.json create mode 100644 source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.2.Elements.Column.Fallback.png create mode 100644 source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.2.Tests.ContainerDoubleFallback.json create mode 100644 source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.2.Tests.ContainerDoubleFallback.png create mode 100644 source/uwp/AdaptiveCardTestApp/Expected/No host config (default values).v1.2.Elements.Column.Fallback.json create mode 100644 source/uwp/AdaptiveCardTestApp/Expected/No host config (default values).v1.2.Elements.Column.Fallback.png create mode 100644 source/uwp/AdaptiveCardTestApp/Expected/No host config (default values).v1.2.Tests.ContainerDoubleFallback.json create mode 100644 source/uwp/AdaptiveCardTestApp/Expected/No host config (default values).v1.2.Tests.ContainerDoubleFallback.png create mode 100644 source/uwp/AdaptiveCardTestApp/Expected/SourceCards/v1.2.Elements.Column.Fallback.f5673a9.json create mode 100644 source/uwp/AdaptiveCardTestApp/Expected/SourceCards/v1.2.Tests.ContainerDoubleFallback.43be8cb.json create mode 100644 source/uwp/AdaptiveCardTestApp/Expected/testVariantHostConfig.v1.2.Elements.Column.Fallback.json create mode 100644 source/uwp/AdaptiveCardTestApp/Expected/testVariantHostConfig.v1.2.Elements.Column.Fallback.png create mode 100644 source/uwp/AdaptiveCardTestApp/Expected/testVariantHostConfig.v1.2.Tests.ContainerDoubleFallback.json create mode 100644 source/uwp/AdaptiveCardTestApp/Expected/testVariantHostConfig.v1.2.Tests.ContainerDoubleFallback.png create mode 100644 source/uwp/AdaptiveCardTestApp/Expected/v1.2.Elements.Column.FallbackToJson.json create mode 100644 source/uwp/AdaptiveCardTestApp/Expected/v1.2.Tests.ContainerDoubleFallbackToJson.json create mode 100644 source/uwp/UWPUnitTests/FallbackTests.cs diff --git a/samples/v1.2/Elements/Column.Fallback.json b/samples/v1.2/Elements/Column.Fallback.json new file mode 100644 index 0000000000..c63e274c71 --- /dev/null +++ b/samples/v1.2/Elements/Column.Fallback.json @@ -0,0 +1,49 @@ +{ + "type": "AdaptiveCard", + "body": [ + { + "type": "ColumnSet", + "columns": [ + { + "type": "Column", + "items": [ + { + "type": "Graph" + } + ], + "fallback": { + "type": "Column", + "items": [ + { + "type": "TextBlock", + "text": "Fallback" + } + ] + }, + "width": "auto" + }, + { + "type": "Column", + "items": [ + { + "type": "Graph" + } + ], + "fallback": "drop" + }, + { + "type": "Column", + "items": [ + { + "type": "TextBlock", + "text": "This is a column", + "wrap": true + } + ] + } + ] + } + ], + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.0" +} diff --git a/samples/v1.2/Tests/ContainerDoubleFallback.json b/samples/v1.2/Tests/ContainerDoubleFallback.json new file mode 100644 index 0000000000..f1a7721e26 --- /dev/null +++ b/samples/v1.2/Tests/ContainerDoubleFallback.json @@ -0,0 +1 @@ +{ "type": "AdaptiveCard", "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "version": "1.2", "body": [ { "type": "whoknows", "fallback": { "type": "Container", "items": [ { "type": "notme" } ], "fallback": { "type": "TextBlock", "text": "Hello World" } } } ] } \ No newline at end of file diff --git a/source/shared/cpp/AdaptiveCardsSharedModel/AdaptiveCardsSharedModelUnitTest/AdaptiveCardsSharedModelUnitTest.vcxproj b/source/shared/cpp/AdaptiveCardsSharedModel/AdaptiveCardsSharedModelUnitTest/AdaptiveCardsSharedModelUnitTest.vcxproj index ad8d1e3022..277ad1dba1 100644 --- a/source/shared/cpp/AdaptiveCardsSharedModel/AdaptiveCardsSharedModelUnitTest/AdaptiveCardsSharedModelUnitTest.vcxproj +++ b/source/shared/cpp/AdaptiveCardsSharedModel/AdaptiveCardsSharedModelUnitTest/AdaptiveCardsSharedModelUnitTest.vcxproj @@ -170,6 +170,7 @@ + diff --git a/source/shared/cpp/AdaptiveCardsSharedModel/AdaptiveCardsSharedModelUnitTest/AdaptiveCardsSharedModelUnitTest.vcxproj.filters b/source/shared/cpp/AdaptiveCardsSharedModel/AdaptiveCardsSharedModelUnitTest/AdaptiveCardsSharedModelUnitTest.vcxproj.filters index 999821e017..38d962733a 100644 --- a/source/shared/cpp/AdaptiveCardsSharedModel/AdaptiveCardsSharedModelUnitTest/AdaptiveCardsSharedModelUnitTest.vcxproj.filters +++ b/source/shared/cpp/AdaptiveCardsSharedModel/AdaptiveCardsSharedModelUnitTest/AdaptiveCardsSharedModelUnitTest.vcxproj.filters @@ -83,5 +83,8 @@ Source Files + + Source Files + \ No newline at end of file diff --git a/source/shared/cpp/AdaptiveCardsSharedModel/AdaptiveCardsSharedModelUnitTest/FallbackTests.cpp b/source/shared/cpp/AdaptiveCardsSharedModel/AdaptiveCardsSharedModelUnitTest/FallbackTests.cpp new file mode 100644 index 0000000000..f71104d53e --- /dev/null +++ b/source/shared/cpp/AdaptiveCardsSharedModel/AdaptiveCardsSharedModelUnitTest/FallbackTests.cpp @@ -0,0 +1,778 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +#include "stdafx.h" + +#include "ChoiceSetInput.h" +#include "Column.h" +#include "ColumnSet.h" +#include "Container.h" +#include "FeatureRegistration.h" +#include "Media.h" +#include "OpenUrlAction.h" +#include "ParseContext.h" +#include "ShowCardAction.h" +#include "SubmitAction.h" +#include "TextBlock.h" +#include "TextInput.h" +#include "ToggleInput.h" +#include "UnknownElement.h" + +using namespace Microsoft::VisualStudio::CppUnitTestFramework; +using namespace AdaptiveCards; +using namespace std::string_literals; + +namespace AdaptiveCardsSharedModelUnitTest +{ + TEST_CLASS(FallbackTests) + { + public: + TEST_METHOD(ElementFallbackSerializationTest) + { + std::string cardStr = R"card({ + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "type" : "AdaptiveCard", + "version" : "1.2", + "body" : [ + { + "type": "TextBlock", + "text" : "TextBlock with fallback drop", + "fallback" : "drop" + }, + { + "type": "TextBlock", + "text" : "TextBlock with fallback content", + "fallback" : + { + "type": "TextBlock", + "text" : "fallback content goes here" + } + } + ] + })card"; + auto parseResult = AdaptiveCard::DeserializeFromString(cardStr, "1.2"); + auto card = parseResult->GetAdaptiveCard(); + auto body = card->GetBody(); + auto textBlock1 = std::static_pointer_cast(body.at(0)); + Assert::IsTrue(FallbackType::Drop == textBlock1->GetFallbackType(), L"Drop type"); + auto textBlock2 = std::static_pointer_cast(body.at(1)); + Assert::IsTrue(FallbackType::Content == textBlock2->GetFallbackType(), L"Content type"); + auto fallbackTextBlock = std::static_pointer_cast(textBlock2->GetFallbackContent()); + Assert::AreEqual(fallbackTextBlock->GetText().c_str(), "fallback content goes here"); + auto serializedCard = card->Serialize(); + Assert::AreEqual(serializedCard.c_str(), + "{\"actions\":[],\"body\":[{\"fallback\":\"drop\",\"text\":\"TextBlock with fallback drop\",\"type\":\"TextBlock\"},{\"fallback\":{\"text\":\"fallback content goes here\",\"type\":\"TextBlock\"},\"text\":\"TextBlock with fallback content\",\"type\":\"TextBlock\"}],\"type\":\"AdaptiveCard\",\"version\":\"1.2\"}\n"); + } + + TEST_METHOD(ActionFallbackSerializationTest) + { + std::string cardStr = R"card({ + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "type" : "AdaptiveCard", + "version" : "1.2", + "body" : [ + { + "type": "TextBlock", + "text" : "test text" + } + ], + "actions": [ + { + "type": "Action.Submit", + "title": "Drop Test", + "fallback": "drop" + }, + { + "type": "Action.OpenUrl", + "title": "Content Test", + "url": "http://example.com/", + "fallback": + { + "type": "Action.OpenUrl", + "title": "Fallback content", + "url": "http://example.com/fallback/" + } + } + ] + })card"; + auto parseResult = AdaptiveCard::DeserializeFromString(cardStr, "1.2"); + auto card = parseResult->GetAdaptiveCard(); + auto actions = card->GetActions(); + auto submitAction = std::static_pointer_cast(actions.at(0)); + Assert::IsTrue(FallbackType::Drop == submitAction->GetFallbackType(), L"Drop type"); + auto openUrlAction = std::static_pointer_cast(actions.at(1)); + Assert::IsTrue(FallbackType::Content == openUrlAction->GetFallbackType(), L"Content type"); + auto fallbackAction = std::static_pointer_cast(openUrlAction->GetFallbackContent()); + Assert::IsTrue(fallbackAction->GetElementType() == ActionType::OpenUrl, L"openurl type check"); + Assert::AreEqual(fallbackAction->GetTitle().c_str(), "Fallback content", L"title comparison"); + Assert::AreEqual(fallbackAction->GetUrl().c_str(), "http://example.com/fallback/", L"url comparison"); + auto serializedCard = card->Serialize(); + Assert::AreEqual(serializedCard.c_str(), + "{\"actions\":[{\"fallback\":\"drop\",\"title\":\"Drop Test\",\"type\":\"Action.Submit\"},{\"fallback\":{\"title\":\"Fallback content\",\"type\":\"Action.OpenUrl\",\"url\":\"http://example.com/fallback/\"},\"title\":\"Content Test\",\"type\":\"Action.OpenUrl\",\"url\":\"http://example.com/\"}],\"body\":[{\"text\":\"test text\",\"type\":\"TextBlock\"}],\"type\":\"AdaptiveCard\",\"version\":\"1.2\"}\n"); + } + + TEST_METHOD(FallbackSimpleDuplicateTest) + { + std::string cardStr = R"card({ + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "type" : "AdaptiveCard", + "version" : "1.2", + "body" : [ + { + "type": "TextBlock", + "text" : "1", + "id": "1" + }, + { + "type": "Container", + "id": "2", + "items": [ + { + "type": "TextBlock", + "text" : "3", + "id": "3", + "fallback": + { + "type": "TextBlock", + "text" : "3 fallback (this is okay)", + "id": "3" + } + }, + { + "type": "TextBlock", + "text" : "4", + "id": "4", + "fallback": + { + "type": "Container", + "id": "4", + "items": [ + { + "type": "TextBlock", + "text" : "4 fallback container item. id is 3. this is *not* okay", + "id": "3" + } + ] + } + } + ] + } + ] + })card"; + try + { + AdaptiveCard::DeserializeFromString(cardStr, "1.2"); + Assert::IsTrue(false, L"Deserializing should throw an exception"); + } + catch (const AdaptiveCardParseException& e) + { + Assert::IsTrue(ErrorStatusCode::IdCollision == e.GetStatusCode(), L"ErrorStatusCode incorrect"); + Assert::AreEqual("Collision detected for id '3'", e.GetReason().c_str(), L"GetReason incorrect"); + } + } + + TEST_METHOD(ElementFallbackDeepIdCollision) + { + std::string cardStr = R"card({ + "type": "AdaptiveCard", + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.2", + "body": [ + { + "type": "Container", + "id": "A", + "items": [ + { + "type": "Container", + "id": "B", + "fallback": { + "type": "Container", + "id": "B", + "items": [ + { + "type": "TextBlock", + "text": "B Container fallback textblock" + }, + { + "type": "Image", + "url": "http://adaptivecards.io/content/cats/1.png" + } + ] + }, + "items": [ + { + "type": "ColumnSet", + "id": "C", + "columns": [ + { + "type": "Column", + "id": "D", + "items": [ + { + "type": "Graph", + "id": "E", + "someProperty": "blah", + "fallback": { + "type": "Container", + "id": "E", + "items": [ + { + "type": "Image", + "id": "I", + "url": "http://adaptivecards.io/content/cats/2.png" + }, + { + "type": "TextBlock", + "id": "J", + "text": "C ColumnSet fallback textblock" + } + ] + } + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "TextBlock", + "id": "F", + "text": "F TextBlock" + }, + { + "type": "Input.Text", + "id": "G", + "placeholder": "G Input.Text" + }, + { + "type": "Graph", + "id": "H", + "someProperty": "foo", + "fallback": { + "type": "Container", + "id": "E", + "items": [ + { + "type": "TextBlock", + "id": "K", + "text": "H Graph fallback TextBlock" + } + ] + } + } + ] + })card"; + try + { + AdaptiveCard::DeserializeFromString(cardStr, "1.2"); + Assert::IsTrue(false, L"Deserializing should throw an exception"); + } + catch (const AdaptiveCardParseException& e) + { + Assert::IsTrue(ErrorStatusCode::IdCollision == e.GetStatusCode(), L"ErrorStatusCode incorrect"); + Assert::AreEqual("Collision detected for id 'E'", e.GetReason().c_str(), L"GetReason incorrect"); + } + } + + TEST_METHOD(ElementFallbackDeepIdOkay) + { + std::string cardStr = R"card({ + "type": "AdaptiveCard", + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.2", + "body": [ + { + "type": "Container", + "id": "A", + "items": [ + { + "type": "Container", + "id": "B", + "fallback": { + "type": "Container", + "id": "B", + "items": [ + { + "type": "TextBlock", + "id": "C", + "text": "B Container fallback textblock" + }, + { + "type": "Image", + "id": "Z", + "url": "http://adaptivecards.io/content/cats/1.png" + } + ] + }, + "items": [ + { + "type": "ColumnSet", + "id": "C", + "columns": [ + { + "type": "Column", + "id": "D", + "items": [ + { + "type": "Graph", + "id": "E", + "someProperty": "blah", + "fallback": { + "type": "Container", + "id": "E", + "items": [ + { + "type": "Image", + "id": "I", + "url": "http://adaptivecards.io/content/cats/2.png" + }, + { + "type": "TextBlock", + "id": "J", + "text": "C ColumnSet fallback textblock" + } + ] + } + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "TextBlock", + "id": "F", + "text": "F TextBlock" + }, + { + "type": "Input.Text", + "id": "G", + "fallback": "drop", + "placeholder": "G Input.Text" + }, + { + "type": "Graph", + "id": "H", + "someProperty": "foo", + "fallback": { + "type": "Container", + "id": "L", + "items": [ + { + "type": "TextBlock", + "id": "K", + "text": "H Graph fallback TextBlock" + } + ] + } + } + ] + })card"; + auto parseResult = AdaptiveCard::DeserializeFromString(cardStr, "1.2"); + auto card = parseResult->GetAdaptiveCard(); + auto body = card->GetBody(); + + { + auto containerA = std::static_pointer_cast(body.at(0)); + Assert::IsTrue(containerA->GetId() == "A"); + auto containerAB = std::static_pointer_cast(containerA->GetItems()[0]); + Assert::IsTrue(containerAB->GetId() == "B"); + Assert::IsTrue(containerAB->GetFallbackType() == FallbackType::Content); + auto containerABFallback = std::static_pointer_cast(containerAB->GetFallbackContent()); + Assert::IsTrue(containerABFallback->GetId() == "B"); + auto containerABC = std::static_pointer_cast(containerAB->GetItems()[0]); + Assert::IsTrue(containerABC->GetFallbackType() == FallbackType::None); + auto containerABCD = std::static_pointer_cast(containerABC->GetColumns()[0]); + auto containerABCDE = std::static_pointer_cast(containerABCD->GetItems()[0]); + Assert::AreEqual("Graph", containerABCDE->GetElementTypeString().c_str()); + Assert::IsTrue(containerABCDE->GetId() == "E"); + Assert::IsTrue(containerABCDE->GetFallbackType() == FallbackType::Content); + auto containerABCDEFallback = std::static_pointer_cast(containerABCDE->GetFallbackContent()); + Assert::IsTrue(containerABCDEFallback->GetId() == "E"); + } + + { + auto inputG = std::static_pointer_cast(body.at(2)); + Assert::IsTrue(inputG->GetId() == "G"); + Assert::IsTrue(inputG->GetFallbackType() == FallbackType::Drop); + } + + { + auto unknownH = std::static_pointer_cast(body.at(3)); + Assert::IsTrue(unknownH->GetId() == "H"); + Assert::IsTrue(unknownH->GetFallbackType() == FallbackType::Content); + auto unknownHL = std::static_pointer_cast(unknownH->GetFallbackContent()); + Assert::IsTrue(unknownHL->GetId() == "L"); + } + } + + TEST_METHOD(DuplicateFallbackIdSimple) + { + std::string cardStr = R"card({ + "type": "AdaptiveCard", + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.2", + "body": [ + { + "type": "Container", + "fallback": { + "type": "Container", + "items": [ + { + "type": "TextBlock", + "id": "B", + "text": "First B fallback textblock" + }, + { + "type": "TextBlock", + "id": "B", + "text": "Second B fallback textblock" + } + ] + }, + "items": [ + { + "type": "TextBlock", + "text": "Non-fallback textblock" + } + ] + } + ] + })card"; + try + { + AdaptiveCard::DeserializeFromString(cardStr, "1.2"); + Assert::IsTrue(false, L"Deserializing should throw an exception"); + } + catch (const AdaptiveCardParseException& e) + { + Assert::IsTrue(ErrorStatusCode::IdCollision == e.GetStatusCode(), L"ErrorStatusCode incorrect"); + Assert::AreEqual("Collision detected for id 'B'", e.GetReason().c_str(), L"GetReason incorrect"); + } + } + + TEST_METHOD(DuplicateFallbackId) + { + std::string cardStr = R"card({ + "type": "AdaptiveCard", + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.2", + "body": [ + { + "type": "TextBlock", + "text": "First textblock", + "fallback": { + "type": "TextBlock", + "id": "duplicate", + "text": "First fallback textblock" + } + }, + { + "type": "TextBlock", + "text": "Second textblock", + "fallback": { + "type": "TextBlock", + "id": "duplicate", + "text": "Second fallback textblock" + } + } + ] + })card"; + try + { + AdaptiveCard::DeserializeFromString(cardStr, "1.2"); + Assert::IsTrue(false, L"Deserializing should throw an exception"); + } + catch (const AdaptiveCardParseException& e) + { + Assert::IsTrue(ErrorStatusCode::IdCollision == e.GetStatusCode(), L"ErrorStatusCode incorrect"); + Assert::AreEqual("Collision detected for id 'duplicate'", e.GetReason().c_str(), L"GetReason incorrect"); + } + } + + TEST_METHOD(DuplicateFallbackIdNestedOk) + { + std::string cardStr = R"card({ + "type": "AdaptiveCard", + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.2", + "body": [ + { + "type": "TextBlock", + "text": "First textblock", + "id": "duplicate", + "fallback": { + "type": "TextBlock", + "id": "duplicate", + "text": "First fallback textblock", + "fallback": { + "type": "TextBlock", + "id": "duplicate", + "text": "Second fallback textblock" + } + } + } + ] + })card"; + AdaptiveCard::DeserializeFromString(cardStr, "1.2"); + } + + TEST_METHOD(RequiresAndFallbackSerialization) + { + std::string cardStr = R"card({ + "type": "AdaptiveCard", + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.2", + "body": [ + { + "type": "TextBlock", + "text": "This element requires version 1.2", + "requires": { + "adaptiveCards": "1.2", + "foobar": "2" + }, + "fallback": { + "type": "TextBlock", + "text": "This element has no version requirement" + } + } + ] + })card"; + auto parseResult = AdaptiveCard::DeserializeFromString(cardStr, "1.2"); + auto card = parseResult->GetAdaptiveCard(); + auto serializedCard = card->Serialize(); + Assert::AreEqual("{\"actions\":[],\"body\":[{\"fallback\":{\"text\":\"This element has no version requirement\",\"type\":\"TextBlock\"},\"requires\":{\"adaptiveCards\":\"1.2.0.0\",\"foobar\":\"2.0.0.0\"},\"text\":\"This element requires version 1.2\",\"type\":\"TextBlock\"}],\"type\":\"AdaptiveCard\",\"version\":\"1.2\"}\n", + serializedCard.c_str()); + } + + TEST_METHOD(RequiresValidation) + { + std::string cardStr = R"card({ + "type": "AdaptiveCard", + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.2", + "body": [ + { + "type": "TextBlock", + "text": "This element requires version 1.2", + "requires": { + "adaptiveCards": "1.2", + "foobar": "2" + } + }, + { + "type": "TextBlock", + "text": "This element has no explicit requirements" + } + ] + })card"; + auto parseResult = AdaptiveCard::DeserializeFromString(cardStr, "1.2"); + auto card = parseResult->GetAdaptiveCard(); + auto body = card->GetBody(); + auto textBlock = std::static_pointer_cast(body[0]); + auto textBlockNoRequires = std::static_pointer_cast(body[1]); + + FeatureRegistration featureRegistration; + + featureRegistration.AddFeature("foobar", "2"); + Assert::IsTrue(textBlock->MeetsRequirements(featureRegistration)); + Assert::IsTrue(textBlockNoRequires->MeetsRequirements(featureRegistration)); + + featureRegistration.RemoveFeature("foobar"); + Assert::IsFalse(textBlock->MeetsRequirements(featureRegistration)); + Assert::IsTrue(textBlockNoRequires->MeetsRequirements(featureRegistration)); + + featureRegistration.AddFeature("foobar", "1.9.9.9"); + Assert::IsFalse(textBlock->MeetsRequirements(featureRegistration)); + Assert::IsTrue(textBlockNoRequires->MeetsRequirements(featureRegistration)); + + featureRegistration.RemoveFeature("foobar"); + featureRegistration.AddFeature("foobar", "99"); + Assert::IsTrue(textBlock->MeetsRequirements(featureRegistration)); + Assert::IsTrue(textBlockNoRequires->MeetsRequirements(featureRegistration)); + } + + TEST_METHOD(NestedFallbacksSerialization) + { + std::string cardStr = R"card({ + "type": "AdaptiveCard", + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.2", + "body": [ + { + "type": "GraphV2", + "fallback": { + "type": "Graph", + "fallback": { + "type": "TextBlock", + "text": "No `Graph` support?" + } + } + } + ] + })card"; + auto parseResult = AdaptiveCard::DeserializeFromString(cardStr, "1.2"); + auto card = parseResult->GetAdaptiveCard(); + auto serializedCard = card->Serialize(); + Assert::AreEqual("{\"actions\":[],\"body\":[{\"fallback\":{\"fallback\":{\"text\":\"No `Graph` support?\",\"type\":\"TextBlock\"},\"type\":\"Graph\"},\"type\":\"GraphV2\"}],\"type\":\"AdaptiveCard\",\"version\":\"1.2\"}\n", + serializedCard.c_str()); + } + + TEST_METHOD(InvalidFallbackStringBody) + { + std::string cardStr = R"card({ + "type": "AdaptiveCard", + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.2", + "body": [ + { + "type": "TextBlock", + "text": "textblock", + "fallback": "steve" + } + ] + })card"; + try + { + AdaptiveCard::DeserializeFromString(cardStr, "1.2"); + Assert::IsTrue(false, L"Deserializing should throw an exception"); + } + catch (const AdaptiveCardParseException& e) + { + Assert::IsTrue(ErrorStatusCode::InvalidPropertyValue == e.GetStatusCode(), L"ErrorStatusCode incorrect"); + Assert::AreEqual("The only valid string value for the fallback property is 'drop'.", e.GetReason().c_str(), L"GetReason incorrect"); + } + } + + TEST_METHOD(InvalidFallbackStringAction) + { + std::string cardStr = R"card({ + "type": "AdaptiveCard", + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.2", + "body": [ + { + "type": "TextBlock", + "text": "textblock" + } + ], + "actions": [ + { + "type": "Blahblah", + "fallback": "steve" + } + ] + })card"; + try + { + AdaptiveCard::DeserializeFromString(cardStr, "1.2"); + Assert::IsTrue(false, L"Deserializing should throw an exception"); + } + catch (const AdaptiveCardParseException& e) + { + Assert::IsTrue(ErrorStatusCode::InvalidPropertyValue == e.GetStatusCode(), L"ErrorStatusCode incorrect"); + Assert::AreEqual("The only valid string value for the fallback property is 'drop'.", e.GetReason().c_str(), L"GetReason incorrect"); + } + } + + TEST_METHOD(InvalidFallbackArray) + { + std::string cardStr = R"card({ + "type": "AdaptiveCard", + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.2", + "body": [ + { + "type": "TextBlock", + "text": "textblock", + "fallback": [ { "blah": "2" } ] + } + ] + })card"; + try + { + AdaptiveCard::DeserializeFromString(cardStr, "1.2"); + Assert::IsTrue(false, L"Deserializing should throw an exception"); + } + catch (const AdaptiveCardParseException& e) + { + Assert::IsTrue(ErrorStatusCode::InvalidPropertyValue == e.GetStatusCode(), L"ErrorStatusCode incorrect"); + Assert::AreEqual("Invalid value for fallback", e.GetReason().c_str(), L"GetReason incorrect"); + } + } + + TEST_METHOD(ColumnFallback) + { + std::string cardStr = R"card({ + "type": "AdaptiveCard", + "version": "1.0", + "body": [ + { + "type": "ColumnSet", + "columns": [ + { + "type": "Column", + "items": [ + { + "type": "Graph" + }], + "fallback": { + "type": "Column", + "items": [ + { + "type": "TextBlock", + "text": "Fallback" + }] + } + }] + }] + })card"; + + auto parseResult = AdaptiveCard::DeserializeFromString(cardStr, "1.2"); + Assert::AreEqual(0U, parseResult->GetWarnings().size()); + + auto column = (std::static_pointer_cast(parseResult->GetAdaptiveCard()->GetBody().at(0)))->GetColumns().at(0); + Assert::IsTrue(FallbackType::Content == column->GetFallbackType()); + + auto fallbackColumn = column->GetFallbackContent(); + Assert::AreEqual("Column"s, fallbackColumn->GetElementTypeString()); + } + + TEST_METHOD(ColumnBadFallback) + { + std::string cardStr = R"card({ + "type": "AdaptiveCard", + "version": "1.0", + "body": [ + { + "type": "ColumnSet", + "columns": [ + { + "type": "Column", + "items": [ + { + "type": "Graph" + }], + "fallback": { + "type": "TextBlock", + "text": "Fallback" + } + }] + }] + })card"; + + auto parseResult = AdaptiveCard::DeserializeFromString(cardStr, "1.2"); + Assert::AreEqual(1U, parseResult->GetWarnings().size()); + Assert::IsTrue(WarningStatusCode::UnknownElementType == parseResult->GetWarnings().at(0)->GetStatusCode()); + Assert::AreEqual("Column Fallback must be a Column. Fallback content dropped."s, parseResult->GetWarnings().at(0)->GetReason()); + + auto column = (std::static_pointer_cast(parseResult->GetAdaptiveCard()->GetBody().at(0)))->GetColumns().at(0); + Assert::IsTrue(FallbackType::None == column->GetFallbackType()); + } + }; +} diff --git a/source/shared/cpp/AdaptiveCardsSharedModel/AdaptiveCardsSharedModelUnitTest/ObjectModelTest.cpp b/source/shared/cpp/AdaptiveCardsSharedModel/AdaptiveCardsSharedModelUnitTest/ObjectModelTest.cpp index 815401ee32..1fe062c878 100644 --- a/source/shared/cpp/AdaptiveCardsSharedModel/AdaptiveCardsSharedModelUnitTest/ObjectModelTest.cpp +++ b/source/shared/cpp/AdaptiveCardsSharedModel/AdaptiveCardsSharedModelUnitTest/ObjectModelTest.cpp @@ -462,686 +462,6 @@ namespace AdaptiveCardsSharedModelUnitTest runWrapTest(body, 1, false); } - TEST_METHOD(ElementFallbackSerializationTest) - { - std::string cardStr = R"card({ - "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", - "type" : "AdaptiveCard", - "version" : "1.2", - "body" : [ - { - "type": "TextBlock", - "text" : "TextBlock with fallback drop", - "fallback" : "drop" - }, - { - "type": "TextBlock", - "text" : "TextBlock with fallback content", - "fallback" : - { - "type": "TextBlock", - "text" : "fallback content goes here" - } - } - ] - })card"; - auto parseResult = AdaptiveCard::DeserializeFromString(cardStr, "1.2"); - auto card = parseResult->GetAdaptiveCard(); - auto body = card->GetBody(); - auto textBlock1 = std::static_pointer_cast(body.at(0)); - Assert::IsTrue(FallbackType::Drop == textBlock1->GetFallbackType(), L"Drop type"); - auto textBlock2 = std::static_pointer_cast(body.at(1)); - Assert::IsTrue(FallbackType::Content == textBlock2->GetFallbackType(), L"Content type"); - auto fallbackTextBlock = std::static_pointer_cast(textBlock2->GetFallbackContent()); - Assert::AreEqual(fallbackTextBlock->GetText().c_str(), "fallback content goes here"); - auto serializedCard = card->Serialize(); - Assert::AreEqual(serializedCard.c_str(), - "{\"actions\":[],\"body\":[{\"fallback\":\"drop\",\"text\":\"TextBlock with fallback drop\",\"type\":\"TextBlock\"},{\"fallback\":{\"text\":\"fallback content goes here\",\"type\":\"TextBlock\"},\"text\":\"TextBlock with fallback content\",\"type\":\"TextBlock\"}],\"type\":\"AdaptiveCard\",\"version\":\"1.2\"}\n"); - } - - TEST_METHOD(ActionFallbackSerializationTest) - { - std::string cardStr = R"card({ - "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", - "type" : "AdaptiveCard", - "version" : "1.2", - "body" : [ - { - "type": "TextBlock", - "text" : "test text" - } - ], - "actions": [ - { - "type": "Action.Submit", - "title": "Drop Test", - "fallback": "drop" - }, - { - "type": "Action.OpenUrl", - "title": "Content Test", - "url": "http://example.com/", - "fallback": - { - "type": "Action.OpenUrl", - "title": "Fallback content", - "url": "http://example.com/fallback/" - } - } - ] - })card"; - auto parseResult = AdaptiveCard::DeserializeFromString(cardStr, "1.2"); - auto card = parseResult->GetAdaptiveCard(); - auto actions = card->GetActions(); - auto submitAction = std::static_pointer_cast(actions.at(0)); - Assert::IsTrue(FallbackType::Drop == submitAction->GetFallbackType(), L"Drop type"); - auto openUrlAction = std::static_pointer_cast(actions.at(1)); - Assert::IsTrue(FallbackType::Content == openUrlAction->GetFallbackType(), L"Content type"); - auto fallbackAction = std::static_pointer_cast(openUrlAction->GetFallbackContent()); - Assert::IsTrue(fallbackAction->GetElementType() == ActionType::OpenUrl, L"openurl type check"); - Assert::AreEqual(fallbackAction->GetTitle().c_str(), "Fallback content", L"title comparison"); - Assert::AreEqual(fallbackAction->GetUrl().c_str(), "http://example.com/fallback/", L"url comparison"); - auto serializedCard = card->Serialize(); - Assert::AreEqual(serializedCard.c_str(), - "{\"actions\":[{\"fallback\":\"drop\",\"title\":\"Drop Test\",\"type\":\"Action.Submit\"},{\"fallback\":{\"title\":\"Fallback content\",\"type\":\"Action.OpenUrl\",\"url\":\"http://example.com/fallback/\"},\"title\":\"Content Test\",\"type\":\"Action.OpenUrl\",\"url\":\"http://example.com/\"}],\"body\":[{\"text\":\"test text\",\"type\":\"TextBlock\"}],\"type\":\"AdaptiveCard\",\"version\":\"1.2\"}\n"); - } - - TEST_METHOD(FallbackSimpleDuplicateTest) - { - std::string cardStr = R"card({ - "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", - "type" : "AdaptiveCard", - "version" : "1.2", - "body" : [ - { - "type": "TextBlock", - "text" : "1", - "id": "1" - }, - { - "type": "Container", - "id": "2", - "items": [ - { - "type": "TextBlock", - "text" : "3", - "id": "3", - "fallback": - { - "type": "TextBlock", - "text" : "3 fallback (this is okay)", - "id": "3" - } - }, - { - "type": "TextBlock", - "text" : "4", - "id": "4", - "fallback": - { - "type": "Container", - "id": "4", - "items": [ - { - "type": "TextBlock", - "text" : "4 fallback container item. id is 3. this is *not* okay", - "id": "3" - } - ] - } - } - ] - } - ] - })card"; - try - { - AdaptiveCard::DeserializeFromString(cardStr, "1.2"); - Assert::IsTrue(false, L"Deserializing should throw an exception"); - } - catch (const AdaptiveCardParseException& e) - { - Assert::IsTrue(ErrorStatusCode::IdCollision == e.GetStatusCode(), L"ErrorStatusCode incorrect"); - Assert::AreEqual("Collision detected for id '3'", e.GetReason().c_str(), L"GetReason incorrect"); - } - } - - TEST_METHOD(ElementFallbackDeepIdCollision) - { - std::string cardStr = R"card({ - "type": "AdaptiveCard", - "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", - "version": "1.2", - "body": [ - { - "type": "Container", - "id": "A", - "items": [ - { - "type": "Container", - "id": "B", - "fallback": { - "type": "Container", - "id": "B", - "items": [ - { - "type": "TextBlock", - "text": "B Container fallback textblock" - }, - { - "type": "Image", - "url": "http://adaptivecards.io/content/cats/1.png" - } - ] - }, - "items": [ - { - "type": "ColumnSet", - "id": "C", - "columns": [ - { - "type": "Column", - "id": "D", - "items": [ - { - "type": "Graph", - "id": "E", - "someProperty": "blah", - "fallback": { - "type": "Container", - "id": "E", - "items": [ - { - "type": "Image", - "id": "I", - "url": "http://adaptivecards.io/content/cats/2.png" - }, - { - "type": "TextBlock", - "id": "J", - "text": "C ColumnSet fallback textblock" - } - ] - } - } - ] - } - ] - } - ] - } - ] - }, - { - "type": "TextBlock", - "id": "F", - "text": "F TextBlock" - }, - { - "type": "Input.Text", - "id": "G", - "placeholder": "G Input.Text" - }, - { - "type": "Graph", - "id": "H", - "someProperty": "foo", - "fallback": { - "type": "Container", - "id": "E", - "items": [ - { - "type": "TextBlock", - "id": "K", - "text": "H Graph fallback TextBlock" - } - ] - } - } - ] - })card"; - try - { - AdaptiveCard::DeserializeFromString(cardStr, "1.2"); - Assert::IsTrue(false, L"Deserializing should throw an exception"); - } - catch (const AdaptiveCardParseException& e) - { - Assert::IsTrue(ErrorStatusCode::IdCollision == e.GetStatusCode(), L"ErrorStatusCode incorrect"); - Assert::AreEqual("Collision detected for id 'E'", e.GetReason().c_str(), L"GetReason incorrect"); - } - } - - TEST_METHOD(ElementFallbackDeepIdOkay) - { - std::string cardStr = R"card({ - "type": "AdaptiveCard", - "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", - "version": "1.2", - "body": [ - { - "type": "Container", - "id": "A", - "items": [ - { - "type": "Container", - "id": "B", - "fallback": { - "type": "Container", - "id": "B", - "items": [ - { - "type": "TextBlock", - "id": "C", - "text": "B Container fallback textblock" - }, - { - "type": "Image", - "id": "Z", - "url": "http://adaptivecards.io/content/cats/1.png" - } - ] - }, - "items": [ - { - "type": "ColumnSet", - "id": "C", - "columns": [ - { - "type": "Column", - "id": "D", - "items": [ - { - "type": "Graph", - "id": "E", - "someProperty": "blah", - "fallback": { - "type": "Container", - "id": "E", - "items": [ - { - "type": "Image", - "id": "I", - "url": "http://adaptivecards.io/content/cats/2.png" - }, - { - "type": "TextBlock", - "id": "J", - "text": "C ColumnSet fallback textblock" - } - ] - } - } - ] - } - ] - } - ] - } - ] - }, - { - "type": "TextBlock", - "id": "F", - "text": "F TextBlock" - }, - { - "type": "Input.Text", - "id": "G", - "fallback": "drop", - "placeholder": "G Input.Text" - }, - { - "type": "Graph", - "id": "H", - "someProperty": "foo", - "fallback": { - "type": "Container", - "id": "L", - "items": [ - { - "type": "TextBlock", - "id": "K", - "text": "H Graph fallback TextBlock" - } - ] - } - } - ] - })card"; - auto parseResult = AdaptiveCard::DeserializeFromString(cardStr, "1.2"); - auto card = parseResult->GetAdaptiveCard(); - auto body = card->GetBody(); - - { - auto containerA = std::static_pointer_cast(body.at(0)); - Assert::IsTrue(containerA->GetId() == "A"); - auto containerAB = std::static_pointer_cast(containerA->GetItems()[0]); - Assert::IsTrue(containerAB->GetId() == "B"); - Assert::IsTrue(containerAB->GetFallbackType() == FallbackType::Content); - auto containerABFallback = std::static_pointer_cast(containerAB->GetFallbackContent()); - Assert::IsTrue(containerABFallback->GetId() == "B"); - auto containerABC = std::static_pointer_cast(containerAB->GetItems()[0]); - Assert::IsTrue(containerABC->GetFallbackType() == FallbackType::None); - auto containerABCD = std::static_pointer_cast(containerABC->GetColumns()[0]); - auto containerABCDE = std::static_pointer_cast(containerABCD->GetItems()[0]); - Assert::AreEqual("Graph", containerABCDE->GetElementTypeString().c_str()); - Assert::IsTrue(containerABCDE->GetId() == "E"); - Assert::IsTrue(containerABCDE->GetFallbackType() == FallbackType::Content); - auto containerABCDEFallback = std::static_pointer_cast(containerABCDE->GetFallbackContent()); - Assert::IsTrue(containerABCDEFallback->GetId() == "E"); - } - - { - auto inputG = std::static_pointer_cast(body.at(2)); - Assert::IsTrue(inputG->GetId() == "G"); - Assert::IsTrue(inputG->GetFallbackType() == FallbackType::Drop); - } - - { - auto unknownH = std::static_pointer_cast(body.at(3)); - Assert::IsTrue(unknownH->GetId() == "H"); - Assert::IsTrue(unknownH->GetFallbackType() == FallbackType::Content); - auto unknownHL = std::static_pointer_cast(unknownH->GetFallbackContent()); - Assert::IsTrue(unknownHL->GetId() == "L"); - } - } - - TEST_METHOD(DuplicateFallbackIdSimple) - { - std::string cardStr = R"card({ - "type": "AdaptiveCard", - "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", - "version": "1.2", - "body": [ - { - "type": "Container", - "fallback": { - "type": "Container", - "items": [ - { - "type": "TextBlock", - "id": "B", - "text": "First B fallback textblock" - }, - { - "type": "TextBlock", - "id": "B", - "text": "Second B fallback textblock" - } - ] - }, - "items": [ - { - "type": "TextBlock", - "text": "Non-fallback textblock" - } - ] - } - ] - })card"; - try - { - AdaptiveCard::DeserializeFromString(cardStr, "1.2"); - Assert::IsTrue(false, L"Deserializing should throw an exception"); - } - catch (const AdaptiveCardParseException& e) - { - Assert::IsTrue(ErrorStatusCode::IdCollision == e.GetStatusCode(), L"ErrorStatusCode incorrect"); - Assert::AreEqual("Collision detected for id 'B'", e.GetReason().c_str(), L"GetReason incorrect"); - } - } - - TEST_METHOD(DuplicateFallbackId) - { - std::string cardStr = R"card({ - "type": "AdaptiveCard", - "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", - "version": "1.2", - "body": [ - { - "type": "TextBlock", - "text": "First textblock", - "fallback": { - "type": "TextBlock", - "id": "duplicate", - "text": "First fallback textblock" - } - }, - { - "type": "TextBlock", - "text": "Second textblock", - "fallback": { - "type": "TextBlock", - "id": "duplicate", - "text": "Second fallback textblock" - } - } - ] - })card"; - try - { - AdaptiveCard::DeserializeFromString(cardStr, "1.2"); - Assert::IsTrue(false, L"Deserializing should throw an exception"); - } - catch (const AdaptiveCardParseException& e) - { - Assert::IsTrue(ErrorStatusCode::IdCollision == e.GetStatusCode(), L"ErrorStatusCode incorrect"); - Assert::AreEqual("Collision detected for id 'duplicate'", e.GetReason().c_str(), L"GetReason incorrect"); - } - } - - TEST_METHOD(DuplicateFallbackIdNestedOk) - { - std::string cardStr = R"card({ - "type": "AdaptiveCard", - "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", - "version": "1.2", - "body": [ - { - "type": "TextBlock", - "text": "First textblock", - "id": "duplicate", - "fallback": { - "type": "TextBlock", - "id": "duplicate", - "text": "First fallback textblock", - "fallback": { - "type": "TextBlock", - "id": "duplicate", - "text": "Second fallback textblock" - } - } - } - ] - })card"; - AdaptiveCard::DeserializeFromString(cardStr, "1.2"); - } - - TEST_METHOD(RequiresAndFallbackSerialization) - { - std::string cardStr = R"card({ - "type": "AdaptiveCard", - "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", - "version": "1.2", - "body": [ - { - "type": "TextBlock", - "text": "This element requires version 1.2", - "requires": { - "adaptiveCards": "1.2", - "foobar": "2" - }, - "fallback": { - "type": "TextBlock", - "text": "This element has no version requirement" - } - } - ] - })card"; - auto parseResult = AdaptiveCard::DeserializeFromString(cardStr, "1.2"); - auto card = parseResult->GetAdaptiveCard(); - auto serializedCard = card->Serialize(); - Assert::AreEqual("{\"actions\":[],\"body\":[{\"fallback\":{\"text\":\"This element has no version requirement\",\"type\":\"TextBlock\"},\"requires\":{\"adaptiveCards\":\"1.2.0.0\",\"foobar\":\"2.0.0.0\"},\"text\":\"This element requires version 1.2\",\"type\":\"TextBlock\"}],\"type\":\"AdaptiveCard\",\"version\":\"1.2\"}\n", - serializedCard.c_str()); - } - - TEST_METHOD(RequiresValidation) - { - std::string cardStr = R"card({ - "type": "AdaptiveCard", - "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", - "version": "1.2", - "body": [ - { - "type": "TextBlock", - "text": "This element requires version 1.2", - "requires": { - "adaptiveCards": "1.2", - "foobar": "2" - } - }, - { - "type": "TextBlock", - "text": "This element has no explicit requirements" - } - ] - })card"; - auto parseResult = AdaptiveCard::DeserializeFromString(cardStr, "1.2"); - auto card = parseResult->GetAdaptiveCard(); - auto body = card->GetBody(); - auto textBlock = std::static_pointer_cast(body[0]); - auto textBlockNoRequires = std::static_pointer_cast(body[1]); - - FeatureRegistration featureRegistration; - - featureRegistration.AddFeature("foobar", "2"); - Assert::IsTrue(textBlock->MeetsRequirements(featureRegistration)); - Assert::IsTrue(textBlockNoRequires->MeetsRequirements(featureRegistration)); - - featureRegistration.RemoveFeature("foobar"); - Assert::IsFalse(textBlock->MeetsRequirements(featureRegistration)); - Assert::IsTrue(textBlockNoRequires->MeetsRequirements(featureRegistration)); - - featureRegistration.AddFeature("foobar", "1.9.9.9"); - Assert::IsFalse(textBlock->MeetsRequirements(featureRegistration)); - Assert::IsTrue(textBlockNoRequires->MeetsRequirements(featureRegistration)); - - featureRegistration.RemoveFeature("foobar"); - featureRegistration.AddFeature("foobar", "99"); - Assert::IsTrue(textBlock->MeetsRequirements(featureRegistration)); - Assert::IsTrue(textBlockNoRequires->MeetsRequirements(featureRegistration)); - } - - TEST_METHOD(NestedFallbacksSerialization) - { - std::string cardStr = R"card({ - "type": "AdaptiveCard", - "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", - "version": "1.2", - "body": [ - { - "type": "GraphV2", - "fallback": { - "type": "Graph", - "fallback": { - "type": "TextBlock", - "text": "No `Graph` support?" - } - } - } - ] - })card"; - auto parseResult = AdaptiveCard::DeserializeFromString(cardStr, "1.2"); - auto card = parseResult->GetAdaptiveCard(); - auto serializedCard = card->Serialize(); - Assert::AreEqual("{\"actions\":[],\"body\":[{\"fallback\":{\"fallback\":{\"text\":\"No `Graph` support?\",\"type\":\"TextBlock\"},\"type\":\"Graph\"},\"type\":\"GraphV2\"}],\"type\":\"AdaptiveCard\",\"version\":\"1.2\"}\n", - serializedCard.c_str()); - } - - TEST_METHOD(InvalidFallbackStringBody) - { - std::string cardStr = R"card({ - "type": "AdaptiveCard", - "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", - "version": "1.2", - "body": [ - { - "type": "TextBlock", - "text": "textblock", - "fallback": "steve" - } - ] - })card"; - try - { - AdaptiveCard::DeserializeFromString(cardStr, "1.2"); - Assert::IsTrue(false, L"Deserializing should throw an exception"); - } - catch (const AdaptiveCardParseException& e) - { - Assert::IsTrue(ErrorStatusCode::InvalidPropertyValue == e.GetStatusCode(), L"ErrorStatusCode incorrect"); - Assert::AreEqual("The only valid string value for the fallback property is 'drop'.", e.GetReason().c_str(), L"GetReason incorrect"); - } - } - - TEST_METHOD(InvalidFallbackStringAction) - { - std::string cardStr = R"card({ - "type": "AdaptiveCard", - "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", - "version": "1.2", - "body": [ - { - "type": "TextBlock", - "text": "textblock" - } - ], - "actions": [ - { - "type": "Blahblah", - "fallback": "steve" - } - ] - })card"; - try - { - AdaptiveCard::DeserializeFromString(cardStr, "1.2"); - Assert::IsTrue(false, L"Deserializing should throw an exception"); - } - catch (const AdaptiveCardParseException& e) - { - Assert::IsTrue(ErrorStatusCode::InvalidPropertyValue == e.GetStatusCode(), L"ErrorStatusCode incorrect"); - Assert::AreEqual("The only valid string value for the fallback property is 'drop'.", e.GetReason().c_str(), L"GetReason incorrect"); - } - } - - TEST_METHOD(InvalidFallbackArray) - { - std::string cardStr = R"card({ - "type": "AdaptiveCard", - "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", - "version": "1.2", - "body": [ - { - "type": "TextBlock", - "text": "textblock", - "fallback": [ { "blah": "2" } ] - } - ] - })card"; - try - { - AdaptiveCard::DeserializeFromString(cardStr, "1.2"); - Assert::IsTrue(false, L"Deserializing should throw an exception"); - } - catch (const AdaptiveCardParseException& e) - { - Assert::IsTrue(ErrorStatusCode::InvalidPropertyValue == e.GetStatusCode(), L"ErrorStatusCode incorrect"); - Assert::AreEqual("Invalid value for fallback", e.GetReason().c_str(), L"GetReason incorrect"); - } - } - TEST_METHOD(ImplicitColumnTypeTest) { // Columns set to type "Column" or with type unset should parse correctly diff --git a/source/shared/cpp/ObjectModel/Column.cpp b/source/shared/cpp/ObjectModel/Column.cpp index b2ee2e5d19..267141d7db 100644 --- a/source/shared/cpp/ObjectModel/Column.cpp +++ b/source/shared/cpp/ObjectModel/Column.cpp @@ -107,6 +107,20 @@ std::shared_ptr ColumnParser::Deserialize(ParseContext& context { auto column = CollectionTypeElement::Deserialize(context, value); + auto fallbackElement = column->GetFallbackContent(); + if (fallbackElement) + { + if (CardElementTypeFromString(fallbackElement->GetElementTypeString()) != CardElementType::Column) + { + context.warnings.emplace_back( + std::make_shared(WarningStatusCode::UnknownElementType, + "Column Fallback must be a Column. Fallback content dropped.")); + + column->SetFallbackContent(nullptr); + column->SetFallbackType(FallbackType::None); + } + } + std::string columnWidth = ParseUtil::GetValueAsString(value, AdaptiveCardSchemaKey::Width); if (columnWidth == "") { diff --git a/source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.0.Elements.Input.ChoiceSet.png b/source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.0.Elements.Input.ChoiceSet.png index 9b672eae3256357304ad0cc6d946be352509ccda..21c224f8bf789d98b3fb8a390d17d3f49998a4ce 100644 GIT binary patch literal 5985 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 ZRwGyZ;p& z=(_`I39cKiv5kWl#}06-7;`*?+3i&FmX9=JEssO#$=k=ou{A^1{HPcQv&jbPM1 zuUzP@Y|#$=0OMaOD>L@%0#N83tMD!6S8DTA%Z%$3icNWW`D+AVbd$vS#+C%6kw_~cdM}fea)w!o z!r4}`I6M0;oOX#!CI?7U?#G)c^_EveB2iCoZ-AtL){9LS*msY`eZe3~*vG#Zr>`yb zI|tqy>%m6Ke293v8sXP{Y}b;5oq}CcMIPS)nR{N-%;VzXnC;(jiiJYq3b*1yYN`|G zmD--j0yqJeMjHtu#=?QtwXTf~s__V|(ghJHBZ3R*UUrvch3I2Uro_fRN%BDbN}*Dt zOiWD~_%l6KNgyo&b2zGL)iUp>o7*WBN{BlZwXK%TcI;zb=g(Z9bYR{-k2!LpWN*gH z9Tq_P=Em!H-0BD?VYCY)n>cUhIZo?3tL zU|m2^5WN=Ieq0VQYUQ%TFi!FM#@#*Wry55p(R_ixZfK*SP&v^wK0cmY^KoJ#J}Est znr*=3Rf%zO%yYF`4eRWO{xB?RMQ#WNHYQ!lq+}B~oWR--+0K3d+z$)6Cm7(-4d-15 zPOfNooT;pEEsAdKpyfUNK1uneug|gXz4h38k9B%MyP24h}ijRr>82&vQx5Lu&^i+1>^viMl=)wx3_hPS)E6cpT8! zm0^oH4{$31$cO!Z5lD-`z#PuieJSGYN3qPD+`kk^jHkFIMAoV!qWeFsdt6>WpfGlI z*WJ^0865(dyfIoc4}86S`*w0oI<(2{h~Cbf|2Atdn^CFu>KUdVjKpV6oAb1q*r*{) z{u)gqW5#-0TW@b~t02qL(h}`mKT9N-Bnl;hZO|o?#U-Vsowc#Cd3bJv{Xl{a zfcA^U;xDtahd6_*Hxg4z)`y1ZfmmF1cLR6Sm;jm*Y;o**%_H zcxE*eg74=IlLLjm$h|7$+{A|##Lp+~`j{4@Ds*gQ-27RELk~^oU6cjH*~y76X<7QV zxwibgQjAlm@zvGUu!@QbX7YgS9)i#cYcqbzb;Tq{zFk=%N!aqSv2rHgu;{pyUQi%9 z%+of_qcwwCB`Vyl6MR;$*m0Ubk7E1l^YZer>6Sdl^`v+8X{C3^ekM*j#PbKkcaqGMP+Rcxr0u_hnC>gfJ>*6-c2Ent>EQ9{by^ z9Ij%00or^O_V93GQd0djDmAbcNxZF8Dg|r<&rNGxPpx9fVf2v_#c*_JUj6)PX4Xvy zxYM*Jy#=W~do^FH)G8tLD3gRmcz6_JUR_Q}2^HWR9UT{jt~Yq~zIjs?JcAekrGNSm zb@>|u)yuu>h`_}3lgT8K^^i7w#239<1x1A(9v&VpA0pYa{5m>2eNG!}D}8=)OYqAI zGFFK>jt+)Cia%)ZPvt~$#F}~T$Pzq@ef$yw^TnC4vBm$+l$eUH!&Qi>-A13}+6IP$scCxg!e8(7(3W<|}%9*V``tb6r|>L*EuTe~%L za+HmYjq<^tjH?!$CoqV>7_&G|1OCOi+S)6TDvtCT(1F4NlRZTvyItMfY{1s;flh!y zgMxx`uBL(V_`WQewE?3-UuI@zCgW3~k7P1g_gZsvGq#!Szt2z#X0m7@4EG`^Fz_|! ziL;A~HMg}vNBVaz_ElBgP*YQr)!6v>-Z?8b1YN_jJ^0(uQI3k|(eJF47D0~k5)^Cz)!-E9 zo^nym%)I6U*-R1Ki?km681DZi+!pn_Tsk&3CgOUH&W#e)WP8+&8dhljc}+$;0UR@j z$IW5g%U8PiAwUNLWKju5L`t<_xI-igk*?xdUltY@dpO5x5-ss~JToUuT%hxHY3bTZ zacUBL?Pb~{Rmp|fla0rSwP_JPC%KcoDu46b{2iR=Vs{$aOpXz4-3IE4`#lb0q auFdT2g%|ZJAu-?|67WX``mnvv-~11f=Eo%f diff --git a/source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.0.Scenarios.Inputs.png b/source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.0.Scenarios.Inputs.png index 08cac8717a4eecfc833b9911564f037b44b935b8..d7dedf62afd868d6416f9c7baffdd4c64fc7ea2e 100644 GIT binary patch literal 5410 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 literal 3695 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 H2}t=nn!_RV diff --git a/source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.0.Tests.Feedback.png b/source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.0.Tests.Feedback.png index 2ac43478573f9c2b57210d424112777c2833cf98..b09e255aed3cca8fc091da6087770b8be777c2e3 100644 GIT binary patch delta 613 zcmV-r0-F7m7nK*V&If;M>;X74Gn1wO;P1vA;1t@}*eLGq?$Rd!qapwSgf+1M)Ln}n zk5x`iPSV`=BeRvgy}i!7hlhu1S~TC*(R5xv=j*66QJYpr{S$51uj~7&I+vH1on^WU z^V>37M`dAQq0>gbp7HZl-)Pz|vwo-#*Vos@^73+5eE=h9jah$Ple@dSt&59`^r_Wa zUte$C-`}TC&*tantNF*r$5k=bW|gsXkfXRbQV)^HkTC zsV}x2{nawgi^!01({E=2M`l6?ENj_;%RdfJ}frs}D_`1SIASF!E;b;N(J>pOtq zP3#f4Jb9IjowBvHRXx@{K0bEll_z;scW!R3dc4!4;`#Y`@!`XVYQB^wepfsD`}=80 zn;v1+jx8@kCM_A=?Cfls8b9^V@6XlMRayezwM`@d*Vcd5ijN;Zrcd20ToiT+Nwc%F zQyd)~RnrPYSzTT2%StwTrP$uy=0_0VH_eof zU3&Kf0O9a|lYs}IlfVkSk^vc$5C{kusG|5E|7n!PN9vBjpFX^E`0(pDgqEdSQ86C z-L>fPSmos8B+YFxcSqeSKXlFE4l12QY%xnALwZxx2gDy12MV zpIWW;_4U^M{eAlMY<_;entyzJToq$&=JVC=?d@&)R4-r0XrB6!)3$t@>XY?d_4Qda zPjzjX`eNJBUoF$VsAyWtMfGjF+K%somRTFxjxDn`jOO>-Zvg#GBmi|XYrZcQ92OQ< zEHr%3Sa|5f_jOe)Fg$+?j9zu>LL?6)$+vIo_&$oSr|tP|s-EhLUoYQx72CdFNBrly zz5^KE#2$gmlUK>uDO+1x)nnb`<6~!Dd6HLk=jP_B$2&bLo}Zr=A3l7j=1Y0vceS&> zzn_-0=@C}#*zz)D(vs25&d#Q(@l*f&{#;#Mr6mAf+e89zZEb(8`1tW-`qa(BMPa9q zG&?&x#nI7GHLXCD)z#I`yk0CwC%5Y`*%XV0;Z~S9gH6EfpQFepXgiitX)fegpx2 t(@go;rFTyN5DxzbvoQ)Q0T`&F_#f}!l=XFX^6&rv002ovPDHLkV1h;dKF|OF diff --git a/source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.1.Tests.ColumnSet.Input.ChoiceSet.VerticalStretch.png b/source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.1.Tests.ColumnSet.Input.ChoiceSet.VerticalStretch.png index 2588a42b0130cf1bf3c3c0b42e6278ae8230d718..e0b9efcc25bcb7acbe43d981c14b85332030a686 100644 GIT binary patch literal 6079 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

q8BCt(-_}__18m}%f!VjRMPR0L(EQ^E^Tln7 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 literal 5733 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 )C12 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 U6!BcgwN(KcDle6bA?Ba{5B!3|VgLXD literal 7680 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 Y;wdo~8v(@z?5-_9RasN19BLl)9}r0ZnE(I) diff --git a/source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.2.Elements.ActionSet.png b/source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.2.Elements.ActionSet.png index 37ed69e790922936586ebb539cf2de7e05d3005b..3487cb8f4f935228940b364204d4beabae168ef6 100644 GIT binary patch delta 3343 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 delta 3365 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 diff --git a/source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.2.Elements.Column.Fallback.json b/source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.2.Elements.Column.Fallback.json new file mode 100644 index 0000000000..d75e63580d --- /dev/null +++ b/source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.2.Elements.Column.Fallback.json @@ -0,0 +1 @@ +{"HostConfigHash":null,"CardHash":"f5673a9","Error":null} \ No newline at end of file diff --git a/source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.2.Elements.Column.Fallback.png b/source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.2.Elements.Column.Fallback.png new file mode 100644 index 0000000000000000000000000000000000000000..1592f857c0b75f16cd0fa74600a78b08ffcf243b GIT binary patch literal 1487 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 literal 6624 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 diff --git a/source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.2.Tests.ContainerDoubleFallback.json b/source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.2.Tests.ContainerDoubleFallback.json new file mode 100644 index 0000000000..ac82bc5eb3 --- /dev/null +++ b/source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.2.Tests.ContainerDoubleFallback.json @@ -0,0 +1 @@ +{"HostConfigHash":null,"CardHash":"43be8cb","Error":null} \ No newline at end of file diff --git a/source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.2.Tests.ContainerDoubleFallback.png b/source/uwp/AdaptiveCardTestApp/Expected/Fixed Size Non-Interactive.v1.2.Tests.ContainerDoubleFallback.png new file mode 100644 index 0000000000000000000000000000000000000000..d8ead01073522a05ae0bfc31dd4c9f60076fe278 GIT binary patch literal 1269 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 Hu0mjfjW>jo delta 5372 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 literal 3618 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 diff --git a/source/uwp/AdaptiveCardTestApp/Expected/No host config (default values).v1.2.Elements.Column.Fallback.json b/source/uwp/AdaptiveCardTestApp/Expected/No host config (default values).v1.2.Elements.Column.Fallback.json new file mode 100644 index 0000000000..d75e63580d --- /dev/null +++ b/source/uwp/AdaptiveCardTestApp/Expected/No host config (default values).v1.2.Elements.Column.Fallback.json @@ -0,0 +1 @@ +{"HostConfigHash":null,"CardHash":"f5673a9","Error":null} \ No newline at end of file diff --git a/source/uwp/AdaptiveCardTestApp/Expected/No host config (default values).v1.2.Elements.Column.Fallback.png b/source/uwp/AdaptiveCardTestApp/Expected/No host config (default values).v1.2.Elements.Column.Fallback.png new file mode 100644 index 0000000000000000000000000000000000000000..9b307b3edb3d8f3eed0bbb322032c9ebf5e02d19 GIT binary patch literal 1072 zcmeAS@N?(olHy`uVBq!ia0y~yV4MJCTX3)e$;<8Qegi4S;vjb?hIQv;UIIBR>5jgR z3=A9lx&I`x0{NT;9+AZi419+{nDKc2iWCM0=A)i2jv*CsZ*Lj;J@F7>OW5qrc+R0g zfRV9)1vi%#6@{b;9UTqI42+Bdg=`8AcNUk=f0|WUeaH8^^ozTW_thhlPhBnB z+4Sq}^O-OIE@o=r{Co8eH-oUC0>csx0frzJ4hBsomIe__v`BFny#(yGx|1n?%Y?eUah)UUs;*i zSJwTzr*8A+&Az8IE|w=JFaF8>;QZniR)ZR_I=UR`9*Vsn7Rt57=>#bPkz1Y{)^~aw;#XL((JXae_OcqxX|yVdu^xZ zzWvzp?f%C5cI8{98*X18?3FY>mivd~K2?WPOhVB&?%#huy>*dFNl{VI_Wq)Rf(!qB zH5v`x#B7XMyJpRoe%JlmB3>-||MF$#(9_WgNl#Coo9~l5|7?6q)Sbr*4p!d0eS7u0ckgEHKNkM3 zvaoPtRCM&~`rBO>>gwy)e|Khy*|=+0)P7GU`^zC-5gR`ob&_tp6qleDIPa11^Dgy= z5edsxo3xIJb6540N1W80vb|rR_O}1$qv2=bqj$eynP9rL|Ai{Ut$eY?F>!Hb)uCIr zZVk1+Djxg1Yx$!@|Br$S8$0U1P5FN{FE8)a|C3+;{JFD*M?9ZXkneEQyUjnlf4186x&Xw|Fy@6B7!22Rcf=57WCPgg&ebxsLQ E0G`t0KmY&$ literal 0 HcmV?d00001 diff --git a/source/uwp/AdaptiveCardTestApp/Expected/No host config (default values).v1.2.Tests.ContainerDoubleFallback.json b/source/uwp/AdaptiveCardTestApp/Expected/No host config (default values).v1.2.Tests.ContainerDoubleFallback.json new file mode 100644 index 0000000000..ac82bc5eb3 --- /dev/null +++ b/source/uwp/AdaptiveCardTestApp/Expected/No host config (default values).v1.2.Tests.ContainerDoubleFallback.json @@ -0,0 +1 @@ +{"HostConfigHash":null,"CardHash":"43be8cb","Error":null} \ No newline at end of file diff --git a/source/uwp/AdaptiveCardTestApp/Expected/No host config (default values).v1.2.Tests.ContainerDoubleFallback.png b/source/uwp/AdaptiveCardTestApp/Expected/No host config (default values).v1.2.Tests.ContainerDoubleFallback.png new file mode 100644 index 0000000000000000000000000000000000000000..9a188a7a60a1d17e69ba62bfe1569a58cac4ef64 GIT binary patch literal 873 zcmeAS@N?(olHy`uVBq!ia0y~yV4MJCTX3)e$;<8Qegi4S;vjb?hIQv;UIIBR>5jgR z3=A9lx&I`x0{NT;9+AZi419+{nDKc2iWCM0rhlF;jv*CsZ*Lj;J$4XbOGxi`^gN=S#4ik6iHQ$T=%%R$)(S~qL^)L&N|7Lw!6IQiXkagTbk_0>PK z%wK-3U&-*Gx6Wif!v{4cmIe_ziVeRL`Foc$ji^4z1lG%CqKWx$JPEB zS~bmzSsL{4&&c>0D!D z92Iyf{o}mCrz^kJzP-zPV9U=544L|8F5c>{&^h(|`SZ~I_t)P(c+m0l*@}$`=g*zv zd+yHpYH4x%)vH%`m3;m4Cno-QZK_Vxm%|q?2HGyS`TXcnlFAG}fB)69XU~51>eVVq z$rtyo-@D7;Gn=1t!lnb$!o=PQByQTW#e`@2^5x4PRvxw3IN`Y8q8qnwOLH#S_Vnq~ zs_+j#enhNYv!YhpvWP3U@u#Iq`H7md&aLzg>E@>&o%{S4+c+HKbLh*2~7aH CadJff literal 0 HcmV?d00001 diff --git a/source/uwp/AdaptiveCardTestApp/Expected/No host config (default values).v1.2.Tests.DeepFallback.png b/source/uwp/AdaptiveCardTestApp/Expected/No host config (default values).v1.2.Tests.DeepFallback.png index 541074dcb8b13bb310a0b6dfc160e5cde82f4734..e0de72d05ddefac1214e00ced2e93fe939fd8165 100644 GIT binary patch delta 7495 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 TINBI&pecYmg2yx-K9%(kVJ))k literal 0 HcmV?d00001 diff --git a/source/uwp/AdaptiveCardTestApp/Expected/testVariantHostConfig.v1.2.Tests.ContainerDoubleFallback.json b/source/uwp/AdaptiveCardTestApp/Expected/testVariantHostConfig.v1.2.Tests.ContainerDoubleFallback.json new file mode 100644 index 0000000000..05904da437 --- /dev/null +++ b/source/uwp/AdaptiveCardTestApp/Expected/testVariantHostConfig.v1.2.Tests.ContainerDoubleFallback.json @@ -0,0 +1 @@ +{"HostConfigHash":"569178d","CardHash":"43be8cb","Error":null} \ No newline at end of file diff --git a/source/uwp/AdaptiveCardTestApp/Expected/testVariantHostConfig.v1.2.Tests.ContainerDoubleFallback.png b/source/uwp/AdaptiveCardTestApp/Expected/testVariantHostConfig.v1.2.Tests.ContainerDoubleFallback.png new file mode 100644 index 0000000000000000000000000000000000000000..b04acf2235d131f54acfb54bb3252ff4cfda3dab GIT binary patch literal 1109 zcmeAS@N?(olHy`uVBq!ia0y~yV4MJC>vOOH$+IDIZU8C9;vjb?hIQv;UIIBR>5jgR z3=A9lx&I`x0{NT;9+AZi419+{nDKc2iWCM0=2xCBjv*CsZ*TASn;a-{{A07YLa)va zheK`|of{@RP@3$qgRzM-$H?%6LJ?z!c6fjgr@4cGdasL+m_cfSa-*x5&rYT<<-hE{ zKHb{-ZQ>P&{qvV(o`3oKd5PuzInTem)p+uGIwM1anytq@MurS7Mka;=MF$23Jr)jz z1FZ~<3_AoA7#PHvSQs8SH83#5a0oCoa1*1b+uEV6z1{ichYi1O-MQ2A_wwb-;lJ$H ztUvy*>Yko%>w0TzPwkegSFgU>Dz)_SfDGV3-@>Cr{4sATS z<=T=}0u@$PQr^*3nM*I6kZU=oy>4ym&6zVR=7lkSRm+)rCFGElq@-t+(~H-yyB98c z-J$lkKRWv3W~WC#eptkXKh>Lh$wcjK@s}^(j@?greD>1Udpdey$6YzO9jtdvWeDUv zu68?W^1C;0a^_6YjWJoddP<4#+~olQ79DSwU*VQ#ZCYz#a&q-rqiO4u_0`mpGQIC- z+8j+X{I=Tv;gSiLZFAz6&%4ge{jpkFTvdnR?Fv=ZHSV#og-w3!XG&+kc6&ZmUvE-a zE7L+bkU=6+S@Y-3J2tiBkBxo*dtd~8yvyY9X1CjuplV%)3+tkU6lTq_oxJYc>z6M* zqv|tS1G<@4AcW%vi98)c{ZPAA0t;ZAp?+eHaW_U$wn|)EIW?TXFsTllp0=rj~GK^X&|$Yo8@%g={^T6S6C4r`N-Yb!;t1Ke_2~X{~l(X3}-86Z1k1s~Q3sRlntQ^leSI+p>M( z{tx%Aq-!sF^Of;|T`@Zc!-BnAm$a}l?5HO?D-e}moH_P0__`gMcqPVp5wIv=@O1Ta JS?83{1OT;t>?HsI literal 0 HcmV?d00001 diff --git a/source/uwp/AdaptiveCardTestApp/Expected/testVariantHostConfig.v1.2.Tests.DeepFallback.png b/source/uwp/AdaptiveCardTestApp/Expected/testVariantHostConfig.v1.2.Tests.DeepFallback.png index 4284b7980233e79f60a6a4625e3f7d2f4d081cf4..64423e77cb3231e75d3dec1cb67c586079e956f1 100644 GIT binary patch delta 9951 zcmY*0+C<4c8x7n?^hh33?Pbq zsHOhg%WOLxUTy~SJ(gpvzY*vD0L&O0M0tDZPV23Z2xjLSu^xETbb-t_ts=4Td-r?P z4)M==BN##!c*hvDwKe!UpN4uXvgqVL69(Ifl9FlYJqpsisSiqH+DYkwt88xVB0k8% zRTHsFtCtsjTWEM$6Yd4_C(aDH%k~24`^7dhn3|F!QtaTXk8`ACS2ZG*>J6Y( z>0kV+UJAa332pb7`0Ke^Kyp5oa`&f$V@aEGyg9iw>n7*zkgC%AGj6?N=(`iI5Sg?# zzrWo4HZVC6So1uA&+ag4b7IxDi_PE(p{rd_sR))keeZs)=N30Kz+*>F52k)%rZnl5 zuj8WBL|tADc3T+W&UEE(s&XonulE7c1APPc$+5T2OsZ@{7o}<((Tw%Bp7yKIes{5aB2cq zLOK}v$*_?glH_Hin7W=WW4v)kM_xBABMTmDlfF4z`O~`2ONwn1?z3kee+Gnw%h*iJ zyiCL12DWtM1=C1e*X}QO@pn}W|4ayW2|o>Y3M)fREF5J&apm~nR{G1eugAcKe!_Jn zOv-yf;X_#uIsS{xH>F9|h?bq^W=B+i`YHN#b@ufzmQ=~E=R*}SYpdy=W=S{AFUHDN zZUw5-$U08yQNvB&?{~KDS1bT)+uO8n_csDJSAiXOz6)g(H|wxV7}T(02fyh6@446U zRot9s*yUH)@J7`D-9&!i=A=mwJjojoBkObdiTXgq1T^p`Q&shqz>Ped1@&=UzlWZY zk;_IKR!%N?%;{;>g8}oQ@myP-TZ~r=5XX-hO)#jh(4?Z#U~d zM$xMnvtMb~B?V|YUx_M{V}^9jMT|_D9a|q}zF+wKO=tg)Ls^OZ2XqOH#?v)Uy)opI?{}N-2E1ze_~D6Cz4(!Svzx`p&!_%T zAld~j_^6+L^$45Qv-LXvc^b;54oKI}a6PYkGHz?z8r_k5bkRU{!<=hkaGC$00XW9b zHhLS@?UyDq$JC>t#mJ8TrW0A`yb{TNiXK!`d`qpt7+SlwYfKs?naizkhgWU#hMB9~ zU6=JAi7U5AEWUo&91pfiv(IZqGu;^$HJ=j*kBwpe()RkEC1!CtOvA2N!Y=F|_#V$+di@l9)|ueOtRYHeli<%`r9*Wl`l@_B>b%Z6seaLi$d(;7 z?fM2f1C26i=6zSTO9wUa<z6SpgWg4(jjG-re+TOa`Q+IgtzxdjeG4?wvPF{(;x z`C~lzdwf#(oRhS0yEZLQWW2+SbYuMqXP4sEh30U*c_El&(0cvQt7iEJ8OKW3S;m<~BZX>pgloX_- z4wFQ@6XQgUfk8jlpl?6G>Clbc!BfXj|$N!{Ul-zHym>_t9MoPGpt%x>(I;-yPw zCO}1@#$8v?cq|y-8Lm06)N9iZts1k<Splqxb5f98!0hYCTFsMS~=GuUU46Gk-Jv zR2ifdbg(jz35iBFdN|ohAIJ84vybvAs<>un8H;L%qZ9@Bau)#2uMomVh7a>Fc4F?opxtV>!ifZrfq4Ji*93s>Qlf- zl%_Hx-SASZydk>jBHB~CcWbvSXTIBB3*maVc^i*@P9a#ku%qp~-i1 zLtCc&uqKLAbFOnv`MDp>g~67lp+&{(5koC5ePXSzhksJ#Lfx$**GYd9e9(USmYx zB^zS69hJdtlNGwx!LPN*!BdsH;$3V^BSYZv2W{cPbo!K+9K|O4*KBY>{(>CEgC}3x zZT2O)WZLUq1b{vGNU!Gr6vH45Xwc`AW{Dv~NEaKTt&R~);6LrCI!X%yII)|F@^-OV zeJTGRNJ99FQT~TT1Uv$6OyTFeRIyQ32RThXn-tuxj8;zchQQ(E21}mdgi@o`ExoHM!HtM5cfSo~;EawQ7Q;8awnw+gX z(QAGQOg{{c`E82OzehrMuHJ zz|l^1&BDnRU^yGog~UApP?x7BR>lc>t6yJI_&Lv3(`h_`L@y_}@0mT@WeTw$S6sY&P!u{v9=maDZv*v0`$G8^Bcwh=kNFNTpET?2sk$?a=umm4DTJ zYM}A*xnD)5aa6v_!6uZ>xpP1(zY(hQ(Azrud9}VTcWnZGr3tCHl;dorh>f&bfUoQ7 zaZlnlcCIKVtPLcQc;t!BTlxu;05H|4bl9QACLGv}9V~M-3p>;ECG9+Z65piVc}d)3 zoxlMgMR5NUA)UejOTSpIBTf6v8`hJ(C(gM=I$+pm_bGMFWp{t+t97;*j7 zG7rV;cT_s7$GR*rukOodM<3YOR}o*ai3H5);XTVdcy&D%-%zISenCGbbtk(&w5aRL z4XUcmxrzJU%Ov?QgoN^q^<2vD_J zGuUc3#Ig=V;5v3?d{2(X6Wd*3fWDlp3vxr_Bx}RecV~T~(#Qi&W~tB~cFz2j99tno z3zZ}fw5g#1k@J(xvrd~)zO7=R$>5eF2@DDdac`B^P~Za;PsdeYBE@w^6~ z^~X&wg)cDx6dT&8-DErO{Va1MULaaMHeio?g289r7(q37)_SJl?Y47In4Yu8W==;m z#hb^P_{KiM*KJU{FP#e~Np-LJ=scr%HxWsPY7D&hk%t}3>{z%V9=)y$1ZfvB>tpYz zOdP)OLPo8V3h?tboFvU(i&{lhm%5buh~V{4gND|+4SKTCCf~y1 zwD<$W@Pgoh!Jqd2mE}A*cV~28BSVnu=md=Kp}djdqmR1P8jLVtS6h039usR|G$}%+ z@gP1}8l^JZP>EmHH7sg81`+RC!lomxpHT;l9?O;3aHvDRmfVPXXwg9$#L8~lc`clR zBQPMKdtMLZzpT{pc=vuZtF1QsXb$_&jW_@3=psOJraRwv1H1Mg@xebJWFV{tb((BtTEO6u!|r2>fY8EDF$RwqwPnE zsJDr}^omD=;wvbz_TI^K@piN{C-L?}tCf?E3-ORce&DY(j-JjEwFplq^8Wnxunls# z^Sjm6sreM`QnHE(NakEO_$6p<@QXr&Y$SS874A4PPo!8h$1V!R&Tsi%Z4QdU1$y5# z;n!m?i!za4x!s=`d5kU;d@DXf9=}Qoa6|UkTy+3D{g<2C4eiR3K~L?Nuyd||qa8a} zDJ~VX0Vn12q<{b&`M#rt%^><;wp)qmmG<}ZNraAbu8tj(THVu2po$%`c#H%V%fxRdJUL=|>V_nlW2_0NIm%o1WpEDC%Y}HW z$sVR70-HwN&uYn4CQ)1xALa%VCokQcfipaCti;-rduJ@liGJ=<1DZ=)8S!gY()rO3 zfeR<(yS>JmSv2R4z?No%pUd{FiQ+E(vKW4^IyUjQf5x%)6p=x5Io9j$$zHmIEBg-*=ga*FR&o(2W~*I*kt2k)YHkI( z<{EL+F5EtMFuY9&= zB&w+^^XV%Cwu`H%hCk-_nKN(k8ECvy->34oZFw|PMEqY5pKV|JcsZ_U=CLdE*mRir zR@1d*m46j3RZ(NgXDd_bGq%>!G$xRVt~&xaqyK)$BKAe02(TCv;6&MN>N%ILe6-j8 zW18TVOdR|(STJ7S*{C>$W88X;>)ou^0;NjpS5mgVzI^w4;J%QOqO$6t&4%*XM;asK zGt`%xj}N4+LZWL(-*}pv*Vtj&%CSn==N_xvoJbQT>WI(xCSVmD&JM*H0`e7bBSOPqe89x8HMApF36Pq2QP^$ea~>` zb`mdZ94RLVu0b3Yhg&HSXxE!8Z=OTXz8`r)=*;enIng{LlXj)oVS+r4+lki^q>|=2 z>y7?r?nM7dEjZrV#Q5D^jH@9HQrEw?&mj^3ttRV3xLg+^WqJzbL!@5kAsOF7BO0$i z0&cK>jah>V+c@?0En1(CnP1q8k#=oG2B7=}=%-IJ&tBDa6<-bv$me}c95g|<+z=Zb z%FJW4$*&9usIzDfaiO1}RFy1`5Mga|!)9^qW)>dB@Xu8^kVwv3o%ntIX6w^i0L-fl22o>j3v30f?K3Pp4_OTGLj`{un0to~vrLaYBd zCvZxN<@`I2Ihp0G7>a0^tS|pkAC_lOh%w!8R(h)N0O>Xc!>II>+QMme*?dLs)GvL} zBi|mZ8mmIlB{=ulSsIgmry(Z`)RUH|DKr`DW0(HK6m|&o=y%M^&~12<)6Cj@J*ni& zm2-RZ=aX+icO21E4QVT<3Q*U)&eBp!K&6#72ShG{E6GrGYH3e_Y(N6^>N$mFYsg@C zEA_#nQE&j8p$?-}i{aFry#A^YX=j|W2xBd>2ge`A!hbv5_hgX*QXH&NL0w@&Fm1fZ z6+L!n*1Ld68393Fn&)XRq$OUnCH?USN!k&u>eHk3($JkG4JIi+%eo1slLLQOGrPJP z7c-T;AxOC4#3@%eBPtfrzVeMUE}zkw>(^AtAcQVOhD)x9KSN04Qx^Ey$cDBsWWpr* z?aiScI7`lP=w$)n(`3VHehmd#66`?CFVa8{7a)4?Z;h)}w^iQ*X-nel+8RNNr{vKD*^QUHWR146ZP}u~{xysbaLnZTFm_v*g_0}T zaeIB8a+O%fn8w2OscA`9OY%_HzL$pZcXbiz7hH04l%!5~s9YNMSbZu=s*{@s$;14^ zf;F|W9|(VrHA8QyUiLE_TUG6{cQC~an7gQNmu(h0idSOJ=ID0=N-Of5Zw@!6zRGi) zYUz^SwQ~Jw+4tZ-`83;&_{}yfV@!fFeU;3+Q2~mCS-Of+rAnsTbZ8iNMUwUnN6ZO> zuQ$s_QW$rZ7g{Y_>`Q1y8S&b*AqLoOfC6VO1jHI`K;IO9u_@;lm$|(hGr^PoMBeKe z)DQQ2q7rD%zI67wYQ0xgRSWr`hC85!R|3X|S{VvSH*IwWqRm|&;C2C|^cmXM*V|q` zuQ)A^8-CET`wAeC{;kAmb6S+u=l@kv?b&7!+0?R0)W`cX?sKXa!0odOYTIC+n7<>5 zf18?5GaE`42x`isvG4h_ISQ=P82nwI*7p+T?pl?Lk@@$paoGhHkoGKu*F2QtGsS#M z&+GY!TYsHt&k9D!drB$#skG%&!ls95!j?#Cl@c=(0uf&W7n5~%3U^X1A#+#a@ZPR( z2gM4%_2QEsZJcF!0!|0&QFHQEf>Z>P$PC?-C&*t+W6AcOqged-QgF-Qb(hb)`q_#t z$|qH8m2!#O22J9I&XpZoxO`>&)SB>APtTwYCSoS)HUR@5G83X-0U^0Qb)<-R07%>*cC51JR z?ZAj71nhNG0e?1n9YZbG?qRRDv)ME8I%Y|v@+#A1`nSounqiqb)<=KeF6-;JG_5R~ z^sFqIL{SaoJE98|_};m5-43(__MTqfHAt>bUd{GPpyl6j4?E)qDY}~0upEkr!nQ^< zZMeaX3;0k##oKF*HTrEt&%|Na*^{@0+N)hjbiP`N?d_kX2K|X%)o6sZ3q@&g#$*3U z0m*0(h1b<_1~uwaYccHUfB=d2d=s*E;#)Xt#_0zz%RJAPReMObLCB;^8jZC(B>KU2 zyq61Y1C%0&3H1Z+e?Yok;T6j|4b63wjdqP+Dgjs(zR@yj$~*RSQhq6QfZ`0HOWjS| z*?;0G4`=7Naj)7{N-<$X-(qvdeK$nZRbMmtzI=6Sonz4XC@zC&c|Cc}`=QR8h>jo? z43~{qQcBaWGoa0tp+^XU+wi`&{F^SzZ0oJRke}Y?E4?)I(BGmGi&!}GUAjJgCc#n zP=m5PZ5D|E+fauLeNh$Ai^#Ml`~&z8YM|}uD9naB8^31S^z*$2Y_wPFnxZ9VCLI6s zg>Wz1h&qw?0g8m~sdWF4(%>7BBGNSWXkr(RbL-@qg+6(~%N2j7n@A158A8>dWZZab zvog>}h*U1()Ee}}F)3bxe{UVJdNJw-9F|bbRW9rqF*AyHTn|Xh;-z!L!7iTb0EyRF zEGpa2I0Cyz%s=MtE4GlT^E*ebXZcI)u`QJ!(bJ2iJH@b+KPieoS!}c!p9-%UyKU!* z_AOR&xeqN^D6RuxME;uJm3AiE$eBgSVpnc$=Sal1y~l19GnyMRP&p-(fP?YiI9uk< zE%VinwS|V!e@b7BWmwi36v<_X0K}qp&Q-fXl1u^7lpwqDd_4{JP9o?9_t~m;)LR*Z zZ4Ff)5BoV*ONWoIfPF-Cq$QrQKiQ!q6Z>UyiUTg=v=C)qG1Z9(R!Di!2z#DO%Y zGuDjHb?jn8H@L*kRx$`iV?F%USlCM&S)Hy67PR6V7-%*1nnd#k>q58uOj>9Zm;ET{>_#!W8C(k&F-{xQPq+811Vhiv*8h$GD!1Y_CmnvTkF?7l$2lMV83-{E zir)BqHIv@79eYvP3E_4Dp2mN!GCukCmhbB2*`|{9Sj+sXl`?LgCZ9T&y8_6Ecqm=k z3m^AydIlXzxx@;kdmBT$K3D#>Xl}YX!AzTjmWSvZEn=dsusMIxeV2#ym+Kh5sB#qd z1nsCmsLBtAXAj!x`o|#O7hhMTH};J_y!umwq`hb(pAmBTxI}~p;toL5ubEJzx(b~C zM2ucE-fQRg-_w0H^ci=#Gnn{NjM8ad#qfbLJw4PlL%`d6d}$G{ACVVgyZ=u!ZQ2jG zE0@_0DB*gt{FY4P=G`D2+YIp|$6IBZ$ww5+Lr7P%1ZI5coFFMttKfDz(p|4R=a@8n zx1H0uk)d?tzF*Jeew9&W@@^W}tiUjq=g&?p!aXB!md{F1!Rd;9*G>)a_D z?5soMfOVy93@}S@ce|tzf@4?ALm$1!5b8`4Ux=W3 z+^B)BwdeUXGI+7du%zc#LqlNIYt=6_!L-oW1QDYZ+d%otlf|mL4&zIJ7$Dc2o+vdEpTMW(1LdJgIZteiuST;5I-bmvbqgfZ?&(>YG_WFU|RG zJNyJs>iQiZB$C*)mMqR92K;1SS&bhj5BTK%N7!ErL@9I|&`842{v`F-@t5t&uY{BW zq=owjDSO8P-Rd&kR=9lMXT0d&LRYnC5GcE4sONz4anSoMQEJ4H_Dl>|>7ZMn^-lkC zi*N*DRX~8uR}`s`grL8{4vggL(jQk0$zt`<4Ws$yy@O|u;RDdc$XG*IS&-hu8YH9l zu)!nPeIsY*Bhz)OkWc#Jyfkj)CpFp-+Ep4xa%M@dKh11*G{$MfBwuJluhCRP#ZL>< zs<|M6Uli^sbArmQ!PDZ>)T>?-iq^88k#fGKh|EDx0Z;9lhvk{F!0mps_phNmJ1G5U znRt*LleO=v;vD5_b)uir=@O#do89`N&3h(Bhau(UH<}Qzd zKi|bj+m82yVb~9zuBQ_jhQM~8HTjijTzmrM|AArci4SUx%-C@)?nB{v#8r-`2jy}$ zb!=GTXXGS_?9DcSy(35LJr_or9jJI!A3rp=w6s)$cX3dQxsp$Cx#1e_2S17$%J*mK zCq^RGdZ*Fb0-~szHm%369=Dhyp0eFOS|bo%k@LeZh^V!GSM^fhyMBh@%PB9_6yL;W z1% z@~?2#RqHl!ns@qV474hkT|T`~F8`8GWzPK2Ns%v?jG6^8aT6k`Lls8;@gJ$a?4srT zloNx5$1gAcN)wv9%Mn0JbJE*<^h4<;HHISCe}U-ov#t+6LP*dEpb`4tBos%Gj*uU% zy%0qhSAYhw5ARsZxF}3mkZbNS4_A%KAYbJmj$EiC!!+mdj~28A1^Bi)Z}k_%HYjm; z;lPTM0YE@?XT()cTInlee3k?-Y@A6IM$12s zQX9zGG99j^&fhQ+Zr*hTx>qVcE_&+ha(4_MY(HJ=Rl(9;EIYqMn^&+#p9}iU`an1kDCVd3` z2Wou$SLNX*tTG%(Ow4E3@wX+sRFi^W|Vx@=#rsd@2jdQiITgfpj_XFp#BN zdz2gy!c4~BepVKeYp4^l+c3=by4IqUxvP(xRi|1vg{q)Qt`W&J#LSC?`nvR(L%cEUJrw==d`dR%oP zPg6rg=$4rjJ-531Rj2QJMK}ve zMzD(0O;}Q>uCC>1axAFJhlTc7Kq7wEHeYOSbtak>j_p@vUdlA={MxJ(zr>n{Zgy5i zNp|tYOWR*kIV=~#EXWwjt{Yo)KxQl!oobi0;U>Uh)ag(vVo!uw$C&gDA?QWN7Z@B? z*%K10#!oHe6pNU=6%8e80|~aHGTmUJqa`2#3@+T{xRoXbJlg8bMAevz4x_fo^O%FM8Qr*a_iPD?qu*lGS@?d zi1Z_MmFND}+u87HYonkOY1*cH$==#P+9V{o;60f~_aMEnnq|q(x^bo7x}V7Jo4+y; z7Jo*PIhAH^9VbRlTABcny?aN%S9Wl&=7nmiYN#@_i68j(88@3?wCZ9OY-*xq9gVqG zG;>0qc$*D-?<@=t=Cq#7x>g-qxb7aaTvQ&<@x8%WOpK$YCHk15=Brd^znP(NE+~Kq z1oc3K1^>_?qU{OH>R%e+7S#aZ+X-^JgNCGM<@K(vQ`6?*aQ=46fd@aOE#vI1;u|-L zKGeEaHt{O44vc+zqLy1zMf$2#P;KPTmbBZq;W%(nrai%o*rGk7sCmjSST~iKpWg|v z_^{V!tE-+A6exye4K-bC{FvNbg!RkyH4l~wd@-JZaLUQZji=r;#CiY0Q1v^^BW|wp za%ZIN`UW%3Mz>Tfoe!6LWBcP^ccFa`*vV~w1<$?e+|VXAzwbN2!$mz5qRgF8pwaTo zRDsj6RZlS^x4z%I*>_D#O+{?M`+Q@DAiq59ZcF>d*z7J_qj_R5Ay5&VA0)@n~So(j7uDjzgG*Wa$6VQUOr~*^1j3LfO3lL zduh;gS5P6EeQc5;OV;+@CNfpXBtpTb%zX#S(4nweprFy&CIT=OsmT zMB2slU!lC(MnH2s*s<|%ddMwm^r-?dkYemCm;mcJA%ubOWTl0w^?SZcgoj?hdQ=n4 zFZ_KK5Z9O0X@^()M1bdgH#83%7e}PUo+PUHKcu@EGcvht0UImM3iRSP47{3kb=9@< zbxqaCbX!qGhA_M(-c$RL78%6jEEn_|;#7Vf(;N4{M4n*O8+tyzV| z#vffK%6|o-`a>l8af0?rx|zG=4qV*Plvnz^n)A}|pB0yG{vWgJZgWL54+(f~}cpLp#IUdX#e#LlvgdIw> zh{%w`Fu~q?wyW8O zi@3Sy2A`dF6CusF^K9t33zTApOUaINUXMLuWQFRe&C({-P*b;@1`!l{teeK)?qMDm z?xyX!d#C3{SCx~4;sXmFS`x{d3AvC(N+^b2U<$Y|{Wb4vvLDRQ!9B38nkgQGBAD(( z;fL=DbK-xzs}5mCfkgQK2Zxs0p8(on($%R~xQLP6__Qn8MN=f``CVNLfe*6gp`gC6 zD;T*$^io*BG#+hO-rYv#hOZTypRpJPE7lJRaEn{6tXsz_ZOIxhIr+}j8?`^OzNbO_ zck0wB2!FOKMtsT2zkHD<>xq%Td^5z=I1Xj*vCgB&*{-u>yb%ZJyp${48y?`p;Hi0L zXy0A-Gm^Jq7A^jsrk*{6AEZU$?o*YQZXgPmnhg$BzAOoNqSM~s?4!hPp#ckFqU9vB z{eZyFg3sw9t5a;=_*4ya>sqa+U*SLVEFV8VKvNZEYVR7K5S`F^ zlM>o`6nUP#HJyJbYUN`D`SS*kY0Y>Py%iZDK@XYCFX-Ahc#2#QbmG+s#w;aOR&p{! zenBR9mN=hMXFyYbNiRD0#$`yjuG7|^9j-?n`engXfmEBR+VoD#Wbw#imby)I1$}A@ zG@^vst!F70f7tT2&6}!6MJpC#UPzoxFkx4K%ed{iNF?3&CuboYCefMTzPiW##Oev; zT2Y1~cdWi=xW4~P)fT*6FG*UJA?+Yemu4uUdRN!d?eh90G7!=6#(l2gvv1r=!qzJ% z-h}Dux9^yXBEs+aqn(B*RDpB-G5KU&w1}!0PR7yWtto(6XU(#*d_1^l{Iw1~&w-fG zB-(_EsH~O^uLGj#$-R+qoj*7`@3dKK*%81G2E(&(YNuWT=~Q0wpnB8^AZBwt4Eq*$53{yEFpkXyDk)d+DAw$Y77w6Bh<-+l_wr;=sH`1zZ)QNCpG8eA-J%Q}i;yAeNlqsg!BnzDVTI zvTdA81bICn7gm*wU-O2#kOm1OquUR%t^KTs|8F??{eO_7nLtk0CEmv@QERFk2kyIP zO91X;Mj>zayyF5U-x#2PbS#LT;Mjlw+@F4t!{{pZG|=`6Ywo4XbbFAQ39cC-F2tsE z*i$~EWV3G%$#E_LJ? zU!}b8#Yy`@#uYZ_T7I(UvQxtwEe-P4$BiArYZ0aw{yDPrIj<(Y5$shXMFFp*iWp|i zLpd2K#a@W+cYNpKDCFWWY%W3`MR&QBlZ4akG;hpYmSk1(P?KGR0cMo2h6dT~^Vg4o z2?07=!O&^FTyV{KD{B5wuYDkKV2M4VG%{{iF>b-A-eoo~SX9S}`91J`7H{=Ix;C2K z@uWX@HZ@l=g5g#dViqHe3(J)k{BZW3=n&mkEtrS7@c1p6{=%FjuL#h8IM8%jImY|q zww(^2vk>w&mkv-|hAgT3_<}wS- zwO^zl>RF&=`Le3Ul*Fycmx2*9mhzl6+n?GNkhn2j$MSg)A`%K#HYU9qYK4gdq`hf*|ngeoWfMCUn<=H#Aatf!d7j-(SGBU0@+zntt;O_ zyzWJo=)QC3!lM1`bz>w`EZVfqtPM}Uzp^G|F>*Oje~M0K@~y;><}AHka{YtyclmTW;&PlH~@X60=bvTurZ zwg$M*M|K;U>0O@o!m=;kEIb@9suBRek1SX88HVf1*adBZ0(aZ7aCdpXUs?*Q(HCsa zi92bCUz@|s=kyoVMpwOu`3n1TPeF?H$Dd%9lQt9aRP$9|fr=#oCb>bIli0Oi)}iSb zF+oK5CzYT}fiT^;&W{-)L~ldC-8$`UNK>25%E?2oIKD^{8-YE5kPZ}ZIHpo^ugPHl zhIJ|1>$@&WG_SRgC48bF@oe3C+pt7gf*##O5ZP(z6GuMV4M@(NKd=n00~mXCJbvs@ zx?T94WhG?57*uCQ{a9jE97u4Gbdv5zsi?PUnC;aACKCs?t;oIwu(>`X2vG93;n%~o zlC9aQ&0s%7Ye)k_qG#FVRmECC*1E09vXa<7#i6*hm+VdcqS7Fb`EUX{uEN{gxz%85N8>Q5$|jmziD* z|8X9>uV&t2S4P^^+tZP*D<()t=tTnYr|J;rBg&kqr;vD>b(fmo_a{W#(R~)F3Y;y& zx-bp&fraS7ncDZNH5Q1MS-u)m=`;T94&D*@kRkn6EaCjC;5~u$fya+_qm8u@`I}eH zf6lnryf!J|pOnd>Yhiz;`{5?WN>|@srk-%9ELv5(geTh}xRTDVizan={&v@<7J>!h zGDG&bS1Op5_m!byVn7x)3WDmaNdJvr-}aZW{9yqP3yiZVVZZbgH~9d^FEx-70+<)j zMkQ+n$=J5eMQx<9#j)!pf$@t$i)M>iW-gy%zP$qsk>%$FuUZKaU6|(a+n7N`%1A_&C0mpWqm(^(j?pJ+_q!;O7MZ2JL+Bus|R%gUQN6xzH%*3a!HQRX>xq$vU z6<>oX3r3yt*M;ruBUCw4Kj$vGf{;PZQ-I1}(yr@Qc`d!WxikmjEF*{49l7ibSc2J) zeg+$xk(J$~7rF7*#!AUf=Xn>`?><)yyG+4vj=s&xeTw&b;{<)5<7vt-hw1P0)}k)~ zE&F{fYo9+&~BGxOE$P;YyS8HDMvGP3N6fTaws-1Tddo!|nv$&PAQ*=#H zGQN0924GNox#%>`)-ry1=5~4M|K;pQ$+E!*Na>Cax*|k)6{%lqVMlUS$zRA>;V?c&)Uc8#Y~S+cEPSujHJ~=sREFm6V)Zsx>@!xSh=I z%IQX?nC18T%}f|TkvU;#tMmlBwG=E#m)t;%R58%lzbh09sk@C5q30(?>Bhb+m7e^$V^ z!)}{gA=JsJ1S!UhO9HSq0oGMz9Yie~Vc#TQB(hl*M!xz8`0IhpF{1HJ!cekKXcf{B z7V3q-+k#Ox3|ur#R?Vui+l5vsDqnLZV;F=~QOOJp1e2&@hWlJ6F2&(cs3wYr21p{7 z;4;_nYAK7L_m&;-rEhq5ri7C&YMX)WE`w7R4d%n`3)n5e$gi6!?B;pNCT|ZC=yb_Y zJdF1dBs-l_ZYjlLzufiPEzyB}P^ZWfYq_}fr&gUEj z-;zLRA1x0zr-K+jGcq%@#%QR_aX6D9OF0W+lE6(;?D;K3;>Dg6x+jea9F)xC%7}fU zkw6Kf&17+n)es|b;^v#8OktNBJ8d*u?Wj8+<&B&Y@Q+Yg%$Eh;kwR)xTPK<1N09YY z+r48ZY8dmC@yW@~d4t|HOK!X}YG6{S0~#1$yFp5O$|CeJR#8KllCE76(>2~s+R_Ne zIu=O++mFi=nV|&T9d0D*Q7U&Ji2>gtmIohjOb?A!1Zn&k&b6Tf#aH-LZVPBqxmN+~q(^yIMtPwMyBNT1?8_nFR zbfkx08sO*J$#`CRiv~CHsr$@zVF+*J?)#@7R5_rU9}MV#Llsayo3%X_F~~WD!|Hw7 zmN|}2$b(pFQC+n4XiVNgOdTD3bq-^bBXUH1tX8KygI=tblpCwmXfJ-VclGe_fG|Ni z?Z{%iH(yGUVB(|_`sq};sLV4)mmAM?Ii0-?LgvET7h_+28afJ>QYKaxR=Y>5q524U zG~jr%@0ZXB`VchCnd2Xbdwb_4!pg(}o*ch$6YLLo9j_21l>Fz{s;t8}i4^7yD7Ksd zsu}xVWe63?JoeC^sNc#mgLAWnEY8HvQ<&ldINNbT)wC~;WN<8YfgecUCZj`a+FM-) zU9;U6>y9_!bR0v)vp6FD!)zR8P=L1dtF5Wvsb0>4ZbW&krZObS)%>|h%Iy1HC}Da%;((_zeMW9iOMcwc0%oLyLX=s z<1DppYYSZOsk$jkkJ#UbrZ$@wPp6AJ;?5S;aKpnS*|(N`Zibpk==x}mk{vs;3%8<( z4hn?Hd?q)C3ip@2!*;>D&0xo*2890RKh6YiIGF@K6O4HJ7A^ltu0l0kWo2(=@B8P4 zz^{z6`p(Kr33mP(^3@1W6W^{FmArf%V;-+>6M8ei$S==Hy6A?lCCf$8>@j&vlZKSg zlBXfnpkm8m8PeThEihc+;+hXeiT#D@u3EEhu6#)1X z>UaHHF;Wn}ms2XHA@J%%D%KcX7P||Wc*;-^guC8wxl+FvV|rY)AL3r^}|r3`t6{r&u=y{Rr5BX~%Vc&+)Q zw2JsDVo4IYw?|AWBDojd~S`D>ZS=6Nc)L-d>Fc0c0UVkp2T@)aMFX zm?MOu!(}hcVKzo$J^l0pk#5Q*MK}zk%gCo)Qk;>YB;hoabF4+Ut=fuoUCwx2JYuu> zNd7kF3rFCOm~I;*?G~URvGv=xkZ&_4$A(~p6`?8eJN2$BCAS`8BcpHk79DYP3%DqZ zu&V=_)LpA2-}1Ua!MH=}^Rwl|!%Q<*A&hbP$6pR7H3uCmONBA$Wo~5EYsBPW3qwg_ z0O;3zT5(-smomlpBpUrV&`g8B&Zt3^ep5|7$A}({$lm%@W-cSu{L%;>v!wg^w|^yq ztomc?P#ayJ4v8!;=SQ;wRdNS<(#63qZ0R7$qEVfk89_0){oWKEI2>7b_fcqrcGNxK zbkyOhnlL|`A@TZmg<7=*25r8Fg~88m_yZ?|2Zr5RCgI^dMknP;3=R3&y+C7d$|DQA zyhV1dI*s-k+EUu&)0t7G09{(zkpTllP+{vBs|tJI#p2niNQZ!5Ot#TwMhw5 z&y)D!?hd@kW4PliMW5QX>XXwT<@&rBdP zy>LWcda#uo)=h?m>VknTAVniq^GA3}NabM5GV-b4H>nzrejv@cKLcwFvnTyJ&f(B1_FU_x*=X z_R&Ji!Q6kbd`0*+XxaaZ6 zndqcObu-9$B>Ir;`wuiPXe!Z6TtPmze>aHB(gdEf9V7xjA5Duq;@OQMPP^cAPyCp5 z?G(&DP^iS8cpZOORx#p7B*jHWCgtLBm93`A(aNVE2*U0BVyzt43?7)?N2j4@JhJcp z<{3NY7-FwRdFO=v=7RFdy}Du9HC0CVMjtxg?+KCEP;dOk4CUovr?QPFjaop1)#AJF z{j)Qn^Qa0=Rtg7IWHnyOi<3v8MmcqeB@BxuP+VLd2m`vL=G`Vfxcywi*mlHj@R#@N z2*i%}lK;OVnLp9%hiTAHvpm4S>8440=BxQS0VP(e&EqGnQibC0XMa<7k4pE&F&6N0 zUR_^T8S`(@VPU{69pv2Od)mLpVV)YQRme8LkrFubS|Ea%U@Wji0Go%C?&4ds& zo&EXHtzgL~A1c9*86p2M8RpfP>-C2n?v`VYukO9ObMO_oU8LWXm0$R4tneMwsMdTU zQ2uhSyYm5Nt%E-n^@)e)cHq5s*%Z_e4+}!V5kq-WGb(j#Fw;CyV)J9<;t5>oatRPw zR~B#|`Bn2~&oXDOUMR~DK^88> z+aa&!3jz|e6q=1SDTkB%9`90Ci&q4sZ63QaY%-}Uzp5-Vp-XCSJs7Aa&51Qe(x$KB zjoel+Pj5O?k~nkY;GQJH5IP>Sh!s+${=Ii zLGHp^MHM+Ce8?nBb}@anG#^1n9>WF-8g&B|HLx4Rv5Oq@P?BL3ZuUW3@dtIYV|^E+ z*yfbSMy(EemE8HB)=yRASOoe$g@{E-y1Mp^%lRTZe^N#PiD<;>ohntOoTY@GWx1nq z44oT4mTE;mJe7`R^YZ+Y!yWTEgl=LpG*#W`v`qWu969*-=m?d19|X3fh$0EVu9mZ1 z7sa!N6(qL9Q`XkLX7MdZ-VLRqJpIwO7cPJQ&Jt;O$TGooO=6HRYVE!WBJSQlp&zgF ze;LeCfFBe*^gn|Z$MEQDhX4xiPG^3i=tZu;zlU}IBsEuM$Q%-Hq-Q1VV($f#5~cb# zZ1&_y))Ew#n@aYqiKnN6EMS!LYNzTOFFmr-9&S!NE+O+Ri=U>C6tRP^w9!N4u(wq2 zlOc`0YT1{bnOg?C@z^0~*P}1iNR>`iaG`)ePBti!1g@;54qU01q5#r%X&y*iARXgq zyty{_FY%}LwEDPifP1hpcl-IV5dFeQqmsS1S?j)B(FyhP`gaMH5Qp6J$lxWG6e|gm zBAtwPpn6ORMHHCKa5Q5{z1;4mFC8s>y}|ib((04SmGLd8tg(K4?s`VJVHboA1(DE1!nupYo|f zPgQuXD9i9J>d*8&!mi;@2Xd1Rd)*qBjP?JHt#`dr>2#%bpsw5i{Eq1bvnj@>9WD1oOl^xK+0`8NhDoK>2h8Gu@2e716jlt z;v}_-vWett@XyW3C37RPC$OufND%cIxyvJdAYE#w;GbI2K(0Vhvs(K{)7Q)6xztlT z&AV-x?6tQ;@zF#N;?Ft*-s~5nm;d5wGQCob2Q#JwJ?jQxtPj=oLD!wIZa&cS@M_|z zQnj;nQB$BgF}P{x9I@3MLzujDIqyA8Mc7$%S>cO^Ti0?xPw#^9zlc2#sgN*(f>dNj z#+N(Xgyu%hLPRxxx3*Z{>2>`}DHWg6xs*y{$>?Kl$A6t926yK;-rU17V9H2A%W_=i zcn2tl`H)Z*5(P``(inpM1FVZ9gP`9v{Sij0LWqU?C5cA27ZlVducmDLtfu>?uBdvL zB}QjF4D^P7Up6}6urnx7J#{%n8_!;GU0^z|d@rdhn_nQ6Rvhy!>gf7E_y-F|gu_Fe%u4V}3;n_oXb??>MV z(Lo38?bS^<7q0pdloyGYqoB!#ny&qRkPUj68L9)-)KRW%JKw~%!FPjxy@a+@;f*!N zT5)bJVaJo)n-A?Sjm!FqHQxOR*vrFVJb5w^`{Fj666Ab#0NciQB_XKJQj1{I2Mj{B zlCD2j{TycS{SxS>tkQp+!tA76aah=8*Bw!NKabyRJ50R+tV_W6U`KIrZlNTHAMbA$ zTLPjTx;>+HZ#lMJHW)Xa>$q@@ z`+^?6Ikt)1>aC3jBl=P#9Iq){CpRZ;Z_`xKo7(n(=55DCzN~6pOvA2@@$E)GY!m%! z1Z~40ZoX@&CV#a4l^M3`#P!o7y62! ze}Ow=nvE}U6=t?@mlwyj_y&a_O?BnEyQhD(l` zUfwxA;Xy-^QR#%C57LpTVO=^fjLbR`_FPCG6TKU_o@5lOtp59`NSdl9&slFK2p^C2 za1;tEe4nqUUkNYA)pJ#<-FzEGggeB6<5@fjGNS(Zny6&(p~=5?i#{e4fglJq%)&xm ncWje^Z~n??LG1}!(o( item); break; + case ABI::AdaptiveNamespace::ElementType::Column: + baseCardElement = + GetSharedModel( + item); + break; case ABI::AdaptiveNamespace::ElementType::ColumnSet: baseCardElement = GetSharedModel( @@ -511,6 +516,10 @@ HRESULT GenerateElementProjection(_In_ const std::shared_ptr( projectedElement, std::AdaptivePointerCast(baseElement))); break; + case CardElementType::Column: + RETURN_IF_FAILED(MakeAndInitialize<::AdaptiveNamespace::AdaptiveColumn>( + projectedElement, std::AdaptivePointerCast(baseElement))); + break; case CardElementType::Custom: RETURN_IF_FAILED(std::AdaptivePointerCast<::AdaptiveNamespace::CustomElementWrapper>(baseElement)->GetWrappedElement(projectedElement)); break; diff --git a/source/uwp/Renderer/lib/XamlBuilder.cpp b/source/uwp/Renderer/lib/XamlBuilder.cpp index fdc7005862..6b6a383cd1 100644 --- a/source/uwp/Renderer/lib/XamlBuilder.cpp +++ b/source/uwp/Renderer/lib/XamlBuilder.cpp @@ -996,6 +996,103 @@ namespace AdaptiveNamespace return S_OK; } + HRESULT XamlBuilder::RenderFallback(_In_ IAdaptiveCardElement* currentElement, + _In_ ABI::AdaptiveNamespace::IAdaptiveRenderContext* renderContext, + _In_ ABI::AdaptiveNamespace::IAdaptiveRenderArgs* renderArgs, + _COM_Outptr_ ABI::Windows::UI::Xaml::IUIElement** result) + { + ComPtr elementRenderers; + RETURN_IF_FAILED(renderContext->get_ElementRenderers(&elementRenderers)); + + ABI::AdaptiveNamespace::FallbackType elementFallback; + RETURN_IF_FAILED(currentElement->get_FallbackType(&elementFallback)); + + HString elementType; + RETURN_IF_FAILED(currentElement->get_ElementTypeString(elementType.GetAddressOf())); + + bool fallbackHandled = false; + ComPtr fallbackControl; + switch (elementFallback) + { + case ABI::AdaptiveNamespace::FallbackType::Content: + { + // We have content, get the type of the fallback element + ComPtr fallbackElement; + RETURN_IF_FAILED(currentElement->get_FallbackContent(&fallbackElement)); + + HString fallbackElementType; + RETURN_IF_FAILED(fallbackElement->get_ElementTypeString(fallbackElementType.GetAddressOf())); + + RETURN_IF_FAILED(WarnForFallbackContentElement(renderContext, elementType.Get(), fallbackElementType.Get())); + + // Try to render the fallback element + ComPtr fallbackElementRenderer; + RETURN_IF_FAILED(elementRenderers->Get(fallbackElementType.Get(), &fallbackElementRenderer)); + HRESULT hr = E_PERFORM_FALLBACK; + + if (fallbackElementRenderer) + { + // perform this element's fallback + hr = fallbackElementRenderer->Render(fallbackElement.Get(), renderContext, renderArgs, &fallbackControl); + } + + if (hr == E_PERFORM_FALLBACK) + { + // The fallback content told us to fallback, make a recursive call to this method + RETURN_IF_FAILED(RenderFallback(fallbackElement.Get(), renderContext, renderArgs, &fallbackControl)); + } + else + { + // Check the non-fallback return value from the render call + RETURN_IF_FAILED(hr); + } + + // We handled the fallback content + fallbackHandled = true; + break; + } + case ABI::AdaptiveNamespace::FallbackType::Drop: + { + // If the fallback is drop, nothing to do but warn + RETURN_IF_FAILED(WarnForFallbackDrop(renderContext, elementType.Get())); + fallbackHandled = true; + break; + } + case ABI::AdaptiveNamespace::FallbackType::None: + default: + { + break; + } + } + + if (fallbackHandled) + { + // We did it, copy out the result if any + RETURN_IF_FAILED(fallbackControl.CopyTo(result)); + return S_OK; + } + else + { + // We didn't do it, can our ancestor? + boolean ancestorHasFallback; + RETURN_IF_FAILED(renderArgs->get_AncestorHasFallback(&ancestorHasFallback)); + + if (!ancestorHasFallback) + { + // standard unknown element handling + std::wstring errorString = L"No Renderer found for type: "; + errorString += elementType.GetRawBuffer(nullptr); + RETURN_IF_FAILED(renderContext->AddWarning(ABI::AdaptiveNamespace::WarningStatusCode::NoRendererForType, + HStringReference(errorString.c_str()).Get())); + return S_OK; + } + else + { + return E_PERFORM_FALLBACK; + } + } + } + HRESULT XamlBuilder::BuildPanelChildren(_In_ IVector* children, _In_ IPanel* parentPanel, _In_ ABI::AdaptiveNamespace::IAdaptiveRenderContext* renderContext, @@ -1038,105 +1135,32 @@ namespace AdaptiveNamespace ComPtr hostConfig; RETURN_IF_FAILED(renderContext->get_HostConfig(&hostConfig)); + // If we have a renderer, render the element + ComPtr newControl; if (SUCCEEDED(hr) && elementRenderer != nullptr) { - ComPtr separator; - AddSeparatorIfNeeded(iElement, element, hostConfig.Get(), renderContext, parentPanel, &separator); - - ComPtr newControl; hr = elementRenderer->Render(element, renderContext, renderArgs, newControl.GetAddressOf()); - RETURN_IF_FAILED(AddRenderedControl(newControl.Get(), element, parentPanel, separator.Get(), nullptr, childCreatedCallback)); } + // If we don't have a renderer, or if the renderer told us to perform fallback, try falling back if (elementRenderer == nullptr || hr == E_PERFORM_FALLBACK) { - // unknown element or requirements unmet - if (elementHasFallback) - { - if (elementFallback == FallbackType_Content) - { - HString parentElementType; - RETURN_IF_FAILED(elementType.CopyTo(parentElementType.GetAddressOf())); - ComPtr currentElement = element; - do - { - ComPtr fallbackElement; - RETURN_IF_FAILED(currentElement->get_FallbackContent(&fallbackElement)); - - HString fallbackElementType; - RETURN_IF_FAILED(fallbackElement->get_ElementTypeString(fallbackElementType.GetAddressOf())); - - RETURN_IF_FAILED(WarnForFallbackContentElement(renderContext, - parentElementType.Get(), - fallbackElementType.Get())); - - ComPtr fallbackElementRenderer; - RETURN_IF_FAILED(elementRenderers->Get(fallbackElementType.Get(), &fallbackElementRenderer)); - - if (fallbackElementRenderer) - { - ComPtr separator; - AddSeparatorIfNeeded(iElement, element, hostConfig.Get(), renderContext, parentPanel, &separator); - - // perform this element's fallback - ComPtr newControl; - fallbackElementRenderer->Render(fallbackElement.Get(), renderContext, renderArgs, &newControl); - RETURN_IF_FAILED( - AddRenderedControl(newControl.Get(), element, parentPanel, separator.Get(), nullptr, childCreatedCallback)); - return S_OK; - } - - RETURN_IF_FAILED(fallbackElementType.CopyTo(parentElementType.ReleaseAndGetAddressOf())); - - // Fallback content was of unknown type. We need to perform its fallback (if present). - // Otherwise, we need to fallback through ancestors (if available). - ABI::AdaptiveNamespace::FallbackType fallbackElementFallbackType; - fallbackElement->get_FallbackType(&fallbackElementFallbackType); - if (fallbackElementFallbackType == ABI::AdaptiveNamespace::FallbackType::Content) - { - // Fallback element is unknown, but has fallback content. Follow the chain to see if - // fallback's fallback content will render. - currentElement = fallbackElement; - } - else if (fallbackElementFallbackType == ABI::AdaptiveNamespace::FallbackType::Drop) - { - // Fallback element is unknown, but has fallback drop. Drop it. - return S_OK; - } - else - { - // Fallback element is unknown, and itself has no fallback content. Fallback through - // ancestors if possible. - break; - } - } while (currentElement); - } - else if (elementFallback == FallbackType_Drop) - { - RETURN_IF_FAILED(WarnForFallbackDrop(renderContext, elementType.Get())); - return S_OK; - } - } + RETURN_IF_FAILED(RenderFallback(element, renderContext, renderArgs, &newControl)); + } - if (ancestorHasFallback) - { - // return fallback error code so ancestors know to perform fallback - hr = E_PERFORM_FALLBACK; - } + // If we got a control, add a separator if needed and the control to the parent panel + if (newControl != nullptr) + { + ComPtr separator; + AddSeparatorIfNeeded(iElement, element, hostConfig.Get(), renderContext, parentPanel, &separator); - if (hr != E_PERFORM_FALLBACK) - { - // standard unknown element handling - std::wstring errorString = L"No Renderer found for type: "; - errorString += elementType.GetRawBuffer(nullptr); - renderContext->AddWarning(ABI::AdaptiveNamespace::WarningStatusCode::NoRendererForType, - HStringReference(errorString.c_str()).Get()); - } + RETURN_IF_FAILED(AddRenderedControl(newControl.Get(), element, parentPanel, separator.Get(), nullptr, childCreatedCallback)); } + + // Revert the ancestorHasFallback value renderArgs->put_AncestorHasFallback(ancestorHasFallback); return hr; }); - renderArgs->put_AncestorHasFallback(ancestorHasFallback); RETURN_IF_FAILED(SetSeparatorVisibility(parentPanel)); return hr; @@ -2108,8 +2132,15 @@ namespace AdaptiveNamespace ComPtr> hyperlinkInlines; RETURN_IF_FAILED(hyperlinkAsSpan->get_Inlines(hyperlinkInlines.GetAddressOf())); - RETURN_IF_FAILED(AddSingleTextInline( - adaptiveTextElement.Get(), renderContext, renderArgs, text.Get(), isStrikethrough, isItalic, true, hyperlinkInlines.Get(), &inlineLength)); + RETURN_IF_FAILED(AddSingleTextInline(adaptiveTextElement.Get(), + renderContext, + renderArgs, + text.Get(), + isStrikethrough, + isItalic, + true, + hyperlinkInlines.Get(), + &inlineLength)); ComPtr hyperlinkAsInline; RETURN_IF_FAILED(hyperlink.As(&hyperlinkAsInline)); @@ -2120,8 +2151,15 @@ namespace AdaptiveNamespace else { // Add the text to the paragraph's inlines - RETURN_IF_FAILED(AddSingleTextInline( - adaptiveTextElement.Get(), renderContext, renderArgs, text.Get(), isStrikethrough, isItalic, false, xamlInlines.Get(), &inlineLength)); + RETURN_IF_FAILED(AddSingleTextInline(adaptiveTextElement.Get(), + renderContext, + renderArgs, + text.Get(), + isStrikethrough, + isItalic, + false, + xamlInlines.Get(), + &inlineLength)); } boolean highlight; @@ -2430,8 +2468,8 @@ namespace AdaptiveNamespace } else { - // Set the stretch for the ellipse - this is different to the stretch used for the image brush above. - // This will force the ellipse to conform to fit within the confines of its parent. + // Set the stretch for the ellipse - this is different to the stretch used for the image brush + // above. This will force the ellipse to conform to fit within the confines of its parent. Stretch ellipseStretch = Stretch::Stretch_UniformToFill; RETURN_IF_FAILED(ellipseAsShape->put_Stretch(ellipseStretch)); RETURN_IF_FAILED(backgroundEllipseAsShape->put_Stretch(ellipseStretch)); @@ -2993,18 +3031,36 @@ namespace AdaptiveNamespace ComPtr gridAsPanel; RETURN_IF_FAILED(xamlGrid.As(&gridAsPanel)); - HRESULT hrColumns = XamlHelpers::IterateOverVectorWithFailure( - columns.Get(), ancestorHasFallback, [&](IAdaptiveColumn* column) { - ComPtr columnAsCardElement; - ComPtr localColumn(column); - RETURN_IF_FAILED(localColumn.As(&columnAsCardElement)); + HRESULT hrColumns = XamlHelpers::IterateOverVectorWithFailure(columns.Get(), ancestorHasFallback, [&](IAdaptiveColumn* column) { + ComPtr columnAsCardElement; + ComPtr localColumn(column); + RETURN_IF_FAILED(localColumn.As(&columnAsCardElement)); + + ComPtr testColumn; + columnAsCardElement.As(&testColumn); - ComPtr testColumn; - columnAsCardElement.As(&testColumn); + ComPtr> columnDefinitions; + RETURN_IF_FAILED(xamlGrid->get_ColumnDefinitions(&columnDefinitions)); - ComPtr> columnDefinitions; - RETURN_IF_FAILED(xamlGrid->get_ColumnDefinitions(&columnDefinitions)); + ABI::AdaptiveNamespace::FallbackType fallbackType; + RETURN_IF_FAILED(columnAsCardElement->get_FallbackType(&fallbackType)); + // Build the Column + RETURN_IF_FAILED(newRenderArgs->put_AncestorHasFallback( + ancestorHasFallback || fallbackType != ABI::AdaptiveNamespace::FallbackType::None)); + + ComPtr xamlColumn; + HRESULT hr = columnRenderer->Render(columnAsCardElement.Get(), renderContext, newRenderArgs.Get(), &xamlColumn); + if (hr == E_PERFORM_FALLBACK) + { + RETURN_IF_FAILED(RenderFallback(columnAsCardElement.Get(), renderContext, newRenderArgs.Get(), &xamlColumn)); + } + + RETURN_IF_FAILED(newRenderArgs->put_AncestorHasFallback(ancestorHasFallback)); + + // Check the column for nullptr as it may have been dropped due to fallback + if (xamlColumn != nullptr) + { // If not the first column ComPtr separator; if (currentColumn > 0) @@ -3044,10 +3100,6 @@ namespace AdaptiveNamespace RETURN_IF_FAILED(columnDefinitions->Append(columnDefinition.Get())); - // Build the Column - ComPtr xamlColumn; - RETURN_IF_FAILED(columnRenderer->Render(columnAsCardElement.Get(), renderContext, newRenderArgs.Get(), &xamlColumn)); - // Mark the column container with the current column ComPtr columnAsFrameworkElement; RETURN_IF_FAILED(xamlColumn.As(&columnAsFrameworkElement)); @@ -3060,8 +3112,9 @@ namespace AdaptiveNamespace separator.Get(), columnDefinition.Get(), [](IUIElement*) {})); - return S_OK; - }); + } + return S_OK; + }); RETURN_IF_FAILED(hrColumns); RETURN_IF_FAILED(SetSeparatorVisibility(gridAsPanel.Get())); diff --git a/source/uwp/Renderer/lib/XamlBuilder.h b/source/uwp/Renderer/lib/XamlBuilder.h index 7ea6364603..5b3623129d 100644 --- a/source/uwp/Renderer/lib/XamlBuilder.h +++ b/source/uwp/Renderer/lib/XamlBuilder.h @@ -282,5 +282,10 @@ namespace AdaptiveNamespace static HRESULT HandleActionStyling(_In_ ABI::AdaptiveNamespace::IAdaptiveActionElement* adaptiveActionElement, _In_ ABI::Windows::UI::Xaml::IFrameworkElement* buttonFrameworkElement, _In_ ABI::AdaptiveNamespace::IAdaptiveRenderContext* renderContext); + + static HRESULT RenderFallback(_In_ ABI::AdaptiveNamespace::IAdaptiveCardElement* currentElement, + _In_ ABI::AdaptiveNamespace::IAdaptiveRenderContext* renderContext, + _In_ ABI::AdaptiveNamespace::IAdaptiveRenderArgs* renderArgs, + _COM_Outptr_ ABI::Windows::UI::Xaml::IUIElement** result); }; } diff --git a/source/uwp/UWPUnitTests/FallbackTests.cs b/source/uwp/UWPUnitTests/FallbackTests.cs new file mode 100644 index 0000000000..c66b0e6019 --- /dev/null +++ b/source/uwp/UWPUnitTests/FallbackTests.cs @@ -0,0 +1,70 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +using AdaptiveCards.Rendering.Uwp; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using System.Threading.Tasks; +using Windows.ApplicationModel.Core; +using Windows.UI.Core; + +namespace UWPUnitTests +{ + [TestClass] + public class FallbackTests + { + [TestMethod] + public async Task ColumnFallbackAsync() + { + string cardStr = + "{" + + "\"type\": \"AdaptiveCard\"," + + "\"version\": \"1.0\"," + + "\"body\": [" + + "{" + + " \"type\": \"ColumnSet\"," + + " \"columns\": [" + + " {" + + " \"type\": \"Column\"," + + " \"items\": [" + + " {" + + " \"type\": \"Graph\"" + + " }]," + + " \"fallback\": {" + + " \"type\": \"Column\"," + + " \"items\": [" + + " {" + + " \"type\": \"TextBlock\"," + + " \"text\": \"Fallback\"" + + " }]" + + " }" + + " }]" + + "}]}"; + + var dispatcher = CoreApplication.MainView.CoreWindow.Dispatcher; + + Exception testException = null; + + // Need to move the test to the UI Thread + await dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () => + { + try + { + AdaptiveCardRenderer renderer = new AdaptiveCardRenderer(); + RenderedAdaptiveCard renderedCard = renderer.RenderAdaptiveCardFromJsonString(cardStr); + + Assert.AreEqual(1, renderedCard.Warnings.Count); + Assert.AreEqual("Performing fallback for element of type \"Column\" (fallback element type \"Column\")", renderedCard.Warnings[0].Message); + } + catch (Exception thrown) + { + testException = thrown; + } + }); + + if (testException != null) + { + throw testException; + } + } + } +} diff --git a/source/uwp/UWPUnitTests/ObjectModelTests.cs b/source/uwp/UWPUnitTests/ObjectModelTests.cs index 1e2b690ae4..b12a71c8d4 100644 --- a/source/uwp/UWPUnitTests/ObjectModelTests.cs +++ b/source/uwp/UWPUnitTests/ObjectModelTests.cs @@ -307,6 +307,12 @@ public void ColumnSet() Assert.AreEqual("This is a text block", (column1.Items[0] as AdaptiveTextBlock).Text); Assert.AreEqual("This is another text block", (column1.Items[1] as AdaptiveTextBlock).Text); + column1.FallbackType = FallbackType.Content; + column1.FallbackContent = new AdaptiveColumn(); + + Assert.AreEqual(FallbackType.Content, column1.FallbackType); + Assert.AreEqual(ElementType.Column, column1.FallbackContent.ElementType); + AdaptiveColumn column2 = new AdaptiveColumn { Id = "Column2Id" @@ -338,7 +344,7 @@ public void ColumnSet() Assert.AreEqual("Column2Id", columnSet.Columns[1].Id); var jsonString = columnSet.ToJson().ToString(); - Assert.AreEqual("{\"bleed\":true,\"columns\":[{\"bleed\":true,\"height\":\"Stretch\",\"id\":\"ColumnId\",\"isVisible\":false,\"items\":[{\"text\":\"This is a text block\",\"type\":\"TextBlock\"},{\"text\":\"This is another text block\",\"type\":\"TextBlock\"}],\"selectAction\":{\"title\":\"Select Action\",\"type\":\"Action.Submit\"},\"separator\":true,\"spacing\":\"small\",\"style\":\"Emphasis\",\"type\":\"Column\",\"verticalContentAlignment\":\"Bottom\",\"width\":\"50px\"},{\"id\":\"Column2Id\",\"items\":[{\"text\":\"This is a text block\",\"type\":\"TextBlock\"}],\"type\":\"Column\",\"width\":\"auto\"}],\"height\":\"Stretch\",\"id\":\"ColumnSetId\",\"isVisible\":false,\"separator\":true,\"spacing\":\"small\",\"style\":\"Emphasis\",\"type\":\"ColumnSet\"}", jsonString); + Assert.AreEqual("{\"bleed\":true,\"columns\":[{\"bleed\":true,\"fallback\":{\"items\":[],\"type\":\"Column\",\"width\":\"auto\"},\"height\":\"Stretch\",\"id\":\"ColumnId\",\"isVisible\":false,\"items\":[{\"text\":\"This is a text block\",\"type\":\"TextBlock\"},{\"text\":\"This is another text block\",\"type\":\"TextBlock\"}],\"selectAction\":{\"title\":\"Select Action\",\"type\":\"Action.Submit\"},\"separator\":true,\"spacing\":\"small\",\"style\":\"Emphasis\",\"type\":\"Column\",\"verticalContentAlignment\":\"Bottom\",\"width\":\"50px\"},{\"id\":\"Column2Id\",\"items\":[{\"text\":\"This is a text block\",\"type\":\"TextBlock\"}],\"type\":\"Column\",\"width\":\"auto\"}],\"height\":\"Stretch\",\"id\":\"ColumnSetId\",\"isVisible\":false,\"separator\":true,\"spacing\":\"small\",\"style\":\"Emphasis\",\"type\":\"ColumnSet\"}", jsonString); } [TestMethod] diff --git a/source/uwp/UWPUnitTests/UWPUnitTests.csproj b/source/uwp/UWPUnitTests/UWPUnitTests.csproj index fa2fdc2540..ca36088150 100644 --- a/source/uwp/UWPUnitTests/UWPUnitTests.csproj +++ b/source/uwp/UWPUnitTests/UWPUnitTests.csproj @@ -118,6 +118,7 @@ + diff --git a/source/uwp/UWPUnitTests/UnitTest.cs b/source/uwp/UWPUnitTests/UnitTest.cs index 6101cdc404..78a78bdb86 100644 --- a/source/uwp/UWPUnitTests/UnitTest.cs +++ b/source/uwp/UWPUnitTests/UnitTest.cs @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -using AdaptiveCards.Rendering.Uwp; using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Collections.Generic; @@ -10,7 +9,6 @@ using UWPTestLibrary; using Windows.ApplicationModel; using Windows.ApplicationModel.Core; -using Windows.Data.Json; using Windows.Storage; using Windows.UI.Core; using Windows.UI.Xaml; From 47ac4d831589aaf196e58bbf1d7dab451ec8273f Mon Sep 17 00:00:00 2001 From: Rebecca Muraira Date: Fri, 12 Jul 2019 10:51:14 -0700 Subject: [PATCH 2/2] Fix shared model x64 build --- .../AdaptiveCardsSharedModelUnitTest/FallbackTests.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/shared/cpp/AdaptiveCardsSharedModel/AdaptiveCardsSharedModelUnitTest/FallbackTests.cpp b/source/shared/cpp/AdaptiveCardsSharedModel/AdaptiveCardsSharedModelUnitTest/FallbackTests.cpp index f71104d53e..9e63080a2e 100644 --- a/source/shared/cpp/AdaptiveCardsSharedModel/AdaptiveCardsSharedModelUnitTest/FallbackTests.cpp +++ b/source/shared/cpp/AdaptiveCardsSharedModel/AdaptiveCardsSharedModelUnitTest/FallbackTests.cpp @@ -734,7 +734,7 @@ namespace AdaptiveCardsSharedModelUnitTest })card"; auto parseResult = AdaptiveCard::DeserializeFromString(cardStr, "1.2"); - Assert::AreEqual(0U, parseResult->GetWarnings().size()); + Assert::IsTrue(0 == parseResult->GetWarnings().size()); auto column = (std::static_pointer_cast(parseResult->GetAdaptiveCard()->GetBody().at(0)))->GetColumns().at(0); Assert::IsTrue(FallbackType::Content == column->GetFallbackType()); @@ -767,7 +767,7 @@ namespace AdaptiveCardsSharedModelUnitTest })card"; auto parseResult = AdaptiveCard::DeserializeFromString(cardStr, "1.2"); - Assert::AreEqual(1U, parseResult->GetWarnings().size()); + Assert::IsTrue(1 == parseResult->GetWarnings().size()); Assert::IsTrue(WarningStatusCode::UnknownElementType == parseResult->GetWarnings().at(0)->GetStatusCode()); Assert::AreEqual("Column Fallback must be a Column. Fallback content dropped."s, parseResult->GetWarnings().at(0)->GetReason());