[go: nahoru, domu]

Supporting wildcards in max/min version specifications in VariationsService.
Adds a method CompareToWildcardString that will return -1/0/1, similar to 
CompareTo, when a version is smaller, equal to or greater than a wildcard
string such as "1.2.*". Added a method IsValidWildcardString that validates
the format of a wildcard string, and slightly refactored the Version class
to avoid code duplication. For example, CompareToWildcardString and CompareTo
share the new method CompareVersionComponents.

BUG=127077
TEST=See tests for VariationsService, Version

Review URL: https://chromiumcodereview.appspot.com/10576003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@145468 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/base/version.h b/base/version.h
index b6029d3..8d45899 100644
--- a/base/version.h
+++ b/base/version.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
@@ -30,6 +30,12 @@
   // Returns true if the object contains a valid version number.
   bool IsValid() const;
 
+  // Returns true if the version wildcard string is valid. The version wildcard
+  // string may end with ".*" (e.g. 1.2.*, 1.*). Any other arrangement with "*"
+  // is invalid (e.g. 1.*.3 or 1.2.3*). This functions defaults to standard
+  // Version behavior (IsValid) if no wildcard is present.
+  static bool IsValidWildcardString(const std::string& wildcard_string);
+
   // Commonly used pattern. Given a valid version object, compare if a
   // |version_str| results in a newer version. Returns true if the
   // string represents valid version and if the version is greater than
@@ -50,6 +56,12 @@
   // Returns -1, 0, 1 for <, ==, >.
   int CompareTo(const Version& other) const;
 
+  // Given a valid version object, compare if a |wildcard_string| results in a
+  // newer version. This function will default to CompareTo if the string does
+  // not end in wildcard sequence ".*". IsValidWildcard(wildcard_string) must be
+  // true before using this function.
+  int CompareToWildcardString(const std::string& wildcard_string) const;
+
   // Return the string representation of this version.
   const std::string GetString() const;