1 // Copyright (c) 2012 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.
5 #ifndef CHROME_BROWSER_EXTENSIONS_API_DEVELOPER_PRIVATE_ENTRY_PICKER_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_DEVELOPER_PRIVATE_ENTRY_PICKER_H_
8 #include "extensions/browser/extension_function.h"
9 #include "ui/shell_dialogs/select_file_dialog.h"
15 namespace extensions
{
19 class EntryPickerClient
{
21 virtual void FileSelected(const base::FilePath
& path
) = 0;
22 virtual void FileSelectionCanceled() = 0;
25 // Handles showing a dialog to the user to ask for the directory name.
26 class EntryPicker
: public ui::SelectFileDialog::Listener
{
28 EntryPicker(EntryPickerClient
* client
,
29 content::WebContents
* web_contents
,
30 ui::SelectFileDialog::Type picker_type
,
31 const base::FilePath
& last_directory
,
32 const base::string16
& select_title
,
33 const ui::SelectFileDialog::FileTypeInfo
& info
,
36 // Allow picker UI to be skipped in testing.
37 static void SkipPickerAndAlwaysSelectPathForTest(base::FilePath
* path
);
38 static void SkipPickerAndAlwaysCancelForTest();
39 static void StopSkippingPickerForTest();
42 ~EntryPicker() override
;
45 // ui::SelectFileDialog::Listener:
46 void FileSelected(const base::FilePath
& path
,
48 void* params
) override
;
49 void FileSelectionCanceled(void* params
) override
;
50 void MultiFilesSelected(const std::vector
<base::FilePath
>& files
,
51 void* params
) override
;
53 scoped_refptr
<ui::SelectFileDialog
> select_file_dialog_
;
54 EntryPickerClient
* client_
;
56 DISALLOW_COPY_AND_ASSIGN(EntryPicker
);
61 } // namespace extensions
63 #endif // CHROME_BROWSER_EXTENSIONS_API_DEVELOPER_PRIVATE_ENTRY_PICKER_H_