mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-20 22:27:31 +09:00
Merge branch 'post-git-tracking' into tracking
This commit is contained in:
commit
a77f08a62f
13 changed files with 84 additions and 59 deletions
|
|
@ -8,6 +8,7 @@
|
||||||
* Copyright (C) 2008, 2009 Anthony Ricaud <rik@webkit.org>
|
* Copyright (C) 2008, 2009 Anthony Ricaud <rik@webkit.org>
|
||||||
* Copyright (C) 2011 Google Inc. All rights reserved.
|
* Copyright (C) 2011 Google Inc. All rights reserved.
|
||||||
* Copyright (C) 2009 Mozilla Foundation. All rights reserved.
|
* Copyright (C) 2009 Mozilla Foundation. All rights reserved.
|
||||||
|
* Copyright (C) 2022 Moonchild Productions. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
|
|
@ -400,9 +401,15 @@ const CurlUtils = {
|
||||||
*/
|
*/
|
||||||
escapeStringWin: function (str) {
|
escapeStringWin: function (str) {
|
||||||
/*
|
/*
|
||||||
Replace dollar sign because of commands (e.g $(cmd.exe)) in
|
Replace the backtick character ` with `` in order to escape it.
|
||||||
powershell when using double quotes.
|
The backtick character is an escape character in PowerShell and
|
||||||
Useful details http://www.rlmueller.net/PowerShellEscape.htm
|
can, among other things, be used to disable the effect of some
|
||||||
|
of the other escapes created below.
|
||||||
|
|
||||||
|
Replace dollar sign because of commands in powershell when using
|
||||||
|
double quotes. e.g $(calc.exe).
|
||||||
|
|
||||||
|
Also see http://www.rlmueller.net/PowerShellEscape.htm for details.
|
||||||
|
|
||||||
Replace quote by double quote (but not by \") because it is
|
Replace quote by double quote (but not by \") because it is
|
||||||
recognized by both cmd.exe and MS Crt arguments parser.
|
recognized by both cmd.exe and MS Crt arguments parser.
|
||||||
|
|
@ -416,13 +423,15 @@ const CurlUtils = {
|
||||||
MS Crt arguments parser won't collapse them.
|
MS Crt arguments parser won't collapse them.
|
||||||
|
|
||||||
Replace new line outside of quotes since cmd.exe doesn't let
|
Replace new line outside of quotes since cmd.exe doesn't let
|
||||||
to do it inside.
|
us do it inside.
|
||||||
*/
|
*/
|
||||||
return "\"" + str.replace(/\$/g, "`$")
|
return "\"" +
|
||||||
.replace(/"/g, "\"\"")
|
str.replaceAll("`", "``")
|
||||||
.replace(/%/g, "\"%\"")
|
.replaceAll("$", "`$")
|
||||||
.replace(/\\/g, "\\\\")
|
.replaceAll('"', '""')
|
||||||
.replace(/[\r\n]+/g, "\"^$&\"") + "\"";
|
.replaceAll("%", '"%"')
|
||||||
|
.replace(/\\/g, "\\\\")
|
||||||
|
.replace(/[\r\n]+/g, "\"^$&\"") + "\"";
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -775,6 +775,7 @@ FileReader::Shutdown()
|
||||||
mAsyncStream = nullptr;
|
mAsyncStream = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ClearProgressEventTimer();
|
||||||
FreeFileData();
|
FreeFileData();
|
||||||
mResultArrayBuffer = nullptr;
|
mResultArrayBuffer = nullptr;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26311,13 +26311,17 @@ ObjectStoreAddOrPutRequestOp::DoDatabaseWork(DatabaseConnection* aConnection)
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
nsCString flatCloneData;
|
AutoTArray<char, 4096> flatCloneData; // 4096 from JSStructuredCloneData
|
||||||
flatCloneData.SetLength(cloneDataSize);
|
if (!flatCloneData.SetLength(cloneDataSize, fallible)) {
|
||||||
auto iter = cloneData.Start();
|
return NS_ERROR_OUT_OF_MEMORY;
|
||||||
cloneData.ReadBytes(iter, flatCloneData.BeginWriting(), cloneDataSize);
|
}
|
||||||
|
{ // iter scope
|
||||||
|
auto iter = cloneData.Start();
|
||||||
|
MOZ_ALWAYS_TRUE(cloneData.ReadBytes(iter, flatCloneData.Elements(), cloneDataSize));
|
||||||
|
}
|
||||||
|
|
||||||
// Compress the bytes before adding into the database.
|
// Compress the bytes before adding into the database.
|
||||||
const char* uncompressed = flatCloneData.BeginReading();
|
const char* uncompressed = flatCloneData.Elements();
|
||||||
size_t uncompressedLength = cloneDataSize;
|
size_t uncompressedLength = cloneDataSize;
|
||||||
|
|
||||||
size_t compressedLength = snappy::MaxCompressedLength(uncompressedLength);
|
size_t compressedLength = snappy::MaxCompressedLength(uncompressedLength);
|
||||||
|
|
|
||||||
|
|
@ -819,8 +819,9 @@ ADTSTrackDemuxer::Read(uint8_t* aBuffer, int64_t aOffset, int32_t aSize)
|
||||||
|
|
||||||
const int64_t streamLen = StreamLength();
|
const int64_t streamLen = StreamLength();
|
||||||
if (mInfo && streamLen > 0) {
|
if (mInfo && streamLen > 0) {
|
||||||
|
int64_t max = streamLen > aOffset ? streamLen - aOffset : 0;
|
||||||
// Prevent blocking reads after successful initialization.
|
// Prevent blocking reads after successful initialization.
|
||||||
aSize = std::min<int64_t>(aSize, streamLen - aOffset);
|
aSize = std::min<int64_t>(aSize, max);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t read = 0;
|
uint32_t read = 0;
|
||||||
|
|
|
||||||
|
|
@ -676,8 +676,9 @@ MP3TrackDemuxer::Read(uint8_t* aBuffer, int64_t aOffset, int32_t aSize) {
|
||||||
|
|
||||||
const int64_t streamLen = StreamLength();
|
const int64_t streamLen = StreamLength();
|
||||||
if (mInfo && streamLen > 0) {
|
if (mInfo && streamLen > 0) {
|
||||||
|
uint64_t max = streamLen > aOffset ? streamLen - aOffset : 0;
|
||||||
// Prevent blocking reads after successful initialization.
|
// Prevent blocking reads after successful initialization.
|
||||||
aSize = std::min<int64_t>(aSize, streamLen - aOffset);
|
aSize = std::min<int64_t>(aSize, max);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t read = 0;
|
uint32_t read = 0;
|
||||||
|
|
|
||||||
|
|
@ -236,19 +236,6 @@ txMozillaXMLOutput::endDocument(nsresult aResult)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mRefreshString.IsEmpty()) {
|
|
||||||
nsPIDOMWindowOuter* win = mDocument->GetWindow();
|
|
||||||
if (win) {
|
|
||||||
nsCOMPtr<nsIRefreshURI> refURI =
|
|
||||||
do_QueryInterface(win->GetDocShell());
|
|
||||||
if (refURI) {
|
|
||||||
refURI->SetupRefreshURIFromHeader(mDocument->GetDocBaseURI(),
|
|
||||||
mDocument->NodePrincipal(),
|
|
||||||
mRefreshString);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mNotifier) {
|
if (mNotifier) {
|
||||||
mNotifier->OnTransformEnd();
|
mNotifier->OnTransformEnd();
|
||||||
}
|
}
|
||||||
|
|
@ -744,35 +731,11 @@ txMozillaXMLOutput::endHTMLElement(nsIContent* aElement)
|
||||||
mCurrentNodeStack.RemoveObjectAt(last);
|
mCurrentNodeStack.RemoveObjectAt(last);
|
||||||
mTableState = static_cast<TableState>
|
mTableState = static_cast<TableState>
|
||||||
(NS_PTR_TO_INT32(mTableStateStack.pop()));
|
(NS_PTR_TO_INT32(mTableStateStack.pop()));
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
else if (mCreatingNewDocument && aElement->IsHTMLElement(nsGkAtoms::meta)) {
|
|
||||||
// handle HTTP-EQUIV data
|
|
||||||
nsAutoString httpEquiv;
|
|
||||||
aElement->GetAttr(kNameSpaceID_None, nsGkAtoms::httpEquiv, httpEquiv);
|
|
||||||
if (!httpEquiv.IsEmpty()) {
|
|
||||||
nsAutoString value;
|
|
||||||
aElement->GetAttr(kNameSpaceID_None, nsGkAtoms::content, value);
|
|
||||||
if (!value.IsEmpty()) {
|
|
||||||
nsContentUtils::ASCIIToLower(httpEquiv);
|
|
||||||
nsCOMPtr<nsIAtom> header = NS_Atomize(httpEquiv);
|
|
||||||
processHTTPEquiv(header, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void txMozillaXMLOutput::processHTTPEquiv(nsIAtom* aHeader, const nsString& aValue)
|
|
||||||
{
|
|
||||||
// For now we only handle "refresh". There's a longer list in
|
|
||||||
// HTMLContentSink::ProcessHeaderData
|
|
||||||
if (aHeader == nsGkAtoms::refresh)
|
|
||||||
LossyCopyUTF16toASCII(aValue, mRefreshString);
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
txMozillaXMLOutput::createResultDocument(const nsSubstring& aName, int32_t aNsID,
|
txMozillaXMLOutput::createResultDocument(const nsSubstring& aName, int32_t aNsID,
|
||||||
nsIDOMDocument* aSourceDocument,
|
nsIDOMDocument* aSourceDocument,
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,6 @@ private:
|
||||||
nsresult createTxWrapper();
|
nsresult createTxWrapper();
|
||||||
nsresult startHTMLElement(nsIContent* aElement, bool aXHTML);
|
nsresult startHTMLElement(nsIContent* aElement, bool aXHTML);
|
||||||
nsresult endHTMLElement(nsIContent* aElement);
|
nsresult endHTMLElement(nsIContent* aElement);
|
||||||
void processHTTPEquiv(nsIAtom* aHeader, const nsString& aValue);
|
|
||||||
nsresult createHTMLElement(nsIAtom* aName,
|
nsresult createHTMLElement(nsIAtom* aName,
|
||||||
nsIContent** aResult);
|
nsIContent** aResult);
|
||||||
|
|
||||||
|
|
@ -105,7 +104,6 @@ private:
|
||||||
RefPtr<txTransformNotifier> mNotifier;
|
RefPtr<txTransformNotifier> mNotifier;
|
||||||
|
|
||||||
uint32_t mTreeDepth, mBadChildLevel;
|
uint32_t mTreeDepth, mBadChildLevel;
|
||||||
nsCString mRefreshString;
|
|
||||||
|
|
||||||
txStack mTableStateStack;
|
txStack mTableStateStack;
|
||||||
enum TableState {
|
enum TableState {
|
||||||
|
|
|
||||||
|
|
@ -545,6 +545,11 @@ ReadStructuredClone(JSContext* cx, JSStructuredCloneData& data,
|
||||||
JS::StructuredCloneScope scope, MutableHandleValue vp,
|
JS::StructuredCloneScope scope, MutableHandleValue vp,
|
||||||
const JSStructuredCloneCallbacks* cb, void* cbClosure)
|
const JSStructuredCloneCallbacks* cb, void* cbClosure)
|
||||||
{
|
{
|
||||||
|
if (data.Size() % 8) {
|
||||||
|
JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr,
|
||||||
|
JSMSG_SC_BAD_SERIALIZED_DATA, "misaligned");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
SCInput in(cx, data);
|
SCInput in(cx, data);
|
||||||
JSStructuredCloneReader r(in, scope, cb, cbClosure);
|
JSStructuredCloneReader r(in, scope, cb, cbClosure);
|
||||||
return r.read(vp);
|
return r.read(vp);
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,13 @@ if CONFIG['MOZ_ASAN']:
|
||||||
if CONFIG['OS_TARGET'] == 'WINNT':
|
if CONFIG['OS_TARGET'] == 'WINNT':
|
||||||
DEFFILE = 'mozglue.def'
|
DEFFILE = 'mozglue.def'
|
||||||
# We'll break the DLL blocklist if we immediately load user32.dll
|
# We'll break the DLL blocklist if we immediately load user32.dll
|
||||||
DELAYLOAD_DLLS += ['user32.dll']
|
# For the same reason, we delayload these other DLLs to avoid eager
|
||||||
|
# dependencies on user32.dll.
|
||||||
|
DELAYLOAD_DLLS += [
|
||||||
|
'dbghelp.dll',
|
||||||
|
'user32.dll',
|
||||||
|
'version.dll',
|
||||||
|
]
|
||||||
|
|
||||||
if not CONFIG['JS_STANDALONE']:
|
if not CONFIG['JS_STANDALONE']:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -139,6 +139,11 @@ SEC_ReadPKCS7Certs(SECItem *pkcs7Item, CERTImportCertificateFunc f, void *arg)
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (contentInfo.content.signedData == NULL) {
|
||||||
|
PORT_SetError(SEC_ERROR_BAD_DER);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
rv = SECSuccess;
|
rv = SECSuccess;
|
||||||
|
|
||||||
certs = contentInfo.content.signedData->certificates;
|
certs = contentInfo.content.signedData->certificates;
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@
|
||||||
#include "nsIURL.h"
|
#include "nsIURL.h"
|
||||||
#include "nsNetUtil.h"
|
#include "nsNetUtil.h"
|
||||||
#include "mozilla/Services.h"
|
#include "mozilla/Services.h"
|
||||||
|
#include "nsProxyRelease.h"
|
||||||
#include "nsIOutputStream.h"
|
#include "nsIOutputStream.h"
|
||||||
#include "nsXPCOMStrings.h"
|
#include "nsXPCOMStrings.h"
|
||||||
#include "nscore.h"
|
#include "nscore.h"
|
||||||
|
|
@ -442,6 +443,12 @@ STDMETHODIMP_(ULONG) nsDataObj::AddRef()
|
||||||
{
|
{
|
||||||
++m_cRef;
|
++m_cRef;
|
||||||
NS_LOG_ADDREF(this, m_cRef, "nsDataObj", sizeof(*this));
|
NS_LOG_ADDREF(this, m_cRef, "nsDataObj", sizeof(*this));
|
||||||
|
|
||||||
|
// When the first reference is taken, hold our own internal reference.
|
||||||
|
if (m_cRef == 1) {
|
||||||
|
mKeepAlive = this;
|
||||||
|
}
|
||||||
|
|
||||||
return m_cRef;
|
return m_cRef;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -528,6 +535,12 @@ STDMETHODIMP_(ULONG) nsDataObj::Release()
|
||||||
--m_cRef;
|
--m_cRef;
|
||||||
|
|
||||||
NS_LOG_RELEASE(this, m_cRef, "nsDataObj");
|
NS_LOG_RELEASE(this, m_cRef, "nsDataObj");
|
||||||
|
|
||||||
|
// If we hold the last reference, submit release of it to the main thread.
|
||||||
|
if (m_cRef == 1 && mKeepAlive) {
|
||||||
|
NS_ReleaseOnMainThread(mKeepAlive.forget(), true);
|
||||||
|
}
|
||||||
|
|
||||||
if (0 != m_cRef)
|
if (0 != m_cRef)
|
||||||
return m_cRef;
|
return m_cRef;
|
||||||
|
|
||||||
|
|
@ -542,6 +555,10 @@ STDMETHODIMP_(ULONG) nsDataObj::Release()
|
||||||
helper->Attach();
|
helper->Attach();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// In case the destructor ever AddRef/Releases, ensure we don't delete twice
|
||||||
|
// or take mKeepAlive as another reference.
|
||||||
|
m_cRef = 1;
|
||||||
|
|
||||||
delete this;
|
delete this;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -567,6 +584,9 @@ STDMETHODIMP nsDataObj::GetData(LPFORMATETC aFormat, LPSTGMEDIUM pSTM)
|
||||||
if (!mTransferable)
|
if (!mTransferable)
|
||||||
return DV_E_FORMATETC;
|
return DV_E_FORMATETC;
|
||||||
|
|
||||||
|
// Hold an extra reference in case we end up spinning the event loop.
|
||||||
|
RefPtr<nsDataObj> keepAliveDuringGetData(this);
|
||||||
|
|
||||||
uint32_t dfInx = 0;
|
uint32_t dfInx = 0;
|
||||||
|
|
||||||
static CLIPFORMAT fileDescriptorFlavorA = ::RegisterClipboardFormat( CFSTR_FILEDESCRIPTORA );
|
static CLIPFORMAT fileDescriptorFlavorA = ::RegisterClipboardFormat( CFSTR_FILEDESCRIPTORA );
|
||||||
|
|
|
||||||
|
|
@ -228,6 +228,7 @@ protected:
|
||||||
// nsDataObj owns and ref counts CEnumFormatEtc,
|
// nsDataObj owns and ref counts CEnumFormatEtc,
|
||||||
|
|
||||||
nsCOMPtr<nsIFile> mCachedTempFile;
|
nsCOMPtr<nsIFile> mCachedTempFile;
|
||||||
|
RefPtr<nsDataObj> mKeepAlive;
|
||||||
|
|
||||||
BOOL mIsAsyncMode;
|
BOOL mIsAsyncMode;
|
||||||
BOOL mIsInOperation;
|
BOOL mIsInOperation;
|
||||||
|
|
|
||||||
|
|
@ -1587,7 +1587,20 @@ NS_IMETHODIMP nsWindow::Show(bool bState)
|
||||||
// the popup.
|
// the popup.
|
||||||
flags |= SWP_NOACTIVATE;
|
flags |= SWP_NOACTIVATE;
|
||||||
HWND owner = ::GetWindow(mWnd, GW_OWNER);
|
HWND owner = ::GetWindow(mWnd, GW_OWNER);
|
||||||
::SetWindowPos(mWnd, owner ? 0 : HWND_TOPMOST, 0, 0, 0, 0, flags);
|
if (owner) {
|
||||||
|
// ePopupLevelTop popups should be above all else. All other
|
||||||
|
// types should be placed in front of their owner, without
|
||||||
|
// changing the owner's z-level relative to other windows.
|
||||||
|
if (PopupLevel() != ePopupLevelTop) {
|
||||||
|
::SetWindowPos(mWnd, owner, 0, 0, 0, 0, flags);
|
||||||
|
::SetWindowPos(owner, mWnd, 0, 0, 0, 0,
|
||||||
|
SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
|
||||||
|
} else {
|
||||||
|
::SetWindowPos(mWnd, HWND_TOP, 0, 0, 0, 0, flags);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
::SetWindowPos(mWnd, HWND_TOPMOST, 0, 0, 0, 0, flags);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (mWindowType == eWindowType_dialog && !CanTakeFocus())
|
if (mWindowType == eWindowType_dialog && !CanTakeFocus())
|
||||||
flags |= SWP_NOACTIVATE;
|
flags |= SWP_NOACTIVATE;
|
||||||
|
|
@ -3449,8 +3462,6 @@ nsWindow::MakeFullScreen(bool aFullScreen, nsIScreen* aTargetScreen)
|
||||||
taskbarInfo->PrepareFullScreenHWND(mWnd, TRUE);
|
taskbarInfo->PrepareFullScreenHWND(mWnd, TRUE);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (mSizeMode != nsSizeMode_Fullscreen)
|
|
||||||
return NS_OK;
|
|
||||||
SetSizeMode(mOldSizeMode);
|
SetSizeMode(mOldSizeMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue