1*635a8641SAndroid Build Coastguard Worker // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2*635a8641SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file. 4*635a8641SAndroid Build Coastguard Worker 5*635a8641SAndroid Build Coastguard Worker #ifndef BASE_FILE_VERSION_INFO_H_ 6*635a8641SAndroid Build Coastguard Worker #define BASE_FILE_VERSION_INFO_H_ 7*635a8641SAndroid Build Coastguard Worker 8*635a8641SAndroid Build Coastguard Worker #include <string> 9*635a8641SAndroid Build Coastguard Worker 10*635a8641SAndroid Build Coastguard Worker #include "build/build_config.h" 11*635a8641SAndroid Build Coastguard Worker #include "base/base_export.h" 12*635a8641SAndroid Build Coastguard Worker #include "base/strings/string16.h" 13*635a8641SAndroid Build Coastguard Worker 14*635a8641SAndroid Build Coastguard Worker #if defined(OS_WIN) 15*635a8641SAndroid Build Coastguard Worker #include <windows.h> 16*635a8641SAndroid Build Coastguard Worker #endif 17*635a8641SAndroid Build Coastguard Worker 18*635a8641SAndroid Build Coastguard Worker namespace base { 19*635a8641SAndroid Build Coastguard Worker class FilePath; 20*635a8641SAndroid Build Coastguard Worker } 21*635a8641SAndroid Build Coastguard Worker 22*635a8641SAndroid Build Coastguard Worker // Provides an interface for accessing the version information for a file. This 23*635a8641SAndroid Build Coastguard Worker // is the information you access when you select a file in the Windows Explorer, 24*635a8641SAndroid Build Coastguard Worker // right-click select Properties, then click the Version tab, and on the Mac 25*635a8641SAndroid Build Coastguard Worker // when you select a file in the Finder and do a Get Info. 26*635a8641SAndroid Build Coastguard Worker // 27*635a8641SAndroid Build Coastguard Worker // This list of properties is straight out of Win32's VerQueryValue 28*635a8641SAndroid Build Coastguard Worker // <http://msdn.microsoft.com/en-us/library/ms647464.aspx> and the Mac 29*635a8641SAndroid Build Coastguard Worker // version returns values from the Info.plist as appropriate. TODO(avi): make 30*635a8641SAndroid Build Coastguard Worker // this a less-obvious Windows-ism. 31*635a8641SAndroid Build Coastguard Worker 32*635a8641SAndroid Build Coastguard Worker class BASE_EXPORT FileVersionInfo { 33*635a8641SAndroid Build Coastguard Worker public: ~FileVersionInfo()34*635a8641SAndroid Build Coastguard Worker virtual ~FileVersionInfo() {} 35*635a8641SAndroid Build Coastguard Worker #if defined(OS_WIN) || defined(OS_MACOSX) 36*635a8641SAndroid Build Coastguard Worker // Creates a FileVersionInfo for the specified path. Returns NULL if something 37*635a8641SAndroid Build Coastguard Worker // goes wrong (typically the file does not exit or cannot be opened). The 38*635a8641SAndroid Build Coastguard Worker // returned object should be deleted when you are done with it. 39*635a8641SAndroid Build Coastguard Worker static FileVersionInfo* CreateFileVersionInfo( 40*635a8641SAndroid Build Coastguard Worker const base::FilePath& file_path); 41*635a8641SAndroid Build Coastguard Worker #endif // OS_WIN || OS_MACOSX 42*635a8641SAndroid Build Coastguard Worker 43*635a8641SAndroid Build Coastguard Worker #if defined(OS_WIN) 44*635a8641SAndroid Build Coastguard Worker // Creates a FileVersionInfo for the specified module. Returns NULL in case 45*635a8641SAndroid Build Coastguard Worker // of error. The returned object should be deleted when you are done with it. 46*635a8641SAndroid Build Coastguard Worker static FileVersionInfo* CreateFileVersionInfoForModule(HMODULE module); 47*635a8641SAndroid Build Coastguard Worker #else 48*635a8641SAndroid Build Coastguard Worker // Creates a FileVersionInfo for the current module. Returns NULL in case 49*635a8641SAndroid Build Coastguard Worker // of error. The returned object should be deleted when you are done with it. 50*635a8641SAndroid Build Coastguard Worker static FileVersionInfo* CreateFileVersionInfoForCurrentModule(); 51*635a8641SAndroid Build Coastguard Worker #endif // OS_WIN 52*635a8641SAndroid Build Coastguard Worker 53*635a8641SAndroid Build Coastguard Worker // Accessors to the different version properties. 54*635a8641SAndroid Build Coastguard Worker // Returns an empty string if the property is not found. 55*635a8641SAndroid Build Coastguard Worker virtual base::string16 company_name() = 0; 56*635a8641SAndroid Build Coastguard Worker virtual base::string16 company_short_name() = 0; 57*635a8641SAndroid Build Coastguard Worker virtual base::string16 product_name() = 0; 58*635a8641SAndroid Build Coastguard Worker virtual base::string16 product_short_name() = 0; 59*635a8641SAndroid Build Coastguard Worker virtual base::string16 internal_name() = 0; 60*635a8641SAndroid Build Coastguard Worker virtual base::string16 product_version() = 0; 61*635a8641SAndroid Build Coastguard Worker virtual base::string16 private_build() = 0; 62*635a8641SAndroid Build Coastguard Worker virtual base::string16 special_build() = 0; 63*635a8641SAndroid Build Coastguard Worker virtual base::string16 comments() = 0; 64*635a8641SAndroid Build Coastguard Worker virtual base::string16 original_filename() = 0; 65*635a8641SAndroid Build Coastguard Worker virtual base::string16 file_description() = 0; 66*635a8641SAndroid Build Coastguard Worker virtual base::string16 file_version() = 0; 67*635a8641SAndroid Build Coastguard Worker virtual base::string16 legal_copyright() = 0; 68*635a8641SAndroid Build Coastguard Worker virtual base::string16 legal_trademarks() = 0; 69*635a8641SAndroid Build Coastguard Worker virtual base::string16 last_change() = 0; 70*635a8641SAndroid Build Coastguard Worker virtual bool is_official_build() = 0; 71*635a8641SAndroid Build Coastguard Worker }; 72*635a8641SAndroid Build Coastguard Worker 73*635a8641SAndroid Build Coastguard Worker #endif // BASE_FILE_VERSION_INFO_H_ 74