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 virtual ~EntryPicker();
45 // ui::SelectFileDialog::Listener implementation.
46 virtual void FileSelected(const base::FilePath
& path
,
48 void* params
) OVERRIDE
;
50 virtual void FileSelectionCanceled(void* params
) OVERRIDE
;
52 scoped_refptr
<ui::SelectFileDialog
> select_file_dialog_
;
53 EntryPickerClient
* client_
;
55 DISALLOW_COPY_AND_ASSIGN(EntryPicker
);
60 } // namespace extensions
62 #endif // CHROME_BROWSER_EXTENSIONS_API_DEVELOPER_PRIVATE_ENTRY_PICKER_H_