Index: chrome_frame/utils.cc |
=================================================================== |
--- chrome_frame/utils.cc (revision 42676) |
+++ chrome_frame/utils.cc (working copy) |
@@ -13,6 +13,7 @@ |
#include "base/logging.h" |
#include "base/path_service.h" |
#include "base/registry.h" |
+#include "base/scoped_bstr_win.h" |
#include "base/scoped_comptr_win.h" |
#include "base/scoped_variant_win.h" |
#include "base/string_util.h" |
@@ -411,6 +412,34 @@ |
return ie_version; |
} |
+FilePath GetIETemporaryFilesFolder() { |
+ DCHECK_EQ(BROWSER_IE, GetBrowserType()); |
+ |
+ LPITEMIDLIST tif_pidl = NULL; |
+ HRESULT hr = SHGetFolderLocation(NULL, CSIDL_INTERNET_CACHE, NULL, |
+ SHGFP_TYPE_CURRENT, &tif_pidl); |
+ DCHECK(SUCCEEDED(hr) && tif_pidl); |
+ |
+ ScopedComPtr<IShellFolder> parent_folder; |
+ LPCITEMIDLIST relative_pidl = NULL; |
+ hr = SHBindToParent(tif_pidl, IID_IShellFolder, |
+ reinterpret_cast<void**>(parent_folder.Receive()), |
+ &relative_pidl); |
+ DCHECK(SUCCEEDED(hr) && relative_pidl); |
+ |
+ STRRET path = {0}; |
+ hr = parent_folder->GetDisplayNameOf(relative_pidl, |
+ SHGDN_NORMAL | SHGDN_FORPARSING, |
+ &path); |
+ DCHECK(SUCCEEDED(hr)); |
+ ScopedBstr tif_bstr; |
+ StrRetToBSTR(&path, relative_pidl, tif_bstr.Receive()); |
+ FilePath tif(static_cast<BSTR>(tif_bstr)); |
+ |
+ ILFree(tif_pidl); |
+ return tif; |
+} |
+ |
bool IsIEInPrivate() { |
typedef BOOL (WINAPI* IEIsInPrivateBrowsingPtr)(); |
bool incognito_mode = false; |