diff --git a/dev/ApplicationData/M.W.S.ApplicationData.cpp b/dev/ApplicationData/M.W.S.ApplicationData.cpp index 3fd36a45d3..9890a1460a 100644 --- a/dev/ApplicationData/M.W.S.ApplicationData.cpp +++ b/dev/ApplicationData/M.W.S.ApplicationData.cpp @@ -7,6 +7,7 @@ #include "Microsoft.Windows.Storage.ApplicationData.g.cpp" #include "M.W.S.ApplicationDataContainer.h" +#include "UnpackagedApplicationData.h" #include @@ -24,25 +25,15 @@ static_assert(static_cast(winrt::Microsoft::Windows::Storage::Applicati namespace winrt::Microsoft::Windows::Storage::implementation { ApplicationData::ApplicationData(hstring const& packageFamilyName) : - m_unpackagedApplicationData(), m_applicationData(nullptr), m_packageFamilyName(packageFamilyName) { } ApplicationData::ApplicationData(winrt::Windows::Storage::ApplicationData& value, hstring const& packageFamilyName) : - m_unpackagedApplicationData(), m_applicationData(value), m_packageFamilyName(packageFamilyName) { } - ApplicationData::ApplicationData(hstring const& publisher, hstring const& product) : - m_unpackagedApplicationData(), - m_applicationData(nullptr), - m_packageFamilyName() - { - auto unpackagedApplicationData{ new ::Microsoft::Windows::Storage::UnpackagedApplicationData(publisher, product) }; - m_unpackagedApplicationData.reset(unpackagedApplicationData); - } winrt::Microsoft::Windows::Storage::ApplicationData ApplicationData::GetDefault() { const auto packageFamilyName{ ::AppModel::Identity::GetCurrentPackageFamilyName() }; @@ -114,25 +105,15 @@ namespace winrt::Microsoft::Windows::Storage::implementation _VerifyPublisher(publisher); _VerifyProduct(product); - return winrt::make(publisher, product); + return winrt::make(publisher, product); } bool ApplicationData::IsMachinePathSupported() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->IsMachinePathSupported(); - } - const auto path{ _MachinePath(m_packageFamilyName) }; return !path.empty(); } hstring ApplicationData::LocalCachePath() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->LocalCachePath(); - } - if (!m_applicationData) { return winrt::hstring{}; @@ -141,11 +122,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } hstring ApplicationData::LocalPath() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->LocalPath(); - } - if (!m_applicationData) { return winrt::hstring{}; @@ -154,21 +130,11 @@ namespace winrt::Microsoft::Windows::Storage::implementation } hstring ApplicationData::MachinePath() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->MachinePath(); - } - const auto path{ _MachinePath(m_packageFamilyName) }; return winrt::hstring{ path.c_str() }; } hstring ApplicationData::SharedLocalPath() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->SharedLocalPath(); - } - if (!m_applicationData) { return winrt::hstring{}; @@ -187,11 +153,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } hstring ApplicationData::TemporaryPath() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->TemporaryPath(); - } - if (!m_applicationData) { return winrt::hstring{}; @@ -200,11 +161,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } winrt::Windows::Storage::StorageFolder ApplicationData::LocalCacheFolder() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->LocalCacheFolder(); - } - if (!m_applicationData) { return nullptr; @@ -213,11 +169,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } winrt::Windows::Storage::StorageFolder ApplicationData::LocalFolder() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->LocalFolder(); - } - if (!m_applicationData) { return nullptr; @@ -226,11 +177,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } winrt::Windows::Storage::StorageFolder ApplicationData::MachineFolder() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->MachineFolder(); - } - const auto path{ MachinePath() }; if (path.empty()) { @@ -240,11 +186,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } winrt::Windows::Storage::StorageFolder ApplicationData::SharedLocalFolder() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->SharedLocalFolder(); - } - if (!m_applicationData) { return nullptr; @@ -253,11 +194,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } winrt::Windows::Storage::StorageFolder ApplicationData::TemporaryFolder() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->TemporaryFolder(); - } - if (!m_applicationData) { return nullptr; @@ -266,11 +202,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } winrt::Microsoft::Windows::Storage::ApplicationDataContainer ApplicationData::LocalSettings() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->LocalSettings(); - } - if (!m_applicationData) { return nullptr; @@ -280,11 +211,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } winrt::Windows::Foundation::IAsyncAction ApplicationData::ClearAsync(winrt::Microsoft::Windows::Storage::ApplicationDataLocality locality) { - if (m_unpackagedApplicationData) - { - co_await m_unpackagedApplicationData->ClearAsync(locality); - } - if (!m_applicationData) { co_return; @@ -300,11 +226,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } winrt::Windows::Foundation::IAsyncAction ApplicationData::ClearPublisherCacheFolderAsync(hstring folderName) { - if (m_unpackagedApplicationData) - { - co_await m_unpackagedApplicationData->ClearPublisherCacheFolderAsync(folderName); - } - if (!m_applicationData) { co_return; @@ -313,11 +234,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } void ApplicationData::Close() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->Close(); - } - if (m_applicationData) { m_applicationData.Close(); @@ -325,11 +241,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } hstring ApplicationData::GetPublisherCachePath(hstring const& folderName) { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->GetPublisherCachePath(folderName); - } - auto folder{ GetPublisherCacheFolder(folderName) }; winrt::hstring path; if (folder) @@ -340,11 +251,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } winrt::Windows::Storage::StorageFolder ApplicationData::GetPublisherCacheFolder(hstring const& folderName) { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->GetPublisherCacheFolder(folderName); - } - if (!m_applicationData) { return nullptr; diff --git a/dev/ApplicationData/M.W.S.ApplicationData.h b/dev/ApplicationData/M.W.S.ApplicationData.h index 11bb311a84..0d9f975561 100644 --- a/dev/ApplicationData/M.W.S.ApplicationData.h +++ b/dev/ApplicationData/M.W.S.ApplicationData.h @@ -5,8 +5,6 @@ #include "Microsoft.Windows.Storage.ApplicationData.g.h" -#include "UnpackagedApplicationData.h" - namespace winrt::Microsoft::Windows::Storage::implementation { struct ApplicationData : ApplicationDataT @@ -14,7 +12,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation ApplicationData() = default; ApplicationData(hstring const& packageFamilyName); ApplicationData(winrt::Windows::Storage::ApplicationData& value, hstring const& packageFamilyName); - ApplicationData(hstring const& publisher, hstring const& product); static winrt::Microsoft::Windows::Storage::ApplicationData GetDefault(); static winrt::Microsoft::Windows::Storage::ApplicationData GetForUser(winrt::Windows::System::User user); @@ -47,7 +44,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation static void _VerifyProduct(winrt::hstring const& string); private: - std::unique_ptr<::Microsoft::Windows::Storage::UnpackagedApplicationData> m_unpackagedApplicationData; winrt::Windows::Storage::ApplicationData m_applicationData; winrt::hstring m_packageFamilyName; }; diff --git a/dev/ApplicationData/M.W.S.ApplicationDataContainer.cpp b/dev/ApplicationData/M.W.S.ApplicationDataContainer.cpp index 048f144cc3..b5181a619f 100644 --- a/dev/ApplicationData/M.W.S.ApplicationDataContainer.cpp +++ b/dev/ApplicationData/M.W.S.ApplicationDataContainer.cpp @@ -6,26 +6,14 @@ #include "M.W.S.ApplicationDataContainer.h" #include "Microsoft.Windows.Storage.ApplicationDataContainer.g.cpp" -#include "UnpackagedApplicationDataContainer.h" - namespace winrt::Microsoft::Windows::Storage::implementation { ApplicationDataContainer::ApplicationDataContainer(winrt::Windows::Storage::ApplicationDataContainer const& value) : m_applicationDataContainer(value) { } - ApplicationDataContainer::ApplicationDataContainer(std::shared_ptr<::Microsoft::Windows::Storage::UnpackagedApplicationDataContainer> const& value) : - m_unpackagedApplicationDataContainer(value), - m_applicationDataContainer(nullptr) - { - } winrt::Windows::Foundation::Collections::IMap ApplicationDataContainer::Containers() { - if (m_unpackagedApplicationDataContainer) - { - return m_unpackagedApplicationDataContainer->Containers(); - } - winrt::Windows::Foundation::Collections::IMap map{ winrt::single_threaded_map() }; auto containers{ m_applicationDataContainer.Containers() }; for (auto container : containers) @@ -37,20 +25,10 @@ namespace winrt::Microsoft::Windows::Storage::implementation } hstring ApplicationDataContainer::Name() { - if (m_unpackagedApplicationDataContainer) - { - return m_unpackagedApplicationDataContainer->Name(); - } - return m_applicationDataContainer.Name(); } winrt::Microsoft::Windows::Storage::ApplicationDataLocality ApplicationDataContainer::Locality() { - if (m_unpackagedApplicationDataContainer) - { - return m_unpackagedApplicationDataContainer->Locality(); - } - static_assert(static_cast(winrt::Microsoft::Windows::Storage::ApplicationDataLocality::Local) == static_cast(winrt::Windows::Storage::ApplicationDataLocality::Local)); static_assert(static_cast(winrt::Microsoft::Windows::Storage::ApplicationDataLocality::LocalCache) == static_cast(winrt::Windows::Storage::ApplicationDataLocality::LocalCache)); static_assert(static_cast(winrt::Microsoft::Windows::Storage::ApplicationDataLocality::Temporary) == static_cast(winrt::Windows::Storage::ApplicationDataLocality::Temporary)); @@ -59,29 +37,14 @@ namespace winrt::Microsoft::Windows::Storage::implementation } winrt::Windows::Foundation::Collections::IPropertySet ApplicationDataContainer::Values() { - if (m_unpackagedApplicationDataContainer) - { - return m_unpackagedApplicationDataContainer->Values(); - } - return m_applicationDataContainer.Values(); } void ApplicationDataContainer::Close() { - if (m_unpackagedApplicationDataContainer) - { - return m_unpackagedApplicationDataContainer->Close(); - } - return m_applicationDataContainer.Close(); } winrt::Microsoft::Windows::Storage::ApplicationDataContainer ApplicationDataContainer::CreateContainer(hstring const& name, winrt::Microsoft::Windows::Storage::ApplicationDataCreateDisposition const& disposition) { - if (m_unpackagedApplicationDataContainer) - { - return m_unpackagedApplicationDataContainer->CreateContainer(name, disposition); - } - static_assert(static_cast(winrt::Microsoft::Windows::Storage::ApplicationDataCreateDisposition::Always) == static_cast(winrt::Windows::Storage::ApplicationDataCreateDisposition::Always)); static_assert(static_cast(winrt::Microsoft::Windows::Storage::ApplicationDataCreateDisposition::Existing) == static_cast(winrt::Windows::Storage::ApplicationDataCreateDisposition::Existing)); @@ -90,11 +53,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } void ApplicationDataContainer::DeleteContainer(hstring const& name) { - if (m_unpackagedApplicationDataContainer) - { - return m_unpackagedApplicationDataContainer->DeleteContainer(name); - } - m_applicationDataContainer.DeleteContainer(name); } } diff --git a/dev/ApplicationData/M.W.S.ApplicationDataContainer.h b/dev/ApplicationData/M.W.S.ApplicationDataContainer.h index c22bcce957..cb96cb97af 100644 --- a/dev/ApplicationData/M.W.S.ApplicationDataContainer.h +++ b/dev/ApplicationData/M.W.S.ApplicationDataContainer.h @@ -5,18 +5,12 @@ #include "Microsoft.Windows.Storage.ApplicationDataContainer.g.h" -namespace Microsoft::Windows::Storage -{ - struct UnpackagedApplicationDataContainer; -} - namespace winrt::Microsoft::Windows::Storage::implementation { struct ApplicationDataContainer : ApplicationDataContainerT { ApplicationDataContainer() = default; ApplicationDataContainer(winrt::Windows::Storage::ApplicationDataContainer const& value); - ApplicationDataContainer(std::shared_ptr<::Microsoft::Windows::Storage::UnpackagedApplicationDataContainer> const& value); winrt::Windows::Foundation::Collections::IMap Containers(); hstring Name(); @@ -27,7 +21,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation void DeleteContainer(hstring const& name); private: - std::shared_ptr<::Microsoft::Windows::Storage::UnpackagedApplicationDataContainer> m_unpackagedApplicationDataContainer; winrt::Windows::Storage::ApplicationDataContainer m_applicationDataContainer; }; } diff --git a/dev/ApplicationData/UnpackagedApplicationData.cpp b/dev/ApplicationData/UnpackagedApplicationData.cpp index e1d3ba000f..6e52859368 100644 --- a/dev/ApplicationData/UnpackagedApplicationData.cpp +++ b/dev/ApplicationData/UnpackagedApplicationData.cpp @@ -12,7 +12,7 @@ #include "ApplicationDataTelemetry.h" -namespace Microsoft::Windows::Storage +namespace winrt::Microsoft::Windows::Storage::implementation { UnpackagedApplicationData::UnpackagedApplicationData(winrt::hstring const& publisher, winrt::hstring const& product) : m_publisher(publisher), @@ -21,6 +21,23 @@ namespace Microsoft::Windows::Storage m_temporaryPath() { } + winrt::Microsoft::Windows::Storage::ApplicationData UnpackagedApplicationData::GetDefault() + { + // Statics are dispatched via the factory to ApplicationData, not here + throw winrt::hresult_not_implemented(); + } + winrt::Microsoft::Windows::Storage::ApplicationData UnpackagedApplicationData::GetForUser(winrt::Windows::System::User /*user*/) + { + throw winrt::hresult_not_implemented(); + } + winrt::Microsoft::Windows::Storage::ApplicationData UnpackagedApplicationData::GetForPackageFamily(winrt::hstring const& /*packageFamilyName*/) + { + throw winrt::hresult_not_implemented(); + } + winrt::Microsoft::Windows::Storage::ApplicationData UnpackagedApplicationData::GetForUnpackaged(winrt::hstring const& /*publisher*/, winrt::hstring const& /*product*/) + { + throw winrt::hresult_not_implemented(); + } bool UnpackagedApplicationData::IsMachinePathSupported() { _VerifyNotClosed(); @@ -153,9 +170,8 @@ namespace Microsoft::Windows::Storage THROW_IF_WIN32_ERROR(::RegOpenCurrentUser(KEY_READ | KEY_WRITE, currentUserKey.put())); auto subKey{ std::format(L"SOFTWARE\\{}\\{}", m_publisher, m_product) }; auto key{ wil::reg::create_shared_key(currentUserKey.get(), subKey.c_str(), wil::reg::key_access::readwrite) }; - auto container{ std::make_shared( - std::move(key), winrt::hstring{}, winrt::Microsoft::Windows::Storage::ApplicationDataLocality::Local) }; - return winrt::make(container); + return winrt::make( + std::move(key), winrt::hstring{}, winrt::Microsoft::Windows::Storage::ApplicationDataLocality::Local); } winrt::Windows::Foundation::IAsyncAction UnpackagedApplicationData::ClearAsync(winrt::Microsoft::Windows::Storage::ApplicationDataLocality locality) { @@ -219,7 +235,7 @@ namespace Microsoft::Windows::Storage co_return; } - winrt::Windows::Foundation::IAsyncAction UnpackagedApplicationData::ClearPublisherCacheFolderAsync(winrt::hstring folderName) + winrt::Windows::Foundation::IAsyncAction UnpackagedApplicationData::ClearPublisherCacheFolderAsync(winrt::hstring /*folderName*/) { _VerifyNotClosed(); @@ -233,14 +249,14 @@ namespace Microsoft::Windows::Storage m_localPath.clear(); m_temporaryPath.clear(); } - winrt::hstring UnpackagedApplicationData::GetPublisherCachePath(winrt::hstring const& folderName) + winrt::hstring UnpackagedApplicationData::GetPublisherCachePath(winrt::hstring const& /*folderName*/) { _VerifyNotClosed(); // ApplicationData.PublisherCacheFolder has no unpackaged equivalent throw winrt::hresult_not_implemented(); } - winrt::Windows::Storage::StorageFolder UnpackagedApplicationData::GetPublisherCacheFolder(winrt::hstring const& folderName) + winrt::Windows::Storage::StorageFolder UnpackagedApplicationData::GetPublisherCacheFolder(winrt::hstring const& /*folderName*/) { _VerifyNotClosed(); diff --git a/dev/ApplicationData/UnpackagedApplicationData.h b/dev/ApplicationData/UnpackagedApplicationData.h index 4424cde99d..7a32388852 100644 --- a/dev/ApplicationData/UnpackagedApplicationData.h +++ b/dev/ApplicationData/UnpackagedApplicationData.h @@ -3,15 +3,19 @@ #pragma once -#include "M.W.S.ApplicationDataContainer.h" +#include "Microsoft.Windows.Storage.ApplicationData.g.h" -namespace Microsoft::Windows::Storage +namespace winrt::Microsoft::Windows::Storage::implementation { - struct UnpackagedApplicationData + struct UnpackagedApplicationData : ApplicationDataT { UnpackagedApplicationData() = default; UnpackagedApplicationData(winrt::hstring const& publisher, winrt::hstring const& product); + static winrt::Microsoft::Windows::Storage::ApplicationData GetDefault(); + static winrt::Microsoft::Windows::Storage::ApplicationData GetForUser(winrt::Windows::System::User user); + static winrt::Microsoft::Windows::Storage::ApplicationData GetForPackageFamily(winrt::hstring const& packageFamilyName); + static winrt::Microsoft::Windows::Storage::ApplicationData GetForUnpackaged(winrt::hstring const& publisher, winrt::hstring const& product); bool IsMachinePathSupported(); winrt::hstring LocalCachePath(); winrt::hstring LocalPath(); diff --git a/dev/ApplicationData/UnpackagedApplicationDataContainer.cpp b/dev/ApplicationData/UnpackagedApplicationDataContainer.cpp index ce81b681eb..ee350a7941 100644 --- a/dev/ApplicationData/UnpackagedApplicationDataContainer.cpp +++ b/dev/ApplicationData/UnpackagedApplicationDataContainer.cpp @@ -7,7 +7,7 @@ #include "Validate.h" -namespace Microsoft::Windows::Storage +namespace winrt::Microsoft::Windows::Storage::implementation { namespace { @@ -835,9 +835,8 @@ namespace Microsoft::Windows::Storage for (const auto& keyData : wil::make_range(wil::reg::key_iterator{ m_key.get() }, wil::reg::key_iterator{})) { auto subKey{ wil::reg::open_shared_key(m_key.get(), keyData.name.c_str(), wil::reg::key_access::readwrite) }; - auto subContainer{ std::make_shared(std::move(subKey), winrt::hstring{ keyData.name }, m_locality) }; - auto wrappedContainer{ winrt::make(subContainer) }; - map.Insert(winrt::hstring{ keyData.name }, wrappedContainer); + auto subContainer{ winrt::make(std::move(subKey), winrt::hstring{ keyData.name }, m_locality) }; + map.Insert(winrt::hstring{ keyData.name }, subContainer); } return map; } @@ -879,14 +878,12 @@ namespace Microsoft::Windows::Storage if (disposition == winrt::Microsoft::Windows::Storage::ApplicationDataCreateDisposition::Existing) { auto subKey{ wil::reg::open_shared_key(m_key.get(), name.c_str(), wil::reg::key_access::readwrite) }; - auto subContainer{ std::make_shared(std::move(subKey), name, m_locality) }; - return winrt::make(subContainer); + return winrt::make(std::move(subKey), name, m_locality); } else { auto subKey{ wil::reg::create_shared_key(m_key.get(), name.c_str(), wil::reg::key_access::readwrite) }; - auto subContainer{ std::make_shared(std::move(subKey), name, m_locality) }; - return winrt::make(subContainer); + return winrt::make(std::move(subKey), name, m_locality); } } diff --git a/dev/ApplicationData/UnpackagedApplicationDataContainer.h b/dev/ApplicationData/UnpackagedApplicationDataContainer.h index b6e660da9a..f95e85357b 100644 --- a/dev/ApplicationData/UnpackagedApplicationDataContainer.h +++ b/dev/ApplicationData/UnpackagedApplicationDataContainer.h @@ -3,11 +3,11 @@ #pragma once -#include "M.W.S.ApplicationDataContainer.h" +#include "Microsoft.Windows.Storage.ApplicationDataContainer.g.h" -namespace Microsoft::Windows::Storage +namespace winrt::Microsoft::Windows::Storage::implementation { - struct UnpackagedApplicationDataContainer + struct UnpackagedApplicationDataContainer : ApplicationDataContainerT { UnpackagedApplicationDataContainer() = default; UnpackagedApplicationDataContainer(wil::shared_hkey key, winrt::hstring const& name, winrt::Microsoft::Windows::Storage::ApplicationDataLocality locality);