mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Merge mozilla-central and inbound
This commit is contained in:
commit
e74d320ed1
@ -25,8 +25,8 @@ case "$target" in
|
||||
*-mingw*)
|
||||
if test -z "$CC"; then CC=cl; fi
|
||||
if test -z "$CXX"; then CXX=cl; fi
|
||||
if test -z "$CPP"; then CPP="cl -E -nologo"; fi
|
||||
if test -z "$CXXCPP"; then CXXCPP="cl -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
|
||||
if test -z "$CPP"; then CPP="$CC -E -nologo"; fi
|
||||
if test -z "$CXXCPP"; then CXXCPP="$CXX -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
|
||||
if test -z "$LD"; then LD=link; fi
|
||||
if test -z "$AS"; then
|
||||
case "${target_cpu}" in
|
||||
|
@ -183,7 +183,6 @@ Link::SetHost(const nsAString &aHost)
|
||||
|
||||
(void)uri->SetHostPort(NS_ConvertUTF16toUTF8(aHost));
|
||||
SetHrefAttribute(uri);
|
||||
return;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -64,6 +64,7 @@ skip-if = (buildapp == 'b2g' && toolkit != 'gonk') #Bug 931116, b2g desktop spec
|
||||
[test_url.html]
|
||||
[test_url_data.html]
|
||||
[test_url_empty_port.html]
|
||||
[test_url_malformedHost.html]
|
||||
[test_urlExceptions.html]
|
||||
[test_urlSearchParams.html]
|
||||
[test_urlutils_stringify.html]
|
||||
|
48
dom/base/test/test_url_malformedHost.html
Normal file
48
dom/base/test/test_url_malformedHost.html
Normal file
@ -0,0 +1,48 @@
|
||||
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1020041
|
||||
-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test for Bug 1020041</title>
|
||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1020041">Mozilla Bug 1020041</a>
|
||||
<p id="display"></p>
|
||||
<div id="content" style="display: none">
|
||||
<iframe name="x" id="x"></iframe>
|
||||
<iframe name="y" id="y"></iframe>
|
||||
</div>
|
||||
<pre id="test">
|
||||
</pre>
|
||||
<a id="link" href="http://www.example.com:8080">foobar</a>
|
||||
<area id="area" href="http://www.example.com:8080" />
|
||||
<script type="application/javascript">
|
||||
|
||||
var tests = [
|
||||
{ host: '?', expected: 'www.example.com' },
|
||||
{ host: 'what?' , expected: 'what' },
|
||||
{ host: 'so what' , expected: 'www.example.com' },
|
||||
{ host: 'aa#bb' , expected: 'aa' },
|
||||
{ host: 'a/b' , expected: 'a' },
|
||||
{ host: 'a\\b', expected: 'a' },
|
||||
{ host: '[2001::1]#bla:10', expected: '[2001::1]'}
|
||||
];
|
||||
|
||||
for (var i = 0; i < tests.length; ++i) {
|
||||
var url = new URL('http://www.example.com');
|
||||
url.host = tests[i].host;
|
||||
is (url.host, tests[i].expected, "URL.host is: " + url.host);
|
||||
|
||||
url = new URL('http://www.example.com');
|
||||
url.hostname = tests[i].host;
|
||||
is (url.hostname, tests[i].expected, "URL.hostname is: " + url.host);
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
29
js/src/jit-test/tests/latin1/date.js
Normal file
29
js/src/jit-test/tests/latin1/date.js
Normal file
@ -0,0 +1,29 @@
|
||||
function test(s) {
|
||||
var lat1 = toLatin1(s);
|
||||
|
||||
var twoByte = "\u1200" + lat1;
|
||||
twoByte.indexOf("X"); // Flatten.
|
||||
twoByte = twoByte.substr(1);
|
||||
|
||||
assertEq(isLatin1(lat1), true);
|
||||
assertEq(isLatin1(twoByte), false);
|
||||
|
||||
assertEq(Date.parse(lat1), Date.parse(twoByte));
|
||||
}
|
||||
|
||||
// ISO format
|
||||
test("2014-06-06");
|
||||
test("2014-06-06T08:30+01:00");
|
||||
test("T11:59Z");
|
||||
|
||||
// Non-ISO format
|
||||
test("06 Jun 2014, 17:20:36");
|
||||
test("6 Jun 2014");
|
||||
test("Wed Nov 05 21:49:11 GMT-0800 1997");
|
||||
test("Jan 30 2014 2:30 PM");
|
||||
|
||||
// Invalid
|
||||
test("06 Aaa 2014, 17:20:36");
|
||||
test("6 Jun 10");
|
||||
test("2014-13-06");
|
||||
test("2014-06-06T08:30+99:00");
|
@ -70,10 +70,8 @@ CodeGeneratorShared::CodeGeneratorShared(MIRGenerator *gen, LIRGraph *graph, Mac
|
||||
// (like x64) which require the stack to be aligned.
|
||||
if (StackKeptAligned || gen->needsInitialStackAlignment()) {
|
||||
unsigned alignmentAtCall = AlignmentAtAsmJSPrologue + frameDepth_;
|
||||
if (unsigned rem = alignmentAtCall % StackAlignment) {
|
||||
frameInitialAdjustment_ = StackAlignment - rem;
|
||||
frameDepth_ += frameInitialAdjustment_;
|
||||
}
|
||||
if (unsigned rem = alignmentAtCall % StackAlignment)
|
||||
frameDepth_ += StackAlignment - rem;
|
||||
}
|
||||
|
||||
// FrameSizeClass is only used for bailing, which cannot happen in
|
||||
|
@ -50,6 +50,8 @@ using namespace js::types;
|
||||
using mozilla::ArrayLength;
|
||||
using mozilla::IsFinite;
|
||||
using mozilla::IsNaN;
|
||||
|
||||
using JS::AutoCheckCannotGC;
|
||||
using JS::GenericNaN;
|
||||
|
||||
/*
|
||||
@ -547,33 +549,20 @@ static const int ttb[] = {
|
||||
10000 + 8 * 60, 10000 + 7 * 60 /* PST/PDT */
|
||||
};
|
||||
|
||||
/* helper for date_parse */
|
||||
template <typename CharT>
|
||||
static bool
|
||||
date_regionMatches(const char* s1, int s1off, const jschar* s2, int s2off,
|
||||
int count, int ignoreCase)
|
||||
RegionMatches(const char *s1, int s1off, const CharT *s2, int s2off, int count)
|
||||
{
|
||||
bool result = false;
|
||||
/* return true if matches, otherwise, false */
|
||||
|
||||
while (count > 0 && s1[s1off] && s2[s2off]) {
|
||||
if (ignoreCase) {
|
||||
if (unicode::ToLowerCase(s1[s1off]) != unicode::ToLowerCase(s2[s2off]))
|
||||
break;
|
||||
} else {
|
||||
if ((jschar)s1[s1off] != s2[s2off]) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (unicode::ToLowerCase(s1[s1off]) != unicode::ToLowerCase(s2[s2off]))
|
||||
break;
|
||||
|
||||
s1off++;
|
||||
s2off++;
|
||||
count--;
|
||||
}
|
||||
|
||||
if (count == 0) {
|
||||
result = true;
|
||||
}
|
||||
|
||||
return result;
|
||||
return count == 0;
|
||||
}
|
||||
|
||||
/* find UTC time from given date... no 1900 correction! */
|
||||
@ -649,13 +638,13 @@ date_UTC(JSContext *cx, unsigned argc, Value *vp)
|
||||
* Succeed if any digits are converted. Advance *i only
|
||||
* as digits are consumed.
|
||||
*/
|
||||
template <typename CharT>
|
||||
static bool
|
||||
digits(size_t *result, const jschar *s, size_t *i, size_t limit)
|
||||
ParseDigits(size_t *result, const CharT *s, size_t *i, size_t limit)
|
||||
{
|
||||
size_t init = *i;
|
||||
*result = 0;
|
||||
while (*i < limit &&
|
||||
('0' <= s[*i] && s[*i] <= '9')) {
|
||||
while (*i < limit && ('0' <= s[*i] && s[*i] <= '9')) {
|
||||
*result *= 10;
|
||||
*result += (s[*i] - '0');
|
||||
++(*i);
|
||||
@ -671,14 +660,14 @@ digits(size_t *result, const jschar *s, size_t *i, size_t limit)
|
||||
* Succeed if any digits are converted. Advance *i only
|
||||
* as digits are consumed.
|
||||
*/
|
||||
template <typename CharT>
|
||||
static bool
|
||||
fractional(double *result, const jschar *s, size_t *i, size_t limit)
|
||||
ParseFractional(double *result, const CharT *s, size_t *i, size_t limit)
|
||||
{
|
||||
double factor = 0.1;
|
||||
size_t init = *i;
|
||||
*result = 0.0;
|
||||
while (*i < limit &&
|
||||
('0' <= s[*i] && s[*i] <= '9')) {
|
||||
while (*i < limit && ('0' <= s[*i] && s[*i] <= '9')) {
|
||||
*result += (s[*i] - '0') * factor;
|
||||
factor *= 0.1;
|
||||
++(*i);
|
||||
@ -693,12 +682,13 @@ fractional(double *result, const jschar *s, size_t *i, size_t limit)
|
||||
* Succeed if exactly n digits are converted. Advance *i only
|
||||
* on success.
|
||||
*/
|
||||
template <typename CharT>
|
||||
static bool
|
||||
ndigits(size_t n, size_t *result, const jschar *s, size_t* i, size_t limit)
|
||||
ParseDigitsN(size_t n, size_t *result, const CharT *s, size_t *i, size_t limit)
|
||||
{
|
||||
size_t init = *i;
|
||||
|
||||
if (digits(result, s, i, Min(limit, init+n)))
|
||||
if (ParseDigits(result, s, i, Min(limit, init + n)))
|
||||
return (*i - init) == n;
|
||||
|
||||
*i = init;
|
||||
@ -768,14 +758,10 @@ DaysInMonth(int year, int month)
|
||||
* s = one or more digits representing a decimal fraction of a second
|
||||
* TZD = time zone designator (Z or +hh:mm or -hh:mm or missing for local)
|
||||
*/
|
||||
|
||||
template <typename CharT>
|
||||
static bool
|
||||
date_parseISOString(JSLinearString *str, double *result, DateTimeInfo *dtInfo)
|
||||
ParseISODate(const CharT *s, size_t length, double *result, DateTimeInfo *dtInfo)
|
||||
{
|
||||
double msec;
|
||||
|
||||
const jschar *s;
|
||||
size_t limit;
|
||||
size_t i = 0;
|
||||
int tzMul = 1;
|
||||
int dateMul = 1;
|
||||
@ -790,30 +776,19 @@ date_parseISOString(JSLinearString *str, double *result, DateTimeInfo *dtInfo)
|
||||
size_t tzHour = 0;
|
||||
size_t tzMin = 0;
|
||||
|
||||
#define PEEK(ch) (i < limit && s[i] == ch)
|
||||
#define PEEK(ch) (i < length && s[i] == ch)
|
||||
|
||||
#define NEED(ch) \
|
||||
JS_BEGIN_MACRO \
|
||||
if (i >= limit || s[i] != ch) { goto syntax; } else { ++i; } \
|
||||
JS_END_MACRO
|
||||
#define NEED(ch) \
|
||||
if (i >= length || s[i] != ch) { return false; } else { ++i; }
|
||||
|
||||
#define DONE_DATE_UNLESS(ch) \
|
||||
JS_BEGIN_MACRO \
|
||||
if (i >= limit || s[i] != ch) { goto done_date; } else { ++i; } \
|
||||
JS_END_MACRO
|
||||
#define DONE_DATE_UNLESS(ch) \
|
||||
if (i >= length || s[i] != ch) { goto done_date; } else { ++i; }
|
||||
|
||||
#define DONE_UNLESS(ch) \
|
||||
JS_BEGIN_MACRO \
|
||||
if (i >= limit || s[i] != ch) { goto done; } else { ++i; } \
|
||||
JS_END_MACRO
|
||||
#define DONE_UNLESS(ch) \
|
||||
if (i >= length || s[i] != ch) { goto done; } else { ++i; }
|
||||
|
||||
#define NEED_NDIGITS(n, field) \
|
||||
JS_BEGIN_MACRO \
|
||||
if (!ndigits(n, &field, s, &i, limit)) { goto syntax; } \
|
||||
JS_END_MACRO
|
||||
|
||||
s = str->chars();
|
||||
limit = str->length();
|
||||
#define NEED_NDIGITS(n, field) \
|
||||
if (!ParseDigitsN(n, &field, s, &i, length)) { return false; }
|
||||
|
||||
if (PEEK('+') || PEEK('-')) {
|
||||
if (PEEK('-'))
|
||||
@ -839,8 +814,8 @@ date_parseISOString(JSLinearString *str, double *result, DateTimeInfo *dtInfo)
|
||||
NEED_NDIGITS(2, sec);
|
||||
if (PEEK('.')) {
|
||||
++i;
|
||||
if (!fractional(&frac, s, &i, limit))
|
||||
goto syntax;
|
||||
if (!ParseFractional(&frac, s, &i, length))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -856,7 +831,7 @@ date_parseISOString(JSLinearString *str, double *result, DateTimeInfo *dtInfo)
|
||||
* allow "-0700" as a time zone offset, not just "-07:00".
|
||||
*/
|
||||
if (PEEK(':'))
|
||||
++i;
|
||||
++i;
|
||||
NEED_NDIGITS(2, tzMin);
|
||||
} else {
|
||||
isLocalTime = true;
|
||||
@ -872,149 +847,143 @@ date_parseISOString(JSLinearString *str, double *result, DateTimeInfo *dtInfo)
|
||||
|| sec > 59
|
||||
|| tzHour > 23
|
||||
|| tzMin > 59)
|
||||
goto syntax;
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (i != limit)
|
||||
goto syntax;
|
||||
if (i != length)
|
||||
return false;
|
||||
|
||||
month -= 1; /* convert month to 0-based */
|
||||
|
||||
msec = date_msecFromDate(dateMul * (double)year, month, day,
|
||||
hour, min, sec,
|
||||
frac * 1000.0);;
|
||||
double msec = date_msecFromDate(dateMul * double(year), month, day,
|
||||
hour, min, sec, frac * 1000.0);
|
||||
|
||||
if (isLocalTime) {
|
||||
if (isLocalTime)
|
||||
msec = UTC(msec, dtInfo);
|
||||
} else {
|
||||
msec -= ((tzMul) * ((tzHour * msPerHour)
|
||||
+ (tzMin * msPerMinute)));
|
||||
}
|
||||
else
|
||||
msec -= tzMul * (tzHour * msPerHour + tzMin * msPerMinute);
|
||||
|
||||
if (msec < -8.64e15 || msec > 8.64e15)
|
||||
goto syntax;
|
||||
return false;
|
||||
|
||||
*result = msec;
|
||||
|
||||
return true;
|
||||
|
||||
syntax:
|
||||
/* syntax error */
|
||||
*result = 0;
|
||||
return false;
|
||||
|
||||
#undef PEEK
|
||||
#undef NEED
|
||||
#undef DONE_UNLESS
|
||||
#undef NEED_NDIGITS
|
||||
}
|
||||
|
||||
template <typename CharT>
|
||||
static bool
|
||||
date_parseString(JSLinearString *str, double *result, DateTimeInfo *dtInfo)
|
||||
ParseDate(const CharT *s, size_t length, double *result, DateTimeInfo *dtInfo)
|
||||
{
|
||||
double msec;
|
||||
if (ParseISODate(s, length, result, dtInfo))
|
||||
return true;
|
||||
|
||||
if (length == 0)
|
||||
return false;
|
||||
|
||||
const jschar *s;
|
||||
size_t limit;
|
||||
size_t i = 0;
|
||||
int year = -1;
|
||||
int mon = -1;
|
||||
int mday = -1;
|
||||
int hour = -1;
|
||||
int min = -1;
|
||||
int sec = -1;
|
||||
int c = -1;
|
||||
int n = -1;
|
||||
int tzoffset = -1;
|
||||
int tzOffset = -1;
|
||||
|
||||
int prevc = 0;
|
||||
bool seenplusminus = false;
|
||||
int temp;
|
||||
bool seenmonthname = false;
|
||||
|
||||
if (date_parseISOString(str, result, dtInfo))
|
||||
return true;
|
||||
bool seenPlusMinus = false;
|
||||
bool seenMonthName = false;
|
||||
|
||||
s = str->chars();
|
||||
limit = str->length();
|
||||
if (limit == 0)
|
||||
goto syntax;
|
||||
while (i < limit) {
|
||||
c = s[i];
|
||||
size_t i = 0;
|
||||
while (i < length) {
|
||||
int c = s[i];
|
||||
i++;
|
||||
if (c <= ' ' || c == ',' || c == '-') {
|
||||
if (c == '-' && '0' <= s[i] && s[i] <= '9') {
|
||||
prevc = c;
|
||||
}
|
||||
if (c == '-' && '0' <= s[i] && s[i] <= '9')
|
||||
prevc = c;
|
||||
continue;
|
||||
}
|
||||
if (c == '(') { /* comments) */
|
||||
int depth = 1;
|
||||
while (i < limit) {
|
||||
while (i < length) {
|
||||
c = s[i];
|
||||
i++;
|
||||
if (c == '(') depth++;
|
||||
else if (c == ')')
|
||||
if (c == '(') {
|
||||
depth++;
|
||||
} else if (c == ')') {
|
||||
if (--depth <= 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if ('0' <= c && c <= '9') {
|
||||
n = c - '0';
|
||||
while (i < limit && '0' <= (c = s[i]) && c <= '9') {
|
||||
int n = c - '0';
|
||||
while (i < length && '0' <= (c = s[i]) && c <= '9') {
|
||||
n = n * 10 + c - '0';
|
||||
i++;
|
||||
}
|
||||
|
||||
/* allow TZA before the year, so
|
||||
* 'Wed Nov 05 21:49:11 GMT-0800 1997'
|
||||
* works */
|
||||
|
||||
/* uses of seenplusminus allow : in TZA, so Java
|
||||
* no-timezone style of GMT+4:30 works
|
||||
/*
|
||||
* Allow TZA before the year, so 'Wed Nov 05 21:49:11 GMT-0800 1997'
|
||||
* works.
|
||||
*
|
||||
* Uses of seenPlusMinus allow ':' in TZA, so Java no-timezone style
|
||||
* of GMT+4:30 works.
|
||||
*/
|
||||
|
||||
if ((prevc == '+' || prevc == '-')/* && year>=0 */) {
|
||||
/* make ':' case below change tzoffset */
|
||||
seenplusminus = true;
|
||||
/* Make ':' case below change tzOffset. */
|
||||
seenPlusMinus = true;
|
||||
|
||||
/* offset */
|
||||
if (n < 24)
|
||||
n = n * 60; /* EG. "GMT-3" */
|
||||
else
|
||||
n = n % 100 + n / 100 * 60; /* eg "GMT-0430" */
|
||||
|
||||
if (prevc == '+') /* plus means east of GMT */
|
||||
n = -n;
|
||||
if (tzoffset != 0 && tzoffset != -1)
|
||||
goto syntax;
|
||||
tzoffset = n;
|
||||
|
||||
if (tzOffset != 0 && tzOffset != -1)
|
||||
return false;
|
||||
|
||||
tzOffset = n;
|
||||
} else if (prevc == '/' && mon >= 0 && mday >= 0 && year < 0) {
|
||||
if (c <= ' ' || c == ',' || c == '/' || i >= limit)
|
||||
if (c <= ' ' || c == ',' || c == '/' || i >= length)
|
||||
year = n;
|
||||
else
|
||||
goto syntax;
|
||||
return false;
|
||||
} else if (c == ':') {
|
||||
if (hour < 0)
|
||||
hour = /*byte*/ n;
|
||||
else if (min < 0)
|
||||
min = /*byte*/ n;
|
||||
else
|
||||
goto syntax;
|
||||
return false;
|
||||
} else if (c == '/') {
|
||||
/* until it is determined that mon is the actual
|
||||
month, keep it as 1-based rather than 0-based */
|
||||
/*
|
||||
* Until it is determined that mon is the actual month, keep
|
||||
* it as 1-based rather than 0-based.
|
||||
*/
|
||||
if (mon < 0)
|
||||
mon = /*byte*/ n;
|
||||
else if (mday < 0)
|
||||
mday = /*byte*/ n;
|
||||
else
|
||||
goto syntax;
|
||||
} else if (i < limit && c != ',' && c > ' ' && c != '-' && c != '(') {
|
||||
goto syntax;
|
||||
} else if (seenplusminus && n < 60) { /* handle GMT-3:30 */
|
||||
if (tzoffset < 0)
|
||||
tzoffset -= n;
|
||||
return false;
|
||||
} else if (i < length && c != ',' && c > ' ' && c != '-' && c != '(') {
|
||||
return false;
|
||||
} else if (seenPlusMinus && n < 60) { /* handle GMT-3:30 */
|
||||
if (tzOffset < 0)
|
||||
tzOffset -= n;
|
||||
else
|
||||
tzoffset += n;
|
||||
tzOffset += n;
|
||||
} else if (hour >= 0 && min < 0) {
|
||||
min = /*byte*/ n;
|
||||
} else if (prevc == ':' && min >= 0 && sec < 0) {
|
||||
@ -1026,7 +995,7 @@ date_parseString(JSLinearString *str, double *result, DateTimeInfo *dtInfo)
|
||||
} else if (mon >= 0 && mday >= 0 && year < 0) {
|
||||
year = n;
|
||||
} else {
|
||||
goto syntax;
|
||||
return false;
|
||||
}
|
||||
prevc = 0;
|
||||
} else if (c == '/' || c == ':' || c == '+' || c == '-') {
|
||||
@ -1034,16 +1003,18 @@ date_parseString(JSLinearString *str, double *result, DateTimeInfo *dtInfo)
|
||||
} else {
|
||||
size_t st = i - 1;
|
||||
int k;
|
||||
while (i < limit) {
|
||||
while (i < length) {
|
||||
c = s[i];
|
||||
if (!(('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z')))
|
||||
break;
|
||||
i++;
|
||||
}
|
||||
|
||||
if (i <= st + 1)
|
||||
goto syntax;
|
||||
for (k = ArrayLength(wtb); --k >= 0;)
|
||||
if (date_regionMatches(wtb[k], 0, s, st, i-st, 1)) {
|
||||
return false;
|
||||
|
||||
for (k = ArrayLength(wtb); --k >= 0;) {
|
||||
if (RegionMatches(wtb[k], 0, s, st, i - st)) {
|
||||
int action = ttb[k];
|
||||
if (action != 0) {
|
||||
if (action < 0) {
|
||||
@ -1052,23 +1023,23 @@ date_parseString(JSLinearString *str, double *result, DateTimeInfo *dtInfo)
|
||||
* 12:30, instead of blindly adding 12 if PM.
|
||||
*/
|
||||
JS_ASSERT(action == -1 || action == -2);
|
||||
if (hour > 12 || hour < 0) {
|
||||
goto syntax;
|
||||
} else {
|
||||
if (action == -1 && hour == 12) { /* am */
|
||||
hour = 0;
|
||||
} else if (action == -2 && hour != 12) { /* pm */
|
||||
hour += 12;
|
||||
}
|
||||
}
|
||||
if (hour > 12 || hour < 0)
|
||||
return false;
|
||||
|
||||
if (action == -1 && hour == 12) /* am */
|
||||
hour = 0;
|
||||
else if (action == -2 && hour != 12) /* pm */
|
||||
hour += 12;
|
||||
} else if (action <= 13) { /* month! */
|
||||
/* Adjust mon to be 1-based until the final values
|
||||
for mon, mday and year are adjusted below */
|
||||
if (seenmonthname) {
|
||||
goto syntax;
|
||||
}
|
||||
seenmonthname = true;
|
||||
temp = /*byte*/ (action - 2) + 1;
|
||||
/*
|
||||
* Adjust mon to be 1-based until the final values
|
||||
* for mon, mday and year are adjusted below.
|
||||
*/
|
||||
if (seenMonthName)
|
||||
return false;
|
||||
|
||||
seenMonthName = true;
|
||||
int temp = /*byte*/ (action - 2) + 1;
|
||||
|
||||
if (mon < 0) {
|
||||
mon = temp;
|
||||
@ -1079,53 +1050,58 @@ date_parseString(JSLinearString *str, double *result, DateTimeInfo *dtInfo)
|
||||
year = mon;
|
||||
mon = temp;
|
||||
} else {
|
||||
goto syntax;
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
tzoffset = action - 10000;
|
||||
tzOffset = action - 10000;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (k < 0)
|
||||
goto syntax;
|
||||
return false;
|
||||
|
||||
prevc = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (year < 0 || mon < 0 || mday < 0)
|
||||
goto syntax;
|
||||
return false;
|
||||
|
||||
/*
|
||||
Case 1. The input string contains an English month name.
|
||||
The form of the string can be month f l, or f month l, or
|
||||
f l month which each evaluate to the same date.
|
||||
If f and l are both greater than or equal to 70, or
|
||||
both less than 70, the date is invalid.
|
||||
The year is taken to be the greater of the values f, l.
|
||||
If the year is greater than or equal to 70 and less than 100,
|
||||
it is considered to be the number of years after 1900.
|
||||
Case 2. The input string is of the form "f/m/l" where f, m and l are
|
||||
integers, e.g. 7/16/45.
|
||||
Adjust the mon, mday and year values to achieve 100% MSIE
|
||||
compatibility.
|
||||
a. If 0 <= f < 70, f/m/l is interpreted as month/day/year.
|
||||
i. If year < 100, it is the number of years after 1900
|
||||
ii. If year >= 100, it is the number of years after 0.
|
||||
b. If 70 <= f < 100
|
||||
i. If m < 70, f/m/l is interpreted as
|
||||
year/month/day where year is the number of years after
|
||||
1900.
|
||||
ii. If m >= 70, the date is invalid.
|
||||
c. If f >= 100
|
||||
i. If m < 70, f/m/l is interpreted as
|
||||
year/month/day where year is the number of years after 0.
|
||||
ii. If m >= 70, the date is invalid.
|
||||
*/
|
||||
if (seenmonthname) {
|
||||
if ((mday >= 70 && year >= 70) || (mday < 70 && year < 70)) {
|
||||
goto syntax;
|
||||
}
|
||||
* Case 1. The input string contains an English month name.
|
||||
* The form of the string can be month f l, or f month l, or
|
||||
* f l month which each evaluate to the same date.
|
||||
* If f and l are both greater than or equal to 70, or
|
||||
* both less than 70, the date is invalid.
|
||||
* The year is taken to be the greater of the values f, l.
|
||||
* If the year is greater than or equal to 70 and less than 100,
|
||||
* it is considered to be the number of years after 1900.
|
||||
* Case 2. The input string is of the form "f/m/l" where f, m and l are
|
||||
* integers, e.g. 7/16/45.
|
||||
* Adjust the mon, mday and year values to achieve 100% MSIE
|
||||
* compatibility.
|
||||
* a. If 0 <= f < 70, f/m/l is interpreted as month/day/year.
|
||||
* i. If year < 100, it is the number of years after 1900
|
||||
* ii. If year >= 100, it is the number of years after 0.
|
||||
* b. If 70 <= f < 100
|
||||
* i. If m < 70, f/m/l is interpreted as
|
||||
* year/month/day where year is the number of years after
|
||||
* 1900.
|
||||
* ii. If m >= 70, the date is invalid.
|
||||
* c. If f >= 100
|
||||
* i. If m < 70, f/m/l is interpreted as
|
||||
* year/month/day where year is the number of years after 0.
|
||||
* ii. If m >= 70, the date is invalid.
|
||||
*/
|
||||
if (seenMonthName) {
|
||||
if ((mday >= 70 && year >= 70) || (mday < 70 && year < 70))
|
||||
return false;
|
||||
|
||||
if (mday > year) {
|
||||
temp = year;
|
||||
int temp = year;
|
||||
year = mday;
|
||||
mday = temp;
|
||||
}
|
||||
@ -1138,23 +1114,24 @@ date_parseString(JSLinearString *str, double *result, DateTimeInfo *dtInfo)
|
||||
}
|
||||
} else if (mon < 100) { /* (b) year/month/day */
|
||||
if (mday < 70) {
|
||||
temp = year;
|
||||
int temp = year;
|
||||
year = mon + 1900;
|
||||
mon = mday;
|
||||
mday = temp;
|
||||
} else {
|
||||
goto syntax;
|
||||
return false;
|
||||
}
|
||||
} else { /* (c) year/month/day */
|
||||
if (mday < 70) {
|
||||
temp = year;
|
||||
int temp = year;
|
||||
year = mon;
|
||||
mon = mday;
|
||||
mday = temp;
|
||||
} else {
|
||||
goto syntax;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
mon -= 1; /* convert month to 0-based */
|
||||
if (sec < 0)
|
||||
sec = 0;
|
||||
@ -1163,21 +1140,24 @@ date_parseString(JSLinearString *str, double *result, DateTimeInfo *dtInfo)
|
||||
if (hour < 0)
|
||||
hour = 0;
|
||||
|
||||
msec = date_msecFromDate(year, mon, mday, hour, min, sec, 0);
|
||||
double msec = date_msecFromDate(year, mon, mday, hour, min, sec, 0);
|
||||
|
||||
if (tzoffset == -1) { /* no time zone specified, have to use local */
|
||||
if (tzOffset == -1) /* no time zone specified, have to use local */
|
||||
msec = UTC(msec, dtInfo);
|
||||
} else {
|
||||
msec += tzoffset * msPerMinute;
|
||||
}
|
||||
else
|
||||
msec += tzOffset * msPerMinute;
|
||||
|
||||
*result = msec;
|
||||
return true;
|
||||
}
|
||||
|
||||
syntax:
|
||||
/* syntax error */
|
||||
*result = 0;
|
||||
return false;
|
||||
static bool
|
||||
ParseDate(JSLinearString *s, double *result, DateTimeInfo *dtInfo)
|
||||
{
|
||||
AutoCheckCannotGC nogc;
|
||||
return s->hasLatin1Chars()
|
||||
? ParseDate(s->latin1Chars(nogc), s->length(), result, dtInfo)
|
||||
: ParseDate(s->twoByteChars(nogc), s->length(), result, dtInfo);
|
||||
}
|
||||
|
||||
static bool
|
||||
@ -1198,7 +1178,7 @@ date_parse(JSContext *cx, unsigned argc, Value *vp)
|
||||
return false;
|
||||
|
||||
double result;
|
||||
if (!date_parseString(linearStr, &result, &cx->runtime()->dateTimeInfo)) {
|
||||
if (!ParseDate(linearStr, &result, &cx->runtime()->dateTimeInfo)) {
|
||||
args.rval().setNaN();
|
||||
return true;
|
||||
}
|
||||
@ -2981,7 +2961,7 @@ js_Date(JSContext *cx, unsigned argc, Value *vp)
|
||||
if (!linearStr)
|
||||
return false;
|
||||
|
||||
if (!date_parseString(linearStr, &d, &cx->runtime()->dateTimeInfo))
|
||||
if (!ParseDate(linearStr, &d, &cx->runtime()->dateTimeInfo))
|
||||
d = GenericNaN();
|
||||
else
|
||||
d = TimeClip(d);
|
||||
|
@ -3531,7 +3531,7 @@ CloneIntoReadStructuredClone(JSContext *cx,
|
||||
if (!JS_WrapObject(cx, &obj))
|
||||
return nullptr;
|
||||
|
||||
if (!xpc::NewFunctionForwarder(cx, obj, false, &functionValue))
|
||||
if (!xpc::NewFunctionForwarder(cx, obj, true, &functionValue))
|
||||
return nullptr;
|
||||
|
||||
return &functionValue.toObject();
|
||||
|
@ -161,8 +161,14 @@
|
||||
'CloneInto should only work on less privileged target scopes.');
|
||||
}
|
||||
|
||||
var test = { a: function() { return 42; } }
|
||||
var test = { a: function() { return 42; } };
|
||||
cloneAndTestWithFunctions(test);
|
||||
|
||||
// Check that we're cloning input to functions:
|
||||
test = { a: function(obj) { return obj; } };
|
||||
var clonedTest = Cu.cloneInto(test, sandbox, {cloneFunctions: true});
|
||||
var testInput = {};
|
||||
isnot(clonedTest.a(testInput), testInput, "Objects should not be identical");
|
||||
]]>
|
||||
</script>
|
||||
</window>
|
||||
|
@ -148,18 +148,13 @@ Abs<long double>(const long double d)
|
||||
#if defined(_WIN32) && (_MSC_VER >= 1300) && (defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64))
|
||||
# define MOZ_BITSCAN_WINDOWS
|
||||
|
||||
extern "C" {
|
||||
unsigned char _BitScanForward(unsigned long* Index, unsigned long mask);
|
||||
unsigned char _BitScanReverse(unsigned long* Index, unsigned long mask);
|
||||
# include <intrin.h>
|
||||
# pragma intrinsic(_BitScanForward, _BitScanReverse)
|
||||
|
||||
# if defined(_M_AMD64) || defined(_M_X64)
|
||||
# define MOZ_BITSCAN_WINDOWS64
|
||||
unsigned char _BitScanForward64(unsigned long* index, unsigned __int64 mask);
|
||||
unsigned char _BitScanReverse64(unsigned long* index, unsigned __int64 mask);
|
||||
# pragma intrinsic(_BitScanForward64, _BitScanReverse64)
|
||||
# endif
|
||||
} // extern "C"
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -548,16 +548,45 @@ thread_info_cleanup(void *arg) {
|
||||
thread_info_t *tinfo = (thread_info_t *)arg;
|
||||
pthread_attr_destroy(&tinfo->threadAttr);
|
||||
|
||||
uintptr_t pageGuard = ceilToPage((uintptr_t)tinfo->stk);
|
||||
mprotect((void*)pageGuard, getPageSize(), PROT_READ | PROT_WRITE);
|
||||
free(tinfo->stk);
|
||||
|
||||
REAL(pthread_mutex_lock)(&sThreadCountLock);
|
||||
/* unlink tinfo from sAllThreads */
|
||||
tinfo->remove();
|
||||
pthread_mutex_unlock(&sThreadCountLock);
|
||||
|
||||
// while sThreadCountLock is held, since delete calls wrapped functions
|
||||
// which try to lock sThreadCountLock. This results in deadlock. And we
|
||||
// need to delete |tinfo| before decreasing sThreadCount, so Nuwa won't
|
||||
// get ready before tinfo is cleaned.
|
||||
delete tinfo;
|
||||
|
||||
REAL(pthread_mutex_lock)(&sThreadCountLock);
|
||||
sThreadCount--;
|
||||
pthread_cond_signal(&sThreadChangeCond);
|
||||
pthread_mutex_unlock(&sThreadCountLock);
|
||||
}
|
||||
|
||||
free(tinfo->stk);
|
||||
delete tinfo;
|
||||
static void*
|
||||
cleaner_thread(void *arg) {
|
||||
thread_info_t *tinfo = (thread_info_t *)arg;
|
||||
pthread_t *thread = sIsNuwaProcess ? &tinfo->origThreadID
|
||||
: &tinfo->recreatedThreadID;
|
||||
// Wait until target thread end.
|
||||
while (!pthread_kill(*thread, 0)) {
|
||||
sched_yield();
|
||||
}
|
||||
thread_info_cleanup(tinfo);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static void
|
||||
thread_cleanup(void *arg) {
|
||||
pthread_t thread;
|
||||
REAL(pthread_create)(&thread, nullptr, &cleaner_thread, arg);
|
||||
pthread_detach(thread);
|
||||
}
|
||||
|
||||
static void *
|
||||
@ -573,7 +602,7 @@ _thread_create_startup(void *arg) {
|
||||
tinfo->origThreadID = REAL(pthread_self)();
|
||||
tinfo->origNativeThreadID = gettid();
|
||||
|
||||
pthread_cleanup_push(thread_info_cleanup, tinfo);
|
||||
pthread_cleanup_push(thread_cleanup, tinfo);
|
||||
|
||||
r = tinfo->startupFunc(tinfo->startupArg);
|
||||
|
||||
|
@ -1163,7 +1163,6 @@ nsSocketTransport::BuildSocket(PRFileDesc *&fd, bool &proxyTransparent, bool &us
|
||||
}
|
||||
}
|
||||
|
||||
CleanupTypes();
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
@ -35,6 +35,7 @@ nsIIDNService *nsStandardURL::gIDN = nullptr;
|
||||
bool nsStandardURL::gInitialized = false;
|
||||
bool nsStandardURL::gEscapeUTF8 = true;
|
||||
bool nsStandardURL::gAlwaysEncodeInUTF8 = true;
|
||||
char nsStandardURL::gHostLimitDigits[] = { '/', '\\', '?', '#', 0 };
|
||||
|
||||
#if defined(PR_LOGGING)
|
||||
//
|
||||
@ -1423,6 +1424,18 @@ nsStandardURL::SetPassword(const nsACString &input)
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
nsStandardURL::FindHostLimit(nsACString::const_iterator& aStart,
|
||||
nsACString::const_iterator& aEnd)
|
||||
{
|
||||
for (int32_t i = 0; gHostLimitDigits[i]; ++i) {
|
||||
nsACString::const_iterator c(aStart);
|
||||
if (FindCharInReadable(gHostLimitDigits[i], c, aEnd)) {
|
||||
aEnd = c;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsStandardURL::SetHostPort(const nsACString &aValue)
|
||||
{
|
||||
@ -1438,6 +1451,8 @@ nsStandardURL::SetHostPort(const nsACString &aValue)
|
||||
nsACString::const_iterator iter(start);
|
||||
bool isIPv6 = false;
|
||||
|
||||
FindHostLimit(start, end);
|
||||
|
||||
if (*start == '[') { // IPv6 address
|
||||
if (!FindCharInReadable(']', iter, end)) {
|
||||
// the ] character is missing
|
||||
@ -1496,7 +1511,15 @@ nsStandardURL::SetHost(const nsACString &input)
|
||||
{
|
||||
ENSURE_MUTABLE();
|
||||
|
||||
const nsPromiseFlatCString &flat = PromiseFlatCString(input);
|
||||
const nsPromiseFlatCString &hostname = PromiseFlatCString(input);
|
||||
|
||||
nsACString::const_iterator start, end;
|
||||
hostname.BeginReading(start);
|
||||
hostname.EndReading(end);
|
||||
|
||||
FindHostLimit(start, end);
|
||||
|
||||
const nsCString flat(Substring(start, end));
|
||||
const char *host = flat.get();
|
||||
|
||||
LOG(("nsStandardURL::SetHost [host=%s]\n", host));
|
||||
|
@ -226,6 +226,9 @@ private:
|
||||
|
||||
static void PrefsChanged(nsIPrefBranch *prefs, const char *pref);
|
||||
|
||||
void FindHostLimit(nsACString::const_iterator& aStart,
|
||||
nsACString::const_iterator& aEnd);
|
||||
|
||||
// mSpec contains the normalized version of the URL spec (UTF-8 encoded).
|
||||
nsCString mSpec;
|
||||
int32_t mDefaultPort;
|
||||
@ -270,6 +273,7 @@ private:
|
||||
// global objects. don't use COMPtr as its destructor will cause a
|
||||
// coredump if we leak it.
|
||||
static nsIIDNService *gIDN;
|
||||
static char gHostLimitDigits[];
|
||||
static bool gInitialized;
|
||||
static bool gEscapeUTF8;
|
||||
static bool gAlwaysEncodeInUTF8;
|
||||
|
@ -1003,8 +1003,7 @@ Http2Compressor::EncodeHeaderBlock(const nsCString &nvInput,
|
||||
name.EqualsLiteral("proxy-connection") ||
|
||||
name.EqualsLiteral("te") ||
|
||||
name.EqualsLiteral("transfer-encoding") ||
|
||||
name.EqualsLiteral("upgrade") ||
|
||||
name.EqualsLiteral("accept-encoding")) {
|
||||
name.EqualsLiteral("upgrade")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -1062,10 +1061,12 @@ Http2Compressor::EncodeHeaderBlock(const nsCString &nvInput,
|
||||
}
|
||||
nsDependentCSubstring cookie = Substring(beginBuffer + nextCookie,
|
||||
beginBuffer + semiSpaceIndex);
|
||||
ProcessHeader(nvPair(name, cookie), true);
|
||||
// cookies less than 20 bytes are not indexed
|
||||
ProcessHeader(nvPair(name, cookie), name.Length() < 20);
|
||||
nextCookie = semiSpaceIndex + 2;
|
||||
}
|
||||
} else {
|
||||
// allow indexing of every non-cookie except authorization
|
||||
ProcessHeader(nvPair(name, value), name.EqualsLiteral("authorization"));
|
||||
}
|
||||
}
|
||||
|
@ -33,6 +33,10 @@
|
||||
namespace mozilla {
|
||||
namespace net {
|
||||
|
||||
#if defined(_MSC_VER) && defined(__clang__)
|
||||
// This is needed until http://llvm.org/PR19987 is fixed
|
||||
class __multiple_inheritance HttpChannelChild;
|
||||
#endif
|
||||
class HttpChannelChild : public PHttpChannelChild
|
||||
, public HttpBaseChannel
|
||||
, public HttpAsyncAborter<HttpChannelChild>
|
||||
|
@ -1031,6 +1031,10 @@ SpdyStream3::Uncompress(z_stream *context,
|
||||
char *blockStart,
|
||||
uint32_t blockLen)
|
||||
{
|
||||
// ensure the minimum size
|
||||
EnsureBuffer(mDecompressBuffer, SpdySession3::kDefaultBufferSize,
|
||||
mDecompressBufferUsed, mDecompressBufferSize);
|
||||
|
||||
mDecompressedBytes += blockLen;
|
||||
|
||||
context->avail_in = blockLen;
|
||||
@ -1043,22 +1047,23 @@ SpdyStream3::Uncompress(z_stream *context,
|
||||
mDecompressBufferUsed;
|
||||
context->avail_out = mDecompressBufferSize - mDecompressBufferUsed;
|
||||
int zlib_rv = inflate(context, Z_NO_FLUSH);
|
||||
LOG3(("SpdyStream3::Uncompress %p zlib_rv %d\n", this, zlib_rv));
|
||||
|
||||
if (zlib_rv == Z_NEED_DICT) {
|
||||
if (triedDictionary) {
|
||||
LOG3(("SpdySession3::Uncompress %p Dictionary Error\n", this));
|
||||
LOG3(("SpdyStream3::Uncompress %p Dictionary Error\n", this));
|
||||
return NS_ERROR_ILLEGAL_VALUE;
|
||||
}
|
||||
|
||||
triedDictionary = true;
|
||||
inflateSetDictionary(context, kDictionary, sizeof(kDictionary));
|
||||
}
|
||||
|
||||
if (zlib_rv == Z_DATA_ERROR)
|
||||
} else if (zlib_rv == Z_DATA_ERROR) {
|
||||
LOG3(("SpdyStream3::Uncompress %p inflate returned data err\n", this));
|
||||
return NS_ERROR_ILLEGAL_VALUE;
|
||||
|
||||
if (zlib_rv == Z_MEM_ERROR)
|
||||
} else if (zlib_rv < Z_OK) { // probably Z_MEM_ERROR
|
||||
LOG3(("SpdyStream3::Uncompress %p inflate returned %d\n", this, zlib_rv));
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
// zlib's inflate() decreases context->avail_out by the amount it places
|
||||
// in the output buffer
|
||||
|
@ -1047,6 +1047,10 @@ SpdyStream31::Uncompress(z_stream *context,
|
||||
char *blockStart,
|
||||
uint32_t blockLen)
|
||||
{
|
||||
// ensure the minimum size
|
||||
EnsureBuffer(mDecompressBuffer, SpdySession31::kDefaultBufferSize,
|
||||
mDecompressBufferUsed, mDecompressBufferSize);
|
||||
|
||||
mDecompressedBytes += blockLen;
|
||||
|
||||
context->avail_in = blockLen;
|
||||
@ -1059,22 +1063,23 @@ SpdyStream31::Uncompress(z_stream *context,
|
||||
mDecompressBufferUsed;
|
||||
context->avail_out = mDecompressBufferSize - mDecompressBufferUsed;
|
||||
int zlib_rv = inflate(context, Z_NO_FLUSH);
|
||||
LOG3(("SpdyStream31::Uncompress %p zlib_rv %d\n", this, zlib_rv));
|
||||
|
||||
if (zlib_rv == Z_NEED_DICT) {
|
||||
if (triedDictionary) {
|
||||
LOG3(("SpdySession31::Uncompress %p Dictionary Error\n", this));
|
||||
LOG3(("SpdyStream31::Uncompress %p Dictionary Error\n", this));
|
||||
return NS_ERROR_ILLEGAL_VALUE;
|
||||
}
|
||||
|
||||
triedDictionary = true;
|
||||
inflateSetDictionary(context, kDictionary, sizeof(kDictionary));
|
||||
}
|
||||
|
||||
if (zlib_rv == Z_DATA_ERROR)
|
||||
} else if (zlib_rv == Z_DATA_ERROR) {
|
||||
LOG3(("SpdyStream31::Uncompress %p inflate returned data err\n", this));
|
||||
return NS_ERROR_ILLEGAL_VALUE;
|
||||
|
||||
if (zlib_rv == Z_MEM_ERROR)
|
||||
} else if (zlib_rv < Z_OK) { // probably Z_MEM_ERROR
|
||||
LOG3(("SpdyStream31::Uncompress %p inflate returned %d\n", this, zlib_rv));
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
// zlib's inflate() decreases context->avail_out by the amount it places
|
||||
// in the output buffer
|
||||
|
@ -24,6 +24,12 @@
|
||||
"other": {
|
||||
"tests": ["a11yr", "ts_paint", "tpaint", "sessionrestore", "sessionrestore_no_auto_restore"]
|
||||
},
|
||||
"other_nolinux64": {
|
||||
"tests": ["a11yr", "ts_paint", "tpaint", "sessionrestore", "sessionrestore_no_auto_restore"]
|
||||
},
|
||||
"other_linux64": {
|
||||
"tests": ["a11yr", "ts_paint", "tpaint", "sessionrestore", "sessionrestore_no_auto_restore", "media_tests"]
|
||||
},
|
||||
"svgr": {
|
||||
"tests": ["tsvgx", "tsvgr_opacity", "tart", "tscrollx", "cart"]
|
||||
},
|
||||
|
@ -49,3 +49,5 @@ RCINCLUDE = 'crashreporter.rc'
|
||||
# Don't use the STL wrappers in the crashreporter clients; they don't
|
||||
# link with -lmozalloc, and it really doesn't matter here anyway.
|
||||
DISABLE_STL_WRAPPING = True
|
||||
|
||||
include('/toolkit/crashreporter/crashreporter.mozbuild')
|
||||
|
15
toolkit/crashreporter/crashreporter.mozbuild
Normal file
15
toolkit/crashreporter/crashreporter.mozbuild
Normal file
@ -0,0 +1,15 @@
|
||||
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||
# vim: set filetype=python:
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
# Suppress warnings in third-party code.
|
||||
if CONFIG['_MSC_VER']:
|
||||
CXXFLAGS += [
|
||||
'-wd4005', # macro redefinition
|
||||
]
|
||||
elif CONFIG['GNU_CXX']:
|
||||
CXXFLAGS += [
|
||||
'-Wno-unused-local-typedefs',
|
||||
]
|
@ -19,3 +19,5 @@ if CONFIG['OS_TARGET'] == 'Android':
|
||||
LOCAL_INCLUDES += [
|
||||
'/toolkit/crashreporter/google-breakpad/src/common/android/include',
|
||||
]
|
||||
|
||||
include('/toolkit/crashreporter/crashreporter.mozbuild')
|
||||
|
@ -26,3 +26,4 @@ LOCAL_INCLUDES += [
|
||||
'/toolkit/crashreporter/google-breakpad/src',
|
||||
]
|
||||
|
||||
include('/toolkit/crashreporter/crashreporter.mozbuild')
|
||||
|
@ -25,3 +25,5 @@ if CONFIG['OS_TARGET'] == 'Android':
|
||||
LOCAL_INCLUDES += [
|
||||
'/toolkit/crashreporter/google-breakpad/src/common/android/include',
|
||||
]
|
||||
|
||||
include('/toolkit/crashreporter/crashreporter.mozbuild')
|
||||
|
@ -88,6 +88,8 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
|
||||
if CONFIG['OS_TARGET'] == 'Android':
|
||||
DEFINES['NO_STABS_SUPPORT'] = True
|
||||
|
||||
include('/toolkit/crashreporter/crashreporter.mozbuild')
|
||||
|
||||
LOCAL_INCLUDES += [
|
||||
'..',
|
||||
]
|
||||
|
@ -28,3 +28,4 @@ LOCAL_INCLUDES += [
|
||||
'../..',
|
||||
]
|
||||
|
||||
include('/toolkit/crashreporter/crashreporter.mozbuild')
|
||||
|
@ -103,14 +103,6 @@ LOCAL_INCLUDES += [
|
||||
'google-breakpad/src',
|
||||
]
|
||||
|
||||
# Suppress warnings in third-party code.
|
||||
if CONFIG['_MSC_VER']:
|
||||
CXXFLAGS += [
|
||||
'-wd4005', # macro redefinition
|
||||
]
|
||||
elif CONFIG['GNU_CXX']:
|
||||
CXXFLAGS += [
|
||||
'-Wno-unused-local-typedefs',
|
||||
]
|
||||
include('/toolkit/crashreporter/crashreporter.mozbuild')
|
||||
|
||||
FAIL_ON_WARNINGS = True
|
||||
|
@ -37,3 +37,4 @@ LOCAL_INCLUDES += [
|
||||
'../google-breakpad/src/',
|
||||
]
|
||||
|
||||
include('/toolkit/crashreporter/crashreporter.mozbuild')
|
||||
|
@ -27,10 +27,10 @@ function loadWebapp(manifest, parameters, onLoad) {
|
||||
|
||||
becomeWebapp(url.spec, parameters, function onBecome() {
|
||||
function onLoadApp() {
|
||||
gAppBrowser.removeEventListener("DOMContentLoaded", onLoadApp, true);
|
||||
gAppBrowser.removeEventListener("load", onLoadApp, true);
|
||||
onLoad();
|
||||
}
|
||||
gAppBrowser.addEventListener("DOMContentLoaded", onLoadApp, true);
|
||||
gAppBrowser.addEventListener("load", onLoadApp, true);
|
||||
gAppBrowser.setAttribute("src", WebappRT.launchURI);
|
||||
});
|
||||
|
||||
|
@ -245,7 +245,7 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor &aColor)
|
||||
aColor = NS_RGB(0xA3,0xA3,0xA3);
|
||||
break;
|
||||
case eColorID__moz_mac_menutextdisable:
|
||||
aColor = NS_RGB(0x88,0x88,0x88);
|
||||
aColor = NS_RGB(0x98,0x98,0x98);
|
||||
break;
|
||||
case eColorID__moz_mac_menutextselect:
|
||||
aColor = GetColorFromNSColor([NSColor selectedMenuItemTextColor]);
|
||||
|
@ -71,7 +71,7 @@ var colors = {
|
||||
//"-moz-mac-focusring": ["rgb(83, 144, 210)", "rgb(95, 112, 130)", "rgb(63, 152, 221)", "rgb(108, 126, 141)"],
|
||||
"-moz-mac-menuselect": ["rgb(115, 132, 153)", "rgb(127, 127, 127)", "rgb(56, 117, 215)", "rgb(255, 193, 31)", "rgb(243, 70, 72)", "rgb(255, 138, 34)", "rgb(102, 197, 71)", "rgb(140, 78, 184)"],
|
||||
"-moz-mac-menushadow": ["rgb(163, 163, 163)"],
|
||||
"-moz-mac-menutextdisable": ["rgb(152, 152, 152)", "rgb(136, 136, 136)"],
|
||||
"-moz-mac-menutextdisable": ["rgb(152, 152, 152)"],
|
||||
"-moz-mac-menutextselect": ["rgb(255, 255, 255)"],
|
||||
"-moz-mac-disabledtoolbartext": ["rgb(127, 127, 127)"],
|
||||
"-moz-mac-secondaryhighlight": ["rgb(212, 212, 212)"],
|
||||
|
Loading…
Reference in New Issue
Block a user