Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(856)

Unified Diff: base/file_version_info.h

Issue 6897016: Base: Fix FileVersionInfo::CreateFileVersionInfoForCurrentModule so that (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | base/file_version_info_win.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/file_version_info.h
===================================================================
--- base/file_version_info.h (revision 82561)
+++ base/file_version_info.h (working copy)
@@ -6,11 +6,18 @@
#define BASE_FILE_VERSION_INFO_H__
#pragma once
+#include "build/build_config.h"
+
+#if defined(OS_WIN)
+#include <windows.h>
+// http://blogs.msdn.com/oldnewthing/archive/2004/10/25/247180.aspx
+extern "C" IMAGE_DOS_HEADER __ImageBase;
+#endif // OS_WIN
+
#include <string>
#include "base/base_api.h"
#include "base/string16.h"
-#include "build/build_config.h"
class FilePath;
@@ -24,19 +31,37 @@
// version returns values from the Info.plist as appropriate. TODO(avi): make
// this a less-obvious Windows-ism.
-class BASE_API FileVersionInfo {
+class FileVersionInfo {
public:
virtual ~FileVersionInfo() {}
#if defined(OS_WIN) || defined(OS_MACOSX)
// Creates a FileVersionInfo for the specified path. Returns NULL if something
// goes wrong (typically the file does not exit or cannot be opened). The
// returned object should be deleted when you are done with it.
- static FileVersionInfo* CreateFileVersionInfo(const FilePath& file_path);
+ BASE_API static FileVersionInfo* CreateFileVersionInfo(
+ const FilePath& file_path);
#endif // OS_WIN || OS_MACOSX
+#if defined(OS_WIN)
+ // Creates a FileVersionInfo for the specified module. Returns NULL in case
+ // of error. The returned object should be deleted when you are done with it.
+ BASE_API static FileVersionInfo* CreateFileVersionInfoForModule(
+ HMODULE module);
+
// Creates a FileVersionInfo for the current module. Returns NULL in case
// of error. The returned object should be deleted when you are done with it.
+ // This function should be inlined so that the "current module" is evaluated
+ // correctly, instead of being the module that contains base.
+ __forceinline static FileVersionInfo*
+ CreateFileVersionInfoForCurrentModule() {
+ HMODULE module = reinterpret_cast<HMODULE>(&__ImageBase);
+ return CreateFileVersionInfoForModule(module);
+ }
+#else
+ // Creates a FileVersionInfo for the current module. Returns NULL in case
+ // of error. The returned object should be deleted when you are done with it.
static FileVersionInfo* CreateFileVersionInfoForCurrentModule();
+#endif // OS_WIN
// Accessors to the different version properties.
// Returns an empty string if the property is not found.
« no previous file with comments | « no previous file | base/file_version_info_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698