Skip to content

Commit 067510a

Browse files
committed
Update IDL with OptionalBoolean
1 parent ceef591 commit 067510a

7 files changed

Lines changed: 61 additions & 15 deletions

File tree

src/AppInstallerCLIE2ETests/Interop/PackageCatalogInterop.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ public async Task AddEditRemovePackageCatalog()
297297
// Edit
298298
EditPackageCatalogOptions editOptions = this.TestFactory.CreateEditPackageCatalogOptions();
299299
editOptions.Name = Constants.TestSourceName;
300-
editOptions.Explicit = "false";
300+
editOptions.Explicit = OptionalBoolean.False;
301301
this.EditAndValidatePackageCatalog(editOptions, EditPackageCatalogStatus.Ok);
302302

303303
// Remove
@@ -396,7 +396,10 @@ private void EditAndValidatePackageCatalog(EditPackageCatalogOptions editPackage
396396

397397
// Verify edits are correct.
398398
var packageCatalog = this.packageManager.GetPackageCatalogByName(editPackageCatalogOptions.Name);
399-
Assert.AreEqual(packageCatalog.Info.Explicit, bool.Parse(editPackageCatalogOptions.Explicit));
399+
if (editPackageCatalogOptions.Explicit != OptionalBoolean.Unspecified)
400+
{
401+
Assert.AreEqual(packageCatalog.Info.Explicit, editPackageCatalogOptions.Explicit);
402+
}
400403
}
401404
}
402405
}

src/Microsoft.Management.Deployment/Converters.cpp

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -556,4 +556,37 @@ namespace winrt::Microsoft::Management::Deployment::implementation
556556
default: return AppInstaller::Manifest::PlatformEnum::Unknown;
557557
}
558558
}
559+
560+
std::optional<bool> GetOptionalBoolean(winrt::Microsoft::Management::Deployment::OptionalBoolean optionalBoolean)
561+
{
562+
switch (optionalBoolean)
563+
{
564+
case OptionalBoolean::True:
565+
return std::optional<bool> { true };
566+
case OptionalBoolean::False:
567+
return std::optional<bool> { false };
568+
default:
569+
return std::nullopt;
570+
}
571+
}
572+
573+
winrt::Microsoft::Management::Deployment::OptionalBoolean GetOptionalBoolean(std::optional<bool> optionalBoolean)
574+
{
575+
if (optionalBoolean.has_value())
576+
{
577+
if (optionalBoolean.value())
578+
{
579+
return OptionalBoolean::True;
580+
}
581+
else
582+
{
583+
return OptionalBoolean::False;
584+
}
585+
}
586+
else
587+
{
588+
return OptionalBoolean::Unspecified;
589+
}
590+
}
591+
559592
}

src/Microsoft.Management.Deployment/Converters.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ namespace winrt::Microsoft::Management::Deployment::implementation
3535
winrt::Microsoft::Management::Deployment::RemovePackageCatalogStatus GetRemovePackageCatalogOperationStatus(winrt::hresult hresult);
3636
winrt::Microsoft::Management::Deployment::EditPackageCatalogStatus GetEditPackageCatalogOperationStatus(winrt::hresult hresult);
3737
::AppInstaller::Manifest::PlatformEnum GetPlatformEnum(winrt::Microsoft::Management::Deployment::WindowsPlatform value);
38+
std::optional<bool> GetOptionalBoolean(winrt::Microsoft::Management::Deployment::OptionalBoolean optionalBoolean);
39+
winrt::Microsoft::Management::Deployment::OptionalBoolean GetOptionalBoolean(std::optional<bool> optionalBoolean);
3840

3941
#define WINGET_GET_OPERATION_RESULT_STATUS(_installResultStatus_, _uninstallResultStatus_, _downloadResultStatus_, _repairResultStatus_) \
4042
if constexpr (std::is_same_v<TStatus, winrt::Microsoft::Management::Deployment::InstallResultStatus>) \

src/Microsoft.Management.Deployment/EditPackageCatalogOptions.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ namespace winrt::Microsoft::Management::Deployment::implementation
2222
{
2323
m_name = value;
2424
}
25-
hstring EditPackageCatalogOptions::Explicit()
25+
OptionalBoolean EditPackageCatalogOptions::Explicit()
2626
{
27-
return hstring(m_explicit);
27+
return m_explicit;
2828
}
29-
void EditPackageCatalogOptions::Explicit(hstring const& value)
29+
void EditPackageCatalogOptions::Explicit(OptionalBoolean const& value)
3030
{
3131
m_explicit = value;
3232
}

src/Microsoft.Management.Deployment/EditPackageCatalogOptions.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ namespace winrt::Microsoft::Management::Deployment::implementation
1414
hstring Name();
1515
void Name(hstring const& value);
1616

17-
hstring Explicit();
18-
void Explicit(hstring const& value);
17+
OptionalBoolean Explicit();
18+
void Explicit(OptionalBoolean const& value);
1919

2020
#if !defined(INCLUDE_ONLY_INTERFACE_METHODS)
2121
private:
2222
hstring m_name = L"";
23-
hstring m_explicit = L"";
23+
OptionalBoolean m_explicit = OptionalBoolean::Unspecified;
2424
#endif
2525
};
2626
}

src/Microsoft.Management.Deployment/PackageManager.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1468,9 +1468,9 @@ namespace winrt::Microsoft::Management::Deployment::implementation
14681468
::AppInstaller::Repository::Source sourceToEdit = ::AppInstaller::Repository::Source{ matchingSource.value().Name };
14691469

14701470
auto isExplicit = matchingSource.value().Explicit;
1471-
if (!options.Explicit().empty())
1471+
if (options.Explicit() != OptionalBoolean::Unspecified)
14721472
{
1473-
isExplicit = AppInstaller::Utility::ConvertStringToBool(winrt::to_string(options.Explicit()));
1473+
isExplicit = options.Explicit() == OptionalBoolean::True;
14741474
}
14751475

14761476
::AppInstaller::Repository::SourceEdit edits{ std::optional<bool>{ isExplicit } };

src/Microsoft.Management.Deployment/PackageManager.idl

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1541,9 +1541,18 @@ namespace Microsoft.Management.Deployment
15411541
HRESULT ExtendedErrorCode { get; };
15421542
};
15431543

1544+
/// IMPLEMENTATION NOTE: OptionalBoolean
1545+
[contract(Microsoft.Management.Deployment.WindowsPackageManagerContract, 28)]
1546+
enum OptionalBoolean
1547+
{
1548+
Unspecified,
1549+
False,
1550+
True,
1551+
};
1552+
15441553
/// IMPLEMENTATION NOTE: EditPackageCatalogOptions
15451554
[contract(Microsoft.Management.Deployment.WindowsPackageManagerContract, 28)]
1546-
runtimeclass EditPackageCatalogOptions
1555+
runtimeclass EditPackageCatalogOptions
15471556
{
15481557
EditPackageCatalogOptions();
15491558

@@ -1553,13 +1562,12 @@ namespace Microsoft.Management.Deployment
15531562
String Name;
15541563

15551564
/// Editing the Explicit property has three states: true, false, and not specified (no changes).
1556-
/// SAMPLE VALUES: "true" or "false" or empty string.
1557-
String Explicit;
1565+
OptionalBoolean Explicit;
15581566
};
15591567

15601568
/// IMPLEMENTATION NOTE: RemovePackageCatalogStatus
15611569
[contract(Microsoft.Management.Deployment.WindowsPackageManagerContract, 28)]
1562-
enum EditPackageCatalogStatus
1570+
enum EditPackageCatalogStatus
15631571
{
15641572
Ok,
15651573
GroupPolicyError,
@@ -1572,7 +1580,7 @@ namespace Microsoft.Management.Deployment
15721580
/// IMPLEMENTATION NOTE: RemovePackageCatalogResult
15731581
/// Result of editing a package catalog.
15741582
[contract(Microsoft.Management.Deployment.WindowsPackageManagerContract, 28)]
1575-
runtimeclass EditPackageCatalogResult
1583+
runtimeclass EditPackageCatalogResult
15761584
{
15771585
EditPackageCatalogStatus Status { get; };
15781586

0 commit comments

Comments
 (0)