widget/nsFilePickerProxy.h
author Andreas Tolfsen <ato@mozilla.com>
Sat, 02 Jul 2016 18:26:17 +0100
changeset 339920 74e83213e48a6b8bf7c14448b0a02c1577224968
parent 327410 eaa6fadb22e8218cd7aa08587ffc4cb856a6207f
child 350391 babe907f527681f351d62d689230d23e55d6a729
permissions -rw-r--r--
Bug 1283999 - Rewrite and complement element retrieval tests; r=automatedtester a=test-only Many tests for the plural Find Element, Find Element From Element, and FInd Elements From Element commands were missing. MozReview-Commit-ID: DFGJYY8rkqT

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 *
 * 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/. */
#ifndef NSFILEPICKERPROXY_H
#define NSFILEPICKERPROXY_H

#include "nsBaseFilePicker.h"
#include "nsString.h"
#include "nsIURI.h"
#include "nsTArray.h"
#include "nsCOMArray.h"

#include "mozilla/dom/PFilePickerChild.h"
#include "mozilla/dom/UnionTypes.h"

class nsIWidget;
class nsIFile;
class nsPIDOMWindowInner;

/**
  This class creates a proxy file picker to be used in content processes.
  The file picker just collects the initialization data and when Show() is
  called, remotes everything to the chrome process which in turn can show a
  platform specific file picker.
*/
class nsFilePickerProxy : public nsBaseFilePicker,
                          public mozilla::dom::PFilePickerChild
{
public:
    nsFilePickerProxy();

    NS_DECL_ISUPPORTS

    // nsIFilePicker (less what's in nsBaseFilePicker)
    NS_IMETHODIMP Init(mozIDOMWindowProxy* aParent, const nsAString& aTitle, int16_t aMode) override;
    NS_IMETHODIMP AppendFilter(const nsAString& aTitle, const nsAString& aFilter) override;
    NS_IMETHODIMP GetDefaultString(nsAString& aDefaultString) override;
    NS_IMETHODIMP SetDefaultString(const nsAString& aDefaultString) override;
    NS_IMETHODIMP GetDefaultExtension(nsAString& aDefaultExtension) override;
    NS_IMETHODIMP SetDefaultExtension(const nsAString& aDefaultExtension) override;
    NS_IMETHODIMP GetFilterIndex(int32_t* aFilterIndex) override;
    NS_IMETHODIMP SetFilterIndex(int32_t aFilterIndex) override;
    NS_IMETHODIMP GetFile(nsIFile** aFile) override;
    NS_IMETHODIMP GetFileURL(nsIURI** aFileURL) override;
    NS_IMETHODIMP GetFiles(nsISimpleEnumerator** aFiles) override;

    NS_IMETHODIMP GetDomFileOrDirectory(nsISupports** aValue) override;
    NS_IMETHODIMP GetDomFileOrDirectoryEnumerator(nsISimpleEnumerator** aValue) override;

    NS_IMETHODIMP Show(int16_t* aReturn) override;
    NS_IMETHODIMP Open(nsIFilePickerShownCallback* aCallback) override;

    // PFilePickerChild
    virtual bool
    Recv__delete__(const MaybeInputData& aData, const int16_t& aResult) override;

private:
    ~nsFilePickerProxy();
    void InitNative(nsIWidget*, const nsAString&) override;

    nsTArray<mozilla::dom::OwningFileOrDirectory> mFilesOrDirectories;
    nsCOMPtr<nsIFilePickerShownCallback> mCallback;

    int16_t   mSelectedType;
    nsString  mFile;
    nsString  mDefault;
    nsString  mDefaultExtension;

    InfallibleTArray<nsString> mFilters;
    InfallibleTArray<nsString> mFilterNames;
};

#endif // NSFILEPICKERPROXY_H