diff options
Diffstat (limited to 'dom/plugins/base/nsPluginHost.cpp')
-rw-r--r-- | dom/plugins/base/nsPluginHost.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/dom/plugins/base/nsPluginHost.cpp b/dom/plugins/base/nsPluginHost.cpp index b36bf96331..c9c1b71fe0 100644 --- a/dom/plugins/base/nsPluginHost.cpp +++ b/dom/plugins/base/nsPluginHost.cpp @@ -33,6 +33,9 @@ #include "nsProtocolProxyService.h" #include "nsIStreamConverterService.h" #include "nsIFile.h" +#if defined(XP_MACOSX) +#include "nsILocalFileMac.h" +#endif #include "nsISeekableStream.h" #include "nsNetUtil.h" #include "nsIFileStreams.h" @@ -1921,7 +1924,19 @@ int64_t GetPluginLastModifiedTime(const nsCOMPtr<nsIFile>& localfile) { PRTime fileModTime = 0; +#if defined(XP_MACOSX) + // On OS X the date of a bundle's "contents" (i.e. of its Info.plist file) + // is a much better guide to when it was last modified than the date of + // its package directory. See bug 313700. + nsCOMPtr<nsILocalFileMac> localFileMac = do_QueryInterface(localfile); + if (localFileMac) { + localFileMac->GetBundleContentsLastModifiedTime(&fileModTime); + } else { + localfile->GetLastModifiedTime(&fileModTime); + } +#else localfile->GetLastModifiedTime(&fileModTime); +#endif return fileModTime; } |