mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-09-30 18:56:40 +00:00
#568: M1560495 (adapted for 45) M1562033+M1466449 M1559715 M1564449 M1573160
This commit is contained in:
parent
c45b2e8b51
commit
d019bd3dc9
@ -134,13 +134,13 @@ public:
|
||||
return GetDOMTiming()->GetNavigationStart();
|
||||
}
|
||||
DOMTimeMilliSec UnloadEventStart() {
|
||||
if (!nsContentUtils::IsPerformanceTimingEnabled()) {
|
||||
if (!nsContentUtils::IsPerformanceTimingEnabled() || !mAllRedirectsSameOrigin) {
|
||||
return 0;
|
||||
}
|
||||
return GetDOMTiming()->GetUnloadEventStart();
|
||||
}
|
||||
DOMTimeMilliSec UnloadEventEnd() {
|
||||
if (!nsContentUtils::IsPerformanceTimingEnabled()) {
|
||||
if (!nsContentUtils::IsPerformanceTimingEnabled() || !mAllRedirectsSameOrigin) {
|
||||
return 0;
|
||||
}
|
||||
return GetDOMTiming()->GetUnloadEventEnd();
|
||||
|
@ -636,7 +636,7 @@ ImageDocument::CreateSyntheticDocument()
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// Add the image element
|
||||
Element* body = GetBodyElement();
|
||||
RefPtr<Element> body = GetBodyElement();
|
||||
if (!body) {
|
||||
NS_WARNING("no body on image document!");
|
||||
return NS_ERROR_FAILURE;
|
||||
|
@ -206,7 +206,7 @@ PluginDocument::CreateSyntheticPluginDocument()
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
// then attach our plugin
|
||||
|
||||
Element* body = GetBodyElement();
|
||||
RefPtr<Element> body = GetBodyElement();
|
||||
if (!body) {
|
||||
NS_WARNING("no body on plugin document!");
|
||||
return NS_ERROR_FAILURE;
|
||||
|
@ -90,7 +90,7 @@ VideoDocument::CreateSyntheticVideoDocument(nsIChannel* aChannel,
|
||||
nsresult rv = MediaDocument::CreateSyntheticDocument();
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
Element* body = GetBodyElement();
|
||||
RefPtr<Element> body = GetBodyElement();
|
||||
if (!body) {
|
||||
NS_WARNING("no body on video document!");
|
||||
return NS_ERROR_FAILURE;
|
||||
|
@ -268,13 +268,6 @@ SVGFEImageElement::OutputIsTainted(const nsTArray<bool>& aInputsAreTainted,
|
||||
return false;
|
||||
}
|
||||
|
||||
uint32_t status;
|
||||
currentRequest->GetImageStatus(&status);
|
||||
if ((status & imgIRequest::STATUS_LOAD_COMPLETE) == 0) {
|
||||
// The load has not completed yet.
|
||||
return false;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIPrincipal> principal;
|
||||
rv = currentRequest->GetImagePrincipal(getter_AddRefs(principal));
|
||||
if (NS_FAILED(rv) || !principal) {
|
||||
|
@ -45,8 +45,16 @@ struct staticJArray {
|
||||
};
|
||||
|
||||
template<class T, class L>
|
||||
struct jArray {
|
||||
class autoJArray;
|
||||
|
||||
template <class T, class L>
|
||||
class jArray {
|
||||
friend class autoJArray<T, L>;
|
||||
|
||||
private:
|
||||
T* arr;
|
||||
|
||||
public:
|
||||
L length;
|
||||
static jArray<T,L> newJArray(L const len) {
|
||||
MOZ_ASSERT(len >= 0, "Negative length.");
|
||||
@ -69,6 +77,11 @@ struct jArray {
|
||||
arr = (T*)other.arr;
|
||||
length = other.length;
|
||||
}
|
||||
MOZ_IMPLICIT jArray(decltype(nullptr)) : arr(nullptr), length(0) {}
|
||||
jArray() : arr(nullptr), length(0) {}
|
||||
|
||||
private:
|
||||
jArray(T* aArr, L aLength) : arr(aArr), length(aLength) {}
|
||||
};
|
||||
|
||||
template<class T, class L>
|
||||
|
@ -126,16 +126,12 @@ nsHtml5Tokenizer::isViewingXmlSource()
|
||||
return viewingXmlSource;
|
||||
}
|
||||
|
||||
void
|
||||
nsHtml5Tokenizer::setStateAndEndTagExpectation(int32_t specialTokenizerState, nsIAtom* endTagExpectation)
|
||||
void
|
||||
nsHtml5Tokenizer::setState(int32_t specialTokenizerState)
|
||||
{
|
||||
this->stateSave = specialTokenizerState;
|
||||
if (specialTokenizerState == NS_HTML5TOKENIZER_DATA) {
|
||||
return;
|
||||
}
|
||||
autoJArray<char16_t,int32_t> asArray = nsHtml5Portability::newCharArrayFromLocal(endTagExpectation);
|
||||
this->endTagExpectation = nsHtml5ElementName::elementNameByBuffer(asArray, 0, asArray.length, interner);
|
||||
endTagExpectationToArray();
|
||||
this->endTagExpectation = nullptr;
|
||||
this->endTagExpectationAsArray = nullptr;
|
||||
}
|
||||
|
||||
void
|
||||
@ -2000,7 +1996,13 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
NS_HTML5_BREAK(stateloop);
|
||||
}
|
||||
c = checkChar(buf, pos);
|
||||
if (index < endTagExpectationAsArray.length) {
|
||||
if (!endTagExpectationAsArray) {
|
||||
tokenHandler->characters(nsHtml5Tokenizer::LT_SOLIDUS, 0, 2);
|
||||
cstart = pos;
|
||||
reconsume = true;
|
||||
state = P::transition(mViewSource, returnState, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
} else if (index < endTagExpectationAsArray.length) {
|
||||
char16_t e = endTagExpectationAsArray[index];
|
||||
char16_t folded = c;
|
||||
if (c >= 'A' && c <= 'Z') {
|
||||
|
@ -142,7 +142,7 @@ class nsHtml5Tokenizer
|
||||
void setInterner(nsHtml5AtomTable* interner);
|
||||
void initLocation(nsHtml5String newPublicId, nsHtml5String newSystemId);
|
||||
bool isViewingXmlSource();
|
||||
void setStateAndEndTagExpectation(int32_t specialTokenizerState, nsIAtom* endTagExpectation);
|
||||
void setState(int32_t specialTokenizerState);
|
||||
void setStateAndEndTagExpectation(int32_t specialTokenizerState, nsHtml5ElementName* endTagExpectation);
|
||||
private:
|
||||
void endTagExpectationToArray();
|
||||
|
@ -105,7 +105,7 @@ nsHtml5TreeBuilder::startTokenization(nsHtml5Tokenizer* self)
|
||||
nsHtml5StackNode* node = new nsHtml5StackNode(elementName, elementName->camelCaseName, elt);
|
||||
currentPtr++;
|
||||
stack[currentPtr] = node;
|
||||
tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_DATA, contextName);
|
||||
tokenizer->setState(NS_HTML5TOKENIZER_DATA);
|
||||
mode = NS_HTML5TREE_BUILDER_FRAMESET_OK;
|
||||
} else if (contextNamespace == kNameSpaceID_MathML) {
|
||||
nsHtml5ElementName* elementName = nsHtml5ElementName::ELT_MATH;
|
||||
@ -117,7 +117,7 @@ nsHtml5TreeBuilder::startTokenization(nsHtml5Tokenizer* self)
|
||||
nsHtml5StackNode* node = new nsHtml5StackNode(elementName, elt, elementName->name, false);
|
||||
currentPtr++;
|
||||
stack[currentPtr] = node;
|
||||
tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_DATA, contextName);
|
||||
tokenizer->setState(NS_HTML5TOKENIZER_DATA);
|
||||
mode = NS_HTML5TREE_BUILDER_FRAMESET_OK;
|
||||
} else {
|
||||
nsHtml5StackNode* node = new nsHtml5StackNode(nsHtml5ElementName::ELT_HTML, elt);
|
||||
@ -129,15 +129,15 @@ nsHtml5TreeBuilder::startTokenization(nsHtml5Tokenizer* self)
|
||||
resetTheInsertionMode();
|
||||
formPointer = getFormPointerForContext(contextNode);
|
||||
if (nsHtml5Atoms::title == contextName || nsHtml5Atoms::textarea == contextName) {
|
||||
tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_RCDATA, contextName);
|
||||
tokenizer->setState(NS_HTML5TOKENIZER_RCDATA);
|
||||
} else if (nsHtml5Atoms::style == contextName || nsHtml5Atoms::xmp == contextName || nsHtml5Atoms::iframe == contextName || nsHtml5Atoms::noembed == contextName || nsHtml5Atoms::noframes == contextName || (scriptingEnabled && nsHtml5Atoms::noscript == contextName)) {
|
||||
tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_RAWTEXT, contextName);
|
||||
tokenizer->setState(NS_HTML5TOKENIZER_RAWTEXT);
|
||||
} else if (nsHtml5Atoms::plaintext == contextName) {
|
||||
tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_PLAINTEXT, contextName);
|
||||
tokenizer->setState(NS_HTML5TOKENIZER_PLAINTEXT);
|
||||
} else if (nsHtml5Atoms::script == contextName) {
|
||||
tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_SCRIPT_DATA, contextName);
|
||||
tokenizer->setState(NS_HTML5TOKENIZER_SCRIPT_DATA);
|
||||
} else {
|
||||
tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_DATA, contextName);
|
||||
tokenizer->setState(NS_HTML5TOKENIZER_DATA);
|
||||
}
|
||||
}
|
||||
contextName = nullptr;
|
||||
|
@ -112,7 +112,9 @@ nsThreadPool::PutEvent(already_AddRefed<nsIRunnable>&& aEvent)
|
||||
bool killThread = false;
|
||||
{
|
||||
MutexAutoLock lock(mMutex);
|
||||
if (mThreads.Count() < (int32_t)mThreadLimit) {
|
||||
if (mShutdown) {
|
||||
killThread = true;
|
||||
} else if (mThreads.Count() < (int32_t)mThreadLimit) {
|
||||
mThreads.AppendObject(thread);
|
||||
} else {
|
||||
killThread = true; // okay, we don't need this thread anymore
|
||||
|
Loading…
Reference in New Issue
Block a user