Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[embedlite-components] Fix/align nsFilePicker API. JB#49614
  • Loading branch information
rainemak committed May 15, 2020
1 parent 128be42 commit dbcf7e9
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 16 deletions.
30 changes: 15 additions & 15 deletions widgetfactory/nsFilePicker.cpp
Expand Up @@ -15,6 +15,7 @@
#include "nsIVariant.h"
#include "nsArrayEnumerator.h"
#include <nsIFile.h>
#include <nsPIDOMWindow.h> // for nsPIDOMWindowOuter
#include "nsIDOMWindowUtils.h"
#include <nsISimpleEnumerator.h> // for nsISimpleEnumerator
#include <nsServiceManagerUtils.h> // for do_GetService()
Expand All @@ -35,12 +36,12 @@ nsEmbedFilePicker::~nsEmbedFilePicker()
{
}

NS_IMETHODIMP nsEmbedFilePicker::Init(nsIDOMWindow* parent, const nsAString& title, int16_t mode)
NS_IMETHODIMP nsEmbedFilePicker::Init(mozIDOMWindowProxy* aParent, const nsAString& title, int16_t mode)
{
NS_PRECONDITION(parent, "Null parent passed to filepicker, no file "
"picker for you!");

mWin = parent;
mParent = nsPIDOMWindowOuter::From(aParent);
mModalDepth = 0;
mTitle.Assign(title);
mDefaultName.Truncate();
Expand Down Expand Up @@ -188,7 +189,7 @@ NS_IMETHODIMP nsEmbedFilePicker::Show(int16_t* _retval)
nsresult rv;

mozilla::dom::AutoNoJSAPI noJSAPI();
nsCOMPtr<nsIDOMWindowUtils> utils = do_GetInterface(mWin);
nsCOMPtr<nsIDOMWindowUtils> utils = do_GetInterface(mParent);
NS_ENSURE_TRUE(utils, NS_ERROR_FAILURE);

rv = utils->EnterModalState();
Expand All @@ -207,7 +208,7 @@ NS_IMETHODIMP nsEmbedFilePicker::Show(int16_t* _retval)
mService->RemoveMessageListener("filepickerresponse", this);

uint32_t winid;
mService->GetIDByWindow(mWin, &winid);
mService->GetIDByWindow(mParent, &winid);

std::map<uint32_t, EmbedFilePickerResponse>::iterator it = mResponseMap.find(winid);
if (it == mResponseMap.end()) {
Expand All @@ -230,7 +231,7 @@ EmbedFilePickerResponse
nsEmbedFilePicker::GetResponse()
{
uint32_t winid;
mService->GetIDByWindow(mWin, &winid);
mService->GetIDByWindow(mParent, &winid);

EmbedFilePickerResponse response;
std::map<uint32_t, EmbedFilePickerResponse>::iterator it = mResponseMap.find(winid);
Expand All @@ -246,7 +247,7 @@ nsresult
nsEmbedFilePicker::DoSendPrompt()
{
uint32_t winid;
mService->GetIDByWindow(mWin, &winid);
mService->GetIDByWindow(mParent, &winid);

nsString sendString;
// Just simple property bag support still
Expand Down Expand Up @@ -330,22 +331,22 @@ nsEmbedFilePicker::OnMessageReceived(const char* messageName, const char16_t* me
}

NS_IMETHODIMP
nsEmbedFilePicker::GetDomfile(nsISupports * *aDomfile)
nsEmbedFilePicker::GetDomFileOrDirectory(nsISupports * *aDomFileOrDirectory)
{
nsCOMPtr<nsIFile> localFile;
nsresult rv = GetFile(getter_AddRefs(localFile));
NS_ENSURE_SUCCESS(rv, rv);

if (!localFile) {
*aDomfile = nullptr;
*aDomFileOrDirectory = nullptr;
return NS_OK;
}

mozilla::dom::AutoNoJSAPI noJSAPI();
nsCOMPtr<nsIDOMWindowUtils> utils = do_GetInterface(mWin);
nsCOMPtr<nsIDOMWindowUtils> utils = do_GetInterface(mParent);
nsCOMPtr<nsISupports> file;
utils->WrapDOMFile(localFile, getter_AddRefs(file));
file.forget(aDomfile);
file.forget(aDomFileOrDirectory);

return NS_OK;
}
Expand All @@ -355,10 +356,10 @@ class nsBaseFilePickerEnumerator : public nsISimpleEnumerator
public:
NS_DECL_ISUPPORTS

nsBaseFilePickerEnumerator(nsISimpleEnumerator* iterator, nsIDOMWindow* aWin)
nsBaseFilePickerEnumerator(nsISimpleEnumerator* iterator, nsPIDOMWindowOuter* aParent)
: mIterator(iterator)
{
utils = do_GetInterface(aWin);
utils = do_GetInterface(aParent);
}


Expand Down Expand Up @@ -398,17 +399,16 @@ class nsBaseFilePickerEnumerator : public nsISimpleEnumerator
};

NS_IMETHODIMP
nsEmbedFilePicker::GetDomfiles(nsISimpleEnumerator * *aDomfiles)
nsEmbedFilePicker::GetDomFileOrDirectoryEnumerator(nsISimpleEnumerator * *aDomfiles)
{
nsCOMPtr<nsISimpleEnumerator> iter;
nsresult rv = GetFiles(getter_AddRefs(iter));
NS_ENSURE_SUCCESS(rv, rv);

RefPtr<nsBaseFilePickerEnumerator> retIter =
new nsBaseFilePickerEnumerator(iter, mWin);
new nsBaseFilePickerEnumerator(iter, mParent);

retIter.forget(aDomfiles);
return NS_OK;
}

NS_IMPL_ISUPPORTS(nsBaseFilePickerEnumerator, nsISimpleEnumerator)
4 changes: 3 additions & 1 deletion widgetfactory/nsFilePicker.h
Expand Up @@ -16,6 +16,8 @@
#include <string>
#include <vector>

class nsPIDOMWindowOuter;

class EmbedFilePickerResponse
{
public:
Expand Down Expand Up @@ -45,7 +47,7 @@ class nsEmbedFilePicker : public nsIFilePicker, public nsIEmbedMessageListener
int mMode;
int mFilterIndex;
nsCOMPtr<nsIEmbedAppService> mService;
nsCOMPtr<nsIDOMWindow> mWin;
nsCOMPtr<nsPIDOMWindowOuter> mParent;
nsString mTitle;
nsString mDefaultName;
nsCOMPtr<nsIFilePickerShownCallback> mCallback;
Expand Down

0 comments on commit dbcf7e9

Please sign in to comment.