diff options
author | Arne Morten Kvarving <spiff@kodi.tv> | 2024-05-12 08:13:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-12 08:13:40 +0200 |
commit | a43c9b90b7f8a8b3be4221e33047bcdb653426bd (patch) | |
tree | 461dc4cfcd6d6df63272458dfd5a0157d519d0f9 | |
parent | 5f8d504054d9081e527febe4d7a3e163acf61a3f (diff) | |
parent | 9941c6cff75f13cfd0d28566e13980a6e701a79e (diff) | |
download | xbmc-a43c9b90b7f8a8b3be4221e33047bcdb653426bd.tar.xz |
Merge pull request #25185 from notspiff/simplify_network_fileitem_classifiers
Simplify network FileItem classifiers
-rw-r--r-- | xbmc/network/NetworkFileItemClassify.cpp | 14 | ||||
-rw-r--r-- | xbmc/network/NetworkFileItemClassify.h | 2 | ||||
-rw-r--r-- | xbmc/network/test/TestNetworkFileItemClassify.cpp | 183 |
3 files changed, 60 insertions, 139 deletions
diff --git a/xbmc/network/NetworkFileItemClassify.cpp b/xbmc/network/NetworkFileItemClassify.cpp index ed4bd77be6..ef27892c93 100644 --- a/xbmc/network/NetworkFileItemClassify.cpp +++ b/xbmc/network/NetworkFileItemClassify.cpp @@ -14,15 +14,12 @@ namespace KODI::NETWORK { -bool IsInternetStream(const CFileItem& item, const bool bStrictCheck /* = false */) +bool IsInternetStream(const CFileItem& item) { if (item.HasProperty("IsHTTPDirectory")) - return bStrictCheck; + return false; - if (!item.GetDynPath().empty()) - return URIUtils::IsInternetStream(item.GetDynPath(), bStrictCheck); - - return URIUtils::IsInternetStream(item.GetPath(), bStrictCheck); + return URIUtils::IsInternetStream(item.GetDynPath()); } bool IsRemote(const CFileItem& item) @@ -32,10 +29,7 @@ bool IsRemote(const CFileItem& item) bool IsStreamedFilesystem(const CFileItem& item) { - if (!item.GetDynPath().empty()) - return URIUtils::IsStreamedFilesystem(item.GetDynPath()); - - return URIUtils::IsStreamedFilesystem(item.GetPath()); + return URIUtils::IsStreamedFilesystem(item.GetDynPath()); } } // namespace KODI::NETWORK diff --git a/xbmc/network/NetworkFileItemClassify.h b/xbmc/network/NetworkFileItemClassify.h index 5a96a98253..dc309e0145 100644 --- a/xbmc/network/NetworkFileItemClassify.h +++ b/xbmc/network/NetworkFileItemClassify.h @@ -14,7 +14,7 @@ namespace KODI::NETWORK { //! \brief Check whether an item is a an internet stream. -bool IsInternetStream(const CFileItem& item, const bool bStrictCheck = false); +bool IsInternetStream(const CFileItem& item); //! \brief Check whether an item is on a remote location. bool IsRemote(const CFileItem& item); diff --git a/xbmc/network/test/TestNetworkFileItemClassify.cpp b/xbmc/network/test/TestNetworkFileItemClassify.cpp index 13dbd44c72..9cd99615b1 100644 --- a/xbmc/network/test/TestNetworkFileItemClassify.cpp +++ b/xbmc/network/test/TestNetworkFileItemClassify.cpp @@ -33,120 +33,58 @@ struct SimpleDefinition } // namespace -struct InternetStreamDefinition -{ - InternetStreamDefinition(const std::string& path, bool folder, bool strict, bool res) - : item(path, folder), strictCheck(strict), result(res) - { - } - - CFileItem item; - bool strictCheck; - bool result; -}; - -class InternetStreamTest : public testing::WithParamInterface<InternetStreamDefinition>, +class InternetStreamTest : public testing::WithParamInterface<SimpleDefinition>, public testing::Test { }; TEST_P(InternetStreamTest, IsInternetStream) { - EXPECT_EQ(NETWORK::IsInternetStream(GetParam().item, GetParam().strictCheck), GetParam().result); + EXPECT_EQ(NETWORK::IsInternetStream(GetParam().item), GetParam().result); } const auto inetstream_tests = std::array{ - InternetStreamDefinition{"/home/user/test.disc", false, false, false}, - InternetStreamDefinition{"/home/user/test.disc", true, true, false}, - InternetStreamDefinition{"http://some.where/foo", false, false, true}, - InternetStreamDefinition{"http://some.where/foo", false, true, true}, - InternetStreamDefinition{"http://some.where/foo", true, false, true}, - InternetStreamDefinition{"http://some.where/foo", true, true, true}, - InternetStreamDefinition{"https://some.where/foo", false, false, true}, - InternetStreamDefinition{"https://some.where/foo", false, true, true}, - InternetStreamDefinition{"https://some.where/foo", true, false, true}, - InternetStreamDefinition{"https://some.where/foo", true, true, true}, - InternetStreamDefinition{"tcp://some.where/foo", false, false, true}, - InternetStreamDefinition{"tcp://some.where/foo", false, true, true}, - InternetStreamDefinition{"tcp://some.where/foo", true, false, true}, - InternetStreamDefinition{"tcp://some.where/foo", true, true, true}, - InternetStreamDefinition{"udp://some.where/foo", false, false, true}, - InternetStreamDefinition{"udp://some.where/foo", false, true, true}, - InternetStreamDefinition{"udp://some.where/foo", true, false, true}, - InternetStreamDefinition{"udp://some.where/foo", true, true, true}, - InternetStreamDefinition{"rtp://some.where/foo", false, false, true}, - InternetStreamDefinition{"rtp://some.where/foo", false, false, true}, - InternetStreamDefinition{"rtp://some.where/foo", true, false, true}, - InternetStreamDefinition{"rtp://some.where/foo", true, true, true}, - InternetStreamDefinition{"sdp://some.where/foo", false, false, true}, - InternetStreamDefinition{"sdp://some.where/foo", false, true, true}, - InternetStreamDefinition{"sdp://some.where/foo", true, false, true}, - InternetStreamDefinition{"sdp://some.where/foo", true, true, true}, - InternetStreamDefinition{"mms://some.where/foo", false, false, true}, - InternetStreamDefinition{"mms://some.where/foo", false, true, true}, - InternetStreamDefinition{"mms://some.where/foo", true, false, true}, - InternetStreamDefinition{"mms://some.where/foo", true, true, true}, - InternetStreamDefinition{"mmst://some.where/foo", false, false, true}, - InternetStreamDefinition{"mmst://some.where/foo", false, true, true}, - InternetStreamDefinition{"mmst://some.where/foo", true, false, true}, - InternetStreamDefinition{"mmst://some.where/foo", true, true, true}, - InternetStreamDefinition{"mmsh://some.where/foo", false, false, true}, - InternetStreamDefinition{"mmsh://some.where/foo", false, true, true}, - InternetStreamDefinition{"mmsh://some.where/foo", true, false, true}, - InternetStreamDefinition{"mmsh://some.where/foo", true, true, true}, - InternetStreamDefinition{"rtsp://some.where/foo", false, false, true}, - InternetStreamDefinition{"rtsp://some.where/foo", false, true, true}, - InternetStreamDefinition{"rtsp://some.where/foo", true, false, true}, - InternetStreamDefinition{"rtsp://some.where/foo", true, true, true}, - InternetStreamDefinition{"rtmp://some.where/foo", false, false, true}, - InternetStreamDefinition{"rtmp://some.where/foo", false, true, true}, - InternetStreamDefinition{"rtmp://some.where/foo", true, false, true}, - InternetStreamDefinition{"rtmp://some.where/foo", true, true, true}, - InternetStreamDefinition{"rtmpt://some.where/foo", false, false, true}, - InternetStreamDefinition{"rtmpt://some.where/foo", false, true, true}, - InternetStreamDefinition{"rtmpt://some.where/foo", true, false, true}, - InternetStreamDefinition{"rtmpt://some.where/foo", true, true, true}, - InternetStreamDefinition{"rtmpe://some.where/foo", false, false, true}, - InternetStreamDefinition{"rtmpe://some.where/foo", false, true, true}, - InternetStreamDefinition{"rtmpe://some.where/foo", true, false, true}, - InternetStreamDefinition{"rtmpe://some.where/foo", true, true, true}, - InternetStreamDefinition{"rtmpte://some.where/foo", false, false, true}, - InternetStreamDefinition{"rtmpte://some.where/foo", false, true, true}, - InternetStreamDefinition{"rtmpte://some.where/foo", true, false, true}, - InternetStreamDefinition{"rtmpte://some.where/foo", true, true, true}, - InternetStreamDefinition{"rtmps://some.where/foo", false, false, true}, - InternetStreamDefinition{"rtmps://some.where/foo", false, true, true}, - InternetStreamDefinition{"rtmps://some.where/foo", true, false, true}, - InternetStreamDefinition{"rtmps://some.where/foo", true, true, true}, - InternetStreamDefinition{"shout://some.where/foo", false, false, true}, - InternetStreamDefinition{"shout://some.where/foo", false, true, true}, - InternetStreamDefinition{"shout://some.where/foo", true, false, true}, - InternetStreamDefinition{"shout://some.where/foo", true, true, true}, - InternetStreamDefinition{"rss://some.where/foo", false, false, true}, - InternetStreamDefinition{"rss://some.where/foo", false, true, true}, - InternetStreamDefinition{"rss://some.where/foo", true, false, true}, - InternetStreamDefinition{"rss://some.where/foo", true, true, true}, - InternetStreamDefinition{"rsss://some.where/foo", false, false, true}, - InternetStreamDefinition{"rsss://some.where/foo", false, true, true}, - InternetStreamDefinition{"rsss://some.where/foo", true, false, true}, - InternetStreamDefinition{"rsss://some.where/foo", true, true, true}, - InternetStreamDefinition{"upnp://some.where/foo", false, false, false}, - InternetStreamDefinition{"upnp://some.where/foo", true, false, false}, - InternetStreamDefinition{"upnp://some.where/foo", false, true, true}, - InternetStreamDefinition{"upnp://some.where/foo", true, true, true}, - InternetStreamDefinition{"ftp://some.where/foo", false, false, false}, - InternetStreamDefinition{"ftp://some.where/foo", true, false, false}, - InternetStreamDefinition{"ftp://some.where/foo", false, true, true}, - InternetStreamDefinition{"ftp://some.where/foo", true, true, true}, - InternetStreamDefinition{"sftp://some.where/foo", false, false, false}, - InternetStreamDefinition{"sftp://some.where/foo", true, false, false}, - InternetStreamDefinition{"sftp://some.where/foo", false, true, true}, - InternetStreamDefinition{"sftp://some.where/foo", true, true, true}, - InternetStreamDefinition{"ssh://some.where/foo", false, false, false}, - InternetStreamDefinition{"ssh://some.where/foo", true, false, false}, - InternetStreamDefinition{"ssh://some.where/foo", false, true, true}, - InternetStreamDefinition{"ssh://some.where/foo", true, true, true}, - InternetStreamDefinition{"ssh://some.where/foo", true, true, true}, + SimpleDefinition{"/home/user/test.disc", false, false}, + SimpleDefinition{"http://some.where/foo", false, true}, + SimpleDefinition{"http://some.where/foo", true, true}, + SimpleDefinition{"https://some.where/foo", false, true}, + SimpleDefinition{"https://some.where/foo", true, true}, + SimpleDefinition{"tcp://some.where/foo", false, true}, + SimpleDefinition{"tcp://some.where/foo", true, true}, + SimpleDefinition{"udp://some.where/foo", false, true}, + SimpleDefinition{"udp://some.where/foo", true, true}, + SimpleDefinition{"rtp://some.where/foo", false, true}, + SimpleDefinition{"rtp://some.where/foo", true, true}, + SimpleDefinition{"sdp://some.where/foo", false, true}, + SimpleDefinition{"sdp://some.where/foo", true, true}, + SimpleDefinition{"mms://some.where/foo", false, true}, + SimpleDefinition{"mms://some.where/foo", true, true}, + SimpleDefinition{"mmst://some.where/foo", false, true}, + SimpleDefinition{"mmst://some.where/foo", true, true}, + SimpleDefinition{"mmsh://some.where/foo", false, true}, + SimpleDefinition{"mmsh://some.where/foo", true, true}, + SimpleDefinition{"rtsp://some.where/foo", false, true}, + SimpleDefinition{"rtsp://some.where/foo", true, true}, + SimpleDefinition{"rtmp://some.where/foo", false, true}, + SimpleDefinition{"rtmp://some.where/foo", true, true}, + SimpleDefinition{"rtmpt://some.where/foo", false, true}, + SimpleDefinition{"rtmpt://some.where/foo", true, true}, + SimpleDefinition{"rtmpe://some.where/foo", false, true}, + SimpleDefinition{"rtmpe://some.where/foo", true, true}, + SimpleDefinition{"rtmpte://some.where/foo", false, true}, + SimpleDefinition{"rtmpte://some.where/foo", true, true}, + SimpleDefinition{"rtmps://some.where/foo", false, true}, + SimpleDefinition{"rtmps://some.where/foo", true, true}, + SimpleDefinition{"shout://some.where/foo", false, true}, + SimpleDefinition{"shout://some.where/foo", true, true}, + SimpleDefinition{"rss://some.where/foo", false, true}, + SimpleDefinition{"rss://some.where/foo", true, true}, + SimpleDefinition{"rsss://some.where/foo", false, true}, + SimpleDefinition{"rsss://some.where/foo", true, true}, + SimpleDefinition{"upnp://some.where/foo", false, false}, + SimpleDefinition{"ftp://some.where/foo", false, false}, + SimpleDefinition{"sftp://some.where/foo", false, false}, + SimpleDefinition{"ssh://some.where/foo", false, false}, }; INSTANTIATE_TEST_SUITE_P(TestNetworkFileItemClassify, @@ -158,38 +96,27 @@ TEST(TestNetworkWorkFileItemClassify, InternetStreamStacks) std::string stackPath; EXPECT_TRUE(XFILE::CStackDirectory::ConstructStackPath( {"/home/foo/somthing.avi", "/home/bar/else.mkv"}, stackPath)); - EXPECT_FALSE(NETWORK::IsInternetStream(CFileItem(stackPath, false), false)); - EXPECT_FALSE(NETWORK::IsInternetStream(CFileItem(stackPath, true), false)); - EXPECT_FALSE(NETWORK::IsInternetStream(CFileItem(stackPath, false), true)); - EXPECT_FALSE(NETWORK::IsInternetStream(CFileItem(stackPath, true), true)); + EXPECT_FALSE(NETWORK::IsInternetStream(CFileItem(stackPath, false))); + EXPECT_FALSE(NETWORK::IsInternetStream(CFileItem(stackPath, true))); EXPECT_TRUE(XFILE::CStackDirectory::ConstructStackPath( {"https://home/foo/somthing.avi", "https://home/bar/else.mkv"}, stackPath)); - EXPECT_TRUE(NETWORK::IsInternetStream(CFileItem(stackPath, false), false)); - EXPECT_TRUE(NETWORK::IsInternetStream(CFileItem(stackPath, true), false)); - EXPECT_TRUE(NETWORK::IsInternetStream(CFileItem(stackPath, false), true)); - EXPECT_TRUE(NETWORK::IsInternetStream(CFileItem(stackPath, true), true)); + EXPECT_TRUE(NETWORK::IsInternetStream(CFileItem(stackPath, false))); + EXPECT_TRUE(NETWORK::IsInternetStream(CFileItem(stackPath, true))); EXPECT_TRUE(XFILE::CStackDirectory::ConstructStackPath( {"ftp://home/foo/somthing.avi", "ftp://home/bar/else.mkv"}, stackPath)); - EXPECT_FALSE(NETWORK::IsInternetStream(CFileItem(stackPath, false), false)); - EXPECT_FALSE(NETWORK::IsInternetStream(CFileItem(stackPath, true), false)); - EXPECT_TRUE(NETWORK::IsInternetStream(CFileItem(stackPath, false), true)); - EXPECT_TRUE(NETWORK::IsInternetStream(CFileItem(stackPath, true), true)); - - EXPECT_TRUE(XFILE::CStackDirectory::ConstructStackPath( - {"ftp://home/foo/somthing.avi", "/home/bar/else.mkv"}, stackPath)); - EXPECT_FALSE(NETWORK::IsInternetStream(CFileItem(stackPath, false), false)); - EXPECT_FALSE(NETWORK::IsInternetStream(CFileItem(stackPath, true), false)); - EXPECT_TRUE(NETWORK::IsInternetStream(CFileItem(stackPath, false), true)); - EXPECT_TRUE(NETWORK::IsInternetStream(CFileItem(stackPath, true), true)); + EXPECT_FALSE(NETWORK::IsInternetStream(CFileItem(stackPath, false))); + EXPECT_FALSE(NETWORK::IsInternetStream(CFileItem(stackPath, true))); EXPECT_TRUE(XFILE::CStackDirectory::ConstructStackPath( {"/home/foo/somthing.avi", "ftp://home/bar/else.mkv"}, stackPath)); - EXPECT_FALSE(NETWORK::IsInternetStream(CFileItem(stackPath, false), false)); - EXPECT_FALSE(NETWORK::IsInternetStream(CFileItem(stackPath, true), false)); - EXPECT_FALSE(NETWORK::IsInternetStream(CFileItem(stackPath, false), true)); - EXPECT_FALSE(NETWORK::IsInternetStream(CFileItem(stackPath, true), true)); + EXPECT_FALSE(NETWORK::IsInternetStream(CFileItem(stackPath, false))); + EXPECT_FALSE(NETWORK::IsInternetStream(CFileItem(stackPath, true))); + + CFileItem item("https://some.where/", true); + item.SetProperty("IsHTTPDirectory", true); + EXPECT_FALSE(NETWORK::IsInternetStream(item)); } class RemoteTest : public testing::WithParamInterface<SimpleDefinition>, public testing::Test |