mirror of https://github.com/aseprite/aseprite.git
				
				
				
			Keep last update information so we can show it again (fix #639)
Now the last update information retrieved from the HTTP request, is saved in the configuration file so we can reuse it when the program is restarted. Changes: * Add support to compare two semvers * Add new_version/new_url options to preferences * Remove convert_to for base::Version (now this class is constructed from strings only)
This commit is contained in:
		
							parent
							
								
									7e52e6d882
								
							
						
					
					
						commit
						c63ccf914f
					
				|  | @ -95,6 +95,8 @@ | |||
|       <option id="wait_days" type="double" default="0.0" migrate="Updater.WaitDays" /> | ||||
|       <option id="last_check" type="int" default="0" migrate="Updater.LastCheck" /> | ||||
|       <option id="uuid" type="std::string" migrate="Updater.Uuid" /> | ||||
|       <option id="new_version" type="std::string" /> | ||||
|       <option id="new_url" type="std::string" /> | ||||
|     </section> | ||||
|   </global> | ||||
| 
 | ||||
|  |  | |||
|  | @ -18,6 +18,7 @@ | |||
| #include "base/bind.h" | ||||
| #include "base/convert_to.h" | ||||
| #include "base/launcher.h" | ||||
| #include "base/version.h" | ||||
| 
 | ||||
| #include <ctime> | ||||
| #include <sstream> | ||||
|  | @ -130,8 +131,10 @@ void CheckUpdateThreadLauncher::launch() | |||
| { | ||||
|   // In this case we are in the "wait days" period, so we don't check
 | ||||
|   // for updates.
 | ||||
|   if (!m_doCheck) | ||||
|   if (!m_doCheck) { | ||||
|     showUI(); | ||||
|     return; | ||||
|   } | ||||
| 
 | ||||
|   if (m_uuid.empty()) | ||||
|     m_uuid = m_preferences.updater.uuid(); | ||||
|  | @ -163,17 +166,20 @@ void CheckUpdateThreadLauncher::onMonitoringTick() | |||
|   switch (m_response.getUpdateType()) { | ||||
| 
 | ||||
|     case updater::CheckUpdateResponse::NoUpdate: | ||||
|       m_delegate->onUpToDate(); | ||||
|       // Clear
 | ||||
|       m_preferences.updater.newVersion(""); | ||||
|       m_preferences.updater.newUrl(""); | ||||
|       break; | ||||
| 
 | ||||
|     case updater::CheckUpdateResponse::Critical: | ||||
|     case updater::CheckUpdateResponse::Major: | ||||
|       m_delegate->onNewUpdate( | ||||
|         m_response.getUrl(), | ||||
|         base::convert_to<std::string>(m_response.getLatestVersion())); | ||||
|       m_preferences.updater.newVersion(m_response.getLatestVersion()); | ||||
|       m_preferences.updater.newUrl(m_response.getUrl()); | ||||
|       break; | ||||
|   } | ||||
| 
 | ||||
|   showUI(); | ||||
| 
 | ||||
|   // Save the new UUID
 | ||||
|   if (!m_response.getUuid().empty()) { | ||||
|     m_uuid = m_response.getUuid(); | ||||
|  | @ -211,6 +217,25 @@ void CheckUpdateThreadLauncher::checkForUpdates() | |||
|   } | ||||
| } | ||||
| 
 | ||||
| void CheckUpdateThreadLauncher::showUI() | ||||
| { | ||||
|   bool newVer = false; | ||||
| 
 | ||||
|   if (!m_preferences.updater.newVersion().empty()) { | ||||
|     base::Version serverVersion(m_preferences.updater.newVersion()); | ||||
|     base::Version localVersion(VERSION); | ||||
|     newVer = (localVersion < serverVersion); | ||||
|   } | ||||
| 
 | ||||
|   if (newVer) { | ||||
|     m_delegate->onNewUpdate(m_preferences.updater.newUrl(), | ||||
|                             m_preferences.updater.newVersion()); | ||||
|   } | ||||
|   else { | ||||
|     m_delegate->onUpToDate(); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| #endif // ENABLE_UPDATER
 | ||||
|  |  | |||
|  | @ -39,6 +39,7 @@ namespace app { | |||
|   private: | ||||
|     void onMonitoringTick(); | ||||
|     void checkForUpdates(); | ||||
|     void showUI(); | ||||
| 
 | ||||
|     CheckUpdateDelegate* m_delegate; | ||||
|     Preferences& m_preferences; | ||||
|  |  | |||
|  | @ -10,7 +10,6 @@ | |||
| 
 | ||||
| #include "base/convert_to.h" | ||||
| #include "base/sha1.h" | ||||
| #include "base/version.h" | ||||
| #include <cstdio> | ||||
| #include <cstdlib> | ||||
| 
 | ||||
|  | @ -80,33 +79,4 @@ template<> std::string convert_to(const Sha1& from) | |||
|   return res; | ||||
| } | ||||
| 
 | ||||
| template<> Version convert_to(const std::string& from) | ||||
| { | ||||
|   Version result; | ||||
|   std::string::size_type i = 0; | ||||
|   std::string::size_type j = 0; | ||||
|   while (j != std::string::npos) { | ||||
|     j = from.find('.', i); | ||||
|     std::string digitString = from.substr(i, j - i); | ||||
|     int digit = convert_to<int>(digitString); | ||||
|     result.addDigit(digit); | ||||
|     i = j+1; | ||||
|   } | ||||
|   return result; | ||||
| } | ||||
| 
 | ||||
| template<> std::string convert_to(const Version& from) | ||||
| { | ||||
|   std::string result; | ||||
|   result.reserve(3*from.size()); | ||||
| 
 | ||||
|   for (size_t i=0; i<from.size(); ++i) { | ||||
|     result += convert_to<std::string>(from[i]); | ||||
|     if (i < from.size()-1) | ||||
|       result += "."; | ||||
|   } | ||||
| 
 | ||||
|   return result; | ||||
| } | ||||
| 
 | ||||
| } // namespace base
 | ||||
|  |  | |||
|  | @ -14,7 +14,6 @@ | |||
| namespace base { | ||||
| 
 | ||||
|   class Sha1; | ||||
|   class Version; | ||||
| 
 | ||||
|   // Undefined convertion
 | ||||
|   template<typename To, typename From> | ||||
|  | @ -34,9 +33,6 @@ namespace base { | |||
|   template<> Sha1 convert_to(const std::string& from); | ||||
|   template<> std::string convert_to(const Sha1& from); | ||||
| 
 | ||||
|   template<> Version convert_to(const std::string& from); | ||||
|   template<> std::string convert_to(const Version& from); | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| // Aseprite Base Library
 | ||||
| // Copyright (c) 2001-2013 David Capello
 | ||||
| // Copyright (c) 2001-2013, 2015 David Capello
 | ||||
| //
 | ||||
| // This file is released under the terms of the MIT license.
 | ||||
| // Read LICENSE.txt for more information.
 | ||||
|  | @ -10,42 +10,49 @@ | |||
| 
 | ||||
| #include "base/version.h" | ||||
| 
 | ||||
| #include "base/convert_to.h" | ||||
| 
 | ||||
| #include <cctype> | ||||
| 
 | ||||
| namespace base { | ||||
| 
 | ||||
| Version::Version() | ||||
| Version::Version(const std::string& from) | ||||
|   : m_prereleaseDigit(0) | ||||
| { | ||||
| } | ||||
|   std::string::size_type i = 0; | ||||
|   std::string::size_type j = 0; | ||||
|   std::string::size_type k = from.find('-', 0); | ||||
| 
 | ||||
| Version::Version(int major, int minor, int rev, int compilation) | ||||
| { | ||||
|   if (major >= 0 || minor >= 0 || rev >= 0 || compilation >= 0) | ||||
|     addDigit(major); | ||||
|   while ((j != std::string::npos) && | ||||
|          (k == std::string::npos || j < k)) { | ||||
|     j = from.find('.', i); | ||||
| 
 | ||||
|   if (minor >= 0 || rev >= 0 || compilation >= 0) | ||||
|     addDigit(minor); | ||||
|     std::string digit; | ||||
|     if (j != std::string::npos) { | ||||
|       digit = from.substr(i, j - i); | ||||
|       i = j+1; | ||||
|     } | ||||
|     else | ||||
|       digit = from.substr(i); | ||||
| 
 | ||||
|   if (rev >= 0 || compilation >= 0) | ||||
|     addDigit(rev); | ||||
| 
 | ||||
|   if (compilation >= 0) | ||||
|     addDigit(compilation); | ||||
| } | ||||
| 
 | ||||
| bool Version::operator==(const Version& other) const | ||||
| { | ||||
|   Digits::const_iterator | ||||
|     it1 = m_digits.begin(), end1 = m_digits.end(), | ||||
|     it2 = other.m_digits.begin(), end2 = other.m_digits.end(); | ||||
| 
 | ||||
|   while (it1 != end1 || it2 != end2) { | ||||
|     int digit1 = (it1 != end1 ? *it1++: 0); | ||||
|     int digit2 = (it2 != end2 ? *it2++: 0); | ||||
| 
 | ||||
|     if (digit1 != digit2) | ||||
|       return false; | ||||
|     m_digits.push_back(convert_to<int>(digit)); | ||||
|   } | ||||
| 
 | ||||
|   return true; | ||||
|   if (k != std::string::npos) { | ||||
|     auto k0 = ++k; | ||||
|     for (; k < from.size() && !std::isdigit(from[k]); ++k) | ||||
|       ; | ||||
|     if (k < from.size()) { | ||||
|       m_prereleaseDigit = convert_to<int>(from.substr(k)); | ||||
|       m_prerelease = from.substr(k0, k - k0); | ||||
|     } | ||||
|     else | ||||
|       m_prerelease = from.substr(k0); | ||||
|   } | ||||
| 
 | ||||
|   while (!m_prerelease.empty() && | ||||
|          m_prerelease[m_prerelease.size()-1] == '.') | ||||
|     m_prerelease.erase(m_prerelease.size()-1); | ||||
| } | ||||
| 
 | ||||
| bool Version::operator<(const Version& other) const | ||||
|  | @ -62,10 +69,42 @@ bool Version::operator<(const Version& other) const | |||
|       return true; | ||||
|     else if (digit1 > digit2) | ||||
|       return false; | ||||
|     // else continue...
 | ||||
|   } | ||||
| 
 | ||||
|   if (m_prerelease.empty()) { | ||||
|     return false; | ||||
|   } | ||||
|   else if (other.m_prerelease.empty()) { | ||||
|     return true; | ||||
|   } | ||||
|   else { | ||||
|     int res = m_prerelease.compare(other.m_prerelease); | ||||
|     if (res < 0) | ||||
|       return true; | ||||
|     else if (res > 0) | ||||
|       return false; | ||||
|     else | ||||
|       return (m_prereleaseDigit < other.m_prereleaseDigit); | ||||
|   } | ||||
| 
 | ||||
|   return false; | ||||
| } | ||||
| 
 | ||||
| std::string Version::str() const | ||||
| { | ||||
|   std::string res; | ||||
|   for (auto digit : m_digits) { | ||||
|     if (!res.empty()) | ||||
|       res.push_back('.'); | ||||
|     res += base::convert_to<std::string>(digit); | ||||
|   } | ||||
|   if (!m_prerelease.empty()) { | ||||
|     res.push_back('-'); | ||||
|     res += m_prerelease; | ||||
|     if (m_prereleaseDigit) | ||||
|       res += base::convert_to<std::string>(m_prereleaseDigit); | ||||
|   } | ||||
|   return res; | ||||
| } | ||||
| 
 | ||||
| } // namespace base
 | ||||
|  |  | |||
|  | @ -11,78 +11,21 @@ | |||
| #include <string> | ||||
| #include <vector> | ||||
| 
 | ||||
| #ifdef major | ||||
| #undef major | ||||
| #endif | ||||
| 
 | ||||
| #ifdef minor | ||||
| #undef minor | ||||
| #endif | ||||
| 
 | ||||
| namespace base { | ||||
| 
 | ||||
|   class Version { | ||||
|   public: | ||||
|     Version(); | ||||
|     explicit Version(int major, int minor = -1, int revision = -1, int build = -1); | ||||
|     explicit Version(const std::string& from); | ||||
| 
 | ||||
|     int major() const    { return (*this)[0]; } | ||||
|     int minor() const    { return (*this)[1]; } | ||||
|     int revision() const { return (*this)[2]; } | ||||
|     int build() const    { return (*this)[3]; } | ||||
| 
 | ||||
|     Version& major(int digit)    { (*this)[0] = digit; return *this; } | ||||
|     Version& minor(int digit)    { (*this)[1] = digit; return *this; } | ||||
|     Version& revision(int digit) { (*this)[2] = digit; return *this; } | ||||
|     Version& build(int digit)    { (*this)[3] = digit; return *this; } | ||||
| 
 | ||||
|     std::size_t size() const { | ||||
|       return m_digits.size(); | ||||
|     } | ||||
| 
 | ||||
|     // operator[] that can be used to set version digits.
 | ||||
|     int& operator[](std::size_t index) { | ||||
|       if (index >= m_digits.size()) | ||||
|         m_digits.resize(index+1); | ||||
|       return m_digits[index]; | ||||
|     } | ||||
| 
 | ||||
|     // operator[] that can be used to get version digits.
 | ||||
|     int operator[](std::size_t index) const { | ||||
|       if (index < m_digits.size()) | ||||
|         return m_digits[index]; | ||||
|       else | ||||
|         return 0; | ||||
|     } | ||||
| 
 | ||||
|     // Adds a new digit.
 | ||||
|     void addDigit(int digit) { | ||||
|       m_digits.push_back(digit); | ||||
|     } | ||||
| 
 | ||||
|     // Comparison
 | ||||
|     bool operator==(const Version& other) const; | ||||
|     bool operator<(const Version& other) const; | ||||
| 
 | ||||
|     bool operator!=(const Version& other) const { | ||||
|       return !operator==(other); | ||||
|     } | ||||
| 
 | ||||
|     bool operator>(const Version& other) const { | ||||
|       return !operator<(other) && !operator==(other); | ||||
|     } | ||||
| 
 | ||||
|     bool operator>=(const Version& other) const { | ||||
|       return !operator<(other); | ||||
|     } | ||||
| 
 | ||||
|     bool operator<=(const Version& other) const { | ||||
|       return operator<(other) || operator==(other); | ||||
|     } | ||||
|     std::string str() const; | ||||
| 
 | ||||
|   private: | ||||
|     typedef std::vector<int> Digits; | ||||
|     Digits m_digits; | ||||
|     std::string m_prerelease; // alpha, beta, dev, rc (empty if it's official release)
 | ||||
|     int m_prereleaseDigit; | ||||
|   }; | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| // Aseprite Base Library
 | ||||
| // Copyright (c) 2001-2013 David Capello
 | ||||
| // Copyright (c) 2001-2013, 2015 David Capello
 | ||||
| //
 | ||||
| // This file is released under the terms of the MIT license.
 | ||||
| // Read LICENSE.txt for more information.
 | ||||
|  | @ -14,139 +14,42 @@ using namespace base; | |||
| namespace base { | ||||
| 
 | ||||
|   std::ostream& operator<<(std::ostream& os, const Version& ver) { | ||||
|     return os << convert_to<std::string>(ver); | ||||
|     return os << ver.str(); | ||||
|   } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| TEST(Version, Ctor) | ||||
| { | ||||
|   Version v0; | ||||
|   EXPECT_EQ(0, v0[0]); | ||||
|   EXPECT_EQ(0, v0[1]); | ||||
|   EXPECT_EQ(0, v0[2]); | ||||
|   EXPECT_EQ(0, v0[3]); | ||||
|   EXPECT_EQ(0, v0[4]); | ||||
| 
 | ||||
|   Version v1(1); | ||||
|   EXPECT_EQ(1, v1[0]); | ||||
|   EXPECT_EQ(0, v1[1]); | ||||
| 
 | ||||
|   Version v2(1, 2); | ||||
|   EXPECT_EQ(1, v2[0]); | ||||
|   EXPECT_EQ(2, v2[1]); | ||||
|   EXPECT_EQ(0, v2[2]); | ||||
| 
 | ||||
|   Version v3(1, 2, 3); | ||||
|   EXPECT_EQ(1, v3[0]); | ||||
|   EXPECT_EQ(2, v3[1]); | ||||
|   EXPECT_EQ(3, v3[2]); | ||||
|   EXPECT_EQ(0, v3[3]); | ||||
| 
 | ||||
|   Version v4(1, 2, 3, 4); | ||||
|   EXPECT_EQ(1, v4[0]); | ||||
|   EXPECT_EQ(2, v4[1]); | ||||
|   EXPECT_EQ(3, v4[2]); | ||||
|   EXPECT_EQ(4, v4[3]); | ||||
|   EXPECT_EQ(0, v4[4]); | ||||
| } | ||||
| 
 | ||||
| TEST(Version, StringToVersion) | ||||
| { | ||||
|   EXPECT_EQ(Version(), convert_to<Version>(std::string(""))); | ||||
|   EXPECT_EQ(Version(1), convert_to<Version>(std::string("1"))); | ||||
|   EXPECT_EQ(Version(1, 2), convert_to<Version>(std::string("1.2"))); | ||||
|   EXPECT_EQ(Version(1, 2, 3), convert_to<Version>(std::string("1.2.3"))); | ||||
|   EXPECT_EQ(Version(1, 2, 3, 4), convert_to<Version>(std::string("1.2.3.4"))); | ||||
| } | ||||
| 
 | ||||
| TEST(Version, VersionToString) | ||||
| { | ||||
|   EXPECT_EQ("", convert_to<std::string>(Version())); | ||||
|   EXPECT_EQ("0", convert_to<std::string>(Version(0))); | ||||
|   EXPECT_EQ("1", convert_to<std::string>(Version(1))); | ||||
|   EXPECT_EQ("1.0", convert_to<std::string>(Version(1, 0))); | ||||
|   EXPECT_EQ("0.0", convert_to<std::string>(Version(0, 0))); | ||||
|   EXPECT_EQ("1.0.2", convert_to<std::string>(Version(1, 0, 2))); | ||||
| } | ||||
| 
 | ||||
| TEST(Version, Equal) | ||||
| { | ||||
|   EXPECT_EQ(Version(), Version()); | ||||
|   EXPECT_EQ(Version(0), Version()); | ||||
|   EXPECT_EQ(Version(1), Version(1)); | ||||
|   EXPECT_EQ(Version(1), Version(1, 0)); | ||||
|   EXPECT_EQ(Version(1, 0), Version(1)); | ||||
|   EXPECT_EQ(Version(1, 2), Version(1, 2)); | ||||
|   EXPECT_EQ(Version(1, 2, 3), Version(1, 2, 3)); | ||||
|   EXPECT_EQ(Version(1, 0, 0), Version(1)); | ||||
| } | ||||
| 
 | ||||
| TEST(Version, NotEqual) | ||||
| { | ||||
|   EXPECT_FALSE(Version() != Version()); | ||||
|   EXPECT_TRUE(Version(1) != Version(1, 2)); | ||||
|   EXPECT_TRUE(Version() != Version(0, 1)); | ||||
|   EXPECT_TRUE(Version(1, 0) != Version(1, 0, 1)); | ||||
|   EXPECT_TRUE(Version(1, 2) != Version(1, 3)); | ||||
|   EXPECT_TRUE(Version(1, 2, 3) != Version(1, 2, 3, 4)); | ||||
|   EXPECT_EQ("1", Version("1").str()); | ||||
|   EXPECT_EQ("1.2", Version("1.2").str()); | ||||
|   EXPECT_EQ("1.2-rc3", Version("1.2-rc3").str()); | ||||
|   EXPECT_EQ("1.2-beta3", Version("1.2-beta3").str()); | ||||
|   EXPECT_EQ("1.2-beta", Version("1.2-beta").str()); | ||||
|   EXPECT_EQ("1.2-beta", Version("1.2-beta0").str()); | ||||
| } | ||||
| 
 | ||||
| TEST(Version, LessThan) | ||||
| { | ||||
|   EXPECT_FALSE(Version() < Version(0)); | ||||
|   EXPECT_TRUE(Version(0) < Version(1)); | ||||
|   EXPECT_TRUE(Version(1, 2) < Version(1, 3)); | ||||
|   EXPECT_TRUE(Version(1, 2, 3) < Version(1, 2, 4)); | ||||
|   EXPECT_TRUE(Version(1, 2, 0, 4) < Version(1, 2, 3)); | ||||
|   EXPECT_FALSE(Version(1, 3) < Version(1, 2)); | ||||
| } | ||||
|   EXPECT_TRUE(Version("0") < Version("1")); | ||||
|   EXPECT_TRUE(Version("1.2") < Version("1.3")); | ||||
|   EXPECT_TRUE(Version("1.2.3") < Version("1.2.4")); | ||||
|   EXPECT_TRUE(Version("1.2.0.4") < Version("1.2.3")); | ||||
|   EXPECT_TRUE(Version("1.3-dev") < Version("1.3")); | ||||
|   EXPECT_TRUE(Version("1.3-dev") < Version("1.4")); | ||||
|   EXPECT_TRUE(Version("1.1-beta") < Version("1.1-beta1")); | ||||
|   EXPECT_TRUE(Version("1.1-beta1") < Version("1.1-beta2")); | ||||
|   EXPECT_TRUE(Version("1.1-beta2") < Version("1.1-rc1")); | ||||
| 
 | ||||
| TEST(Version, AllComparisons) | ||||
| { | ||||
|   EXPECT_TRUE(Version(1, 2, 3) == Version(1, 2, 3)); | ||||
|   EXPECT_FALSE(Version(1, 2, 3) < Version(1, 2, 3)); | ||||
|   EXPECT_FALSE(Version(1, 2, 3) > Version(1, 2, 3)); | ||||
|   EXPECT_FALSE(Version(1, 2, 3) != Version(1, 2, 3)); | ||||
|   EXPECT_TRUE(Version(1, 2, 3) <= Version(1, 2, 3)); | ||||
|   EXPECT_TRUE(Version(1, 2, 3) >= Version(1, 2, 3)); | ||||
| 
 | ||||
|   EXPECT_FALSE(Version(1, 2, 3) == Version(2)); | ||||
|   EXPECT_TRUE(Version(1, 2, 3) < Version(2)); | ||||
|   EXPECT_FALSE(Version(1, 2, 3) > Version(2)); | ||||
|   EXPECT_TRUE(Version(1, 2, 3) != Version(2)); | ||||
|   EXPECT_TRUE(Version(1, 2, 3) <= Version(2)); | ||||
|   EXPECT_FALSE(Version(1, 2, 3) >= Version(2)); | ||||
| } | ||||
| 
 | ||||
| TEST(Version, SimpleGetters) | ||||
| { | ||||
|   Version v0; | ||||
|   EXPECT_EQ(0, v0.major()); | ||||
|   EXPECT_EQ(0, v0.minor()); | ||||
|   EXPECT_EQ(0, v0.revision()); | ||||
|   EXPECT_EQ(0, v0.build()); | ||||
| 
 | ||||
|   Version v2(1, 2); | ||||
|   EXPECT_EQ(1, v2.major()); | ||||
|   EXPECT_EQ(2, v2.minor()); | ||||
|   EXPECT_EQ(0, v2.revision()); | ||||
| 
 | ||||
|   Version v4(1, 2, 3, 4); | ||||
|   EXPECT_EQ(1, v4.major()); | ||||
|   EXPECT_EQ(2, v4.minor()); | ||||
|   EXPECT_EQ(3, v4.revision()); | ||||
|   EXPECT_EQ(4, v4.build()); | ||||
| } | ||||
| 
 | ||||
| TEST(Version, SimpleSetters) | ||||
| { | ||||
|   EXPECT_EQ(Version(1), Version().major(1)); | ||||
|   EXPECT_EQ(Version(1, 2), Version().major(1).minor(2)); | ||||
|   EXPECT_EQ(Version(1, 2), Version().minor(2).major(1)); | ||||
|   EXPECT_EQ(Version(1, 2, 3, 4), Version().major(1).minor(2).revision(3).build(4)); | ||||
|   EXPECT_EQ(Version(1, 2, 3, 4), Version().build(4).revision(3).minor(2).major(1)); | ||||
|   EXPECT_EQ(Version(0, 0, 0, 4), Version().build(4)); | ||||
|   EXPECT_FALSE(Version("1") < Version("0")); | ||||
|   EXPECT_FALSE(Version("1.3") < Version("1.2")); | ||||
|   EXPECT_FALSE(Version("1.2.4") < Version("1.2.3")); | ||||
|   EXPECT_FALSE(Version("1.2.3") < Version("1.2.0.4")); | ||||
|   EXPECT_FALSE(Version("1.3") < Version("1.3-dev")); | ||||
|   EXPECT_FALSE(Version("1.4") < Version("1.3-dev")); | ||||
|   EXPECT_FALSE(Version("1.1-beta1") < Version("1.1-beta")); | ||||
|   EXPECT_FALSE(Version("1.1-beta2") < Version("1.1-beta1")); | ||||
|   EXPECT_FALSE(Version("1.1-rc1") < Version("1.1-beta2")); | ||||
| } | ||||
| 
 | ||||
| int main(int argc, char** argv) | ||||
|  |  | |||
|  | @ -70,7 +70,7 @@ CheckUpdateResponse::CheckUpdateResponse(const std::string& responseBody) | |||
|   } | ||||
| 
 | ||||
|   if (version_attr) | ||||
|     m_version = base::convert_to<base::Version>(std::string(version_attr)); | ||||
|     m_version = version_attr; | ||||
| 
 | ||||
|   if (url_attr) | ||||
|     m_url = url_attr; | ||||
|  |  | |||
|  | @ -10,7 +10,8 @@ | |||
| #pragma once | ||||
| 
 | ||||
| #include "base/disable_copying.h" | ||||
| #include "base/version.h" | ||||
| 
 | ||||
| #include <string> | ||||
| 
 | ||||
| namespace updater { | ||||
| 
 | ||||
|  | @ -34,7 +35,7 @@ namespace updater { | |||
|     Type getUpdateType() const { return m_type; } | ||||
| 
 | ||||
|     // Returns the latest version available to be downloaded.
 | ||||
|     base::Version getLatestVersion() const { return m_version; } | ||||
|     std::string getLatestVersion() const { return m_version; } | ||||
| 
 | ||||
|     // Returns the URL to download the new version.
 | ||||
|     std::string getUrl() const { return m_url; } | ||||
|  | @ -50,7 +51,7 @@ namespace updater { | |||
| 
 | ||||
|   private: | ||||
|     Type m_type; | ||||
|     base::Version m_version; | ||||
|     std::string m_version; | ||||
|     std::string m_url; | ||||
|     Uuid m_uuid; | ||||
|     double m_waitDays; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue