1// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef UI_SHELL_DIALOGS_SELECT_FILE_DIALOG_WIN_H_
6#define UI_SHELL_DIALOGS_SELECT_FILE_DIALOG_WIN_H_
7
8#include <Windows.h>
9#include <commdlg.h>
10
11#include "base/callback_forward.h"
12#include "ui/gfx/native_widget_types.h"
13#include "ui/shell_dialogs/select_file_dialog.h"
14#include "ui/shell_dialogs/shell_dialogs_export.h"
15
16namespace ui {
17class SelectFilePolicy;
18
19// Implementation detail exported for unit tests.
20SHELL_DIALOGS_EXPORT std::wstring AppendExtensionIfNeeded(
21    const std::wstring& filename,
22    const std::wstring& filter_selected,
23    const std::wstring& suggested_ext);
24
25SHELL_DIALOGS_EXPORT SelectFileDialog* CreateWinSelectFileDialog(
26    SelectFileDialog::Listener* listener,
27    SelectFilePolicy* policy,
28    const base::Callback<bool(OPENFILENAME* ofn)>& get_open_file_name_impl,
29    const base::Callback<bool(OPENFILENAME* ofn)>& get_save_file_name_impl);
30
31SelectFileDialog* CreateDefaultWinSelectFileDialog(
32    SelectFileDialog::Listener* listener,
33    SelectFilePolicy* policy);
34
35}  // namespace ui
36
37#endif  //  UI_SHELL_DIALOGS_SELECT_FILE_DIALOG_WIN_H_
38
39