summaryrefslogtreecommitdiffstats
path: root/widget/windows/filedialog/PWinFileDialog.ipdl
blob: b61bfc043236ae108ebb86be79f836403b32c4d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set sw=2 ts=8 et ft=ipdl : */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

include WinFileDialogCommandsDefn;
using mozilla::WindowsHandle from "mozilla/ipc/IPCTypes.h";
using mozilla::widget::filedialog::FileDialogType from "mozilla/widget/filedialog/WinFileDialogCommands.h";

namespace mozilla {
namespace widget {
namespace filedialog {

union FileResult {
  Results?;
  RemoteError;
};

union FolderResult {
  nsString?;
  RemoteError;
};

[ChildProc=Utility]
protocol PWinFileDialog {

child:
  // Exactly one Show function should be called per instance. Further calls will
  // result in IPC failure.
  //
  // Each will return `Ok(Nothing)` if the operation was canceled by the user,
  // or `Err(...)` if the operation actually failed.

  async ShowFileDialog(WindowsHandle parentHwnd, FileDialogType type, Command[] commands)
    returns (FileResult result);
  async ShowFolderDialog(WindowsHandle parentHwnd, Command[] commands)
    returns (FolderResult result);
};

}  // namespace filedialog
}  // namespace widget
}  // namespace mozilla