mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-26 14:18:48 +00:00
f4be2b8299
- Bug 1152694 - Make UUID and service name as input arguments for BluetoothSocket, r=tzimmermann (b7cf048bb) - Bug 1163388 - patch 1 - make nsIDOMFile an empty interface, r=ehsan (2723c513a) - Bug 1150160 - Support import of apps as memory blobs. r=marco (ffe4538f1) - Bug 1142132: Move helper classes of OPP manager into manager's namespace, r=shuang (ffca18a8e) - uuid of 1146349 (00c6050e5) - Bug 1151611 - Expose DXVA status in about:support. r=cpearce,felipe (6afe0b458) - Bug 1157150 - Add nsDOMWindowUtils.postRestyleSelfEvent method, for use in tests. r=smaug (081f852ae) - Bug 1161206 - Implement native mousewheel event synthesization on OS X. r=mstange (8741c0b62) - Bug 1163388 - patch 2 - get rid of nsIDOMFile, r=ehsan (ae0c054b6) - Bug 1159659 - Allow tab sharing on XP and OSX 10.6. r=pkerr (461ffca9d) - Bug 1155759 - Part 1 - Remove some manual refcounting from docshell. r=smaug (fdcdf3a9a) - Bug 1155759 - Part 2 - Use a static ref ptr for gObserver in nsSHistory. r=smaug (84706ab08) - Bug 679939 part 1. Extend the hasRunOnce/treatAsRunOnce setup to global and eval scripts. r=luke (1b0450709) - Bug 679939 part 2. Disallow execution of global/eval scripts that are flagged runOnce and have already run. r=luke (4a2f9d947) - pointer style (f95806360) - Bug 679939 part 3. Add a CompileOptions flag for indicating that the script should be compiled runOnce. r=luke (7e7cfe90a) - Bug 679939 part 4. Set the isRunOnce compile flag as needed. r=luke (ab84de2ad) - Bug 1167494 - Build error with --disable-sandbox on OS X. r=jld (a66816733) - Bug 1146472 part 1. Don't do object-kind guessing for object literal templates in scripts, since we in fact know exactly how many slots we want them to have and hence what the kind should be. r=terrence (aa1db7c23) - Bug 1146472 part 2. Use JSOP_NEWOBJECT as needed even if the script is not compile-and-go. r=luke (b6e222834) - Bug 977308 - Pre-tenure all objects attached to scripts; r=sfink (ac3175b8e) - Bug 1143704 part 12 - Move remaining functions to BytecodeEmitter. r=bhackett (7369f3f6d) - Bug 1143704 part 13 - Make emitJump, emitN etc return bool instead of ptrdiff_t. r=luke (42c8f936f) - Bug 1143704 part 14 - Change newSrcNote* to return bool instead of int. r=luke (182525f7d) - Bug 1147581 - Remove the now defunct TMPSLOT mechanism. (r=jorendorff) (08c377985) - Bug 1146836 part 1 - Cleanup BytecodeEmitter::emitSwitch. r=luke (2e15e54da) - Bug 1146836 part 2 - Use Vectors instead of malloc in emitSwitch and fix an old bug. r=luke (018838218) - Bug 679939 part 5. Stop using the compileAndGo script flag in the bytecode emitter. r=luke (047c3baca) - Bug 679939 part 6. Drop function-cloning uses of compileAndGo, since it no longer affects the bytecode. r=luke (25ec43122) - Bug 1145488. Stop using compileAndGo in the JITs. r=jandem (903ed3914) - Bug 679939 part 7. Drop the now-unused JSScript::compileAndGo. r=luke (979044eb4) - Bug 679939 part 8. Drop the now-unused compileAndGo from CompileOptions. r=luke (db211ef89) - Bug 1139217 - Make js::HashSet<T> work with move-only T types; r=luke (353f6e1e3) - Bug 1144366 followup - Stop declaring multiple pointers on a single line. r=jorendorff (b33884fb0) - support FreeBSD (1a9b19266)
241 lines
5.2 KiB
C++
241 lines
5.2 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;
|
|
|
|
nsString displayDirectory;
|
|
if (mDisplayDirectory) {
|
|
mDisplayDirectory->GetPath(displayDirectory);
|
|
}
|
|
|
|
SendOpen(mSelectedType, mAddToRecentDocs, mDefault, mDefaultExtension,
|
|
mFilters, mFilterNames, displayDirectory);
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
bool
|
|
nsFilePickerProxy::Recv__delete__(const MaybeInputFiles& aFiles,
|
|
const int16_t& aResult)
|
|
{
|
|
if (aFiles.type() == MaybeInputFiles::TInputFiles) {
|
|
const InfallibleTArray<PBlobChild*>& blobs = aFiles.get_InputFiles().blobsChild();
|
|
for (uint32_t i = 0; i < blobs.Length(); ++i) {
|
|
BlobChild* actor = static_cast<BlobChild*>(blobs[i]);
|
|
nsRefPtr<BlobImpl> blobImpl = actor->GetBlobImpl();
|
|
NS_ENSURE_TRUE(blobImpl, true);
|
|
|
|
if (!blobImpl->IsFile()) {
|
|
return true;
|
|
}
|
|
|
|
nsRefPtr<File> file = File::Create(mParent, blobImpl);
|
|
MOZ_ASSERT(file);
|
|
|
|
mDomfiles.AppendElement(file);
|
|
}
|
|
}
|
|
|
|
if (mCallback) {
|
|
mCallback->Done(aResult);
|
|
mCallback = nullptr;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
nsFilePickerProxy::GetDomfile(nsISupports** aDomfile)
|
|
{
|
|
*aDomfile = nullptr;
|
|
if (mDomfiles.IsEmpty()) {
|
|
return NS_OK;
|
|
}
|
|
|
|
MOZ_ASSERT(mDomfiles.Length() == 1);
|
|
nsCOMPtr<nsIDOMBlob> blob = mDomfiles[0].get();
|
|
blob.forget(aDomfile);
|
|
return NS_OK;
|
|
}
|
|
|
|
namespace {
|
|
|
|
class SimpleEnumerator final : public nsISimpleEnumerator
|
|
{
|
|
public:
|
|
NS_DECL_ISUPPORTS
|
|
|
|
explicit SimpleEnumerator(const nsTArray<nsRefPtr<File>>& aFiles)
|
|
: mFiles(aFiles)
|
|
, mIndex(0)
|
|
{}
|
|
|
|
NS_IMETHOD
|
|
HasMoreElements(bool* aRetvalue) override
|
|
{
|
|
MOZ_ASSERT(aRetvalue);
|
|
*aRetvalue = mFiles.Length() >= mIndex;
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHOD
|
|
GetNext(nsISupports** aSupports) override
|
|
{
|
|
nsCOMPtr<nsIDOMBlob> blob = mFiles[mIndex++].get();
|
|
blob.forget(aSupports);
|
|
return NS_OK;
|
|
}
|
|
|
|
private:
|
|
~SimpleEnumerator()
|
|
{}
|
|
|
|
nsTArray<nsRefPtr<File>> mFiles;
|
|
uint32_t mIndex;
|
|
};
|
|
|
|
NS_IMPL_ISUPPORTS(SimpleEnumerator, nsISimpleEnumerator)
|
|
|
|
} // anonymous namespace
|
|
|
|
NS_IMETHODIMP
|
|
nsFilePickerProxy::GetDomfiles(nsISimpleEnumerator** aDomfiles)
|
|
{
|
|
nsRefPtr<SimpleEnumerator> enumerator = new SimpleEnumerator(mDomfiles);
|
|
enumerator.forget(aDomfiles);
|
|
return NS_OK;
|
|
}
|