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_LINUX_SHELL_DIALOG_H_
6#define UI_SHELL_DIALOGS_LINUX_SHELL_DIALOG_H_
7
8#include "ui/shell_dialogs/select_file_dialog.h"
9#include "ui/shell_dialogs/shell_dialogs_export.h"
10
11namespace ui {
12
13// An interface that lets different Linux platforms override the
14// CreateSelectFileDialog function declared here to return native file dialogs.
15class SHELL_DIALOGS_EXPORT LinuxShellDialog {
16 public:
17  virtual ~LinuxShellDialog() {}
18
19  // Sets the dynamically loaded singleton that draws the desktop native
20  // UI. This pointer is not owned, and if this method is called a second time,
21  // the first instance is not deleted.
22  static void SetInstance(LinuxShellDialog* instance);
23
24  // Returns a LinuxUI instance for the toolkit used in the user's desktop
25  // environment.
26  //
27  // Can return NULL, in case no toolkit has been set. (For example, if we're
28  // running with the "--ash" flag.)
29  static const LinuxShellDialog* instance();
30
31  // Returns a native file selection dialog.
32  virtual SelectFileDialog* CreateSelectFileDialog(
33      SelectFileDialog::Listener* listener,
34      SelectFilePolicy* policy) const = 0;
35};
36
37}  // namespace ui
38
39#endif  // UI_SHELL_DIALOGS_LINUX_SHELL_DIALOG_H_
40
41