blob: 3e3ab98a734a966908a408d3c1173c1f9efffdbd [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "test/test_utils.h"
#include <shobjidl.h>
#include <windows.h>
#include <string>
namespace file_selector_windows {
namespace test {
namespace {
// Creates a temp file and returns its path.
std::wstring CreateTempFile() {
wchar_t temp_dir[MAX_PATH];
wchar_t temp_file[MAX_PATH];
wchar_t long_path[MAX_PATH];
::GetTempPath(MAX_PATH, temp_dir);
::GetTempFileName(temp_dir, L"test", 0, temp_file);
// Convert to long form to match what IShellItem queries will return.
::GetLongPathName(temp_file, long_path, MAX_PATH);
return long_path;
}
} // namespace
ScopedTestShellItem::ScopedTestShellItem() {
path_ = CreateTempFile();
::SHCreateItemFromParsingName(path_.c_str(), nullptr, IID_PPV_ARGS(&item_));
}
ScopedTestShellItem::~ScopedTestShellItem() { ::DeleteFile(path_.c_str()); }
ScopedTestFileIdList::ScopedTestFileIdList() {
path_ = CreateTempFile();
item_ = ItemIdListPtr(::ILCreateFromPath(path_.c_str()));
}
ScopedTestFileIdList::~ScopedTestFileIdList() { ::DeleteFile(path_.c_str()); }
} // namespace test
} // namespace file_selector_windows