From ca83ee5b2b1b0a286f93872f9809bde890e1b935 Mon Sep 17 00:00:00 2001 From: Peter Van der Beken Date: Sun, 15 Nov 2009 11:57:49 +0100 Subject: [PATCH 01/45] Fix for bug 528300. r=sicking, a=blocking1.9.2+. --HG-- extra : rebase_source : c5bf7807f1840ab5a34b868b0eb90a6b1ec2d017 --- content/xslt/crashtests/528300.xml | 22 +++++++++++++++ content/xslt/crashtests/528488.xml | 19 +++++++++++++ content/xslt/crashtests/crashtests.list | 2 ++ content/xslt/src/xpath/txCoreFunctionCall.cpp | 28 ++++++++++++++----- content/xslt/src/xpath/txExpr.h | 3 +- content/xslt/src/xpath/txFunctionCall.cpp | 12 +++++--- .../src/xpath/txXPCOMExtensionFunction.cpp | 6 +++- .../src/xslt/txFormatNumberFunctionCall.cpp | 5 ++-- 8 files changed, 82 insertions(+), 15 deletions(-) create mode 100644 content/xslt/crashtests/528300.xml create mode 100644 content/xslt/crashtests/528488.xml diff --git a/content/xslt/crashtests/528300.xml b/content/xslt/crashtests/528300.xml new file mode 100644 index 00000000000..8902bb373e8 --- /dev/null +++ b/content/xslt/crashtests/528300.xml @@ -0,0 +1,22 @@ + + + +]> + + + + + + + + + + + + + diff --git a/content/xslt/crashtests/528488.xml b/content/xslt/crashtests/528488.xml new file mode 100644 index 00000000000..904b3456123 --- /dev/null +++ b/content/xslt/crashtests/528488.xml @@ -0,0 +1,19 @@ + + + +]> + + + + + + + + + diff --git a/content/xslt/crashtests/crashtests.list b/content/xslt/crashtests/crashtests.list index b6c5c98307e..4b0350c88a8 100644 --- a/content/xslt/crashtests/crashtests.list +++ b/content/xslt/crashtests/crashtests.list @@ -6,3 +6,5 @@ load 406106-1.html load 483444.xml load 485217.xml load 485286.xml +load 528300.xml +load 528488.xml diff --git a/content/xslt/src/xpath/txCoreFunctionCall.cpp b/content/xslt/src/xpath/txCoreFunctionCall.cpp index 03ce61a7406..46236cb53fc 100644 --- a/content/xslt/src/xpath/txCoreFunctionCall.cpp +++ b/content/xslt/src/xpath/txCoreFunctionCall.cpp @@ -387,7 +387,9 @@ txCoreFunctionCall::evaluate(txIEvalContext* aContext, txAExprResult** aResult) rv = mParams[0]->evaluateToString(aContext, src); NS_ENSURE_SUCCESS(rv, rv); - double start = evaluateToNumber(mParams[1], aContext); + double start; + rv = evaluateToNumber(mParams[1], aContext, &start); + NS_ENSURE_SUCCESS(rv, rv); // check for NaN or +/-Inf if (Double::isNaN(start) || @@ -402,8 +404,10 @@ txCoreFunctionCall::evaluate(txIEvalContext* aContext, txAExprResult** aResult) double end; if (mParams.Length() == 3) { - end = start + evaluateToNumber(mParams[2], - aContext); + rv = evaluateToNumber(mParams[2], aContext, &end); + NS_ENSURE_SUCCESS(rv, rv); + + end += start; if (Double::isNaN(end) || end < 0) { aContext->recycler()->getEmptyStringResult(aResult); @@ -531,7 +535,8 @@ txCoreFunctionCall::evaluate(txIEvalContext* aContext, txAExprResult** aResult) { double res; if (!mParams.IsEmpty()) { - res = evaluateToNumber(mParams[0], aContext); + rv = evaluateToNumber(mParams[0], aContext, &res); + NS_ENSURE_SUCCESS(rv, rv); } else { nsAutoString resultStr; @@ -543,7 +548,10 @@ txCoreFunctionCall::evaluate(txIEvalContext* aContext, txAExprResult** aResult) } case ROUND: { - double dbl = evaluateToNumber(mParams[0], aContext); + double dbl; + rv = evaluateToNumber(mParams[0], aContext, &dbl); + NS_ENSURE_SUCCESS(rv, rv); + if (!Double::isNaN(dbl) && !Double::isInfinite(dbl)) { if (Double::isNeg(dbl) && dbl >= -0.5) { dbl *= 0; @@ -557,7 +565,10 @@ txCoreFunctionCall::evaluate(txIEvalContext* aContext, txAExprResult** aResult) } case FLOOR: { - double dbl = evaluateToNumber(mParams[0], aContext); + double dbl; + rv = evaluateToNumber(mParams[0], aContext, &dbl); + NS_ENSURE_SUCCESS(rv, rv); + if (!Double::isNaN(dbl) && !Double::isInfinite(dbl) && !(dbl == 0 && Double::isNeg(dbl))) { @@ -568,7 +579,10 @@ txCoreFunctionCall::evaluate(txIEvalContext* aContext, txAExprResult** aResult) } case CEILING: { - double dbl = evaluateToNumber(mParams[0], aContext); + double dbl; + rv = evaluateToNumber(mParams[0], aContext, &dbl); + NS_ENSURE_SUCCESS(rv, rv); + if (!Double::isNaN(dbl) && !Double::isInfinite(dbl)) { if (Double::isNeg(dbl) && dbl > -1) { dbl *= 0; diff --git a/content/xslt/src/xpath/txExpr.h b/content/xslt/src/xpath/txExpr.h index 26d8cd4013f..a859c660d70 100644 --- a/content/xslt/src/xpath/txExpr.h +++ b/content/xslt/src/xpath/txExpr.h @@ -330,7 +330,8 @@ protected: /* * Evaluates the given Expression and converts its result to a number. */ - static double evaluateToNumber(Expr* aExpr, txIEvalContext* aContext); + static nsresult evaluateToNumber(Expr* aExpr, txIEvalContext* aContext, + double* aResult); /* * Evaluates the given Expression and converts its result to a NodeSet. diff --git a/content/xslt/src/xpath/txFunctionCall.cpp b/content/xslt/src/xpath/txFunctionCall.cpp index 2e6df285f09..d3d8d0a08aa 100644 --- a/content/xslt/src/xpath/txFunctionCall.cpp +++ b/content/xslt/src/xpath/txFunctionCall.cpp @@ -52,15 +52,19 @@ /* * Evaluates the given Expression and converts its result to a number. */ -double FunctionCall::evaluateToNumber(Expr* aExpr, txIEvalContext* aContext) +// static +nsresult +FunctionCall::evaluateToNumber(Expr* aExpr, txIEvalContext* aContext, + double* aResult) { NS_ASSERTION(aExpr, "missing expression"); nsRefPtr exprResult; nsresult rv = aExpr->evaluate(aContext, getter_AddRefs(exprResult)); - if (NS_FAILED(rv)) - return Double::NaN; + NS_ENSURE_SUCCESS(rv, rv); - return exprResult->numberValue(); + *aResult = exprResult->numberValue(); + + return NS_OK; } /* diff --git a/content/xslt/src/xpath/txXPCOMExtensionFunction.cpp b/content/xslt/src/xpath/txXPCOMExtensionFunction.cpp index 8975aa55c44..f7822b5b104 100644 --- a/content/xslt/src/xpath/txXPCOMExtensionFunction.cpp +++ b/content/xslt/src/xpath/txXPCOMExtensionFunction.cpp @@ -479,7 +479,11 @@ txXPCOMExtensionFunctionCall::evaluate(txIEvalContext* aContext, } case eNUMBER: { - invokeParam.val.d = evaluateToNumber(expr, aContext); + double dbl; + rv = evaluateToNumber(mParams[0], aContext, &dbl); + NS_ENSURE_SUCCESS(rv, rv); + + invokeParam.val.d = dbl; break; } case eSTRING: diff --git a/content/xslt/src/xslt/txFormatNumberFunctionCall.cpp b/content/xslt/src/xslt/txFormatNumberFunctionCall.cpp index ac9fd8edce1..93ca46ea64e 100644 --- a/content/xslt/src/xslt/txFormatNumberFunctionCall.cpp +++ b/content/xslt/src/xslt/txFormatNumberFunctionCall.cpp @@ -84,10 +84,11 @@ txFormatNumberFunctionCall::evaluate(txIEvalContext* aContext, double value; txExpandedName formatName; - value = evaluateToNumber(mParams[0], aContext); + nsresult rv = evaluateToNumber(mParams[0], aContext, &value); + NS_ENSURE_SUCCESS(rv, rv); nsAutoString formatStr; - nsresult rv = mParams[1]->evaluateToString(aContext, formatStr); + rv = mParams[1]->evaluateToString(aContext, formatStr); NS_ENSURE_SUCCESS(rv, rv); if (mParams.Length() == 3) { From e54564316c546cc175385a5119796b339d3d3992 Mon Sep 17 00:00:00 2001 From: Peter Van der Beken Date: Sat, 21 Nov 2009 15:48:49 +0100 Subject: [PATCH 02/45] Back out c5619fbfb2b1 to fix orange. --- content/xslt/crashtests/528300.xml | 22 --------------- content/xslt/crashtests/528488.xml | 19 ------------- content/xslt/crashtests/crashtests.list | 2 -- content/xslt/src/xpath/txCoreFunctionCall.cpp | 28 +++++-------------- content/xslt/src/xpath/txExpr.h | 3 +- content/xslt/src/xpath/txFunctionCall.cpp | 12 +++----- .../src/xpath/txXPCOMExtensionFunction.cpp | 6 +--- .../src/xslt/txFormatNumberFunctionCall.cpp | 5 ++-- 8 files changed, 15 insertions(+), 82 deletions(-) delete mode 100644 content/xslt/crashtests/528300.xml delete mode 100644 content/xslt/crashtests/528488.xml diff --git a/content/xslt/crashtests/528300.xml b/content/xslt/crashtests/528300.xml deleted file mode 100644 index 8902bb373e8..00000000000 --- a/content/xslt/crashtests/528300.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - -]> - - - - - - - - - - - - - diff --git a/content/xslt/crashtests/528488.xml b/content/xslt/crashtests/528488.xml deleted file mode 100644 index 904b3456123..00000000000 --- a/content/xslt/crashtests/528488.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - -]> - - - - - - - - - diff --git a/content/xslt/crashtests/crashtests.list b/content/xslt/crashtests/crashtests.list index 4b0350c88a8..b6c5c98307e 100644 --- a/content/xslt/crashtests/crashtests.list +++ b/content/xslt/crashtests/crashtests.list @@ -6,5 +6,3 @@ load 406106-1.html load 483444.xml load 485217.xml load 485286.xml -load 528300.xml -load 528488.xml diff --git a/content/xslt/src/xpath/txCoreFunctionCall.cpp b/content/xslt/src/xpath/txCoreFunctionCall.cpp index 46236cb53fc..03ce61a7406 100644 --- a/content/xslt/src/xpath/txCoreFunctionCall.cpp +++ b/content/xslt/src/xpath/txCoreFunctionCall.cpp @@ -387,9 +387,7 @@ txCoreFunctionCall::evaluate(txIEvalContext* aContext, txAExprResult** aResult) rv = mParams[0]->evaluateToString(aContext, src); NS_ENSURE_SUCCESS(rv, rv); - double start; - rv = evaluateToNumber(mParams[1], aContext, &start); - NS_ENSURE_SUCCESS(rv, rv); + double start = evaluateToNumber(mParams[1], aContext); // check for NaN or +/-Inf if (Double::isNaN(start) || @@ -404,10 +402,8 @@ txCoreFunctionCall::evaluate(txIEvalContext* aContext, txAExprResult** aResult) double end; if (mParams.Length() == 3) { - rv = evaluateToNumber(mParams[2], aContext, &end); - NS_ENSURE_SUCCESS(rv, rv); - - end += start; + end = start + evaluateToNumber(mParams[2], + aContext); if (Double::isNaN(end) || end < 0) { aContext->recycler()->getEmptyStringResult(aResult); @@ -535,8 +531,7 @@ txCoreFunctionCall::evaluate(txIEvalContext* aContext, txAExprResult** aResult) { double res; if (!mParams.IsEmpty()) { - rv = evaluateToNumber(mParams[0], aContext, &res); - NS_ENSURE_SUCCESS(rv, rv); + res = evaluateToNumber(mParams[0], aContext); } else { nsAutoString resultStr; @@ -548,10 +543,7 @@ txCoreFunctionCall::evaluate(txIEvalContext* aContext, txAExprResult** aResult) } case ROUND: { - double dbl; - rv = evaluateToNumber(mParams[0], aContext, &dbl); - NS_ENSURE_SUCCESS(rv, rv); - + double dbl = evaluateToNumber(mParams[0], aContext); if (!Double::isNaN(dbl) && !Double::isInfinite(dbl)) { if (Double::isNeg(dbl) && dbl >= -0.5) { dbl *= 0; @@ -565,10 +557,7 @@ txCoreFunctionCall::evaluate(txIEvalContext* aContext, txAExprResult** aResult) } case FLOOR: { - double dbl; - rv = evaluateToNumber(mParams[0], aContext, &dbl); - NS_ENSURE_SUCCESS(rv, rv); - + double dbl = evaluateToNumber(mParams[0], aContext); if (!Double::isNaN(dbl) && !Double::isInfinite(dbl) && !(dbl == 0 && Double::isNeg(dbl))) { @@ -579,10 +568,7 @@ txCoreFunctionCall::evaluate(txIEvalContext* aContext, txAExprResult** aResult) } case CEILING: { - double dbl; - rv = evaluateToNumber(mParams[0], aContext, &dbl); - NS_ENSURE_SUCCESS(rv, rv); - + double dbl = evaluateToNumber(mParams[0], aContext); if (!Double::isNaN(dbl) && !Double::isInfinite(dbl)) { if (Double::isNeg(dbl) && dbl > -1) { dbl *= 0; diff --git a/content/xslt/src/xpath/txExpr.h b/content/xslt/src/xpath/txExpr.h index a859c660d70..26d8cd4013f 100644 --- a/content/xslt/src/xpath/txExpr.h +++ b/content/xslt/src/xpath/txExpr.h @@ -330,8 +330,7 @@ protected: /* * Evaluates the given Expression and converts its result to a number. */ - static nsresult evaluateToNumber(Expr* aExpr, txIEvalContext* aContext, - double* aResult); + static double evaluateToNumber(Expr* aExpr, txIEvalContext* aContext); /* * Evaluates the given Expression and converts its result to a NodeSet. diff --git a/content/xslt/src/xpath/txFunctionCall.cpp b/content/xslt/src/xpath/txFunctionCall.cpp index d3d8d0a08aa..2e6df285f09 100644 --- a/content/xslt/src/xpath/txFunctionCall.cpp +++ b/content/xslt/src/xpath/txFunctionCall.cpp @@ -52,19 +52,15 @@ /* * Evaluates the given Expression and converts its result to a number. */ -// static -nsresult -FunctionCall::evaluateToNumber(Expr* aExpr, txIEvalContext* aContext, - double* aResult) +double FunctionCall::evaluateToNumber(Expr* aExpr, txIEvalContext* aContext) { NS_ASSERTION(aExpr, "missing expression"); nsRefPtr exprResult; nsresult rv = aExpr->evaluate(aContext, getter_AddRefs(exprResult)); - NS_ENSURE_SUCCESS(rv, rv); + if (NS_FAILED(rv)) + return Double::NaN; - *aResult = exprResult->numberValue(); - - return NS_OK; + return exprResult->numberValue(); } /* diff --git a/content/xslt/src/xpath/txXPCOMExtensionFunction.cpp b/content/xslt/src/xpath/txXPCOMExtensionFunction.cpp index f7822b5b104..8975aa55c44 100644 --- a/content/xslt/src/xpath/txXPCOMExtensionFunction.cpp +++ b/content/xslt/src/xpath/txXPCOMExtensionFunction.cpp @@ -479,11 +479,7 @@ txXPCOMExtensionFunctionCall::evaluate(txIEvalContext* aContext, } case eNUMBER: { - double dbl; - rv = evaluateToNumber(mParams[0], aContext, &dbl); - NS_ENSURE_SUCCESS(rv, rv); - - invokeParam.val.d = dbl; + invokeParam.val.d = evaluateToNumber(expr, aContext); break; } case eSTRING: diff --git a/content/xslt/src/xslt/txFormatNumberFunctionCall.cpp b/content/xslt/src/xslt/txFormatNumberFunctionCall.cpp index 93ca46ea64e..ac9fd8edce1 100644 --- a/content/xslt/src/xslt/txFormatNumberFunctionCall.cpp +++ b/content/xslt/src/xslt/txFormatNumberFunctionCall.cpp @@ -84,11 +84,10 @@ txFormatNumberFunctionCall::evaluate(txIEvalContext* aContext, double value; txExpandedName formatName; - nsresult rv = evaluateToNumber(mParams[0], aContext, &value); - NS_ENSURE_SUCCESS(rv, rv); + value = evaluateToNumber(mParams[0], aContext); nsAutoString formatStr; - rv = mParams[1]->evaluateToString(aContext, formatStr); + nsresult rv = mParams[1]->evaluateToString(aContext, formatStr); NS_ENSURE_SUCCESS(rv, rv); if (mParams.Length() == 3) { From c338e8adb34c237b25b67bd095960130014a9227 Mon Sep 17 00:00:00 2001 From: Peter Van der Beken Date: Sun, 15 Nov 2009 11:57:49 +0100 Subject: [PATCH 03/45] Fix for bug 528300. r=sicking, a=blocking1.9.2+. --- content/xslt/crashtests/528300.xml | 22 +++++++++++++++ content/xslt/crashtests/528488.xml | 19 +++++++++++++ content/xslt/crashtests/crashtests.list | 2 ++ content/xslt/src/xpath/txCoreFunctionCall.cpp | 28 ++++++++++++++----- content/xslt/src/xpath/txExpr.h | 3 +- content/xslt/src/xpath/txFunctionCall.cpp | 12 +++++--- .../src/xpath/txXPCOMExtensionFunction.cpp | 6 +++- content/xslt/src/xslt/txExecutionState.cpp | 7 +++-- .../src/xslt/txFormatNumberFunctionCall.cpp | 5 ++-- content/xslt/src/xslt/txVariableMap.h | 9 ++++++ 10 files changed, 96 insertions(+), 17 deletions(-) create mode 100644 content/xslt/crashtests/528300.xml create mode 100644 content/xslt/crashtests/528488.xml diff --git a/content/xslt/crashtests/528300.xml b/content/xslt/crashtests/528300.xml new file mode 100644 index 00000000000..8902bb373e8 --- /dev/null +++ b/content/xslt/crashtests/528300.xml @@ -0,0 +1,22 @@ + + + +]> + + + + + + + + + + + + + diff --git a/content/xslt/crashtests/528488.xml b/content/xslt/crashtests/528488.xml new file mode 100644 index 00000000000..904b3456123 --- /dev/null +++ b/content/xslt/crashtests/528488.xml @@ -0,0 +1,19 @@ + + + +]> + + + + + + + + + diff --git a/content/xslt/crashtests/crashtests.list b/content/xslt/crashtests/crashtests.list index b6c5c98307e..4b0350c88a8 100644 --- a/content/xslt/crashtests/crashtests.list +++ b/content/xslt/crashtests/crashtests.list @@ -6,3 +6,5 @@ load 406106-1.html load 483444.xml load 485217.xml load 485286.xml +load 528300.xml +load 528488.xml diff --git a/content/xslt/src/xpath/txCoreFunctionCall.cpp b/content/xslt/src/xpath/txCoreFunctionCall.cpp index 03ce61a7406..46236cb53fc 100644 --- a/content/xslt/src/xpath/txCoreFunctionCall.cpp +++ b/content/xslt/src/xpath/txCoreFunctionCall.cpp @@ -387,7 +387,9 @@ txCoreFunctionCall::evaluate(txIEvalContext* aContext, txAExprResult** aResult) rv = mParams[0]->evaluateToString(aContext, src); NS_ENSURE_SUCCESS(rv, rv); - double start = evaluateToNumber(mParams[1], aContext); + double start; + rv = evaluateToNumber(mParams[1], aContext, &start); + NS_ENSURE_SUCCESS(rv, rv); // check for NaN or +/-Inf if (Double::isNaN(start) || @@ -402,8 +404,10 @@ txCoreFunctionCall::evaluate(txIEvalContext* aContext, txAExprResult** aResult) double end; if (mParams.Length() == 3) { - end = start + evaluateToNumber(mParams[2], - aContext); + rv = evaluateToNumber(mParams[2], aContext, &end); + NS_ENSURE_SUCCESS(rv, rv); + + end += start; if (Double::isNaN(end) || end < 0) { aContext->recycler()->getEmptyStringResult(aResult); @@ -531,7 +535,8 @@ txCoreFunctionCall::evaluate(txIEvalContext* aContext, txAExprResult** aResult) { double res; if (!mParams.IsEmpty()) { - res = evaluateToNumber(mParams[0], aContext); + rv = evaluateToNumber(mParams[0], aContext, &res); + NS_ENSURE_SUCCESS(rv, rv); } else { nsAutoString resultStr; @@ -543,7 +548,10 @@ txCoreFunctionCall::evaluate(txIEvalContext* aContext, txAExprResult** aResult) } case ROUND: { - double dbl = evaluateToNumber(mParams[0], aContext); + double dbl; + rv = evaluateToNumber(mParams[0], aContext, &dbl); + NS_ENSURE_SUCCESS(rv, rv); + if (!Double::isNaN(dbl) && !Double::isInfinite(dbl)) { if (Double::isNeg(dbl) && dbl >= -0.5) { dbl *= 0; @@ -557,7 +565,10 @@ txCoreFunctionCall::evaluate(txIEvalContext* aContext, txAExprResult** aResult) } case FLOOR: { - double dbl = evaluateToNumber(mParams[0], aContext); + double dbl; + rv = evaluateToNumber(mParams[0], aContext, &dbl); + NS_ENSURE_SUCCESS(rv, rv); + if (!Double::isNaN(dbl) && !Double::isInfinite(dbl) && !(dbl == 0 && Double::isNeg(dbl))) { @@ -568,7 +579,10 @@ txCoreFunctionCall::evaluate(txIEvalContext* aContext, txAExprResult** aResult) } case CEILING: { - double dbl = evaluateToNumber(mParams[0], aContext); + double dbl; + rv = evaluateToNumber(mParams[0], aContext, &dbl); + NS_ENSURE_SUCCESS(rv, rv); + if (!Double::isNaN(dbl) && !Double::isInfinite(dbl)) { if (Double::isNeg(dbl) && dbl > -1) { dbl *= 0; diff --git a/content/xslt/src/xpath/txExpr.h b/content/xslt/src/xpath/txExpr.h index 26d8cd4013f..a859c660d70 100644 --- a/content/xslt/src/xpath/txExpr.h +++ b/content/xslt/src/xpath/txExpr.h @@ -330,7 +330,8 @@ protected: /* * Evaluates the given Expression and converts its result to a number. */ - static double evaluateToNumber(Expr* aExpr, txIEvalContext* aContext); + static nsresult evaluateToNumber(Expr* aExpr, txIEvalContext* aContext, + double* aResult); /* * Evaluates the given Expression and converts its result to a NodeSet. diff --git a/content/xslt/src/xpath/txFunctionCall.cpp b/content/xslt/src/xpath/txFunctionCall.cpp index 2e6df285f09..d3d8d0a08aa 100644 --- a/content/xslt/src/xpath/txFunctionCall.cpp +++ b/content/xslt/src/xpath/txFunctionCall.cpp @@ -52,15 +52,19 @@ /* * Evaluates the given Expression and converts its result to a number. */ -double FunctionCall::evaluateToNumber(Expr* aExpr, txIEvalContext* aContext) +// static +nsresult +FunctionCall::evaluateToNumber(Expr* aExpr, txIEvalContext* aContext, + double* aResult) { NS_ASSERTION(aExpr, "missing expression"); nsRefPtr exprResult; nsresult rv = aExpr->evaluate(aContext, getter_AddRefs(exprResult)); - if (NS_FAILED(rv)) - return Double::NaN; + NS_ENSURE_SUCCESS(rv, rv); - return exprResult->numberValue(); + *aResult = exprResult->numberValue(); + + return NS_OK; } /* diff --git a/content/xslt/src/xpath/txXPCOMExtensionFunction.cpp b/content/xslt/src/xpath/txXPCOMExtensionFunction.cpp index 8975aa55c44..f7822b5b104 100644 --- a/content/xslt/src/xpath/txXPCOMExtensionFunction.cpp +++ b/content/xslt/src/xpath/txXPCOMExtensionFunction.cpp @@ -479,7 +479,11 @@ txXPCOMExtensionFunctionCall::evaluate(txIEvalContext* aContext, } case eNUMBER: { - invokeParam.val.d = evaluateToNumber(expr, aContext); + double dbl; + rv = evaluateToNumber(mParams[0], aContext, &dbl); + NS_ENSURE_SUCCESS(rv, rv); + + invokeParam.val.d = dbl; break; } case eSTRING: diff --git a/content/xslt/src/xslt/txExecutionState.cpp b/content/xslt/src/xslt/txExecutionState.cpp index 7952a673dc0..d8f5ec76d1d 100644 --- a/content/xslt/src/xslt/txExecutionState.cpp +++ b/content/xslt/src/xslt/txExecutionState.cpp @@ -99,10 +99,13 @@ txExecutionState::txExecutionState(txStylesheet* aStylesheet, mKeyHash(aStylesheet->getKeyMap()), mDisableLoads(aDisableLoads) { + MOZ_COUNT_CTOR(txExecutionState); } txExecutionState::~txExecutionState() { + MOZ_COUNT_DTOR(txExecutionState); + delete mResultHandler; delete mLocalVariables; delete mEvalContext; @@ -271,9 +274,9 @@ txExecutionState::getVariable(PRInt32 aNamespace, nsIAtom* aLName, txVariableMap* oldVars = mLocalVariables; mLocalVariables = nsnull; rv = var->mExpr->evaluate(getEvalContext(), &aResult); - NS_ENSURE_SUCCESS(rv, rv); - mLocalVariables = oldVars; + + NS_ENSURE_SUCCESS(rv, rv); } else { nsAutoPtr rtfHandler(new txRtfHandler); diff --git a/content/xslt/src/xslt/txFormatNumberFunctionCall.cpp b/content/xslt/src/xslt/txFormatNumberFunctionCall.cpp index ac9fd8edce1..93ca46ea64e 100644 --- a/content/xslt/src/xslt/txFormatNumberFunctionCall.cpp +++ b/content/xslt/src/xslt/txFormatNumberFunctionCall.cpp @@ -84,10 +84,11 @@ txFormatNumberFunctionCall::evaluate(txIEvalContext* aContext, double value; txExpandedName formatName; - value = evaluateToNumber(mParams[0], aContext); + nsresult rv = evaluateToNumber(mParams[0], aContext, &value); + NS_ENSURE_SUCCESS(rv, rv); nsAutoString formatStr; - nsresult rv = mParams[1]->evaluateToString(aContext, formatStr); + rv = mParams[1]->evaluateToString(aContext, formatStr); NS_ENSURE_SUCCESS(rv, rv); if (mParams.Length() == 3) { diff --git a/content/xslt/src/xslt/txVariableMap.h b/content/xslt/src/xslt/txVariableMap.h index e99d7646b2b..889b6ff01f4 100644 --- a/content/xslt/src/xslt/txVariableMap.h +++ b/content/xslt/src/xslt/txVariableMap.h @@ -46,6 +46,7 @@ class txVariableMap { public: + txVariableMap(); ~txVariableMap(); nsresult bindVariable(const txExpandedName& aName, txAExprResult* aValue); @@ -59,9 +60,17 @@ private: }; +inline +txVariableMap::txVariableMap() +{ + MOZ_COUNT_CTOR(txVariableMap); +} + inline txVariableMap::~txVariableMap() { + MOZ_COUNT_DTOR(txVariableMap); + txExpandedNameMap::iterator iter(mMap); while (iter.next()) { txAExprResult* res = iter.value(); From 516a8199350a0f8673c0450d4b4a38b76cec1afb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A3o=20Gottwald?= Date: Sun, 22 Nov 2009 11:52:22 +0100 Subject: [PATCH 04/45] test cleanup --- browser/base/content/test/browser_bug422590.js | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/browser/base/content/test/browser_bug422590.js b/browser/base/content/test/browser_bug422590.js index e9992ba49da..cdddef7495c 100644 --- a/browser/base/content/test/browser_bug422590.js +++ b/browser/base/content/test/browser_bug422590.js @@ -65,14 +65,11 @@ function testCustomize(aWindow, aCallback) { } function closeToolbarCustomization(aWindow, aCTWindow) { - var osString = Components.classes["@mozilla.org/xre/app-info;1"]. - getService(Components.interfaces.nsIXULRuntime).OS; - - // Force the cleanup code to be run now instead of onunload - // This also hides the sheet on Mac + // Force the cleanup code to be run now instead of onunload. + // This also hides the sheet on Mac. aCTWindow.finishToolbarCustomization(); - // On windows and linux, need to explicitly close the window - if (osString != "Darwin") + // On windows and linux, need to explicitly close the window. + if (!gCustomizeSheet) aCTWindow.close(); } From 36736379e9b5619c31a34ff676cf3f0f59249a4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A3o=20Gottwald?= Date: Sun, 22 Nov 2009 15:05:54 +0100 Subject: [PATCH 05/45] Bug 521282 - Make sure the browser window is focused before each test. r=mano --- browser/base/content/test/browser_bug304198.js | 4 ---- browser/base/content/test/browser_ctrlTab.js | 11 ----------- browser/fuel/test/browser_Browser.js | 9 +-------- testing/mochitest/browser-test.js | 15 +++++++++++++++ 4 files changed, 16 insertions(+), 23 deletions(-) diff --git a/browser/base/content/test/browser_bug304198.js b/browser/base/content/test/browser_bug304198.js index 9d9a7d6e0c9..e22b70b8f34 100644 --- a/browser/base/content/test/browser_bug304198.js +++ b/browser/base/content/test/browser_bug304198.js @@ -38,10 +38,6 @@ function test() { waitForExplicitFinish(); - waitForFocus(continue_test); -} - -function continue_test() { let charsToDelete, deletedURLTab, fullURLTab, partialURLTab, testPartialURL, testURL; charsToDelete = 5; diff --git a/browser/base/content/test/browser_ctrlTab.js b/browser/base/content/test/browser_ctrlTab.js index da6bcc761db..31feecc2b5f 100644 --- a/browser/base/content/test/browser_ctrlTab.js +++ b/browser/base/content/test/browser_ctrlTab.js @@ -1,13 +1,4 @@ function test() { - waitForExplicitFinish(); - - if (Cc["@mozilla.org/focus-manager;1"].getService(Ci.nsIFocusManager).activeWindow != - window) { - setTimeout(test, 0); - window.focus(); - return; - } - gPrefService.setBoolPref("browser.ctrlTab.previews", true); gBrowser.addTab(); @@ -87,8 +78,6 @@ function test() { if (gPrefService.prefHasUserValue("browser.ctrlTab.previews")) gPrefService.clearUserPref("browser.ctrlTab.previews"); - finish(); - /* private utility functions */ function pressCtrlTab(aShiftKey) diff --git a/browser/fuel/test/browser_Browser.js b/browser/fuel/test/browser_Browser.js index 06a499c645d..34d75ded6ed 100644 --- a/browser/fuel/test/browser_Browser.js +++ b/browser/fuel/test/browser_Browser.js @@ -10,14 +10,7 @@ var gTabMoveCount = 0; var gPageLoadCount = 0; function test() { - waitForExplicitFinish(); - - if (Cc["@mozilla.org/focus-manager;1"].getService(Ci.nsIFocusManager).activeWindow != - window) { - setTimeout(test, 0); - window.focus(); - return; - } + waitForExplicitFinish(); var windows = Application.windows; ok(windows, "Check access to browser windows"); diff --git a/testing/mochitest/browser-test.js b/testing/mochitest/browser-test.js index f15f4b84174..fc52c12ca90 100644 --- a/testing/mochitest/browser-test.js +++ b/testing/mochitest/browser-test.js @@ -109,6 +109,21 @@ Tester.prototype = { return; } + // Make sure the window is raised before each test. + let fm = Cc["@mozilla.org/focus-manager;1"].getService(Ci.nsIFocusManager); + if (fm.activeWindow != window) { + this.dumper.dump("Waiting for window activation...\n"); + let self = this; + window.addEventListener("activate", function () { + window.removeEventListener("activate", arguments.callee, false); + setTimeout(function () { + self.execTest(); + }, 0); + }, false); + window.focus(); + return; + } + // Move to the next test (or first test). this.step(); From 7e856b2f8e0a6f62ff1ca70efa479061f08ed34a Mon Sep 17 00:00:00 2001 From: Brad Lassey Date: Sun, 22 Nov 2009 13:43:49 -0500 Subject: [PATCH 06/45] bug 530393 - improve xptcinvoke for Windows Mobile and Windows CE on ARM r=vlad --HG-- rename : xpcom/reflect/xptcall/src/md/win32/xptc_arm_ceppc.asm => xpcom/reflect/xptcall/src/md/win32/xptcstubs_asm_ce.asm --- .../reflect/xptcall/src/md/win32/Makefile.in | 2 +- .../src/md/win32/xptcinvoke_asm_ce.asm | 62 ++++++ .../xptcall/src/md/win32/xptcinvokece.cpp | 153 ++++++--------- ...ptc_arm_ceppc.asm => xptcstubs_asm_ce.asm} | 176 ++---------------- .../reflect/xptcall/tests/TestXPTCInvoke.cpp | 17 ++ 5 files changed, 148 insertions(+), 262 deletions(-) create mode 100644 xpcom/reflect/xptcall/src/md/win32/xptcinvoke_asm_ce.asm rename xpcom/reflect/xptcall/src/md/win32/{xptc_arm_ceppc.asm => xptcstubs_asm_ce.asm} (74%) diff --git a/xpcom/reflect/xptcall/src/md/win32/Makefile.in b/xpcom/reflect/xptcall/src/md/win32/Makefile.in index f759896efa3..574c77bae17 100644 --- a/xpcom/reflect/xptcall/src/md/win32/Makefile.in +++ b/xpcom/reflect/xptcall/src/md/win32/Makefile.in @@ -93,7 +93,7 @@ endif ifeq ($(OS_ARCH),WINCE) ifeq ($(TARGET_CPU),arm) CPPSRCS = xptcinvokece.cpp xptcstubsce.cpp -ASFILES = xptc_arm_ceppc.asm +ASFILES = xptcstubs_asm_ce.asm xptcinvoke_asm_ce.asm ASFLAGS += -I ../../../public AS_DASH_C_FLAG = endif diff --git a/xpcom/reflect/xptcall/src/md/win32/xptcinvoke_asm_ce.asm b/xpcom/reflect/xptcall/src/md/win32/xptcinvoke_asm_ce.asm new file mode 100644 index 00000000000..b2448e213ff --- /dev/null +++ b/xpcom/reflect/xptcall/src/md/win32/xptcinvoke_asm_ce.asm @@ -0,0 +1,62 @@ + + AREA text,CODE,READONLY + ALIGN 4 + +; ---- + +; extern "C" nsresult +; asmXPTC_InvokeByIndex( nsISupports* that, +; PRUint32 methodIndex, +; PRUint32 paramCount, +; nsXPTCVariant* params, +; PRUint32 pfn_CopyToStack, +; PRUint32 pfn_CountWords); + + EXTERN writeArgs + + GLOBAL asmXPTC_InvokeByIndex +asmXPTC_InvokeByIndex + mov r12, sp + stmdb sp!, {r4 - r6, r12, lr} ; we're using registers 4, 5 and 6. Save them + sub sp, sp, #16 + mov r6, r0 ; store 'that' (the target's this) + mov r5, r1, lsl #2 ; a vtable index = methodIndex * 4 + mov r4, sp ; Back up the initial stack pointer. + ; Move the stack pointer to allow for `paramCount` 64-bit values. We'll get + ; any unused space back as writeArgs tells us where the SP should end up. + sub sp, sp, r2, lsl #3 ; worst case estimate for stack space + + ; Put the arguments on the stack. + ldr ip, =writeArgs + mov r0, r4 + mov r1, r2 + mov r2, r3 + + blx ip ; call writeArgs + + ; Use the stack pointer returned by writeArgs, but skip the first three + ; words as these belong in registers (r1-r3). + add sp, r0, #12 + + + mov r0, r6 ; Restore 'that'. + ldr r1, [r0] ; get that->vtable offset + ldr ip, [r1, r5] ; get method adress from vtable + + ; The stack pointer now points to a stack which includes all arguments to + ; be passed to the target method. The first three words should be passed in + ; r1-r3 (with 'this' in r0). If we have fewer than three argument words, we + ; will waste some cycles (and a couple of memory words) by loading them, + ; but I suspect that we'll achieve a net gain by avoiding a conditional + ; load here. + ldr r1, [sp, #-12] + ldr r2, [sp, #-8] + ldr r3, [sp, #-4] + blx ip ; call function + + mov sp, r4 ; Restore the original stack pointer. + + add sp, sp, #16 + ldmia sp!, {r4 - r6, sp, pc} ; Restore registers and return. + + END diff --git a/xpcom/reflect/xptcall/src/md/win32/xptcinvokece.cpp b/xpcom/reflect/xptcall/src/md/win32/xptcinvokece.cpp index b56f66e0be6..97986f4cc0c 100644 --- a/xpcom/reflect/xptcall/src/md/win32/xptcinvokece.cpp +++ b/xpcom/reflect/xptcall/src/md/win32/xptcinvokece.cpp @@ -39,107 +39,68 @@ #include "xptcprivate.h" +extern "C" PRUint32 * +writeArgs(PRUint32 *d, + PRUint32 paramCount, + nsXPTCVariant *params) +{ + // For each parameter in params, either push it to the stack. The first + // three registers want to be in registers, but for the sake of simplicity + // we push them onto the stack here and pull them off in assembly before + // actually calling the target method. + + // NOTE: The arguments in 'params' are in reverse order! + + // NOTE: This only implements the legacy ABI as WinCE does not support + // the (more efficient) EABI. + + // NOTE: We assume that we can extend the stack as far as we like. C(++) + // makes the same assumption anyway, so this should be safe. + d--; + for (nsXPTCVariant * s = ¶ms[paramCount-1]; paramCount != 0; paramCount--, s--, d--) { + // IsPtrData is (for some reason) a special case, and doesn't use the + // 'type' field. + if(s->IsPtrData()) + { + *((void**)d) = s->ptr; + continue; + } + switch(s->type) + { + case nsXPTType::T_I8 : *((PRInt32*) d) = s->val.i8; break; + case nsXPTType::T_I16 : *((PRInt32*) d) = s->val.i16; break; + case nsXPTType::T_I32 : *((PRInt32*) d) = s->val.i32; break; + case nsXPTType::T_I64 : *((PRInt64*) --d) = s->val.i64; break; + case nsXPTType::T_U8 : *((PRUint32*) d) = s->val.u8; break; + case nsXPTType::T_U16 : *((PRUint32*) d) = s->val.u16; break; + case nsXPTType::T_U32 : *((PRUint32*) d) = s->val.u32; break; + case nsXPTType::T_U64 : *((PRUint64*)--d) = s->val.u64; break; + case nsXPTType::T_FLOAT : *((float*) d) = s->val.f; break; + case nsXPTType::T_DOUBLE : *((double*) --d) = s->val.d; break; + case nsXPTType::T_BOOL : *((PRInt32*) d) = s->val.b; break; + case nsXPTType::T_CHAR : *((PRInt32*) d) = s->val.c; break; + case nsXPTType::T_WCHAR : *((PRInt32*) d) = s->val.wc; break; + default: + // all the others are plain pointer types + *((void**)d) = s->val.p; + break; + } + + } + return ++d; +} + extern "C" nsresult -asmXPTC_InvokeByIndex( nsISupports* that, - PRUint32 methodIndex, - PRUint32 paramCount, - nsXPTCVariant* params, - PRUint32 pfn_CopyToStack, - PRUint32 pfn_CountWords); - -// NOTE: This does the actual copying into the stack - based upon the -// pointer "d" -- which is placed at the lowest location on the block -// of memory that has been allocated on the stack - -extern "C" static void -invoke_copy_to_stack(PRUint32* d, PRUint32 paramCount, nsXPTCVariant* s) -{ - for(; paramCount > 0; paramCount--, d++, s++) - { - if(s->IsPtrData()) - { - *((void**)d) = s->ptr; - continue; - } - // According to the ARM EABI, integral types that are smaller than a word - // are to be sign/zero-extended to a full word and treated as 4-byte values. - - switch(s->type) - { - case nsXPTType::T_I8 : *((PRInt32*) d) = s->val.i8; break; - case nsXPTType::T_I16 : *((PRInt32*) d) = s->val.i16; break; - case nsXPTType::T_I32 : *((PRInt32*) d) = s->val.i32; break; - case nsXPTType::T_I64 : *((PRInt64*) d) = s->val.i64; d++; break; - case nsXPTType::T_U8 : *((PRUint32*)d) = s->val.u8; break; - case nsXPTType::T_U16 : *((PRUint32*)d) = s->val.u16; break; - case nsXPTType::T_U32 : *((PRUint32*)d) = s->val.u32; break; - case nsXPTType::T_U64 : *((PRUint64*)d) = s->val.u64; d++; break; - case nsXPTType::T_FLOAT : *((float*) d) = s->val.f; break; - case nsXPTType::T_DOUBLE : *((double*) d) = s->val.d; d++; break; - case nsXPTType::T_BOOL : *((PRInt32*) d) = s->val.b; break; - case nsXPTType::T_CHAR : *((PRInt32*) d) = s->val.c; break; - case nsXPTType::T_WCHAR : *((PRInt32*) d) = s->val.wc; break; - default: - // all the others are plain pointer types - *((void**)d) = s->val.p; - break; - } - } -} - - -extern "C" static uint32 -invoke_count_words(PRUint32 paramCount, nsXPTCVariant* s) -{ - uint32 nCnt = 0; - - for(; paramCount > 0; paramCount--, s++) - { - if(s->IsPtrData()) - { - nCnt++; - continue; - } - switch(s->type) - { - case nsXPTType::T_I64 : - case nsXPTType::T_U64 : - case nsXPTType::T_DOUBLE : - nCnt += 2; - break; - - case nsXPTType::T_I8 : - case nsXPTType::T_I16 : - case nsXPTType::T_I32 : - case nsXPTType::T_U8 : - case nsXPTType::T_U16 : - case nsXPTType::T_U32 : - case nsXPTType::T_FLOAT : - case nsXPTType::T_BOOL : - case nsXPTType::T_CHAR : - case nsXPTType::T_WCHAR : - default: - nCnt++; - break; - } - } - - // 4 Bytes for everything that uses 4 bytes or less, 8 bytes for - // everything else. - return nCnt; -} - +asmXPTC_InvokeByIndex(nsISupports* that, + PRUint32 methodIndex, + PRUint32 paramCount, + nsXPTCVariant* params); extern "C" NS_EXPORT nsresult NS_FROZENCALL NS_InvokeByIndex_P(nsISupports* that, PRUint32 methodIndex, - PRUint32 paramCount, nsXPTCVariant* params) + PRUint32 paramCount, nsXPTCVariant* params) { - return asmXPTC_InvokeByIndex(that, - methodIndex, - paramCount, - params, - (PRUint32) &invoke_copy_to_stack, - (PRUint32) &invoke_count_words); + return asmXPTC_InvokeByIndex(that, methodIndex, paramCount, params); } diff --git a/xpcom/reflect/xptcall/src/md/win32/xptc_arm_ceppc.asm b/xpcom/reflect/xptcall/src/md/win32/xptcstubs_asm_ce.asm similarity index 74% rename from xpcom/reflect/xptcall/src/md/win32/xptc_arm_ceppc.asm rename to xpcom/reflect/xptcall/src/md/win32/xptcstubs_asm_ce.asm index d4a1fb0284f..6b0b6acf3f0 100644 --- a/xpcom/reflect/xptcall/src/md/win32/xptc_arm_ceppc.asm +++ b/xpcom/reflect/xptcall/src/md/win32/xptcstubs_asm_ce.asm @@ -145,171 +145,6 @@ $FuncName PROC MEND -; USE THIS FUNCTION POINTER INSIDE THE ROUTING XPTC_InvokeByIndex - IMPORT PrepareAndDispatch - - - MY_NESTED_ARMENTRY asmXPTC_InvokeByIndex - -; Function compile flags: /Ods -; Was In File c:\builds\wince\mozilla\xpcom\reflect\xptcall\src\md\win32\xptcinvokece.cpp - -;|asmXPTC_InvokeByIndex| PROC -; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; mov r12, sp -;; stmdb sp!, {r0 - r3} -;; stmdb sp!, {r12, lr} -;; sub sp, sp, #4 -;; -;; mov r0, #0 ; return NS_OK; -;; str r0, [sp] -;; ldr r0, [sp] -;; -;; add sp, sp, #4 -;; ldmia sp, {sp, pc} -;; -;; ENTRY_END -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -; 144 : { - - ; BKPT - - mov r12, sp - stmdb sp!, {r0 - r3} - stmdb sp!, {r4, r5, r12, lr} - sub sp, sp, #0x2C - -; 145 : PRUint32 result; -; 146 : struct my_params_struct my_params; -; 147 : my_params.that = that; - - add r5, sp, #8 ; r5 = pointer to my_params (also THIS) - - ;;ldr r0, [sp, #0x34] - ;;str r0, [sp, #8] - ;str r0, [sp, #8] - str r0, [r5, #0x00] - -; 148 : my_params.Index = methodIndex; // R5 + 0x4 - - ;;ldr r1, [sp, #0x38] - ;;str r1, [sp, #0xC] - ;str r1, [sp, #0x0C] - str r1, [r5, #0x04] - -; 149 : my_params.Count = paramCount; // R5 + 0x8 - - ;ldr r0, [sp, #0x3C] - ;str r0, [sp, #0x10] - ;str r2, [sp, #0x10] - str r2, [r5, #0x08] - -; 150 : my_params.params = params; // R5 + 0xC - - ;;ldr r1, [sp, #0x40] - ;;str r1, [sp, #0x14] - ;str r3, [sp, #0x14] - str r3, [r5, #0x0C] - -; 152 : my_params.fn_count = (PRUint32) &invoke_count_words; -; // R5 + 0x10 - - ;;ldr r1, [pc, #0x4C] - ;;str r1, [sp, #0x18] - ldr r4, [r12, #0x4] - ;str r4, [sp, #0x18] - str r4, [r5, #0x10] - -; 151 : my_params.fn_copy = (PRUint32) &invoke_copy_to_stack; -; // R5 + 0x14 - - ;;ldr r0, [pc, #0x58] - ;;str r0, [sp, #0x1C] - ldr r4, [r12] - ;str r4, [sp, #0x1C] - str r4, [r5, #0x14] - - ; Prepare to call invoke_count_words - ;ldr r0, [sp, #0x3C] ; r0 = paramCount - ;ldr r1, [sp, #0x40] ; r1 = params - ;ldr ip, [pc, #0x4C] ; ip = pointer to invoke_count_words - ;mov lr, pc ; call it... - ;mov pc, ip ; - ldr r0, [r5, #0x08] ; r0 = paramCount (r5 + 0x08 = this + 0x08) - ldr r1, [r5, #0x0C] ; r1 = params (r5 + 0x0C = this + 0x0C) - ldr ip, [r5, #0x10] ; ip = pointer to invoke_count_words (r5 + 0x10 = this + 0x10) - mov lr, pc ; call it... - mov pc, ip ; - - - mov r4, r0, lsl #2 ; This is the amount of bytes needed. - - sub sp, sp, r4 ; use stack space for the args... - mov r0, sp ; prepare a pointer an the stack - -;; ldr r1, [sp, #0x3C] ; =paramCount -;; ldr r2, [sp, #0x40] ; =params -;; ldr ip, [pc, #0x4C] ; =invoke_copy_to_stack - ldr r1, [r5, #0x08] ; r1 = paramCount (r5 + 0x08 = this + 0x08) - ldr r2, [r5, #0x0C] ; r2 = params (r5 + 0x0C = this + 0x0C) - ldr ip, [r5, #0x14] ; ip = pointer to invoke_copy_to_stack (r5 + 0x14 = this + 0x14) - mov lr, pc ; copy args to the stack like the - mov pc, ip ; compiler would. - - - ldr r0, [r5, #0] ; get (self) that - - ldr r1, [r0] ; get that->vtable offset - ldr r2, [r5, #4] ; = that->methodIndex - mov r2, r2, lsl #2 ; a vtable_entry(x)=0 + (4 bytes * x) - - ldr ip, [r1, r2] ; get method adress from vtable - - cmp r4, #12 ; more than 3 arguments??? - ldmgtia sp!, {r1, r2, r3} ; yes: load arguments for r1-r3 - subgt r4, r4, #12 ; and correct the stack pointer - ldmleia sp, {r1, r2, r3} ; no: load r1-r3 from stack - addle sp, sp, r4 ; and restore stack pointer - movle r4, #0 ; a mark for restoring sp - - ldr r0, [r5, #0] ; get (self) that - - ; NOTE: At this point, all of the arguments are on the stack, from SP on up, - ; with the first argument at SP, the second argument at SP+4, the third - ; argument at SP+8, and so on... - - mov lr, pc ; call mathod - mov pc, ip ; - - add sp, sp, r4 ; restore stack pointer - ; the result is in r0 - - - str r0, [sp] ; Start unwinding the stack - str r0, [sp, #0x20] - -; 225 : } - - add sp, sp, #0x2C - ldmia sp, {r4, r5, sp, pc} - - ENTRY_END - - ENDP ; |asmXPTC_InvokeByIndex| - - - - -SharedStub - stmfd sp!, {r1, r2, r3} - mov r2, sp - str lr, [sp, #-4]! - mov r1, ip - bl PrepareAndDispatch - ldr pc, [sp], #16 - ENDP @@ -566,6 +401,17 @@ SharedStub MY_STUB_NESTED_ARMENTRY 248 MY_STUB_NESTED_ARMENTRY 249 + IMPORT PrepareAndDispatch + +SharedStub + stmfd sp!, {r1, r2, r3} + mov r2, sp + str lr, [sp, #-4]! + mov r1, ip + bl PrepareAndDispatch + ldr pc, [sp], #16 + ENDP + END diff --git a/xpcom/reflect/xptcall/tests/TestXPTCInvoke.cpp b/xpcom/reflect/xptcall/tests/TestXPTCInvoke.cpp index a0101ca7376..dc4725e56ca 100644 --- a/xpcom/reflect/xptcall/tests/TestXPTCInvoke.cpp +++ b/xpcom/reflect/xptcall/tests/TestXPTCInvoke.cpp @@ -105,6 +105,7 @@ public: NS_IMETHOD AddMixedInts3(PRInt64 p1, PRInt64 p2, PRInt32 p3, PRInt64 p4, PRInt32 p5, PRInt32 p6, PRInt64 p7, PRInt64 p8, PRInt32 p9, PRInt64 p10, PRInt64* retval) = 0; + NS_IMETHOD ShouldFail(PRInt32 p) = 0; }; NS_DEFINE_STATIC_IID_ACCESSOR(InvokeTestTargetInterface, INVOKETESTTARGET_IID) @@ -159,6 +160,7 @@ public: NS_IMETHOD AddMixedInts3(PRInt64 p1, PRInt64 p2, PRInt32 p3, PRInt64 p4, PRInt32 p5, PRInt32 p6, PRInt64 p7, PRInt64 p8, PRInt32 p9, PRInt64 p10, PRInt64* retval); + NS_IMETHOD ShouldFail(PRInt32 p); }; NS_IMPL_ISUPPORTS1(InvokeTestTarget, InvokeTestTargetInterface) @@ -168,6 +170,10 @@ InvokeTestTarget::InvokeTestTarget() NS_ADDREF_THIS(); } +NS_IMETHODIMP +InvokeTestTarget::ShouldFail(PRInt32 p) { + return NS_ERROR_NULL_POINTER; +} NS_IMETHODIMP InvokeTestTarget::AddTwoInts(PRInt32 p1, PRInt32 p2, PRInt32* retval) { @@ -339,6 +345,7 @@ int main() PRInt32 out, tmp32 = 0; PRInt64 out64; + nsresult failed_rv; printf("calling direct:\n"); if(NS_SUCCEEDED(test->AddTwoInts(1,1,&out))) printf("\t1 + 1 = %d\n", out); @@ -431,6 +438,9 @@ int main() } else printf("\tFAILED"); + failed_rv = test->ShouldFail(5); + printf("should fail %s, returned %x\n", failed_rv == NS_ERROR_NULL_POINTER ? "failed" :"passed", failed_rv); + printf("calling via invoke:\n"); nsXPTCVariant var[21]; @@ -940,6 +950,13 @@ int main() else printf("\tFAILED"); + var[0].val.i32 = 5; + var[0].type = nsXPTType::T_I32; + var[0].flags = 0; + + failed_rv = NS_InvokeByIndex(test, 17, 1, var); + printf("should fail %s, returned %x\n", failed_rv == NS_ERROR_NULL_POINTER ? "failed" :"passed", failed_rv); + var[0].val.i64 = 3; var[0].type = nsXPTType::T_I64; var[0].flags = 0; From 6c1c2266cb6828fcb83e2f5cb91ed847d19ebfb8 Mon Sep 17 00:00:00 2001 From: Jonas Sicking Date: Sat, 21 Nov 2009 03:56:31 -0800 Subject: [PATCH 07/45] Bug 530220: Fix bug in handling of binary data, kill some dead variables, and improve tests. All for FileReader. r=jst a=jst --- content/base/src/nsDOMFileReader.cpp | 84 +++-- content/base/src/nsDOMFileReader.h | 4 +- content/base/test/test_fileapi.html | 452 +++++++++++++-------------- 3 files changed, 274 insertions(+), 266 deletions(-) diff --git a/content/base/src/nsDOMFileReader.cpp b/content/base/src/nsDOMFileReader.cpp index 825ac1d20b2..0fc134f7ab5 100644 --- a/content/base/src/nsDOMFileReader.cpp +++ b/content/base/src/nsDOMFileReader.cpp @@ -152,13 +152,12 @@ nsDOMFileReader::Notify(const char *aCharset, nsDetectionConfident aConf) //nsDOMFileReader constructors/initializers nsDOMFileReader::nsDOMFileReader() - : mFileData(nsnull), mReadCount(0), + : mFileData(nsnull), mDataLen(0), mDataFormat(0), mReadyState(nsIDOMFileReader::EMPTY), mProgressEventWasDelayed(PR_FALSE), mTimerIsActive(PR_FALSE), - mReadTotal(0), mReadTransferred(0), - mReadComplete(PR_TRUE) + mReadTotal(0), mReadTransferred(0) { nsLayoutStatics::AddRef(); } @@ -295,8 +294,6 @@ nsDOMFileReader::Abort() if (mProgressNotifier) { mProgressNotifier->Cancel(); } - mReadCount = 0; - mDataLen = 0; //Revert status, result and readystate attributes SetDOMStringToNull(mResult); @@ -314,6 +311,7 @@ nsDOMFileReader::Abort() //Clean up memory buffer PR_Free(mFileData); mFileData = nsnull; + mDataLen = 0; //Dispatch the abort event DispatchProgressEvent(NS_LITERAL_STRING(ABORT_STR)); @@ -360,6 +358,28 @@ nsDOMFileReader::OnStartRequest(nsIRequest *request, nsISupports *ctxt) return NS_OK; } +static +NS_METHOD +ReadFuncBinaryString(nsIInputStream* in, + void* closure, + const char* fromRawSegment, + PRUint32 toOffset, + PRUint32 count, + PRUint32 *writeCount) +{ + PRUnichar* dest = static_cast(closure) + toOffset; + PRUnichar* end = dest + count; + const unsigned char* source = (const unsigned char*)fromRawSegment; + while (dest != end) { + *dest = *source; + ++dest; + ++source; + } + *writeCount = count; + + return NS_OK; +} + NS_IMETHODIMP nsDOMFileReader::OnDataAvailable(nsIRequest *aRequest, nsISupports *aContext, @@ -367,34 +387,33 @@ nsDOMFileReader::OnDataAvailable(nsIRequest *aRequest, PRUint32 aOffset, PRUint32 aCount) { - //Update memory buffer to reflect the contents of the file - mFileData = (char *)PR_Realloc(mFileData, aOffset + aCount); - NS_ENSURE_TRUE(mFileData, NS_ERROR_OUT_OF_MEMORY); - - aInputStream->Read(mFileData + aOffset, aCount, &mReadCount); - mDataLen += aCount; - mReadTransferred = mDataLen; - - //Continuously update our binary string as data comes in if (mDataFormat == FILE_AS_BINARY) { + //Continuously update our binary string as data comes in + NS_ASSERTION(mResult.Length() == aOffset, + "unexpected mResult length"); PRUint32 oldLen = mResult.Length(); - PRUint32 newLen = oldLen + aCount; - PRUnichar *buf; + PRUnichar *buf = nsnull; + mResult.GetMutableData(&buf, oldLen + aCount); + NS_ENSURE_TRUE(buf, NS_ERROR_OUT_OF_MEMORY); - if (mResult.GetMutableData(&buf, newLen) != newLen) { - return NS_ERROR_OUT_OF_MEMORY; - } - - PRUnichar *bufEnd = buf + newLen; - buf += oldLen; - - char *source = mFileData + aOffset; - while (buf < bufEnd) { - *buf = *source; - ++buf; - ++source; - } + PRUint32 bytesRead = 0; + aInputStream->ReadSegments(ReadFuncBinaryString, buf + oldLen, aCount, + &bytesRead); + NS_ASSERTION(bytesRead == aCount, "failed to read data"); } + else { + //Update memory buffer to reflect the contents of the file + mFileData = (char *)PR_Realloc(mFileData, aOffset + aCount); + NS_ENSURE_TRUE(mFileData, NS_ERROR_OUT_OF_MEMORY); + + PRUint32 bytesRead = 0; + aInputStream->Read(mFileData + aOffset, aCount, &bytesRead); + NS_ASSERTION(bytesRead == aCount, "failed to read data"); + + mDataLen += aCount; + } + + mReadTransferred += aCount; //Notify the timer is the appropriate timeframe has passed if (mTimerIsActive) { @@ -485,7 +504,8 @@ nsDOMFileReader::ReadFileContent(nsIDOMFile* aFile, NS_ENSURE_SUCCESS(rv, rv); //Obtain the total size of the file before reading - aFile->GetSize(&mReadTotal); + mReadTotal = -1; + mFile->GetFileSize(&mReadTotal); rv = mChannel->AsyncOpen(this, nsnull); NS_ENSURE_SUCCESS(rv, rv); @@ -540,8 +560,8 @@ nsDOMFileReader::DispatchProgressEvent(const nsAString& aType) if (!progress) return; - progress->InitProgressEvent(aType, PR_FALSE, PR_FALSE, mReadComplete, - mReadTransferred, (mReadTotal == LL_MAXUINT) ? 0 : mReadTotal); + progress->InitProgressEvent(aType, PR_FALSE, PR_FALSE, mReadTotal >= 0, + mReadTransferred, PR_MAX(mReadTotal, 0)); this->DispatchDOMEvent(nsnull, event, nsnull, nsnull); } diff --git a/content/base/src/nsDOMFileReader.h b/content/base/src/nsDOMFileReader.h index ae6c9df0dda..c56b3ea7164 100644 --- a/content/base/src/nsDOMFileReader.h +++ b/content/base/src/nsDOMFileReader.h @@ -122,7 +122,6 @@ protected: char *mFileData; nsCOMPtr mFile; nsString mCharset; - PRUint32 mReadCount; PRUint32 mDataLen; PRUint32 mDataFormat; @@ -137,9 +136,8 @@ protected: nsCOMPtr mPrincipal; nsCOMPtr mChannel; - PRUint64 mReadTotal; + PRInt64 mReadTotal; PRUint64 mReadTransferred; - PRPackedBool mReadComplete; nsRefPtr mOnLoadEndListener; }; diff --git a/content/base/test/test_fileapi.html b/content/base/test/test_fileapi.html index e37a3690a01..ab74f559ee5 100644 --- a/content/base/test/test_fileapi.html +++ b/content/base/test/test_fileapi.html @@ -20,272 +20,236 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=414796
 
 
From a1153485dfcc452e354e048f2a4282012fcddd5b Mon Sep 17 00:00:00 2001 From: Jonas Sicking Date: Sun, 22 Nov 2009 11:05:12 -0800 Subject: [PATCH 08/45] Jonas Sicking - Bug 530269: Clear data when reusing a FileReader for multiple reads. r=bz a=jst --- content/base/src/nsDOMFileReader.cpp | 1 + content/base/test/test_fileapi.html | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/content/base/src/nsDOMFileReader.cpp b/content/base/src/nsDOMFileReader.cpp index 0fc134f7ab5..662e0ba62c4 100644 --- a/content/base/src/nsDOMFileReader.cpp +++ b/content/base/src/nsDOMFileReader.cpp @@ -488,6 +488,7 @@ nsDOMFileReader::ReadFileContent(nsIDOMFile* aFile, mDataFormat = aDataFormat; mCharset = aCharset; mError = nsnull; + SetDOMStringToNull(mResult); //Obtain the nsDOMFile's underlying nsIFile nsresult rv; diff --git a/content/base/test/test_fileapi.html b/content/base/test/test_fileapi.html index ab74f559ee5..481946fd9ab 100644 --- a/content/base/test/test_fileapi.html +++ b/content/base/test/test_fileapi.html @@ -122,6 +122,24 @@ r.readAsText(createFileWithData(convertToUTF32(testTextData)), "UTF-32"); expectedTestCount++; +// Test reusing a FileReader to read multiple times +r = new FileReader(); +r.onload = getLoadHandler(testASCIIData, + testASCIIData.length, + "to-be-reused reading") +var makeAnotherReadListener = function(event) { + r = event.target; + r.removeEventListener("load", makeAnotherReadListener, false); + r.onload = getLoadHandler(testBinaryData, + testBinaryData.length, + "reused reading"); + r.readAsBinaryString(binaryFile); +}; +r.addEventListener("load", makeAnotherReadListener, false); +r.readAsText(asciiFile, ""); +expectedTestCount += 2; + + //Test data-URI encoding on differing file sizes dataurldata = testBinaryData.substr(0, testBinaryData.length - testBinaryData.length % 3); From 303021637e685cf82da58381c6ad56428a3078cf Mon Sep 17 00:00:00 2001 From: Jonas Sicking Date: Sun, 22 Nov 2009 12:42:17 -0800 Subject: [PATCH 09/45] Trivial fix for orange. Tests are good. Bug 530269 --- content/base/src/nsDOMFileReader.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/content/base/src/nsDOMFileReader.cpp b/content/base/src/nsDOMFileReader.cpp index 662e0ba62c4..c0ba0dca954 100644 --- a/content/base/src/nsDOMFileReader.cpp +++ b/content/base/src/nsDOMFileReader.cpp @@ -489,6 +489,7 @@ nsDOMFileReader::ReadFileContent(nsIDOMFile* aFile, mCharset = aCharset; mError = nsnull; SetDOMStringToNull(mResult); + mReadTransferred = 0; //Obtain the nsDOMFile's underlying nsIFile nsresult rv; From 542a1b45cecbeb519e1c467136255c564924cbf5 Mon Sep 17 00:00:00 2001 From: Doug Turner Date: Sun, 22 Nov 2009 15:46:42 -0800 Subject: [PATCH 10/45] Bug 530381 - Cache X11 GC for NativeImageDraw. r=karlt --- layout/generic/nsObjectFrame.cpp | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/layout/generic/nsObjectFrame.cpp b/layout/generic/nsObjectFrame.cpp index 79499739548..a70638793bb 100644 --- a/layout/generic/nsObjectFrame.cpp +++ b/layout/generic/nsObjectFrame.cpp @@ -531,6 +531,7 @@ private: // The clip region that we should draw into. nsIntRect mAbsolutePositionClip; + GC mXlibSurfGC; Window mBlitWindow; XImage *mSharedXImage; XShmSegmentInfo mSharedSegmentInfo; @@ -2420,6 +2421,7 @@ nsPluginInstanceOwner::nsPluginInstanceOwner() #ifdef MOZ_PLATFORM_HILDON mPluginSize = nsIntSize(0,0); mPluginScale = 1.0; + mXlibSurfGC = None; mSharedXImage = nsnull; mSharedSegmentInfo.shmaddr = nsnull; #endif @@ -4908,7 +4910,12 @@ static GdkWindow* GetClosestWindow(nsIDOMElement *element) void nsPluginInstanceOwner::ReleaseXShm() { - if (mSharedSegmentInfo.shmaddr) { + if (mXlibSurfGC) { + XFreeGC(gdk_x11_get_default_xdisplay(), mXlibSurfGC); + mXlibSurfGC = None; + } + + if (mSharedSegmentInfo.shmaddr) { XShmDetach(gdk_x11_get_default_xdisplay(), &mSharedSegmentInfo); shmdt(mSharedSegmentInfo.shmaddr); mSharedSegmentInfo.shmaddr = nsnull; @@ -4929,6 +4936,13 @@ nsPluginInstanceOwner::SetupXShm() ReleaseXShm(); + mXlibSurfGC = XCreateGC(gdk_x11_get_default_xdisplay(), + mBlitWindow, + 0, + 0); + if (!mXlibSurfGC) + return PR_FALSE; + // we use 16 as the default depth because that is the value of the // screen, but not the default X default depth. XVisualInfo vinfo; @@ -5097,15 +5111,8 @@ nsPluginInstanceOwner::NativeImageDraw() rect.width = mAbsolutePositionClip.width; rect.height = mAbsolutePositionClip.height; - GC gc = XCreateGC(gdk_x11_get_default_xdisplay(), - mBlitWindow, - 0, - 0); - if (!gc) - return NS_ERROR_FAILURE; - XSetClipRectangles(gdk_x11_get_default_xdisplay(), - gc, + mXlibSurfGC, mAbsolutePosition.x, mAbsolutePosition.y, &rect, 1, @@ -5113,7 +5120,7 @@ nsPluginInstanceOwner::NativeImageDraw() XShmPutImage(gdk_x11_get_default_xdisplay(), mBlitWindow, - gc, + mXlibSurfGC, mSharedXImage, 0, 0, @@ -5123,9 +5130,8 @@ nsPluginInstanceOwner::NativeImageDraw() mPluginSize.height, PR_FALSE); - XSetClipRectangles(gdk_x11_get_default_xdisplay(), gc, 0, 0, nsnull, 0, Unsorted); + XSetClipRectangles(gdk_x11_get_default_xdisplay(), mXlibSurfGC, 0, 0, nsnull, 0, Unsorted); - XFreeGC(gdk_x11_get_default_xdisplay(), gc); XFlush(gdk_x11_get_default_xdisplay()); return NS_OK; } From ebb5ae04168380f88e2fa96ca2a693bc0b6b0bb5 Mon Sep 17 00:00:00 2001 From: Jonas Sicking Date: Sun, 22 Nov 2009 22:23:23 -0800 Subject: [PATCH 11/45] Fix more bugs when reusing FileReaders for multiple reads. Also fix leaks. r=jst a=jst --- content/base/src/nsDOMFileReader.cpp | 17 +++++++---- content/base/src/nsDOMFileReader.h | 7 +++++ content/base/test/test_fileapi.html | 44 ++++++++++++++++++++++++---- 3 files changed, 57 insertions(+), 11 deletions(-) diff --git a/content/base/src/nsDOMFileReader.cpp b/content/base/src/nsDOMFileReader.cpp index c0ba0dca954..4c866bc6172 100644 --- a/content/base/src/nsDOMFileReader.cpp +++ b/content/base/src/nsDOMFileReader.cpp @@ -167,6 +167,8 @@ nsDOMFileReader::~nsDOMFileReader() if (mListenerManager) mListenerManager->Disconnect(); + FreeFileData(); + nsLayoutStatics::Release(); } @@ -309,9 +311,7 @@ nsDOMFileReader::Abort() mFile = nsnull; //Clean up memory buffer - PR_Free(mFileData); - mFileData = nsnull; - mDataLen = 0; + FreeFileData(); //Dispatch the abort event DispatchProgressEvent(NS_LITERAL_STRING(ABORT_STR)); @@ -449,6 +449,7 @@ nsDOMFileReader::OnStopRequest(nsIRequest *aRequest, //Set the status field as appropriate if (NS_FAILED(aStatus)) { + FreeFileData(); DispatchError(aStatus); return NS_OK; } @@ -467,6 +468,8 @@ nsDOMFileReader::OnStopRequest(nsIRequest *aRequest, return NS_ERROR_FAILURE; } + FreeFileData(); + //Dispatch load event to signify end of a successful load DispatchProgressEvent(NS_LITERAL_STRING(LOAD_STR)); DispatchProgressEvent(NS_LITERAL_STRING(LOADEND_STR)); @@ -485,11 +488,15 @@ nsDOMFileReader::ReadFileContent(nsIDOMFile* aFile, //Implicit abort to clear any other activity going on Abort(); - mDataFormat = aDataFormat; - mCharset = aCharset; mError = nsnull; SetDOMStringToNull(mResult); mReadTransferred = 0; + mReadTotal = 0; + mReadyState = nsIDOMFileReader::EMPTY; + FreeFileData(); + + mDataFormat = aDataFormat; + mCharset = aCharset; //Obtain the nsDOMFile's underlying nsIFile nsresult rv; diff --git a/content/base/src/nsDOMFileReader.h b/content/base/src/nsDOMFileReader.h index c56b3ea7164..af3999cc10b 100644 --- a/content/base/src/nsDOMFileReader.h +++ b/content/base/src/nsDOMFileReader.h @@ -60,6 +60,7 @@ #include "nsCOMPtr.h" #include "nsIStreamLoader.h" #include "nsIChannel.h" +#include "prmem.h" #include "nsXMLHttpRequest.h" @@ -119,6 +120,12 @@ protected: void DispatchError(nsresult rv); void StartProgressEventTimer(); + void FreeFileData() { + PR_Free(mFileData); + mFileData = nsnull; + mDataLen = 0; + } + char *mFileData; nsCOMPtr mFile; nsString mCharset; diff --git a/content/base/test/test_fileapi.html b/content/base/test/test_fileapi.html index 481946fd9ab..058a7183d4c 100644 --- a/content/base/test/test_fileapi.html +++ b/content/base/test/test_fileapi.html @@ -126,17 +126,49 @@ expectedTestCount++; r = new FileReader(); r.onload = getLoadHandler(testASCIIData, testASCIIData.length, - "to-be-reused reading") + "to-be-reused reading text") var makeAnotherReadListener = function(event) { r = event.target; r.removeEventListener("load", makeAnotherReadListener, false); - r.onload = getLoadHandler(testBinaryData, - testBinaryData.length, - "reused reading"); - r.readAsBinaryString(binaryFile); + r.onload = getLoadHandler(testASCIIData, + testASCIIData.length, + "reused reading text"); + r.readAsText(asciiFile); }; r.addEventListener("load", makeAnotherReadListener, false); -r.readAsText(asciiFile, ""); +r.readAsText(asciiFile); +expectedTestCount += 2; + +r = new FileReader(); +r.onload = getLoadHandler(testBinaryData, + testBinaryData.length, + "to-be-reused reading binary") +var makeAnotherReadListener2 = function(event) { + r = event.target; + r.removeEventListener("load", makeAnotherReadListener2, false); + r.onload = getLoadHandler(testBinaryData, + testBinaryData.length, + "reused reading binary"); + r.readAsBinaryString(binaryFile); +}; +r.addEventListener("load", makeAnotherReadListener2, false); +r.readAsBinaryString(binaryFile); +expectedTestCount += 2; + +r = new FileReader(); +r.onload = getLoadHandler(convertToDataURL(testBinaryData), + testBinaryData.length, + "to-be-reused reading data url") +var makeAnotherReadListener3 = function(event) { + r = event.target; + r.removeEventListener("load", makeAnotherReadListener3, false); + r.onload = getLoadHandler(convertToDataURL(testBinaryData), + testBinaryData.length, + "reused reading data url"); + r.readAsDataURL(binaryFile); +}; +r.addEventListener("load", makeAnotherReadListener3, false); +r.readAsDataURL(binaryFile); expectedTestCount += 2; From 46fd8fb484c85f39af7df9c65ef5adfa596ce6bf Mon Sep 17 00:00:00 2001 From: Doug Turner Date: Sun, 22 Nov 2009 22:36:22 -0800 Subject: [PATCH 12/45] Bug 530378return early to avoid crashing . r=karlt --- layout/generic/nsObjectFrame.cpp | 88 +++++++++++++++----------------- 1 file changed, 42 insertions(+), 46 deletions(-) diff --git a/layout/generic/nsObjectFrame.cpp b/layout/generic/nsObjectFrame.cpp index a70638793bb..20e1e272453 100644 --- a/layout/generic/nsObjectFrame.cpp +++ b/layout/generic/nsObjectFrame.cpp @@ -517,19 +517,15 @@ private: // used to keep track of how big our buffer is. nsIntSize mPluginSize; - // the scale between the actual instance plugin window and what - // we want to scale it to. - float mPluginScale; - // the element that was passed into SetAbsoluteScreenPosition(). // This will be the element we use to determine which Window we draw into. nsCOMPtr mBlitParentElement; // The absolute position on the screen to draw to. - nsIntRect mAbsolutePosition; + gfxRect mAbsolutePosition; // The clip region that we should draw into. - nsIntRect mAbsolutePositionClip; + gfxRect mAbsolutePositionClip; GC mXlibSurfGC; Window mBlitWindow; @@ -1229,7 +1225,8 @@ nsObjectFrame::SetAbsoluteScreenPosition(nsIDOMElement* element, nsIDOMClientRect* clip) { #ifdef MOZ_PLATFORM_HILDON - NS_ASSERTION(mInstanceOwner, "failed to get mInstanceOwner"); + if (!mInstanceOwner) + return NS_ERROR_NOT_AVAILABLE; return mInstanceOwner->SetAbsoluteScreenPosition(element, position, clip); #else return NS_ERROR_NOT_IMPLEMENTED; @@ -2420,7 +2417,6 @@ nsPluginInstanceOwner::nsPluginInstanceOwner() #ifdef MOZ_PLATFORM_HILDON mPluginSize = nsIntSize(0,0); - mPluginScale = 1.0; mXlibSurfGC = None; mSharedXImage = nsnull; mSharedSegmentInfo.shmaddr = nsnull; @@ -5016,15 +5012,20 @@ nsPluginInstanceOwner::NativeImageDraw() return NS_OK; // if the clip rect is zero, we have nothing to do. - if (mAbsolutePositionClip.width == 0 || mAbsolutePositionClip.height == 0) + if (NSToIntCeil(mAbsolutePositionClip.Width()) == 0 || + NSToIntCeil(mAbsolutePositionClip.Height()) == 0) return NS_OK; + + // The flash plugin on Maemo n900 requires the width/height to be + // even. + PRInt32 absPosWidth = NSToIntCeil(mAbsolutePosition.Width()) / 2 * 2; + PRInt32 absPosHeight = NSToIntCeil(mAbsolutePosition.Height()) / 2 * 2; - // if we haven't been setup before, or if the size of the plugin increased. if (!mSharedXImage || - mPluginSize.width != mAbsolutePosition.width || - mPluginSize.height != mAbsolutePosition.height) { - - mPluginSize = nsIntSize(mAbsolutePosition.width, mAbsolutePosition.height); + mPluginSize.width != absPosWidth || + mPluginSize.height != absPosHeight) { + + mPluginSize = nsIntSize(absPosWidth, absPosHeight); if (NS_FAILED(SetupXShm())) return NS_ERROR_FAILURE; @@ -5086,8 +5087,13 @@ nsPluginInstanceOwner::NativeImageDraw() imageExpose.translateX = 0; imageExpose.translateY = 0; - imageExpose.scaleX = mPluginScale; - imageExpose.scaleY = mPluginScale; + if (window->width == 0) + return NS_OK; + + float scale = mAbsolutePosition.Width() / (float) window->width; + + imageExpose.scaleX = scale; + imageExpose.scaleY = scale; imageExpose.stride = mPluginSize.width * 2; imageExpose.data = mSharedXImage->data; @@ -5106,15 +5112,18 @@ nsPluginInstanceOwner::NativeImageDraw() // Setup the clip rectangle XRectangle rect; - rect.x = mAbsolutePositionClip.x; - rect.y = mAbsolutePositionClip.y; - rect.width = mAbsolutePositionClip.width; - rect.height = mAbsolutePositionClip.height; - + rect.x = NSToIntFloor(mAbsolutePositionClip.X()); + rect.y = NSToIntFloor(mAbsolutePositionClip.Y()); + rect.width = NSToIntCeil(mAbsolutePositionClip.Width()); + rect.height = NSToIntCeil(mAbsolutePositionClip.Height()); + + PRInt32 absPosX = NSToIntFloor(mAbsolutePosition.X()); + PRInt32 absPosY = NSToIntFloor(mAbsolutePosition.Y()); + XSetClipRectangles(gdk_x11_get_default_xdisplay(), mXlibSurfGC, - mAbsolutePosition.x, - mAbsolutePosition.y, + absPosX, + absPosY, &rect, 1, Unsorted); @@ -5124,8 +5133,8 @@ nsPluginInstanceOwner::NativeImageDraw() mSharedXImage, 0, 0, - mAbsolutePosition.x, - mAbsolutePosition.y, + absPosX, + absPosY, mPluginSize.width, mPluginSize.height, PR_FALSE); @@ -5566,8 +5575,9 @@ void nsPluginInstanceOwner::SetPluginHost(nsIPluginHost* aHost) #ifdef MOZ_PLATFORM_HILDON PRBool nsPluginInstanceOwner::UpdateVisibility() { - NS_ASSERTION(mInstance, "mInstance should never be null"); - + if (!mInstance) + return PR_TRUE; + PRBool handled; NPEvent pluginEvent; XVisibilityEvent& visibilityEvent = pluginEvent.xvisibility; @@ -5729,37 +5739,23 @@ nsPluginInstanceOwner::SetAbsoluteScreenPosition(nsIDOMElement* element, !position || !clip) return NS_ERROR_FAILURE; - // convert to a int rect. float left, top, width, height; position->GetLeft(&left); position->GetTop(&top); position->GetWidth(&width); position->GetHeight(&height); + + mAbsolutePosition = gfxRect(left, top, width, height); - NPWindow *window; - GetWindow(window); - NS_ASSERTION(window, "Must have a window here"); - - mPluginScale = width / window->width; - - // The flash plugin on Maemo n900 requires the width/height to be - // even. - mAbsolutePosition = nsIntRect(NSToIntFloor(left), - NSToIntFloor(top), - NSToIntCeil(width) / 2 * 2, - NSToIntCeil(height) / 2 * 2); clip->GetLeft(&left); clip->GetTop(&top); clip->GetWidth(&width); clip->GetHeight(&height); - - mAbsolutePositionClip = nsIntRect(NSToIntFloor(left), - NSToIntFloor(top), - NSToIntCeil(width), - NSToIntCeil(height)); + + mAbsolutePositionClip = gfxRect(left,top, width, height); + mBlitParentElement = element; - // The hildon plugin needs to have it visibility poked UpdateVisibility(); return NS_OK; } From b642dbf83d63abf9f303c7f918697351e079ec18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A3o=20Gottwald?= Date: Mon, 23 Nov 2009 09:11:07 +0100 Subject: [PATCH 13/45] Fix browser_NetworkPrioritizer.js for bug 525635 --- .../test/browser_NetworkPrioritizer.js | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/browser/base/content/test/browser_NetworkPrioritizer.js b/browser/base/content/test/browser_NetworkPrioritizer.js index d4832da5036..cf6dfaae606 100644 --- a/browser/base/content/test/browser_NetworkPrioritizer.js +++ b/browser/base/content/test/browser_NetworkPrioritizer.js @@ -34,6 +34,24 @@ * * ***** END LICENSE BLOCK ***** */ + +function waitForActivation(cb, win) { + if (!win) + win = window; + + let fm = Cc["@mozilla.org/focus-manager;1"].getService(Ci.nsIFocusManager); + if (fm.activeWindow == win) { + cb(); + return; + } + + win.addEventListener("activate", function () { + win.removeEventListener("activate", arguments.callee, false); + executeSoon(cb); + }, false); + win.focus(); +} + function test() { /** Tests for NetworkPrioritizer.jsm (Bug 514490) **/ @@ -104,21 +122,17 @@ function test() { window_B.addEventListener("load", function(aEvent) { window_B.removeEventListener("load", arguments.callee, false); window_B.gBrowser.addEventListener("load", function(aEvent) { - // waitForFocus can attach to the wrong "window" with about:blank loading first - // So just ensure that we're getting the load event for the right URI - if (window_B.gBrowser.currentURI.spec == "about:blank") - return; window_B.gBrowser.removeEventListener("load", arguments.callee, true); - waitForFocus(function() { + waitForActivation(function () { isWindowState(window_A, [10, 0]); isWindowState(window_B, [-10]); - waitForFocus(function() { + waitForActivation(function () { isWindowState(window_A, [0, -10]); isWindowState(window_B, [0]); - waitForFocus(function() { + waitForActivation(function () { isWindowState(window_A, [10, 0]); isWindowState(window_B, [-10]); @@ -177,7 +191,7 @@ function test() { function runNextTest() { if (tests.length) { // Linux has problems if window isn't focused. Should help prevent [orange]. - waitForFocus(tests.shift()); + waitForActivation(tests.shift()); } else { finish(); } From 09585a1f8e434f3d1042da4923522f665579f5d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A3o=20Gottwald?= Date: Mon, 23 Nov 2009 11:41:38 +0100 Subject: [PATCH 14/45] Backed out changeset b7d969cc635e because of Win and OS X failure --- .../test/browser_NetworkPrioritizer.js | 30 +++++-------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/browser/base/content/test/browser_NetworkPrioritizer.js b/browser/base/content/test/browser_NetworkPrioritizer.js index cf6dfaae606..d4832da5036 100644 --- a/browser/base/content/test/browser_NetworkPrioritizer.js +++ b/browser/base/content/test/browser_NetworkPrioritizer.js @@ -34,24 +34,6 @@ * * ***** END LICENSE BLOCK ***** */ - -function waitForActivation(cb, win) { - if (!win) - win = window; - - let fm = Cc["@mozilla.org/focus-manager;1"].getService(Ci.nsIFocusManager); - if (fm.activeWindow == win) { - cb(); - return; - } - - win.addEventListener("activate", function () { - win.removeEventListener("activate", arguments.callee, false); - executeSoon(cb); - }, false); - win.focus(); -} - function test() { /** Tests for NetworkPrioritizer.jsm (Bug 514490) **/ @@ -122,17 +104,21 @@ function test() { window_B.addEventListener("load", function(aEvent) { window_B.removeEventListener("load", arguments.callee, false); window_B.gBrowser.addEventListener("load", function(aEvent) { + // waitForFocus can attach to the wrong "window" with about:blank loading first + // So just ensure that we're getting the load event for the right URI + if (window_B.gBrowser.currentURI.spec == "about:blank") + return; window_B.gBrowser.removeEventListener("load", arguments.callee, true); - waitForActivation(function () { + waitForFocus(function() { isWindowState(window_A, [10, 0]); isWindowState(window_B, [-10]); - waitForActivation(function () { + waitForFocus(function() { isWindowState(window_A, [0, -10]); isWindowState(window_B, [0]); - waitForActivation(function () { + waitForFocus(function() { isWindowState(window_A, [10, 0]); isWindowState(window_B, [-10]); @@ -191,7 +177,7 @@ function test() { function runNextTest() { if (tests.length) { // Linux has problems if window isn't focused. Should help prevent [orange]. - waitForActivation(tests.shift()); + waitForFocus(tests.shift()); } else { finish(); } From 3dd44b4e629318d5f835ba2970ed545161fc1d9c Mon Sep 17 00:00:00 2001 From: Gavin Sharp Date: Mon, 23 Nov 2009 09:38:54 -0500 Subject: [PATCH 15/45] Update MSDN reference in a comment --HG-- extra : rebase_source : 09bd40f3ce1df2e76190880efce35c76aa662e30 --- browser/components/sidebar/src/nsSidebar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser/components/sidebar/src/nsSidebar.js b/browser/components/sidebar/src/nsSidebar.js index 9ed5d617911..6ce91259e21 100644 --- a/browser/components/sidebar/src/nsSidebar.js +++ b/browser/components/sidebar/src/nsSidebar.js @@ -225,7 +225,7 @@ function (aDescriptionURL) // However, it is currently stubbed out due to security/privacy concerns // stemming from difficulties in determining what domain issued the request. // See bug 340604 and -// http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/issearchproviderinstalled.asp . +// http://msdn.microsoft.com/en-us/library/aa342526%28VS.85%29.aspx . // XXX Implement this! nsSidebar.prototype.IsSearchProviderInstalled = function (aSearchURL) From 400370a861d954884db68529ecdceee841dd85ad Mon Sep 17 00:00:00 2001 From: Gavin Sharp Date: Mon, 23 Nov 2009 13:46:25 -0500 Subject: [PATCH 16/45] Bug 529952: fix error console spew on gmail due to bad assumption about nsIRequests all being nsIChannels, r=dietrich --- browser/base/content/browser.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js index 83f76633d9f..24fb1f3e370 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -4326,9 +4326,8 @@ var TabsProgressListener = { onStateChange: function (aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) { #ifdef MOZ_CRASHREPORTER - if (!aRequest.URI) - aRequest.QueryInterface(Ci.nsIChannel); - if (aStateFlags & Ci.nsIWebProgressListener.STATE_START && + if (aRequest instanceof Ci.nsIChannel && + aStateFlags & Ci.nsIWebProgressListener.STATE_START && aStateFlags & Ci.nsIWebProgressListener.STATE_IS_DOCUMENT) { gCrashReporter.annotateCrashReport("URL", aRequest.URI.spec); } From 21597104d0f7e5fa9cff56985a39b539c2cf19b8 Mon Sep 17 00:00:00 2001 From: Stephen Horlander Date: Mon, 23 Nov 2009 19:51:38 +0100 Subject: [PATCH 17/45] Bug 431627 - Toolbar icons should have consistent photoshop blending settings. r=dao, ui-r=faaborg --- .../themes/winstripe/browser/Toolbar-aero.png | Bin 61656 -> 49900 bytes .../winstripe/browser/Toolbar-small-aero.png | Bin 24133 -> 20954 bytes .../winstripe/browser/Toolbar-small.png | Bin 33493 -> 27056 bytes browser/themes/winstripe/browser/Toolbar.png | Bin 61390 -> 49053 bytes browser/themes/winstripe/browser/browser.css | 173 ++++-------------- .../winstripe/browser/feeds/feed-icons-16.png | Bin 2190 -> 2187 bytes browser/themes/winstripe/browser/jar.mn | 6 - .../winstripe/browser/places/bookmark.png | Bin 1515 -> 1692 bytes .../winstripe/browser/places/editBookmark.png | Bin 1998 -> 1966 bytes .../browser/places/importAndBackup-aero.png | Bin 786 -> 0 bytes .../browser/places/importAndBackup.png | Bin 757 -> 0 bytes .../browser/places/libraryToolbar.png | Bin 2261 -> 2217 bytes .../browser/places/organize-aero.png | Bin 335 -> 0 bytes .../winstripe/browser/places/organize.png | Bin 387 -> 0 bytes .../winstripe/browser/places/organizer.css | 25 ++- .../winstripe/browser/places/view-aero.png | Bin 193 -> 0 bytes .../themes/winstripe/browser/places/view.png | Bin 181 -> 0 bytes .../themes/winstripe/global/icons/find.png | Bin 2115 -> 2561 bytes 18 files changed, 58 insertions(+), 146 deletions(-) mode change 100755 => 100644 browser/themes/winstripe/browser/Toolbar-aero.png mode change 100755 => 100644 browser/themes/winstripe/browser/Toolbar-small-aero.png mode change 100755 => 100644 browser/themes/winstripe/browser/Toolbar-small.png mode change 100755 => 100644 browser/themes/winstripe/browser/Toolbar.png delete mode 100644 browser/themes/winstripe/browser/places/importAndBackup-aero.png delete mode 100644 browser/themes/winstripe/browser/places/importAndBackup.png delete mode 100644 browser/themes/winstripe/browser/places/organize-aero.png delete mode 100644 browser/themes/winstripe/browser/places/organize.png delete mode 100644 browser/themes/winstripe/browser/places/view-aero.png delete mode 100644 browser/themes/winstripe/browser/places/view.png diff --git a/browser/themes/winstripe/browser/Toolbar-aero.png b/browser/themes/winstripe/browser/Toolbar-aero.png old mode 100755 new mode 100644 index a42d72b3c4da689f8da738173b62e16bb4f78afa..76199d9f3d88e26749cbefd7acb3814bf0d87be1 GIT binary patch literal 49900 zcmV)dK&QWnP)g2X zB!u1sK>-W)_E51aDqvUa6+|r93qBh@5zBk}D2iZ56j7>_(321#KuE9K>&*Y0J2RWv z&87i<-}~O*tHbPWX3m|t<@`>)mlFg5{wjZ!zsg^wJB9cLagHF*L*Z4^O~&}ddsF%k zKF3~L-PBOJ=glRrJ-2djdP?umL2j^p&tJoC&}d>_@! znKOsr+51=T{@*W}j{bP(-9Pom(;0Z2jK?56vZX&A!ea*>>+x9i_jzaTK9$pXqOY{2ah*1zr#tG9G^{nAzdG@jNfMTyEfy zeG7D@(8|zT&qPc7-DJtf9FXy_VwBv zJVxL#0FN9zWJ#k2kAryZ!ecWYYmvw9`>zMK+wNG|3r|ywG5Tpe)68jUJuQ%&Y=YPr z9s9e@?klXTa}`!rIj*d#bXMZ^@8i!4-+60dc~>g^v*}CILY^AJ3B2}ricUIw((xZt z2-I#q=@vk!08j@Y$OT|&`6tH%Xsmyelai+P>eVYfAt4b=Mgyod8U{u#x4W>#W-qL- zufMXoy6P}q{~`4+0$fM^JAs((oOeElK{=_%{A@c8R>Qq7yxZY5hYlSQ($dnv?RJF$ zS@^*tW5?f7W1;V5Wu?OK;UhZ)w;xyj(iH%jeb&U&y36FYxKyCoZcvz(09eC8?QK_I;`0Nk%^BzAtW)Xfa>n`?4(pG=z`)*0< z`j4|CBS_K2x_|7LF&7XcLg0dulD*K>)Pz9cX4e=D28fA?frP{)7&3TpR#kO1_HWs6 zy!RCZx2XLqX=?Dpr*Fcy$Dygc^58V+OdwykZXHaTG^tzfU0PZO2yD;=(1K3DuR}oj zGfGB!dZ>MTLB31(1h7r1Z8Zkt7)Nzgz*$%I#KOf(+z&qW+**PO&(4A-CB>{m( zde}KiL19UE@ZiCPT?IB$%pSb7-&=9&hG`yGEvHKy4Jjiphl?)01chij@*tfIoG}Ky ze)RmmzbYKw@Ne)mZUPl&62O@K{!2^uK7`NHa=f4>kAtp)8$Np*0YLhltRGo;nCW{# zzjNY7oOIo|xP;UzdiRb?7&#&pEM^@vG`gYuhz+*yu0w$`!0sj98fVo*Qlb(1^^FIY zE10%%OVwQna@SlprcnPcGI-)C#VhD`NM~$^y$&V z1ocf`aJu{oiB&vP12x;ctkKOTE%ZTvvc~F8*}bRXeWWpM!TaY#Wlluj9A|vLe_>*t zlD?8Q(R6zP&|(*r8U_7Rw`{GMk2I#YM;}WrsSwezFv;~!0lQ7w_csH37L3m%!*K3wm*Wm|=ROi_j3dblZQqCaNE zt6f7fv@Jt3wCip>*+ljGmlk;*eB&4Axd?1Kj{(?HY;OMAM?b56jK0jhD)qToqv})X zy^gz(`B6||+vCBjcy?Cljt$h};^JOKP#fxYxnSeQ4Gegal9Ql+dIngmR@Tq9<|b&U zuY-yshoP!c4Ov;)FnGw23rb5$dLWI5qk-G_@#AL@u>Jh=&#WsgDZLQHc+e4``H{gQ zh-rKQ(BgL=9rT@nn;&?*F32Mo)*cYYGB0$A(W+D`$<#1#rRHxSju>pbsUbaLuE?cs=$&GDph_y}u5hQOmJSHFDVKN#2u(DNnbqD&x@Lo{H!{>E>6`8n>X(fyP97!c9R4z`31I+D)3UOzYx zbSwr9==EA0q-tbbL1=3BK#wFNYFBZ2MLT>?BdzN`{_wmovl7u)8?{feNR`<^eiyVE>=L9M)?xGET1T;+>hR>WOabi_AiXr|Ww(3dTR zGWZ^YrgrtipB{Y(AD+DzeST+JCUxY$PK4&B($YUcJdmVXV24`QZBV0$cK^wvM-Odi zsE7S!`x&6+jt5+5zp(dA*lngltI{QmY;lP3Yke-nN1qB5sZQHi( zexy|%X_gE!P0SAgJd@c-jf|BK@{GaqWJcq~BPbp0bC9k@AVN?JX#@b!6&DI!qrzEF zfG<$@(!Ak0k(H1DM*k7I@lr2!4mzw-uUlyKA%zTwO2<;`wb2S{d|Z1zFM~A(#*P>+ znI9FVM?82*YZco{2(_1Z2+RygpUVy%?ApLYKo1}-A>elk8eROmw=o=G~?{zoT z@5H(LO-ihp0o%EEJdmc+XwJk3@biJdPeuQlUuV{8qH1iM)b?CNKb>*H<)Qe2I7xx!}55*(aZTa!m8_y6dj%bR=QB z=HaO~o*NM3>i>4>`zM=Ydfb+t9XH^Vu^CWN>406u4LD!0O@k(vDHkrXtf%?P(cTeYj;x zJH86ThB9}e{H4Va)Qx$*YSy}kQz1DxG9CX~2eN<3G7 z@Vn!|ANROB4EypR|NU&EJ@d1T$L9K?=WKBWuX}Lekw;`ulS=aRx67Y+X-cNXYEpmF ziMf@PHEY(;DHAoSj}sCS#$&q*6d*xB!D$7Nfvd^K#S4I;mrXZ+Y;BmWQ|9%9j%uLA6$$`d(28c^YkW5QF0+XMCjaI9L#`=0F z=sy4s?AwRhTLtv#+XwRV`(98|Qo1Fwe|-pQAz;HpMZqHoSOEgJKu~1P%vS_~|q zdUytGlBN~X)Y@;VMT-^*Y8-crxvCg^g`BU{Mm*1nb5HtDAdwf}i|(O&Cr_Rnl{wYb z)j`^Ti@Z6;#Y{NBKukfw@$b&}!l45lDj>i@g z#C)Di?vVuw2niY_T+rvk6-UJPN=<|1Uv%DYC?ICz{ngR_|OCZtSqHbRP^F zG8if>Wd_H8FX>@X0!pX(p1mHgbFlQnbs^AwxlCa;@_x zd}v!NmSbusi$M#PR85E^wS*n{5zmYLECxF z;M-LQkb)*;?{;H@Xp)Q&6Q@sWtaF|r1vxPK^qZ2t%wQT(!Z`1Y-i#)Fr#h%pmV8|T z9&ZrLrdDv1=^OA_TO7U+eMPBCi_^?U5c7|nb2y}pwb&8d@cYKuSxm#i&$lQwH3Buf zXAS}%Mdwv@&<}|pu4%dD%T2a42ncL&OdW46f9A5Jhd>OQZKN?+n5J8w5vQKDa=SgH zRSM}Qs5t}I-Su`Ufm&!n#hSzkX>$can%iA(l|1m~?R~*&)^rGNq#@yi=tpM3xcE4z z%-IJE%Ki>BmjYZhUmKxPQ!`FJmkYew0O)yMGJhfC-MJI; z^7}&3ru9%=T}^=6>)^qIVf~Ae8TP-Modb9;hhxM~k$J%&)B0&bPa0DITgocI<@PeE zIDnuhYjAXg@x&H9Pl}x;;Dg)$IJ^q76T$|HA=!&WKrh6bvegPjtW)ugB<~3+U$iL-Zte4_-WOuRXo=51l2+P(a|`fKb0Qn znprowN0$_!Gz2w|*=(+(x_hLIoGfTG=Z-!p6%HM>vj9AD+b|&y&wk{!qTolSd63RQ zHa|W1yB4)IlU~c*K3bgyw5YKK^=i=a;+#Bq*ao9Vrop%Mo^!FTJzCuduQH{ew)jgy zJ$TZ0KOM@l#_CT9xb^61u~hhiGtW8imAX|wJ+ihV#wdh+7XQ^~v~@10LyLTXg7{j2 z&F|w+*6B4+k7!MS8zQLj6qXHkWD=KOn2*4d$$*Z^((lS)={NhpYB4hK;kZ@_m}qFU zYDN>k&XeiWZ!&$QL`l-a=gW$j7I^8oz1Z(m7kyv6LIgLHk-$yGCO6TbXI0XV!0{?F zJFcCX31ep;oYmrz!3}gH9zSp^eRg>GkiFb$LQtETJx5`x>*flBbHUCac@^4M@> zaClr5dly`ynhF(;3dVd;a?JMmd^*t-5Gp4pAc&Qfl`?G&2O0x4KaLll6q!h4=hxrY zL3ZCh5EBy%TD_i`c~lw>wX`AZk*#s@IB{wrKfeGF*uwhPi-6`qAgz_Ugj~wVk_mF_R~m zKnYA;ZV$MeP6TELI2}%~+w3f$!GTP@wzdWye{42m9H0GbG2#V3@0x3_xTiheog9QB z`?X{rApu=b0<=CKBmv?EaB6||L&?>Ro%#erT4!Q{q*1w+P$`+5j@CvIx6HBO-xRWN<%IM1qGRh4)K1CIi-+o3 z7uf7x;)gg^gVH&`&H)s@1AcK#kqO`9MgEKDDOU}G?R)BB@9tWNH5CKxry8POQ>~q0GHE*;kFxN<1T$zG z;VBoQ6BB1h^?6dK<@dW}_rd+&Hn(bPasnwQnd=ojDTsomD1MsjT~1ee?}FZ$#l^)( zM2*cK9HhcQN-x7u9(&y5@q!H}^W=;A!X;<5g4*J5%i-V4O2A^&VFQQ}jLHWlW@9$0 z8O>JzNN^BMEW5+c=qq2Id=@D8!KX|1Fa~w`c_O$`o%DUt@=_*!7z}zg$ca8ZtCD_{ z@mrl7t68vib`G5Kco~9QkbxTtHCm;nYc;8Tzt7H@L)Ui2PemZIeZRxX`9)9}pKmCU zG&P58F?eoi&3W^_tv|m5%Y1bQpw_e5;lKXYSGGT^6q;kr8kl=q0Ro1o8Pn$n=IsQV zvlZN?zp&-m_Z}JsaTe`DN$U)I7q{DOOh`z`qP_}BO#j|tkE1Hb!3<=fRYwlGcRk4>9UlGQN@mq3+ij40@lu*c4*c~ayjJyTs> zJycd!LSkYPq~JT?=QG*|HC{4Dg$KRxp#TpN=m>D;p7sV)jhfo@Bd69J}Li(Q)g@aJAPpEFDiIe6;haj5Bx9%>EjM8nB3UK)F;RJ)h z*kp;ZcUV%`cqBa3|KM zi8f?H0f9b0INbr}*VOB@VKEbJOks)0KN{T=GcwOSzvA#u|C9v_S##$&3F#!^CuFUZ zTyI*f&WrP?iQ0-nG9+N*v%#!G=@SPRGEZU*HhjrTFX{u6&dy*GGL?V-a0EU@P%|6# zWFr7?ln14+q!BQhAzj^%kQAq*cdCqtrbwF0@*04)#M2vMefvRT^nzX2dRrqIDaX@X>$JAZEW84^gzzA~)5l zG;ENoB-7rm9XnX-=l1Ojdw1=G*chuwQ`xXS57Uk)n1wWu2?Mg=;!%CuG~$?kS+IO| zYqIj!8}`8b6>Fiz;R61AIZ2BUeGoV~1p^!41Vlcc zmrX7*{g8=t-@bjI#|d0rR|5{4t3Q$z<0loBh5Q`6LQ|7~j)9K!H}+hpMR^4eQ;pba zFr9&pEZ9m>p(w<#ItcvTD4>QwO=jRERCKov8H6Mu_oN%|BFW@50$o40fl948Q>E2` zyP+QILcvC>2en>5Cg}5xAztrktosSIx<}S7e0yJenk=>H5Y*UYQ=baQ$-4FHPe_hi zs|gsw{9X*)x|c_%QPvS9Pc7_TUJ6_aNP?E=Pi%!vzAftsf!l)*KA1Xx{(N0>Qc@kY zPI}f=SzbSPK|#J1np?cg{OI-4fxza)HmA=BXg>T-aSD{vN!A9B-v`rg90oUDQNW&I zaQ{T;Ul0#li>h!g1{lbbrY4ThR;9I}$phKhR@k}Sb78N%DIZlH{@39>J6_#9WaNwM zYHFS1;^Pf%+E|Rs@UURR3(wAj6+e_Q-zEhFsyhHTQ;ZH=cGKT_rjPlmp?pJ|M zL_TN>Y?-Mjsrh+DL>mv^?R2)%kDQTIpN|-iAI8+Qt#jp08-kyY)fbI^r}jPUXgb1v zQ>%|HssjfK=Wo}fMag$%(EU6$W^tJE)P`r3Kg3$J@Zx=gnPWE?Q5XG2f4lF6&0uqc za-))o#@DZn+YkwCSTYclda+4`!??P-9tWQj;^X4r&c08u$jJ99p22qE;KtKDCUpJq0jN%9DbYO8N*78$-jAZcPMR0KHD+$ez?^UZMLZ=?az zb#x7xnQ0hMjuRENx-EmHz!8Vt0Un7-fBnZk*nXfIZar@}^st(vHt18I{0OVJmMZ*L zd^8^$_tLBL((xH%$PY=+-Q3*77y>a8yWPf2k1aMkxDZ$!_}PhP(&Pway$En*mMq&> z28DxjVei51kZ4SUCuhwW^wgYLJCsvVke(srR|}aW`L>{=p{QE77@(r=9CQLwVl`u) z_<8SMF$g5DPhKdBG0bPDic$yHHDL4j{Ng&1e&1kyY}^Q)B^G?xP87(4+87BntAhT( z_xNs<2Ss^3cKm$km-(;PkZ&g?N*)`n{vqeCZ7nJa@i19qI}tf^;om6Ef1%Oi)wnX4Wjy z*w_LE-XH@u4}qOW^tm~4j=Pcf-Fnkdn0j@;kU9RnPf*}nxE*3pN%49EVm_wOiWn-j zI4^B>AM{Ky!39;#zmSV#ehIBG}%3H@i}>L;ThS?O83P# zCG2@30|LWMk~-iy?&Rbi6Gu2~J6DU3B1k@Mg{Br#-dZCj1O`z;P< zu#GX;;SXp>-&u6a?{5sQNw#XcYKnAZC8%A+hkdd1W$mt(QH5E?1ZY2Tlf0`&$!zED zj9-}b+}ak0Z>$JvI(YG+5unzpDNY40x#LGEVoRKFE8aPa{f(}<@7WCqZel{a)uJQk zt0$5;4yJTu+@1Yve z92pcfq7b7BXC$iZ>|Qqza38HW4Dks`P=0Vf?AfyinS~!*_$<5>SRn_ZFs6jStQB;O zSs6`6I8a^&@i8~Rh{CbZMCQzZaIqBp5|Y4z0UnpM8Kmw%cpyxF^Fs)D-Mdjc zyJN*$FaN5;F{4q5b;%*~(Gs(jz`+0oFC98~a7a3*G4=b}wI?LUtu>!dihPs-4vsI6 zjx;OMu#{Sxd}~0;rIhn2i7?GSQP@+r2W+!tQ)F#ztu`?+sZpobNkFL^O!MC93a|h^ zzZ4xD@C(v+F=&K%D5c(b5by}pre7NlYVUox6$~0J_KjK;w8$T)5kNz^Zvip+p6IAG z99u+#0!#vK-C%qU7P;v4yZ3@qjIoIHl{VSEaQ>OS;o^y6Kp>r2K;VjEoVUCb5U7d@ zZlrMVoN0t!uUjpf9)VLTYg`*P9r{HelV+j=+bluW*mmg6hC(4Rp|w}26TB{X`8%B0 zx<x2ddT(mQY6(=*=!hQ=zei(^vMsA9=7>3-?`^1v9V? z+3fl1H#T?`>xQHZBxn+~Lyn6|KPsp-`)@ks&aJa-&Oj*o(PC6H)yCl#fzH+v(4BI} z)>*&*eHbLibqU<+2KO?y6d$m&#`tYpQ~tE`QfZOVI)$GtR2?3}p8w~e>uDO^x7jxmZAe4hJ-)XXtd=P*^q| zk^apc4wth~kK@AL)C4_x_6#vJ6$3Sn9T^!JaNBLuVg7snfIIKJ9eVZ3X22#h%9@&L z1X&9Uw+C^N)m4F{t!xo>PXG z%Z#PCq?PIR?kz@Z_Fa(NX&w2?4dOL5cn!*uPycX(psb^*u^9wnNI@?={N$W_upv*W zKw*H>GRw_Ul}3Bxm#@#Y_eqZLwz-0QmU7yG@(fad&56iy6BE(HL-2WC2x-uf3H*_O z(@`A?aFaAPKIA);19#YbP>a?J67Z1!M*v45|v^5>U(Xh(6{3 z3!oC%XR?fu`O)L?fy3!S&B+JTrwl<&EnkWXMo{~BFTAs$2y|>!9jzGiKnoFY0Y+bZ z#vlS5J|_WNfMfGNCRT?+jkka_M=3X>$>7pShT3CO`C>tlJ}mDZee zWcmuJmXAY`&H=Cg=0r8g4fjkCG2)(c%=ldkudhL7VX;bDo6J-=(BcF@^>@7@c%&_T zaioFZ5MahQBcm+`sJyY-hjscuosI*^XbFK@d-Nj%FzT9pH=cUSAG7QTYFujohHw3Q z!{1{ed{Z~wA_JbiIiNfBmQAyMdv7Fyo9@GCffveDq#?b{>z4n*U*_@g>Qx(RQ)bTB zzWDTX1~{7){x(AJ5l_5V_QHo>AI(|5y5`FJug?DarKhD($ZTypv>OxS^j|H0X+q93 z@2@|Jw3(pLHaH+LH668qs<6M&wb_PBcWL`R}p?cIS+=3!8>;BW=v$jfPU>V z8Pc}&dV}nPViUiyQB+EeMiYVJ(1=^sJ6dd4T4GTPY^aBz&kv>h%U~c%-YUr~$^2{x z0=;s2!5w$p25-If4%~hB9gv%ogU_@b`W5yETCpTAHx~h}hS3c7v3Vtp&BvG;E!9P! zWzeZ0H%-jR|HrqR;EK}*GxN%@yma_^Yq28SA1A479*O|A%F3hp1%*TKc}IZWV1SAv zM_BMlAkgX)39$7ieK?^}5b*oNgmE7wjr&;Axxrup{4)&CKOF+O0XTT@z+ezpsR@&2 zLq0Y^iUJhGAdV~gU&p|O86~8{EuavBQ{vLx>%bOh1Y58PoPrIUyd5fi5Ifi1v-;63ZP7w05cV`g4H@lx1TT?hYK{xwD7-u%V97wrSmdK{C9 z-+`L(+!tPG^Lu)FI{CD^mE$J!k!a>Y(QPURj=7tko*$C2ftYa;TB@qTmo8)2KiMHYs?-Ck2kUU0xLU0&w$ngBhp=gR-W!7v5!{ zMjE4z)k_+b!16P3j;Vr@36d-lJj+v52UKEUijTBUp%()jfmQ;luI9a|EMTRLACp%x z9wG+>PCj1*x4)g8B?bh3Rf_WoLIHu1931P*Gf1Xa4q7p+RWsv4OPg>~!nSC!6tA#a zV+A?ff0eJI_Gtcq?DR61Eq%;OXHx*)FA9J)GY&YTE=*&~ zGx@-^qxLA#44FwfqVJADTFs!=3vk;>8hCe85bN?lY!=c+>7Dt)I-#!=s;cU}(@(o~ z!=pAwtELuf(fEFQcjTP-7#1-I__^lPY3pan*O2CR>eThKetCDawr7%leiZ+dTpFgF zpZ4DNlIAi0{;?{Pns&jLhk6}8>U{Imp$R2p2gkDn?X}yRM*X&}G5@Dc^(;ZV{D|HB z!@AnD5ZK=9#Qk57z*NRj*ms1qNM9FyT?0IV+QozPZT`;j0SYQ9lk+&DOrCyvy%B~D z8+KedCp&iRL?G2i<{_SIxRv>95t+eNuy-GEd)4vbpoBB5QMXa7D82{9iIMlB@`d7 zfv?tXhuJrr0~3bi!cUv`NYb(tX&BuUsj-^13BA%=tqE_u{@QW0P`qS1wbNRn+Hl4y zX^(ts!YniCp%&%h9ieR|ICgCS8a?&U7^s7mKt0&_Mvyf%8Jybqj}%(r0V#(nyH|E7 z80A>&u#;(+BXd;{Ui|ytUmZVc)V)VhL%n|NU|7F>i|ysb)f48=d%dM!H}+qPEYCgn zT)Tn9D^{!!qUE?L{rXgfN*Y{y3HVYhP^$@2XpJHb*Vx+43JFh7=+MUoFsT0kNi*aX znxZ0)5ISGp?c|eB)|Hl&gv@Ym51(@As0;e`iDS<|phnT`O-&xK;o0Hzg5BeWyQU6; zY1i}#X=<;$vlCvPw;r`^(iTx@Rr#3KsNzJySc576Eskt9(W*~ch)*zrR&4;SPBd*E zu5^M);8V;7Jp&dV4mG>HgTm6c!h|e@7LNDAho9|05DUT;7mCsDm!6Z!zAyRu0K^Ka zkk+bfHw3oSSQM-Ug+MWG+_!b{~Z!#g+f4 z+&3+hT-z>vMjJH~RQf(CbAc9Ve_Y0aH75aS$Ar=Dh`uraWB8T7J{cZ>fuQ#O$#at9 zb)hA-=rjHXr{4H`E4VcWb#!m#PiL*^0NBV^w&UV)DQ`43dLLZ5p)Q5qWaZkL6gsH= zqun%dbaKtrXQ%y>s_DWU7erZ9@@U zb8@m_+m@{e#(A)L^Jb{8uY-XD2a>a#80klmd$f_ZM0sSis4-0}F-Ss;F1vl+7hrR` z8EDuY9+>g>rEv8b!=<1Rx+WMh2SqV4=?@$TU+Z<+v}thq*%!jmKsI=Acns`ohMvhL zP~oJmsMrR(wr>TWO#}LvEC{Fs=##|3FJG^K_uqfNHRwsCsSEE|X-!5sSz2ff6#4eh z7owj_G7&Oh(LlKQPyslc8lq}!K`Ht%J3E`5WmC`b)IniDr)KgEj94arbk?m~_$UDo*?a;8S3{sMeP*Fv`aGxZs2%^bO?Poz;O0ANO zIi(P!Fuzh1rQia#oECsf3S#0QAzn{QBtmVS8|*F)`eo>tC5LHuI4?ZTAS_;eG`fsV z7KxynEzL7_j3YcCu+o7-XRRprMM!7_v?J1tpo`IioNz()ZQQsi9YHJ%+z8Y*Zrqq| zVAiG9&`D~u*0m!2{KBer`%cTti63W7PlkGr65KSvC*t8T!N2h(t+_@v$yEyANirbf zSJpwfptv_pH3=w4QIU zd+^?_P2>OsqnRrxHwzhbk3o~#{=E|k5~VIPB}Vt{+m}sl0vOVsXpb~@#)BO7jES)| z7{!S}E93KOAFQqU7&d->7={&$gTy3FG;~~8Ut2poJ16IYOoch*zz{)SAjCJ1ox$yzY#J+Ncv2B`BNz%iPN zb2c4f)5k&#PQbe^7zB++j)qeFNm&huXJTG`2FSgibM-J<@RtY=x7D+I%G0+hn;L(8coa} zSHnz^cuPxTcAU!>q?IG0gIWODs9?bQ`@_B0Q+6ipkz6fB`u!zfG zwL$i=fgBAf!1ki;A#fv5+g?vJ3?a*f6&_()k z0LHtshCY7dV}Hy&aKvd|^YN(&YWiqFA!42z{td5zao4P#)jQMdqiQCrnG`R*9#I+15u&%q|Z@u1=0wJ2Edpj%Dq+PuK z=6BLMZ{o60W77j-AcT}${qn4jL?5Nh%teOZ(Ka?_VrI0D7J&c_6uc7|9S=cHOn{_= zHX9WaxPvS>gH|ulX;skdZ-g&aEQ8F1LdfZp)h524R^zAr)T)jiP0q~D9+lOr7gQp% z-@NX3u*SzjN@`E&(>I^_+R6_efU2r0251DVq^S`P*|}>MnQ~u=w&5r-Y?1j0t)cT_ z%TWbeqYZ<6C=X3so{Cp2Db>~#>2|x9HZ?U}D*rI{lv7|pb{gcC`%t?#fHgqL>jALW zHb8D{Dp=BpJH~=05hY8Fg&gm$Er zg+Ik-mS-$RHU|REasx9(3gB?Zr@CnUR8wqQ2|Vbd+#R^@>RvEoa%&#+tBWe&)z5Hh z8?E^FC=vB!;^2L#1htgO0NT1!fT+6_?=5EFMrQ{2ifiPB#Hr1~_KrZnSbf!icW!Z% zH#{}y;=*x5MrVNv)m;zIfmh(bCnpG#D2mTyq}9%w+;H%>!?5G4J!>k8s-FC8*KMoY z>!e8fgC+WIY#=Y+8ZJl?A9@Pwm*^kpB7F*)=#i*jy6E-M#kCDy3j$Y18;yp*?c4dM z6ybdivr)4E-c=?3wG})k|H@Z zEc!7wH<$U;$owd2YVB?`N-W9e^@MWKm>DwI8Wc9-ZE4HoOQx^Z^Wc*xW!M*$H?5U|N-W+wB%E6eIZ&>G<0OOn`6GcL~nL1%zh z7gvhF#`c4iv{R3weCy|!YCd}e~1TbJV^t zcF-o^xV+!nH$Q?k>ukbY{W70gyW%b&0{x}o843zQK3^+zfWZ9e)z z7wNMA3rD?m9Z8z}g@+_TL?Z=! zB*a?`*GiEfTIhISE9$o#0J z83OH@kG)1qQIX`G(xb=ZZAC>5RkgK`{!f4!1J-tO+#-=ph9Y)-B;VNpcL3~tG*XL} zO5vGT+ZV}o$a{V%>kzmo&(w{gOb6&Hs7WTzmNU*gBfq$~c$@gD{_Q%-$&863$Frz* zQvilqBOSC4jYj;9)EES$S6911FganynWD+^o(tnaFdE^t?@|8NQOcH1RQ|*;OJKP~ zq-C)K>(XmLSK}1xmb6E=Th-5vLN3I_x7FAJCV1^z2k`hj_naRKZ+v5eH@-$ez>4EV zZ@O=Dpw(%$90khC$-0~zC)d{hqx{|Jat88p^LAZy(IxM6RF?!$vuW#@^78UC@aV9A zBLhX+0k+ri5oXAY%-?WW3c!#wF-gj#Ts4*AOuuOq?^U+qt;iYWmcU4*II1O}GD_b& zlmR3fEz+4+9D!p7whjVCqWE-SyJct3o?ST1PoS-$S;I`2s%fI_{9cYZP z@YV*L7Zx*HfPwe(EK!@M6aZSOiTNsd&<8xA^Ei&i$2+%*sRtZ|{}1)_K%k0?0&FY? z+6iy0@qnQBz`Qj)E#VJfFo&gXMHXFiBXADe+I|D;HtTgd=GT<-*ElJEO^5(9E~4tB zq@>)c%BpWTLHMud>3@~KO8WrPcKHKN0yB+t?#zTJC_s#l6q1Dhf(h2x)XY|jc=(xT zO!z|ABHR0D{!1@=|EKDI?6JqX-G&{d5BzV{ag5`W%$|4F)zy_R_+Y_SrhP8Ync0*# z;8t5QSHpv?|957WZU0|BT)2Q?~&EkzJ}c;7?UUt00cD0_`6+9Y}^#!WZhG%PtextG;y{k!Hb*7jHV z|G7i~9^rVkt^c-?K>O2SdH2N^NllqAwVSwJBx=fqS4}q=;}h>q=|A`!du?@7L+PG3 zm%R4e%E8^pYg6v67Fo_Z>nwKe@}6tm0}lN&&pfl$WHJ@coH=s{zL)nut^NIe|5jw! zXP-Io%p+^otf{jYec!pOj$Y0W&PWupETHlTpf!j?9LDblSwB3yk?{zvsf3%{(jCJaCqTj2&NqrhO zx~DcKS=YhDVv!hlwzPs-2cRbGuK>Q{==XyP9pBJOKJw}^GQi1++MLoQOvsa#8ISJ&+tHk%_R^n!B1Ua{f9kj|n4*sg!g2yG1($3m=>eSTS6;tH%a~>FvrwQNxyg6>%xN$S2 zrM*_TTJHU)MY6J{U>5um#1WAo)QfB&%Wfg z87CcF{@M2KRCprxT;P5dO6J&(gA`=*VuFB&A1L?{qqc4jMRU z?CzbrS6uZs+vc|ysu!Az58bc6dU;-Y0=LHoDvI_W+8ygYed@8oFE{8+f_xT=BHP$V>`o@;cAZX#UWu`oT zV&cW-A=#i#(4LTX3D&iMyY%1@D`#79%1MD{5Om?{nY30b$3?hSrRD8nVl3)`*fwgl zx;8c`cD=yd57AWYxvK~Af^LQ-A%0R;hAA#7!3eQdJ(vvQgt8a9ldbq+h z^_l0^eWBufuRr$agq>Yd;s0d%(7L!nSNvz)x%PO9PC9&`h?e`0FvlUN-F(t5EYu&= z0SIydSX%zc@c>#cJWWYXN}AfMSFd#1=ged@u+V-2BbVD<*kZF6*4NixSzTRq7_XBqU$a_q<6Tsx(@9pzYmZ;3s0wweFOQ zE;#=;i#2WlML5#9y!`UZS2-Q_-I5^oXMoyl>2r7eZ31d-znaXZ8z)~m`LvHe{^X~; z9RH$S8+R7!ddHs|dwMPe?7Xv;)@}c;f8W3&w(|x4S6-q1oB6_=oJkXtPe{9z9I(UI zZ}v2+50pQD*PXt#@|p%p*`_mzaq<;coQ7?a>-Bm+l!t#CV4L&ouakpn)9gV568mMQ zTM+G4;PLWcv-zO0QPk2kBn9X+kdtkNjI@}zBS+0Q?JaH`i}%i&_4xP>6K;r%-D7ZO zVYfHIwv&!++qP}ou{n9_edo-XsZ%xY*Zp-@t-Y^xt>1rj zNm*sjSL+G+xSm|CZ2pG2@~%UDU4ROc&6(*Q8q)HhEairMN~xCPl_$hYMk#klb;d(D z3$_8l3;LnJ*E5?>+9Own0HLpF6(>B&1;764h_{wB!LXF$?r0e z3Kxn@Y$qr=s++toitEIr)z&M}N)a2I3Ly-IG*wns<>TP1v1&IKXvMIhH@C18BDek5 zHbz*<^RU+<>xigQs~M3(CVipu=@&gcI0V}Xn7JV3&N6ZCJ2p8fFYf|hm;Q27V7`}x zrB+lg$B=>!y4{irZ>`-8%2S{mZ}XB-J#pY7cH15N<_1#bChzjv>;wyv?%Gu)hjTwm zOnLG=d311MTuQ$vrXCnudltPRJ*ZivU^OA{*Hty_x68!kiOLWdOoRAs+Wj>**NL=y z*MP@RGPZv82pGW~5^YAL{rvUk66@^F#9Z z4!uwmxK+=+1U&UE^1Oj^bG->hB~>PE(xCf&Rr+R-)}u-ic3>GE6ipf&xC&6!bGi{N zCT74U`~iWXggfdB2i~+Q_r;aAtZ|gZ#KcL?r;Fr*$rO!|L#Nni^8g$^a)i!>bQaE% zMbP->=!{l(%|IIuREwUAwAtQ}6Wsm1Exa}UE^(}nQ0oD2w1OiTFko3#uHN+Y@O)hR@ukiFA&7ffA!mzsYw}yEauGsBzDL_2%uY|l|*opiFvTgW)x*ciO<&@$#kIY`yLOb zzx6RAh*tRIq~6BCAEuSEH!LL;yd|3SlmJM*S$*y5Gce|L42YhT5nXaRdLdCY)?lBr4Yj+VwS;~;bGCS&^q z-1Uv0R#_zUm+$jubHadPrvzPaQwXF4)&9qgh$ipJuq`C|@J3?~OKlW9SaqV81M1(q z_w(ExyJnTxG`iy9-H6Ro1sw=M~h z1U}j`T(G@m9L+X*t&LkLIo6<&a11?-e!|Bb(V)6F0~mL>CSoj5F-fR4Yy*C3_Ud7S zj*6bx^^3#HiS?RRj2d%c3tB@qM%88iteNz%Toh>Eem_VnKv9DK@zD5?T@zyZ584=Q zaztdW!E(l8ptHf;u3g8c$?nJx%qqq?!%L31vePk}hjaoUaUYnzvPyba$(wl3oi9Ul ztU5!;O2>FutoKo$Kbs=;*&v6Tv*|H1Y$!k6q0DWy8OTcn+Y%%YRb^p+*H$^@7k#PY zqlGf7^FN?sVmhMs{{vJk5v#gVG=24FoUH1$8a1zVmINZVFD@z<%F-X-Qm0ukY9i(- zhsWbyUbD#8chv{VoYUP~U5G7eS>~KwK((4qLP+KpF*UZsPp8L}RXor<0{g>f_Q?<8r;L3X^UR(Io=rh^xj3e*go~t+nE({unj9qk-}< z@74^c$VMh4_Vsc$rQ2Wv$VpCWq&jVg4PBa9+eVhfXiIMFfsF9~4HFN~@EJR3QL6#s zx}?|p6Y;rL8vVok2y&Gp{I;phoo?4aZU0DgEpIA!qaI(fQ`ee80gktB1k$An zI8h0ErlG<3(LbzwvNX!SF+2WMwiW&a>HkcJj~@a>o#LEU^X|WMQ1IrxF2)qKZJOVt z3uYzO#@vO2;W=9y%ztz=>n{gm>gsJOdn~w|jg-F%dDKB(lrRvj8|N-%Z;0xf4duy< zI}M!0#j&*MPxg7s*Sp=>%1vOYI*iMJPYsSw1$}Lxh-B9UtU;`U=YwU87jzc8`Zvx1 zmIRIJ)fjvI5q88-wQw2Mf895o;;G|1Us%n<+vi5I(I$!8pd`VzxWE0oV-Yj#9IN7 zfrY(d-aoG|uQ?xYrZw^V2oJugimxv~`T$+>?+l7IEa&%KMT2>q0Btn$5e-m^h+D5T zipt{;8ck8R!U%R3=BDtIY&M>EP;6TpmjtdIatjc-O1nx$IPcJ}q0~qylGlMn`BHle z8Kr*yIER7nm#pBpt@G$bT zwi$}jVGzZ=Do`S-M_=$kv3igY+JOgA&wu}VZyDN_Y$YWn3vU^OCMSc9Y)E9s34RC! z8wh(O^6^;dOvd2SPGQ;U7`$7c&gGfqBPT(EXn}m=1x_irS8U`7!`QoFi?nfsGEJWA z^B8f1w-C>CriDwDFI_j;@eu=F_^)0+vHc>9;dLp9hAUD*dI$g#U!6mRI68l+YdW&# zg|6M(OY8!UK6n0WUeh2nX3RN^Ff1x||FerX0t70|X=5dA=zeFID*lO~AqDXylAedp zo@QFtFE$I55Bm5n1oHedD8fuvhj0np^EXQwbhiqgfnjsOf|bbVlX>Rk#MHi%|1;^! z1E>^BvVG{cKois62$Qp(QPaYIs@OP{Fu<^SKb{a$ntbjGj<5BGhwocTav!Stb#w69 zFr4HNd80xs-~RLgjwIrjuDy3^TP<^rpaaToc<<5aqpqsD1d-AYDc$uR&zvS>H~Vs2 zFF`Xif`dB^63x;?!0SA&(3U%Q^4YL#a8Q%-HL(UDIXS#@o!~iyiWi4_N3YP25SUsCYJy zw_nfgS*7u9dzp{18}ua?|4JxIukeB{VdSa{D{hTXMO()7PfiSvZl1@eKEYP21Jcwo z=RN*0@9f9;Oa2t5T&{ojzBqw@{umz3m3DI!dT0_(_#BaFV|i=nXn4Py&(*6!4<^GV z21kx+XdtDszp}dSdEKO!f0rRotX@-FRaEFk8}(Aya$B~1W}vDF+4PwlOjg$6;Y73o z<|FyxWMGL$Od>tF{o$*pgg?(2;4)wFBU`%JwyhAKDl)~LuMLG^K%%bYl8~JrzOtRs zj^wXQIxXI{m3rON$H;A?204yA>osRuQ-_Y}W_T@y&HP1BQLDLT7AYyq8C|Zja>-dEnjX7!T3Hh~5Q){k_ZH1!KPE`i@>oCQ1O|DlM>w(w1dSSMuFXW}IHn zrmiTjY?NYq;b!U9?3c914^4KQMf88COJ)P5W|bQ@auy6}HA?c1P*v^cKt-^|nZMzz zVW@LQutn;^m=&fnAvsc~e7Vvc>jp5{dSN0o}Pi#9hi>d+J)NBJOmAnu76 zkI#-OR1X24F++3u&jnM{X@yi8?tr|8{J={_g65o;g(*Dq(l~*rC0Qp4*|W@|3;_Ff zSFYs`r|lO}`n2d=mk;Y|U^X(0<@9FeI3NGLi#=A$ZX;5MqpdGO!1^%JFUZAznh-4b zmH=;aA){9&!dzyoY`cqiO11(_gNamaJu zEZG#`-OCAYQdq@*QCXRSStj{A=s>zqQli7mkJmS@k<0avrAmlOT?QNB>Rowh+&+R; z9L(va_R(nu5C}Hd)@(|(9Z`Y1mW`c-SJ9 z*M59ctO$kZyJ2Mu%5$mrHa}*FBKFJMd}%WH?}3||x3vO`enitT&conq6z+e-lhqnH zrG-i5i<@$rd=Clz%KPdf~DWA!^6s)J;b6HiCkpSgdH4{HukgtyCF| zh6|(bD?}86t(hi8=;9pboi4?{5QH*79z0+T0rOwqwSQ%9Q*8+%-+Nj3OK$*ZG-#58 z3JC*K02cGGc@r0pN-LP9fiqj2kGi~6tP#@9C#HCsq{YI|xD=(V`;P+j#SwJ~2xj_o zk$k!7vO+?WcU8(^ON@%FEbw9;-QXPzp6 zT|_Pu-?lu7BoE^0Roij$QYQP=`s*Ec&4ijOh$U|Z{^z-^x5-<*R37J2g@0=^`fs~p zp&Y{0W>mnGs$IrsU$WV@r#aSuMgtsqrBbLJ7w&grO&kw~*v+-+=zQ+n zJPjlm9NBK6h&5QFWV*%0tU06ctu1lEsF3ErANsf=h(OcC3Z?nE-cw=_6jIbM|CwaW zgFr(o6@@AU%V#uYB1@7=1!Z1E#oPur1~Ll9yTjbyk_-C=?k2j0G81}-NOio~>LdJ1 z2@F8LtOT6m-=b22q!Wb8muH{(NX`Fmc`8so&xnxtA9-rSez+56w!lMun~+^vRYgEU zOH0hi2%~t7e|?7y48$Q^6V<@J?+XFrDctNr{%`bj9krbHpM<-(`JC5j>-^ljzTT?O zNm2s+r4}VnM*K^3X?9UUxR~WL@DI}=Y*6mXl3@3hb|9-wdXbr!e|syalNf3tBL2h3 zq^&p0#O91$86))reD}P;U3;c=6P2y)H0#`ota5aQ`PzZdz1wIt1{1nVB_iT^DyBvV zN#Pf@hIvYWw~+JQTyQg412p8UNSCv#y>a5@h0%!PTe%20TS|!Zk^Gxw-7d(Y{U0qW zfg!0}HV1hjbI%(DZk%0u2v*vl*#Ybx8C-0!2}qn6oX+4`00Q1_{N}S3swH+nbcCG{ za|YBDJ<^2mn(NN;Y@i5*sI$@}VWp*?2*NPdcMWU~p1%Uwz_3ZpNMXAD>};lKWSL#6 zy0uNs_#yzi@B0;i(+;#_WpZYmz#clvU>AC3WA7UNC8O~dT2z&y0o)QuUinyI`zVw4 z_@0a{<s*n>)}eOIUV)!#O~l{mR>zQ)ov+?~=q(0bTt-v;N*Q~LL7RlB z>JJ!d@qCcLuF3x_I%S@Zj!cbrbaOjX|3f+hl#za_H6Tq|2~jXH&wbX4p0oWXF8swwak4 zNafx6pj!uj@Vs7k(4Y%$(nP!Gi5Bg}VM5jrf@N_2dj4opYRLG4_rqp3o%kZCaeoK% z>ezxFgzntiC?=cqBb>rIHJS_3rUCFh8y1Lb=dJccXpsqM>C=wP3MY3r)`xxuY=04Y zZi8ZpCVhQ1+19n663500oUr;iArE-?{RsF72ckVFUu>09x?EM5@yd0~*KcGYpo4PL z$owp9o*^bKeA=9R{P5+sJ+d~XY|ntW_WAyrpVh3crahT%b-eg&HG68U+wQLlSR)sR zs-C13Hv;b_(dnIvK)3WN9@iJIX3q$;7We{pPdd2F8_Vv7RV;{4Y#GkIGI7j%(2=U# zm0Q7SRw!+7hm;N>RJ;ucecFLHgso%h5;o>WH+mG62G-1Ju9Wg;qk1$RNi;N;Kd7|n zc-D&7h=YN<4+~}GWt;`WWow4D2Wx;PuYWWnno8S5 zj9!sQDFZd?vyx|G*c&ZpB9y>Dh|qmIc$AC1O}4SS(Vs@Tz4imE7sdo>k_@`dA=X=Z zy;T`(@y?QsgLpI0+pqE7%?8bVKIq{lM)SNc6L;=TQHa?({#EUHdD+nJfs<_P?DmUB zMoP?%s5M-twwT^R@!%sKFgv-)8|`KcxGWXy>+br@d@!M!#6_WlXh5Yk)%DXgJ=1@PuU$w`d)2NbNYXWi-})qnbgk@p9n8A{>N)7W=nM2 zrjnCeC$47qd9lda9S~c0WM>!OC@sw4MGTmzyoZp(qdAHA; zK3yr~Sh}A0No!}%%EppyCe0owFm5~_pjHkU*z1TUKUa+k$x4`qO>37g+3L!5%lz5F zjHnFsL!(WHbDEsM;RxZC8@p!89+SrZgc9o##-MotgX!23UQsNkk(SwN%5}x?38AZD z$U6P4*JFc_U*rZ9!ej8;q3R||)~!_)@%k9lpQy5Od83laGuKmI;tax5fWIrRxU+jvdjce{ z*7H-QkGgkL*9mllcPJp|iq|IXN^VMUDXD2=u$mzssY@W|=an?Pg-OlE*xI9X;<-{@ zVQz`L7Wh)Gs>{m@ro|9hsH}*~No4L7U6fdTL$T(GDyp)g5CAhXc`Wo~0{gj8u?2%O zNoqR1x^BDVF2GEySgp7ojc_%d(?W&!f8S@89-}R7*{W4uG*%8>B%tk4JT4Zva#lOy zat(jSBYOK`hrNPD)7W|XimNtUy5VEJ%D54-jL4t*85X^zDD709l-|ee#Fq@d5Mie%#EJ7~S$bz2* zhbn4P&Dm&3Hhv zIx}{AhX;7B(OHKWF+N6;+vCq-AL|WZ$6aN;YQvUpnxjg~w?inVD0+6wsN_}w z(jq;^H|(<2s4+|#A1e?F0bBKz;M#*b2a{!F%eX|i3Hb}eMK30Vm#ezD~pGZ zt-Z1lAG|=L>W>e_3kkRwv+m2A3){CZ(jLLqXFtqwY9Fw=F$E)k&oz zX7vxK(`aaELc?BGs^SSXtQ$ifPT4?)l7=;`U@pzk3*ot*wSZJ4D2nZYveYmr-h?$A zX{QMVv{qN2q7ukQn>55|SC%GiogR`~=^wh|Hq9}gIqF45@*3RIWy}9A3c9NNgYsBm zJXWu+d{0bqMwAfe4MCiHPAVWh3QosjvOkm@w=eEx9ZOqSmyMw_zAG*TWWIR&j`W-( zhbc%mjvdNF9vvBtBp@#oD9>?u{nSfj!B8{9Jfc}(hbJEar0Y{7^ghWt9X-(Wub=h> zEcp2sYtPi{9n}~FGI5wMF1V{3DJf0Rar4>6a%Ol}v}sy`-t_W%{;S=vaam8sU%IPE zZVh^Qq4d7q4e<2g@%Km2pVPx2cnnqvc0>elb=p>Pp77IKnR8j$(HuPf?3A1&aM^4o zvrF{?ED69so1rUcv7}XNNuvIyr!UB$BCkG(k6RA)fej2@hVSW@0QY}{&(>DEGyQapiugv~jmFWg-bDxB;Y*U4X-#$|l>*~{auG00a1nD>m z_H*BBv^uVIGhy-1czIBd#)Rc!>PP{;$#o&OH#Myw5vi=Y8CeO}0(2jQ2g|WNJT;l$Q?+q{9TSb3q%s zOp^X#hA#_22e$p)mZ;LBSx>m=Tuzs?aAGB>MTh8zD5m^mTtZKHjI|2 zFxT%1d`HDWsnb^pU_;(NaGq{*9m`qMW~TwhU-KHdu73C&HNIF%Dpocs{9`tcb!d>k zTivd0HQ^%0w4_%?=Sj1+-`Fdt<%iP)9wyLj46Edsx%arS9LZx`-tJFHw;eh1`}mgl zaB$MG<$8p6c&}zjoHwnNh=vm#yHwerlX(oAjm+e_-!_4FFR@9ET*f(u1Hg5 z7+x#LBg}*Bwt`^RV#x{_xlI4vfJswYz;gz#umekL;yt<^PL#r3wdX05?7& z@%@W?@H=Di_a8GJ-uVh?T~cx>+&XVAnJ7T!Uj+%DUB^_0F*bI6d>I%0G^0Zp76t zsv1LPqt{wOQ++eV32b9^W#`l)Z$xXKZQipjAe3^oixCv_Rg>*7ec-W&Cu{c>YxS}-GKmAGR}vq zR@9fj&Kp^I1m5&5>VXkg>;o<;a~z6hZ6x@b_!>kHQpor6hqBDrh{7#L^U&Uql2 zQbdDG1MconnskyEg$c4;|4inR>9t@a=+8I`i>Ce!1wsY|@#0FZaW~i^;j$Elu1}}R zS29Yn!oY+e8nI7zD!6>-`NUC18IP;cnNg%ew6?lS2*F3=B;EZ$A#b*RA>*bOpu|F~ zs~3kiJanGC*lq4M93)Qy?3PVl_>ULYjP`rhSNm=dS0|gu^{mQ*O;ABIxTDh^(REYmQ`4Q35GOO0KC z;ApHRq%Q3HaDZ2d$>t@Qq7q*hXIAbXC>3HklIwWhV=j)y_q4*6EJ=~U8d9~@-M(LV zLr*y7{{rmy$S&w9Ddp#9MPSgw4u{(-tvzts#*(+Vfj-wU$d|)1ZJdeX(AN$!=ZP~Y zqO7lA(c}gvEvmgg5+0|n|+^*sCI$vDw zJbXRo_i0a+4z4#Vx+ipFzTxnOoyQNMkvT*ERv^&k&ntgw zMB$jqt6XZN@iID*YMc~Vaw~I`K$N1bIh~HA>~(!}%uM=%vEMYUChvhkly^mJxh`bQ z@7Dwev|f{4=$ZpHIv^jvjB)89lJ|6e7hXL*l8~Z*mw8(mpjB%M&=Q`Bbd2%xe!PX~ z38vj3RkF%N`%D7sy9XPk+W2OMH;z+wmwS?EUevs?%OK zc1wCOv$a_v_vH^5UZMwZ=$V|aG|^|YEU*RiG}hEWuebPscUE|>d{2@|FsQKNayd~+ z4f(}&S-{vEOISvZ(sN2mY?*X>ehM!gSnlS|UfkDc>1y}*xDQFJT0jg#ke=mY z(NK(ke!LZ2-hAf`8Wex+X{%zK^nMqt;K%w}o7K@jwv9FYA?$V58SKCH65=%QAn9_E z>bo?!9)WwJ7mI3oQ4Pe+7STR64zgm%boe&TXfO9OA@Nz#s>lxdjCJM@d0=)Y z3#U);4Qp-Fr3=?t&Nh-gNZlT;4A#I5!-hJE#m~?qq&|)uHsT7-o$jDO_e%Tup zasuj3QiJ@auKrT=jl#AS*OXECe)jHla59@tu0O5j54+5P6_nb3S@DlgOt(B^COE|4 zFZY;_>uh%EnYDc!X<_{Rdfg*upe^e7%W74)-PeFs1ttdz1rBLiKYDogVx?&f5JAj% z3Obucin;Q1zm*sFfTdOPzz;^CGcTUBHI-v|QCE#l!~R1tS}uOc5d$?kJ2UX;<>N-X zrl=>r@yI>nBEE*{<+`zxxJKBtU^b>3)OA=bCm)dBQVNS`Q!S^T@JmZ@=ja&T9H8J~ zO*agO&iaQS=>>5sdID{K60Vzi`oS%bQHQP)L)h-KB!-a{GGwMH4sln&}4FsqYB)fR`hf==}qQIj%WAh z#KUlzzb8>u)5Mu}FH!MEM{IhKEv$T2d(i$UPspkRyC_cNlx`c=K_QGBV~mH!b~3`Z*IZrl15^UsEpQ*Jub z3bYnxz=!Fp@)Ku4KGLDFoG=9#`y)) zfXtv3SW^~LBPG;(b5lY(8W|Jd0JFfumQjf_%|dB*VB3Fm5I0b-t`iu-`Tg97EP+yT z64g+b!Fwz>ICX{S3*H_YC51tR=$~1%F}SoW)9(nCX*wTGI*PbhgC+a#7JgMw6kg)! zn3Ol^Y|1F04IEQJrS-|$XfAZV`J!Y}R+j5gr~qq^FUaMbO>Rm?P3Pn3wt1`Lb6~1u~#lJFhkzWc{IfV&n1NB!@@6cJ0P%_Vjh*Q%7;dAf2$vj58^u zM`zFOC~6^YEZm?^syt1;_=OX@#Nj1y_LMSx_7Z;aW0ojqoj^sP&Fvv*nv7al7LJve zfrwLRq<2wn(lfBT)S!2QJUFK$G74b=o|elGWa7$+BFZ@w(peEq7eK{E18E1{>L})? z`=efR8t2{lqF`;yYRcW*=8L|<#N6jHafsSdV&%U^wv(9t4zPV+2A)? zm~g_JQV<$-(OMaamZm1g!t!zsgUcU|Lo~KR@n7fOGvafdNkt@c18Dk_DvcGcQfj8t zkgk6Wh9<~N+16faIf`}TUPlidyi1yD>2>c#L-gD@!l{a={4_nw7^-Nt7MF@)!=l(P z&ABTV<8cJ&F*pH_FPy8KYF-T|``rv$O&3?LU%O8^_#E1OT^fyN>BGmH$FHTG5Z^_Y z`a)J=nl;-aW*T$JG6#-Us3ysK;5K|=P(#A$ui;>8<1raZQ83PLqVB>2c`1jw$_c~T zzs1vD9^vD*8TLazpsfIpwPHw?$iZ$p(m9k9n$KpTDPOmq!gwoQpG0cRT&H*cw$Wwla>a!X)&u5 zF7~N`PJP8Qs{1ajcOD2QNqXAa+BhoQdynj9bZ&cUaI5LO-|_n$CHf~8-gT+H--n3U z=vLyfzeUo4ZV4j3YjMDhLo+Sc#hQn!B)|h9o$qy(@1*w6E7L`w+`q?%g|37(TS0O) z;#2u`fgiYygoTgIPBq>fGESonbZ%Fx_Jb;oy4;{@`9cNAc5hCf)EOr{#q^^syx()o zcy@tK&^v3+?r%Y2omp-%?ED_<8cI8>tD{f+3fJt+X_1EmJ&vw6+dj$@MYtIQQ{3bI zOm&K&UW|7Z`O!H3>x7TMRY%XK_xIDl5R4lRj)QN(*cD~HT_?E$+wx>|wbj`wgK#FU zp%|fMj`knGC}KFgCsg9+W3hPJrFZE%CqOW;}5;F5UBkf26#W!a(Bu9 zX>wT#6{J)Uro(LF;e|U}5VJuujh{pJpvEX#bnh0g%A@GPFGRkw_0qyFp_xT|`B8F0 zy7e+CGpVIot)p~5!ute32<|_AqN4iad;IbA^;qnA`SDL{IWq@md2gttR4}BR`fz{I zsReL6ym<$ejX7_(brE$&dd8d_BA&^&rx0o92hEkB@lA-x`YmP3nz=7@wG(?cO#Y3U zHuYxIMptc~LzfV1DTkW5I5fu^L+K~@BX;)#33FYR8+li$joND8wYjHH8hmt^9cHdG zQGdfhns^d*ke_GyBxf0zL@P&B7S)dbsUN*$1eIA;+DX{zBw_LkP!TE<~>x+UiGz8D&eh=bxj!;C#xzc-jGyxI%&-0Svu_z zi4Oc_tt5!sb8~M(h~ev__aIXq;?$`>vrsYd`9e*XqFRiYk*4a-b>s}Ku91~d$+t1k z24EwOvT_g|OtWH7Lxj_K z=2GaDoEFDgx9@^5YN?=s?DDxn4~;J~Cl! zK~3%D(61Ui(3F&OXt^Gi-nT4yUOC`7lQnL4-Vy!OcVet{P~9F zbsC3^b{CbCu}**O{@Z6txf@`UJjY)BQM0=Xg5Dc4}&@3`&@g z_cFM*3S*plf0$z4^Tdo`p`47!v7KDN%6=Z|G^)!}Ghjk`XKCTW?3bS3CVMkw21^sJ z9t8Tq>grB5+v7ts!h|vWO%m5ak{}qni1z5pkPz!1wC%?VMZo~dvM}A&J;IKZ&ZqCk1 z4*e?NF$I(Ub*0VrYKxenezZ_nB>BhE;weeJnDv*!rE9B>KVRn?AcJwgBL($=9DD(s zir4Xb_ZhRfu#nL}R~U;%i17nm_PJtXfdrnuXY#LI492{VM)ErFV7jnTD71mHQ}mn_ zGv$rtEm4M2y>blf$oue0A*eF47tcOczYVd1cWgy~e*shzL^KH_fJ z_?{=0W8%{DUDC?b<8h|0?sh%5a3wYJxKT5AP`V@QR^1QK*qdY5u2q6^?Sw z84!Z7e13OXQgMwSQ(F!@#8j#&B-)uX$w3|xg_Sv2-s1JF!`YqPpj@9g!#AYKNIy96 zcpmlPanJKM5g$lPzS({O0~1D1QY!klSv6*~24LT>ZZHuU2IYL1f+w%~rHuMmY@=78 zio@tNgS>Y6Zu>|Lj?r`+(^v`gl+HbCf1qrch*dP9B6W|Tvp&^$d#LS){RxL(EgH}C z`?dHRko(h-LuF4*BX*hcb3@gA~`nZ-}6qq^8q02AiS;{0WC+8+8%szK-qVJ)e z{}`ACB!ua$?PyrAoVx2J8-w4qm)gE?dGRer2SY(a&r;#a{2q{w%W`yJ!{t<_N&72j zF0=KKpV`W5keqIK6n0^RZqKR-KXL95*{D8o1+z#xPaVXnlc7de7xFneG2t|qYJ$a@ zTs`|Wjb?KW`IAr8;@mfiX|5>I!`E{UCY1W_&_03L_3ug|wNfNCHMOwk(`A;Pmex5v zHTCM}7;QCPFhXO&{if^oWZ2XCs#%VAhKh+ghI{ZUEieh{}hIy#EE z?Yiv^*EeI9BcQCIfIKoX0s8~$>M6s+#F^CrNdg2(V1gDL`vO1^zouOUQf_-6cYvmk zw58ia5p#tB;}7z^rbYy&K3}3@mPkd*-%=0rU`qrlJ`#TDr|TE{oUIsGJBIJi?3oI$ zoKj3OaYR6N@Sa^RoMUT2NQ9^M{Bd`3qGSCWR;%WCNuFZXWHTRcpC*ssk)P(=493P! zpPdIR=un@(!=bVe6X#eFAi4uTmtT+O-2KDD#{`7*J#Pjv4U9&N6#cod4hNVJU`?Y31)8Asqf^wB{?PrpSz50GR>dY)@KW)L-+Uh^>A=-?epsF$45sl zMbq!JRV{l3=(MT}F8{ifgp{=Z2IiqRFFJN+xkgARHfZM7u-&nLdgw3qIXbX*w8 zVw_pNc)Yc6wu)+})K)2-rX?x?sn?%EKWj-NYW%qLbd+cqz%>6C56C}4nqOwd#$*X@ z!wE}sWnw2O^SHRU^A^ra?NwD%GQ*@v&zG%^$1WrJuix)1Sw7~jR$N-%>N~C7IDDXm z5^NVThttvY0J4V?s3^|!Y)Qu9*YkIB*&4V{mw7IvydGH7<#;mvy8XdO94lGt1BqXH(P0p#F30AnlOgiQjU1%q-c@wK zf7UBbwz~quOLjZx>8y|W_;Gn@Cdi3Oh{`QLD(dE@Ev>*S@@A*cw0$1;gkJ!+qnyY{ zJEGD^_1jaM{Z62~F~lapxtXD9_NNno#ags>|Du0b>K^HFhfb`F5wjDq8c1bRdmntJ zceN}qD^3-ID%$95QD(AgR6`qnlUmbG_b(S(|DfeVBfH5#iwz)_y<+-xuj$GGz+x z?(RBq#R#JgHvy<4b`)gQ0HWKQ3#b8*`0=qZu|C|OsgIi_EnArr;?T#i-l#LFg|tVD zbNM$BRn6LBc6RoRAHR_+ma~)C(_W_>IPiQlTMZOFxfu08m1EP8mxG9Sc1aFW)&(PD z)O@&32O3~QYk@|?JM^yk2_U5~s1$Z$f884Q_6!O3gN`Q%V;9HFJMxgs`hyYnr@g<= z0Ph=aI}~J%zF%+K!(^qqhvv4TpC3=#^{e$}u4i2eF;RY%oBQSjId;?Vqosq-18_E~ z39+fCypwr@W}!{a_W-b`O;o;aA?FomsB-*Yy|Wh6!L`N zpoTlNMnjRi5u9%9Bw>y4nG|g~zZkln_weH3-LYVOq@|_TTkUrH2v0n`hG8wUAe+Nb zDc6wjdDN-zt!=>Sqtgkb|EsaenvR zO^|G2fWouH(U)L};g#0W5E0TcR@iV-EEUHDCE-2Rd%Su(+2Tu+^a%2c6@;<6315`D zp6~I>>%K;w3Impu<(#PNJdixkBPhbW%V_+B{kRK?{mD_kFpG4ZwGH($#ECEei0ULf_?}`PjY8;uPp;h025dRG*z)6Qz+n$ z+jf6ErtSnjO44MApwf!2cC`VZvCvc>^n=G9!`%NAvZ)SO5%MIg(Y;UmeliF5j5*EA zuva#(1KUyjw3sSqUZ->TeaRR#zKT+G+mf*^{So~#WT6@&8?BZR$xM@k%T<_l7zpJw zd!c^BdOK|<-Gk+Q&3xZ`1XrrplH~YRUYh$M?BCxE&k5aj+)eH8J8XzZD$qvZ#tS1m zAI$pUWYY>DOxsSTen~7~;hrd1-2(q;(isS3%O_ z0*lA}31U=C<`1ld;dcFAFovO=t!AHF?sw$8Cd0oT%9gNyVU2M~dUx?yg)jwM``wgpe(w!$m29A{G_t zh)y2T=s>boyOr%8a<(%?+q3P#Rgo*9e_Zx4nUV7`3$7H8YrO7&qraI;ipJ$Mt12<5 zZ?dcfAVwKhzlkX=X4cJR>O|HOyp>mvWHLy1pyby(ER=KyForc{tpD?m&U-U}ig@N_ z{Jr2g*YOBmob&W|7^8i!ey_4UJVlr?Y*89Bi{TOV+anNH)Y{u~S;tkh6k(Q+j1{i{ zz^}0GHk$;Tm!fw*p2{LEtu%Fh>sz?l^1O=T^LnlkRdtWf!Sy@MEr-BgbH>M!84c+1WUV6^^234)=2$m$hbCy^BoKS zJl6V(%T9_cOGogtxm>KImMIm%s&rC6mEW0CDC&(XYWZbXA4YRuN{DlpmX-=z>?(?P zr_6xG@V|{Sbn~PgDY+(MKD@53{_c>T7d4 zo%=g1gs!8aGS~=z+vtKN8MAbRJ^oJ;&f4>@dw;_Lj4GKKnTb0X#cDn=IZn#ED>}CN z32*Be!y=tAQ{COL;1AjJ)|+XZ2@9d)OCbsE3DH?zfI-DZlyIeBXo&01J$2f z5#d0rE76EXZ3ej`I9qlTz`ORaMyJUph9^q&@jgP4o%_dNQ3YQ5{L%!3`h|xgz@Z>L zvDp4-{}IXzOu}NUs2Z54wbZIM{PW@9;Lt|1j%jV=93#^ZWpo`M-ZWS!^48#7(7oQk z;CBC=L`h-`-&pGVofRXt^^G+w?e=qnw@K46#@~5-oKY|nD<{?-)h_SLV8tj3H6xET?d$uiwN#QiC`_iL ze*px;s(Wpflwfwx6j2~6B|$-%Lv?-0kRHPBQWR4MZFwsBM`|=?=i6obuoGXlhPbsM z7NG|PLWBG)>Q$=DekG|q+^o7GZJ8?D* z%2fmin+YrI%2zbx%3mBW;94V4Dgqjb;NZ+*Q^B+rTA~yaJ>S~Cy2!ytVPjdG&>Kz8 zfh8K7nZkYkXws(2k_F9CL7LWcex}BAvb9Z+ zY}F}~-82c4IEUs*3qAl-$IsyW*`^i9GDt^j0Z3TA+O%>KmHgC5{Wm1M5!9YxvZUqWVA^p(7C<3vEKoX02`b zZhJp1Mm$<5A`RG{J@)?CmH2J5!Lh~ms@3X1Ze|F=PTU&yXdl(^ik}P66GU*`azB2> z)O9oX3qt3&UO&ypeVhD$b@i43ZFWl+Xn^4E?(QDk-L({#;ts`WaW8JgJy@Z|-MzRM zm*VcOH|ITazk8pb5XjEX_^g>_-~`p|nj^fXBzB?|OtdC&%hEXNPNF@-tGl}1Mci#$y%%nexVSh;57)jCbwa;w1UpwpkvsrN+D z7nLdE<=?;0ZOr#v<@w#|N#<+Z6`a6R1j2?a|CL#Tw}C{kq~8}gy6~a#N`*y)Vy6DRiL%N5Aw^S}r`hG>Zd0S)&W4f%26;aEAcBWd2 z(ZTQopRu-V3l8{vCg?p%@^oivvAS!_-kO>=3w<`c2Q#d1O05yrrFD0fEH1;Ws!@`B z+bIz#HUps=$Tkkz6xbcT!DQrZd)(wf$!X(cROKwzvDGyf=VJ~NpU~k#r}`OM>I-@s z^Y9@QYzxJ)ozxmvQ0Ndj1!Y(s)-2hQ>?l(vjHnmK?%K)QJ&TdyfdvAg=NX9nUc2N= zek;-@_R=hjM|GHTd<1buckIF!f3%P$iT>>*vYUUFsQ0i8+&&p}%z zkpxYh&F@OZ*SysuUfWBrliw?2$U&~``6+OiC*$v+3H$PpsO9q(<+ji=uH%;TP1~md zq>27+W!P=pQ|ypNOzN2WDhe+%MJFlMnm#Y{&G?TUd>=;`VIic-%v^# zzE2dG@iWpOnD(iJV9JJqHCSXkm$o%XQa`=|Y~J+AcP6=qBq~?d$j|uVQY;n}5|aAb zSO9ET$;+{Xa&l#~7~__$Fd_su#7WErD&xY@$!$yiu2$HwzokMukgPE(7d$yQ2EjU-f*X3^kpBM3dvdc zKl!*aRY{4^d54q2f}U>7+yBx?pX00#oi3^^h^5mcy55iwd!4Vp4qWYy5?AM~*Nq-7 z31JDuJBX(`_&7kBj_k}RY7TaK&<(1feropDXP_6}e|tU`vp$?DP89v*Z;Q|M!rM8gFDSamCIb|0-ca@#u-cU&XW_T3&pJ7&6sKN{-?t6!tLUy zn6Z&wRrEHu$AJDpVqg%3ibbyAy%2C{ZB~@`dZx6TmN%F_PNkGmBQdUj z3ii+Ravv7HX&7+WJA0<`SD_!O3j1JMqUE7--Qo3^cts1n___OmLLkT$GUcfq%CU^x zjcIJ2@Pp&9+a(1B;26kQsPfdRQXlVE=ywY&LLAAMf(-tTbrrFHjd(&i4Y5@!2D!JR z8dlW$@zMeEojPuH_$#D?R<`5CL?e|BjGb}HrfW!{coTls*Ym(L$$ll|FcptRv72Iy ztXDoH=5r#sIBPq%B110gczZh5cm^>1%jQXIY6TO=bzF@wV+Ut(Y?-5Q`d5ntA4;r6 z;&!It?M`@AF1CS#`B{YF?}0Z+pzZ}5$08&MV>nyExQcmlxi#Y`lis)WmUip2 zGg22!$kz3#6h(tUaS%{ij&n*phnr^JlW7nki@~a*SMg*s{GX9 zl7P?Xi*pS6+}eZRTB`?1{xnGZLm=@liC088xFNVedsS7mw+VYS5nS}Clx{j2el+30av4H@`q1*_p)GL@*0-@Q>ITE6ziKYN)vjqX_AIN|pS4 zW7q~gNi+`ct7Rw)2ILylT}hRgtMotW>Rz(5_{zM=xqd^K`@@*5%^Y|>r$s-FVHtn- z{L&6e0f68M;$1q>M`TE$xS&l#!Qr@~=>&owe{iKRv+EUpW}y2i#X)^5)$dgwwz2su zrZa4Z4uH!H;*iuUoirh^d`9ecyf^ZKWZ#SC@u-@LwuYrPHK7Mhq(ESs5QN~QNKSc- z;j9H>_&>0;(x|vV>Y&dy717(Tk^WoX2ZDeXkP5YQEGC#k+1>TL_btrNx&2aBo9j=S ziGPOCm(vDAs&B=DSeoqJ*pv90sStWZWPI76<(=W=7H))Juz|F~I+qUHKFWngW4L43 z^_&*J6UsngJCUH2I0^3-OFpAUzh_UU(hu0_Jab?GK@1EHcMXCj*3-*%-aE--To?h$ zH9sF-_3%PIwJnzcOK#{5Q@emGy5ttFo1y$qel!5QE$%fzuKV1_R#iKGCi9OhLYY@> zNiAD~{e>D|&k>?PP&1OG%ntH3C!TUJxu0AG?fB_m{ zaE(ZVr{1Rb?&k`AENSEU=(6Q7IedWpd&6Zf8H;>UYU1FigG1^Z1;yd*j2E(k3*2JE z2`E#G?oKm0?@<2pXib)0f;hW8Ly)#EjVUIBA|Qf3CNq%roZQUl>pXe9h|hVN%Z5pV zsF#I@=AP}HR$cn=`eQ=AE{@G-?)Slw%vEsa!qfea3JWv0dhfyBpR^7s!mKPod3|Pl zD8)4ej~`Q$Qfmdru=7SMXv>N=i%U@ELWLT+&fx5*D&IJky0brZAfzYgx-thy5km%2 zBJ0VIEpaYoO_h&C|K?U0{;gO!FEgTE?-wE}a>)h-3agwjz*PUsW`Hy?POPaqS?ok; z2=`lvG#ModVs$Z}dMD_NnIM>SY4wdDiGq%SX#DHRx(UH(C3{ny1lbD|U^37xo)%Yf z26IwlI3`syb4Il|WfQ3WLu_6Xx?6z>hMm>Zv@h^lNw^eMzVo8mUhdPZ2&7&QYDL2y zgkJz=#ifTxt|3^lW|v(sZtVe@`Qgq7Acgpr{wPjA2qu8brb3HJQxL{(ajMbxWf_LJ zNBDB$w|*E%6?p^{4<{TZ5HyI8v0qp7038_x%h{kM+m)(mf-u~J)UEc)*L6K1#Co~4 z=q*wY#4@1jKD3E3Xvc`uJ-?|LoMz0C`DBZpvb_dnj8pR1$g=eP>#j_iq5E={bLXwc zWc$+s(Z|zsauO@z90B2oM-fV6Qc|-^I%xhf1V_5BTvoCYHWwJir&Lj4vz3V-JOjIX zq_l>@=Je$ANv7Q1(YX;nd#wD>y{hdv_PwbJi0vZ2*?7}jsfw-pT<6TFXf{Nxbl-Y} zcefT{dDi|-id`j3^C?Ojt!Dlkp4F)}W!J%0v|3Tkq004@$7Ls>rAAYR&hTNOaA?9Z zq^5~1`ryI_P|4s53wVdLSE!lKb>TcYL_Yz?ku(HmG9Qa6k^9xz8N?6ZymX!X!ouKq(VsJIJ9~Tjx-Z=- zA?+RvFRTL!dbwsiH9_5wm4C9(RD zqul@&TVWwTp`M|1Ob@n*LYcU}Bl8eo$Ms$6W+M!ik3j|pa6h_i=5Sl1sTG6^gl?Gi zVYB^NEOqD5gdtAP zAVxHZ^7TiLa4QL>{j8jv;mTz;?#x^$WD@k?qW$kz3CH&k7PxA-jM-T!Amid?F|z9Nkk&)LHQDQT=B*-p zWB*4>d7nE+qawGrpr-p>U~4+k=Vz-cED(SkpkIp_mTyaKJ6@7TC=#uMcooUnN@LA2 zmJJL&11Ma$v#KknoRwP!b)7Rao*ZS1S$VIq$!n~5Ij9L3uD|2wTHn{K!_;~vhL}e}0@M+TsqBYg15m}98yAoZVYuRRR3=znDMcV19DoXWkHT||# z0OMjBiT{J~GEgQ4o1jLs7_5GM3BqMJ(taL^U{9wN$M%cF$9eq}qOS-jJCIxRCs99E zGsW1QLBB1U@d2XI^6xc{k;9{V9+PK_Tuy+1RGOj zC^pHfZaRQ0xC`sjYD-HVs3=sfi5m6R^I&SNspPn53g33tdfY6sA5QGF=}B%`26ZBN z*}e(5X4P6FI4g3xnY_QHlXM|eMaG44^Le4MGT~WOEFaC*f4)u%F zoRP#82^m@AgP#@)Z$V~xA!Oxeig}nyAlf?eYFjnuC$W0+OB$dh2}QPVb+vXdeQtEKldpC7)P_+FK|;_mAa=m(#^Lohmm3e7)@9(X_dxT&HOgrj6PE_L zoeMSvov@qCL!@sFenp;lhT_56L-rn2O@E4;^<=IixuE;xk1ymRFLQsbJvW>>ik#!8 z`&v2TO}02ZJ5X$RER)@5tch_cnADEJ=1?vQ3T9-Y)piEF_THcF3xt(!XJ^%_-cmkx z&{`1c@U+|NY8>XLf2e!p#-?L8>K$okx=ydO;(@GI9lQvfE4OG)ERwaF-ExHPINr96 z!8da#%--GUk;8jk*BxN)z#AALV5SoWnmq>_@OFkk1(q|I_?tx}tXM=X51DStgw+Q& zrW&UmXq}4SSNZXlCC*Ldfonjnb`VAwv3m>OiynCRs12LK1KS1xEG!I_^tFIFZqK{pwK9!HJSMRI-Vb68cbtLKo= zW`MqNrlchM1%SGHq}Br6-*S0kLPbt?qGw7K0*@Z&d{^Aq&yP$;)eVweBGnDpa@3(Hezl}c zu6g|w=_9#@9U4iq6iNa`MEQ<%?O?!M{0K?LmH-*DH*}@UGrGvl6oYS?8niA|-WDXF zN9FCS?RtMb_lE-K(5@EEfS3>_buwa$sX3i$@QkCh6EA6=q?vkk{TQGWvfF&F_f%u0 zz8p41I{VSkSEtKfd%PswN7TK4t^P899q;6%AE44zphf3t>8Dv)nY$B0*D77X_NGW= znx<$V=qd@{F#`dx-Sv3kR-Wxb=z{}P&i*K|6L7<+9-Z_TQ*?ZZ=Ag4HPyiSZ1_edy zOo2FqQrW5L1XhhMH8%&s`T-@B;BtoPBrqWJgsr|D(Aaz$^0$yxS*Q7N+xaHUv)gdK z^+flSS>k6wff+^6G6HWIrpwPXQkncg`+_t#FxKit&fRh11rJoS58|8`nXos9HKgU^ zsaNX`Y1=DP$SzM+nTV0)L%3ni*b?>tUu#81<+0m^V%H|_a#H{$x)S{a_$TlTf$`Co%Cxx%a9w4nw6q!|`B!t=LBS=Ye zw=m7vci4;N13uZ8lbU8i1DhT$dYzao{Ukgy=u7Ae?16KSK_40o@{!JPNCTWB{KCfJ zRZmYZVR*gBs~~E?f(%+45PV9?a|#MO#LJp}vwj zv_R=Va|u&k!DLz*aTA?B_DXmyQp&C zd|0lL;Ts|Rv30pRCIdI0<3oiimIo=hR84P#5aV${09o%uM$`^(#K=T^NMH6n?jRYf zfn8_K23r~3ubWVO&9m?>^~b@NvleUc2oyC0rqO<@Xp0h1)QPX)M4d{g=)$IewTl>t zI$AIIsej4~otkbkDEgNOB5^%#jcOs{x+IFXGm3|$WU7L2i9ECUU9`zdp%yz44I@BR zPRnIreqcs8aOWpYD4}=}#pBN44DOVd=6>@Q*&_JV`Sq*d!CBSEeL3k3eiI9_ASB#7N<-#2*k%}- z(0xh=`)XL`mFYh;Wy9z-Y`6xEX29YP5x_auA1K>Oy;Xtu|akLfT%ums2KGka%V||aWw_ggBwhZ zu2|BXq4jrbGU9+ix&5m4hL>JvE$)dUKZ%8y=~8eVr+`8wdXQnb-XymF+@n-w@1gbR z=&Hl%2wdZS$CaR#`P#?B^0)iEm!U{l6_o~u*^*kckG}HKlB4$nh5$Y3WLQ z?bV8WR~&o{`utjywxKZb7vFG_$u}c5%40v*<4U>5FZs(YpUFQL66^E&-kq)4e<&kg z7*gkKt%>&!xz`7-KHVH{C-yKGXf5VTgxn1$+aqvV{`wxX9Y#RLYnKw;=y)ZtjyAl& z5wt;)DFX0zP6>c;@6~H2JN*G|Q z&iUixpWp(?Tlhnip>JcPQ766a3a^3I2xY|uKc`EqPanXycf{f4R@Z-mi3s+s1tU;Wo!Hx4Dzr_>JTjZRtLo&~X|gCa*^ycK&fos}G0lXU1`kgM^a z@rW(JpODUP5Di+32_Ys8aTiFSdF97w(%LgmTnebAC817y=5N`-F=~&d=&H2I|QYsj%XG*I{6~x$MH9y2=V1W5&M2BKf+N1it57qwDUuw{rYfgRXb9B~5zilz8ORWORg z2Eq!=K~JoT!FK0gU7dT!O%!w;#6LTs3q#qtX5-OKKTn@S(g!BvMh894pf~L@KLve* zw~Ib>cz-)OT=qeg4%2V&k~M)Uk49^9ELFeb?l7Yvh<}g%+&`EzL&Gi2TcgMzaktSo zvEs5RSLhh(fQLSE9Uc%Uj)coXp06FFmsz!P6E*~g*^h&`EdF4Ck)4^@;2kofDBwh? z?(uBuUtNQU&Q~l{nLyR8eu3oy_Ols5;74EeJ^qQRqM}0gN%0hyXm?YV-Hz4oDJsaL ze#%By6sDLGFpy)fzDL4O_~;}?ihy>REc8V3^7U|}9{RV7n#w$yOLeSkbeM3-Sh4A_qRHakbC@wHa=)I7#WB$}kFCIW;b3nI8ovfY` zCXMf3Rs8mGUOacD0(X+gK*>6<%@=cqknihiR;1o>jCR=x{rY2lS!FTo2z))DvZ#g` ze2+()>pAu576Fe%j28m1jHa(CKYgIk#~}wl{^6c@mARe9eEwJo0kT)R1a3pw5qV%N ziUZK*1esY`PvypJ0YO=)wm$h(p+=~tFmQ-js5<-gPo9_;fy}3}IrVpf+KpJq;IpUM9{Jn!>0IKiS9||&1w%GFOFKgH`g^!Pq3+A@$yvI=Z^lMQL znx~AM5L1NWUO>6EVFz<{qdIK@co$dmYePtpuI1zd5}Y<)5k7!jRONvOM@JK<^F~@B zIi{LTYo1xHwk(p_SCZ09lFHFI5q&`?*LaU#sLpp2P;8u9ViVfMx&>{t9MRncp&bx@ ziRoN~K5^n<20G$y%WK-5t7L(En3$OUyzz;v0OHeOMhKd`H7ody73w*R6;_t{C%JMa z1h_HF29OrdP#Akoy@N9a%R_>z7iBjoP`2b{QpWV_D5D;~Wp($qpFu#3?ltd}-&|O6 zd~p7?40tnqA;2BYOQz?fUJ?Z!S981N*W|~o>#cK_q&hH^Bj01~jH!w^%!505vh5~lB^W`%}y1UcM?ii&dz)9~@1o~ePD8-^UateyR z%P*g&!%{y8J~@kFko9{e$DiKlIJJ7f&;P-bS1##7#~2PF>6To&0w0!mYa+*|up^QQ zHQhN$B`S87WO)~P2wr0pj4JspVj^VL@Nu=p&Hf$#A?Hl@D9jc-J^2P}!;E^UZ6Jp) zJHmRV_`WZ%D;-EVk;OMDe?ObnxW?XoA$id?{|+f8aF^EY(;$&QbRBJbkEzKRQf=`g zSq!6e<7Nu`eD;QLWZ-F2ij&aum?HFH+HOjt)W}D}TXWfHRFjtkzCPbabiKcQIfry4 zN~t$z^EPL(kSDR0(QLa*5@m^OZ@7)Ur@a7ZF$E$SB=iCHEsi1LMS9JOUl2)5S*(SG(^pL!{%xHN zfi_tVNt$;GIiYrDh`fnckCBtdGP{vvJfL-P3Kw}8P%Px57v&*hCRm0^{e>R;17ySQXP?OyG(Klk=BH>)U?vzB`eTnOJgSV)7I90@H}5W zHK@1I&@whQM#cIX4SpC>bYD}TOD>03bm@4WXuDNpWH%cpI&7*Qwy8`y6H+$?Wf_X* zb;Me$4FAF` z5G!au))NAB)XBfm;MXvznTG6B3sct=+z`ZR=uE4xYyufZ^zxF*Osp*}!@7Rd3Qo1D zIm7sQZ8qI8(J^pC53B&n+_Nbe8HaU^jn}2IbQkmK5oZt>HNVr{%9iYJuC%JLlZW`x zcsvCMnSzWAnoCMb6q5ffkgBFkkiVg5P+Bu2A_iSIAn&y>_`ot z*(cCNzvnj6H!1-owMA(@6o>_!vZWy{Vb{B|RRMRFsXiqC_Ej(}DqJ_v1$AU7Td}W6 zi41=8OtZtv`bTUL6@l_bknVX(;%u=}YLBT!hc9j>GLr8Oq}8xSp@<3f8(7U)%<~oB z1Et_cHpr2vN*`)7C|azYKGEAa!$@9%N*TbUl(amSi>C(DfJ>t=xzJ={B9vo|d8E|P zitPtYkXTLXXWI2!u0ptT91o3nWCV>57~E4mO`&A5`evO%%U|?j^q6&{fCY{?| zGbtnEgLR`k*_~(B8XSZ{T}{tek&!bB6+kWSIFiDsksrQVsE+=l!Z+X1Qs{xyucs%p zwQ<_RWl|<-P+z@43iVr|_vvDd`D6I`gR}tyUCc3T`k>NT>}z?sEhu_ml}0;$bvCa- z@U4QILiR4Sh5B3aAdA$0R17->vbP7CFhdWjXA@Oc3JXj|nZu~0jQE`Cf&)d-Q{wqY z&sqk$A@P7H9}c%LVI&1m6yu294R;|4!iHwyPrTU99#@T5_xeE#%6^B;Gh7~LaF{`F zpu6;WX*UlETy~>wj9Y2d9>^t4SY)tly|F{Dhf>DL#D%%3$jDfV|L+u|*X(1T02NGBnJRjBk3VF|&$8?WiOYeY zuyMRenV2~g@q|IEJEItS1Cj&-OxStCs*8%c$T#2$Q?0(`JaYuwW4z9=GQNUiVKPi3 zZEUf-w4I%z?*EPeA;)lD@38+UjS6pokF;4BR{#LXTUXomkcFdeSdXP+(w6(ZTn?Rd z+^=uv!!#7uCbcH41N0NdswpLEBORrPU3er0F(GJf76JqylqOY8Ezv5_v>+310zZiu zat|MW>JM}kq2IPtQ|hzmJmwY$$i5sxbjX)!-#CZY*5(bx2-gXbdCWNRcmCs=3MvVk_k5p10aj8ijVVxqBqNKD0 zwTWeGQ{)u9kpUvoIubslK=`(zeAWt$z7}p)*M6tk+HZ7PBl?ItjI53wsK`b+ljFQp zdwbe;)_%R9#?*ZZLB&{P@j3gh*wt`Z9)Jdw|93-Acc=DEx|Ovjz0s#n2pB90Q=6() z-+e>tZ~jJ*Uv*Ko1WiD=$lpkxq3pIuXsa2x-$E!}DJN9q-43#p9B%4{ZMXo76t57Z z3V;yY0qMNNuRH>Ov+31_vKlrgyyJ}uVLc;Y`01FLoA(lPjeU#u!falX*}S7^gS>WW zf>dZdZgESuq8#=A=nq;%ADP*@AX}`@Pn`-GM!j+<1#kY|9CC4}czFx}+=iJoj4qU6 z%6|WIf6YaH%2T6DQCg2F4^(?fcVP;_G@HX$1Wt?@qPe7Ix@_uiq!kL#je&9i8~b8_ zg6B$CfEav}-}7C^IFyNN%#JnI-v4=LAYhQwe2~U@xqS(hfWo#SOq@=}0$JmG9%dE= z0I4<_z>?qy1X^Q#mAiE>#*PBi=n@B_iidWxT15lcnV&vFn*I{dQwgm~@^%|vuTh^N z1*qm%Re)VP3r&Ig6l?jv0e8ig5gT~_2XObFK*v2eX>#9QczcZd2_GNdx!|#yXAI(q_{f>MjWYyw&9rs&I0Ro~Qa~OuvE9k~$awqPyr5${I~W z#8mLCf*&0v%(n~}1wX$W)Jyjo8ju5^X};p)^>H`7I4VV^yk>G;F%M)ErCAw{+G_*< z(q2%&pS2RYu584yUWl2w;vdM)|Bj)p&EsxjZf<_?bX+BL*bva(7}VXf|GDi5LAaIb zw_adY>#t0r)y?l+uG_M2E0LJgx;{Pv>|RAcdJkEDGv*L%L=7XwZy|E#3-j|!<)rZ4 zOl0!IAOVQ&ev&^Br&2%#S`!HVn)vR3JXpp{RPZMlJncU3TqPI<;N?mAe|01M#s5A0 zu0J0>{*b8#B;qV5U4I>k*dSn+uMEFmJqE29&s?s zScgon2^?uJASiemqQaAD|GanPlbJvjh@YD|0MZgt=(HLB!jzGUrgPY6^-El`a6MgW zYx@SEN3U_{MJq{}3uW%Oa^`muUuz0@_wOVhj-Ag6~tZwrCOC+O2o@h&y7= zse3%8|3n^7dI_Vut&xF8hD|FSzLU8k73==Ttj=|_8FDkKpEo-Fs9nvWr&8i*A%zWj z8vw5>3R1|~a>M9pwa^G08o^@!&e1$H)2ECPn)%{{Mt9d@mIff*rz&d4@V-QpH$`;$ z9K~>A0XqxO+Ii^C&d#O#X*9yldUUYVfAbeIZ7nTxNY6A=rkfWP8vTw`;PcLAX`X*; zMPXrKO<5TN?=V%E9F$#@ce^&-;Ml393*Az+8O-R!glZ1RQU85)bv2j%!3B6oCgx~s z`xprp?Sgao=YqwYhaHiE{^-$Idh~de&gwxNSnHN^=VM7BB-MZd82bA9f1p> z<)?%1iHXxctE;CJiK+9=T{sj}RCbSK0feis=;Wd(L#W;gzDGw#BZuu*5bVLi8+%O1 ze@~}{B_loW4#Ar*AHZmSByvPs#&D;5xz>=bh4NvKYo%c%Nyu`M0kHPru_F zHc(FeD_)#A2#Bf&IQ}~iVqD|DKTdyca(cY6=n~`aJ4cVdd+ZDIH{oX{FjZIM3Q25H zwla!c0t=aP9YQ!S!qvXBKabvv4cxw(*aCS!fd7e(-w|>kza16H-K<(WyYSXZ>ig4W zB6z&Pmwd}mU3cS-%>8*E6P=mS(Q4q!@zSp?{Xbg{p0u>bItD+(n?C;ZzC-=bH_G#L zNKns2q_4r-2JeS6HCS9tCNhKzwnk~~K6X_e`K?fwEzA~Q%+FF;(ik?+`=BdTl-9DU zS(e7S)IX!e%ECQ6^0}6!a*5Ei;tz?{2g_UIx?)=&zqL4YG*UyY&%x-Z*+wq05&xB6 zLKtGd2oq`YWnZo(xldF1houBDKKQWEcb(>RJJ|VpdP|sm%vBC%lomk5Z4S$c`07=s zbo|S))9+(Qtt%NTyXMT_(>OwYxvFuf->t`yMt{uR?1M?03aLM(B|-jQ<_-jP7;nUj z`cA*;KebueOj~w2*m7<-RF_!h`Rh|Mv%1wJanU2g-74cJF`3jQ7(+Mc7$(0>!)!{T zG+T3o>P~(YI@a4X-T3O2;FEduBRQ#k(sASI&#~iYn}L7wZ^iC!Y!i%^wZsv9uAe;{ zKygXDf7O3uA%)c*ykRso<-M){{7+auiLw|YOO1tbPc2>n${L@4g){UHTFG&*8cs?S zu`?tSa+w;)%zVkdj)3`n$^b*;H!?p?rAtjqGH4?4Rxk^XxYofE=HTe`Zj*SWvGdl#9%{PrgRIX#iTPh0 z$Ovoux&w5B15xQ(koac8f8`q6l$v4`DWVq!60z6K+xT*Z1T%qEMk~#rTJirXz;qIrq&(#g~cibZO z>%|Kn*FHZ?@fodIoEbDCyS8 zUSZG z>6aZ#Bj=6xYN{ixJr*D%W;4}o`%r&uJU`>4q+BZzU*+f*%uj#jw6)C5ZB+C8>qa56 zd~@DRQN^$JWbm|L!}FodNL7o1V62#wWbwb6jhzmMLXhChL!^l?XUBr4)NHUWu+J;x zVO?yoTYY6Gb}cByLPDWFOPMUD;J{HaEhgd6g8`wO7~8++h;NE&@XlIV+Rq)EnQ?pE z@HasgW1|V7lp>a(cH;|M{QDVw^!Mq=6#f%WmP+Nz@1_lUgAnG9STZ~mVq5NkRcHyA zTYJ;a{M>-8wyS%L9AYFwZ(>h5E`{hui})d5$EHSmbl$w~W!+l>1! zb}Hi7Ukf7QqMr2Nn*aIy(xjv$lnUPR^|R_PJ!5|U*RaagweF)T)+(qpR$zC@%8t`Mz?UMmFJ%r?j;j4;ncO)h$t5BI{a%m;m<)Dq&XGarhT|R zb5>F+2_C1J6E|=b1LW1Y&LBPh>I2mE0ZOX8_(0akahwKNXt+H{+E=kOnfb%ufxgqc z%RR>37(jfA47?f3&5;zhKPuvLZyS^bSk+Dq28~JP%~cHm0n~xq3LCa{>6ZCL+b5n8 z3z-%_haj5*oG9%?O(1_-8B&_Cmp)HVnmE#?|ME9gr~IONnH=BLb! z#?cDyg?#3=v0}5ufc_%KZOVlqk!Cd)A~lfVdXxyX;_h9h0CZJ31$&Z96%_ zMd%&?R9HM91k7s!a~<(=5@S2NI2w?PQ(oi8Y(zh7o4; z@ZEDns{SRyrF$CQcPGxU>)sltvdXN1zj}E8{KeqwppLqQx^;MS$^kNPNuX}1X5|;# zC&7*|R^tm8qX6XF{Y{Wa2|XZ8gPq0Ui&@gh2~7}a*MQY$mUXW-;0n%CO+JThRX@YP zlOzgQF)Et(fNCDbIs4xLwD`vlCM_!~ot&jl-)WkyK!(=U9BITS* zgfZwhD?Efpgt?O1M>Qt#)4TJNd^iZ9wn{MrW!t)E-_XmIt) zJHGz~wYiganwr{olV_{;7My%z4~+Gv-pK*kvpm1v_C0iNn206a5hJeZxDw|hZsKim z!X?!cCN*L>`a(-oZ3NU(55K4pc2H4zLl5HoqM!b9kT*7_OdqQk{vXpy&+tJ<8_2~~ z2OZq=Z0`|YG|29iPAXWdQ7Sk>Z%j&@HtwFZv5Q&5 z$*Y(l2Pvp~5?oGKS^WwRT__fHpfXc{ChvluNr`=I&y|#qBUxNsCza@$D-E^%>Hp|! z=R6(Ei^A`_F;4x^`NfH(r;Gj3hW2A>rZS^@w(8Yt==I3E`T1%{(T_9!x3=?+HZLzk z1qwP?nMejk%!YmnDFPt5O~Fr6DC_K+{KgVep_%3KlxZDSspFU;$5L4B+?;8~`DLnG z4H-M>YXIeRA!2%9RlC&U$(QqrF1LxbaV+yw_Y?QS?DL(Sv-OVq)wcck*RgxAfG#(Z zc(bH$_iQ?L*zLvJWkT1&dTaw?1{dFRL|{J;ZN2Jsbok-H6GM{Ek3md0Xl~zGnciB|HXF7u3r#=-lj@Hr4=DU6T3XQ&{dJDA07m zS^iGQbRL>iAcF+PYWc^&EXvpD#r*VOR5j%it(?XjxRu%tIkzPju#{1LzOp2u%p zwAHTfJ&vzA__O!yZ@VhK=e0Pd6A9teu$kSGcE?>*y%M*&a&l}a5hqB4WBfR2-gK}5x3d{Qnq*gZZN%T3*0%OQ zyFC-stN^{}&DsN3=7o0XSa{D_XeSAd>I$F}E)ueaB!)sHb%q7iQT`9nDGwOwakcwo z`~EG?gdSdkMIb`!<@y^GGF0ZE|Bi5V&AvnbYY=h7e(oDFc$V(v);kk+5 zU)CucL}^Z9qy}4r)KI2jZfTWkpN))H$Qt`+3kZBZk0>vem`_qlN-AvAEIw4NqN3sh z8i|L{YEdE5JY17{%mezTBX4EYqT|O2B*%MGO)KDZ53E^ELU@QLYd-uTS=JQ;cZE`m zZ~V56)QiLm>+Xx1e!j5fAh}FSbfLGA;IXD$4eyXOE~1v^gIio^mobURiT^{j$g-@n zHjm&;CLEZzpT|wPAbo-yghyQ@y5@Aq3l z9#We@^BOhE%@)=R!{pIMcQiIyWBiNFkOxWoTj6hBUf#Dqjg3ImJH!b@y&E;Y-6&%s$}EpiiC~qe)C##e z^QpNj%GE1VjK*JCie8Q#T}V!^G8mae%Y=(G)aYz?HboqDy6KuY;*H@h$L_XFAr4fw zAM|Ka$~OHFnA+eK39*7>x_28sTr56afBrkQ!j~PoS8{*(fYff~a^nvr+q0MH9mTHz zCom|Pm;fWVv$!X@5QUAachQr+>&o`4b5U(D=0D1qI&47|oyL;81li*f+Mc%4kI87x z3gyAYY6r(YI%nj7O?F~+wy!h7xl4cQ{(7o5vYAIlH*_S#R zYuzFjsuiBxJS*6hJ%D`D$`3n-t!;OvS4$;E3H8*!kD2hGM59?msp}psmlY`@2Ymyi z+jtalB_**yXTdw%5g|NLSPnLkT{Wr3-w~X z+{x+)RzHGBJBgXXq@E33=BYAc50d5rk}~9xCP=pa%%FhoIDVg9$WH?wKj`>Uh!57Y z*Y@p0A6Ode&br0&;6$;FvjuU8)u|B(Y{qa9mtW;16*P7e{nbWG zxq#$PIh})ynTV!|%j{9XG2p#uK_^~JY4WoLnnBDVbf;p=3ZF zf?X7OXmuP1cDF*yZ!Y+3Flt<^c#R)|2-MuVY68Vl^VdUg)3C^?cdfOLEMo>-kL|(M zi@aLiK1Ll|Omickk%mMN2WB{Z#IS(>Px)@hINYN)K11Q{%x>CuwAi{oHmXI)Nx9{` zO}|>SHE^s!afJVNJ5ZxM<9(1?!U9W+-LM=gDk_Y>(Sw%Yy7B(^565Rani!whdSQ$* z)jpYW)4+kSGUlZ3_(wH+2-W}Q^p%?ZJQLrLgGR{^ow7=F`9!w(2?U#!)%){TFo!Tu z^JR^ug)YN3?}CmisS{0c0zdUrXexMmNs>U~I$tJP0>gJg`Y9$3^N>5~Vz`Ff3qZ5- z?)o<@=+t8H?c^n1uiFy2A?#$kn{(5kxf(5^%>7perwLWtf3Pe?5Ab=U9AFxg0s}Ih8`eXxfu1E!nn*<|7TF+ZLU7a|ViU2tB#fQyA9wMYvqSyCO!8X!qyEtwI{H{%?Y&^oXk$BtuX&i(xm7Qkyp? zU%o8YZ{pRWk+^Dfyk0shX#Gm(*xqA2fb#&B#)GiXUe&rmH-9K@&Nk9C3v;s0A6@5X zedt)yZWz9*k~8c4G7L567Rga{zE_nvh{dnmfgE^?iDBSVjlHE_Cnr&CXCnkm{dzCD zSj%Duw_xwV_x-qn4N9n&3(hhGN=1U2w#Ynr{xZ*DdZY%$7A--OJ1dmR5nf(ZajP68 z-&x-#R3;5ty$<;yhHXgVcW-kLWh4@j5DujyM(<<$Jku4FH>urqcJH|2y^+1)jf@lH zQ}Uf}`jS8!78=U-ap5~V5?lx}>*!OF83B7-tH8fiuuk&Q`zvg(qaIbFjj;dA1M$Mf zMgIqdQX5CpVbt9LuW{O9`}z`nO7Y~3s3fo}7G{u09Tj524rZEV;*jNoBs{^QJ3`^4 z=OA|QPkU&~%GjrDF^-;dHz9WU58bVVGF zB7EEe`!yt3HLen0e-DOX0T6dPw3%acF0sK~RYFHx{@p~Z{i;s}d6NC${G4C4%W;Lh zNb8HMp{ZN7E97|%kO%2(?6lsgbej4YJ*+OfT(WW(IGkCObB~Lz*|Mum2g^oNAp&;qM3r=2Ky4q+K`{yztkr})AJB}&9!ToQS#ocBq0P-lv Ms7n8mG!6cL0J2d|QUCw| literal 61656 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%0Ac$ff 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 diff --git a/browser/themes/winstripe/browser/Toolbar-small-aero.png b/browser/themes/winstripe/browser/Toolbar-small-aero.png old mode 100755 new mode 100644 index 45d45f6dad45450b37c104949a479837e4ff4bd5..f3607750398621f20c586a144f8748d4e22063b1 GIT binary patch literal 20954 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 diff --git a/browser/themes/winstripe/browser/Toolbar-small.png b/browser/themes/winstripe/browser/Toolbar-small.png old mode 100755 new mode 100644 index 61ac17477a0545cb6ef48c4236e51bc3242f779a..ef903824786d128fe3568240fe8a9bc7bc0e8fd0 GIT binary patch literal 27056 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 U-)6OL4gx+>V(;D*i|G0MUz545&;S4c diff --git a/browser/themes/winstripe/browser/Toolbar.png b/browser/themes/winstripe/browser/Toolbar.png old mode 100755 new mode 100644 index 67690b34775df6adfc2a8c8ba83334dac449e93c..6535fa297d7515abfb74f34aa385f4141ecc2080 GIT binary patch literal 49053 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 mP`gk%XFjP4%83J_<4b=_<)jf&T-H7#MH> diff --git a/browser/themes/winstripe/browser/browser.css b/browser/themes/winstripe/browser/browser.css index 0f60848cdb7..935f4903436 100644 --- a/browser/themes/winstripe/browser/browser.css +++ b/browser/themes/winstripe/browser/browser.css @@ -230,7 +230,7 @@ toolbar[mode="icons"] #back-button { toolbar[iconsize="large"][mode="icons"] #back-button { -moz-image-region: rect(0px 396px 34px 360px); } -toolbar[iconsize="large"][mode="icons"] #back-button:not([disabled="true"]):hover { +toolbar[iconsize="large"][mode="icons"] #back-button:hover { -moz-image-region: rect(34px 396px 68px 360px); } toolbar[iconsize="large"][mode="icons"] #back-button[disabled="true"] { @@ -251,7 +251,7 @@ toolbar[mode="icons"] #forward-button { toolbar[iconsize="large"][mode="icons"] #forward-button { -moz-image-region: rect(3px 422px 31px 396px); } -toolbar[iconsize="large"][mode="icons"] #forward-button:not([disabled="true"]):hover { +toolbar[iconsize="large"][mode="icons"] #forward-button:hover { -moz-image-region: rect(37px 422px 65px 396px); } toolbar[iconsize="large"][mode="icons"] #forward-button[disabled="true"] { @@ -283,7 +283,7 @@ toolbar[iconsize="large"][mode="icons"] #back-forward-dropmarker { list-style-image: url("chrome://browser/skin/Toolbar.png"); -moz-image-region: rect(3px 438px 31px 422px); } -toolbar[iconsize="large"][mode="icons"] #back-forward-dropmarker:not([disabled="true"]):hover { +toolbar[iconsize="large"][mode="icons"] #back-forward-dropmarker:hover { -moz-image-region: rect(37px 438px 65px 422px); } toolbar[iconsize="large"][mode="icons"] #back-forward-dropmarker[disabled="true"] { @@ -305,7 +305,7 @@ toolbar[iconsize="small"][mode="icons"] #forward-button > .toolbarbutton-icon { toolbar[iconsize="small"][mode="icons"] #back-button { -moz-image-region: rect(0px 264px 24px 240px); } -toolbar[iconsize="small"][mode="icons"] #back-button:not([disabled="true"]):hover { +toolbar[iconsize="small"][mode="icons"] #back-button:hover { -moz-image-region: rect(24px 264px 48px 240px); } toolbar[iconsize="small"][mode="icons"] #back-button[disabled="true"] { @@ -320,7 +320,7 @@ toolbar[iconsize="small"][mode="icons"] #back-button:not([disabled="true"]):hove toolbar[iconsize="small"][mode="icons"] #forward-button { -moz-image-region: rect(0px 288px 24px 264px); } -toolbar[iconsize="small"][mode="icons"] #forward-button:not([disabled="true"]):hover { +toolbar[iconsize="small"][mode="icons"] #forward-button:hover { -moz-image-region: rect(24px 288px 48px 264px); } toolbar[iconsize="small"][mode="icons"] #forward-button[disabled="true"] { @@ -336,7 +336,7 @@ toolbar[iconsize="small"][mode="icons"] #back-forward-dropmarker { list-style-image: url("chrome://browser/skin/Toolbar-small.png"); -moz-image-region: rect(0px 301px 24px 288px); } -toolbar[iconsize="small"][mode="icons"] #back-forward-dropmarker:not([disabled="true"]):hover { +toolbar[iconsize="small"][mode="icons"] #back-forward-dropmarker:hover { -moz-image-region: rect(24px 301px 48px 288px); } toolbar[iconsize="small"][mode="icons"] #back-forward-dropmarker[disabled="true"] { @@ -353,62 +353,48 @@ toolbar[iconsize="small"][mode="icons"] #back-forward-dropmarker:not([disabled=" #back-button { -moz-image-region: rect(0px 24px 24px 0px); } -#back-button:not([disabled="true"]):hover, -#back-button[buttonover="true"] { +#back-button:hover { -moz-image-region: rect(24px 24px 48px 0px); } #back-button[disabled="true"] { -moz-image-region: rect(48px 24px 72px 0px); } -#back-button:not([disabled="true"]):hover:active { - -moz-image-region: rect(96px 24px 120px 0px); -} /* forward button */ #forward-button { -moz-image-region: rect(0px 48px 24px 24px); } -#forward-button:not([disabled="true"]):hover, -#forward-button[buttonover="true"] { +#forward-button:hover { -moz-image-region: rect(24px 48px 48px 24px); } #forward-button[disabled="true"] { -moz-image-region: rect(48px 48px 72px 24px); } -#forward-button:not([disabled="true"]):hover:active { - -moz-image-region: rect(96px 48px 120px 24px); -} /* stop button */ #stop-button { -moz-image-region: rect(0px 72px 24px 48px); } -#stop-button:not([disabled="true"]):hover { +#stop-button:hover { -moz-image-region: rect(24px 72px 48px 48px); } #stop-button[disabled="true"] { -moz-image-region: rect(48px 72px 72px 48px); } -#stop-button:not([disabled="true"]):hover:active { - -moz-image-region: rect(96px 72px 120px 48px); -} /* reload button */ #reload-button { -moz-image-region: rect(0px 96px 24px 72px); } -#reload-button:not([disabled="true"]):hover { +#reload-button:hover { -moz-image-region: rect(24px 96px 48px 72px); } #reload-button[disabled="true"] { -moz-image-region: rect(48px 96px 72px 72px); } -#reload-button:not([disabled="true"]):hover:active { - -moz-image-region: rect(96px 96px 120px 72px); -} /* home button */ @@ -418,9 +404,6 @@ toolbar[iconsize="small"][mode="icons"] #back-forward-dropmarker:not([disabled=" #home-button:hover { -moz-image-region: rect(24px 120px 48px 96px); } -#home-button:hover:active { - -moz-image-region: rect(96px 120px 120px 96px); -} /* download manager button */ @@ -430,23 +413,15 @@ toolbar[iconsize="small"][mode="icons"] #back-forward-dropmarker:not([disabled=" #downloads-button:hover { -moz-image-region: rect(24px 144px 48px 120px); } -#downloads-button:hover:active { - -moz-image-region: rect(96px 144px 120px 120px); -} /* history sidebar button */ #history-button { -moz-image-region: rect(0px 168px 24px 144px); } -#history-button:not([checked="true"]):hover { - -moz-image-region: rect(24px 168px 48px 144px); -} +#history-button:hover, #history-button[checked="true"] { - -moz-image-region: rect(72px 168px 96px 144px); -} -#history-button:not([checked="true"]):hover:active { - -moz-image-region: rect(96px 168px 120px 144px); + -moz-image-region: rect(24px 168px 48px 144px); } /* bookmark sidebar button */ @@ -454,14 +429,9 @@ toolbar[iconsize="small"][mode="icons"] #back-forward-dropmarker:not([disabled=" #bookmarks-button { -moz-image-region: rect(0px 192px 24px 168px); } -#bookmarks-button:not([checked="true"]):hover { - -moz-image-region: rect(24px 192px 48px 168px); -} +#bookmarks-button:hover, #bookmarks-button[checked="true"] { - -moz-image-region: rect(72px 192px 96px 168px); -} -#bookmarks-button:not([checked="true"]):hover:active { - -moz-image-region: rect(96px 192px 120px 168px); + -moz-image-region: rect(24px 192px 48px 168px); } /* print button */ @@ -469,15 +439,12 @@ toolbar[iconsize="small"][mode="icons"] #back-forward-dropmarker:not([disabled=" #print-button { -moz-image-region: rect(0px 216px 24px 192px); } -#print-button:not([disabled="true"]):hover { +#print-button:hover { -moz-image-region: rect(24px 216px 48px 192px); } #print-button[disabled="true"] { -moz-image-region: rect(48px 216px 72px 192px); } -#print-button:not([disabled="true"]):hover:active { - -moz-image-region: rect(96px 216px 120px 192px); -} /* toolbar new tab button */ @@ -487,9 +454,6 @@ toolbar[iconsize="small"][mode="icons"] #back-forward-dropmarker:not([disabled=" #new-tab-button:hover { -moz-image-region: rect(24px 240px 48px 216px); } -#new-tab-button:hover:active { - -moz-image-region: rect(96px 240px 120px 216px); -} /* new window button */ @@ -499,66 +463,52 @@ toolbar[iconsize="small"][mode="icons"] #back-forward-dropmarker:not([disabled=" #new-window-button:hover { -moz-image-region: rect(24px 264px 48px 240px); } -#new-window-button:hover:active { - -moz-image-region: rect(96px 264px 120px 240px); -} /* cut button */ #cut-button { -moz-image-region: rect(0px 288px 24px 264px); } -#cut-button:not([disabled="true"]):hover { +#cut-button:hover { -moz-image-region: rect(24px 288px 48px 264px); } #cut-button[disabled="true"] { -moz-image-region: rect(48px 288px 72px 264px); } -#cut-button:not([disabled="true"]):hover:active { - -moz-image-region: rect(96px 288px 120px 264px); -} /* copy button */ #copy-button { -moz-image-region: rect(0px 312px 24px 288px); } -#copy-button:not([disabled="true"]):hover { +#copy-button:hover { -moz-image-region: rect(24px 312px 48px 288px); } #copy-button[disabled="true"] { -moz-image-region: rect(48px 312px 72px 288px); } -#copy-button:not([disabled="true"]):hover:active { - -moz-image-region: rect(96px 312px 120px 288px); -} /* paste button */ #paste-button { -moz-image-region: rect(0px 336px 24px 312px); } -#paste-button:not([disabled="true"]):hover { +#paste-button:hover { -moz-image-region: rect(24px 336px 48px 312px); } #paste-button[disabled="true"] { -moz-image-region: rect(48px 336px 72px 312px); } -#paste-button:not([disabled="true"]):hover:active { - -moz-image-region: rect(96px 336px 120px 312px); -} /* fullscreen button */ #fullscreen-button { -moz-image-region: rect(0px 360px 24px 336px); } -#fullscreen-button:hover { +#fullscreen-button:hover, +#fullscreen-button[checked="true"] { -moz-image-region: rect(24px 360px 48px 336px); } -#fullscreen-button:hover:active { - -moz-image-region: rect(96px 360px 120px 336px); -} /* ::::: 16px primary toolbar buttons ::::: */ @@ -580,16 +530,12 @@ toolbar[iconsize="small"] #back-button > .toolbarbutton-icon { toolbar[iconsize="small"] #back-button { -moz-image-region: rect(0px 16px 16px 0px); } -toolbar[iconsize="small"] #back-button:not([disabled="true"]):hover, -toolbar[iconsize="small"] #back-button[buttonover="true"] { +toolbar[iconsize="small"] #back-button:hover { -moz-image-region: rect(16px 16px 32px 0px); } toolbar[iconsize="small"] #back-button[disabled="true"] { -moz-image-region: rect(32px 16px 48px 0px); } -toolbar[iconsize="small"] #back-button:not([disabled="true"]):hover:active { - -moz-image-region: rect(64px 16px 80px 0px); -} .unified-nav-back[_moz-menuactive]:-moz-locale-dir(ltr), .unified-nav-forward[_moz-menuactive]:-moz-locale-dir(rtl) { @@ -604,16 +550,12 @@ toolbar[iconsize="small"] #forward-button > .toolbarbutton-icon { toolbar[iconsize="small"] #forward-button { -moz-image-region: rect(0px 32px 16px 16px); } -toolbar[iconsize="small"] #forward-button:not([disabled="true"]):hover, -toolbar[iconsize="small"] #forward-button[buttonover="true"] { +toolbar[iconsize="small"] #forward-button:hover { -moz-image-region: rect(16px 32px 32px 16px); } toolbar[iconsize="small"] #forward-button[disabled="true"] { -moz-image-region: rect(32px 32px 48px 16px); } -toolbar[iconsize="small"] #forward-button:not([disabled="true"]):hover:active { - -moz-image-region: rect(64px 32px 80px 16px); -} .unified-nav-forward[_moz-menuactive]:-moz-locale-dir(ltr), .unified-nav-back[_moz-menuactive]:-moz-locale-dir(rtl) { @@ -625,48 +567,38 @@ toolbar[iconsize="small"] #forward-button:not([disabled="true"]):hover:active { toolbar[iconsize="small"] #stop-button { -moz-image-region: rect(0px 48px 16px 32px); } -toolbar[iconsize="small"] #stop-button:not([disabled="true"]):hover { +toolbar[iconsize="small"] #stop-button:hover { -moz-image-region: rect(16px 48px 32px 32px); } toolbar[iconsize="small"] #stop-button[disabled="true"] { -moz-image-region: rect(32px 48px 48px 32px); } -toolbar[iconsize="small"] #stop-button:not([disabled="true"]):hover:active { - -moz-image-region: rect(64px 48px 80px 32px); -} /* reload button */ toolbar[iconsize="small"] #reload-button { -moz-image-region: rect(0px 64px 16px 48px); } -toolbar[iconsize="small"] #reload-button:not([disabled="true"]):hover { +toolbar[iconsize="small"] #reload-button:hover { -moz-image-region: rect(16px 64px 32px 48px); } toolbar[iconsize="small"] #reload-button[disabled="true"] { -moz-image-region: rect(32px 64px 48px 48px); } -toolbar[iconsize="small"] #reload-button:not([disabled="true"]):hover:active { - -moz-image-region: rect(64px 64px 80px 48px); -} /* home button */ #home-button.bookmark-item { list-style-image: url("chrome://browser/skin/Toolbar-small.png"); } -toolbar[iconsize="small"] #home-button , +toolbar[iconsize="small"] #home-button, #home-button.bookmark-item { -moz-image-region: rect(0px 80px 16px 64px); } -toolbar[iconsize="small"] #home-button:hover , +toolbar[iconsize="small"] #home-button:hover, #home-button.bookmark-item:hover { -moz-image-region: rect(16px 80px 32px 64px); } -toolbar[iconsize="small"] #home-button:hover:active , -#home-button.bookmark-item:hover:active { - -moz-image-region: rect(64px 80px 80px 64px); -} /* download manager button */ @@ -676,23 +608,15 @@ toolbar[iconsize="small"] #downloads-button { toolbar[iconsize="small"] #downloads-button:hover { -moz-image-region: rect(16px 96px 32px 80px); } -toolbar[iconsize="small"] #downloads-button:hover:active { - -moz-image-region: rect(64px 96px 80px 80px); -} /* history sidebar button */ toolbar[iconsize="small"] #history-button { -moz-image-region: rect(0px 112px 16px 96px); } -toolbar[iconsize="small"] #history-button:not([checked="true"]):hover { - -moz-image-region: rect(16px 112px 32px 96px); -} +toolbar[iconsize="small"] #history-button:hover, toolbar[iconsize="small"] #history-button[checked="true"] { - -moz-image-region: rect(48px 112px 64px 96px); -} -toolbar[iconsize="small"] #history-button:not([checked="true"]):hover:active { - -moz-image-region: rect(64px 112px 80px 96px); + -moz-image-region: rect(16px 112px 32px 96px); } /* bookmark sidebar button */ @@ -700,14 +624,9 @@ toolbar[iconsize="small"] #history-button:not([checked="true"]):hover:active { toolbar[iconsize="small"] #bookmarks-button { -moz-image-region: rect(0px 128px 16px 112px); } -toolbar[iconsize="small"] #bookmarks-button:not([checked="true"]):hover { - -moz-image-region: rect(16px 128px 32px 112px); -} +toolbar[iconsize="small"] #bookmarks-button:hover, toolbar[iconsize="small"] #bookmarks-button[checked="true"] { - -moz-image-region: rect(48px 128px 64px 112px); -} -toolbar[iconsize="small"] #bookmarks-button:not([checked="true"]):hover:active { - -moz-image-region: rect(64px 128px 80px 112px); + -moz-image-region: rect(16px 128px 32px 112px); } /* print button */ @@ -715,15 +634,12 @@ toolbar[iconsize="small"] #bookmarks-button:not([checked="true"]):hover:active { toolbar[iconsize="small"] #print-button { -moz-image-region: rect(0px 144px 16px 128px); } -toolbar[iconsize="small"] #print-button:not([disabled="true"]):hover { +toolbar[iconsize="small"] #print-button:hover { -moz-image-region: rect(16px 144px 32px 128px); } toolbar[iconsize="small"] #print-button[disabled="true"] { -moz-image-region: rect(32px 144px 48px 128px); } -toolbar[iconsize="small"] #print-button:not([disabled="true"]):hover:active { - -moz-image-region: rect(64px 144px 80px 128px); -} /* toolbar new tab button */ @@ -733,9 +649,6 @@ toolbar[iconsize="small"] #new-tab-button { toolbar[iconsize="small"] #new-tab-button:hover { -moz-image-region: rect(16px 160px 32px 144px); } -toolbar[iconsize="small"] #new-tab-button:hover:active { - -moz-image-region: rect(64px 160px 80px 144px); -} /* new window button */ @@ -745,9 +658,6 @@ toolbar[iconsize="small"] #new-window-button { toolbar[iconsize="small"] #new-window-button:hover { -moz-image-region: rect(16px 176px 32px 160px); } -toolbar[iconsize="small"] #new-window-button:hover:active { - -moz-image-region: rect(64px 176px 80px 160px); -} /* cut button */ @@ -757,57 +667,46 @@ toolbar[iconsize="small"] #cut-button > .toolbarbutton-icon { toolbar[iconsize="small"] #cut-button { -moz-image-region: rect(0px 192px 16px 176px); } -toolbar[iconsize="small"] #cut-button:not([disabled="true"]):hover { +toolbar[iconsize="small"] #cut-button:hover { -moz-image-region: rect(16px 192px 32px 176px); } toolbar[iconsize="small"] #cut-button[disabled="true"] { -moz-image-region: rect(32px 192px 48px 176px); } -toolbar[iconsize="small"] #cut-button:not([disabled="true"]):hover:active { - -moz-image-region: rect(64px 192px 80px 176px); -} /* copy button */ toolbar[iconsize="small"] #copy-button { -moz-image-region: rect(0px 208px 16px 192px); } -toolbar[iconsize="small"] #copy-button:not([disabled="true"]):hover { +toolbar[iconsize="small"] #copy-button:hover { -moz-image-region: rect(16px 208px 32px 192px); } toolbar[iconsize="small"] #copy-button[disabled="true"] { -moz-image-region: rect(32px 208px 48px 192px); } -toolbar[iconsize="small"] #copy-button:not([disabled="true"]):hover:active { - -moz-image-region: rect(64px 208px 80px 192px); -} /* paste button */ toolbar[iconsize="small"] #paste-button { -moz-image-region: rect(0px 224px 16px 208px); } -toolbar[iconsize="small"] #paste-button:not([disabled="true"]):hover { +toolbar[iconsize="small"] #paste-button:hover { -moz-image-region: rect(16px 224px 32px 208px); } toolbar[iconsize="small"] #paste-button[disabled="true"] { -moz-image-region: rect(32px 224px 48px 208px); } -toolbar[iconsize="small"] #paste-button:not([disabled="true"]):hover:active { - -moz-image-region: rect(64px 224px 80px 208px); -} /* fullscreen button */ toolbar[iconsize="small"] #fullscreen-button { -moz-image-region: rect(0px 240px 16px 224px); } -toolbar[iconsize="small"] #fullscreen-button:hover { +toolbar[iconsize="small"] #fullscreen-button:hover, +toolbar[iconsize="small"] #fullscreen-button[checked="true"] { -moz-image-region: rect(16px 240px 32px 224px); } -toolbar[iconsize="small"] #fullscreen-button:hover:active { - -moz-image-region: rect(64px 240px 80px 224px); -} /* ::::: fullscreen window controls ::::: */ diff --git a/browser/themes/winstripe/browser/feeds/feed-icons-16.png b/browser/themes/winstripe/browser/feeds/feed-icons-16.png index 9369e3b0bbd5a402b523e76cf2a1cee4abe3e386..bcca086387878dc9c572a3c037eb1885e4e43796 100644 GIT binary patch delta 2174 zcmV-^2!Z#G5sML!B!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o000Or zNkl_gQV>8L19^+9}S)sc!|3sOicgUYoDq)EtyGzkQfoPXq8_I>-UwS&_~GFh|N z*?ax}`Y+%A{lC)v)m(?7D9_u?HTzXd$HV+Zj*sft%*%+P*KW+jsa&MI*jkg>qZ!&m z$%kHm+cV`OB}BjMF2*_4jSpshty5Lihr2(FFlU6vV-v6F!uZDB-`H<97O2@p9D3pg z#DUm5h<&jtfPeTMRORo`DZ$9w2WET5tz3lK4ZAz{*agZ54wXB6`aH)KP><&!a$P|D z_Fefqs8rE5YVNyrd&<(>xT&ytS*O`l4<$jC6zrzl{?;&ny?8Nl zJAR1BD zz7K!+D!l0u6gnYfq9IwhiX8$C*wiae|SQS$|+8BRb*D5Kbi^-BCd0(jVdU{F&#j zLs4|-^{ZekS_f;*lZ3zsouJ+*;(sXN5K)IS?O}X6LQQ)f(T$V9;3?>{y)djavMp=KP9mI)hh`NDy+igf#81dMVpJ_>KRhgmxTf4qwUSO$IJO4#jRJ@V_GfrWlVLqjma7#f$tVE7Ll zNEO;(KeAh12F*lVzROGu(3ta3ET*=;9e+miCd8E~8g_+Q2WXvnlRBlC%` z!Dwm`;XzcKVJ60z)wiLhG|Fy-wRAh;Qa9Y8epw4KYr~!MF;xWWSLadx_?NMuPzTF$ zq0LpH(wXRkv#@IvWLJC|+4fFor7ncGCS)DN%%V#NByYxKAG>2GlD)@tUqbcj?|-DR zrSmV#=-X>{A^qqJtc(97nGnS(@GNA=I_WKY=l2fW!FN#ZI?MnJpm_WzvS!j-_aWPP z2u}YEe(z)5gi_v6MGeGQ_}EJ@P1a%T!y^Lb-g<>dxP$7Sehr&eW?m|yt~!ht6- zck_;9C__L>WWW-UBL@o>QZtL7*MBU9S=feXZk&fG2tLsY8s5V96Ez<;}SnuZ-m zaOaxDykZLX3r3B$PZ0c1sPM?sKSI{wuuOX9z{g z)_2h8?eK@r(1{O8&wWU3coxRORjBs7iQw*CxaANfLNH%QBfNeQ?uEZ09C`yrV;iiN zO-QYN3Vt71h)zVs|04Uz=YOboElMN|cdUqt8$o@L_Jpe=I&d9x|2RPSTqb^Nk^cDe zl2zQkx8*y<%EDT{UDkkPBq8s63B3}V{>UJvkG)6=JO_>0%s%mL^1en$ULyYAfs)F@ zUb|TmLCiu_gaV(mOjZ%p>J8k*{a?HQ=Ytc>W()GW4)T5#i2db_w-@J&I|<(%dTj&Y=zdeL3Utw;EXibXx%JXNYH8GfQ$Sy2hse4 zYp8qfS1k52W=|dB`zoC!4K7(BJ8<>=H{^M1#b@XH$piTiwO{`Zmi)XQ4KE!8qj5d)S(SzAPh4Y5Fvu<& zB=h(a-SW6z*Oo9*oD?xUA12`iO=sCh=LLK$1gGR zWkRVzz6&PF9^M=jJ4b_J79!<^o=Qm8Iz;_LDE;eaJj1}y32)?GlEf@w(<0yb#C_xx z3Bwu^80AGj;D0pwru=@zP~{;}oOiO>%#RInFAYe(g-!(LUVMbq zd$bhCsR2%vVlY!QRT6t8C<%o>JLZ(`W6pI2V!3 z39qC;BPkzCJ#sJRApWlSF>Zx8Q8AUD{!f4b0OGtWutq%8$p8QV07*qoM6N<$f>eJV ABLDyZ delta 2177 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 W4keMk5x4*V002ovP6b4+LSTXl!!Y## delta 1497 zcmV;~1t$8O4eJY#B!3BTNLh0L002k;002k;M#*bF00009c5p#w0000m0000G09$IP z^#A|>24YJ`L;wH)0002_L%V+f00nkQL_t(Y$DLMfOp{j>?mwf+GXKqgX5pvXgcdja z2n?sJjq^yjNZ-9#s##&t#~LmAI3wqga1lR{nVGr&!i5W{udfH^|3g4dXJ;p_ zU%w8{UsQlu`+xfW;kJDkYTFBw_Kp27B;eSwW2+?cc9+Wqr_%|}xfZPeolf_1b#=9K zYHA9Tlat__Ytag@l&Du(O5*H_s{+bcAtV!au0<^%BO@c-Xfz@)YHMqmh4g3z6c-m~ zGxC9P?b4JY^VT<_)4>G zeTRoUw5>K->YH~Ts|IxsLWu+0C? zojbUE`7#A@%M}oi=HNl`Xw|kY^bd)oz#MY0%dG$4AG8<4C*~*%gf6@ZEbD!@~}obCMG7( z(tpz8rLVNf)Sj9x%IsLaq^ee;UIxtkDCF}5m?7l91Rm`J9=r#P?2zB>n7NgN+lF{W zN-5P}M_E}}yYut&=b{lo@_BiAbM&F_-Me>H63NdlUcBgwMg++dOCS3BTW0b4-Q7PW z%*~E|CjxST$t)?GZ-jh$5c%!EAKU!oyMHU<=gfNb?*ANOA(SSWm<~RCp@VJp%$YOO z#4hz~vsrcT-aU#qAem6yZg)g~wpEF|LM(mgyY!vn*tDMNglW(H&qbxQedotQ{sZ9t zuBYTjwn4e=kNmV*r%nsoMy1Pi_4V~dB)~mlLfa^b*zIqZiaNCuCQ%XE~?czIXN!2yhww4#1I?WMx~>? zBDeMw4|t@(Jz|Jm-bOX6tz{aQVtW@D+x3+EgA^$niN1X+Fqj18<`xh`>@oq;jn+yD z%_@qr^oI_I!*7AXJz|Ir6`vK?mWZ}UM zxGhO=n-WF9+ae$lzT2D8V~C$6c9{UF>tw0TrARk4H1G-Gq;Vd|3^Bw83+U?VqJTZT zD*}-=nM{zk)Fh4bKxT*`mOjA(q^^@~4GB{BsZjdf!Ep0N$n(J|WSzr}Z+}5CZvy%^ z!S-`J%z907H~|Oc&4RYJHk>$d!Yj3YR!U_JjdQMXj~HS@1xQ((;*+7bw--%KO+L9F z>cn3C*Xp>&Jz|IrBjDiRFB>u1?k^Ls)cV<*C7LyIS*FH_b&!6v=8}?TroGecfReyiK-#F(Q_lO~u zKEVQnXrkCv5n_<2$1Q*0Y2wT}je!_q1MB|)ct6Nw3B#uU00000NkvXXu0mjffOpwx diff --git a/browser/themes/winstripe/browser/places/editBookmark.png b/browser/themes/winstripe/browser/places/editBookmark.png index 91aefceef89650b2385c32092ce4ef668aad885c..b424f2eb7a47bcb83bc24a0d431e383deeaacf88 100644 GIT binary patch delta 1952 zcmV;R2VeNk53Uc8B!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o000M2 zNkl75?tb?9A-Wdi{>Q_WIe7nA8cjCBP>9r4N`bVAgisL(B!mzx2uPL22}#q)?|<0Nde?Tme(h^scP?kv z3AG(pa;|i=JNKUN-tV0I%{jw_5Lj*Wyw<4+kDmq@m?Z7r`i+a$YJQBdRq>~fv;@m# z_jmsP6j#2s|Ha-s?qPg?SACde&3F9sg`s`nr)S49tNBSEw}I!_d&`w?)p;MQjM zIJI?5k}ycZPjr6s;xbL2J=S7yhc`+d-xLvEcin?sgw2xWP}jB&iT>&Cw~lNW5fZyD zDe}m!=YOwfm*S7@sV^pc3*)?9PTNn^ZEc6DIJ9D+ZgUu^zoedcW=CuQ61yw~q~7Px zjLsLNM$$MyFXC<{E48W-iK<44UR2$P>di#Jn*rP@z`2FQ2OlCmH4oc#O~(>R;fZm= zzcoCXDUHb3AuCcot*$T=P>-3r5Q$ zn}0UeZu>j}N*GKH7P5wXq7XP-pG11`Hq0Dc(KB+=3!}>@4}4uq+E!+Cnbv!OnXaALK~H*@Q%L_~CT#mAtbs2Bu{eGiHu1 zW}c_$caAn$AWpRAx{y_RG&xd9JMUxXg@5$ic+aq9&Gdr>DM)Jw$n}y_{5E+aZs#Z< zQk=t~X#S&zxKTa z|Gc(vp=)!=e5P;av1ntC6_?uxNofQX3!3C0K*VLwfh0W2mmnDne0bjVvU>2)PtL_( zVRstY`={EsYhnG@8y>zttQX02Fn?u?leuIbNeTk_c?bQMvKia-_HO%D&)Z8I*}3n1 zVqdHz@XL{6G{&GIYlI~27vTu`==mwYrP4=M648Z_xlNB%>C3%PZvH&i=+F7Ega8#cWlRv$11>!zlBBN}=@n9GXAr-a0?@Ii0 zdmE#X5Gu;b8D*a%z&yw#1m6P0L8WcV$`~TLsPKJPYh=X~Kscac@nA|@deS7ba65%m zWdsz3g?-<CoKxZXGeI! z76TD5bOuAE_CUUOH8QH}%~Xd&ipG$iv5*|hVP?Xb^gpJ`)+trdn2aE8uIUI-f}064 zy6oG9do7`etOe+nvXc%*KCqA&r5Z@1CMK6Qu9sj$=o`rp8q1=Eru$dmw-^yB;*_3D zl4H2X#f?F)@B!D<#DBuggwSctFhqdOcw1=t>aqZ6v`P{~{MrK5_`K~p;uo^aULyXO zo^TG&O}pLeswGugyt7uaca{ zlFY6wr0jppO^IP9u~!~=s^{{O{ST4u-%Q56??^J5DTpg8CEzltCy{V3*<%<@gZ*sJ z$-aLrS>Au<=*H6v1LC`?f(Dndo|SkmOBY6y-oQu_@tmr^aQIg@{<>uOt1ms-^jM24YJ`L;wH)0002_L%V+f00&t~L_t&-8I{3pXkFz2!14d{oOACv_uk~@HqA@Z zmo%+qRr{hgsS}If80ZH->_u?UZd5nWR^|sOT{mf^w3CkMK7TkzXOy|YoW%{5p~Bb) zWo+u`60I-Yl*Tqm^Pb%Iw{y;Op66MFNP|SEzn`$yvXbFv20Ux@b082>{;>c4p^z24 z{r20eBr*2ewC~Tp4uT-)x=U?5*kA>F_UvILKik{eBI?1LAg~$l8>e0vudxEjmoO^Y z-@fU(y{k5D-G8f<+Rs;%aEnJe`>wmavv2F|u3I|7S0uvlL}yQGprgkdAdF7%B_t~t z8thLC*FD^G(>GbW^Xo`Q9v&L(Pji*L%g?r@GtCFuulY9ZeRq<{)E@9IKikGtdSqYk zDksqQt-pCY8+L8PZN~RKvafd)E0CQ7@AX?!9e*21tzJdjx^-Jj9Pi^QIdb9Q z?3(`WWNR16)-0`Eecg^MKFrk$qN5$XExByZHDuRxuzIbRBZ!W&0+%I2gS%4Jn6=jE zEm(V~d)sYb1F!+zU)xA=eB#jA)BWR8GJ+6O0}l)}Stc=hx)o`*ND=Jt)8+efy?20( z07Y)?4u8rsuidXNKY7vG_bXNDa(s#>kI4ppgLI))-{<}zi zQc-VO9YxeNvW%a2Mf~UVjl*jP_U!7s{#INkjYxPv1mOb2MbHI^3t-C-RnVbAN1C~@ zfPb0M;N8{@t5$Vxy>nCBhFg%*M>q*ULtF!02U7ww4R#*ld5j7$v7$UzV__=3^!({_ zsr9>ZYkF?Dk(AepmubQCG@hNuwF{t%#6dt9hJ@9SM%55C4U;39sR=P75#rdw$L}{) zWgOwvAew++4B|P^d5BA(DiGEnj&YKp0)I_@I%*=sF%@;5sLs3->1Gk(Mi3W4>YXIU$tQV5`WkQPz#`n5LZBlfTdYdjGU|2RAlzlQs z?)Ar?YvfxWnmPYUQ&s;5b`ta?#Is=XV4Hv?YJ|*;R+^1c$3yP5$DXTJt9<6nyz}8@7D2|$b>d4766Hl^8vSjyz?|;1av7x*pL_Jo#1qYin2rk#Qf`DVLOh}H9E0x&QVB41OQ788M_;)7 z1WP1Kh6V?6ZqnK8r!A-kn12YcAS@UIvBpmc+=SRXG&qoB8Ko4JbEmo;H||L!HRuYM z0I+}st3k&k5(3AGdMf8mbt|P9i!0EV6*1IvY@(4FLmK60XH{MGMfz7YKBRo0Pue3V*-?nxIlAC^rBN z7#zpqCWJ509ejZ+=*;*eGZ}Cki{n6XR8t()I1V_DCF2V+Ns_LhlO--otg)NDv`o96 zpjil+9%)dR31>mj-sN`ptanId!1GCmA)A3QmPjcPMB5U+OggS4sy8UjR;d+L2?Q-| zBA07-NqUe-nxqhFn}3w@yfKE)32k;}vLfNNKy6xcaX9AEh^et?(Ad|5P zQ7}7!4_M@K#dawL6CYKW8*4_fvcGX0@i+n&X4K)*Lj2>dH8LqBpVb3Z1 zrIZ+B_?&j+**URkb76FviAK`@#o<3(`a4(L{rHbI-7)ov`l&#y*HWBi$^QXy$gF?3 SCqkA000003(m))qi5Cn}; z>_QL}k|`2V7)@-AAR~j1Du_R5J=Fb1 zrakM3KMU0r2z}ye$hT`rF6G5~y0Pj@=odEg<1?kn!IjFwP|MEjNwL;4`dOzd$~pVc z;l0nN>ej)Ju#si(Z;t|9gf?Kcva(vSKB8#w&Hd;&x?2G}_S&C;C=-a(f=WU< z!*`251rFke%iJ?_apc^MZ*o7(oNv9d^y`bou(+6T-5x(KD+4h4X{XsyTi?2)v4&V@ zSj(3fUrtbUL!QaZkz22qXM>LNF|N9y4Z7#bQ`vwDkqVOrz{WP`?sRu=EUk0%`qZt} z+11lMqR6+5z5e(Exzt+f=I+u`DTm8)*>1iqu|+f}jTivsn4nx-|KrBRt3L%^IB@9A z@!_YxJYc8iui*`iB8Ge4a$1vx6V)|9+Ro^tX!cL{MZd|`F8oX8LlcWZL|c@R_m#2l z&h|%TfZSK+Wzl?%wgY#4Q_*-z+Zr+CMcZG{sJ1h@Rx~|m22dcvrMnA^jYP|kXnK|5 zylA_C0yJ6CAi{gV**n_!-vx3?G_Q!ZeWL9J(c*{}M-&%C=mSnoz7*Mi0AwsGVuJ6; Q1poj507*qoM6N<$f?~3Vz5oCK diff --git a/browser/themes/winstripe/browser/places/importAndBackup.png b/browser/themes/winstripe/browser/places/importAndBackup.png deleted file mode 100644 index 4b8cd22bf325d9f25af6a7d11b80e587fab3d18e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 757 zcmV<9X(ijmEiO@fx4DHN!&%N)>b3u$!LeKIh_m^{T&T%nD{9jkj zRnjC$&O|uGW_V}l_?*WEO4bj8%5dkiFCOjOTR9q(!y7F>1ep1_oaQ&Rjd$$bpX(?; zlgk&23V?R^8U6}Rqc$v?IgrH)QOZUVN9?!NXyX-jre>vB?716LOGdjPLL z00_$Y*0$2XaC%DU>^e2e;sON=&iO%v< zd1q^Y-2-d|(XU}n1Ey<;H*yIDp{{0^X?C8f7e)EDi!oyM>|nt;TqwV~dvtSq9>~@Z zJ@FNrnBx6E`w$k)EYh?~s6mY1X2Jsr06c%9sxC=139Epw0gkBph>J{6iV-jWxjLh! zPt$adkcTqm-b1K|_GzC3db$fIdLPH;J1ywW8tBbbm#KVDNQe?t zbtwQOsnf=)|K*Rl+O$b?@}-ID%y{)+RBxavxFha5DdRA?DZHwpPyM*bvZ(*Jo^ zn`b(uGKA5H_f@K787bHGznzA5CGD5q$e nr)gfzPkA540GwKQ*T;VVfzPFkJi#aB00000NkvXXu0mjfImv2# diff --git a/browser/themes/winstripe/browser/places/libraryToolbar.png b/browser/themes/winstripe/browser/places/libraryToolbar.png index 63307cc6d1df92a156245a3ad40635f249cf0aa5..2ed627acbf65df90372ff855fb2d4f680893d9b1 100644 GIT binary patch delta 2205 zcmV;O2x9lu5vdW7B!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o000O} zNklSe0jBL;=AjkOV>==6`wb-94{8{mdJ{1lJX-x>a=Y4QLCyO|72o#=f`_X$AH9K>-s%?t6_(Vn z;X_oj08j)l{C@_#`C*-mrNj>ojUCe8N8UgBe4*2wIATTm zgi?p(t3Sw)*mPsumZZvxihV3(%krztT@-O6i7-Ri7#zLP;HQ1lANN+ zD}w|OlnPS>v(7^HvB!cC_VrjwDBy!tVA|?4)_;lZQ#Lf7{475)Ij}G>)rDE}A$S6B z5DVTR4gfc3T!=2lxTK8DBZSU18F||<$!y&Q9wxwpO<75SRm~>IqAM{}F>Q4X)pVWe zq6cN~0?-K5poiZjIwau)Q&QV=lrmaC7|k~cSzu6d4Z$x&1st{lDyy5H`4@1?feVfc zNPlk^*n>NY65+_H2oB)x=GhP0y5o?1to*({FFw)`U5Rig;Dfc0J&jv3H_oGF zcej|({9k`pXDfTL2z%vZyI1FqfW-DV$bU8hkZVxdMkv{UDk$)P<3Q`RkPTFcp<2jv zr$z%k{Pb6+x(+kbs{HQSnxiXf$|S{720;SJkXZ}3@Vs~b*-q@PP27{|!ErG8!t(Y{ zdl49@5<{_&sVFW#S&xSWk=K}D5UwFI#=!JnW1HmVtT^bBRKE|Uyu{tvu$&}$VTFF$QDa3y?DR26|m`c3= z@++|MsRwUamAdFqaW?`#jDY8xCUM~Lx@{*$GnKVC7f)li-#KGFVa{EPC6)rmKRovuUfSFL z{eY$2D5tpymK6SOKUBT?g^Z;{$zHF`{L_cpwK?l+Z|bvuZyDd~zB-S*|9`h9#=265 z#jni1XO1q}HAp#eY2~i<1^a)tVL&N4vS0J$_9z$BZU;L=SPneVj6WBm!@LVTB^TFBQEuups}n16j9Qb7?R0SW;Y zTZz+YX?9j8x3vvefiGLxD*4uD4vYGhjw#M?Y6O!>1HqD-8F0w7;MK1|)~ClaR_1KJzsz5A_Jg|d zDXHeH;h9cVXd!q8JAVxeUNf=c_kd=ZmY*{rsm^CI4=drEFEcosX72|A-M%0J7Hq24 zQDBYGw*WtluEbEq>c3nvaX-Lxj@f7UT%EyT^ziElJ^>fck~7BVR;|c`Mmb(Ki60Y# zwHboWVkQml2LfoJN7qyVGgW=T`mDJ2;Etk1IMS8`2XWg!Cw~uW8r@w{-Dt&CLoD{T9u8;9qJuhYo5A}$9aaWe1ib+P8+a|E}`DONle*N41@=u$7 z*!Q!^rRYk8LjfPGg+i--VPb+KqrH*B<+G;$@>OeZfkq+k4(CsbGGu&Xyv#t~7cz}E znGUjwqD54)DSu(T_X7h}VyG4}r&~AMJFN3f9|U?j4S4RS&t820fkRX54+qLmA~?=;TvOkyc)R%P z+b(+kMmf*eLqxKd($=}EqgJE+RU#bS%SPHAl6N}pigqCY2=68kn*!k+5KZ&{T(V_$)vb+Hqsq^0P2of)j1 zDmzi;Ro1eoe8Dvq9*emj_$DQ8=~wEn`JZ_=e^vlr%miOfIll`v0YR*fEg}DIb;zog f=Pda@0Tu=TsyvD?d}*Sa00000NkvXXu0mjfFi|ly delta 2249 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 diff --git a/browser/themes/winstripe/browser/places/organize.png b/browser/themes/winstripe/browser/places/organize.png deleted file mode 100644 index d9a1a106e2ba924485188bfeb0ba03f79b6cd434..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+7*#!8978H@O_^lt$80FjdVkTJrmi;QC5s%Ilw`MiI5)d+ z>k8?L6tK8>S}j>{;VHuv50_J{0vq?rRc}y_+mv#B^_$CmIqRQ(xBD-0rsw+4NgGw& zX+6Oy1L@y;*DmXa&)$mE1KS%lIYI=A>efq&D-dIs3e~D>81Io02RLlb;vwpxP+Y`1gPL zROO$>JN8JNTzSua-^ZUnb`*xb?=G8k%=wk~C4(1W-1JKF`Kxz{r*dc28pg-kAI-Bq fxK1T-KNAmwTvYz&CuRRZLCoOk>gTe~DWM4f)uEyM diff --git a/browser/themes/winstripe/browser/places/organizer.css b/browser/themes/winstripe/browser/places/organizer.css index 3279bd95c68..919f8856e40 100644 --- a/browser/themes/winstripe/browser/places/organizer.css +++ b/browser/themes/winstripe/browser/places/organizer.css @@ -98,19 +98,38 @@ background-position: left center; } +/* organize, view and maintenance buttons icons */ +#organizeButton, +#viewMenu, +#maintenanceButton { + list-style-image: url("chrome://browser/skin/places/libraryToolbar.png"); +} + /* organize button */ #organizeButton { - list-style-image: url("chrome://browser/skin/places/organize.png"); + -moz-image-region: rect(0px, 16px, 16px, 0px); +} +#organizeButton:hover, +#organizeButton[open="true"] { + -moz-image-region: rect(16px, 16px, 32px, 0px); } /* view button */ #viewMenu { - list-style-image: url("chrome://browser/skin/places/view.png"); + -moz-image-region: rect(0px, 32px, 16px, 16px); +} +#viewMenu:hover, +#viewMenu[open="true"] { + -moz-image-region: rect(16px, 32px, 32px, 16px); } /* maintenance button */ #maintenanceButton { - list-style-image: url("chrome://browser/skin/places/importAndBackup.png"); + -moz-image-region: rect(0px, 48px, 16px, 32px); +} +#maintenanceButton:hover, +#maintenanceButton[open="true"] { + -moz-image-region: rect(16px, 48px, 32px, 32px); } /* Root View */ diff --git a/browser/themes/winstripe/browser/places/view-aero.png b/browser/themes/winstripe/browser/places/view-aero.png deleted file mode 100644 index a9beba9880e4e0c3e8287e12146ae7dbb57e5f5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGaEOCt}3C>R|DNig)WpGT%PfAtr z%uP&B4N6T+sVqF1Y6Dax5#STz`v3obAhU1xo8@g|^|eSN)^N)=Y(JM!mNT3I7BXN-zD}2-M8r>FVdQ&MBb@0MuPXBLDyZ diff --git a/browser/themes/winstripe/browser/places/view.png b/browser/themes/winstripe/browser/places/view.png deleted file mode 100644 index 63982ef413109e2c37990341e43946848b2cc729..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 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 From 4f6014cb7b4be26267f9a64f953890031f07e941 Mon Sep 17 00:00:00 2001 From: Josh Aas Date: Mon, 23 Nov 2009 13:57:27 -0500 Subject: [PATCH 18/45] Bug 530138, npruntime sample plugin not using NPN_MemAlloc when it should. NPOB. --- modules/plugin/sdk/samples/npruntime/plugin.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/plugin/sdk/samples/npruntime/plugin.cpp b/modules/plugin/sdk/samples/npruntime/plugin.cpp index ae0b0d53dcc..53b32043490 100644 --- a/modules/plugin/sdk/samples/npruntime/plugin.cpp +++ b/modules/plugin/sdk/samples/npruntime/plugin.cpp @@ -449,7 +449,10 @@ ScriptablePluginObject::Invoke(NPIdentifier name, const NPVariant *args, NPN_ReleaseVariantValue(&docv); - STRINGZ_TO_NPVARIANT(strdup("foo return val"), *result); + const char* outString = "foo return val"; + char* npOutString = (char *)NPN_MemAlloc(strlen(outString) + 1); + strcpy(npOutString, outString); + STRINGZ_TO_NPVARIANT(npOutString, *result); return true; } @@ -463,7 +466,10 @@ ScriptablePluginObject::InvokeDefault(const NPVariant *args, uint32_t argCount, { printf ("ScriptablePluginObject default method called!\n"); - STRINGZ_TO_NPVARIANT(strdup("default method return val"), *result); + const char* outString = "default method return val"; + char* npOutString = (char *)NPN_MemAlloc(strlen(outString) + 1); + strcpy(npOutString, outString); + STRINGZ_TO_NPVARIANT(npOutString, *result); return true; } From 547cb610a2c2d67a539015f0e34daa46cd432d27 Mon Sep 17 00:00:00 2001 From: Josh Aas Date: Mon, 23 Nov 2009 14:08:41 -0500 Subject: [PATCH 19/45] Forgot null checks for NPN_MemAlloc in patch for bug 530138. NPOB. --- modules/plugin/sdk/samples/npruntime/plugin.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/plugin/sdk/samples/npruntime/plugin.cpp b/modules/plugin/sdk/samples/npruntime/plugin.cpp index 53b32043490..ed32753f9db 100644 --- a/modules/plugin/sdk/samples/npruntime/plugin.cpp +++ b/modules/plugin/sdk/samples/npruntime/plugin.cpp @@ -451,6 +451,8 @@ ScriptablePluginObject::Invoke(NPIdentifier name, const NPVariant *args, const char* outString = "foo return val"; char* npOutString = (char *)NPN_MemAlloc(strlen(outString) + 1); + if (!npOutString) + return false; strcpy(npOutString, outString); STRINGZ_TO_NPVARIANT(npOutString, *result); @@ -468,6 +470,8 @@ ScriptablePluginObject::InvokeDefault(const NPVariant *args, uint32_t argCount, const char* outString = "default method return val"; char* npOutString = (char *)NPN_MemAlloc(strlen(outString) + 1); + if (!npOutString) + return false; strcpy(npOutString, outString); STRINGZ_TO_NPVARIANT(npOutString, *result); From 6091c3cb2f1233bafeb4d07c81c2c94592c2a283 Mon Sep 17 00:00:00 2001 From: Chris Cooper Date: Mon, 23 Nov 2009 16:38:31 -0500 Subject: [PATCH 20/45] Bug 530125 - When forcing files, create the full workdir path if it doesn't exist yet. (NPOTB) - r=armenzg --- tools/update-packaging/make_incremental_update.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/update-packaging/make_incremental_update.sh b/tools/update-packaging/make_incremental_update.sh index 9954f06855e..873bb6f2a44 100755 --- a/tools/update-packaging/make_incremental_update.sh +++ b/tools/update-packaging/make_incremental_update.sh @@ -112,6 +112,8 @@ for ((i=0; $i<$num_oldfiles; i=$i+1)); do if check_for_forced_update "$requested_forced_updates" "$f"; then echo 1>&2 " FORCING UPDATE for file '$f'..." + # The full workdir may not exist yet, so create it if necessary. + mkdir -p `dirname "$workdir/$f"` $BZIP2 -cz9 "$newdir/$f" > "$workdir/$f" make_add_instruction "$f" >> $manifest archivefiles="$archivefiles \"$f\"" From 2b6197def8878c2e455874278ebc32d5f10c4232 Mon Sep 17 00:00:00 2001 From: Doug Turner Date: Mon, 23 Nov 2009 14:46:01 -0800 Subject: [PATCH 21/45] Bug 530380 - Avoid slow path painting on Hildon. r=karlt. --- layout/generic/nsObjectFrame.cpp | 71 +++++++++++++++++++++----------- 1 file changed, 47 insertions(+), 24 deletions(-) diff --git a/layout/generic/nsObjectFrame.cpp b/layout/generic/nsObjectFrame.cpp index 20e1e272453..61ee5727e4e 100644 --- a/layout/generic/nsObjectFrame.cpp +++ b/layout/generic/nsObjectFrame.cpp @@ -534,7 +534,7 @@ private: PRBool SetupXShm(); void ReleaseXShm(); - nsresult NativeImageDraw(); + void NativeImageDraw(NPRect* invalidRect = nsnull); PRBool UpdateVisibility(); #endif @@ -2702,14 +2702,19 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetDocument(nsIDocument* *aDocument) NS_IMETHODIMP nsPluginInstanceOwner::InvalidateRect(NPRect *invalidRect) { -#ifdef MOZ_PLATFORM_HILDON - if (mObjectFrame && mBlitWindow && NS_SUCCEEDED(NativeImageDraw())) - return NS_OK; -#endif - if (!mObjectFrame || !invalidRect || !mWidgetVisible) return NS_ERROR_FAILURE; +#ifdef MOZ_PLATFORM_HILDON + PRBool simpleImageRender = PR_FALSE; + mInstance->GetValueFromPlugin(NPPVpluginWindowlessLocalBool, + &simpleImageRender); + if (simpleImageRender) { + NativeImageDraw(invalidRect); + return NS_OK; + } +#endif + #ifndef XP_MACOSX // Windowed plugins should not be calling NPN_InvalidateRect, but // Silverlight does and expects it to "work" @@ -4790,15 +4795,17 @@ void nsPluginInstanceOwner::Paint(gfxContext* aContext, return; #ifdef MOZ_PLATFORM_HILDON + // through to be able to paint the context passed in. This allows + // us to handle plugins that do not self invalidate (slowly, but + // accurately), and it allows us to reduce flicker. PRBool simpleImageRender = PR_FALSE; mInstance->GetValueFromPlugin(NPPVpluginWindowlessLocalBool, &simpleImageRender); - if (simpleImageRender) { + if (simpleImageRender) { gfxMatrix matrix = aContext->CurrentMatrix(); - if (!matrix.HasNonAxisAlignedTransform() && - NS_SUCCEEDED(NativeImageDraw())) - return; - } + if (!matrix.HasNonAxisAlignedTransform()) + NativeImageDraw(); + } #endif // to provide crisper and faster drawing. @@ -4962,11 +4969,24 @@ nsPluginInstanceOwner::SetupXShm() if (!mSharedXImage) return PR_FALSE; + NS_ASSERTION(mSharedXImage->height, "do not call shmget with zero"); mSharedSegmentInfo.shmid = shmget(IPC_PRIVATE, mSharedXImage->bytes_per_line * mSharedXImage->height, IPC_CREAT | 0777); + if (mSharedSegmentInfo.shmid == -1) { + XDestroyImage(mSharedXImage); + mSharedXImage = nsnull; + return PR_FALSE; + } mSharedXImage->data = static_cast(shmat(mSharedSegmentInfo.shmid, 0, 0)); + if (mSharedXImage->data == (char*) -1) { + shmctl(mSharedSegmentInfo.shmid, IPC_RMID, 0); + XDestroyImage(mSharedXImage); + mSharedXImage = nsnull; + return PR_FALSE; + } + mSharedSegmentInfo.shmaddr = mSharedXImage->data; mSharedSegmentInfo.readOnly = False; @@ -5004,23 +5024,27 @@ nsPluginInstanceOwner::SetupXShm() // // Hopefully this API can die off in favor of a more robust plugin API. -nsresult -nsPluginInstanceOwner::NativeImageDraw() +void +nsPluginInstanceOwner::NativeImageDraw(NPRect* invalidRect) { // if we haven't been positioned yet, ignore if (!mBlitParentElement) - return NS_OK; + return; // if the clip rect is zero, we have nothing to do. if (NSToIntCeil(mAbsolutePositionClip.Width()) == 0 || NSToIntCeil(mAbsolutePositionClip.Height()) == 0) - return NS_OK; + return; // The flash plugin on Maemo n900 requires the width/height to be // even. PRInt32 absPosWidth = NSToIntCeil(mAbsolutePosition.Width()) / 2 * 2; PRInt32 absPosHeight = NSToIntCeil(mAbsolutePosition.Height()) / 2 * 2; + // if the plugin is hidden, nothing to draw. + if (absPosHeight == 0 || absPosWidth == 0) + return; + if (!mSharedXImage || mPluginSize.width != absPosWidth || mPluginSize.height != absPosHeight) { @@ -5028,7 +5052,7 @@ nsPluginInstanceOwner::NativeImageDraw() mPluginSize = nsIntSize(absPosWidth, absPosHeight); if (NS_FAILED(SetupXShm())) - return NS_ERROR_FAILURE; + return; } NPWindow* window; @@ -5088,7 +5112,7 @@ nsPluginInstanceOwner::NativeImageDraw() imageExpose.translateY = 0; if (window->width == 0) - return NS_OK; + return; float scale = mAbsolutePosition.Width() / (float) window->width; @@ -5100,15 +5124,14 @@ nsPluginInstanceOwner::NativeImageDraw() imageExpose.dataSize.width = mPluginSize.width; imageExpose.dataSize.height = mPluginSize.height; + if (invalidRect) + memset(mSharedXImage->data, 0, mPluginSize.width * mPluginSize.height * 2); + PRBool eventHandled = PR_FALSE; mInstance->HandleEvent(&pluginEvent, &eventHandled); - if (!eventHandled) { - // XXX we should set a flag that the plugin didn't handle this event, - // and we should deallocate the SHM surface and just skip trying to - // draw this way - return NS_ERROR_FAILURE; - } + if (!eventHandled) + return; // Setup the clip rectangle XRectangle rect; @@ -5142,7 +5165,7 @@ nsPluginInstanceOwner::NativeImageDraw() XSetClipRectangles(gdk_x11_get_default_xdisplay(), mXlibSurfGC, 0, 0, nsnull, 0, Unsorted); XFlush(gdk_x11_get_default_xdisplay()); - return NS_OK; + return; } #endif From a3ba7d69557c269855f8c3652e301f497077d9a0 Mon Sep 17 00:00:00 2001 From: Shawn Wilsher Date: Mon, 23 Nov 2009 18:46:39 -0500 Subject: [PATCH 22/45] Check to make sure that sqlite has been compiled with SQLITE_SECURE_DELETE (Bug 445164); r=asuth --- .../test/unit/test_sqlite_secure_delete.js | 138 ++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 storage/test/unit/test_sqlite_secure_delete.js diff --git a/storage/test/unit/test_sqlite_secure_delete.js b/storage/test/unit/test_sqlite_secure_delete.js new file mode 100644 index 00000000000..8a12d3f06fb --- /dev/null +++ b/storage/test/unit/test_sqlite_secure_delete.js @@ -0,0 +1,138 @@ +/*-*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + *vim: sw=2 ts=2 et lcs=trail\:.,tab\:>~ : + * ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Storage Test Code. + * + * The Initial Developer of the Original Code is + * Mozilla Foundation. + * Portions created by the Initial Developer are Copyright (C) 2009 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Shawn Wilsher (Original Author) + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +/** + * This file tests to make sure that SQLite was compiled with + * SQLITE_SECURE_DELETE=1. + */ + +//////////////////////////////////////////////////////////////////////////////// +//// Helper Methods + +/** + * Reads the contents of a file and returns it as a string. + * + * @param aFile + * The file to return from. + * @return the contents of the file in the form of a string. + */ +function getFileContents(aFile) +{ + let fstream = Cc["@mozilla.org/network/file-input-stream;1"]. + createInstance(Ci.nsIFileInputStream); + fstream.init(aFile, -1, 0, 0); + + let bstream = Cc["@mozilla.org/binaryinputstream;1"]. + createInstance(Ci.nsIBinaryInputStream); + bstream.setInputStream(fstream); + return bstream.readBytes(bstream.available()); +} + +//////////////////////////////////////////////////////////////////////////////// +//// Tests + +function test_delete_removes_data() +{ + const TEST_STRING = "SomeRandomStringToFind"; + + let file = getTestDB(); + let db = getService().openDatabase(file); + + // Create the table and insert the data. + db.createTable("test", "data TEXT"); + let stmt = db.createStatement("INSERT INTO test VALUES(:data)"); + stmt.params.data = TEST_STRING; + try { + stmt.execute(); + } + finally { + stmt.finalize(); + } + + // Make sure this test is actually testing what it thinks by making sure the + // string shows up in the database. Because the previous statement was + // automatically wrapped in a transaction, the contents are already on disk. + let contents = getFileContents(file); + do_check_neq(-1, contents.indexOf(TEST_STRING)); + + // Delete the data, and then close the database. + stmt = db.createStatement("DELETE FROM test WHERE data = :data"); + stmt.params.data = TEST_STRING; + try { + stmt.execute(); + } + finally { + stmt.finalize(); + } + db.close(); + + // Check the file to see if the string can be found. + contents = getFileContents(file); + do_check_eq(-1, contents.indexOf(TEST_STRING)); + + run_next_test(); +} + +//////////////////////////////////////////////////////////////////////////////// +//// Test Runner + +var tests = +[ + test_delete_removes_data, +]; +let index = 0; + +function run_next_test() +{ + if (index < tests.length) { + do_test_pending(); + print("Running the next test: " + tests[index].name); + tests[index++](); + } + + do_test_finished(); +} + +function run_test() +{ + cleanup(); + + do_test_pending(); + run_next_test(); +} From 910cf5edc6f218fc1eff1383aef38d76b9238db4 Mon Sep 17 00:00:00 2001 From: Ehsan Akhgari Date: Mon, 23 Nov 2009 19:24:13 -0500 Subject: [PATCH 23/45] Add some comments for bug 528416 --- .../mozapps/downloads/src/DownloadLastDir.jsm | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/toolkit/mozapps/downloads/src/DownloadLastDir.jsm b/toolkit/mozapps/downloads/src/DownloadLastDir.jsm index 4a5bc4c16fd..77bb6343d2f 100644 --- a/toolkit/mozapps/downloads/src/DownloadLastDir.jsm +++ b/toolkit/mozapps/downloads/src/DownloadLastDir.jsm @@ -34,6 +34,23 @@ * * ***** END LICENSE BLOCK ***** */ +/* + * The behavior implemented by gDownloadLastDir is documented here. + * + * In normal browsing sessions, gDownloadLastDir uses the browser.download.lastDir + * preference to store the last used download directory. The first time the user + * switches into the private browsing mode, the last download directory is + * preserved to the pref value, but if the user switches to another directory + * during the private browsing mode, that directory is not stored in the pref, + * and will be merely kept in memory. When leaving the private browsing mode, + * this in-memory value will be discarded, and the last download directory + * will be reverted to the pref value. + * + * Both the pref and the in-memory value will be cleared when clearing the + * browsing history. This effectively changes the last download directory + * to the default download directory on each platform. + */ + const LAST_DIR_PREF = "browser.download.lastDir"; const PBSVC_CID = "@mozilla.org/privatebrowsing;1"; const nsILocalFile = Components.interfaces.nsILocalFile; From 27f73829e6351be2c20153a6b4b260acb638b718 Mon Sep 17 00:00:00 2001 From: Josh Aas Date: Mon, 23 Nov 2009 20:56:25 -0500 Subject: [PATCH 24/45] Fix crash in Safari pref migration code. b=529459 r=smichaud r=dietrich a=dtownsend --- .../migration/src/nsSafariProfileMigrator.cpp | 56 +++++++++++-------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/browser/components/migration/src/nsSafariProfileMigrator.cpp b/browser/components/migration/src/nsSafariProfileMigrator.cpp index 10312392383..52f277022fc 100644 --- a/browser/components/migration/src/nsSafariProfileMigrator.cpp +++ b/browser/components/migration/src/nsSafariProfileMigrator.cpp @@ -215,35 +215,41 @@ CFPropertyListRef CopyPListFromFile(nsILocalFile* aPListFile) { PRBool exists; aPListFile->Exists(&exists); - nsCAutoString filePath; - aPListFile->GetNativePath(filePath); if (!exists) return nsnull; + nsCAutoString filePath; + aPListFile->GetNativePath(filePath); + nsCOMPtr macFile(do_QueryInterface(aPListFile)); CFURLRef urlRef; macFile->GetCFURL(&urlRef); - CFDataRef resourceData; - + // It is possible for CFURLCreateDataAndPropertiesFromResource to allocate resource + // data and then return a failure so be careful to check both and clean up properly. SInt32 errorCode; - Boolean status = ::CFURLCreateDataAndPropertiesFromResource(kCFAllocatorDefault, - urlRef, - &resourceData, - NULL, - NULL, - &errorCode); - if (!status) - return nsnull; + CFDataRef resourceData = NULL; + Boolean dataSuccess = ::CFURLCreateDataAndPropertiesFromResource(kCFAllocatorDefault, + urlRef, + &resourceData, + NULL, + NULL, + &errorCode); + + CFPropertyListRef propertyList = NULL; + if (resourceData) { + if (dataSuccess) { + propertyList = ::CFPropertyListCreateFromXMLData(kCFAllocatorDefault, + resourceData, + kCFPropertyListImmutable, + NULL); + } + ::CFRelease(resourceData); + } - CFPropertyListRef result = ::CFPropertyListCreateFromXMLData(kCFAllocatorDefault, - resourceData, - kCFPropertyListImmutable, - NULL); - ::CFRelease(resourceData); ::CFRelease(urlRef); - return result; + return propertyList; } CFDictionaryRef CopySafariPrefs() @@ -1254,12 +1260,14 @@ nsSafariProfileMigrator::GetSourceHomePageURL(nsACString& aResult) // Let's first check if there's a home page key in the com.apple.safari file... CFDictionaryRef safariPrefs = CopySafariPrefs(); - PRBool foundPref = GetDictionaryCStringValue(safariPrefs, - CFSTR(SAFARI_HOME_PAGE_PREF), - aResult, kCFStringEncodingUTF8); - ::CFRelease(safariPrefs); - if (foundPref) - return NS_OK; + if (safariPrefs) { + PRBool foundPref = GetDictionaryCStringValue(safariPrefs, + CFSTR(SAFARI_HOME_PAGE_PREF), + aResult, kCFStringEncodingUTF8); + ::CFRelease(safariPrefs); + if (foundPref) + return NS_OK; + } #ifdef __LP64__ return NS_ERROR_FAILURE; From 420fdeaad711b4742289d5111dc38e1df941cf80 Mon Sep 17 00:00:00 2001 From: Doug Turner Date: Tue, 24 Nov 2009 05:57:58 -0800 Subject: [PATCH 25/45] Bug 530652 - Some sites not render flash. r=karlt --HG-- extra : rebase_source : f0078705705e960fe148fd9d64847c38ff58a656 --- layout/generic/nsObjectFrame.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/layout/generic/nsObjectFrame.cpp b/layout/generic/nsObjectFrame.cpp index 61ee5727e4e..06c757a58ad 100644 --- a/layout/generic/nsObjectFrame.cpp +++ b/layout/generic/nsObjectFrame.cpp @@ -4805,6 +4805,7 @@ void nsPluginInstanceOwner::Paint(gfxContext* aContext, gfxMatrix matrix = aContext->CurrentMatrix(); if (!matrix.HasNonAxisAlignedTransform()) NativeImageDraw(); + return; } #endif @@ -5780,6 +5781,15 @@ nsPluginInstanceOwner::SetAbsoluteScreenPosition(nsIDOMElement* element, mBlitParentElement = element; UpdateVisibility(); + + if (!mInstance) + return NS_OK; + + PRBool simpleImageRender = PR_FALSE; + mInstance->GetValueFromPlugin(NPPVpluginWindowlessLocalBool, + &simpleImageRender); + if (mInstance) + NativeImageDraw(); return NS_OK; } #endif From 2048a2b8b34a86d6eec7352c95345fbff5a8e40b Mon Sep 17 00:00:00 2001 From: Mark Finkle Date: Mon, 23 Nov 2009 22:17:06 -0500 Subject: [PATCH 26/45] Bug 530196: Using a symlinked greDir fails to launch application from nsXULStub [r=bsmedberg] --- xulrunner/stub/nsXULStub.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/xulrunner/stub/nsXULStub.cpp b/xulrunner/stub/nsXULStub.cpp index 754df931f84..57c2c08b679 100644 --- a/xulrunner/stub/nsXULStub.cpp +++ b/xulrunner/stub/nsXULStub.cpp @@ -418,7 +418,16 @@ main(int argc, char **argv) range.lower, range.upper); return 1; } +#ifdef XP_UNIX + // Using a symlinked greDir will fail during startup. Not sure why, but if + // we resolve the symlink, everything works as expected. + char resolved_greDir[MAXPATHLEN] = ""; + if (realpath(greDir, resolved_greDir) && *resolved_greDir) { + strncpy(greDir, resolved_greDir, MAXPATHLEN); + } +#endif } + #ifdef XP_OS2 // On OS/2 we need to set BEGINLIBPATH to be able to find XULRunner DLLs strcpy(tmpPath, greDir); From f8f406d4c1b0d0420d642d8461bde6f1ee5554ab Mon Sep 17 00:00:00 2001 From: "L. David Baron" Date: Mon, 23 Nov 2009 22:43:48 -0800 Subject: [PATCH 27/45] Remove the concept of stateless unicode decoders since they now all have state. (Bug 530328) r=smontagu --- intl/uconv/src/nsCharsetConverterManager.cpp | 29 +------------------- intl/uconv/src/nsCharsetConverterManager.h | 5 ---- intl/uconv/src/nsUConvModule.cpp | 2 +- 3 files changed, 2 insertions(+), 34 deletions(-) diff --git a/intl/uconv/src/nsCharsetConverterManager.cpp b/intl/uconv/src/nsCharsetConverterManager.cpp index 9030a70f881..1da97f68391 100644 --- a/intl/uconv/src/nsCharsetConverterManager.cpp +++ b/intl/uconv/src/nsCharsetConverterManager.cpp @@ -63,10 +63,6 @@ #include "nsNativeUConvService.h" #endif -// Pattern of cached, commonly used, single byte decoder -#define NS_1BYTE_CODER_PATTERN "ISO-8859" -#define NS_1BYTE_CODER_PATTERN_LEN 8 - // Class nsCharsetConverterManager [implementation] NS_IMPL_THREADSAFE_ISUPPORTS1(nsCharsetConverterManager, @@ -75,7 +71,6 @@ NS_IMPL_THREADSAFE_ISUPPORTS1(nsCharsetConverterManager, nsCharsetConverterManager::nsCharsetConverterManager() : mDataBundle(NULL) , mTitleBundle(NULL) - , mDecoderHashMutex("nsCharsetConverterManager mDecoderHashMutex") { #ifdef MOZ_USE_NATIVE_UCONV mNativeUC = do_GetService(NS_NATIVE_UCONV_SERVICE_CONTRACT_ID); @@ -88,13 +83,6 @@ nsCharsetConverterManager::~nsCharsetConverterManager() NS_IF_RELEASE(mTitleBundle); } -nsresult nsCharsetConverterManager::Init() -{ - if (!mDecoderHash.Init()) - return NS_ERROR_OUT_OF_MEMORY; - return NS_OK; -} - nsresult nsCharsetConverterManager::RegisterConverterManagerData() { nsresult rv; @@ -265,23 +253,8 @@ nsCharsetConverterManager::GetUnicodeDecoderRaw(const char * aSrc, NS_NAMED_LITERAL_CSTRING(contractbase, NS_UNICODEDECODER_CONTRACTID_BASE); nsDependentCString src(aSrc); - if (!strncmp(aSrc, NS_1BYTE_CODER_PATTERN, NS_1BYTE_CODER_PATTERN_LEN)) - { - mozilla::MutexAutoLock autoLock(mDecoderHashMutex); - // Single byte decoders don't hold state. Optimize by using a service, and - // cache it in our hash to avoid repeated trips through the service manager. - if (!mDecoderHash.Get(aSrc, getter_AddRefs(decoder))) { - decoder = do_GetService(PromiseFlatCString(contractbase + src).get(), + decoder = do_CreateInstance(PromiseFlatCString(contractbase + src).get(), &rv); - if (NS_SUCCEEDED(rv)) - mDecoderHash.Put(aSrc, decoder); - } - } - else - { - decoder = do_CreateInstance(PromiseFlatCString(contractbase + src).get(), - &rv); - } NS_ENSURE_SUCCESS(rv, NS_ERROR_UCONV_NOCONV); decoder.forget(aResult); diff --git a/intl/uconv/src/nsCharsetConverterManager.h b/intl/uconv/src/nsCharsetConverterManager.h index 4a32f8f2673..b4acfd51fb4 100644 --- a/intl/uconv/src/nsCharsetConverterManager.h +++ b/intl/uconv/src/nsCharsetConverterManager.h @@ -57,8 +57,6 @@ public: nsCharsetConverterManager(); virtual ~nsCharsetConverterManager(); - nsresult Init(); - private: nsIStringBundle * mDataBundle; @@ -68,9 +66,6 @@ private: nsCOMPtr mNativeUC; #endif - nsInterfaceHashtable mDecoderHash; - mozilla::Mutex mDecoderHashMutex; - nsresult LoadExtensibleBundle(const char * aRegistryKey, nsIStringBundle ** aResult); diff --git a/intl/uconv/src/nsUConvModule.cpp b/intl/uconv/src/nsUConvModule.cpp index f17298fe6af..6e5e19016bc 100644 --- a/intl/uconv/src/nsUConvModule.cpp +++ b/intl/uconv/src/nsUConvModule.cpp @@ -610,7 +610,7 @@ nsConverterManagerDataRegister(nsIComponentManager* aCompMgr, return nsCharsetConverterManager::RegisterConverterManagerData(); } -NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsCharsetConverterManager, Init) +NS_GENERIC_FACTORY_CONSTRUCTOR(nsCharsetConverterManager) NS_GENERIC_FACTORY_CONSTRUCTOR(nsTextToSubURI) NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF8ConverterService) NS_GENERIC_FACTORY_CONSTRUCTOR(nsCharsetAlias2) From 4c070e1c8b11b8e5fcc77c80f7b657709fdebf59 Mon Sep 17 00:00:00 2001 From: Daniel Brooks Date: Tue, 24 Nov 2009 05:58:50 -0600 Subject: [PATCH 28/45] revert an unintentional change from revision 0ccbfef948d5 --- js/ctypes/libffi/doc/libffi.info | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/js/ctypes/libffi/doc/libffi.info b/js/ctypes/libffi/doc/libffi.info index 2c8854244be..87dee8a13ad 100644 --- a/js/ctypes/libffi/doc/libffi.info +++ b/js/ctypes/libffi/doc/libffi.info @@ -1,7 +1,5 @@ -This is -/home/db48x/moz/mozilla-central/js/ctypes/libffi/doc/libffi.info, -produced by makeinfo version 4.13 from -/home/db48x/moz/mozilla-central/js/ctypes/libffi/doc/libffi.texi. +This is doc/libffi.info, produced by makeinfo version 4.12 from +./doc/libffi.texi. This manual is for Libffi, a portable foreign-function interface library. @@ -518,18 +516,18 @@ Index  Tag Table: -Node: Top766 -Node: Introduction1502 -Node: Using libffi3138 -Node: The Basics3573 -Node: Simple Example6180 -Node: Types7207 -Node: Primitive Types7490 -Node: Structures9310 -Node: Type Example10170 -Node: Multiple ABIs11393 -Node: The Closure API11764 -Node: Missing Features14684 -Node: Index15177 +Node: Top670 +Node: Introduction1406 +Node: Using libffi3042 +Node: The Basics3477 +Node: Simple Example6084 +Node: Types7111 +Node: Primitive Types7394 +Node: Structures9214 +Node: Type Example10074 +Node: Multiple ABIs11297 +Node: The Closure API11668 +Node: Missing Features14588 +Node: Index15081  End Tag Table From 14c7f6facd18dd39f7f051b7a4700c7405031398 Mon Sep 17 00:00:00 2001 From: Ted Mielczarek Date: Mon, 23 Nov 2009 10:20:21 -0500 Subject: [PATCH 29/45] bug 522804 - ZipFile exception.WindowsError build problem. r=pike --HG-- extra : rebase_source : 9a940d5e8aed187f91584a86c7bd456bd249622c --- config/utils.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/config/utils.py b/config/utils.py index 3f850a295bc..8e8ed68c229 100644 --- a/config/utils.py +++ b/config/utils.py @@ -67,7 +67,10 @@ def lockFile(lockfile, max_wait = 600): # we created the lockfile, so we're the owner break except OSError, e: - if e.errno != errno.EEXIST: + if e.errno == errno.EEXIST or \ + (sys.platform == "win32" and e.errno == errno.EACCES): + pass + else: # should not occur raise From c134ce59f5320ecb3afdd1a4ed431e6ec74304a8 Mon Sep 17 00:00:00 2001 From: Ted Mielczarek Date: Tue, 24 Nov 2009 07:11:25 -0500 Subject: [PATCH 30/45] bug 522804 - fix two more JarMaker lockFile race conditions on Windows. r=pike --- config/utils.py | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/config/utils.py b/config/utils.py index 8e8ed68c229..6ecb71e68fe 100644 --- a/config/utils.py +++ b/config/utils.py @@ -53,8 +53,19 @@ class LockFile(object): def __init__(self, lockfile): self.lockfile = lockfile def __del__(self): - os.remove(self.lockfile) - + while True: + try: + os.remove(self.lockfile) + break + except OSError, e: + if e.errno == errno.EACCES: + # another process probably has the file open, we'll retry. + # just a short sleep since we want to drop the lock ASAP + # (but we need to let some other process close the file first) + time.sleep(0.1) + else: + # re-raise unknown errors + raise def lockFile(lockfile, max_wait = 600): '''Create and hold a lockfile of the given name, with the given timeout. @@ -80,18 +91,19 @@ def lockFile(lockfile, max_wait = 600): f = open(lockfile, "r") s = os.stat(lockfile) except EnvironmentError, e: - if e.errno != errno.ENOENT: - sys.exit("%s exists but stat() failed: %s" % - (lockfile, e.strerror)) - # we didn't create the lockfile, so it did exist, but it's - # gone now. Just try again - continue + if e.errno == errno.ENOENT or \ + (sys.platform == "win32" and e.errno == errno.EACCES): + # we didn't create the lockfile, so it did exist, but it's + # gone now. Just try again + continue + sys.exit("%s exists but stat() failed: %s" % + (lockfile, e.strerror)) # we didn't create the lockfile and it's still there, check # its age now = int(time.time()) if now - s[stat.ST_MTIME] > max_wait: - pid = f.readline() + pid = f.readline().rstrip() sys.exit("%s has been locked for more than " \ "%d seconds (PID %s)" % (lockfile, max_wait, pid)) From b3f04488c98f1e8633c8d8ea939232c8011e335e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A3o=20Gottwald?= Date: Tue, 24 Nov 2009 16:59:53 +0100 Subject: [PATCH 31/45] Bug 529769 - notify observers when lightweight theme is selected. r=dtownsend --- toolkit/content/LightweightThemeConsumer.jsm | 6 +++--- toolkit/mozapps/extensions/src/LightweightThemeManager.jsm | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/toolkit/content/LightweightThemeConsumer.jsm b/toolkit/content/LightweightThemeConsumer.jsm index f922706daeb..24a46c384e1 100644 --- a/toolkit/content/LightweightThemeConsumer.jsm +++ b/toolkit/content/LightweightThemeConsumer.jsm @@ -42,7 +42,7 @@ function LightweightThemeConsumer(aDocument) { Components.classes["@mozilla.org/observer-service;1"] .getService(Components.interfaces.nsIObserverService) - .addObserver(this, "lightweight-theme-changed", false); + .addObserver(this, "lightweight-theme-styling-update", false); var temp = {}; Components.utils.import("resource://gre/modules/LightweightThemeManager.jsm", temp); @@ -51,7 +51,7 @@ function LightweightThemeConsumer(aDocument) { LightweightThemeConsumer.prototype = { observe: function (aSubject, aTopic, aData) { - if (aTopic != "lightweight-theme-changed") + if (aTopic != "lightweight-theme-styling-update") return; this._update(JSON.parse(aData)); @@ -60,7 +60,7 @@ LightweightThemeConsumer.prototype = { destroy: function () { Components.classes["@mozilla.org/observer-service;1"] .getService(Components.interfaces.nsIObserverService) - .removeObserver(this, "lightweight-theme-changed"); + .removeObserver(this, "lightweight-theme-styling-update"); this._doc = null; }, diff --git a/toolkit/mozapps/extensions/src/LightweightThemeManager.jsm b/toolkit/mozapps/extensions/src/LightweightThemeManager.jsm index c24a1c79827..10c47b1aba3 100644 --- a/toolkit/mozapps/extensions/src/LightweightThemeManager.jsm +++ b/toolkit/mozapps/extensions/src/LightweightThemeManager.jsm @@ -133,6 +133,7 @@ var LightweightThemeManager = { _prefs.setBoolPref("isThemeSelected", aData != null); _notifyWindows(aData); + _observerService.notifyObservers(null, "lightweight-theme-changed", null); if (PERSIST_ENABLED && aData) _persistImages(aData); @@ -282,7 +283,7 @@ function _updateUsedThemes(aList) { } function _notifyWindows(aThemeData) { - _observerService.notifyObservers(null, "lightweight-theme-changed", + _observerService.notifyObservers(null, "lightweight-theme-styling-update", JSON.stringify(aThemeData)); } From 932fb8be67261a43918a799e53c72f0da70b9023 Mon Sep 17 00:00:00 2001 From: Mats Palmgren Date: Tue, 24 Nov 2009 20:29:48 +0100 Subject: [PATCH 32/45] Bug 526769. r=roc a1.9.2=dbaron --- layout/generic/nsFrame.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/layout/generic/nsFrame.cpp b/layout/generic/nsFrame.cpp index 2fbf870c69f..308a8953599 100644 --- a/layout/generic/nsFrame.cpp +++ b/layout/generic/nsFrame.cpp @@ -2218,6 +2218,7 @@ NS_IMETHODIMP nsFrame::HandleDrag(nsPresContext* aPresContext, getter_AddRefs(parentContent), &contentOffset, &target); + nsWeakFrame weakThis = this; if (NS_SUCCEEDED(result) && parentContent) { frameselection->HandleTableSelection(parentContent, contentOffset, target, me); } else { @@ -2225,6 +2226,12 @@ NS_IMETHODIMP nsFrame::HandleDrag(nsPresContext* aPresContext, frameselection->HandleDrag(this, pt); } + // The frameselection object notifies selection listeners synchronously above + // which might have killed us. + if (!weakThis.IsAlive()) { + return NS_OK; + } + // get the nearest scrollframe nsIFrame* checkFrame = this; nsIScrollableFrame *scrollFrame = nsnull; From d43a9bd32e9106ef193a97ec42cc019cec282cd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Str=C3=A1nsk=C3=BD?= Date: Tue, 24 Nov 2009 22:12:04 +0000 Subject: [PATCH 33/45] Bug 495392 Crash [@ nsClipboard::HasDataMatchingFlavors] [@ nsHTMLEditor::HavePrivateHTMLFlavor] when selection contains data from java. r=karlt. --- widget/src/gtk2/nsClipboard.cpp | 4 ++-- widget/src/gtk2/nsDragService.cpp | 21 +++++++++------------ 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/widget/src/gtk2/nsClipboard.cpp b/widget/src/gtk2/nsClipboard.cpp index 0d299f83e77..c78f39a3e6a 100644 --- a/widget/src/gtk2/nsClipboard.cpp +++ b/widget/src/gtk2/nsClipboard.cpp @@ -431,11 +431,11 @@ nsClipboard::HasDataMatchingFlavors(const char** aFlavorList, PRUint32 aLength, for (PRInt32 j = 0; j < n_targets; j++) { gchar *atom_name = gdk_atom_name(targets[j]); - if (!strcmp(atom_name, aFlavorList[i])) + if (!g_strcmp0(atom_name, aFlavorList[i])) *_retval = PR_TRUE; // X clipboard wants image/jpeg, not image/jpg - if (!strcmp(aFlavorList[i], kJPEGImageMime) && !strcmp(atom_name, "image/jpeg")) + if (!g_strcmp0(aFlavorList[i], kJPEGImageMime) && !g_strcmp0(atom_name, "image/jpeg")) *_retval = PR_TRUE; g_free(atom_name); diff --git a/widget/src/gtk2/nsDragService.cpp b/widget/src/gtk2/nsDragService.cpp index ffdade5d51d..e2e739eb3f2 100644 --- a/widget/src/gtk2/nsDragService.cpp +++ b/widget/src/gtk2/nsDragService.cpp @@ -831,15 +831,14 @@ nsDragService::IsDataFlavorSupported(const char *aDataFlavor, name = gdk_atom_name(atom); PR_LOG(sDragLm, PR_LOG_DEBUG, ("checking %s against %s\n", name, aDataFlavor)); - if (name && (strcmp(name, aDataFlavor) == 0)) { + if (g_strcmp0(name, aDataFlavor) == 0) { PR_LOG(sDragLm, PR_LOG_DEBUG, ("good!\n")); *_retval = PR_TRUE; } // check for automatic text/uri-list -> text/x-moz-url mapping if (*_retval == PR_FALSE && - name && - (strcmp(name, gTextUriListType) == 0) && - (strcmp(aDataFlavor, kURLMime) == 0)) { + (g_strcmp0(name, gTextUriListType) == 0) && + (g_strcmp0(aDataFlavor, kURLMime) == 0)) { PR_LOG(sDragLm, PR_LOG_DEBUG, ("good! ( it's text/uri-list and \ we're checking against text/x-moz-url )\n")); @@ -847,9 +846,8 @@ nsDragService::IsDataFlavorSupported(const char *aDataFlavor, } // check for automatic _NETSCAPE_URL -> text/x-moz-url mapping if (*_retval == PR_FALSE && - name && - (strcmp(name, gMozUrlType) == 0) && - (strcmp(aDataFlavor, kURLMime) == 0)) { + (g_strcmp0(name, gMozUrlType) == 0) && + (g_strcmp0(aDataFlavor, kURLMime) == 0)) { PR_LOG(sDragLm, PR_LOG_DEBUG, ("good! ( it's _NETSCAPE_URL and \ we're checking against text/x-moz-url )\n")); @@ -857,10 +855,9 @@ nsDragService::IsDataFlavorSupported(const char *aDataFlavor, } // check for auto text/plain -> text/unicode mapping if (*_retval == PR_FALSE && - name && - (strcmp(name, kTextMime) == 0) && - ((strcmp(aDataFlavor, kUnicodeMime) == 0) || - (strcmp(aDataFlavor, kFileMime) == 0))) { + (g_strcmp0(name, kTextMime) == 0) && + ((g_strcmp0(aDataFlavor, kUnicodeMime) == 0) || + (g_strcmp0(aDataFlavor, kFileMime) == 0))) { PR_LOG(sDragLm, PR_LOG_DEBUG, ("good! ( it's text plain and we're checking \ against text/unicode or application/x-moz-file)\n")); @@ -981,7 +978,7 @@ nsDragService::IsTargetContextList(void) GdkAtom atom = GDK_POINTER_TO_ATOM(tmp->data); gchar *name = NULL; name = gdk_atom_name(atom); - if (strcmp(name, gMimeListType) == 0) + if (g_strcmp0(name, gMimeListType) == 0) retval = PR_TRUE; g_free(name); if (retval) From 8778f3acf960093af9868cf592a761b7879db6ec Mon Sep 17 00:00:00 2001 From: Mark Banner Date: Tue, 24 Nov 2009 22:25:42 +0000 Subject: [PATCH 34/45] Back out changeset c9c35333436b / Bug 495392 due to build bustage --- widget/src/gtk2/nsClipboard.cpp | 4 ++-- widget/src/gtk2/nsDragService.cpp | 21 ++++++++++++--------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/widget/src/gtk2/nsClipboard.cpp b/widget/src/gtk2/nsClipboard.cpp index c78f39a3e6a..0d299f83e77 100644 --- a/widget/src/gtk2/nsClipboard.cpp +++ b/widget/src/gtk2/nsClipboard.cpp @@ -431,11 +431,11 @@ nsClipboard::HasDataMatchingFlavors(const char** aFlavorList, PRUint32 aLength, for (PRInt32 j = 0; j < n_targets; j++) { gchar *atom_name = gdk_atom_name(targets[j]); - if (!g_strcmp0(atom_name, aFlavorList[i])) + if (!strcmp(atom_name, aFlavorList[i])) *_retval = PR_TRUE; // X clipboard wants image/jpeg, not image/jpg - if (!g_strcmp0(aFlavorList[i], kJPEGImageMime) && !g_strcmp0(atom_name, "image/jpeg")) + if (!strcmp(aFlavorList[i], kJPEGImageMime) && !strcmp(atom_name, "image/jpeg")) *_retval = PR_TRUE; g_free(atom_name); diff --git a/widget/src/gtk2/nsDragService.cpp b/widget/src/gtk2/nsDragService.cpp index e2e739eb3f2..ffdade5d51d 100644 --- a/widget/src/gtk2/nsDragService.cpp +++ b/widget/src/gtk2/nsDragService.cpp @@ -831,14 +831,15 @@ nsDragService::IsDataFlavorSupported(const char *aDataFlavor, name = gdk_atom_name(atom); PR_LOG(sDragLm, PR_LOG_DEBUG, ("checking %s against %s\n", name, aDataFlavor)); - if (g_strcmp0(name, aDataFlavor) == 0) { + if (name && (strcmp(name, aDataFlavor) == 0)) { PR_LOG(sDragLm, PR_LOG_DEBUG, ("good!\n")); *_retval = PR_TRUE; } // check for automatic text/uri-list -> text/x-moz-url mapping if (*_retval == PR_FALSE && - (g_strcmp0(name, gTextUriListType) == 0) && - (g_strcmp0(aDataFlavor, kURLMime) == 0)) { + name && + (strcmp(name, gTextUriListType) == 0) && + (strcmp(aDataFlavor, kURLMime) == 0)) { PR_LOG(sDragLm, PR_LOG_DEBUG, ("good! ( it's text/uri-list and \ we're checking against text/x-moz-url )\n")); @@ -846,8 +847,9 @@ nsDragService::IsDataFlavorSupported(const char *aDataFlavor, } // check for automatic _NETSCAPE_URL -> text/x-moz-url mapping if (*_retval == PR_FALSE && - (g_strcmp0(name, gMozUrlType) == 0) && - (g_strcmp0(aDataFlavor, kURLMime) == 0)) { + name && + (strcmp(name, gMozUrlType) == 0) && + (strcmp(aDataFlavor, kURLMime) == 0)) { PR_LOG(sDragLm, PR_LOG_DEBUG, ("good! ( it's _NETSCAPE_URL and \ we're checking against text/x-moz-url )\n")); @@ -855,9 +857,10 @@ nsDragService::IsDataFlavorSupported(const char *aDataFlavor, } // check for auto text/plain -> text/unicode mapping if (*_retval == PR_FALSE && - (g_strcmp0(name, kTextMime) == 0) && - ((g_strcmp0(aDataFlavor, kUnicodeMime) == 0) || - (g_strcmp0(aDataFlavor, kFileMime) == 0))) { + name && + (strcmp(name, kTextMime) == 0) && + ((strcmp(aDataFlavor, kUnicodeMime) == 0) || + (strcmp(aDataFlavor, kFileMime) == 0))) { PR_LOG(sDragLm, PR_LOG_DEBUG, ("good! ( it's text plain and we're checking \ against text/unicode or application/x-moz-file)\n")); @@ -978,7 +981,7 @@ nsDragService::IsTargetContextList(void) GdkAtom atom = GDK_POINTER_TO_ATOM(tmp->data); gchar *name = NULL; name = gdk_atom_name(atom); - if (g_strcmp0(name, gMimeListType) == 0) + if (strcmp(name, gMimeListType) == 0) retval = PR_TRUE; g_free(name); if (retval) From 200a545f67c5e0aefdd7cf528db6adf3069daeb6 Mon Sep 17 00:00:00 2001 From: Brendan Eich Date: Tue, 24 Nov 2009 15:17:16 -0800 Subject: [PATCH 35/45] Undo hackaround for bug 529837. --- js/src/jsops.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/src/jsops.cpp b/js/src/jsops.cpp index cdc3dfb67c8..a736b9de88d 100644 --- a/js/src/jsops.cpp +++ b/js/src/jsops.cpp @@ -3257,7 +3257,7 @@ BEGIN_CASE(JSOP_LAMBDA) if (FUN_NULL_CLOSURE(fun)) { parent = fp->scopeChain; - if (0 && OBJ_GET_PARENT(cx, obj) == parent) { + if (OBJ_GET_PARENT(cx, obj) == parent) { op = JSOp(regs.pc[JSOP_LAMBDA_LENGTH]); /* From 44d12116b23846b2fced949192d481cea1a38ea8 Mon Sep 17 00:00:00 2001 From: John Daniels Date: Tue, 24 Nov 2009 11:58:42 -0800 Subject: [PATCH 36/45] Bug 525819 - Make do_timeout take a callback function, not a string to eval. r=jwalden --HG-- extra : rebase_source : 6fbaac51eabe95fcfaf4706feb9fd8a28ba4dfbf --- .../tests/unit/test_browserGlue_corrupt.js | 4 ++-- .../unit/test_browserGlue_distribution.js | 2 +- .../tests/unit/test_browserGlue_migrate.js | 2 +- .../tests/unit/test_browserGlue_restore.js | 4 ++-- .../unit/test_leftpane_corruption_handling.js | 4 ++-- content/base/test/unit/test_error_codes.js | 2 +- .../test/unit/test_permmanager_expiration.js | 6 +++--- .../unit/test_permmanager_notifications.js | 2 +- netwerk/test/unit/test_bug203271.js | 2 +- netwerk/test/unit/test_bug369787.js | 2 +- netwerk/test/unit/test_bug470716.js | 19 +++++++++++-------- netwerk/test/unit/test_bug482601.js | 4 ++-- netwerk/test/unit/test_bug490095.js | 2 +- netwerk/test/unit/test_cacheflags.js | 2 +- netwerk/test/unit/test_reopen.js | 2 +- testing/xpcshell/example/unit/test_sample.js | 2 +- testing/xpcshell/head.js | 6 ++---- .../downloads/test/unit/test_bug_401430.js | 4 ++-- .../places/tests/bookmarks/test_388695.js | 4 ++-- ...sync_after_shutdown_with_removeAllPages.js | 4 ++-- .../places/tests/unit/test_399606.js | 2 +- .../places/tests/unit/test_451499.js | 2 +- .../places/tests/unit/test_bookmark_catobs.js | 2 +- .../places/tests/unit/test_expiration.js | 12 ++++++------ .../places/tests/unit/test_history_catobs.js | 2 +- .../satchel/test/unit/test_db_update_v1.js | 2 +- .../extensions/test/unit/test_bug299716.js | 2 +- .../extensions/test/unit/test_bug449027.js | 2 +- .../extensions/test/unit/test_bug455906.js | 2 +- .../extensions/test/unit/test_bug514327_3.js | 2 +- .../update/test/unit/head_update.js.in | 6 +++--- .../update/test/unit/test_0020_general.js | 2 +- .../update/test/unit/test_0030_general.js | 4 ++-- .../update/test/unit/test_0040_general.js | 2 +- .../update/test/unit/test_0050_general.js | 2 +- .../update/test/unit/test_bug497578.js | 4 ++-- .../unit/test_0010_timermanager.js | 8 ++++---- .../tests/unit/test_punycodeURIs.js | 4 ++-- 38 files changed, 71 insertions(+), 70 deletions(-) diff --git a/browser/components/places/tests/unit/test_browserGlue_corrupt.js b/browser/components/places/tests/unit/test_browserGlue_corrupt.js index 234b4017369..50f2f61e6c1 100644 --- a/browser/components/places/tests/unit/test_browserGlue_corrupt.js +++ b/browser/components/places/tests/unit/test_browserGlue_corrupt.js @@ -76,7 +76,7 @@ function run_test() { // Restore could take some time, usually less than 1s. // We will poll later in continue_test to be sure restore has finished. do_test_pending(); - do_timeout(1000, "continue_test();"); + do_timeout(1000, continue_test); } function continue_test() { @@ -85,7 +85,7 @@ function continue_test() { if (bs.getIdForItemAt(bs.toolbarFolder, 0) == -1) { // Not enough time to complete restore, poll again later. - do_timeout(1000, "continue_test();"); + do_timeout(1000, continue_test); return; } diff --git a/browser/components/places/tests/unit/test_browserGlue_distribution.js b/browser/components/places/tests/unit/test_browserGlue_distribution.js index d154d1bb853..ed7e63eb84a 100644 --- a/browser/components/places/tests/unit/test_browserGlue_distribution.js +++ b/browser/components/places/tests/unit/test_browserGlue_distribution.js @@ -56,7 +56,7 @@ let observer = { observe: function(aSubject, aTopic, aData) { if (aTopic == TOPIC_CUSTOMIZATION_COMPLETE) { os.removeObserver(this, TOPIC_CUSTOMIZATION_COMPLETE); - do_timeout(0, "continue_test();"); + do_timeout(0, continue_test); } } } diff --git a/browser/components/places/tests/unit/test_browserGlue_migrate.js b/browser/components/places/tests/unit/test_browserGlue_migrate.js index 8340f053a65..4f5a471915f 100644 --- a/browser/components/places/tests/unit/test_browserGlue_migrate.js +++ b/browser/components/places/tests/unit/test_browserGlue_migrate.js @@ -90,7 +90,7 @@ function run_test() { // Import could take some time, usually less than 1s, but to be sure we will // check after 3s. do_test_pending(); - do_timeout(3000, "continue_test();"); + do_timeout(3000, continue_test); } function continue_test() { diff --git a/browser/components/places/tests/unit/test_browserGlue_restore.js b/browser/components/places/tests/unit/test_browserGlue_restore.js index 1d23e78f96e..70203b08826 100644 --- a/browser/components/places/tests/unit/test_browserGlue_restore.js +++ b/browser/components/places/tests/unit/test_browserGlue_restore.js @@ -71,7 +71,7 @@ function run_test() { // Restore could take some time, usually less than 1s. // We will poll later in continue_test() to be sure restore has finished. do_test_pending(); - do_timeout(1000, "continue_test();"); + do_timeout(1000, continue_test); } function continue_test() { @@ -80,7 +80,7 @@ function continue_test() { if (bs.getIdForItemAt(bs.toolbarFolder, 0) == -1) { // Not enough time to complete restore, poll again later. - do_timeout(1000, "continue_test();"); + do_timeout(1000, continue_test); return; } diff --git a/browser/components/places/tests/unit/test_leftpane_corruption_handling.js b/browser/components/places/tests/unit/test_leftpane_corruption_handling.js index 0cf32679e56..014c9aeb673 100644 --- a/browser/components/places/tests/unit/test_leftpane_corruption_handling.js +++ b/browser/components/places/tests/unit/test_leftpane_corruption_handling.js @@ -143,7 +143,7 @@ function run_test() { // Kick-off tests. do_test_pending(); - do_timeout(0, "run_next_test();"); + do_timeout(0, run_next_test); } function run_next_test() { @@ -160,7 +160,7 @@ function run_next_test() { do_check_true(compareJSON(gReferenceJSON, leftPaneJSON)); do_check_eq(PlacesUtils.bookmarks.getItemTitle(gFolderId), "test"); // Go to next test. - do_timeout(0, "run_next_test();"); + do_timeout(0, run_next_test); } else { // All tests finished. diff --git a/content/base/test/unit/test_error_codes.js b/content/base/test/unit/test_error_codes.js index 373a65fd6b1..35528bb1a39 100644 --- a/content/base/test/unit/test_error_codes.js +++ b/content/base/test/unit/test_error_codes.js @@ -58,7 +58,7 @@ var asyncXHR = { function run_test() { do_test_pending(); - do_timeout(0, "run_test_pt1()"); + do_timeout(0, run_test_pt1); } // network offline diff --git a/extensions/cookie/test/unit/test_permmanager_expiration.js b/extensions/cookie/test/unit/test_permmanager_expiration.js index 18a5bb19f14..1afd27464f4 100644 --- a/extensions/cookie/test/unit/test_permmanager_expiration.js +++ b/extensions/cookie/test/unit/test_permmanager_expiration.js @@ -32,15 +32,15 @@ function run_test() { // ... and the first one has do_test_pending(); - do_timeout(10, "verifyFirstExpiration();"); + do_timeout(10, verifyFirstExpiration); // ... and that the short-term one will do_test_pending(); - do_timeout(200, "verifyExpiration();"); + do_timeout(200, verifyExpiration); // clean up do_test_pending(); - do_timeout(300, "end_test();"); + do_timeout(300, end_test); } function verifyFirstExpiration() { diff --git a/extensions/cookie/test/unit/test_permmanager_notifications.js b/extensions/cookie/test/unit/test_permmanager_notifications.js index e28f20a96ea..44a497c78da 100644 --- a/extensions/cookie/test/unit/test_permmanager_notifications.js +++ b/extensions/cookie/test/unit/test_permmanager_notifications.js @@ -114,7 +114,7 @@ function run_test() { do_test_pending(); // for 'cleared' notification pm.removeAll(); - do_timeout(100, "cleanup();"); + do_timeout(100, cleanup); } function cleanup() { diff --git a/netwerk/test/unit/test_bug203271.js b/netwerk/test/unit/test_bug203271.js index 0ad2e9413e2..7721a87cabb 100644 --- a/netwerk/test/unit/test_bug203271.js +++ b/netwerk/test/unit/test_bug203271.js @@ -121,7 +121,7 @@ function checkValueAndTrigger(request, data, ctx) { if (index < tests.length - 1) { var delay = tests[index++].delay; if (delay) { - do_timeout(delay, "triggerNextTest()"); + do_timeout(delay, triggerNextTest); } else { triggerNextTest(); } diff --git a/netwerk/test/unit/test_bug369787.js b/netwerk/test/unit/test_bug369787.js index 9175094f845..6376cd32f36 100644 --- a/netwerk/test/unit/test_bug369787.js +++ b/netwerk/test/unit/test_bug369787.js @@ -21,7 +21,7 @@ TestListener.prototype.onStartRequest = function(request, context) { TestListener.prototype.onStopRequest = function(request, context, status) { change_content_type(); - do_timeout(0, "after_channel_closed()"); + do_timeout(0, after_channel_closed); } function after_channel_closed() { diff --git a/netwerk/test/unit/test_bug470716.js b/netwerk/test/unit/test_bug470716.js index 785a16aa2db..62d78532cf0 100644 --- a/netwerk/test/unit/test_bug470716.js +++ b/netwerk/test/unit/test_bug470716.js @@ -59,7 +59,7 @@ var copyObserver = do_check_true(test_source_closed); } - do_timeout(0, "do_test();"); + do_timeout(0, do_test); }, QueryInterface: function(aIID) @@ -119,8 +119,9 @@ function do_test() { pipe1.outputStream.write(test_content, test_content.length); pipe1.outputStream.flush(); do_timeout(20, - "copier.cancel(test_result);" + - "pipe1.outputStream.write(\"a\", 1);"); + function(){ + copier.cancel(test_result); + pipe1.outputStream.write("a", 1);}); break; case 5: case 6: // close sink @@ -156,10 +157,12 @@ function do_test() { // we will close the sink test_sink_closed = true; do_timeout(20, - "pipe2.outputStream" + - " .QueryInterface(Ci.nsIAsyncOutputStream)" + - " .closeWithStatus(test_result);" + - "pipe1.outputStream.write(\"a\", 1);"); + function() + { + pipe2.outputStream + .QueryInterface(Ci.nsIAsyncOutputStream) + .closeWithStatus(test_result); + pipe1.outputStream.write("a", 1);}); break; case 13: do_test_finished(); @@ -169,6 +172,6 @@ function do_test() { function run_test() { test_nr = 0; - do_timeout(0, "do_test();"); + do_timeout(0, do_test); do_test_pending(); } diff --git a/netwerk/test/unit/test_bug482601.js b/netwerk/test/unit/test_bug482601.js index 09ef2952916..6d58ed4b8a4 100644 --- a/netwerk/test/unit/test_bug482601.js +++ b/netwerk/test/unit/test_bug482601.js @@ -35,7 +35,7 @@ var listener = { do_check_eq(buffer, "0123456789"); do_check_eq(observers_called, results[test_nr]); test_nr++; - do_timeout(0, "do_test();"); + do_timeout(0, do_test); } }; @@ -53,7 +53,7 @@ function run_test() { obs.addObserver(observer, "http-on-examine-merged-response", false); obs.addObserver(observer, "http-on-examine-cached-response", false); - do_timeout(0, "do_test();"); + do_timeout(0, do_test); do_test_pending(); } diff --git a/netwerk/test/unit/test_bug490095.js b/netwerk/test/unit/test_bug490095.js index cce2e5315ec..31f9b2ece42 100644 --- a/netwerk/test/unit/test_bug490095.js +++ b/netwerk/test/unit/test_bug490095.js @@ -72,7 +72,7 @@ function checkValueAndTrigger(request, data, ctx) { index++; // this call happens in onStopRequest from the channel, and opening a // new channel to the same url here is no good idea... post it instead - do_timeout(1, "triggerNextTest();"); + do_timeout(1, triggerNextTest); } else { httpserver.stop(do_test_finished); } diff --git a/netwerk/test/unit/test_cacheflags.js b/netwerk/test/unit/test_cacheflags.js index 8ca4af5e061..560e213311d 100644 --- a/netwerk/test/unit/test_cacheflags.js +++ b/netwerk/test/unit/test_cacheflags.js @@ -57,7 +57,7 @@ Test.prototype = { do_check_eq(this._isFromCache, this.readFromCache); do_check_eq(gHitServer, this.hitServer); - do_timeout(0, "run_next_test();"); + do_timeout(0, run_next_test); }, run: function() { diff --git a/netwerk/test/unit/test_reopen.js b/netwerk/test/unit/test_reopen.js index ab7ec07751e..353018f81e8 100644 --- a/netwerk/test/unit/test_reopen.js +++ b/netwerk/test/unit/test_reopen.js @@ -77,7 +77,7 @@ var listener = { // Once onStopRequest is reached, the channel is marked as having been // opened check_async_open_throws(NS_ERROR_ALREADY_OPENED); - do_timeout(0, "after_channel_closed()"); + do_timeout(0, after_channel_closed); } }; diff --git a/testing/xpcshell/example/unit/test_sample.js b/testing/xpcshell/example/unit/test_sample.js index 966e03bcff4..96c1dc3b438 100644 --- a/testing/xpcshell/example/unit/test_sample.js +++ b/testing/xpcshell/example/unit/test_sample.js @@ -49,5 +49,5 @@ function run_test() { do_check_true(true); do_test_pending(); - do_timeout(100, "do_test_finished();"); + do_timeout(100, do_test_finished); } diff --git a/testing/xpcshell/head.js b/testing/xpcshell/head.js index 5d05dc82b02..df89cbd5628 100644 --- a/testing/xpcshell/head.js +++ b/testing/xpcshell/head.js @@ -75,13 +75,11 @@ if ("@mozilla.org/toolkit/crash-reporter;1" in Components.classes) { function _TimerCallback(expr, timer) { - this._expr = expr; + this._func = expr; // Keep timer alive until it fires _pendingCallbacks.push(timer); } _TimerCallback.prototype = { - _expr: "", - QueryInterface: function(iid) { if (iid.Equals(Components.interfaces.nsITimerCallback) || iid.Equals(Components.interfaces.nsISupports)) @@ -92,7 +90,7 @@ _TimerCallback.prototype = { notify: function(timer) { _pendingCallbacks.splice(_pendingCallbacks.indexOf(timer), 1); - eval(this._expr); + this._func.call(null); } }; diff --git a/toolkit/components/downloads/test/unit/test_bug_401430.js b/toolkit/components/downloads/test/unit/test_bug_401430.js index d9aa5c78c8e..2029dad0ea1 100644 --- a/toolkit/components/downloads/test/unit/test_bug_401430.js +++ b/toolkit/components/downloads/test/unit/test_bug_401430.js @@ -58,7 +58,7 @@ function checkResult() { // Need to poll RecentDocs value because the SHAddToRecentDocs call // doesn't update the registry immediately. - do_timeout(POLL_REGISTRY_TIMEOUT, "pollRecentDocs();"); + do_timeout(POLL_REGISTRY_TIMEOUT, pollRecentDocs); } var gPollsCount = 0; @@ -74,7 +74,7 @@ function pollRecentDocs() { do_test_finished(); } else - do_timeout(POLL_REGISTRY_TIMEOUT, "pollRecentDocs();"); + do_timeout(POLL_REGISTRY_TIMEOUT, pollRecentDocs); } function checkRecentDocsFor(aFileName) { diff --git a/toolkit/components/places/tests/bookmarks/test_388695.js b/toolkit/components/places/tests/bookmarks/test_388695.js index b97f6c3decc..a9808407a67 100644 --- a/toolkit/components/places/tests/bookmarks/test_388695.js +++ b/toolkit/components/places/tests/bookmarks/test_388695.js @@ -63,7 +63,7 @@ function run_test() { do_test_pending(); gItemId1 = bmsvc.insertBookmark(gTestRoot, gURI, bmsvc.DEFAULT_INDEX, ""); - do_timeout(100, "phase2();"); + do_timeout(100, phase2); } function phase2() { @@ -71,7 +71,7 @@ function phase2() { var b = bmsvc.getBookmarkIdsForURI(gURI); do_check_eq(b[0], gItemId2); do_check_eq(b[1], gItemId1); - do_timeout(100, "phase3();"); + do_timeout(100, phase3); } function phase3() { diff --git a/toolkit/components/places/tests/sync/test_database_sync_after_shutdown_with_removeAllPages.js b/toolkit/components/places/tests/sync/test_database_sync_after_shutdown_with_removeAllPages.js index b48361d51f8..bfa202a041c 100644 --- a/toolkit/components/places/tests/sync/test_database_sync_after_shutdown_with_removeAllPages.js +++ b/toolkit/components/places/tests/sync/test_database_sync_after_shutdown_with_removeAllPages.js @@ -97,7 +97,7 @@ var observer = { // The database connection will be closed after this sync, but we can't // know how much time it will take, so we use a polling strategy. - do_timeout(POLLING_TIMEOUT_MS, "check_results();"); + do_timeout(POLLING_TIMEOUT_MS, check_results); } } } @@ -111,7 +111,7 @@ function check_results() { } if (hs.QueryInterface(Ci.nsPIPlacesDatabase).DBConnection.connectionReady) { - do_timeout(POLLING_TIMEOUT_MS, "check_results();"); + do_timeout(POLLING_TIMEOUT_MS, check_results); return; } diff --git a/toolkit/components/places/tests/unit/test_399606.js b/toolkit/components/places/tests/unit/test_399606.js index b9644d79859..80bddb53ca8 100644 --- a/toolkit/components/places/tests/unit/test_399606.js +++ b/toolkit/components/places/tests/unit/test_399606.js @@ -85,7 +85,7 @@ function run_test() { ghist.addURI(testURI, false, true, null); ghist.addURI(testURI, false, true, testURI); // lazy message timer is 3000, see LAZY_MESSAGE_TIMEOUT - do_timeout(3500, "confirm_results();"); + do_timeout(3500, confirm_results); } function confirm_results() { diff --git a/toolkit/components/places/tests/unit/test_451499.js b/toolkit/components/places/tests/unit/test_451499.js index 6a824be2b95..e11a47a7699 100644 --- a/toolkit/components/places/tests/unit/test_451499.js +++ b/toolkit/components/places/tests/unit/test_451499.js @@ -124,7 +124,7 @@ function run_test() { do_test_pending(); // lazy timeout is 3s and favicons are lazy added - do_timeout(3500, "end_test();"); + do_timeout(3500, end_test); } function end_test() { diff --git a/toolkit/components/places/tests/unit/test_bookmark_catobs.js b/toolkit/components/places/tests/unit/test_bookmark_catobs.js index 10cdd234905..b5c533e4bdd 100644 --- a/toolkit/components/places/tests/unit/test_bookmark_catobs.js +++ b/toolkit/components/places/tests/unit/test_bookmark_catobs.js @@ -77,5 +77,5 @@ function run_test() { bs.DEFAULT_INDEX, "bookmark"); do_test_pending(); - do_timeout(1000, "verify();"); + do_timeout(1000, verify); } diff --git a/toolkit/components/places/tests/unit/test_expiration.js b/toolkit/components/places/tests/unit/test_expiration.js index 2cba1a72e35..74b9009dfe3 100644 --- a/toolkit/components/places/tests/unit/test_expiration.js +++ b/toolkit/components/places/tests/unit/test_expiration.js @@ -527,7 +527,7 @@ function startExpireNeither() { // Changing expiration preferences triggers partial expiration. // Check results. - do_timeout(600, "checkExpireNeither();"); + do_timeout(600, checkExpireNeither); } function checkExpireNeither() { @@ -588,7 +588,7 @@ function startExpireDaysOnly() { // Changing expiration preferences triggers partial expiration. // Check results. - do_timeout(600, "checkExpireDaysOnly();"); + do_timeout(600, checkExpireDaysOnly); } function checkExpireDaysOnly() { @@ -658,7 +658,7 @@ function startExpireBoth() { // Changing expiration preferences triggers partial expiration. // Check results. - do_timeout(600, "checkExpireBoth();"); // incremental expiration timer is 3500 + do_timeout(600, checkExpireBoth); // incremental expiration timer is 3500 } function checkExpireBoth() { @@ -716,7 +716,7 @@ function startExpireNeitherOver() { // Changing expiration preferences triggers partial expiration. // Check results. - do_timeout(600, "checkExpireNeitherOver();"); + do_timeout(600, checkExpireNeitherOver); } function checkExpireNeitherOver() { @@ -765,7 +765,7 @@ function startExpireHistoryDisabled() { // Changing expiration preferences triggers partial expiration. // Check results. - do_timeout(600, "checkExpireHistoryDisabled();"); + do_timeout(600, checkExpireHistoryDisabled); } function checkExpireHistoryDisabled() { @@ -817,7 +817,7 @@ function startExpireBadPrefs() { // Changing expiration preferences triggers partial expiration. // Check results. - do_timeout(600, "checkExpireBadPrefs();"); + do_timeout(600, checkExpireBadPrefs); } function checkExpireBadPrefs() { diff --git a/toolkit/components/places/tests/unit/test_history_catobs.js b/toolkit/components/places/tests/unit/test_history_catobs.js index a158b0cebba..5dc813f9d79 100644 --- a/toolkit/components/places/tests/unit/test_history_catobs.js +++ b/toolkit/components/places/tests/unit/test_history_catobs.js @@ -77,5 +77,5 @@ function run_test() { hs.TRANSITION_TYPED, false, 0); do_test_pending(); - do_timeout(1000, "verify();"); + do_timeout(1000, verify); } diff --git a/toolkit/components/satchel/test/unit/test_db_update_v1.js b/toolkit/components/satchel/test/unit/test_db_update_v1.js index 6b73df5e760..8c8eb28bcbd 100644 --- a/toolkit/components/satchel/test/unit/test_db_update_v1.js +++ b/toolkit/components/satchel/test/unit/test_db_update_v1.js @@ -133,7 +133,7 @@ function run_test() // test too soon the timestamp will be the same! So, we'll wait a short // period of time to make sure the timestamp will differ. do_test_pending(); - do_timeout(50, "delayed_test()"); + do_timeout(50, delayed_test); } catch (e) { throw "FAILED in test #" + testnum + " -- " + e; diff --git a/toolkit/mozapps/extensions/test/unit/test_bug299716.js b/toolkit/mozapps/extensions/test/unit/test_bug299716.js index 283f73bfff7..a9de9d8fdf6 100644 --- a/toolkit/mozapps/extensions/test/unit/test_bug299716.js +++ b/toolkit/mozapps/extensions/test/unit/test_bug299716.js @@ -362,7 +362,7 @@ function run_test() { do_test_pending(); // Give time for phone home to complete. - do_timeout(DELAY, "run_test_pt2()"); + do_timeout(DELAY, run_test_pt2); } /** diff --git a/toolkit/mozapps/extensions/test/unit/test_bug449027.js b/toolkit/mozapps/extensions/test/unit/test_bug449027.js index a3ed3321afc..c55719bbe71 100644 --- a/toolkit/mozapps/extensions/test/unit/test_bug449027.js +++ b/toolkit/mozapps/extensions/test/unit/test_bug449027.js @@ -437,7 +437,7 @@ var WindowWatcher = { gNewBlocks.push(list[i].name + " " + list[i].version); // Call the callback after the blocklist has finished up - do_timeout(0, "gCallback()"); + do_timeout(0, gCallback); }, QueryInterface: function(iid) { diff --git a/toolkit/mozapps/extensions/test/unit/test_bug455906.js b/toolkit/mozapps/extensions/test/unit/test_bug455906.js index 9d40f287b83..8ac219d94f7 100644 --- a/toolkit/mozapps/extensions/test/unit/test_bug455906.js +++ b/toolkit/mozapps/extensions/test/unit/test_bug455906.js @@ -174,7 +174,7 @@ var WindowWatcher = { } // Call the next test after the blocklist has finished up - do_timeout(0, "gTestCheck()"); + do_timeout(0, gTestCheck); }, QueryInterface: function(iid) { diff --git a/toolkit/mozapps/extensions/test/unit/test_bug514327_3.js b/toolkit/mozapps/extensions/test/unit/test_bug514327_3.js index 1322efa46f4..726d1996515 100644 --- a/toolkit/mozapps/extensions/test/unit/test_bug514327_3.js +++ b/toolkit/mozapps/extensions/test/unit/test_bug514327_3.js @@ -107,7 +107,7 @@ var WindowWatcher = { do_check_neq(item.name, "test_bug514327_outdated"); // Call the next test after the blocklist has finished up - do_timeout(0, "gNextTestPart()"); + do_timeout(0, gNextTestPart); }, QueryInterface: function(iid) { diff --git a/toolkit/mozapps/update/test/unit/head_update.js.in b/toolkit/mozapps/update/test/unit/head_update.js.in index 893be56d5ca..4e08c9478ae 100644 --- a/toolkit/mozapps/update/test/unit/head_update.js.in +++ b/toolkit/mozapps/update/test/unit/head_update.js.in @@ -603,7 +603,7 @@ xhr.prototype = { responseXML: null, responseText: null, send: function(body) { - do_timeout(0, "gXHRCallback()"); // Use a timeout so the XHR completes + do_timeout(0, gXHRCallback); // Use a timeout so the XHR completes }, _onprogress: null, set onprogress(val) { gXHR._onprogress = val; }, @@ -656,7 +656,7 @@ const updateCheckListener = { "update.statusText = " + request.statusText + ", " + "updateCount = " + updateCount + "\n"); // Use a timeout to allow the XHR to complete - do_timeout(0, "gCheckFunc()"); + do_timeout(0, gCheckFunc); }, onError: function(request, update) { @@ -667,7 +667,7 @@ const updateCheckListener = { "request.status = " + gStatusCode + ", " + "update.statusText = " + gStatusText + "\n"); // Use a timeout to allow the XHR to complete - do_timeout(0, "gCheckFunc()"); + do_timeout(0, gCheckFunc); }, QueryInterface: function(aIID) { diff --git a/toolkit/mozapps/update/test/unit/test_0020_general.js b/toolkit/mozapps/update/test/unit/test_0020_general.js index 3c61d9a7d2a..cc8fee30a56 100644 --- a/toolkit/mozapps/update/test/unit/test_0020_general.js +++ b/toolkit/mozapps/update/test/unit/test_0020_general.js @@ -52,7 +52,7 @@ function run_test() { overrideXHR(callHandleEvent); startAUS(); startUpdateChecker(); - do_timeout(0, "run_test_pt1()"); + do_timeout(0, run_test_pt1); } function end_test() { diff --git a/toolkit/mozapps/update/test/unit/test_0030_general.js b/toolkit/mozapps/update/test/unit/test_0030_general.js index 0878207cbfb..ebd2ee30989 100644 --- a/toolkit/mozapps/update/test/unit/test_0030_general.js +++ b/toolkit/mozapps/update/test/unit/test_0030_general.js @@ -52,7 +52,7 @@ function run_test() { startUpdateChecker(); // The HTTP server is only used for the mar file downloads which is slow start_httpserver(DIR_DATA); - do_timeout(0, "run_test_pt1()"); + do_timeout(0, run_test_pt1); } function end_test() { @@ -218,7 +218,7 @@ const downloadListener = { onStopRequest: function(request, context, status) { gStatusResult = status; // Use a timeout to allow the request to complete - do_timeout(0, "gCheckFunc()"); + do_timeout(0, gCheckFunc); }, QueryInterface: function(iid) { diff --git a/toolkit/mozapps/update/test/unit/test_0040_general.js b/toolkit/mozapps/update/test/unit/test_0040_general.js index 8cb858ce7d1..7d3f9fa1676 100644 --- a/toolkit/mozapps/update/test/unit/test_0040_general.js +++ b/toolkit/mozapps/update/test/unit/test_0040_general.js @@ -57,7 +57,7 @@ function run_test() { gAppInfo = AUS_Cc["@mozilla.org/xre/app-info;1"]. getService(AUS_Ci.nsIXULAppInfo). QueryInterface(AUS_Ci.nsIXULRuntime); - do_timeout(0, "run_test_pt1()"); + do_timeout(0, run_test_pt1); } function end_test() { diff --git a/toolkit/mozapps/update/test/unit/test_0050_general.js b/toolkit/mozapps/update/test/unit/test_0050_general.js index d3a3453ef89..491fa6b4c25 100644 --- a/toolkit/mozapps/update/test/unit/test_0050_general.js +++ b/toolkit/mozapps/update/test/unit/test_0050_general.js @@ -56,7 +56,7 @@ function run_test() { getPrefBranch().setCharPref(PREF_APP_UPDATE_URL_OVERRIDE, URL_HOST + "update.xml"); overrideXHR(callHandleEvent); - do_timeout(0, "run_test_pt1()"); + do_timeout(0, run_test_pt1); } function end_test() { diff --git a/toolkit/mozapps/update/test/unit/test_bug497578.js b/toolkit/mozapps/update/test/unit/test_bug497578.js index 144bb3b60d4..ac0a5651c51 100644 --- a/toolkit/mozapps/update/test/unit/test_bug497578.js +++ b/toolkit/mozapps/update/test/unit/test_bug497578.js @@ -72,7 +72,7 @@ function run_test() { createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1.0", "2.0"); setDefaultPrefs(); - do_timeout(0, "run_test_pt1()"); + do_timeout(0, run_test_pt1); } function end_test() { @@ -111,7 +111,7 @@ function run_test_pt1() { do_check_true(privBrowsing.autoStarted); // Use a timeout to give private browsing time to reset necko. - do_timeout(0, "run_test_pt2()"); + do_timeout(0, run_test_pt2); } function run_test_pt2() { dump("Testing: update count should equal 1\n"); diff --git a/toolkit/mozapps/update/test_timermanager/unit/test_0010_timermanager.js b/toolkit/mozapps/update/test_timermanager/unit/test_0010_timermanager.js index 69f0cc46987..563c371aebf 100644 --- a/toolkit/mozapps/update/test_timermanager/unit/test_0010_timermanager.js +++ b/toolkit/mozapps/update/test_timermanager/unit/test_0010_timermanager.js @@ -161,7 +161,7 @@ function end_test() { } function run_test1thru6() { - gNextFunc = "check_test1thru6()"; + gNextFunc = check_test1thru6; // bogus default interval gCompReg.registerFactory(TESTS[0].classID, TESTS[0].desc, TESTS[0].contractID, gTest1Factory); @@ -271,11 +271,11 @@ function check_test1thru6() { "registered\n"); do_check_eq(count, 0); - do_timeout(0, "run_test7()"); + do_timeout(0, run_test7()); } function run_test7() { - gNextFunc = "check_test7()"; + gNextFunc = check_test7; gPref.setIntPref(PREF_BRANCH_LAST_UPDATE_TIME + TESTS[6].timerID, 1); gCompReg.registerFactory(TESTS[6].classID, TESTS[6].desc, TESTS[6].contractID, gTest7Factory); @@ -386,7 +386,7 @@ var gTest6Factory = { var gTest7TimerCallback = { notify: function T7CB_notify(aTimer) { TESTS[6].notified = true; - do_timeout(0, "check_test7()"); + do_timeout(0, check_test7); }, QueryInterface: XPCOMUtils.generateQI([Ci.nsITimerCallback]) }; diff --git a/uriloader/exthandler/tests/unit/test_punycodeURIs.js b/uriloader/exthandler/tests/unit/test_punycodeURIs.js index 530407561f4..e78827659ac 100644 --- a/uriloader/exthandler/tests/unit/test_punycodeURIs.js +++ b/uriloader/exthandler/tests/unit/test_punycodeURIs.js @@ -58,7 +58,7 @@ function checkFile() { } else { // Wait a bit longer then try again - do_timeout(1000, "checkFile()"); + do_timeout(1000, checkFile); } } @@ -155,5 +155,5 @@ function run_test() { localHandler.launchWithURI(uri); do_test_pending(); - do_timeout(1000, "checkFile()"); + do_timeout(1000, checkFile); } From 272d6140098061291e4e9a9ebab24085454c1f79 Mon Sep 17 00:00:00 2001 From: Brendan Eich Date: Tue, 24 Nov 2009 15:42:03 -0800 Subject: [PATCH 37/45] Undo hackaround for bug 529837. --- js/src/jsinterp.cpp | 2 +- js/src/jsops.cpp | 2 +- js/src/jsscope.h | 9 +++++++++ js/src/jstracer.cpp | 2 +- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/js/src/jsinterp.cpp b/js/src/jsinterp.cpp index 58930262312..f8b8e322c1c 100644 --- a/js/src/jsinterp.cpp +++ b/js/src/jsinterp.cpp @@ -2585,7 +2585,7 @@ AssertValidPropertyCacheHit(JSContext *cx, JSScript *script, JSFrameRegs& regs, jsval v; JS_ASSERT(PCVAL_IS_OBJECT(entry->vword)); JS_ASSERT(entry->vword != PCVAL_NULL); - JS_ASSERT(OBJ_SCOPE(pobj)->branded() || OBJ_SCOPE(pobj)->hasMethodBarrier()); + JS_ASSERT(OBJ_SCOPE(pobj)->brandedOrHasMethodBarrier()); JS_ASSERT(SPROP_HAS_STUB_GETTER_OR_IS_METHOD(sprop)); JS_ASSERT(SPROP_HAS_VALID_SLOT(sprop, OBJ_SCOPE(pobj))); v = LOCKED_OBJ_GET_SLOT(pobj, sprop->slot); diff --git a/js/src/jsops.cpp b/js/src/jsops.cpp index a736b9de88d..6c49ef3759a 100644 --- a/js/src/jsops.cpp +++ b/js/src/jsops.cpp @@ -629,7 +629,7 @@ END_CASE(JSOP_PICK) TRACE_2(SetPropHit, entry, sprop); \ if (SPROP_HAS_STUB_SETTER(sprop) && \ (sprop)->slot != SPROP_INVALID_SLOT && \ - !OBJ_SCOPE(obj)->branded()) { \ + !OBJ_SCOPE(obj)->brandedOrHasMethodBarrier()) { \ /* Fast path for, e.g., plain Object instance properties. */ \ LOCKED_OBJ_SET_SLOT(obj, (sprop)->slot, *vp); \ } else { \ diff --git a/js/src/jsscope.h b/js/src/jsscope.h index a0103679eab..0988606a4ed 100644 --- a/js/src/jsscope.h +++ b/js/src/jsscope.h @@ -387,6 +387,15 @@ struct JSScope : public JSObjectMap bool hasMethodBarrier() { return flags & METHOD_BARRIER; } void setMethodBarrier() { flags |= METHOD_BARRIER; } + /* + * Test whether this scope may be branded due to method calls, which means + * any assignment to a function-valued property must regenerate shape; else + * test whether this scope has method properties, which require a method + * write barrier. + */ + bool + brandedOrHasMethodBarrier() { return flags & (BRANDED | METHOD_BARRIER); } + bool owned() { return object != NULL; } }; diff --git a/js/src/jstracer.cpp b/js/src/jstracer.cpp index 57931ca85d2..637976b58a5 100644 --- a/js/src/jstracer.cpp +++ b/js/src/jstracer.cpp @@ -11182,7 +11182,7 @@ TraceRecorder::setProp(jsval &l, JSPropCacheEntry* entry, JSScopeProperty* sprop * this, because functions have distinct trace-type from other values and * branded-ness is implied by the shape, which we've already guarded on. */ - if (scope->branded() && VALUE_IS_FUNCTION(cx, v) && entry->directHit()) { + if (scope->brandedOrHasMethodBarrier() && VALUE_IS_FUNCTION(cx, v) && entry->directHit()) { if (obj == globalObj) RETURN_STOP("can't trace function-valued property set in branded global scope"); From a8ec66401484e83b804c47542279bed2f1c250ff Mon Sep 17 00:00:00 2001 From: Jeff Walden Date: Tue, 24 Nov 2009 16:14:26 -0800 Subject: [PATCH 38/45] Bug 525819 - Followup to readd the removed functionality -- forgot about comm-central, won't be able to fix all its tests immediately so will make both functions and strings acceptable arguments to do_timeout, for the moment. r=bustage --HG-- extra : rebase_source : aa46e8bf88538c5ca520b0e5e196e3a9bbd3f7ec --- testing/xpcshell/head.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/testing/xpcshell/head.js b/testing/xpcshell/head.js index df89cbd5628..bfec7ee9de4 100644 --- a/testing/xpcshell/head.js +++ b/testing/xpcshell/head.js @@ -75,7 +75,9 @@ if ("@mozilla.org/toolkit/crash-reporter;1" in Components.classes) { function _TimerCallback(expr, timer) { - this._func = expr; + this._func = typeof expr === "function" + ? expr + : function() { eval(expr); }; // Keep timer alive until it fires _pendingCallbacks.push(timer); } From 104e2e13886247bf56fbe04e841c56247959758a Mon Sep 17 00:00:00 2001 From: Gavin Sharp Date: Mon, 23 Nov 2009 11:05:33 -0500 Subject: [PATCH 39/45] Bug 530533: Add pref to control whether addEngine prompts to "use immediately", r=rflint --- toolkit/components/search/nsSearchService.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/toolkit/components/search/nsSearchService.js b/toolkit/components/search/nsSearchService.js index 4b572af86ad..4bf221ffe1b 100644 --- a/toolkit/components/search/nsSearchService.js +++ b/toolkit/components/search/nsSearchService.js @@ -1219,7 +1219,10 @@ Engine.prototype = { var dialogMessage = stringBundle.formatStringFromName("addEngineConfirmation", [this._name, this._uri.host], 2); - var checkboxMessage = stringBundle.GetStringFromName("addEngineUseNowText"); + var checkboxMessage = null; + if (!getBoolPref(BROWSER_SEARCH_PREF + "noCurrentEngine", false)) + checkboxMessage = stringBundle.GetStringFromName("addEngineUseNowText"); + var addButtonLabel = stringBundle.GetStringFromName("addEngineAddButtonLabel"); From 0b8b6fc692183bd2be569793bfb5e9a9184f018c Mon Sep 17 00:00:00 2001 From: Jonas Sicking Date: Tue, 24 Nov 2009 17:53:17 -0800 Subject: [PATCH 40/45] Bug 530901. Fix a warning and align an error code with the spec. r=jst a=jst --- content/base/public/nsIDOMFileError.idl | 2 +- content/base/src/nsDOMFileReader.cpp | 21 ++++++++++----------- content/base/src/nsDOMFileReader.h | 11 +++++++++-- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/content/base/public/nsIDOMFileError.idl b/content/base/public/nsIDOMFileError.idl index 8f6c5dedd7e..21730ff5e92 100644 --- a/content/base/public/nsIDOMFileError.idl +++ b/content/base/public/nsIDOMFileError.idl @@ -44,7 +44,7 @@ interface nsIDOMFileError : nsISupports const unsigned short NOT_FOUND_ERR = 8; const unsigned short NOT_READABLE_ERR = 24; const unsigned short SECURITY_ERR = 18; - const unsigned short ABORT_ERR = 25; + const unsigned short ABORT_ERR = 20; const unsigned short ENCODING_ERR = 26; readonly attribute unsigned short code; diff --git a/content/base/src/nsDOMFileReader.cpp b/content/base/src/nsDOMFileReader.cpp index 4c866bc6172..0993b03826d 100644 --- a/content/base/src/nsDOMFileReader.cpp +++ b/content/base/src/nsDOMFileReader.cpp @@ -123,10 +123,6 @@ NS_INTERFACE_MAP_END_INHERITING(nsXHREventTarget) NS_IMPL_ADDREF_INHERITED(nsDOMFileReader, nsXHREventTarget) NS_IMPL_RELEASE_INHERITED(nsDOMFileReader, nsXHREventTarget) -static const PRUint32 FILE_AS_BINARY = 1; -static const PRUint32 FILE_AS_TEXT = 2; -static const PRUint32 FILE_AS_DATAURL = 3; - NS_IMETHODIMP nsDOMFileReader::GetOnloadend(nsIDOMEventListener** aOnloadend) { @@ -153,7 +149,7 @@ nsDOMFileReader::Notify(const char *aCharset, nsDetectionConfident aConf) nsDOMFileReader::nsDOMFileReader() : mFileData(nsnull), - mDataLen(0), mDataFormat(0), + mDataLen(0), mDataFormat(FILE_AS_BINARY), mReadyState(nsIDOMFileReader::EMPTY), mProgressEventWasDelayed(PR_FALSE), mTimerIsActive(PR_FALSE), @@ -454,7 +450,7 @@ nsDOMFileReader::OnStopRequest(nsIRequest *aRequest, return NS_OK; } - nsresult rv; + nsresult rv = NS_OK; switch (mDataFormat) { case FILE_AS_BINARY: break; //Already accumulated mResult @@ -464,17 +460,20 @@ nsDOMFileReader::OnStopRequest(nsIRequest *aRequest, case FILE_AS_DATAURL: rv = GetAsDataURL(mFile, mFileData, mDataLen, mResult); break; - default: - return NS_ERROR_FAILURE; } FreeFileData(); + if (NS_FAILED(rv)) { + DispatchError(rv); + return NS_OK; + } + //Dispatch load event to signify end of a successful load DispatchProgressEvent(NS_LITERAL_STRING(LOAD_STR)); DispatchProgressEvent(NS_LITERAL_STRING(LOADEND_STR)); - return rv; + return NS_OK; } // Helper methods @@ -482,8 +481,8 @@ nsDOMFileReader::OnStopRequest(nsIRequest *aRequest, nsresult nsDOMFileReader::ReadFileContent(nsIDOMFile* aFile, const nsAString &aCharset, - PRUint32 aDataFormat) -{ + eDataFormat aDataFormat) +{ NS_ENSURE_TRUE(aFile, NS_ERROR_NULL_POINTER); //Implicit abort to clear any other activity going on diff --git a/content/base/src/nsDOMFileReader.h b/content/base/src/nsDOMFileReader.h index af3999cc10b..42922d632ba 100644 --- a/content/base/src/nsDOMFileReader.h +++ b/content/base/src/nsDOMFileReader.h @@ -111,7 +111,13 @@ public: nsresult Init(); protected: - nsresult ReadFileContent(nsIDOMFile *aFile, const nsAString &aCharset, PRUint32 aDataFormat); + enum eDataFormat { + FILE_AS_BINARY, + FILE_AS_TEXT, + FILE_AS_DATAURL + }; + + nsresult ReadFileContent(nsIDOMFile *aFile, const nsAString &aCharset, eDataFormat aDataFormat); nsresult GetAsText(const nsAString &aCharset, const char *aFileData, PRUint32 aDataLen, nsAString &aResult); nsresult GetAsDataURL(nsIFile *aFile, const char *aFileData, PRUint32 aDataLen, nsAString &aResult); @@ -130,7 +136,8 @@ protected: nsCOMPtr mFile; nsString mCharset; PRUint32 mDataLen; - PRUint32 mDataFormat; + + eDataFormat mDataFormat; nsString mResult; PRUint16 mReadyState; From e1be3c32de52a4805b2de3ab29dc2aceca2b1b90 Mon Sep 17 00:00:00 2001 From: Brad Lassey Date: Tue, 24 Nov 2009 21:12:28 -0500 Subject: [PATCH 41/45] bug 530087 - improve xptcinvoke for linux on arm r=vlad a192=vlad --- .../xptcall/src/md/unix/xptcinvoke_arm.cpp | 87 +++---------------- 1 file changed, 13 insertions(+), 74 deletions(-) diff --git a/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_arm.cpp b/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_arm.cpp index 169115145fa..beb5deac344 100644 --- a/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_arm.cpp +++ b/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_arm.cpp @@ -60,65 +60,8 @@ // Remember that these 'words' are 32bit DWORDS -static PRUint32 -invoke_count_words(PRUint32 paramCount, nsXPTCVariant* s) -{ - PRUint32 result = 0; - for(PRUint32 i = 0; i < paramCount; i++, s++) - { - if(s->IsPtrData()) - { - result++; - continue; - } - switch(s->type) - { - case nsXPTType::T_I8 : - case nsXPTType::T_I16 : - case nsXPTType::T_I32 : - result++; - break; - case nsXPTType::T_I64 : - result+=VAR_STACK_SIZE_64; - break; - case nsXPTType::T_U8 : - case nsXPTType::T_U16 : - case nsXPTType::T_U32 : - result++; - break; - case nsXPTType::T_U64 : - result+=VAR_STACK_SIZE_64; - break; - case nsXPTType::T_FLOAT : - result++; - break; - case nsXPTType::T_DOUBLE : - result+=VAR_STACK_SIZE_64; - break; - case nsXPTType::T_BOOL : - case nsXPTType::T_CHAR : - case nsXPTType::T_WCHAR : - result++; - break; - default: - // all the others are plain pointer types - result++; - break; - } - } -#ifdef __ARM_EABI__ - /* Ensure stack is always aligned to doubleword boundary; we take 3 words - * off the stack to r1-r3 later, so it must always be on _odd_ word - * boundary after this */ - if (result % 2 == 0) - result++; -#endif - - return result; -} - -static void +static PRUint32* invoke_copy_to_stack(PRUint32* d, PRUint32 paramCount, nsXPTCVariant* s) { for(PRUint32 i = 0; i < paramCount; i++, d++, s++) @@ -155,6 +98,7 @@ invoke_copy_to_stack(PRUint32* d, PRUint32 paramCount, nsXPTCVariant* s) break; } } + return d; } extern "C" { @@ -163,7 +107,6 @@ extern "C" { PRUint32 Index; PRUint32 Count; nsXPTCVariant* params; - PRUint32 fn_count; PRUint32 fn_copy; }; } @@ -179,7 +122,6 @@ NS_InvokeByIndex(nsISupports* that, PRUint32 methodIndex, my_params.Count = paramCount; my_params.params = params; my_params.fn_copy = (PRUint32) &invoke_copy_to_stack; - my_params.fn_count = (PRUint32) &invoke_count_words; /* This is to call a given method of class that. * The parameters are in params, the number is in paramCount. @@ -207,22 +149,20 @@ NS_InvokeByIndex(nsISupports* that, PRUint32 methodIndex, */ __asm__ __volatile__( - "ldr r1, [%1, #12] \n\t" /* prepare to call invoke_count_words */ - "ldr ip, [%1, #16] \n\t" /* r0=paramCount, r1=params */ "ldr r0, [%1, #8] \n\t" - "mov lr, pc \n\t" /* call it... */ - "mov pc, ip \n\t" - "mov r4, r0, lsl #2 \n\t" /* This is the amount of bytes needed. */ + "mov r4, r0, lsl #3 \n\t" /* This is the amount of bytes needed. */ +#ifdef __ARM_EABI__ + "add r4, r4, #4 \n\t" +#endif "sub sp, sp, r4 \n\t" /* use stack space for the args... */ + "add r0, %1, #8 \n\t" + "ldmia r0, {r1, r2, ip} \n\t" "mov r0, sp \n\t" /* prepare a pointer an the stack */ - "ldr r1, [%1, #8] \n\t" /* =paramCount */ - "ldr r2, [%1, #12] \n\t" /* =params */ - "ldr ip, [%1, #20] \n\t" /* =invoke_copy_to_stack */ - "mov lr, pc \n\t" /* copy args to the stack like the */ - "mov pc, ip \n\t" /* compiler would. */ - "ldr r0, [%1] \n\t" /* =that */ + "blx ip \n\t" + "sub r4, r0, sp \n\t" + + "ldmia %1, {r0, r2} \n\t" "ldr r1, [r0, #0] \n\t" /* get that->vtable offset */ - "ldr r2, [%1, #4] \n\t" "mov r2, r2, lsl #2 \n\t" /* a vtable_entry(x)=8 + (4 bytes * x) */ #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */ "ldr ip, [r1, r2] \n\t" /* get method adress from vtable */ @@ -237,8 +177,7 @@ NS_InvokeByIndex(nsISupports* that, PRUint32 methodIndex, "addle sp, sp, r4 \n\t" /* and restore stack pointer */ "movle r4, #0 \n\t" /* a mark for restoring sp */ "ldr r0, [%1, #0] \n\t" /* get (self) */ - "mov lr, pc \n\t" /* call mathod */ - "mov pc, ip \n\t" + "blx ip \n\t" "add sp, sp, r4 \n\t" /* restore stack pointer */ "mov %0, r0 \n\t" /* the result... */ : "=r" (result) From 497f5c5724fb94da772c33453baf521d22519be1 Mon Sep 17 00:00:00 2001 From: Vivien Nicolas <21@vingtetun.org> Date: Tue, 24 Nov 2009 21:00:49 -0800 Subject: [PATCH 42/45] Bug 509732 - Don't do slideIn animation if the height of the notification is 0. r=dtownsend --- toolkit/content/tests/widgets/Makefile.in | 1 + .../content/tests/widgets/test_bug509732.xul | 54 +++++++++++++++++++ toolkit/content/widgets/notification.xml | 22 ++++++-- 3 files changed, 72 insertions(+), 5 deletions(-) create mode 100644 toolkit/content/tests/widgets/test_bug509732.xul diff --git a/toolkit/content/tests/widgets/Makefile.in b/toolkit/content/tests/widgets/Makefile.in index 4ffccd59b42..fc0f40d85b3 100644 --- a/toolkit/content/tests/widgets/Makefile.in +++ b/toolkit/content/tests/widgets/Makefile.in @@ -50,6 +50,7 @@ _TEST_FILES = test_bug360220.xul \ test_bug382990.xul \ test_bug457632.xul \ test_bug460942.xul \ + test_bug509732.xul \ test_button.xul \ test_closemenu_attribute.xul \ test_colorpicker_popup.xul \ diff --git a/toolkit/content/tests/widgets/test_bug509732.xul b/toolkit/content/tests/widgets/test_bug509732.xul new file mode 100644 index 00000000000..960c9cbb480 --- /dev/null +++ b/toolkit/content/tests/widgets/test_bug509732.xul @@ -0,0 +1,54 @@ + + + + + + + + + diff --git a/toolkit/content/widgets/notification.xml b/toolkit/content/widgets/notification.xml index 49d0b2ed538..98c32286131 100644 --- a/toolkit/content/widgets/notification.xml +++ b/toolkit/content/widgets/notification.xml @@ -64,7 +64,7 @@ = 0; n--) { - if (aValue == notifications[n].value) + if (aValue == notifications[n].getAttribute("value")) return notifications[n]; } return null; @@ -220,6 +220,7 @@ } var height = aNotification.boxObject.height; + var skipAnimation = (height == 0); var change = height / this.slideSteps; var margin; if (aSlideIn) { @@ -230,6 +231,12 @@ this.currentNotification = aNotification; aNotification.style.removeProperty("position"); aNotification.style.removeProperty("top"); + + if (skipAnimation) { + this._setBlockingState(this.currentNotification); + return; + } + aNotification.style.marginTop = -height + "px"; aNotification.style.opacity = 0; margin = -height; @@ -239,10 +246,15 @@ this._closedNotification = aNotification; var notifications = this.allNotifications; var idx = notifications.length - 1; - if (idx >= 0) - this.currentNotification = notifications[idx]; - else - this.currentNotification = null; + this.currentNotification = (idx >= 0) ? notifications[idx] : null; + + if (skipAnimation) { + this.removeChild(this._closedNotification); + this._closedNotification = null; + this._setBlockingState(this.currentNotification); + return; + } + var style = window.getComputedStyle(aNotification, null); margin = style.getPropertyCSSValue("margin-top"). getFloatValue(CSSPrimitiveValue.CSS_PX); From 373857b904d7d44e295319135f1cf74e24243100 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Wed, 25 Nov 2009 00:35:55 -0500 Subject: [PATCH 43/45] Bug 528134. Hand out the style context with the rulenode. r=dbaron --- layout/inspector/src/inDOMUtils.cpp | 9 +++++++-- layout/inspector/src/inDOMUtils.h | 3 +++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/layout/inspector/src/inDOMUtils.cpp b/layout/inspector/src/inDOMUtils.cpp index bee6f8226b8..abfcbd1b50a 100644 --- a/layout/inspector/src/inDOMUtils.cpp +++ b/layout/inspector/src/inDOMUtils.cpp @@ -164,7 +164,8 @@ inDOMUtils::GetCSSStyleRules(nsIDOMElement *aElement, nsRuleNode* ruleNode = nsnull; nsCOMPtr content = do_QueryInterface(aElement); - GetRuleNodeForContent(content, &ruleNode); + nsRefPtr styleContext; + GetRuleNodeForContent(content, getter_AddRefs(styleContext), &ruleNode); if (!ruleNode) { // This can fail for content nodes that are not in the document or // if the document they're in doesn't have a presshell. Bail out. @@ -271,9 +272,12 @@ inDOMUtils::GetContentState(nsIDOMElement *aElement, PRInt32* aState) } /* static */ nsresult -inDOMUtils::GetRuleNodeForContent(nsIContent* aContent, nsRuleNode** aRuleNode) +inDOMUtils::GetRuleNodeForContent(nsIContent* aContent, + nsStyleContext** aStyleContext, + nsRuleNode** aRuleNode) { *aRuleNode = nsnull; + *aStyleContext = nsnull; nsIDocument* doc = aContent->GetDocument(); NS_ENSURE_TRUE(doc, NS_ERROR_UNEXPECTED); @@ -284,5 +288,6 @@ inDOMUtils::GetRuleNodeForContent(nsIContent* aContent, nsRuleNode** aRuleNode) nsRefPtr sContext = nsComputedDOMStyle::GetStyleContextForContent(aContent, nsnull, presShell); *aRuleNode = sContext->GetRuleNode(); + sContext.forget(aStyleContext); return NS_OK; } diff --git a/layout/inspector/src/inDOMUtils.h b/layout/inspector/src/inDOMUtils.h index de108337c72..27d77949d92 100644 --- a/layout/inspector/src/inDOMUtils.h +++ b/layout/inspector/src/inDOMUtils.h @@ -44,6 +44,7 @@ #include "nsISupportsArray.h" class nsRuleNode; +class nsStyleContext; class inDOMUtils : public inIDOMUtils { @@ -55,7 +56,9 @@ public: virtual ~inDOMUtils(); private: + // aStyleContext must be released by the caller once he's done with aRuleNode. static nsresult GetRuleNodeForContent(nsIContent* aContent, + nsStyleContext** aStyleContext, nsRuleNode** aRuleNode); }; From 4bb23b337325421d5ba261a41a1eb27736c7a06d Mon Sep 17 00:00:00 2001 From: Brad Lassey Date: Wed, 25 Nov 2009 01:45:30 -0500 Subject: [PATCH 44/45] backing out bug 530087 due to talos segfault on maemo --- .../xptcall/src/md/unix/xptcinvoke_arm.cpp | 87 ++++++++++++++++--- 1 file changed, 74 insertions(+), 13 deletions(-) diff --git a/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_arm.cpp b/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_arm.cpp index beb5deac344..169115145fa 100644 --- a/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_arm.cpp +++ b/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_arm.cpp @@ -60,8 +60,65 @@ // Remember that these 'words' are 32bit DWORDS +static PRUint32 +invoke_count_words(PRUint32 paramCount, nsXPTCVariant* s) +{ + PRUint32 result = 0; + for(PRUint32 i = 0; i < paramCount; i++, s++) + { + if(s->IsPtrData()) + { + result++; + continue; + } + switch(s->type) + { + case nsXPTType::T_I8 : + case nsXPTType::T_I16 : + case nsXPTType::T_I32 : + result++; + break; + case nsXPTType::T_I64 : + result+=VAR_STACK_SIZE_64; + break; + case nsXPTType::T_U8 : + case nsXPTType::T_U16 : + case nsXPTType::T_U32 : + result++; + break; + case nsXPTType::T_U64 : + result+=VAR_STACK_SIZE_64; + break; + case nsXPTType::T_FLOAT : + result++; + break; + case nsXPTType::T_DOUBLE : + result+=VAR_STACK_SIZE_64; + break; + case nsXPTType::T_BOOL : + case nsXPTType::T_CHAR : + case nsXPTType::T_WCHAR : + result++; + break; + default: + // all the others are plain pointer types + result++; + break; + } + } -static PRUint32* +#ifdef __ARM_EABI__ + /* Ensure stack is always aligned to doubleword boundary; we take 3 words + * off the stack to r1-r3 later, so it must always be on _odd_ word + * boundary after this */ + if (result % 2 == 0) + result++; +#endif + + return result; +} + +static void invoke_copy_to_stack(PRUint32* d, PRUint32 paramCount, nsXPTCVariant* s) { for(PRUint32 i = 0; i < paramCount; i++, d++, s++) @@ -98,7 +155,6 @@ invoke_copy_to_stack(PRUint32* d, PRUint32 paramCount, nsXPTCVariant* s) break; } } - return d; } extern "C" { @@ -107,6 +163,7 @@ extern "C" { PRUint32 Index; PRUint32 Count; nsXPTCVariant* params; + PRUint32 fn_count; PRUint32 fn_copy; }; } @@ -122,6 +179,7 @@ NS_InvokeByIndex(nsISupports* that, PRUint32 methodIndex, my_params.Count = paramCount; my_params.params = params; my_params.fn_copy = (PRUint32) &invoke_copy_to_stack; + my_params.fn_count = (PRUint32) &invoke_count_words; /* This is to call a given method of class that. * The parameters are in params, the number is in paramCount. @@ -149,20 +207,22 @@ NS_InvokeByIndex(nsISupports* that, PRUint32 methodIndex, */ __asm__ __volatile__( + "ldr r1, [%1, #12] \n\t" /* prepare to call invoke_count_words */ + "ldr ip, [%1, #16] \n\t" /* r0=paramCount, r1=params */ "ldr r0, [%1, #8] \n\t" - "mov r4, r0, lsl #3 \n\t" /* This is the amount of bytes needed. */ -#ifdef __ARM_EABI__ - "add r4, r4, #4 \n\t" -#endif + "mov lr, pc \n\t" /* call it... */ + "mov pc, ip \n\t" + "mov r4, r0, lsl #2 \n\t" /* This is the amount of bytes needed. */ "sub sp, sp, r4 \n\t" /* use stack space for the args... */ - "add r0, %1, #8 \n\t" - "ldmia r0, {r1, r2, ip} \n\t" "mov r0, sp \n\t" /* prepare a pointer an the stack */ - "blx ip \n\t" - "sub r4, r0, sp \n\t" - - "ldmia %1, {r0, r2} \n\t" + "ldr r1, [%1, #8] \n\t" /* =paramCount */ + "ldr r2, [%1, #12] \n\t" /* =params */ + "ldr ip, [%1, #20] \n\t" /* =invoke_copy_to_stack */ + "mov lr, pc \n\t" /* copy args to the stack like the */ + "mov pc, ip \n\t" /* compiler would. */ + "ldr r0, [%1] \n\t" /* =that */ "ldr r1, [r0, #0] \n\t" /* get that->vtable offset */ + "ldr r2, [%1, #4] \n\t" "mov r2, r2, lsl #2 \n\t" /* a vtable_entry(x)=8 + (4 bytes * x) */ #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */ "ldr ip, [r1, r2] \n\t" /* get method adress from vtable */ @@ -177,7 +237,8 @@ NS_InvokeByIndex(nsISupports* that, PRUint32 methodIndex, "addle sp, sp, r4 \n\t" /* and restore stack pointer */ "movle r4, #0 \n\t" /* a mark for restoring sp */ "ldr r0, [%1, #0] \n\t" /* get (self) */ - "blx ip \n\t" + "mov lr, pc \n\t" /* call mathod */ + "mov pc, ip \n\t" "add sp, sp, r4 \n\t" /* restore stack pointer */ "mov %0, r0 \n\t" /* the result... */ : "=r" (result) From 5d79872b6ae5eb630da21cf31398ae2f63cfb680 Mon Sep 17 00:00:00 2001 From: Josh Aas Date: Wed, 25 Nov 2009 02:40:46 -0500 Subject: [PATCH 45/45] Fix a bug that prevents NPAPI plugins from retrieving cookies. b=526462 r=roc --- modules/plugin/base/src/nsNPAPIPlugin.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/plugin/base/src/nsNPAPIPlugin.cpp b/modules/plugin/base/src/nsNPAPIPlugin.cpp index 08d124e6016..6f0eaa8a0fa 100644 --- a/modules/plugin/base/src/nsNPAPIPlugin.cpp +++ b/modules/plugin/base/src/nsNPAPIPlugin.cpp @@ -2432,9 +2432,9 @@ _getvalueforurl(NPP instance, NPNURLVariable variable, const char *url, } nsXPIDLCString cookieStr; - if (NS_FAILED(cookieService->GetCookieString(uri, nsnull, - getter_Copies(cookieStr))) || - !cookieStr) { + nsresult cookieReturn = cookieService->GetCookieString(uri, nsnull, + getter_Copies(cookieStr)); + if (NS_FAILED(cookieReturn) || !cookieStr) { return NPERR_GENERIC_ERROR; }