mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
9caeb9433f
--HG-- rename : widget/xpwidgets/ContentHelper.cpp => widget/ContentHelper.cpp rename : widget/xpwidgets/ContentHelper.h => widget/ContentHelper.h rename : widget/xpwidgets/GfxDriverInfo.cpp => widget/GfxDriverInfo.cpp rename : widget/xpwidgets/GfxDriverInfo.h => widget/GfxDriverInfo.h rename : widget/xpwidgets/GfxInfoBase.cpp => widget/GfxInfoBase.cpp rename : widget/xpwidgets/GfxInfoBase.h => widget/GfxInfoBase.h rename : widget/xpwidgets/GfxInfoCollector.cpp => widget/GfxInfoCollector.cpp rename : widget/xpwidgets/GfxInfoCollector.h => widget/GfxInfoCollector.h rename : widget/xpwidgets/GfxInfoWebGL.cpp => widget/GfxInfoWebGL.cpp rename : widget/xpwidgets/GfxInfoWebGL.h => widget/GfxInfoWebGL.h rename : widget/xpwidgets/GfxInfoX11.cpp => widget/GfxInfoX11.cpp rename : widget/xpwidgets/GfxInfoX11.h => widget/GfxInfoX11.h rename : widget/xpwidgets/InputData.cpp => widget/InputData.cpp rename : widget/xpwidgets/PuppetWidget.cpp => widget/PuppetWidget.cpp rename : widget/xpwidgets/PuppetWidget.h => widget/PuppetWidget.h rename : widget/xpwidgets/ScreenProxy.cpp => widget/ScreenProxy.cpp rename : widget/xpwidgets/ScreenProxy.h => widget/ScreenProxy.h rename : widget/shared/SharedWidgetUtils.cpp => widget/SharedWidgetUtils.cpp rename : widget/xpwidgets/WidgetUtils.cpp => widget/WidgetUtils.cpp rename : widget/xpwidgets/nsAppShellSingleton.h => widget/nsAppShellSingleton.h rename : widget/xpwidgets/nsBaseAppShell.cpp => widget/nsBaseAppShell.cpp rename : widget/xpwidgets/nsBaseAppShell.h => widget/nsBaseAppShell.h rename : widget/xpwidgets/nsBaseClipboard.cpp => widget/nsBaseClipboard.cpp rename : widget/xpwidgets/nsBaseClipboard.h => widget/nsBaseClipboard.h rename : widget/xpwidgets/nsBaseDragService.cpp => widget/nsBaseDragService.cpp rename : widget/xpwidgets/nsBaseDragService.h => widget/nsBaseDragService.h rename : widget/xpwidgets/nsBaseFilePicker.cpp => widget/nsBaseFilePicker.cpp rename : widget/xpwidgets/nsBaseFilePicker.h => widget/nsBaseFilePicker.h rename : widget/xpwidgets/nsBaseScreen.cpp => widget/nsBaseScreen.cpp rename : widget/xpwidgets/nsBaseScreen.h => widget/nsBaseScreen.h rename : widget/xpwidgets/nsBaseWidget.cpp => widget/nsBaseWidget.cpp rename : widget/xpwidgets/nsBaseWidget.h => widget/nsBaseWidget.h rename : widget/xpwidgets/nsClipboardHelper.cpp => widget/nsClipboardHelper.cpp rename : widget/xpwidgets/nsClipboardHelper.h => widget/nsClipboardHelper.h rename : widget/xpwidgets/nsClipboardProxy.cpp => widget/nsClipboardProxy.cpp rename : widget/xpwidgets/nsClipboardProxy.h => widget/nsClipboardProxy.h rename : widget/xpwidgets/nsColorPickerProxy.cpp => widget/nsColorPickerProxy.cpp rename : widget/xpwidgets/nsColorPickerProxy.h => widget/nsColorPickerProxy.h rename : widget/xpwidgets/nsContentProcessWidgetFactory.cpp => widget/nsContentProcessWidgetFactory.cpp rename : widget/xpwidgets/nsFilePickerProxy.cpp => widget/nsFilePickerProxy.cpp rename : widget/xpwidgets/nsFilePickerProxy.h => widget/nsFilePickerProxy.h rename : widget/xpwidgets/nsHTMLFormatConverter.cpp => widget/nsHTMLFormatConverter.cpp rename : widget/xpwidgets/nsHTMLFormatConverter.h => widget/nsHTMLFormatConverter.h rename : widget/xpwidgets/nsIWidgetListener.cpp => widget/nsIWidgetListener.cpp rename : widget/xpwidgets/nsIdleService.cpp => widget/nsIdleService.cpp rename : widget/xpwidgets/nsIdleService.h => widget/nsIdleService.h rename : widget/xpwidgets/nsNativeTheme.cpp => widget/nsNativeTheme.cpp rename : widget/xpwidgets/nsNativeTheme.h => widget/nsNativeTheme.h rename : widget/xpwidgets/nsPrimitiveHelpers.cpp => widget/nsPrimitiveHelpers.cpp rename : widget/xpwidgets/nsPrimitiveHelpers.h => widget/nsPrimitiveHelpers.h rename : widget/xpwidgets/nsPrintOptionsImpl.cpp => widget/nsPrintOptionsImpl.cpp rename : widget/xpwidgets/nsPrintOptionsImpl.h => widget/nsPrintOptionsImpl.h rename : widget/xpwidgets/nsPrintSession.cpp => widget/nsPrintSession.cpp rename : widget/xpwidgets/nsPrintSession.h => widget/nsPrintSession.h rename : widget/xpwidgets/nsPrintSettingsImpl.cpp => widget/nsPrintSettingsImpl.cpp rename : widget/xpwidgets/nsPrintSettingsImpl.h => widget/nsPrintSettingsImpl.h rename : widget/xpwidgets/nsScreenManagerProxy.cpp => widget/nsScreenManagerProxy.cpp rename : widget/xpwidgets/nsScreenManagerProxy.h => widget/nsScreenManagerProxy.h rename : widget/xpwidgets/nsTransferable.cpp => widget/nsTransferable.cpp rename : widget/xpwidgets/nsTransferable.h => widget/nsTransferable.h rename : widget/xpwidgets/nsXPLookAndFeel.cpp => widget/nsXPLookAndFeel.cpp rename : widget/xpwidgets/nsXPLookAndFeel.h => widget/nsXPLookAndFeel.h
191 lines
4.3 KiB
C++
191 lines
4.3 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* 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 "nsFilePickerProxy.h"
|
|
#include "nsComponentManagerUtils.h"
|
|
#include "nsNetUtil.h"
|
|
#include "nsIFile.h"
|
|
#include "mozilla/dom/File.h"
|
|
#include "mozilla/dom/TabChild.h"
|
|
#include "mozilla/dom/ipc/BlobChild.h"
|
|
|
|
using namespace mozilla::dom;
|
|
|
|
NS_IMPL_ISUPPORTS(nsFilePickerProxy, nsIFilePicker)
|
|
|
|
nsFilePickerProxy::nsFilePickerProxy()
|
|
{
|
|
}
|
|
|
|
nsFilePickerProxy::~nsFilePickerProxy()
|
|
{
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsFilePickerProxy::Init(nsIDOMWindow* aParent, const nsAString& aTitle,
|
|
int16_t aMode)
|
|
{
|
|
TabChild* tabChild = TabChild::GetFrom(aParent);
|
|
if (!tabChild) {
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
mParent = do_QueryInterface(aParent);
|
|
if (!mParent->IsInnerWindow()) {
|
|
mParent = mParent->GetCurrentInnerWindow();
|
|
}
|
|
|
|
mMode = aMode;
|
|
|
|
NS_ADDREF_THIS();
|
|
tabChild->SendPFilePickerConstructor(this, nsString(aTitle), aMode);
|
|
return NS_OK;
|
|
}
|
|
|
|
void
|
|
nsFilePickerProxy::InitNative(nsIWidget* aParent, const nsAString& aTitle)
|
|
{
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsFilePickerProxy::AppendFilter(const nsAString& aTitle, const nsAString& aFilter)
|
|
{
|
|
mFilterNames.AppendElement(aTitle);
|
|
mFilters.AppendElement(aFilter);
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsFilePickerProxy::GetDefaultString(nsAString& aDefaultString)
|
|
{
|
|
aDefaultString = mDefault;
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsFilePickerProxy::SetDefaultString(const nsAString& aDefaultString)
|
|
{
|
|
mDefault = aDefaultString;
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsFilePickerProxy::GetDefaultExtension(nsAString& aDefaultExtension)
|
|
{
|
|
aDefaultExtension = mDefaultExtension;
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsFilePickerProxy::SetDefaultExtension(const nsAString& aDefaultExtension)
|
|
{
|
|
mDefaultExtension = aDefaultExtension;
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsFilePickerProxy::GetFilterIndex(int32_t* aFilterIndex)
|
|
{
|
|
*aFilterIndex = mSelectedType;
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsFilePickerProxy::SetFilterIndex(int32_t aFilterIndex)
|
|
{
|
|
mSelectedType = aFilterIndex;
|
|
return NS_OK;
|
|
}
|
|
|
|
/* readonly attribute nsIFile file; */
|
|
NS_IMETHODIMP
|
|
nsFilePickerProxy::GetFile(nsIFile** aFile)
|
|
{
|
|
MOZ_ASSERT(false, "GetFile is unimplemented; use GetDomfile");
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
/* readonly attribute nsIFileURL fileURL; */
|
|
NS_IMETHODIMP
|
|
nsFilePickerProxy::GetFileURL(nsIURI** aFileURL)
|
|
{
|
|
MOZ_ASSERT(false, "GetFileURL is unimplemented; use GetDomfile");
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
/* readonly attribute nsISimpleEnumerator files; */
|
|
NS_IMETHODIMP
|
|
nsFilePickerProxy::GetFiles(nsISimpleEnumerator** aFiles)
|
|
{
|
|
MOZ_ASSERT(false, "GetFiles is unimplemented; use GetDomfiles");
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsFilePickerProxy::Show(int16_t* aReturn)
|
|
{
|
|
MOZ_ASSERT(false, "Show is unimplemented; use Open");
|
|
return NS_ERROR_NOT_IMPLEMENTED;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsFilePickerProxy::Open(nsIFilePickerShownCallback* aCallback)
|
|
{
|
|
mCallback = aCallback;
|
|
|
|
SendOpen(mSelectedType, mAddToRecentDocs, mDefault,
|
|
mDefaultExtension, mFilters, mFilterNames);
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
bool
|
|
nsFilePickerProxy::Recv__delete__(const MaybeInputFiles& aFiles,
|
|
const int16_t& aResult)
|
|
{
|
|
if (aFiles.type() == MaybeInputFiles::TInputFiles) {
|
|
const InfallibleTArray<PBlobChild*>& files = aFiles.get_InputFiles().filesChild();
|
|
for (uint32_t i = 0; i < files.Length(); ++i) {
|
|
BlobChild* actor = static_cast<BlobChild*>(files[i]);
|
|
nsRefPtr<FileImpl> blobImpl = actor->GetBlobImpl();
|
|
NS_ENSURE_TRUE(blobImpl, true);
|
|
|
|
nsCOMPtr<nsIDOMBlob> blob = new File(mParent, blobImpl);
|
|
nsCOMPtr<nsIDOMFile> file(do_QueryInterface(blob));
|
|
NS_ENSURE_TRUE(file, true);
|
|
|
|
mDomfiles.AppendObject(file);
|
|
}
|
|
}
|
|
|
|
if (mCallback) {
|
|
mCallback->Done(aResult);
|
|
mCallback = nullptr;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsFilePickerProxy::GetDomfile(nsIDOMFile** aDomfile)
|
|
{
|
|
*aDomfile = nullptr;
|
|
if (mDomfiles.IsEmpty()) {
|
|
return NS_OK;
|
|
}
|
|
|
|
MOZ_ASSERT(mDomfiles.Length() == 1);
|
|
nsCOMPtr<nsIDOMFile> domfile = mDomfiles[0];
|
|
domfile.forget(aDomfile);
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsFilePickerProxy::GetDomfiles(nsISimpleEnumerator** aDomfiles)
|
|
{
|
|
return NS_NewArrayEnumerator(aDomfiles, mDomfiles);
|
|
}
|