[go: nahoru, domu]

Refactor FileVersionInfo into an interface with platform implementations.
This allows us to move the chrome specific version informaton used by
Linux into src/chrome.

Add a GetChromeVersionInfo() for Linux in src/chrome/app/ and make sure to use this in src/chrome.

In src/webkit/glue, add a new glue method for getting the product version.  When compiling chrome, use an implementation in src/chrome/renderer (which uses GetChromeVersionInfo()) and a stub implementation for test_shell.

Review URL: http://codereview.chromium.org/1560027

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44435 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/base/file_version_info_win.h b/base/file_version_info_win.h
new file mode 100644
index 0000000..ce173fe
--- /dev/null
+++ b/base/file_version_info_win.h
@@ -0,0 +1,67 @@
+// Copyright (c) 2006-2008 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.
+
+#ifndef BASE_FILE_VERSION_INFO_WIN_H_
+#define BASE_FILE_VERSION_INFO_WIN_H_
+
+#include <string>
+
+#include "base/basictypes.h"
+#include "base/file_version_info.h"
+#include "base/scoped_ptr.h"
+
+struct tagVS_FIXEDFILEINFO;
+typedef tagVS_FIXEDFILEINFO VS_FIXEDFILEINFO;
+
+class FilePath;
+
+// Provides a way to access the version information for a file.
+// This is the information you access when you select a file in the Windows
+// explorer, right-click select Properties, then click the Version tab.
+
+class FileVersionInfoWin : public FileVersionInfo {
+ public:
+  FileVersionInfoWin(void* data, int language, int code_page);
+  ~FileVersionInfoWin();
+
+  // Accessors to the different version properties.
+  // Returns an empty string if the property is not found.
+  virtual std::wstring company_name();
+  virtual std::wstring company_short_name();
+  virtual std::wstring product_name();
+  virtual std::wstring product_short_name();
+  virtual std::wstring internal_name();
+  virtual std::wstring product_version();
+  virtual std::wstring private_build();
+  virtual std::wstring special_build();
+  virtual std::wstring comments();
+  virtual std::wstring original_filename();
+  virtual std::wstring file_description();
+  virtual std::wstring file_version();
+  virtual std::wstring legal_copyright();
+  virtual std::wstring legal_trademarks();
+  virtual std::wstring last_change();
+  virtual bool is_official_build();
+
+  // Lets you access other properties not covered above.
+  bool GetValue(const wchar_t* name, std::wstring* value);
+
+  // Similar to GetValue but returns a wstring (empty string if the property
+  // does not exist).
+  std::wstring GetStringValue(const wchar_t* name);
+
+  // Get the fixed file info if it exists. Otherwise NULL
+  VS_FIXEDFILEINFO* fixed_file_info() { return fixed_file_info_; }
+
+ private:
+  scoped_ptr_malloc<char> data_;
+  int language_;
+  int code_page_;
+  // This is a pointer into the data_ if it exists. Otherwise NULL.
+  VS_FIXEDFILEINFO* fixed_file_info_;
+
+  DISALLOW_COPY_AND_ASSIGN(FileVersionInfoWin);
+};
+
+#endif  // BASE_FILE_VERSION_INFO_WIN_H_