Clean up base/Version

It turns out base/Version is really a value object but probably because of some serious accident or by
the machinations of a super villain, forgot his identity and now it thinks is a reference object,
only creatable in the heap and that could only spawn offsprings via cloning.

But fear not 'cause I've seen Version true nature; At its core is just a good 'ol vector<uint16>, which has
very respectable value semantics. Also I have removed the is_valid_ parasite as much as I could.

The old interface (GetVersionFromString and Clone) is kept so existing callers would not need to be modified.

BUG=none
TEST=included
Review URL: http://codereview.chromium.org/7105008

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@88143 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/base/version.h b/base/version.h
index d256d06..7dcefb3 100644
--- a/base/version.h
+++ b/base/version.h
@@ -15,22 +15,27 @@
 
 // Version represents a dotted version number, like "1.2.3.4", supporting
 // parsing and comparison.
-// Each component is limited to a uint16.
 class BASE_API Version {
  public:
-  // Exposed only so that a Version can be stored in STL containers;
-  // any call to the methods below on a default-constructed Version
-  // will DCHECK.
+  // The only thing you can legally do to a default constructed
+  // Version object is assign to it.
   Version();
 
-  ~Version();
+  // Initializes from a decimal dotted version number, like "0.1.1".
+  // Each component is limited to a uint16. Call IsValid() to learn
+  // the outcome.
+  explicit Version(const std::string& version_str);
 
-  // The version string must be made up of 1 or more uint16's separated
-  // by '.'. Returns NULL if string is not in this format.
+  // Returns true if the object contains a valid version number.
+  bool IsValid() const;
+
+  // Returns NULL if the string is not in the proper format.
   // Caller is responsible for freeing the Version object once done.
+  // DO NOT USE FOR NEWER CODE.
   static Version* GetVersionFromString(const std::string& version_str);
 
-  // Creates a copy of this version. Caller takes ownership.
+  // Creates a copy of this version object. Caller takes ownership.
+  // DO NOT USE FOR NEWER CODE.
   Version* Clone() const;
 
   bool Equals(const Version& other) const;
@@ -44,14 +49,7 @@
   const std::vector<uint16>& components() const { return components_; }
 
  private:
-  bool InitFromString(const std::string& version_str);
-
-  bool is_valid_;
   std::vector<uint16> components_;
-
-  FRIEND_TEST_ALL_PREFIXES(VersionTest, DefaultConstructor);
-  FRIEND_TEST_ALL_PREFIXES(VersionTest, GetVersionFromString);
-  FRIEND_TEST_ALL_PREFIXES(VersionTest, Compare);
 };
 
 #endif  // BASE_VERSION_H_