michael@0: /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- michael@0: * michael@0: * This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: #ifndef NSFILEPICKERPROXY_H michael@0: #define NSFILEPICKERPROXY_H michael@0: michael@0: #include "nsBaseFilePicker.h" michael@0: #include "nsString.h" michael@0: #include "nsIURI.h" michael@0: #include "nsTArray.h" michael@0: #include "nsCOMArray.h" michael@0: michael@0: #include "mozilla/dom/PFilePickerChild.h" michael@0: michael@0: class nsIWidget; michael@0: class nsIFile; michael@0: michael@0: /** michael@0: This class creates a proxy file picker to be used in content processes. michael@0: The file picker just collects the initialization data and when Show() is michael@0: called, remotes everything to the chrome process which in turn can show a michael@0: platform specific file picker. michael@0: */ michael@0: class nsFilePickerProxy : public nsBaseFilePicker, michael@0: public mozilla::dom::PFilePickerChild michael@0: { michael@0: public: michael@0: nsFilePickerProxy(); michael@0: michael@0: NS_DECL_ISUPPORTS michael@0: michael@0: // nsIFilePicker (less what's in nsBaseFilePicker) michael@0: NS_IMETHODIMP Init(nsIDOMWindow* aParent, const nsAString& aTitle, int16_t aMode); michael@0: NS_IMETHODIMP AppendFilter(const nsAString& aTitle, const nsAString& aFilter); michael@0: NS_IMETHODIMP GetDefaultString(nsAString& aDefaultString); michael@0: NS_IMETHODIMP SetDefaultString(const nsAString& aDefaultString); michael@0: NS_IMETHODIMP GetDefaultExtension(nsAString& aDefaultExtension); michael@0: NS_IMETHODIMP SetDefaultExtension(const nsAString& aDefaultExtension); michael@0: NS_IMETHODIMP GetFilterIndex(int32_t* aFilterIndex); michael@0: NS_IMETHODIMP SetFilterIndex(int32_t aFilterIndex); michael@0: NS_IMETHODIMP GetFile(nsIFile** aFile); michael@0: NS_IMETHODIMP GetFileURL(nsIURI** aFileURL); michael@0: NS_IMETHODIMP GetFiles(nsISimpleEnumerator** aFiles); michael@0: michael@0: NS_IMETHODIMP GetDomfile(nsIDOMFile** aFile); michael@0: NS_IMETHODIMP GetDomfiles(nsISimpleEnumerator** aFiles); michael@0: michael@0: NS_IMETHODIMP Show(int16_t* aReturn); michael@0: NS_IMETHODIMP Open(nsIFilePickerShownCallback* aCallback); michael@0: michael@0: // PFilePickerChild michael@0: virtual bool michael@0: Recv__delete__(const MaybeInputFiles& aFiles, const int16_t& aResult); michael@0: michael@0: private: michael@0: ~nsFilePickerProxy(); michael@0: void InitNative(nsIWidget*, const nsAString&); michael@0: michael@0: nsCOMArray mDomfiles; michael@0: nsCOMPtr mCallback; michael@0: michael@0: int16_t mSelectedType; michael@0: nsString mFile; michael@0: nsString mDefault; michael@0: nsString mDefaultExtension; michael@0: michael@0: InfallibleTArray mFilters; michael@0: InfallibleTArray mFilterNames; michael@0: }; michael@0: michael@0: #endif // NSFILEPICKERPROXY_H