From 85ab572a336114183097f5f25f90f19e9c0e8d70 Mon Sep 17 00:00:00 2001 From: Jan de Mooij Date: Thu, 19 Jun 2014 12:59:40 +0200 Subject: [PATCH 01/60] Bug 1026438 part 5 - Make irregexp work with Latin1 strings. r=bhackett --- .../irregexp/NativeRegExpMacroAssembler.cpp | 20 ++++++++--- js/src/irregexp/NativeRegExpMacroAssembler.h | 7 ++-- js/src/irregexp/RegExpEngine.cpp | 19 +++++++++-- js/src/irregexp/RegExpEngine.h | 10 +++--- js/src/irregexp/RegExpInterpreter.cpp | 21 ++++++++---- js/src/irregexp/RegExpMacroAssembler.cpp | 15 +++++++-- js/src/irregexp/RegExpMacroAssembler.h | 3 +- js/src/jit-test/tests/latin1/regexp.js | 18 ++++++++++ js/src/vm/RegExpObject.cpp | 33 +++++++++++++++---- 9 files changed, 115 insertions(+), 31 deletions(-) diff --git a/js/src/irregexp/NativeRegExpMacroAssembler.cpp b/js/src/irregexp/NativeRegExpMacroAssembler.cpp index 498304e85e4..154ab8eb862 100644 --- a/js/src/irregexp/NativeRegExpMacroAssembler.cpp +++ b/js/src/irregexp/NativeRegExpMacroAssembler.cpp @@ -755,7 +755,8 @@ NativeRegExpMacroAssembler::CheckNotBackReferenceIgnoreCase(int start_reg, Label masm.passABIArg(current_character); masm.passABIArg(current_position); masm.passABIArg(temp1); - masm.callWithABI(JS_FUNC_TO_DATA_PTR(void *, CaseInsensitiveCompareStrings)); + int (*fun)(const jschar*, const jschar*, size_t) = CaseInsensitiveCompareStrings; + masm.callWithABI(JS_FUNC_TO_DATA_PTR(void *, fun)); masm.storeCallResult(temp0); masm.PopRegsInMask(volatileRegs); @@ -812,9 +813,12 @@ NativeRegExpMacroAssembler::CheckBitInTable(uint8_t *table, Label *on_bit_set) { IonSpew(SPEW_PREFIX "CheckBitInTable"); - JS_ASSERT(mode_ != ASCII); // Ascii case not handled here. - masm.movePtr(ImmPtr(table), temp0); + + // kTableMask is currently 127, so we need to mask even if the input is + // Latin1. V8 has the same issue. + static_assert(JSString::MAX_LATIN1_CHAR > kTableMask, + "No need to mask if MAX_LATIN1_CHAR <= kTableMask"); masm.move32(Imm32(kTableSize - 1), temp1); masm.and32(current_character, temp1); @@ -875,7 +879,15 @@ NativeRegExpMacroAssembler::LoadCurrentCharacterUnchecked(int cp_offset, int cha IonSpew(SPEW_PREFIX "LoadCurrentCharacterUnchecked(%d, %d)", cp_offset, characters); if (mode_ == ASCII) { - MOZ_ASSUME_UNREACHABLE("Ascii loading not implemented"); + BaseIndex address(input_end_pointer, current_position, TimesOne, cp_offset); + if (characters == 4) { + masm.load32(address, current_character); + } else if (characters == 2) { + masm.load16ZeroExtend(address, current_character); + } else { + JS_ASSERT(characters = 1); + masm.load8ZeroExtend(address, current_character); + } } else { JS_ASSERT(mode_ == JSCHAR); JS_ASSERT(characters <= 2); diff --git a/js/src/irregexp/NativeRegExpMacroAssembler.h b/js/src/irregexp/NativeRegExpMacroAssembler.h index f793f3b4f85..d634c59d5bf 100644 --- a/js/src/irregexp/NativeRegExpMacroAssembler.h +++ b/js/src/irregexp/NativeRegExpMacroAssembler.h @@ -40,8 +40,8 @@ namespace irregexp { struct InputOutputData { - const jschar *inputStart; - const jschar *inputEnd; + const void *inputStart; + const void *inputEnd; // Index into inputStart (in chars) at which to begin matching. size_t startIndex; @@ -52,7 +52,8 @@ struct InputOutputData // for global regexps. int32_t result; - InputOutputData(const jschar *inputStart, const jschar *inputEnd, + template + InputOutputData(const CharT *inputStart, const CharT *inputEnd, size_t startIndex, MatchPairs *matches) : inputStart(inputStart), inputEnd(inputEnd), diff --git a/js/src/irregexp/RegExpEngine.cpp b/js/src/irregexp/RegExpEngine.cpp index e8bb2907e7e..8e798c69a90 100644 --- a/js/src/irregexp/RegExpEngine.cpp +++ b/js/src/irregexp/RegExpEngine.cpp @@ -1666,9 +1666,10 @@ irregexp::CompilePattern(JSContext *cx, RegExpShared *shared, RegExpCompileData return compiler.Assemble(cx, assembler, node, data->capture_count); } +template RegExpRunStatus -irregexp::ExecuteCode(JSContext *cx, jit::JitCode *codeBlock, - const jschar *chars, size_t start, size_t length, MatchPairs *matches) +irregexp::ExecuteCode(JSContext *cx, jit::JitCode *codeBlock, const CharT *chars, size_t start, + size_t length, MatchPairs *matches) { #ifdef JS_ION typedef void (*RegExpCodeSignature)(InputOutputData *); @@ -1676,7 +1677,11 @@ irregexp::ExecuteCode(JSContext *cx, jit::JitCode *codeBlock, InputOutputData data(chars, chars + length, start, matches); RegExpCodeSignature function = reinterpret_cast(codeBlock->raw()); - CALL_GENERATED_REGEXP(function, &data); + + { + JS::AutoSuppressGCAnalysis nogc; + CALL_GENERATED_REGEXP(function, &data); + } return (RegExpRunStatus) data.result; #else @@ -1684,6 +1689,14 @@ irregexp::ExecuteCode(JSContext *cx, jit::JitCode *codeBlock, #endif } +template RegExpRunStatus +irregexp::ExecuteCode(JSContext *cx, jit::JitCode *codeBlock, const Latin1Char *chars, size_t start, + size_t length, MatchPairs *matches); + +template RegExpRunStatus +irregexp::ExecuteCode(JSContext *cx, jit::JitCode *codeBlock, const jschar *chars, size_t start, + size_t length, MatchPairs *matches); + // ------------------------------------------------------------------- // Tree to graph conversion diff --git a/js/src/irregexp/RegExpEngine.h b/js/src/irregexp/RegExpEngine.h index fc9035bcb37..4d0e50a4eef 100644 --- a/js/src/irregexp/RegExpEngine.h +++ b/js/src/irregexp/RegExpEngine.h @@ -108,13 +108,15 @@ CompilePattern(JSContext *cx, RegExpShared *shared, RegExpCompileData *data, // Note: this may return RegExpRunStatus_Error if an interrupt was requested // while the code was executing. +template RegExpRunStatus -ExecuteCode(JSContext *cx, jit::JitCode *codeBlock, - const jschar *chars, size_t start, size_t length, MatchPairs *matches); +ExecuteCode(JSContext *cx, jit::JitCode *codeBlock, const CharT *chars, size_t start, + size_t length, MatchPairs *matches); +template RegExpRunStatus -InterpretCode(JSContext *cx, const uint8_t *byteCode, - const jschar *chars, size_t start, size_t length, MatchPairs *matches); +InterpretCode(JSContext *cx, const uint8_t *byteCode, const CharT *chars, size_t start, + size_t length, MatchPairs *matches); #define FOR_EACH_NODE_TYPE(VISIT) \ VISIT(End) \ diff --git a/js/src/irregexp/RegExpInterpreter.cpp b/js/src/irregexp/RegExpInterpreter.cpp index d51a0ab1daa..f99aecd46b6 100644 --- a/js/src/irregexp/RegExpInterpreter.cpp +++ b/js/src/irregexp/RegExpInterpreter.cpp @@ -104,13 +104,14 @@ Load16Aligned(const uint8_t* pc) #define BYTECODE(name) case BC_##name: +template RegExpRunStatus -irregexp::InterpretCode(JSContext *cx, const uint8_t *byteCode, - const jschar *chars, size_t current, size_t length, MatchPairs *matches) +irregexp::InterpretCode(JSContext *cx, const uint8_t *byteCode, const CharT *chars, size_t current, + size_t length, MatchPairs *matches) { const uint8_t* pc = byteCode; - jschar current_char = current ? chars[current - 1] : '\n'; + uint32_t current_char = current ? chars[current - 1] : '\n'; RegExpStackCursor stack(cx); @@ -226,8 +227,8 @@ irregexp::InterpretCode(JSContext *cx, const uint8_t *byteCode, if (pos + 2 > length) { pc = byteCode + Load32Aligned(pc + 4); } else { - jschar next = chars[pos + 1]; - current_char = (chars[pos] | (next << (kBitsPerByte * sizeof(jschar)))); + CharT next = chars[pos + 1]; + current_char = (chars[pos] | (next << (kBitsPerByte * sizeof(CharT)))); pc += BC_LOAD_2_CURRENT_CHARS_LENGTH; } break; @@ -421,7 +422,7 @@ irregexp::InterpretCode(JSContext *cx, const uint8_t *byteCode, pc = byteCode + Load32Aligned(pc + 4); break; } - if (CaseInsensitiveCompareStrings(chars + from, chars + current, len * 2)) { + if (CaseInsensitiveCompareStrings(chars + from, chars + current, len * sizeof(CharT))) { current += len; pc += BC_CHECK_NOT_BACK_REF_NO_CASE_LENGTH; } else { @@ -456,3 +457,11 @@ irregexp::InterpretCode(JSContext *cx, const uint8_t *byteCode, } } } + +template RegExpRunStatus +irregexp::InterpretCode(JSContext *cx, const uint8_t *byteCode, const Latin1Char *chars, size_t current, + size_t length, MatchPairs *matches); + +template RegExpRunStatus +irregexp::InterpretCode(JSContext *cx, const uint8_t *byteCode, const jschar *chars, size_t current, + size_t length, MatchPairs *matches); diff --git a/js/src/irregexp/RegExpMacroAssembler.cpp b/js/src/irregexp/RegExpMacroAssembler.cpp index 2536be0c95b..32d6da9ffd8 100644 --- a/js/src/irregexp/RegExpMacroAssembler.cpp +++ b/js/src/irregexp/RegExpMacroAssembler.cpp @@ -35,12 +35,13 @@ using namespace js; using namespace js::irregexp; +template int -irregexp::CaseInsensitiveCompareStrings(const jschar *substring1, const jschar *substring2, +irregexp::CaseInsensitiveCompareStrings(const CharT *substring1, const CharT *substring2, size_t byteLength) { - JS_ASSERT(byteLength % 2 == 0); - size_t length = byteLength >> 1; + JS_ASSERT(byteLength % sizeof(CharT) == 0); + size_t length = byteLength / sizeof(CharT); for (size_t i = 0; i < length; i++) { jschar c1 = substring1[i]; @@ -56,6 +57,14 @@ irregexp::CaseInsensitiveCompareStrings(const jschar *substring1, const jschar * return 1; } +template int +irregexp::CaseInsensitiveCompareStrings(const Latin1Char *substring1, const Latin1Char *substring2, + size_t byteLength); + +template int +irregexp::CaseInsensitiveCompareStrings(const jschar *substring1, const jschar *substring2, + size_t byteLength); + InterpretedRegExpMacroAssembler::InterpretedRegExpMacroAssembler(LifoAlloc *alloc, RegExpShared *shared, size_t numSavedRegisters) : RegExpMacroAssembler(*alloc, shared, numSavedRegisters), diff --git a/js/src/irregexp/RegExpMacroAssembler.h b/js/src/irregexp/RegExpMacroAssembler.h index 62a4b4d4054..bb4607083e0 100644 --- a/js/src/irregexp/RegExpMacroAssembler.h +++ b/js/src/irregexp/RegExpMacroAssembler.h @@ -217,8 +217,9 @@ class MOZ_STACK_CLASS RegExpMacroAssembler RegExpShared *shared; }; +template int -CaseInsensitiveCompareStrings(const jschar *substring1, const jschar *substring2, size_t byteLength); +CaseInsensitiveCompareStrings(const CharT *substring1, const CharT *substring2, size_t byteLength); class MOZ_STACK_CLASS InterpretedRegExpMacroAssembler : public RegExpMacroAssembler { diff --git a/js/src/jit-test/tests/latin1/regexp.js b/js/src/jit-test/tests/latin1/regexp.js index d8e9bda99a8..c2b72ac311e 100644 --- a/js/src/jit-test/tests/latin1/regexp.js +++ b/js/src/jit-test/tests/latin1/regexp.js @@ -13,3 +13,21 @@ assertEq(re.source, "foo[bB]a\\r\u1200"); assertEq(re.multiline, true); assertEq(re.ignoreCase, true); assertEq(re.sticky, false); + +re = /b[aA]r/; + +// Latin1 +assertEq(toLatin1("foobAr1234").search(re), 3); +assertEq(toLatin1("bar1234").search(re), 0); +assertEq(toLatin1("foobbr1234").search(re), -1); + +// TwoByte +assertEq("foobAr1234\u1200".search(re), 3); +assertEq("bar1234\u1200".search(re), 0); +assertEq("foobbr1234\u1200".search(re), -1); + +re = /abcdefghijklm[0-5]/; +assertEq(toLatin1("1abcdefghijklm4").search(re), 1); +assertEq("\u12001abcdefghijklm0".search(re), 2); +assertEq(toLatin1("1abcdefghijklm8").search(re), -1); +assertEq("\u12001abcdefghijklm8".search(re), -1); diff --git a/js/src/vm/RegExpObject.cpp b/js/src/vm/RegExpObject.cpp index a3e821eb9d2..9afcba09077 100644 --- a/js/src/vm/RegExpObject.cpp +++ b/js/src/vm/RegExpObject.cpp @@ -28,6 +28,8 @@ using mozilla::DebugOnly; using mozilla::Maybe; using js::frontend::TokenStream; +using JS::AutoCheckCannotGC; + JS_STATIC_ASSERT(IgnoreCaseFlag == JSREG_FOLD); JS_STATIC_ASSERT(GlobalFlag == JSREG_GLOB); JS_STATIC_ASSERT(MultilineFlag == JSREG_MULTILINE); @@ -592,9 +594,20 @@ RegExpShared::execute(JSContext *cx, HandleLinearString input, size_t *lastIndex if (uint8_t *byteCode = maybeByteCode(input->hasLatin1Chars())) { AutoTraceLog logInterpreter(logger, TraceLogger::IrregexpExecute); - const jschar *chars = input->chars() + charsOffset; - RegExpRunStatus result = - irregexp::InterpretCode(cx, byteCode, chars, start, length, &matches); + + AutoStableStringChars inputChars(cx, input); + if (!inputChars.init()) + return RegExpRunStatus_Error; + + RegExpRunStatus result; + if (inputChars.isLatin1()) { + const Latin1Char *chars = inputChars.latin1Range().start().get() + charsOffset; + result = irregexp::InterpretCode(cx, byteCode, chars, start, length, &matches); + } else { + const jschar *chars = inputChars.twoByteRange().start().get() + charsOffset; + result = irregexp::InterpretCode(cx, byteCode, chars, start, length, &matches); + } + if (result == RegExpRunStatus_Success) { matches.displace(displacement); matches.checkAgainst(origLength); @@ -608,8 +621,14 @@ RegExpShared::execute(JSContext *cx, HandleLinearString input, size_t *lastIndex RegExpRunStatus result; { AutoTraceLog logJIT(logger, TraceLogger::IrregexpExecute); - const jschar *chars = input->chars() + charsOffset; - result = irregexp::ExecuteCode(cx, jitCodeTwoByte, chars, start, length, &matches); + AutoCheckCannotGC nogc; + if (input->hasLatin1Chars()) { + const Latin1Char *chars = input->latin1Chars(nogc) + charsOffset; + result = irregexp::ExecuteCode(cx, jitCodeLatin1, chars, start, length, &matches); + } else { + const jschar *chars = input->twoByteChars(nogc) + charsOffset; + result = irregexp::ExecuteCode(cx, jitCodeTwoByte, chars, start, length, &matches); + } } if (result == RegExpRunStatus_Error) { @@ -885,10 +904,10 @@ js::ParseRegExpFlags(JSContext *cx, JSString *flagStr, RegExpFlag *flagsOut) bool ok; jschar lastParsed; if (linear->hasLatin1Chars()) { - JS::AutoCheckCannotGC nogc; + AutoCheckCannotGC nogc; ok = ::ParseRegExpFlags(linear->latin1Chars(nogc), len, flagsOut, &lastParsed); } else { - JS::AutoCheckCannotGC nogc; + AutoCheckCannotGC nogc; ok = ::ParseRegExpFlags(linear->twoByteChars(nogc), len, flagsOut, &lastParsed); } From 1c21dce8b8b7fa8c4f3488b01d8f7ec32a44f4e3 Mon Sep 17 00:00:00 2001 From: Jan de Mooij Date: Thu, 19 Jun 2014 12:59:44 +0200 Subject: [PATCH 02/60] Bug 1019585 part 4 - Make str_replace dollar search handle Latin1 strings. r=terrence --- js/src/jsstr.cpp | 36 ++++++++++++++++++++++++++---------- js/src/jsstr.h | 5 +++-- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/js/src/jsstr.cpp b/js/src/jsstr.cpp index bd9386f94f4..55d26d047c9 100644 --- a/js/src/jsstr.cpp +++ b/js/src/jsstr.cpp @@ -2455,6 +2455,18 @@ class RopeBuilder { namespace { +template +static uint32_t +FindDollarIndex(const CharT *chars, size_t length) +{ + if (const CharT *p = js_strchr_limit(chars, '$', chars + length)) { + uint32_t dollarIndex = p - chars; + MOZ_ASSERT(dollarIndex < length); + return dollarIndex; + } + return UINT32_MAX; +} + struct ReplaceData { explicit ReplaceData(JSContext *cx) @@ -2468,13 +2480,10 @@ struct ReplaceData elembase = nullptr; repstr = string; - const jschar *chars = repstr->chars(); - if (const jschar *p = js_strchr_limit(chars, '$', chars + repstr->length())) { - dollarIndex = p - chars; - MOZ_ASSERT(dollarIndex < repstr->length()); - } else { - dollarIndex = UINT32_MAX; - } + AutoCheckCannotGC nogc; + dollarIndex = string->hasLatin1Chars() + ? FindDollarIndex(string->latin1Chars(nogc), string->length()) + : FindDollarIndex(string->twoByteChars(nogc), string->length()); } inline void setReplacementFunction(JSObject *func) { @@ -4623,17 +4632,24 @@ js_strdup(js::ThreadSafeContext *cx, const jschar *s) return ret; } -jschar * -js_strchr_limit(const jschar *s, jschar c, const jschar *limit) +template +const CharT * +js_strchr_limit(const CharT *s, jschar c, const CharT *limit) { while (s < limit) { if (*s == c) - return (jschar *)s; + return s; s++; } return nullptr; } +template const Latin1Char * +js_strchr_limit(const Latin1Char *s, jschar c, const Latin1Char *limit); + +template const jschar * +js_strchr_limit(const jschar *s, jschar c, const jschar *limit); + jschar * js::InflateString(ThreadSafeContext *cx, const char *bytes, size_t *lengthp) { diff --git a/js/src/jsstr.h b/js/src/jsstr.h index 1ad13b362ad..1df71628bc6 100644 --- a/js/src/jsstr.h +++ b/js/src/jsstr.h @@ -231,8 +231,9 @@ js_strlen(const jschar *s); extern int32_t js_strcmp(const jschar *lhs, const jschar *rhs); -extern jschar * -js_strchr_limit(const jschar *s, jschar c, const jschar *limit); +template +extern const CharT * +js_strchr_limit(const CharT *s, jschar c, const CharT *limit); static MOZ_ALWAYS_INLINE void js_strncpy(jschar *dst, const jschar *src, size_t nelem) From 14eb15d66201ba6234fa45fc788b2f4a59331b6d Mon Sep 17 00:00:00 2001 From: Jan de Mooij Date: Thu, 19 Jun 2014 12:59:46 +0200 Subject: [PATCH 03/60] Bug 1019585 part 5 - Make BuildDollarReplacement handle Latin1 strings. r=terrence --- js/src/jit-test/tests/latin1/replace.js | 42 ++++++++++ js/src/jsstr.cpp | 100 +++++++++++++++--------- 2 files changed, 104 insertions(+), 38 deletions(-) create mode 100644 js/src/jit-test/tests/latin1/replace.js diff --git a/js/src/jit-test/tests/latin1/replace.js b/js/src/jit-test/tests/latin1/replace.js new file mode 100644 index 00000000000..f4abd37f854 --- /dev/null +++ b/js/src/jit-test/tests/latin1/replace.js @@ -0,0 +1,42 @@ +function testDollarReplacement() { + // Latin1 input, pat and replacement + var s = toLatin1("Foobarbaz123"); + var pat = toLatin1("bar"); + assertEq(s.replace(pat, toLatin1("AA")), "FooAAbaz123"); + assertEq(s.replace(pat, toLatin1("A$$A")), "FooA$Abaz123"); + assertEq(s.replace(pat, toLatin1("A$`A")), "FooAFooAbaz123"); + assertEq(s.replace(pat, toLatin1("A$&A")), "FooAbarAbaz123"); + assertEq(s.replace(pat, toLatin1("A$'A")), "FooAbaz123Abaz123"); + + // Latin1 input and pat, TwoByte replacement + assertEq(s.replace(pat, "A\u1200"), "FooA\u1200baz123"); + assertEq(s.replace(pat, "A$$\u1200"), "FooA$\u1200baz123"); + assertEq(s.replace(pat, "A$`\u1200"), "FooAFoo\u1200baz123"); + assertEq(s.replace(pat, "A$&\u1200"), "FooAbar\u1200baz123"); + assertEq(s.replace(pat, "A$'\u1200"), "FooAbaz123\u1200baz123"); + + // TwoByte input, Latin1 pat and replacement + s = "Foobarbaz123\u1200"; + assertEq(s.replace(pat, toLatin1("A")), "FooAbaz123\u1200"); + assertEq(s.replace(pat, toLatin1("A$$")), "FooA$baz123\u1200"); + assertEq(s.replace(pat, toLatin1("A$`")), "FooAFoobaz123\u1200"); + assertEq(s.replace(pat, toLatin1("A$&")), "FooAbarbaz123\u1200"); + assertEq(s.replace(pat, toLatin1("A$'")), "FooAbaz123\u1200baz123\u1200"); + + // TwoByte input and pat, Latin1 replacement + s = "Foobar\u1200baz123"; + pat += "\u1200"; + assertEq(s.replace(pat, toLatin1("AB")), "FooABbaz123"); + assertEq(s.replace(pat, toLatin1("A$$B")), "FooA$Bbaz123"); + assertEq(s.replace(pat, toLatin1("A$`B")), "FooAFooBbaz123"); + assertEq(s.replace(pat, toLatin1("A$&B")), "FooAbar\u1200Bbaz123"); + assertEq(s.replace(pat, toLatin1("A$'B")), "FooAbaz123Bbaz123"); + + // TwoByte input, pat and replacement + assertEq(s.replace(pat, "A\u1300"), "FooA\u1300baz123"); + assertEq(s.replace(pat, "A$$\u1300"), "FooA$\u1300baz123"); + assertEq(s.replace(pat, "A$`\u1300"), "FooAFoo\u1300baz123"); + assertEq(s.replace(pat, "A$&\u1300"), "FooAbar\u1200\u1300baz123"); + assertEq(s.replace(pat, "A$'\u1300"), "FooAbaz123\u1300baz123"); +} +testDollarReplacement(); diff --git a/js/src/jsstr.cpp b/js/src/jsstr.cpp index 55d26d047c9..96e30e649c8 100644 --- a/js/src/jsstr.cpp +++ b/js/src/jsstr.cpp @@ -2904,6 +2904,57 @@ BuildFlatReplacement(JSContext *cx, HandleString textstr, HandleString repstr, return true; } +template +static bool +AppendDollarReplacement(StringBuffer &newReplaceChars, size_t firstDollarIndex, + const FlatMatch &fm, JSLinearString *text, + const CharT *repChars, size_t repLength) +{ + JS_ASSERT(firstDollarIndex < repLength); + + size_t matchStart = fm.match(); + size_t matchLimit = matchStart + fm.patternLength(); + + /* Move the pre-dollar chunk in bulk. */ + newReplaceChars.infallibleAppend(repChars, firstDollarIndex); + + /* Move the rest char-by-char, interpreting dollars as we encounter them. */ + const CharT *repLimit = repChars + repLength; + for (const CharT *it = repChars + firstDollarIndex; it < repLimit; ++it) { + if (*it != '$' || it == repLimit - 1) { + if (!newReplaceChars.append(*it)) + return false; + continue; + } + + switch (*(it + 1)) { + case '$': /* Eat one of the dollars. */ + if (!newReplaceChars.append(*it)) + return false; + break; + case '&': + if (!newReplaceChars.appendSubstring(text, matchStart, matchLimit - matchStart)) + return false; + break; + case '`': + if (!newReplaceChars.appendSubstring(text, 0, matchStart)) + return false; + break; + case '\'': + if (!newReplaceChars.appendSubstring(text, matchLimit, text->length() - matchLimit)) + return false; + break; + default: /* The dollar we saw was not special (no matter what its mother told it). */ + if (!newReplaceChars.append(*it)) + return false; + continue; + } + ++it; /* We always eat an extra char in the above switch. */ + } + + return true; +} + /* * Perform a linear-scan dollar substitution on the replacement text, * constructing a result string that looks like: @@ -2935,45 +2986,18 @@ BuildDollarReplacement(JSContext *cx, JSString *textstrArg, JSLinearString *reps if (!newReplaceChars.reserve(textstr->length() - fm.patternLength() + repstr->length())) return false; - JS_ASSERT(firstDollarIndex < repstr->length()); - - /* Move the pre-dollar chunk in bulk. */ - newReplaceChars.infallibleAppend(repstr->chars(), firstDollarIndex); - - /* Move the rest char-by-char, interpreting dollars as we encounter them. */ - const jschar *textchars = textstr->chars(); - const jschar *repstrLimit = repstr->chars() + repstr->length(); - for (const jschar *it = repstr->chars() + firstDollarIndex; it < repstrLimit; ++it) { - if (*it != '$' || it == repstrLimit - 1) { - if (!newReplaceChars.append(*it)) - return false; - continue; - } - - switch (*(it + 1)) { - case '$': /* Eat one of the dollars. */ - if (!newReplaceChars.append(*it)) - return false; - break; - case '&': - if (!newReplaceChars.append(textchars + matchStart, textchars + matchLimit)) - return false; - break; - case '`': - if (!newReplaceChars.append(textchars, textchars + matchStart)) - return false; - break; - case '\'': - if (!newReplaceChars.append(textchars + matchLimit, textchars + textstr->length())) - return false; - break; - default: /* The dollar we saw was not special (no matter what its mother told it). */ - if (!newReplaceChars.append(*it)) - return false; - continue; - } - ++it; /* We always eat an extra char in the above switch. */ + bool res; + if (repstr->hasLatin1Chars()) { + AutoCheckCannotGC nogc; + res = AppendDollarReplacement(newReplaceChars, firstDollarIndex, fm, textstr, + repstr->latin1Chars(nogc), repstr->length()); + } else { + AutoCheckCannotGC nogc; + res = AppendDollarReplacement(newReplaceChars, firstDollarIndex, fm, textstr, + repstr->twoByteChars(nogc), repstr->length()); } + if (!res) + return false; RootedString leftSide(cx, js_NewDependentString(cx, textstr, 0, matchStart)); if (!leftSide) From efc0481224362b5ff05c928abf1833a02f416424 Mon Sep 17 00:00:00 2001 From: Ed Morley Date: Thu, 19 Jun 2014 13:19:56 +0100 Subject: [PATCH 04/60] Backed out changeset d346871db5f6 (bug 1020697) for intermittent test failures --- content/base/public/nsContentUtils.h | 7 ++---- content/base/src/nsContentUtils.cpp | 22 ++---------------- content/html/content/src/HTMLInputElement.cpp | 19 ++++++++++++--- .../html/content/src/HTMLSelectElement.cpp | 23 ++----------------- content/html/content/src/HTMLSelectElement.h | 7 ------ .../test/forms/test_input_autocomplete.html | 16 +++++-------- dom/webidl/HTMLSelectElement.webidl | 2 -- 7 files changed, 28 insertions(+), 68 deletions(-) diff --git a/content/base/public/nsContentUtils.h b/content/base/public/nsContentUtils.h index 4c62445e605..09dc6b9c33b 100644 --- a/content/base/public/nsContentUtils.h +++ b/content/base/public/nsContentUtils.h @@ -2040,11 +2040,8 @@ public: * * @return whether aAttr was valid and can be cached. */ - static AutocompleteAttrState - SerializeAutocompleteAttribute(const nsAttrValue* aAttr, - nsAString& aResult, - AutocompleteAttrState aCachedState = - eAutocompleteAttrState_Unknown); + static AutocompleteAttrState SerializeAutocompleteAttribute(const nsAttrValue* aAttr, + nsAString& aResult); /** * This will parse aSource, to extract the value of the pseudo attribute diff --git a/content/base/src/nsContentUtils.cpp b/content/base/src/nsContentUtils.cpp index ade00aca5eb..b1cd6ca1b67 100644 --- a/content/base/src/nsContentUtils.cpp +++ b/content/base/src/nsContentUtils.cpp @@ -855,26 +855,8 @@ nsContentUtils::IsAutocompleteEnabled(nsIDOMHTMLInputElement* aInput) nsContentUtils::AutocompleteAttrState nsContentUtils::SerializeAutocompleteAttribute(const nsAttrValue* aAttr, - nsAString& aResult, - AutocompleteAttrState aCachedState) + nsAString& aResult) { - if (!aAttr || - aCachedState == nsContentUtils::eAutocompleteAttrState_Invalid) { - return aCachedState; - } - - if (aCachedState == nsContentUtils::eAutocompleteAttrState_Valid) { - uint32_t atomCount = aAttr->GetAtomCount(); - for (uint32_t i = 0; i < atomCount; i++) { - if (i != 0) { - aResult.Append(' '); - } - aResult.Append(nsDependentAtomString(aAttr->AtomAt(i))); - } - nsContentUtils::ASCIIToLower(aResult); - return aCachedState; - } - AutocompleteAttrState state = InternalSerializeAutocompleteAttribute(aAttr, aResult); if (state == eAutocompleteAttrState_Valid) { ASCIIToLower(aResult); @@ -891,7 +873,7 @@ nsContentUtils::SerializeAutocompleteAttribute(const nsAttrValue* aAttr, */ nsContentUtils::AutocompleteAttrState nsContentUtils::InternalSerializeAutocompleteAttribute(const nsAttrValue* aAttrVal, - nsAString& aResult) + nsAString& aResult) { // No sandbox attribute so we are done if (!aAttrVal) { diff --git a/content/html/content/src/HTMLInputElement.cpp b/content/html/content/src/HTMLInputElement.cpp index 5f51cb6269f..a509f5b1c66 100644 --- a/content/html/content/src/HTMLInputElement.cpp +++ b/content/html/content/src/HTMLInputElement.cpp @@ -1520,10 +1520,23 @@ HTMLInputElement::GetAutocomplete(nsAString& aValue) { aValue.Truncate(0); const nsAttrValue* attributeVal = GetParsedAttr(nsGkAtoms::autocomplete); + if (!attributeVal || + mAutocompleteAttrState == nsContentUtils::eAutocompleteAttrState_Invalid) { + return NS_OK; + } + if (mAutocompleteAttrState == nsContentUtils::eAutocompleteAttrState_Valid) { + uint32_t atomCount = attributeVal->GetAtomCount(); + for (uint32_t i = 0; i < atomCount; i++) { + if (i != 0) { + aValue.Append(' '); + } + aValue.Append(nsDependentAtomString(attributeVal->AtomAt(i))); + } + nsContentUtils::ASCIIToLower(aValue); + return NS_OK; + } - mAutocompleteAttrState = - nsContentUtils::SerializeAutocompleteAttribute(attributeVal, aValue, - mAutocompleteAttrState); + mAutocompleteAttrState = nsContentUtils::SerializeAutocompleteAttribute(attributeVal, aValue); return NS_OK; } diff --git a/content/html/content/src/HTMLSelectElement.cpp b/content/html/content/src/HTMLSelectElement.cpp index 088cf3d75f0..314d64c4771 100644 --- a/content/html/content/src/HTMLSelectElement.cpp +++ b/content/html/content/src/HTMLSelectElement.cpp @@ -104,7 +104,6 @@ HTMLSelectElement::HTMLSelectElement(already_AddRefed& aNodeInfo, FromParser aFromParser) : nsGenericHTMLFormElementWithState(aNodeInfo), mOptions(new HTMLOptionsCollection(MOZ_THIS_IN_INITIALIZER_LIST())), - mAutocompleteAttrState(nsContentUtils::eAutocompleteAttrState_Unknown), mIsDoneAddingChildren(!aFromParser), mDisabledChanged(false), mMutating(false), @@ -178,16 +177,6 @@ HTMLSelectElement::SetCustomValidity(const nsAString& aError) return NS_OK; } -void -HTMLSelectElement::GetAutocomplete(DOMString& aValue) -{ - const nsAttrValue* attributeVal = GetParsedAttr(nsGkAtoms::autocomplete); - - mAutocompleteAttrState = - nsContentUtils::SerializeAutocompleteAttribute(attributeVal, aValue, - mAutocompleteAttrState); -} - NS_IMETHODIMP HTMLSelectElement::GetForm(nsIDOMHTMLFormElement** aForm) { @@ -1344,9 +1333,6 @@ HTMLSelectElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName, UpdateBarredFromConstraintValidation(); } else if (aName == nsGkAtoms::required) { UpdateValueMissingValidityState(); - } else if (aName == nsGkAtoms::autocomplete) { - // Clear the cached @autocomplete attribute state - mAutocompleteAttrState = nsContentUtils::eAutocompleteAttrState_Unknown; } UpdateState(aNotify); @@ -1434,13 +1420,8 @@ HTMLSelectElement::ParseAttribute(int32_t aNamespaceID, const nsAString& aValue, nsAttrValue& aResult) { - if (kNameSpaceID_None == aNamespaceID) { - if (aAttribute == nsGkAtoms::size) { - return aResult.ParsePositiveIntValue(aValue); - } else if (aAttribute == nsGkAtoms::autocomplete) { - aResult.ParseAtomArray(aValue); - return true; - } + if (aAttribute == nsGkAtoms::size && kNameSpaceID_None == aNamespaceID) { + return aResult.ParsePositiveIntValue(aValue); } return nsGenericHTMLElement::ParseAttribute(aNamespaceID, aAttribute, aValue, aResult); diff --git a/content/html/content/src/HTMLSelectElement.h b/content/html/content/src/HTMLSelectElement.h index 5989f0f5ae0..f70f9fae1d0 100644 --- a/content/html/content/src/HTMLSelectElement.h +++ b/content/html/content/src/HTMLSelectElement.h @@ -17,7 +17,6 @@ #include "nsCOMPtr.h" #include "nsError.h" #include "mozilla/dom/HTMLFormElement.h" -#include "nsContentUtils.h" class nsContentList; class nsIDOMHTMLOptionElement; @@ -160,11 +159,6 @@ public: { SetHTMLBoolAttr(nsGkAtoms::autofocus, aVal, aRv); } - void GetAutocomplete(DOMString& aValue); - void SetAutocomplete(const nsAString& aValue, ErrorResult& aRv) - { - SetHTMLAttr(nsGkAtoms::autocomplete, aValue, aRv); - } bool Disabled() const { return GetBoolAttr(nsGkAtoms::disabled); @@ -611,7 +605,6 @@ protected: /** The options[] array */ nsRefPtr mOptions; - nsContentUtils::AutocompleteAttrState mAutocompleteAttrState; /** false if the parser is in the middle of adding children. */ bool mIsDoneAddingChildren; /** true if our disabled state has changed from the default **/ diff --git a/content/html/content/test/forms/test_input_autocomplete.html b/content/html/content/test/forms/test_input_autocomplete.html index 201049eabba..63a2811cfc1 100644 --- a/content/html/content/test/forms/test_input_autocomplete.html +++ b/content/html/content/test/forms/test_input_autocomplete.html @@ -13,8 +13,7 @@ Test @autocomplete on

@@ -70,8 +69,9 @@ var values = [
 ];
 
 var types = [undefined, "hidden", "text", "search"]; // Valid types for all non-multiline hints.
+var field = document.getElementById("field");
 
-function checkAutocompleteValues(field, type) {
+function checkAutocompleteValues(type) {
   for (var test of values) {
     if (typeof(test[0]) === "undefined")
       field.removeAttribute("autocomplete");
@@ -83,18 +83,14 @@ function checkAutocompleteValues(field, type) {
 }
 
 function start() {
-  var inputField = document.getElementById("input-field");
   for (var type of types) {
     // Switch the input type
     if (typeof(type) === "undefined")
-      inputField.removeAttribute("type");
+      field.removeAttribute("type");
     else
-      inputField.type = type;
-    checkAutocompleteValues(inputField, type || "");
+      field.type = type;
+    checkAutocompleteValues(type || "");
   }
-
-  var selectField = document.getElementById("select-field");
-  checkAutocompleteValues(selectField, "select");
   SimpleTest.finish();
 }
 
diff --git a/dom/webidl/HTMLSelectElement.webidl b/dom/webidl/HTMLSelectElement.webidl
index d1794cda116..06876160140 100644
--- a/dom/webidl/HTMLSelectElement.webidl
+++ b/dom/webidl/HTMLSelectElement.webidl
@@ -10,8 +10,6 @@
 interface HTMLSelectElement : HTMLElement {
   [SetterThrows, Pure]
            attribute boolean autofocus;
-  [Pref="dom.forms.autocomplete.experimental", SetterThrows, Pure]
-           attribute DOMString autocomplete;
   [SetterThrows, Pure]
            attribute boolean disabled;
   [Pure]

From dcc88181306a610ce4c0c012ce4e1e7c4542d4ab Mon Sep 17 00:00:00 2001
From: Jan de Mooij 
Date: Thu, 19 Jun 2014 14:28:36 +0200
Subject: [PATCH 05/60] Bug 1026438 followup - Allow unaligned 16-bit loads in
 the ARM simulator, as irregexp emits them for Latin1 strings. r=nbp on IRC

---
 js/src/jit/arm/Simulator-arm.cpp | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/js/src/jit/arm/Simulator-arm.cpp b/js/src/jit/arm/Simulator-arm.cpp
index 49fcfe44668..438601b8e74 100644
--- a/js/src/jit/arm/Simulator-arm.cpp
+++ b/js/src/jit/arm/Simulator-arm.cpp
@@ -1491,8 +1491,8 @@ Simulator::setCallResult(int64_t res)
 int
 Simulator::readW(int32_t addr, SimInstruction *instr)
 {
-    // The regexp engines emit unaligned loads, so we don't check for them here
-    // like the other methods below.
+    // The regexp engine emits unaligned loads, so we don't check for them here
+    // like most of the other methods do.
     intptr_t *ptr = reinterpret_cast(addr);
     return *ptr;
 }
@@ -1512,13 +1512,10 @@ Simulator::writeW(int32_t addr, int value, SimInstruction *instr)
 uint16_t
 Simulator::readHU(int32_t addr, SimInstruction *instr)
 {
-    if ((addr & 1) == 0) {
-        uint16_t *ptr = reinterpret_cast(addr);
-        return *ptr;
-    }
-    printf("Unaligned unsigned halfword read at 0x%08x, pc=%p\n", addr, instr);
-    MOZ_CRASH();
-    return 0;
+    // The regexp engine emits unaligned loads, so we don't check for them here
+    // like most of the other methods do.
+    uint16_t *ptr = reinterpret_cast(addr);
+    return *ptr;
 }
 
 int16_t

From 3f01e31e442e5ba1b00ba0b93645eea1ff604336 Mon Sep 17 00:00:00 2001
From: "Brian R. Bondy" 
Date: Tue, 17 Jun 2014 22:44:54 -0400
Subject: [PATCH 06/60] Bug 775458 - Microsoft Security Essentials causes slow
 update fix. r=rstrong

---
 .../installer/windows/nsis/maintenanceservice_installer.nsi | 6 +++---
 .../components/maintenanceservice/maintenanceservice.cpp    | 4 ++++
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/browser/installer/windows/nsis/maintenanceservice_installer.nsi b/browser/installer/windows/nsis/maintenanceservice_installer.nsi
index 5745edd9ed7..92e43f12de5 100644
--- a/browser/installer/windows/nsis/maintenanceservice_installer.nsi
+++ b/browser/installer/windows/nsis/maintenanceservice_installer.nsi
@@ -190,11 +190,11 @@ Section "MaintenanceService"
   ${GetParameters} $0
   ${GetOptions} "$0" "/Upgrade" $0
   ${If} ${Errors}
-    nsExec::Exec '"$INSTDIR\$TempMaintServiceName" install'
+    ExecWait '"$INSTDIR\$TempMaintServiceName" install'
   ${Else}
     ; The upgrade cmdline is the same as install except
     ; It will fail if the service isn't already installed.
-    nsExec::Exec '"$INSTDIR\$TempMaintServiceName" upgrade'
+    ExecWait '"$INSTDIR\$TempMaintServiceName" upgrade'
   ${EndIf}
 
   WriteUninstaller "$INSTDIR\Uninstall.exe"
@@ -255,7 +255,7 @@ FunctionEnd
 
 Section "Uninstall"
   ; Delete the service so that no updates will be attempted
-  nsExec::Exec '"$INSTDIR\maintenanceservice.exe" uninstall'
+  ExecWait '"$INSTDIR\maintenanceservice.exe" uninstall'
 
   Push "$INSTDIR\updater.ini"
   Call un.RenameDelete
diff --git a/toolkit/components/maintenanceservice/maintenanceservice.cpp b/toolkit/components/maintenanceservice/maintenanceservice.cpp
index fd591559a41..2e453af6998 100644
--- a/toolkit/components/maintenanceservice/maintenanceservice.cpp
+++ b/toolkit/components/maintenanceservice/maintenanceservice.cpp
@@ -15,6 +15,10 @@
 #include "uachelper.h"
 #include "updatehelper.h"
 
+// Link w/ subsystem window so we don't get a console when executing
+// this binary through the installer.
+#pragma comment(linker, "/SUBSYSTEM:windows")
+
 SERVICE_STATUS gSvcStatus = { 0 }; 
 SERVICE_STATUS_HANDLE gSvcStatusHandle = nullptr; 
 HANDLE gWorkDoneEvent = nullptr;

From 46339827a721e7267a8d48bad6ecbf7aaf17a061 Mon Sep 17 00:00:00 2001
From: Kartikaya Gupta 
Date: Thu, 19 Jun 2014 09:27:31 -0400
Subject: [PATCH 07/60] Bug 1026756 - Detect when a scroll offset update is
 going to remove checkerboarding, and don't leave things in a low-precision
 state. r=Cwiiis

---
 gfx/layers/client/TiledContentClient.cpp | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/gfx/layers/client/TiledContentClient.cpp b/gfx/layers/client/TiledContentClient.cpp
index 2c52bb27fde..c7eb78ea541 100644
--- a/gfx/layers/client/TiledContentClient.cpp
+++ b/gfx/layers/client/TiledContentClient.cpp
@@ -208,7 +208,17 @@ SharedFrameMetricsHelper::UpdateFromCompositorFrameMetrics(
   // When not a low precision pass and the page is in danger of checker boarding
   // abort update.
   if (!aLowPrecision && !mProgressiveUpdateWasInDanger) {
-    if (AboutToCheckerboard(contentMetrics, compositorMetrics)) {
+    bool scrollUpdatePending = contentMetrics.GetScrollOffsetUpdated() &&
+        contentMetrics.GetScrollGeneration() != compositorMetrics.GetScrollGeneration();
+    // If scrollUpdatePending is true, then that means the content-side
+    // metrics has a new scroll offset that is going to be forced into the
+    // compositor but it hasn't gotten there yet.
+    // Even though right now comparing the metrics might indicate we're
+    // about to checkerboard (and that's true), the checkerboarding will
+    // disappear as soon as the new scroll offset update is processed
+    // on the compositor side. To avoid leaving things in a low-precision
+    // paint, we need to detect and handle this case (bug 1026756).
+    if (!scrollUpdatePending && AboutToCheckerboard(contentMetrics, compositorMetrics)) {
       mProgressiveUpdateWasInDanger = true;
       return true;
     }

From 82c59d285303bf8354d007aaa0ab9a6ec421c6f9 Mon Sep 17 00:00:00 2001
From: Kartikaya Gupta 
Date: Thu, 19 Jun 2014 09:27:32 -0400
Subject: [PATCH 08/60] Bug 1021248 - Update the low-res tiles even when not in
 risk of checkerboarding. r=Cwiiis

---
 gfx/layers/client/TiledContentClient.cpp | 44 ++++++++----------------
 gfx/layers/client/TiledContentClient.h   |  3 --
 2 files changed, 14 insertions(+), 33 deletions(-)

diff --git a/gfx/layers/client/TiledContentClient.cpp b/gfx/layers/client/TiledContentClient.cpp
index c7eb78ea541..77c53d5e914 100644
--- a/gfx/layers/client/TiledContentClient.cpp
+++ b/gfx/layers/client/TiledContentClient.cpp
@@ -126,8 +126,6 @@ TiledContentClient::UseTiledLayerBuffer(TiledBufferType aType)
 }
 
 SharedFrameMetricsHelper::SharedFrameMetricsHelper()
-  : mLastProgressiveUpdateWasLowPrecision(false)
-  , mProgressiveUpdateWasInDanger(false)
 {
   MOZ_COUNT_CTOR(SharedFrameMetricsHelper);
 }
@@ -175,17 +173,6 @@ SharedFrameMetricsHelper::UpdateFromCompositorFrameMetrics(
   aCompositionBounds = ParentLayerRect(compositorMetrics.mCompositionBounds);
   aZoom = compositorMetrics.GetZoomToParent();
 
-  // Reset the checkerboard risk flag when switching to low precision
-  // rendering.
-  if (aLowPrecision && !mLastProgressiveUpdateWasLowPrecision) {
-    // Skip low precision rendering until we're at risk of checkerboarding.
-    if (!mProgressiveUpdateWasInDanger) {
-      return true;
-    }
-    mProgressiveUpdateWasInDanger = false;
-  }
-  mLastProgressiveUpdateWasLowPrecision = aLowPrecision;
-
   // Always abort updates if the resolution has changed. There's no use
   // in drawing at the incorrect resolution.
   if (!FuzzyEquals(compositorMetrics.GetZoom().scale, contentMetrics.GetZoom().scale)) {
@@ -205,23 +192,20 @@ SharedFrameMetricsHelper::UpdateFromCompositorFrameMetrics(
     return false;
   }
 
-  // When not a low precision pass and the page is in danger of checker boarding
-  // abort update.
-  if (!aLowPrecision && !mProgressiveUpdateWasInDanger) {
-    bool scrollUpdatePending = contentMetrics.GetScrollOffsetUpdated() &&
-        contentMetrics.GetScrollGeneration() != compositorMetrics.GetScrollGeneration();
-    // If scrollUpdatePending is true, then that means the content-side
-    // metrics has a new scroll offset that is going to be forced into the
-    // compositor but it hasn't gotten there yet.
-    // Even though right now comparing the metrics might indicate we're
-    // about to checkerboard (and that's true), the checkerboarding will
-    // disappear as soon as the new scroll offset update is processed
-    // on the compositor side. To avoid leaving things in a low-precision
-    // paint, we need to detect and handle this case (bug 1026756).
-    if (!scrollUpdatePending && AboutToCheckerboard(contentMetrics, compositorMetrics)) {
-      mProgressiveUpdateWasInDanger = true;
-      return true;
-    }
+  bool scrollUpdatePending = contentMetrics.GetScrollOffsetUpdated() &&
+      contentMetrics.GetScrollGeneration() != compositorMetrics.GetScrollGeneration();
+  // If scrollUpdatePending is true, then that means the content-side
+  // metrics has a new scroll offset that is going to be forced into the
+  // compositor but it hasn't gotten there yet.
+  // Even though right now comparing the metrics might indicate we're
+  // about to checkerboard (and that's true), the checkerboarding will
+  // disappear as soon as the new scroll offset update is processed
+  // on the compositor side. To avoid leaving things in a low-precision
+  // paint, we need to detect and handle this case (bug 1026756).
+  if (!aLowPrecision && !scrollUpdatePending && AboutToCheckerboard(contentMetrics, compositorMetrics)) {
+    TILING_PRLOG_OBJ(("TILING: Checkerboard abort content %s\n", tmpstr.get()), contentMetrics);
+    TILING_PRLOG_OBJ(("TILING: Checkerboard abort compositor %s\n", tmpstr.get()), compositorMetrics);
+    return true;
   }
 
   // Abort drawing stale low-precision content if there's a more recent
diff --git a/gfx/layers/client/TiledContentClient.h b/gfx/layers/client/TiledContentClient.h
index bdccdfc3a88..a3b28237658 100644
--- a/gfx/layers/client/TiledContentClient.h
+++ b/gfx/layers/client/TiledContentClient.h
@@ -336,9 +336,6 @@ public:
    */
   bool AboutToCheckerboard(const FrameMetrics& aContentMetrics,
                            const FrameMetrics& aCompositorMetrics);
-private:
-  bool mLastProgressiveUpdateWasLowPrecision;
-  bool mProgressiveUpdateWasInDanger;
 };
 
 /**

From 0ee6f5488cf8fe804371ab957c7952bd5f434e6f Mon Sep 17 00:00:00 2001
From: Jan de Mooij 
Date: Thu, 19 Jun 2014 15:43:32 +0200
Subject: [PATCH 09/60] Bug 1019585 part 6 - Make str_replace regex case handle
 Latin1 strings. r=terrence

---
 js/src/jit-test/tests/latin1/replace.js | 55 ++++++++++++++
 js/src/jsstr.cpp                        | 99 +++++++++++++++----------
 js/src/vm/StringBuffer.h                |  2 +-
 3 files changed, 114 insertions(+), 42 deletions(-)

diff --git a/js/src/jit-test/tests/latin1/replace.js b/js/src/jit-test/tests/latin1/replace.js
index f4abd37f854..5ba59ab463e 100644
--- a/js/src/jit-test/tests/latin1/replace.js
+++ b/js/src/jit-test/tests/latin1/replace.js
@@ -40,3 +40,58 @@ function testDollarReplacement() {
     assertEq(s.replace(pat, "A$'\u1300"), "FooAbaz123\u1300baz123");
 }
 testDollarReplacement();
+
+function testRegExp() {
+    var s = toLatin1("Foobar123bar234");
+    assertEq(s.replace(/bar\d\d/, "456"), "Foo4563bar234");
+
+    // Latin1 input and replacement
+    var re1 = /bar\d\d/;
+    var re2 = /bar\d\d/g;
+    assertEq(s.replace(re1, toLatin1("789")), "Foo7893bar234");
+    assertEq(s.replace(re2, toLatin1("789\u00ff")), "Foo789\u00ff3789\u00ff4");
+
+    // Latin1 input, TwoByte replacement
+    assertEq(s.replace(re1, "789\u1200"), "Foo789\u12003bar234");
+    assertEq(s.replace(re2, "789\u1200"), "Foo789\u12003789\u12004");
+
+    // TwoByte input, Latin1 replacement
+    s += "\u1200";
+    assertEq(s.replace(re1, toLatin1("7890")), "Foo78903bar234\u1200");
+    assertEq(s.replace(re2, toLatin1("7890\u00ff")), "Foo7890\u00ff37890\u00ff4\u1200");
+
+    // TwoByte input and replacement
+    assertEq(s.replace(re1, "789\u1200"), "Foo789\u12003bar234\u1200");
+    assertEq(s.replace(re2, "789\u1200"), "Foo789\u12003789\u12004\u1200");
+}
+testRegExp();
+
+function testRegExpDollar() {
+    var s = toLatin1("Foobar123bar2345");
+
+    // Latin1 input and replacement
+    var re1 = /bar\d\d/;
+    var re2 = /bar(\d\d)/g;
+    assertEq(s.replace(re1, toLatin1("--$&--")), "Foo--bar12--3bar2345");
+    assertEq(s.replace(re2, toLatin1("--$'\u00ff--")), "Foo--3bar2345\xFF--3--45\xFF--45");
+    assertEq(s.replace(re2, toLatin1("--$`--")), "Foo--Foo--3--Foobar123--45");
+
+    // Latin1 input, TwoByte replacement
+    assertEq(s.replace(re1, "\u1200$$"), "Foo\u1200$3bar2345");
+    assertEq(s.replace(re2, "\u1200$1"), "Foo\u1200123\u12002345");
+    assertEq(s.replace(re2, "\u1200$'"), "Foo\u12003bar23453\u12004545");
+
+    // TwoByte input, Latin1 replacement
+    s += "\u1200";
+    assertEq(s.replace(re1, toLatin1("**$&**")), "Foo**bar12**3bar2345\u1200");
+    assertEq(s.replace(re2, toLatin1("**$1**")), "Foo**12**3**23**45\u1200");
+    assertEq(s.replace(re2, toLatin1("**$`**")), "Foo**Foo**3**Foobar123**45\u1200");
+    assertEq(s.replace(re2, toLatin1("**$'$$**")), "Foo**3bar2345\u1200$**3**45\u1200$**45\u1200");
+
+    // TwoByte input and replacement
+    assertEq(s.replace(re1, "**$&**\ueeee"), "Foo**bar12**\ueeee3bar2345\u1200");
+    assertEq(s.replace(re2, "**$1**\ueeee"), "Foo**12**\ueeee3**23**\ueeee45\u1200");
+    assertEq(s.replace(re2, "\ueeee**$`**"), "Foo\ueeee**Foo**3\ueeee**Foobar123**45\u1200");
+    assertEq(s.replace(re2, "\ueeee**$'$$**"), "Foo\ueeee**3bar2345\u1200$**3\ueeee**45\u1200$**45\u1200");
+}
+testRegExpDollar();
diff --git a/js/src/jsstr.cpp b/js/src/jsstr.cpp
index 96e30e649c8..f42702143ab 100644
--- a/js/src/jsstr.cpp
+++ b/js/src/jsstr.cpp
@@ -2559,8 +2559,9 @@ DoMatchForReplaceGlobal(JSContext *cx, RegExpStatics *res, HandleLinearString li
     return true;
 }
 
+template 
 static bool
-InterpretDollar(RegExpStatics *res, const jschar *dp, const jschar *ep,
+InterpretDollar(RegExpStatics *res, const CharT *bp, const CharT *dp, const CharT *ep,
                 ReplaceData &rdata, JSSubString *out, size_t *skip)
 {
     JS_ASSERT(*dp == '$');
@@ -2577,7 +2578,7 @@ InterpretDollar(RegExpStatics *res, const jschar *dp, const jschar *ep,
         if (num > res->getMatches().parenCount())
             return false;
 
-        const jschar *cp = dp + 2;
+        const CharT *cp = dp + 2;
         if (cp < ep && (dc = *cp, JS7_ISDEC(dc))) {
             unsigned tmp = 10 * num + JS7_UNDEC(dc);
             if (tmp <= res->getMatches().parenCount()) {
@@ -2603,7 +2604,7 @@ InterpretDollar(RegExpStatics *res, const jschar *dp, const jschar *ep,
     *skip = 2;
     switch (dc) {
       case '$':
-        out->init(rdata.repstr, dp - rdata.repstr->chars(), 1);
+        out->init(rdata.repstr, dp - bp, 1);
         return true;
       case '&':
         res->getLastMatch(out);
@@ -2621,6 +2622,45 @@ InterpretDollar(RegExpStatics *res, const jschar *dp, const jschar *ep,
     return false;
 }
 
+template 
+static bool
+FindReplaceLengthString(JSContext *cx, RegExpStatics *res, ReplaceData &rdata, size_t *sizep)
+{
+    JSLinearString *repstr = rdata.repstr;
+    CheckedInt replen = repstr->length();
+
+    if (rdata.dollarIndex != UINT32_MAX) {
+        AutoCheckCannotGC nogc;
+        MOZ_ASSERT(rdata.dollarIndex < repstr->length());
+        const CharT *bp = repstr->chars(nogc);
+        const CharT *dp = bp + rdata.dollarIndex;
+        const CharT *ep = bp + repstr->length();
+        do {
+            JSSubString sub;
+            size_t skip;
+            if (InterpretDollar(res, bp, dp, ep, rdata, &sub, &skip)) {
+                if (sub.length > skip)
+                    replen += sub.length - skip;
+                else
+                    replen -= skip - sub.length;
+                dp += skip;
+            } else {
+                dp++;
+            }
+
+            dp = js_strchr_limit(dp, '$', ep);
+        } while (dp);
+    }
+
+    if (!replen.isValid()) {
+        js_ReportAllocationOverflow(cx);
+        return false;
+    }
+
+    *sizep = replen.value();
+    return true;
+}
+
 static bool
 FindReplaceLength(JSContext *cx, RegExpStatics *res, ReplaceData &rdata, size_t *sizep)
 {
@@ -2710,36 +2750,9 @@ FindReplaceLength(JSContext *cx, RegExpStatics *res, ReplaceData &rdata, size_t
         return true;
     }
 
-    JSLinearString *repstr = rdata.repstr;
-    CheckedInt replen = repstr->length();
-    if (rdata.dollarIndex != UINT32_MAX) {
-        MOZ_ASSERT(rdata.dollarIndex < repstr->length());
-        const jschar *dp = repstr->chars() + rdata.dollarIndex;
-        const jschar *ep = repstr->chars() + repstr->length();
-        do {
-            JSSubString sub;
-            size_t skip;
-            if (InterpretDollar(res, dp, ep, rdata, &sub, &skip)) {
-                if (sub.length > skip)
-                    replen += sub.length - skip;
-                else
-                    replen -= skip - sub.length;
-                dp += skip;
-            } else {
-                dp++;
-            }
-
-            dp = js_strchr_limit(dp, '$', ep);
-        } while (dp);
-    }
-
-    if (!replen.isValid()) {
-        js_ReportAllocationOverflow(cx);
-        return false;
-    }
-
-    *sizep = replen.value();
-    return true;
+    return rdata.repstr->hasLatin1Chars()
+           ? FindReplaceLengthString(cx, res, rdata, sizep)
+           : FindReplaceLengthString(cx, res, rdata, sizep);
 }
 
 /*
@@ -2747,17 +2760,19 @@ FindReplaceLength(JSContext *cx, RegExpStatics *res, ReplaceData &rdata, size_t
  * derived from FindReplaceLength), and has been inflated to TwoByte if
  * necessary.
  */
+template 
 static void
 DoReplace(RegExpStatics *res, ReplaceData &rdata)
 {
+    AutoCheckCannotGC nogc;
     JSLinearString *repstr = rdata.repstr;
-    const jschar *bp = repstr->chars();
-    const jschar *cp = bp;
+    const CharT *bp = repstr->chars(nogc);
+    const CharT *cp = bp;
 
     if (rdata.dollarIndex != UINT32_MAX) {
         MOZ_ASSERT(rdata.dollarIndex < repstr->length());
-        const jschar *dp = bp + rdata.dollarIndex;
-        const jschar *ep = bp + repstr->length();
+        const CharT *dp = bp + rdata.dollarIndex;
+        const CharT *ep = bp + repstr->length();
         do {
             /* Move one of the constant portions of the replacement value. */
             size_t len = dp - cp;
@@ -2766,7 +2781,7 @@ DoReplace(RegExpStatics *res, ReplaceData &rdata)
 
             JSSubString sub;
             size_t skip;
-            if (InterpretDollar(res, dp, ep, rdata, &sub, &skip)) {
+            if (InterpretDollar(res, bp, dp, ep, rdata, &sub, &skip)) {
                 rdata.sb.infallibleAppendSubstring(sub.base, sub.offset, sub.length);
                 cp += skip;
                 dp += skip;
@@ -2819,10 +2834,12 @@ ReplaceRegExp(JSContext *cx, RegExpStatics *res, ReplaceData &rdata)
         return false;
 
     /* Append skipped-over portion of the search value. */
-    const jschar *left = str.chars() + leftoff;
-    rdata.sb.infallibleAppend(left, leftlen);
+    rdata.sb.infallibleAppendSubstring(&str, leftoff, leftlen);
 
-    DoReplace(res, rdata);
+    if (rdata.repstr->hasLatin1Chars())
+        DoReplace(res, rdata);
+    else
+        DoReplace(res, rdata);
     return true;
 }
 
diff --git a/js/src/vm/StringBuffer.h b/js/src/vm/StringBuffer.h
index 27fbfde09a1..e563a5fe4f5 100644
--- a/js/src/vm/StringBuffer.h
+++ b/js/src/vm/StringBuffer.h
@@ -255,7 +255,7 @@ inline void
 StringBuffer::infallibleAppendSubstring(JSLinearString *base, size_t off, size_t len)
 {
     MOZ_ASSERT(off + len <= base->length());
-    MOZ_ASSERT(base->hasLatin1Chars() == isLatin1());
+    MOZ_ASSERT_IF(base->hasTwoByteChars(), isTwoByte());
 
     JS::AutoCheckCannotGC nogc;
     if (base->hasLatin1Chars())

From 932b5682ea20a637943410b0972e18cbe1749a0e Mon Sep 17 00:00:00 2001
From: Jan de Mooij 
Date: Thu, 19 Jun 2014 15:43:34 +0200
Subject: [PATCH 10/60] Bug 1019585 part 7 - Make
 StringRegExpGuard::flattenPattern handle Latin1 strings. r=terrence

---
 js/src/jit-test/tests/latin1/replace.js | 12 ++++++++
 js/src/jsstr.cpp                        | 39 +++++++++++++++++--------
 2 files changed, 39 insertions(+), 12 deletions(-)

diff --git a/js/src/jit-test/tests/latin1/replace.js b/js/src/jit-test/tests/latin1/replace.js
index 5ba59ab463e..3e6f4e88ce7 100644
--- a/js/src/jit-test/tests/latin1/replace.js
+++ b/js/src/jit-test/tests/latin1/replace.js
@@ -95,3 +95,15 @@ function testRegExpDollar() {
     assertEq(s.replace(re2, "\ueeee**$'$$**"), "Foo\ueeee**3bar2345\u1200$**3\ueeee**45\u1200$**45\u1200");
 }
 testRegExpDollar();
+
+function testFlattenPattern() {
+    var s = "abcdef[g]abc";
+
+    // Latin1 pattern
+    assertEq(s.replace(toLatin1("def[g]"), "--$&--", "gi"), "abc--def[g]--abc");
+
+    // TwoByte pattern
+    s = "abcdef[g]\u1200abc";
+    assertEq(s.replace("def[g]\u1200", "++$&++", "gi"), "abc++def[g]\u1200++abc");
+}
+testFlattenPattern();
diff --git a/js/src/jsstr.cpp b/js/src/jsstr.cpp
index f42702143ab..d6565e8cb49 100644
--- a/js/src/jsstr.cpp
+++ b/js/src/jsstr.cpp
@@ -2020,25 +2020,40 @@ class MOZ_STACK_CLASS StringRegExpGuard
      */
     static const size_t MAX_FLAT_PAT_LEN = 256;
 
-    static JSAtom *
-    flattenPattern(JSContext *cx, JSAtom *patstr)
+    template 
+    static bool
+    flattenPattern(StringBuffer &sb, const CharT *chars, size_t len)
     {
-        StringBuffer sb(cx);
-        if (!sb.reserve(patstr->length()))
-            return nullptr;
-
-        static const jschar ESCAPE_CHAR = '\\';
-        const jschar *chars = patstr->chars();
-        size_t len = patstr->length();
-        for (const jschar *it = chars; it != chars + len; ++it) {
+        static const char ESCAPE_CHAR = '\\';
+        for (const CharT *it = chars; it < chars + len; ++it) {
             if (IsRegExpMetaChar(*it)) {
                 if (!sb.append(ESCAPE_CHAR) || !sb.append(*it))
-                    return nullptr;
+                    return false;
             } else {
                 if (!sb.append(*it))
-                    return nullptr;
+                    return false;
             }
         }
+        return true;
+    }
+
+    static JSAtom *
+    flattenPattern(JSContext *cx, JSAtom *pat)
+    {
+        StringBuffer sb(cx);
+        if (!sb.reserve(pat->length()))
+            return nullptr;
+
+        if (pat->hasLatin1Chars()) {
+            AutoCheckCannotGC nogc;
+            if (!flattenPattern(sb, pat->latin1Chars(nogc), pat->length()))
+                return nullptr;
+        } else {
+            AutoCheckCannotGC nogc;
+            if (!flattenPattern(sb, pat->twoByteChars(nogc), pat->length()))
+                return nullptr;
+        }
+
         return sb.finishAtom();
     }
 

From 567f1d7bc3640ee6987c2b43f4a51d94b974944e Mon Sep 17 00:00:00 2001
From: Jan de Mooij 
Date: Thu, 19 Jun 2014 15:43:36 +0200
Subject: [PATCH 11/60] Bug 1019585 part 8 - Make StrReplaceRegexpRemove handle
 Latin1 strings. r=terrence

---
 js/src/jit-test/tests/latin1/replace.js | 17 +++++++++
 js/src/jsstr.cpp                        | 47 +++++++++++++++----------
 2 files changed, 46 insertions(+), 18 deletions(-)

diff --git a/js/src/jit-test/tests/latin1/replace.js b/js/src/jit-test/tests/latin1/replace.js
index 3e6f4e88ce7..d50aab42511 100644
--- a/js/src/jit-test/tests/latin1/replace.js
+++ b/js/src/jit-test/tests/latin1/replace.js
@@ -107,3 +107,20 @@ function testFlattenPattern() {
     assertEq(s.replace("def[g]\u1200", "++$&++", "gi"), "abc++def[g]\u1200++abc");
 }
 testFlattenPattern();
+
+function testReplaceEmpty() {
+    // Latin1
+    var s = toLatin1("--abcdefghijkl--abcdefghijkl--abcdefghijkl--abcdefghijkl");
+    assertEq(s.replace(/abcd[eE]/g, ""), "--fghijkl--fghijkl--fghijkl--fghijkl");
+
+    s = "--abcdEf--";
+    assertEq(s.replace(/abcd[eE]/g, ""), "--f--");
+
+    // TwoByte
+    s = "--abcdefghijkl--abcdefghijkl--abcdefghijkl--abcdefghijkl\u1200";
+    assertEq(s.replace(/abcd[eE]/g, ""), "--fghijkl--fghijkl--fghijkl--fghijkl\u1200");
+
+    s = "--abcdEf--\u1200";
+    assertEq(s.replace(/abcd[eE]/g, ""), "--f--\u1200");
+}
+testReplaceEmpty();
diff --git a/js/src/jsstr.cpp b/js/src/jsstr.cpp
index d6565e8cb49..6369ed66730 100644
--- a/js/src/jsstr.cpp
+++ b/js/src/jsstr.cpp
@@ -3063,25 +3063,35 @@ struct StringRange
     { }
 };
 
-static inline JSFatInlineString *
-FlattenSubstrings(JSContext *cx, const jschar *chars,
-                  const StringRange *ranges, size_t rangesLen, size_t outputLen)
+template 
+static void
+CopySubstringsToFatInline(JSFatInlineString *dest, const CharT *src, const StringRange *ranges,
+                          size_t rangesLen, size_t outputLen)
 {
-    JS_ASSERT(JSFatInlineString::twoByteLengthFits(outputLen));
+    CharT *buf = dest->init(outputLen);
+    size_t pos = 0;
+    for (size_t i = 0; i < rangesLen; i++) {
+        PodCopy(buf + pos, src + ranges[i].start, ranges[i].length);
+        pos += ranges[i].length;
+    }
 
+    MOZ_ASSERT(pos == outputLen);
+    buf[outputLen] = 0;
+}
+
+static inline JSFatInlineString *
+FlattenSubstrings(JSContext *cx, Handle flatStr, const StringRange *ranges,
+                  size_t rangesLen, size_t outputLen)
+{
     JSFatInlineString *str = js_NewGCFatInlineString(cx);
     if (!str)
         return nullptr;
 
-    jschar *buf = str->initTwoByte(outputLen);
-    size_t pos = 0;
-    for (size_t i = 0; i < rangesLen; i++) {
-        PodCopy(buf + pos, chars + ranges[i].start, ranges[i].length);
-        pos += ranges[i].length;
-    }
-    JS_ASSERT(pos == outputLen);
-
-    buf[outputLen] = 0;
+    AutoCheckCannotGC nogc;
+    if (flatStr->hasLatin1Chars())
+        CopySubstringsToFatInline(str, flatStr->latin1Chars(nogc), ranges, rangesLen, outputLen);
+    else
+        CopySubstringsToFatInline(str, flatStr->twoByteChars(nogc), ranges, rangesLen, outputLen);
     return str;
 }
 
@@ -3095,9 +3105,10 @@ AppendSubstrings(JSContext *cx, Handle flatStr,
     if (rangesLen == 1)
         return js_NewDependentString(cx, flatStr, ranges[0].start, ranges[0].length);
 
-    const jschar *chars = flatStr->getChars(cx);
-    if (!chars)
-        return nullptr;
+    bool isLatin1 = flatStr->hasLatin1Chars();
+    uint32_t fatInlineMaxLength = isLatin1
+                                  ? JSFatInlineString::MAX_LENGTH_LATIN1
+                                  : JSFatInlineString::MAX_LENGTH_TWO_BYTE;
 
     /* Collect substrings into a rope */
     size_t i = 0;
@@ -3109,7 +3120,7 @@ AppendSubstrings(JSContext *cx, Handle flatStr,
         size_t substrLen = 0;
         size_t end = i;
         for (; end < rangesLen; end++) {
-            if (substrLen + ranges[end].length > JSFatInlineString::MAX_LENGTH_TWO_BYTE)
+            if (substrLen + ranges[end].length > fatInlineMaxLength)
                 break;
             substrLen += ranges[end].length;
         }
@@ -3120,7 +3131,7 @@ AppendSubstrings(JSContext *cx, Handle flatStr,
             part = js_NewDependentString(cx, flatStr, sr.start, sr.length);
         } else {
             /* Copy the ranges (linearly) into a JSFatInlineString */
-            part = FlattenSubstrings(cx, chars, ranges + i, end - i, substrLen);
+            part = FlattenSubstrings(cx, flatStr, ranges + i, end - i, substrLen);
             i = end;
         }
 

From 03634785c2eae0a7ff3fb146d7d8fb19ee3796b5 Mon Sep 17 00:00:00 2001
From: Corentin Cos 
Date: Tue, 17 Jun 2014 00:32:18 +0200
Subject: [PATCH 12/60] Bug 1016413 - Implement reporting metadata with fmp4
 backend. r=rillian

There are 3 files modified in order to have the reporting work.

MP4Reader::ReadMetadata() has now its aTags parameter affected with
a certain MetadataTags structure which comes from MP4Demuxer::GetTags().

MP4Demuxer::GetTags() is in the mp4_demuxer's namespace, where a
structure mapping tags key to its char* value is set.

MP4Demuxer::GetTags() loops all along this mapping structure, and
checks for each key if there is metadata corresponding to it in the
current file's extracted metadata. If there is, it stores the current
key and its corresponding metadata value into a mozilla::MetadataTags
structure.
---
 content/media/fmp4/MP4Reader.cpp              |  2 +-
 .../binding/include/mp4_demuxer/mp4_demuxer.h |  2 +
 media/libstagefright/binding/mp4_demuxer.cpp  | 48 ++++++++++++++++++-
 3 files changed, 50 insertions(+), 2 deletions(-)

diff --git a/content/media/fmp4/MP4Reader.cpp b/content/media/fmp4/MP4Reader.cpp
index 58fd5763d43..819753e03fa 100644
--- a/content/media/fmp4/MP4Reader.cpp
+++ b/content/media/fmp4/MP4Reader.cpp
@@ -250,7 +250,7 @@ MP4Reader::ReadMetadata(MediaInfo* aInfo,
   }
 
   *aInfo = mInfo;
-  *aTags = nullptr;
+  *aTags = mDemuxer->GetTags();
 
   return NS_OK;
 }
diff --git a/media/libstagefright/binding/include/mp4_demuxer/mp4_demuxer.h b/media/libstagefright/binding/include/mp4_demuxer/mp4_demuxer.h
index 8b9953de33b..48604979f0c 100644
--- a/media/libstagefright/binding/include/mp4_demuxer/mp4_demuxer.h
+++ b/media/libstagefright/binding/include/mp4_demuxer/mp4_demuxer.h
@@ -8,6 +8,7 @@
 #include "nsAutoPtr.h"
 #include "mozilla/gfx/Rect.h"
 #include "mp4_demuxer/DecoderData.h"
+#include "AbstractMediaDecoder.h"
 
 namespace mp4_demuxer
 {
@@ -38,6 +39,7 @@ public:
   Microseconds Duration();
   bool CanSeek();
 
+  mozilla::MetadataTags* GetTags();
   bool HasValidAudio();
   bool HasValidVideo();
 
diff --git a/media/libstagefright/binding/mp4_demuxer.cpp b/media/libstagefright/binding/mp4_demuxer.cpp
index f55fc7fd3a6..16ba0e40ac9 100644
--- a/media/libstagefright/binding/mp4_demuxer.cpp
+++ b/media/libstagefright/binding/mp4_demuxer.cpp
@@ -8,7 +8,7 @@
 #include "media/stagefright/MetaData.h"
 #include "mp4_demuxer/Adts.h"
 #include "mp4_demuxer/mp4_demuxer.h"
-
+#include "mozilla/ArrayUtils.h"
 #include 
 
 using namespace stagefright;
@@ -16,6 +16,30 @@ using namespace stagefright;
 namespace mp4_demuxer
 {
 
+struct tagmap {
+  const uint32_t key;
+  const char* name;
+};
+
+const struct tagmap keys[] = {
+  { kKeyAlbum, "album" },
+  { kKeyArtist, "artist" },
+  { kKeyAlbumArtist, "albumArtist" },
+  { kKeyComposer, "composer" },
+  { kKeyGenre, "genre" },
+  { kKeyTitle, "title" },
+  { kKeyYear, "year" },
+  { kKeyAlbumArt, "albumArt" },
+  { kKeyAlbumArtMIME, "albumArtMIME" },
+  { kKeyAuthor, "author" },
+  { kKeyCDTrackNumber, "cdTrackNumber" },
+  { kKeyDiscNumber, "discNumber" },
+  { kKeyDate, "date" },
+  { kKeyWriter, "writer" },
+  { kKeyCompilation, "compilation" },
+  { kKeyLocation, "location" },
+};
+
 struct StageFrightPrivate
 {
   sp mExtractor;
@@ -80,6 +104,28 @@ MP4Demuxer::~MP4Demuxer()
   }
 }
 
+mozilla::MetadataTags*
+MP4Demuxer::GetTags()
+{
+  mozilla::MetadataTags* tags = new mozilla::MetadataTags;
+  sp metaData = mPrivate->mExtractor->getMetaData();
+  const char* value = nullptr;
+  nsCString cstringValue;
+  size_t key_count = mozilla::ArrayLength(keys);
+
+  for (size_t i = 0; i < key_count; i++) {
+    if (metaData->findCString(keys[i].key, &value)) {
+      MOZ_ASSERT(value);
+      cstringValue = nsCString(value);
+      if (IsUTF8(cstringValue)) {
+        tags->Put(nsCString(keys[i].name), cstringValue);
+      }
+    }
+  }
+
+  return tags;
+}
+
 bool
 MP4Demuxer::Init()
 {

From a32bc62ccdd440c0aaaeac2b2df76aadcb4d9b3b Mon Sep 17 00:00:00 2001
From: Corentin Cos 
Date: Tue, 17 Jun 2014 00:32:18 +0200
Subject: [PATCH 13/60] Bug 1016413 - Tests for fmp4 metadata backend.
 r=rillian

The reporting of metadata with fmp4 backend is tested here with the
file gizmo.metadata.mp4, and some changes are made on test_metadata.html
to integrate tests on mp4 files with restriction to certain platforms.
A 'type' field has also been added to gMetadataTests' elements in
manifest.js in order to correctly test the type with canPlayType method
for instance.
---
 content/media/test/gizmo.metadata.mp4 | Bin 0 -> 457374 bytes
 content/media/test/manifest.js        |  72 ++++++++++++++++++-----
 content/media/test/mochitest.ini      |   1 +
 content/media/test/test_metadata.html |  80 ++++++++++++++++++--------
 4 files changed, 116 insertions(+), 37 deletions(-)
 create mode 100644 content/media/test/gizmo.metadata.mp4

diff --git a/content/media/test/gizmo.metadata.mp4 b/content/media/test/gizmo.metadata.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..997f03644c7b5a0c3034621319849237fc8756ba
GIT binary patch
literal 457374
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�gyJJ!{kI2Scz;%<5gBwM_f*JjVPK9l8XzNhq5EWQ`dDK;82CzhX5u
zDT=6R&?fBbuFufqRJD_t_0Z!Az`KNrz1YP|LT=zr!x7cq0$MwvqC&c04)hOQthI=M
zmNcBB5+Q4**#$KBg>ig<=+ej(Lqukb8S%=T>c{qwI+AXENbvWc*@p82)y^|K8bt}t
ziz_7xv+29#6t9zwaw*uTc+W6}H3LnXIg6Tk4*ggxA1E|aACHLur0W-C00Y0{c?DYE
z(bk|8$$c%a6FE=)Dl>D{sKpbTgz{BD=T5<9NR%;9LC2XaQ%aNJlzfMo5G}pb|2UF`n|59=oDpP&S}2iu}pjdKiPWR>U}r`r;BO_7aONoeDviw8S6Tw;ohN*o<+^`u^)tyLM&2pj#M3|0qOLFj
z#7G8<@7L-AYt
z^{|S5*^imKncRO6dXqUb;U}AtcMAvmj6~nNg}FTz48PFv
z=JIo=%6y*e-YBA=VnM)fzAK)teXZR)?oXjHF4aQ0lB}36@jUWAZQ2vL^V(#qgQs@f
z4D;J9-q>k_MGy
zmTdDCMMgx6xuD{R5GEXr5|K*3y#w_(9Tjg>eVVPo9~8;)+uat;Ao2GNHs{9cxkIu^
zI4%RMh=TfRs8}@a@EP|rqfV5;tkwm|!6*&w*0Fv8?#>P6-4Od&v
z7Ed9O&Uc!2nC6%jaEgbG@^F|)C9q3T0xGXqGI;tk*>PCjl&4SEMJ!^7rq3`L=vs<@
zIpP_`1su-%?nnGwB~MxMmeR((h22!ro70!!83?3
z(16s@he#w7PvCI=%5O8fOeHM~Wrh8UuTh>H8P;nV4MkK|OFM
z-Z-~!QhrzdeDc~6+wl(FVn6FCsR{M8LB8#cS%~PLbTxt8SB6Vk9c{3{P@lM28c&tm
z=>E{OdaS4K&%2v8Zp-WIv7|6ack$2csUhNt-Z5=9mLfeU3{}%91OaQc~Wzc
z#12bN8ha~LdiLg@vvTFC;fA%wetF-JFMLoy4MjiE;X1Z?$uf89a8uoOt0pbau9mBK!<^hCxHqNpk~J*pLgtE5{m(lWYXd
z#3gy!Io*J
zuT`p~h9j_GghqN~!|k``VF8_FTYbZsGQ;~Hzc08jS?_217a7E?T7wKry{LbZM+d|2
zN~C5zD!}Di2vm9hfdBnF8EGC6^)FbZS!Hb@q5b?~`gCt^%|QaBcBr2m?c{b(Og{fR
z<{eUaDoSi1SfC{%)x~}xXvdTiNfM^Ok
zVqV&)$#^n-zS44!jY@ay*7vO@?|vJ%5!?PE67j_FQQVDP!nkYh%yH`eHv30trpA+C
zfeiUNPcPf}PWm4t0r0oIvrd&4VGY4ZYq$hM)z35C;!LtA*NdiQs*A8Asr<{4>FPc!
zJ_2!u>fU~yE5#R3zSw;b9ifmBIR2~yzejibRoSa-+Aj5Z*@};c75ucpFH0;MYptqH
zL&oh0PTcaA&i}#_vY^hL9EyVzb$;+#=8L*L&41?IoK9cy{8W{Ty*_d>QqC?yb@fWr
z^e>Maa{29dNnUt6t2*VuYhxF@l&yz>_@||TxnK{2S3lMRD1&K}`cErW%Ip-DDre?i
zrAd8OHy$z{!w3J8gUMgWIvB9~B|a(=^x}twVANNMhrK#GNv@u;2`ew@Q<=u`O|ngCg={hpxi1B$9^cTjvX!JqW|71z%a6i(bT
zZLBjZE?eKA{pW(NVi#r~9!NiY!0#U9yP^fyVW79TXEql;r5rZjWp>zZ{LJkCbLi8D
z^R&RG5|_1Za4k$SEsS{OoNmK8mAc2DS{dxbvk_CSX-91NyqqPRsvzX%5+~C6GfA$k
zp+$8?U|{1cV4`WD?!tgT)aaeYXHx;O;hdXg7_XM~y6QDTu=|nfUOvk6P0?Z2F6Hp6
zGC0|vNp57eW#C;UNB4th!g}5g-^gLaAC##s=wQl;&lwqiq#G11!)qbq(^Nl`_!3kP
zVFk5-zH&4LyW*vzpA0(1&r>^DalRJ@=ElmeJ!@X}>xvmc238d!t*4qSM^6@JYLEiV
zcH?h?;$ls_(<9{OyXHlTl-r+|Eb}A&R;aWMGQ689xLuCr&x|54O~TD$|32hYA$!ZQ
zgsdt0rps8)>NFI6SxGGApp8_S?vu=Vx`duC6w(*Yt>AL=^~jjM^oI3k`Ss~5?S4+Q
zh_A4G*NNx%d`d3VD-|9Sa#+vx6Fdj3uVh_KFxPkOdiJJfcT=lt?EN7&Ds{9wmH%l)
z!aN6-$?J*_`*nL4QD*X>||ugra<6QZ*2
z=Azmq)HUU_F<_;D^tY~LVu|!EHI-}qtdQ*K_*UP+3znw>m=pzud3H&xw6M9mu`4Jm
z1vrx3syxK^oBNG0u=re_!XkdwwNJAmBR>_qj_1GJx!@{s=UVSg>&ZalNjDK5e1+9H$
z?B#TLH$)Tv=&iUFfg5RL97`N+z52)S1YGElW&8I~T<%GhckW#d5vycO^Z3E=
z*YAK&#vxy%Q2Nt%wf5WV1m59`43z#O#edHC$`jY-^_KG?7gg4}XfWxpG5c?(P8zw|
z-{lNtyBZ&*T8Uh3Zb$unJd90jgMH96IjP2gSngO4BW(
zOxevR54_V+*VGJBCO+W;D#z&Jgvjcx|1DJvd8Ik6P=uTF2#0T+aYMI^IRyI>r_o+8
z%EV}A+TI?Q!0~kOAih~baSPQjap23RRuyoizS$%8OieqEsonp`R$onxylG2#Dxp|4
zNVmRud5mk*W^U4yu3c(y>cLi;-pyT08Rn2s4#wYcSN9}>&z#DZFUxlM&3j!8>9-!6
zy?H?3UHB~jgF=)Y`a;(^*0NqDHLVzO>ScS>&v-G-(OkYI#PQws#gMj7GeiS_xur+S
z&HUXMjJYg9L!B(k?IhQ(e4TO5kGjdcqo-Lp;B!xaPd&tip0R6`wYnjYh
zCj|6b>YsoV%@vh|Eb7^gzR0adt6T1jt$NlU&hcEoe39Wc=an?d*0~d3QQHq07uhVm
zBHGT0=1|t7SzjR!T0ZQd+~z0%%1;5lW)0&5f+og;IV(;jAqOpC>ql0@2PeUEz%%pw
z!Ois3hiCQlGc^6nM;QMP{y|5Z9~X~WRk!zBXa7rnM+o8mXGWzi9~a!y@+5w4=8#AI
zGTY&tqP2==mKSsYcxbk9!y8!D;&Vmzj1dHa=ve&ZXoKwYI^or--7$iJ(PMmzYC5x
z3EClPoE<9d7g+~pHG5SS-n^e#L*E=vX32S-6J7q`t#)NRF*D`-JOLUJehdloAqKu*
zA9xW}p3(KFa88CvY<7dG@dJtcv&%(%Vwi5kg#`?vA{@sa6
zr%^eRkHNMUX5pS1?7}i`1~G++=jEezG}`-EG)mKMFDT1BY3HID;aSZDAoZsxDV{l`#<7D;_d
z@ia;^Z@Za`>D;;VNq~o83tq+B+Vbz&!-<&d1x`LO^jI!xXU=D9!E00sWd){|zdB47D(GVf9Yuj*jq?Bb
z{^ZGHJ(a1oz;FYkl}S+CYVqIFgOo}*+#nJR4_L*Xu;#(Uk(GKQe=9K+9Xgh3pzjqe
zlI7Z9mcQRVmr6Z@wE(&+8>=W~bmT!ZOh(((S?#NOH+LEUg$QWgV8LX?lD1B<&W-YB
zmdL7$AD{b9#;;Zwq8OtHd3I_S`Sj9JdfoRWFOl!$NrY)LY%UGl3Utu0P-zi)ps8u7
zLTeR-a1zlTG0@C9^dE~_N={}OfRUa?UEgXEt*{c$rA)bW0N8+Yw)AQv@K8?ln%|+_#
zv~YP1;o=ZvKGBZ?<`W>lQG%%7*TXz1h%MO=Lt&DTtGLkuB601#3ABNz*$q_5f$C|w
z`?%jELgaSu*x);dK#+*`Ch{5JCT!wMQm!mjq!w75Fnl>f<~5vl>y1tARMn?aKNT)Ft3$~!LvrQ&nn}<-swQTT`mCsBh@51n-
zwViNX(9|VjhO?wMU>axVUAoGN`J4~X1VAa6KdRw~T0BT+^+nOk1cYoRAKz`j8yujV
z)q2Ki#yT-U=1-U%M*MW~PSk5FjY0+(^yekMMC)t;b&hCajEFYhT}A9zRwrBJQg*Iw
zfxJd0C#Gtg%EETSEn3{j!-m%oEY=c?GlYMhlJTI9l2v6&TzSR|JMT;w9Lq`3F5b?k
zgC0JQ{(gF6T)5TcU~KFcE%CWw(vv}!?l7UBK{i6hQVChVlGNm1-X?DA;Q$}JYmlB}
zgj9k6LK&paiB|t4By`m<$kimj?YK>4GLzNpH%{N(=&=_XGRA``)A}wd
zGk3SANck&`tAMLmncf>ogbLK8)hgnVn&!kRJB65qGEX#t|5hxG#j1c3eF2}mO923T
z>3p?%T6-@p?xA$R!tJ`sZtQBuSs)0hQ}=gCZ76ne*ujS7fXkH5-lK?hS48TS8l{e+VTF6)WLjFr=nU~!1s>mW=
zIW_XOLJeLSFc65khybpMyVt%D4FE(dSEz@DXqFE=copOn32X-we+H$91e5}hq*r;Vh`|%q
z7RrijjC?BlC{i1b%QB4$_e)bk!eRQ+XBKl76Qr(|Tq&b7$0_q97;*bKqULF3p0cTF
zENSp*Iawz=S9Eg}9WM1ym=Q^=B|Bv2sd#p4`MZV|F+VA{)KQuU@2ur157>o7k{W3JE)>`af(ed-@yb*$Yru+F^)8p_}nc~3x=eH#!2QWfLXTV
zK`z8{d5eTxp>|?&dYRd%6MzRAsk}&QE>87NKGQB~oFGLyk*`Hj)t;U(ZX)q!DdoDj
zyvA$8z7Bp#tk>&-kvl^2+N4InfKkz69#9Eq3Mw+#v0(P7tE)*+naaF6>~62=N<)Nw
zz7PhVT@FOEMhH_TLi8Kgevy`jsPWajA$g0#RNpa;p$5fJO6mZC02?wpcKnO%x8p#|
zfQ{&~bmIK2%WxYWn%?J_k?3C>WVHJNqCufJ**YRfB-JmC4C?Y4Rze}KU65)!`AWi?|
zm$8QfT@PZLC+j}zu!&bt>_^kBzb#9mXV3G6mSl~c8hWAH%61DQ`H0EMWVn*;Sv*?7)=wH_&!XCw6
z#_|+=*=M7yLdpco8~?f#%^CINCzUhp2l)ONSp6x*aA;y{vubW~^-)(?+qvyY1A>F&-T)>ia&UZ~(gom-}{;qmTEp87NoEK
z{q3rEO@ymOJEq%o@$z6v$Sa=ye}04JxZD1DNj-dn&kWbsvw|e+`O*WvA4k-0C`9di
zgxztTjWJB%&wA^=|IiPdT2huecd$&h&*Ex-;0kZ7Yny-1qG)x;n6LJk$c>Tq>`kf>
zF9q$*LuX$|SJ~t&O5t~!u1a5c#wU37eJ$?<_*#q6H(SSLrmC?t`xC0{nnRq$RC)5a
zNx~4C
zx%&QgP#3S2-|Z?|&T3hShy=ZVGEYTBr{*&H;o=lj!X1vPD`VJ
zt6C9ETj)r7GCXoNyZh*YpDgE)%wQ`K@-G7hvhy(z@HoEik>#MUpy{!>qkeNLA(tS1
z0KK<(v+dstKM^}er@^;vYPLhxZPe-B{hyR5Nv)&Ry%H?zv`jUj%mIy66qyd#=*|-Pit`(UEBm-c?(eU2
z=84FBSSzE@W%S?q;nbDiFN5FFvraIVWsOry_R4CysU(^B+er=s2p#0o0yYD3WhU{}
zC#SFwnAWJ%>3but-V>@{79rYR`sCl(#1`b!Pq*F4UF8q94w1`e!TVXe+M)X~`)zp_
z&XkYN0`lC(T8FiZqVBzn6|I7)$eNe)OWfxWyJsbM|Dhx&qGM(Li}rZl7xpj1+8o&i
zdBgKi3l&amAdx>};3L^UgMLwkc~PAh6hlxa8?^7{P$hH7H{rZY=Q#k}=b6OYD!5K*
z8YYDBV=b~H!%@PF;q{Ngma@x!w-mZe9tVRRpOD{`fg?p4uj03QpFXlTW4aNmbWde*
zG33)fUuV=_C?@sQtIg`*zF6Q
z0s#}xdEhS=4co{bG+RPk@4d{rr~d`SAp|NMKDn<7#3k*%st^b<+*#D&v~A(qRMcTZ
z_N%XgJ*x3=obMpkjK%POVUO%^%3C-8jGh*}&mjpain{+$92B+A6{GqE2w7)gXJ;X{
zGmk2tOO+Ww$5JJ8VFC(7)fj?-BAJF52VB8bn2F4aRB;TIg`gTqwECb@v>jkoS9Z#|
zjS7B8LAg2dkMU37`RgjzReXV2xG$Iv=>2G#Db^~lTQ<+{g3tWu18H#QX8&`xTo;$k
zX|Qn#7q_HSePFUCMex0|OLte}dU>;4+9W;F=j7ejuCJPp3ze!OS7r`;Q=)wJAB$8h
zL2Yec!Ryc2?am5~2SWa^JvfQ0m0F$AyAl8;p`i#{}i4&z_D_uCu4zgc)>-eL+~a3
zTYK@vsTz+hzX?vI?)Jaltkr`$G{Ji4tomr1&iiJ8XUC1|j{+w-3C6*S=*u-TzYaHP
zyo5C|ml!L0f6V^+>i^yTC^T!tgB9pDVs@;EO2}7X=slV?E;q@AE0urk7}0N3KN_J}
zx0McVPc_*7Z(%C|Zap8}$ZMw^?1Nzg
z`q`GHQh74=j6{Lq&Ypi@ap(h&1bSGsFmz+a?Z=ytzn3B*7e9jSsS4!=(1G~#WjyTE
zv0=bsLpFUj5=<i|@`(
z0#bUkvm5{A*UJ{tB9*B*E@*5x)_6Kp<@4O)TAh*sKYVV=+9S@DfSPvL3C?pypt>@B>Eek2M!N0XRr)*2)Acf
za6xpNI0tCJ)#%(`g#P>3BHEewco+487h6N~^|YBfnDV9?1mF5O|;%{&q1^U}u89N0ZUrXC4+{)Aa-vG-h1P%B#yI#{}T
zhOV2iuO#7g?ihbTnsm1AO+JhpkDlewSDoZMWB;7{*%o_GEY7UZw4cvkov-aBDf7%J
zkh^|f%|KbMP{>5v5!YKgjQ0I{kWugSO9iq_m3NXf?%wmdglVhN_U1gxrkZ1W3A*RH
z*eC*V>25D5KA9vpDw+MD5(jB-j&ucMv(G6z#eRQ3|qddc&@vdK09_}?5dOS
z3S3aC8-!wSM+FYmJHGTIj}`#{X2FGxM<)@0|MV^dnhT)0WAHYDBwk+Il`G}1!f-LU
zHT{R{?r~W$QwNPY)p?IbY^hZSzfmoslR1k?Ng0F*UuD?}q)96s2wRa4(GdIYs)&J<`)I+KYl)!oH;Q?WVD1BI}IC+8)R83TAy0n@k9_n4h9`vxJ2Cmnw
zIce`9>wAemyY2&I{78}fh#|yuNo4zLP#&-G7yi%IVP{J4v-pQ$QwOKW#H#Zs1)`aa
z&J*YQ%!S6f+Il^$hQc2dN^*)nmStGUpN-@RT=K%0D^g*8<5ufIjHS2hBs*dtp5h0e
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

#DXD)ED^lRmZ*JZeuH%xrLT_?>2H8 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

Ok3M)|mh%2jmZ_#6 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 z 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%0ArE^M-zO{M-P|Nkt{ZzSP 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 literal 0 HcmV?d00001 diff --git a/content/media/test/manifest.js b/content/media/test/manifest.js index 80ee87e88d0..0c14579d374 100644 --- a/content/media/test/manifest.js +++ b/content/media/test/manifest.js @@ -486,7 +486,9 @@ var gAspectRatioTests = [ // Used by test_metadata.html. var gMetadataTests = [ // Ogg Vorbis files - { name:"short-video.ogv", tags: { + { name:"short-video.ogv", + type:"video/ogg", + tags: { TITLE:"Lepidoptera", ARTIST:"Epoq", ALBUM:"Kahvi Collective", @@ -494,7 +496,9 @@ var gMetadataTests = [ COMMENT:"http://www.kahvi.org", } }, - { name:"bug516323.ogv", tags: { + { name:"bug516323.ogv", + type:"video/ogg", + tags: { GENRE:"Open Movie", ENCODER:"Audacity", TITLE:"Elephants Dream", @@ -502,7 +506,9 @@ var gMetadataTests = [ COMMENTS:"Audio Description" } }, - { name:"bug516323.indexed.ogv", tags: { + { name:"bug516323.indexed.ogv", + type:"video/ogg", + tags: { GENRE:"Open Movie", ENCODER:"Audacity", TITLE:"Elephants Dream", @@ -510,17 +516,26 @@ var gMetadataTests = [ COMMENTS:"Audio Description" } }, - { name:"detodos.opus", tags: { + { name:"detodos.opus", + type:"audio/ogg; codecs=opus", + tags: { title:"De todos. Para todos.", artist:"Mozilla.org" } }, - { name:"sound.ogg", tags: { } }, - { name:"small-shot.ogg", tags: { + { name:"sound.ogg", + type:"audio/ogg", + tags: { } + }, + { name:"small-shot.ogg", + type:"video/ogg", + tags: { title:"Pew SFX" } }, - { name:"badtags.ogg", tags: { + { name:"badtags.ogg", + type:"audio/ogg", + tags: { // We list only the valid tags here, and verify // the invalid ones are filtered out. title:"Invalid comments test file", @@ -535,41 +550,70 @@ var gMetadataTests = [ // "not-utf-8":"invalid sequences: \xff\xfe\xfa\xfb\0eol" } }, - { name:"wave_metadata.wav", tags: { + { name:"wave_metadata.wav", + type:"audio/x-wav", + tags: { name:"Track Title", artist:"Artist Name", comments:"Comments", } }, - { name:"wave_metadata_utf8.wav", tags: { + { name:"wave_metadata_utf8.wav", + type:"audio/x-wav", + tags: { name:"歌曲名稱", artist:"作曲者", comments:"註解", } }, - { name:"wave_metadata_unknown_tag.wav", tags: { + { name:"wave_metadata_unknown_tag.wav", + type:"audio/x-wav", + tags: { name:"Track Title", comments:"Comments", } }, - { name:"wave_metadata_bad_len.wav", tags: { + { name:"wave_metadata_bad_len.wav", + type:"audio/x-wav", + tags: { name:"Track Title", artist:"Artist Name", } }, - { name:"wave_metadata_bad_no_null.wav", tags: { + { name:"wave_metadata_bad_no_null.wav", + type:"audio/x-wav", + tags: { name:"Track Title", artist:"Artist Name", comments:"Comments!!", } }, - { name:"wave_metadata_bad_utf8.wav", tags: { + { name:"wave_metadata_bad_utf8.wav", + type:"audio/x-wav", + tags: { name:"歌曲名稱", comments:"註解", } }, - { name:"wavedata_u8.wav", tags: { } + { name:"wavedata_u8.wav", + type:"audio/x-wav", + tags: { } }, + { name:"gizmo.metadata.mp4", + type:"video/mp4", + tags: { + artist:"Artist name", + title:"Title name", + album:"Album name", + albumArtist:"Album Artist name", + genre:"Genre name", + date:"20140326T002053.000Z", + year:"2014", + writer:"Composer name", + discNumber:"1/0", + cdTrackNumber:"1/0" + } + } ]; function checkMetadata(msg, e, test) { diff --git a/content/media/test/mochitest.ini b/content/media/test/mochitest.ini index 37219e5ea3f..08dae97c00b 100644 --- a/content/media/test/mochitest.ini +++ b/content/media/test/mochitest.ini @@ -144,6 +144,7 @@ support-files = file_access_controls.html fragment_noplay.js fragment_play.js + gizmo.metadata.mp4 gizmo.mp4 gizmo.mp4^headers^ huge-id3.mp3 diff --git a/content/media/test/test_metadata.html b/content/media/test/test_metadata.html index 1504244e5cd..ab58e3e1374 100644 --- a/content/media/test/test_metadata.html +++ b/content/media/test/test_metadata.html @@ -13,30 +13,34 @@
From dacf06a66d3fd3dae3104753c1c8776f62f521c2 Mon Sep 17 00:00:00 2001 From: Ed Morley Date: Thu, 19 Jun 2014 16:34:42 +0100 Subject: [PATCH 14/60] Backed out changeset 3ff9374610b7 (bug 1016413) --- content/media/test/gizmo.metadata.mp4 | Bin 457374 -> 0 bytes content/media/test/manifest.js | 72 +++++------------------ content/media/test/mochitest.ini | 1 - content/media/test/test_metadata.html | 80 ++++++++------------------ 4 files changed, 37 insertions(+), 116 deletions(-) delete mode 100644 content/media/test/gizmo.metadata.mp4 diff --git a/content/media/test/gizmo.metadata.mp4 b/content/media/test/gizmo.metadata.mp4 deleted file mode 100644 index 997f03644c7b5a0c3034621319849237fc8756ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 457374 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�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%0D^g*8<5ufIjHS2hBs*dtp5h0e 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
Ok3M)|mh%2jmZ_#6 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 z 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%0ArE^M-zO{M-P|Nkt{ZzSP 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 diff --git a/content/media/test/manifest.js b/content/media/test/manifest.js index 0c14579d374..80ee87e88d0 100644 --- a/content/media/test/manifest.js +++ b/content/media/test/manifest.js @@ -486,9 +486,7 @@ var gAspectRatioTests = [ // Used by test_metadata.html. var gMetadataTests = [ // Ogg Vorbis files - { name:"short-video.ogv", - type:"video/ogg", - tags: { + { name:"short-video.ogv", tags: { TITLE:"Lepidoptera", ARTIST:"Epoq", ALBUM:"Kahvi Collective", @@ -496,9 +494,7 @@ var gMetadataTests = [ COMMENT:"http://www.kahvi.org", } }, - { name:"bug516323.ogv", - type:"video/ogg", - tags: { + { name:"bug516323.ogv", tags: { GENRE:"Open Movie", ENCODER:"Audacity", TITLE:"Elephants Dream", @@ -506,9 +502,7 @@ var gMetadataTests = [ COMMENTS:"Audio Description" } }, - { name:"bug516323.indexed.ogv", - type:"video/ogg", - tags: { + { name:"bug516323.indexed.ogv", tags: { GENRE:"Open Movie", ENCODER:"Audacity", TITLE:"Elephants Dream", @@ -516,26 +510,17 @@ var gMetadataTests = [ COMMENTS:"Audio Description" } }, - { name:"detodos.opus", - type:"audio/ogg; codecs=opus", - tags: { + { name:"detodos.opus", tags: { title:"De todos. Para todos.", artist:"Mozilla.org" } }, - { name:"sound.ogg", - type:"audio/ogg", - tags: { } - }, - { name:"small-shot.ogg", - type:"video/ogg", - tags: { + { name:"sound.ogg", tags: { } }, + { name:"small-shot.ogg", tags: { title:"Pew SFX" } }, - { name:"badtags.ogg", - type:"audio/ogg", - tags: { + { name:"badtags.ogg", tags: { // We list only the valid tags here, and verify // the invalid ones are filtered out. title:"Invalid comments test file", @@ -550,70 +535,41 @@ var gMetadataTests = [ // "not-utf-8":"invalid sequences: \xff\xfe\xfa\xfb\0eol" } }, - { name:"wave_metadata.wav", - type:"audio/x-wav", - tags: { + { name:"wave_metadata.wav", tags: { name:"Track Title", artist:"Artist Name", comments:"Comments", } }, - { name:"wave_metadata_utf8.wav", - type:"audio/x-wav", - tags: { + { name:"wave_metadata_utf8.wav", tags: { name:"歌曲名稱", artist:"作曲者", comments:"註解", } }, - { name:"wave_metadata_unknown_tag.wav", - type:"audio/x-wav", - tags: { + { name:"wave_metadata_unknown_tag.wav", tags: { name:"Track Title", comments:"Comments", } }, - { name:"wave_metadata_bad_len.wav", - type:"audio/x-wav", - tags: { + { name:"wave_metadata_bad_len.wav", tags: { name:"Track Title", artist:"Artist Name", } }, - { name:"wave_metadata_bad_no_null.wav", - type:"audio/x-wav", - tags: { + { name:"wave_metadata_bad_no_null.wav", tags: { name:"Track Title", artist:"Artist Name", comments:"Comments!!", } }, - { name:"wave_metadata_bad_utf8.wav", - type:"audio/x-wav", - tags: { + { name:"wave_metadata_bad_utf8.wav", tags: { name:"歌曲名稱", comments:"註解", } }, - { name:"wavedata_u8.wav", - type:"audio/x-wav", - tags: { } + { name:"wavedata_u8.wav", tags: { } }, - { name:"gizmo.metadata.mp4", - type:"video/mp4", - tags: { - artist:"Artist name", - title:"Title name", - album:"Album name", - albumArtist:"Album Artist name", - genre:"Genre name", - date:"20140326T002053.000Z", - year:"2014", - writer:"Composer name", - discNumber:"1/0", - cdTrackNumber:"1/0" - } - } ]; function checkMetadata(msg, e, test) { diff --git a/content/media/test/mochitest.ini b/content/media/test/mochitest.ini index 08dae97c00b..37219e5ea3f 100644 --- a/content/media/test/mochitest.ini +++ b/content/media/test/mochitest.ini @@ -144,7 +144,6 @@ support-files = file_access_controls.html fragment_noplay.js fragment_play.js - gizmo.metadata.mp4 gizmo.mp4 gizmo.mp4^headers^ huge-id3.mp3 diff --git a/content/media/test/test_metadata.html b/content/media/test/test_metadata.html index ab58e3e1374..1504244e5cd 100644 --- a/content/media/test/test_metadata.html +++ b/content/media/test/test_metadata.html @@ -13,34 +13,30 @@ From ec355be2f70c728958f8cdcc59ca22a887b7d6b0 Mon Sep 17 00:00:00 2001 From: Ed Morley Date: Thu, 19 Jun 2014 16:35:00 +0100 Subject: [PATCH 15/60] Backed out changeset 9fd0316dcd1b (bug 1016413) for crashes during e10s test_metadata.html --- content/media/fmp4/MP4Reader.cpp | 2 +- .../binding/include/mp4_demuxer/mp4_demuxer.h | 2 - media/libstagefright/binding/mp4_demuxer.cpp | 48 +------------------ 3 files changed, 2 insertions(+), 50 deletions(-) diff --git a/content/media/fmp4/MP4Reader.cpp b/content/media/fmp4/MP4Reader.cpp index 819753e03fa..58fd5763d43 100644 --- a/content/media/fmp4/MP4Reader.cpp +++ b/content/media/fmp4/MP4Reader.cpp @@ -250,7 +250,7 @@ MP4Reader::ReadMetadata(MediaInfo* aInfo, } *aInfo = mInfo; - *aTags = mDemuxer->GetTags(); + *aTags = nullptr; return NS_OK; } diff --git a/media/libstagefright/binding/include/mp4_demuxer/mp4_demuxer.h b/media/libstagefright/binding/include/mp4_demuxer/mp4_demuxer.h index 48604979f0c..8b9953de33b 100644 --- a/media/libstagefright/binding/include/mp4_demuxer/mp4_demuxer.h +++ b/media/libstagefright/binding/include/mp4_demuxer/mp4_demuxer.h @@ -8,7 +8,6 @@ #include "nsAutoPtr.h" #include "mozilla/gfx/Rect.h" #include "mp4_demuxer/DecoderData.h" -#include "AbstractMediaDecoder.h" namespace mp4_demuxer { @@ -39,7 +38,6 @@ public: Microseconds Duration(); bool CanSeek(); - mozilla::MetadataTags* GetTags(); bool HasValidAudio(); bool HasValidVideo(); diff --git a/media/libstagefright/binding/mp4_demuxer.cpp b/media/libstagefright/binding/mp4_demuxer.cpp index 16ba0e40ac9..f55fc7fd3a6 100644 --- a/media/libstagefright/binding/mp4_demuxer.cpp +++ b/media/libstagefright/binding/mp4_demuxer.cpp @@ -8,7 +8,7 @@ #include "media/stagefright/MetaData.h" #include "mp4_demuxer/Adts.h" #include "mp4_demuxer/mp4_demuxer.h" -#include "mozilla/ArrayUtils.h" + #include using namespace stagefright; @@ -16,30 +16,6 @@ using namespace stagefright; namespace mp4_demuxer { -struct tagmap { - const uint32_t key; - const char* name; -}; - -const struct tagmap keys[] = { - { kKeyAlbum, "album" }, - { kKeyArtist, "artist" }, - { kKeyAlbumArtist, "albumArtist" }, - { kKeyComposer, "composer" }, - { kKeyGenre, "genre" }, - { kKeyTitle, "title" }, - { kKeyYear, "year" }, - { kKeyAlbumArt, "albumArt" }, - { kKeyAlbumArtMIME, "albumArtMIME" }, - { kKeyAuthor, "author" }, - { kKeyCDTrackNumber, "cdTrackNumber" }, - { kKeyDiscNumber, "discNumber" }, - { kKeyDate, "date" }, - { kKeyWriter, "writer" }, - { kKeyCompilation, "compilation" }, - { kKeyLocation, "location" }, -}; - struct StageFrightPrivate { sp mExtractor; @@ -104,28 +80,6 @@ MP4Demuxer::~MP4Demuxer() } } -mozilla::MetadataTags* -MP4Demuxer::GetTags() -{ - mozilla::MetadataTags* tags = new mozilla::MetadataTags; - sp metaData = mPrivate->mExtractor->getMetaData(); - const char* value = nullptr; - nsCString cstringValue; - size_t key_count = mozilla::ArrayLength(keys); - - for (size_t i = 0; i < key_count; i++) { - if (metaData->findCString(keys[i].key, &value)) { - MOZ_ASSERT(value); - cstringValue = nsCString(value); - if (IsUTF8(cstringValue)) { - tags->Put(nsCString(keys[i].name), cstringValue); - } - } - } - - return tags; -} - bool MP4Demuxer::Init() { From 9e39f03564431b559aaa4505106c018738019592 Mon Sep 17 00:00:00 2001 From: Felipe Gomes Date: Thu, 19 Jun 2014 13:42:29 -0300 Subject: [PATCH 16/60] Bug 1024757 - Translation FHR should report missed opportunities due to the detected language not being part of the list of supported languages. r=mdeboer --- .../components/translation/Translation.jsm | 44 ++++++++++++++++++- .../test/unit/test_healthreport.js | 28 +++++++++++- services/healthreport/docs/dataformat.rst | 7 +++ 3 files changed, 76 insertions(+), 3 deletions(-) diff --git a/browser/components/translation/Translation.jsm b/browser/components/translation/Translation.jsm index 608b3fdc4aa..0cf7a6c11e7 100644 --- a/browser/components/translation/Translation.jsm +++ b/browser/components/translation/Translation.jsm @@ -48,9 +48,16 @@ this.Translation = { documentStateReceived: function(aBrowser, aData) { if (aData.state == this.STATE_OFFER) { - if (this.supportedSourceLanguages.indexOf(aData.detectedLanguage) == -1 || - aData.detectedLanguage == this.defaultTargetLanguage) + if (aData.detectedLanguage == this.defaultTargetLanguage) { + // Detected language is the same as the user's locale. return; + } + + if (this.supportedSourceLanguages.indexOf(aData.detectedLanguage) == -1) { + // Detected language is not part of the supported languages. + TranslationHealthReport.recordMissedTranslationOpportunity(aData.detectedLanguage); + return; + } TranslationHealthReport.recordTranslationOpportunity(aData.detectedLanguage); } @@ -242,6 +249,17 @@ let TranslationHealthReport = { this._withProvider(provider => provider.recordTranslationOpportunity(language)); }, + /** + * Record a missed translation opportunity in the health report. + * A missed opportunity is when the language detected is not part + * of the supported languages. + * @param language + * The language of the page. + */ + recordMissedTranslationOpportunity: function (language) { + this._withProvider(provider => provider.recordMissedTranslationOpportunity(language)); + }, + /** * Record a translation in the health report. * @param langFrom @@ -321,9 +339,11 @@ TranslationMeasurement1.prototype = Object.freeze({ fields: { translationOpportunityCount: DAILY_COUNTER_FIELD, + missedTranslationOpportunityCount: DAILY_COUNTER_FIELD, pageTranslatedCount: DAILY_COUNTER_FIELD, charactersTranslatedCount: DAILY_COUNTER_FIELD, translationOpportunityCountsByLanguage: DAILY_LAST_TEXT_FIELD, + missedTranslationOpportunityCountsByLanguage: DAILY_LAST_TEXT_FIELD, pageTranslatedCountsByLanguage: DAILY_LAST_TEXT_FIELD, detectedLanguageChangedBefore: DAILY_COUNTER_FIELD, detectedLanguageChangedAfter: DAILY_COUNTER_FIELD, @@ -368,6 +388,7 @@ TranslationMeasurement1.prototype = Object.freeze({ // Special case the serialization of these fields so that // they are sent as objects, not stringified objects. _parseInPlace(result, "translationOpportunityCountsByLanguage"); + _parseInPlace(result, "missedTranslationOpportunityCountsByLanguage"); _parseInPlace(result, "pageTranslatedCountsByLanguage"); return result; @@ -407,6 +428,25 @@ TranslationProvider.prototype = Object.freeze({ }.bind(this)); }, + recordMissedTranslationOpportunity: function (language, date=new Date()) { + let m = this.getMeasurement(TranslationMeasurement1.prototype.name, + TranslationMeasurement1.prototype.version); + + return this._enqueueTelemetryStorageTask(function* recordTask() { + yield m.incrementDailyCounter("missedTranslationOpportunityCount", date); + + let langCounts = yield m._getDailyLastTextFieldAsJSON( + "missedTranslationOpportunityCountsByLanguage", date); + + langCounts[language] = (langCounts[language] || 0) + 1; + langCounts = JSON.stringify(langCounts); + + yield m.setDailyLastText("missedTranslationOpportunityCountsByLanguage", + langCounts, date); + + }.bind(this)); + }, + recordTranslation: function (langFrom, langTo, numCharacters, date=new Date()) { let m = this.getMeasurement(TranslationMeasurement1.prototype.name, TranslationMeasurement1.prototype.version); diff --git a/browser/components/translation/test/unit/test_healthreport.js b/browser/components/translation/test/unit/test_healthreport.js index 8e60b093fba..6703c939aeb 100644 --- a/browser/components/translation/test/unit/test_healthreport.js +++ b/browser/components/translation/test/unit/test_healthreport.js @@ -69,21 +69,47 @@ add_task(function* test_translation_opportunity() { let countsByLanguage = JSON.parse(day.get("translationOpportunityCountsByLanguage")); Assert.equal(countsByLanguage["fr"], 1); + // Record a missed opportunity. + yield provider.recordMissedTranslationOpportunity("it", now); + + values = yield m.getValues(); + day = values.days.getDay(now); + Assert.equal(values.days.size, 1); + Assert.ok(values.days.hasDay(now)); + Assert.ok(day.has("missedTranslationOpportunityCount")); + Assert.equal(day.get("missedTranslationOpportunityCount"), 1); + + Assert.ok(day.has("missedTranslationOpportunityCountsByLanguage")); + let missedCountsByLanguage = JSON.parse(day.get("missedTranslationOpportunityCountsByLanguage")); + Assert.equal(missedCountsByLanguage["it"], 1); + // Record more opportunities. yield provider.recordTranslationOpportunity("fr", now); yield provider.recordTranslationOpportunity("fr", now); yield provider.recordTranslationOpportunity("es", now); + yield provider.recordMissedTranslationOpportunity("it", now); + yield provider.recordMissedTranslationOpportunity("cs", now); + yield provider.recordMissedTranslationOpportunity("fi", now); + values = yield m.getValues(); - let day = values.days.getDay(now); + day = values.days.getDay(now); Assert.ok(day.has("translationOpportunityCount")); Assert.equal(day.get("translationOpportunityCount"), 4); + Assert.ok(day.has("missedTranslationOpportunityCount")); + Assert.equal(day.get("missedTranslationOpportunityCount"), 4); Assert.ok(day.has("translationOpportunityCountsByLanguage")); countsByLanguage = JSON.parse(day.get("translationOpportunityCountsByLanguage")); Assert.equal(countsByLanguage["fr"], 3); Assert.equal(countsByLanguage["es"], 1); + Assert.ok(day.has("missedTranslationOpportunityCountsByLanguage")); + missedCountsByLanguage = JSON.parse(day.get("missedTranslationOpportunityCountsByLanguage")); + Assert.equal(missedCountsByLanguage["it"], 2); + Assert.equal(missedCountsByLanguage["cs"], 1); + Assert.equal(missedCountsByLanguage["fi"], 1); + yield provider.shutdown(); yield storage.close(); }); diff --git a/services/healthreport/docs/dataformat.rst b/services/healthreport/docs/dataformat.rst index afce6b18da2..0684e279651 100644 --- a/services/healthreport/docs/dataformat.rst +++ b/services/healthreport/docs/dataformat.rst @@ -1542,6 +1542,10 @@ Daily counts are reported in the following properties: translationOpportunityCount Integer count of the number of opportunities there were to translate a page. +missedTranslationOpportunityCount + Integer count of the number of missed opportunities there were to translate a page. + A missed opportunity is when the page language is not supported by the translation + provider. pageTranslatedCount Integer count of the number of pages translated. charactersTranslatedCount @@ -1559,6 +1563,9 @@ properties: translationOpportunityCountsByLanguage A mapping from language to count of opportunities to translate that language. +missedTranslationOpportunityCountsByLanguage + A mapping from language to count of missed opportunities to translate that + language. pageTranslatedCountsByLanguage A mapping from language to the counts of pages translated from that language. Each language entry will be an object containing a "total" member From b160b2e1cd8336ac9569399c6ca557dd3e4a925c Mon Sep 17 00:00:00 2001 From: Ed Morley Date: Thu, 19 Jun 2014 17:48:22 +0100 Subject: [PATCH 17/60] Backed out changeset ac74a1815c66 for failing intermittently after landing as a 'no bug' \o/ --- js/src/tests/browser.js | 4 ---- .../tests/ecma_6/LexicalEnvironment/browser.js | 0 .../tests/ecma_6/LexicalEnvironment/shell.js | 5 ----- ...with-global-ignores-global-let-variables.js | 18 ------------------ 4 files changed, 27 deletions(-) delete mode 100644 js/src/tests/ecma_6/LexicalEnvironment/browser.js delete mode 100644 js/src/tests/ecma_6/LexicalEnvironment/shell.js delete mode 100644 js/src/tests/ecma_6/LexicalEnvironment/with-global-ignores-global-let-variables.js diff --git a/js/src/tests/browser.js b/js/src/tests/browser.js index 61daf990dd8..5e59a53558d 100644 --- a/js/src/tests/browser.js +++ b/js/src/tests/browser.js @@ -343,10 +343,6 @@ function jsTestDriverBrowserInit() { properties.version = '1.8'; } - else if (properties.test.match(/^ecma_6\/LexicalEnvironment/)) - { - properties.version = '1.8'; - } } // default to language=type;text/javascript. required for diff --git a/js/src/tests/ecma_6/LexicalEnvironment/browser.js b/js/src/tests/ecma_6/LexicalEnvironment/browser.js deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/js/src/tests/ecma_6/LexicalEnvironment/shell.js b/js/src/tests/ecma_6/LexicalEnvironment/shell.js deleted file mode 100644 index 4d731295dd2..00000000000 --- a/js/src/tests/ecma_6/LexicalEnvironment/shell.js +++ /dev/null @@ -1,5 +0,0 @@ -// NOTE: This only turns on 1.8.5 in shell builds. The browser requires the -// futzing in js/src/tests/browser.js (which only turns on 1.8, the most -// the browser supports). -if (typeof version != 'undefined') - version(185); diff --git a/js/src/tests/ecma_6/LexicalEnvironment/with-global-ignores-global-let-variables.js b/js/src/tests/ecma_6/LexicalEnvironment/with-global-ignores-global-let-variables.js deleted file mode 100644 index 4fef2a96ac3..00000000000 --- a/js/src/tests/ecma_6/LexicalEnvironment/with-global-ignores-global-let-variables.js +++ /dev/null @@ -1,18 +0,0 @@ -// |reftest| fails-if(Function("try{Function('let\x20x=5;');return(1,eval)('let\x20x=3;\\'x\\'\x20in\x20this');}catch(e){return(true);}")()) -- needs bug 589199 fix (top-level let not same as var) -// Any copyright is dedicated to the Public Domain. -// http://creativecommons.org/licenses/publicdomain/ - -let v = "global-v"; - -function f(v, global) -{ - with (global) - return v; -} - -assertEq(f("argument-v", this), "argument-v"); - -if (typeof reportCompare === "function") - reportCompare(true, true); - -print("Tests complete"); From aa8f8da6b109508b08180417089493669f2f52dc Mon Sep 17 00:00:00 2001 From: Bobby Holley Date: Thu, 19 Jun 2014 09:57:05 -0700 Subject: [PATCH 18/60] Bug 976148 - Add a mechanism to identify a standard constructor. r=luke --- js/src/jsapi.h | 5 ++++- js/src/jsobj.cpp | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/js/src/jsapi.h b/js/src/jsapi.h index f0708cd21ce..f9d46b583f3 100644 --- a/js/src/jsapi.h +++ b/js/src/jsapi.h @@ -1764,7 +1764,7 @@ JS_GetClassPrototype(JSContext *cx, JSProtoKey key, JS::MutableHandle namespace JS { /* - * Determine if the given object is an instance or prototype for a standard + * Determine if the given object is an instance/prototype/constructor for a standard * class. If so, return the associated JSProtoKey. If not, return JSProto_Null. */ @@ -1777,6 +1777,9 @@ IdentifyStandardPrototype(JSObject *obj); extern JS_PUBLIC_API(JSProtoKey) IdentifyStandardInstanceOrPrototype(JSObject *obj); +extern JS_PUBLIC_API(JSProtoKey) +IdentifyStandardConstructor(JSObject *obj); + } /* namespace JS */ extern JS_PUBLIC_API(JSProtoKey) diff --git a/js/src/jsobj.cpp b/js/src/jsobj.cpp index 1e1dd7b6289..071e7ff3ca0 100644 --- a/js/src/jsobj.cpp +++ b/js/src/jsobj.cpp @@ -3439,6 +3439,26 @@ JS::IdentifyStandardInstanceOrPrototype(JSObject *obj) return JSCLASS_CACHED_PROTO_KEY(obj->getClass()); } +JSProtoKey +JS::IdentifyStandardConstructor(JSObject *obj) +{ + // Note that NATIVE_CTOR does not imply that we are a standard constructor, + // but the converse is true (at least until we start having self-hosted + // constructors for standard classes). This lets us avoid a costly loop for + // many functions (which, depending on the call site, may be the common case). + if (!obj->is() || !(obj->as().flags() & JSFunction::NATIVE_CTOR)) + return JSProto_Null; + + GlobalObject &global = obj->global(); + for (size_t k = 0; k < JSProto_LIMIT; ++k) { + JSProtoKey key = static_cast(k); + if (global.getConstructor(key) == ObjectValue(*obj)) + return key; + } + + return JSProto_Null; +} + bool js::FindClassObject(ExclusiveContext *cx, MutableHandleObject protop, const Class *clasp) { From 8c8ec10ceeb89e3522339053f4d37bff19ba8180 Mon Sep 17 00:00:00 2001 From: Bobby Holley Date: Thu, 19 Jun 2014 09:57:06 -0700 Subject: [PATCH 19/60] Bug 976148 - Implement Xrays to Function objects. r=gabor --- js/xpconnect/tests/chrome/test_bug448587.xul | 5 +++-- js/xpconnect/tests/chrome/test_bug812415.xul | 2 +- js/xpconnect/tests/chrome/test_xrayToJS.xul | 5 +++-- js/xpconnect/wrappers/WrapperFactory.cpp | 19 ++++++++++--------- js/xpconnect/wrappers/XrayWrapper.cpp | 18 ++++++++++++++++-- 5 files changed, 33 insertions(+), 16 deletions(-) diff --git a/js/xpconnect/tests/chrome/test_bug448587.xul b/js/xpconnect/tests/chrome/test_bug448587.xul index 1b173556d2a..98ee5dedaef 100644 --- a/js/xpconnect/tests/chrome/test_bug448587.xul +++ b/js/xpconnect/tests/chrome/test_bug448587.xul @@ -29,8 +29,9 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=448587.xul const Cu = Components.utils; var sandbox = new Cu.Sandbox("about:blank"); var fwrapper = Cu.evalInSandbox("function f() {} f", sandbox); - is(fwrapper.prototype, Cu.evalInSandbox("f.prototype", sandbox), - "we don't censor .prototype through .wrappedJSObject"); + is(Cu.unwaiveXrays(Cu.waiveXrays(fwrapper).prototype), Cu.evalInSandbox("f.prototype", sandbox), + ".prototype visible through .wrappedJSObject"); + is(fwrapper.prototype, undefined, ".prototype invisible through Xrays"); ]]> diff --git a/js/xpconnect/tests/chrome/test_bug812415.xul b/js/xpconnect/tests/chrome/test_bug812415.xul index b3d370882e4..5afff4214b6 100644 --- a/js/xpconnect/tests/chrome/test_bug812415.xul +++ b/js/xpconnect/tests/chrome/test_bug812415.xul @@ -56,7 +56,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=812415 is(Cu.evalInSandbox('regFun.name', expanded), 'reg', "Expanded can see regular function's name"); checkThrows('expFun.name', regular, "Regular can't see expanded function's name"); Cu.evalInSandbox('regFun.expando = 30', expanded); - is(expanded.regFun.expando, 30, "Expanded can set expandos"); + is(Cu.evalInSandbox('regFun.expando', expanded), 30, "Expanded can set expandos"); checkThrows('expFun.expando = 29', regular, "Regular can't set expandos"); // Check __proto__ stuff. diff --git a/js/xpconnect/tests/chrome/test_xrayToJS.xul b/js/xpconnect/tests/chrome/test_xrayToJS.xul index 65877e6ef6b..f615c388267 100644 --- a/js/xpconnect/tests/chrome/test_xrayToJS.xul +++ b/js/xpconnect/tests/chrome/test_xrayToJS.xul @@ -65,7 +65,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=933681 is(global(num), iwin, "correct global for num"); var obj = new iwin.Object(); obj.foo = 2; - var withProto = iwin.Object.create(obj); + var withProto = Cu.unwaiveXrays(Cu.waiveXrays(iwin).Object.create(obj)); is(global(withProto), iwin, "correct global for withProto"); is(Cu.waiveXrays(withProto).foo, 2, "Inherits properly"); @@ -242,7 +242,8 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=933681 } function testObject() { - testXray('Object', iwin.Object.create(new iwin.Object()), new iwin.Object(), []); + testXray('Object', Cu.unwaiveXrays(Cu.waiveXrays(iwin).Object.create(new iwin.Object())), + new iwin.Object(), []); // Construct an object full of tricky things. var trickyObject = diff --git a/js/xpconnect/wrappers/WrapperFactory.cpp b/js/xpconnect/wrappers/WrapperFactory.cpp index 3a3b8d9df04..f1d1e67da55 100644 --- a/js/xpconnect/wrappers/WrapperFactory.cpp +++ b/js/xpconnect/wrappers/WrapperFactory.cpp @@ -128,9 +128,9 @@ static bool ForceCOWBehavior(JSObject *obj) { JSProtoKey key = IdentifyStandardInstanceOrPrototype(obj); - if (key == JSProto_Object || key == JSProto_Array) { + if (key == JSProto_Object || key == JSProto_Array || key == JSProto_Function) { MOZ_ASSERT(GetXrayType(obj) == XrayForJSObject, - "We should use XrayWrappers for standard ES Object and Array " + "We should use XrayWrappers for standard ES Object, Array, and Function " "instances modulo this hack"); return true; } @@ -360,13 +360,6 @@ SelectWrapper(bool securityWrapper, bool wantXrays, XrayType xrayType, if (!wantXrays || xrayType == NotXray) { if (!securityWrapper) return &CrossCompartmentWrapper::singleton; - // In general, we don't want opaque function wrappers to be callable. - // But in the case of XBL, we rely on content being able to invoke - // functions exposed from the XBL scope. We could remove this exception, - // if needed, by using ExportFunction to generate the content-side - // representations of XBL methods. - else if (originIsXBLScope) - return &FilteringWrapper::singleton; return &FilteringWrapper::singleton; } @@ -390,7 +383,15 @@ SelectWrapper(bool securityWrapper, bool wantXrays, XrayType xrayType, CrossOriginAccessiblePropertiesOnly>::singleton; // There's never any reason to expose pure JS objects to non-subsuming actors. // Just use an opaque wrapper in this case. + // + // In general, we don't want opaque function wrappers to be callable. + // But in the case of XBL, we rely on content being able to invoke + // functions exposed from the XBL scope. We could remove this exception, + // if needed, by using ExportFunction to generate the content-side + // representations of XBL methods. MOZ_ASSERT(xrayType == XrayForJSObject); + if (originIsXBLScope) + return &FilteringWrapper::singleton; return &FilteringWrapper::singleton; } diff --git a/js/xpconnect/wrappers/XrayWrapper.cpp b/js/xpconnect/wrappers/XrayWrapper.cpp index e5894b3e51e..6688ad276c1 100644 --- a/js/xpconnect/wrappers/XrayWrapper.cpp +++ b/js/xpconnect/wrappers/XrayWrapper.cpp @@ -71,6 +71,7 @@ IsJSXraySupported(JSProtoKey key) case JSProto_Date: case JSProto_Object: case JSProto_Array: + case JSProto_Function: return true; default: return false; @@ -171,6 +172,8 @@ public: class XrayTraits { public: + XrayTraits() {} + static JSObject* getTargetObject(JSObject *wrapper) { return js::UncheckedUnwrap(wrapper, /* stopAtOuter = */ false); } @@ -224,6 +227,9 @@ private: JSObject* attachExpandoObject(JSContext *cx, HandleObject target, nsIPrincipal *origin, HandleObject exclusiveGlobal); + + XrayTraits(XrayTraits &) MOZ_DELETE; + const XrayTraits& operator=(XrayTraits &) MOZ_DELETE; }; class XPCWrappedNativeXrayTraits : public XrayTraits @@ -349,7 +355,11 @@ public: static bool call(JSContext *cx, HandleObject wrapper, const JS::CallArgs &args, js::Wrapper& baseInstance) { - // We'll handle this when we start supporting Functions. + JSXrayTraits &self = JSXrayTraits::singleton; + RootedObject holder(cx, self.ensureHolder(cx, wrapper)); + if (self.getProtoKey(holder) == JSProto_Function) + return baseInstance.call(cx, wrapper, args); + RootedValue v(cx, ObjectValue(*wrapper)); js_ReportIsNotFunction(cx, v); return false; @@ -358,7 +368,11 @@ public: static bool construct(JSContext *cx, HandleObject wrapper, const JS::CallArgs &args, js::Wrapper& baseInstance) { - // We'll handle this when we start supporting Functions. + JSXrayTraits &self = JSXrayTraits::singleton; + RootedObject holder(cx, self.ensureHolder(cx, wrapper)); + if (self.getProtoKey(holder) == JSProto_Function) + return baseInstance.construct(cx, wrapper, args); + RootedValue v(cx, ObjectValue(*wrapper)); js_ReportIsNotFunction(cx, v); return false; From 9a3b06e08403ef18ef4acb39b9726d37e1b35821 Mon Sep 17 00:00:00 2001 From: Bobby Holley Date: Thu, 19 Jun 2014 09:57:06 -0700 Subject: [PATCH 20/60] Bug 976148 - Support the 'prototype' property for standard constructors. r=gabor --- js/xpconnect/tests/chrome/test_xrayToJS.xul | 3 +- js/xpconnect/wrappers/XrayWrapper.cpp | 38 +++++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/js/xpconnect/tests/chrome/test_xrayToJS.xul b/js/xpconnect/tests/chrome/test_xrayToJS.xul index f615c388267..eecac03956f 100644 --- a/js/xpconnect/tests/chrome/test_xrayToJS.xul +++ b/js/xpconnect/tests/chrome/test_xrayToJS.xul @@ -53,8 +53,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=933681 "we end up with the appropriate constructor: " + c); is(Cu.unwaiveXrays(Cu.waiveXrays(new iwin[c]).constructor), iwin[c], "constructor property is set up right: " + c); - is(Object.getPrototypeOf(new iwin[c]), - Cu.unwaiveXrays(Cu.waiveXrays(iwin[c]).prototype), + is(Object.getPrototypeOf(new iwin[c]), iwin[c].prototype, "prototype is correct: " + c); is(global(new iwin[c]), iwin, "Got the right global: " + c); } diff --git a/js/xpconnect/wrappers/XrayWrapper.cpp b/js/xpconnect/wrappers/XrayWrapper.cpp index 6688ad276c1..32e39218a12 100644 --- a/js/xpconnect/wrappers/XrayWrapper.cpp +++ b/js/xpconnect/wrappers/XrayWrapper.cpp @@ -417,6 +417,7 @@ public: enum { SLOT_PROTOKEY = 0, SLOT_ISPROTOTYPE, + SLOT_CONSTRUCTOR_FOR, SLOT_COUNT }; virtual JSObject* createHolder(JSContext *cx, JSObject *wrapper) MOZ_OVERRIDE; @@ -430,6 +431,11 @@ public: return js::GetReservedSlot(holder, SLOT_ISPROTOTYPE).toBoolean(); } + static JSProtoKey constructorFor(JSObject *holder) { + int32_t key = js::GetReservedSlot(holder, SLOT_CONSTRUCTOR_FOR).toInt32(); + return static_cast(key); + } + static bool getOwnPropertyFromTargetIfSafe(JSContext *cx, HandleObject target, HandleObject wrapper, @@ -566,6 +572,25 @@ JSXrayTraits::resolveOwnProperty(JSContext *cx, Wrapper &jsWrapper, "across origin boundaries, consider using Components.utils.cloneInto()."); return false; } + } else if (key == JSProto_Function) { + // Handle the 'prototype' property to make xrayedGlobal.StandardClass.prototype work. + if (id == GetRTIdByIndex(cx, XPCJSRuntime::IDX_PROTOTYPE)) { + JSProtoKey standardConstructor = constructorFor(holder); + if (standardConstructor != JSProto_Null) { + RootedObject standardProto(cx); + { + JSAutoCompartment ac(cx, target); + if (!JS_GetClassPrototype(cx, standardConstructor, &standardProto)) + return false; + MOZ_ASSERT(standardProto); + } + if (!JS_WrapObject(cx, &standardProto)) + return false; + FillPropertyDescriptor(desc, wrapper, JSPROP_PERMANENT | JSPROP_READONLY, + ObjectValue(*standardProto)); + return true; + } + } } // The rest of this function applies only to prototypes. @@ -819,6 +844,12 @@ JSXrayTraits::enumerateNames(JSContext *cx, HandleObject wrapper, unsigned flags return false; for (int32_t i = 0; i <= int32_t(length - 1); ++i) props.infallibleAppend(INT_TO_JSID(i)); + } else if (key == JSProto_Function) { + // Handle the .prototype property on standard constructors. + if (constructorFor(holder) != JSProto_Null) { + if (!props.append(GetRTIdByIndex(cx, XPCJSRuntime::IDX_PROTOTYPE))) + return false; + } } // The rest of this function applies only to prototypes. @@ -883,6 +914,13 @@ JSXrayTraits::createHolder(JSContext *cx, JSObject *wrapper) v.setBoolean(isPrototype); js::SetReservedSlot(holder, SLOT_ISPROTOTYPE, v); + // If this is a function, also compute whether it serves as a constructor + // for a standard class. + if (key == JSProto_Function) { + v.setNumber(static_cast(IdentifyStandardConstructor(target))); + js::SetReservedSlot(holder, SLOT_CONSTRUCTOR_FOR, v); + } + return holder; } From dae7d9b7965f3533d281cdd43c6b4036b4ae4973 Mon Sep 17 00:00:00 2001 From: Bobby Holley Date: Thu, 19 Jun 2014 09:57:06 -0700 Subject: [PATCH 21/60] Bug 976148 - Support the .name and .length properties of Function instances. r=gabor --- js/xpconnect/src/XPCJSRuntime.cpp | 4 +++- js/xpconnect/src/xpcprivate.h | 2 ++ js/xpconnect/wrappers/XrayWrapper.cpp | 15 +++++++++++++-- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/js/xpconnect/src/XPCJSRuntime.cpp b/js/xpconnect/src/XPCJSRuntime.cpp index 092e9b31a1d..8af80f15a59 100644 --- a/js/xpconnect/src/XPCJSRuntime.cpp +++ b/js/xpconnect/src/XPCJSRuntime.cpp @@ -80,8 +80,10 @@ const char* const XPCJSRuntime::mStrings[] = { "__iterator__", // IDX_ITERATOR "__exposedProps__", // IDX_EXPOSEDPROPS "eval", // IDX_EVAL - "controllers", // IDX_CONTROLLERS + "controllers", // IDX_CONTROLLERS "realFrameElement", // IDX_REALFRAMEELEMENT + "length", // IDX_LENGTH + "name", // IDX_NAME }; /***************************************************************************/ diff --git a/js/xpconnect/src/xpcprivate.h b/js/xpconnect/src/xpcprivate.h index 233139fbd83..53dff4aa6cd 100644 --- a/js/xpconnect/src/xpcprivate.h +++ b/js/xpconnect/src/xpcprivate.h @@ -480,6 +480,8 @@ public: IDX_EVAL , IDX_CONTROLLERS , IDX_REALFRAMEELEMENT , + IDX_LENGTH , + IDX_NAME , IDX_TOTAL_COUNT // just a count of the above }; diff --git a/js/xpconnect/wrappers/XrayWrapper.cpp b/js/xpconnect/wrappers/XrayWrapper.cpp index 32e39218a12..38295e22f86 100644 --- a/js/xpconnect/wrappers/XrayWrapper.cpp +++ b/js/xpconnect/wrappers/XrayWrapper.cpp @@ -573,8 +573,15 @@ JSXrayTraits::resolveOwnProperty(JSContext *cx, Wrapper &jsWrapper, return false; } } else if (key == JSProto_Function) { - // Handle the 'prototype' property to make xrayedGlobal.StandardClass.prototype work. - if (id == GetRTIdByIndex(cx, XPCJSRuntime::IDX_PROTOTYPE)) { + if (id == GetRTIdByIndex(cx, XPCJSRuntime::IDX_LENGTH)) { + FillPropertyDescriptor(desc, wrapper, JSPROP_PERMANENT | JSPROP_READONLY, + NumberValue(JS_GetFunctionArity(JS_GetObjectFunction(target)))); + return true; + } else if (id == GetRTIdByIndex(cx, XPCJSRuntime::IDX_NAME)) { + FillPropertyDescriptor(desc, wrapper, JSPROP_PERMANENT | JSPROP_READONLY, + StringValue(JS_GetFunctionId(JS_GetObjectFunction(target)))); + } else if (id == GetRTIdByIndex(cx, XPCJSRuntime::IDX_PROTOTYPE)) { + // Handle the 'prototype' property to make xrayedGlobal.StandardClass.prototype work. JSProtoKey standardConstructor = constructorFor(holder); if (standardConstructor != JSProto_Null) { RootedObject standardProto(cx); @@ -845,6 +852,10 @@ JSXrayTraits::enumerateNames(JSContext *cx, HandleObject wrapper, unsigned flags for (int32_t i = 0; i <= int32_t(length - 1); ++i) props.infallibleAppend(INT_TO_JSID(i)); } else if (key == JSProto_Function) { + if (!props.append(GetRTIdByIndex(cx, XPCJSRuntime::IDX_LENGTH))) + return false; + if (!props.append(GetRTIdByIndex(cx, XPCJSRuntime::IDX_NAME))) + return false; // Handle the .prototype property on standard constructors. if (constructorFor(holder) != JSProto_Null) { if (!props.append(GetRTIdByIndex(cx, XPCJSRuntime::IDX_PROTOTYPE))) From 197040b5d2bf6f12e71ff0ce644cee33f3bb41e5 Mon Sep 17 00:00:00 2001 From: Bobby Holley Date: Thu, 19 Jun 2014 09:57:06 -0700 Subject: [PATCH 22/60] Bug 976148 - Tests. r=gabor --- js/xpconnect/tests/chrome/test_xrayToJS.xul | 22 +++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/js/xpconnect/tests/chrome/test_xrayToJS.xul b/js/xpconnect/tests/chrome/test_xrayToJS.xul index eecac03956f..83a0e0a1316 100644 --- a/js/xpconnect/tests/chrome/test_xrayToJS.xul +++ b/js/xpconnect/tests/chrome/test_xrayToJS.xul @@ -84,6 +84,25 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=933681 is(global(factoryFun), iwin, "proper global for factoryFun"); is(factoryFun().foo, 32, "factoryFun invokable"); is(global(factoryFun()), iwin, "minted objects live in the content scope"); + testXray('Function', factoryFun, new iwin.Function(), ['caller', 'arguments', 'length', 'name']); + var echoThis = new iwin.Function('return this;'); + echoThis.wrappedJSObject.bind = 42; + var boundEchoThis = echoThis.bind(document); + is(boundEchoThis(), document, "bind() works correctly over Xrays"); + is(global(boundEchoThis), window, "bound functions live in the caller's scope"); + ok(/return this/.test(echoThis.toSource()), 'toSource works: ' + echoThis.toSource()); + ok(/return this/.test(echoThis.toString()), 'toString works: ' + echoThis.toString()); + is(iwin.Function.prototype, Object.getPrototypeOf(echoThis), "Function.prototype works for standard classes"); + is(echoThis.prototype, undefined, "Function.prototype not visible for non standard constructors"); + iwin.eval('var foopyFunction = function namedFoopyFunction(a, b, c) {}'); + var foopyFunction = Cu.unwaiveXrays(Cu.waiveXrays(iwin).foopyFunction); + ok(Cu.isXrayWrapper(foopyFunction), "Should be Xrays"); + is(foopyFunction.name, "namedFoopyFunction", ".name works over Xrays"); + is(foopyFunction.length, 3, ".length works over Xrays"); + ok(Object.getOwnPropertyNames(foopyFunction).indexOf('length') >= 0, "Should list length"); + ok(Object.getOwnPropertyNames(foopyFunction).indexOf('name') >= 0, "Should list name"); + ok(Object.getOwnPropertyNames(foopyFunction).indexOf('prototype') == -1, "Should not list prototype"); + ok(Object.getOwnPropertyNames(iwin.Array).indexOf('prototype') >= 0, "Should list prototype for standard constructor"); // Test interface objects that don't actually construct things. is(iwin.Math.tan(4.5), Math.tan(4.5), "Math.tan works"); @@ -163,6 +182,9 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=933681 if (!isReleaseBuild) gPrototypeProperties[c].push("move"); } + gPrototypeProperties['Function'] = + ["constructor", "toSource", "toString", "apply", "call", "bind", + "isGenerator", "length", "name", "arguments", "caller"]; function filterOut(array, props) { return array.filter(p => props.indexOf(p) == -1); From a63cae15189d36f54977420bf0cd91896557a29f Mon Sep 17 00:00:00 2001 From: David Keeler Date: Thu, 19 Jun 2014 10:31:06 -0700 Subject: [PATCH 23/60] bug 1027711 - remove some unused const variables in PSM r=cviecco --- security/manager/ssl/src/SSLServerCertVerification.cpp | 2 -- security/manager/ssl/src/nsKeygenHandler.cpp | 3 --- 2 files changed, 5 deletions(-) diff --git a/security/manager/ssl/src/SSLServerCertVerification.cpp b/security/manager/ssl/src/SSLServerCertVerification.cpp index ef3ea9aad4c..55275086afe 100644 --- a/security/manager/ssl/src/SSLServerCertVerification.cpp +++ b/security/manager/ssl/src/SSLServerCertVerification.cpp @@ -137,8 +137,6 @@ namespace mozilla { namespace psm { namespace { -NS_DEFINE_CID(kNSSComponentCID, NS_NSSCOMPONENT_CID); - NSSCleanupAutoPtrClass(CERTCertificate, CERT_DestroyCertificate) NSSCleanupAutoPtrClass_WithParam(PLArenaPool, PORT_FreeArena, FalseParam, false) diff --git a/security/manager/ssl/src/nsKeygenHandler.cpp b/security/manager/ssl/src/nsKeygenHandler.cpp index cc94e72bf3e..f21c65c5a3f 100644 --- a/security/manager/ssl/src/nsKeygenHandler.cpp +++ b/security/manager/ssl/src/nsKeygenHandler.cpp @@ -67,9 +67,6 @@ const SEC_ASN1Template SECKEY_PQGParamsTemplate[] = { { 0, } }; - -static NS_DEFINE_IID(kIDOMHTMLSelectElementIID, NS_IDOMHTMLSELECTELEMENT_IID); - static PQGParams * decode_pqg_params(char *aStr) { From d638652838f0664bc44f01c47406dad096f89ca3 Mon Sep 17 00:00:00 2001 From: Andrew Halberstadt Date: Thu, 19 Jun 2014 14:17:26 -0400 Subject: [PATCH 24/60] Bug 997244 - Move emulator.py out of marionette and into mozrunner, r=wlach,mdas,jgriffin --- build/mobile/b2gautomation.py | 4 +- build/valgrind/mach_commands.py | 2 +- layout/tools/reftest/b2g_desktop.py | 20 +- layout/tools/reftest/mach_commands.py | 8 +- layout/tools/reftest/runreftestb2g.py | 28 +- .../config/mozharness/b2g_emulator_config.py | 10 +- .../marionette/client/marionette/__init__.py | 54 +- .../marionette/client/marionette/b2gbuild.py | 98 ---- .../client/marionette/b2ginstance.py | 70 --- .../marionette/client/marionette/emulator.py | 539 ------------------ .../client/marionette/geckoinstance.py | 36 +- .../client/marionette/marionette.py | 213 +++---- .../client/marionette/runner/base.py | 50 +- .../client/marionette/runner/mixins/b2g.py | 10 +- .../marionette/tests/unit/test_clearing.py | 2 +- .../tests/unit/test_element_touch.py | 2 +- .../marionette/tests/unit/test_emulator.py | 4 +- .../tests/unit/test_execute_async_script.py | 2 +- .../tests/unit/test_execute_isolate.py | 2 +- .../tests/unit/test_execute_script.py | 2 +- .../marionette/tests/unit/test_findelement.py | 2 +- .../tests/unit/test_findelement_chrome.py | 2 +- .../tests/unit/test_implicit_waits.py | 2 +- .../marionette/tests/unit/test_navigation.py | 3 +- .../tests/unit/test_screen_orientation.py | 4 +- .../tests/unit/test_simpletest_sanity.py | 2 +- .../tests/unit/test_single_finger.py | 2 +- .../tests/unit/test_single_finger_desktop.py | 2 +- .../tests/unit/test_specialpowers.py | 2 +- .../tests/unit/test_switch_frame.py | 2 +- .../tests/unit/test_switch_frame_chrome.py | 2 +- .../marionette/tests/unit/test_timeouts.py | 2 +- .../marionette/tests/unit/test_typing.py | 2 +- testing/marionette/client/requirements.txt | 4 +- testing/mochitest/mach_commands.py | 8 +- testing/mochitest/mochitest_options.py | 11 +- testing/mochitest/runtests.py | 11 +- testing/mochitest/runtestsb2g.py | 150 +++-- testing/mozbase/docs/mozrunner.rst | 177 ++++++ testing/mozbase/docs/setuprunning.rst | 1 + .../mozdevice/mozdevice/devicemanager.py | 5 +- .../mozdevice/mozdevice/devicemanagerADB.py | 44 +- testing/mozbase/mozdevice/setup.py | 2 +- .../mozprocess/mozprocess/processhandler.py | 2 +- .../mozbase/mozrunner/mozrunner/__init__.py | 11 +- .../mozrunner/mozrunner/application.py | 129 +++++ .../mozrunner/mozrunner/base/__init__.py | 3 + .../mozrunner/mozrunner/base/browser.py | 74 +++ .../mozrunner/mozrunner/base/device.py | 111 ++++ .../mozrunner/{base.py => base/runner.py} | 139 ++--- testing/mozbase/mozrunner/mozrunner/cli.py | 193 +++++++ .../mozrunner/mozrunner/devices/__init__.py | 10 + .../mozrunner/mozrunner/devices/base.py | 227 ++++++++ .../mozrunner/mozrunner/devices/emulator.py | 258 +++++++++ .../mozrunner/devices}/emulator_battery.py | 0 .../mozrunner/devices}/emulator_geo.py | 0 .../mozrunner/devices}/emulator_screen.py | 11 + testing/mozbase/mozrunner/mozrunner/errors.py | 7 +- testing/mozbase/mozrunner/mozrunner/local.py | 362 ------------ testing/mozbase/mozrunner/mozrunner/remote.py | 382 ------------- .../mozbase/mozrunner/mozrunner/runners.py | 155 +++++ testing/mozbase/mozrunner/mozrunner/utils.py | 33 +- testing/mozbase/mozrunner/setup.py | 8 +- testing/profiles/prefs_b2g_unittest.js | 8 +- testing/tps/tps/firefoxrunner.py | 16 +- testing/xpcshell/mach_commands.py | 2 +- testing/xpcshell/remotexpcshelltests.py | 4 +- testing/xpcshell/runtestsb2g.py | 20 +- testing/xpcshell/runxpcshelltests.py | 6 +- 69 files changed, 1842 insertions(+), 1927 deletions(-) delete mode 100644 testing/marionette/client/marionette/b2gbuild.py delete mode 100644 testing/marionette/client/marionette/b2ginstance.py delete mode 100644 testing/marionette/client/marionette/emulator.py create mode 100644 testing/mozbase/docs/mozrunner.rst create mode 100644 testing/mozbase/mozrunner/mozrunner/application.py create mode 100644 testing/mozbase/mozrunner/mozrunner/base/__init__.py create mode 100644 testing/mozbase/mozrunner/mozrunner/base/browser.py create mode 100644 testing/mozbase/mozrunner/mozrunner/base/device.py rename testing/mozbase/mozrunner/mozrunner/{base.py => base/runner.py} (58%) create mode 100644 testing/mozbase/mozrunner/mozrunner/cli.py create mode 100644 testing/mozbase/mozrunner/mozrunner/devices/__init__.py create mode 100644 testing/mozbase/mozrunner/mozrunner/devices/base.py create mode 100644 testing/mozbase/mozrunner/mozrunner/devices/emulator.py rename testing/{marionette/client/marionette => mozbase/mozrunner/mozrunner/devices}/emulator_battery.py (100%) rename testing/{marionette/client/marionette => mozbase/mozrunner/mozrunner/devices}/emulator_geo.py (100%) rename testing/{marionette/client/marionette => mozbase/mozrunner/mozrunner/devices}/emulator_screen.py (85%) delete mode 100644 testing/mozbase/mozrunner/mozrunner/local.py delete mode 100644 testing/mozbase/mozrunner/mozrunner/remote.py create mode 100644 testing/mozbase/mozrunner/mozrunner/runners.py diff --git a/build/mobile/b2gautomation.py b/build/mobile/b2gautomation.py index f78d56b6ab7..7cd8703a06d 100644 --- a/build/mobile/b2gautomation.py +++ b/build/mobile/b2gautomation.py @@ -194,7 +194,7 @@ class B2GRemoteAutomation(Automation): time.sleep(10) self._devicemanager._checkCmd(['shell', 'start', 'b2g']) if self._is_emulator: - self.marionette.emulator.wait_for_port() + self.marionette.emulator.wait_for_port(self.marionette.port) def rebootDevice(self): # find device's current status and serial number @@ -262,7 +262,7 @@ class B2GRemoteAutomation(Automation): 'tcp:%s' % self.marionette.port]) if self._is_emulator: - self.marionette.emulator.wait_for_port() + self.marionette.emulator.wait_for_port(self.marionette.port) else: time.sleep(5) diff --git a/build/valgrind/mach_commands.py b/build/valgrind/mach_commands.py index 8ee6971c4ce..af47ec8a4c9 100644 --- a/build/valgrind/mach_commands.py +++ b/build/valgrind/mach_commands.py @@ -131,7 +131,7 @@ class MachCommands(MachCommandBase): binary=self.get_binary_path(), cmdargs=firefox_args, env=env, - kp_kwargs=kp_kwargs) + process_args=kp_kwargs) runner.start(debug_args=valgrind_args) exitcode = runner.wait() diff --git a/layout/tools/reftest/b2g_desktop.py b/layout/tools/reftest/b2g_desktop.py index 8eb376e25c5..0bda13c500a 100644 --- a/layout/tools/reftest/b2g_desktop.py +++ b/layout/tools/reftest/b2g_desktop.py @@ -22,16 +22,19 @@ import mozlog log = mozlog.getLogger('REFTEST') class B2GDesktopReftest(RefTest): - def __init__(self, marionette): + marionette = None + + def __init__(self, marionette_args): RefTest.__init__(self) self.last_test = os.path.basename(__file__) - self.marionette = marionette + self.marionette_args = marionette_args self.profile = None self.runner = None self.test_script = os.path.join(here, 'b2g_start_script.js') self.timeout = None def run_marionette_script(self): + self.marionette = Marionette(**self.marionette_args) assert(self.marionette.wait_for_port()) self.marionette.start_session() self.marionette.set_context(self.marionette.CONTEXT_CHROME) @@ -71,8 +74,8 @@ class B2GDesktopReftest(RefTest): cmdargs=args, env=env, process_class=ProcessHandler, - symbols_path=options.symbolsPath, - kp_kwargs=kp_kwargs) + process_args=kp_kwargs, + symbols_path=options.symbolsPath) status = 0 try: @@ -151,14 +154,13 @@ class B2GDesktopReftest(RefTest): def run_desktop_reftests(parser, options, args): - kwargs = {} + marionette_args = {} if options.marionette: host, port = options.marionette.split(':') - kwargs['host'] = host - kwargs['port'] = int(port) - marionette = Marionette.getMarionetteOrExit(**kwargs) + marionette_args['host'] = host + marionette_args['port'] = int(port) - reftest = B2GDesktopReftest(marionette) + reftest = B2GDesktopReftest(marionette_args) options = ReftestOptions.verifyCommonOptions(parser, options, reftest) if options == None: diff --git a/layout/tools/reftest/mach_commands.py b/layout/tools/reftest/mach_commands.py index ad71f923e73..88b3f95c24d 100644 --- a/layout/tools/reftest/mach_commands.py +++ b/layout/tools/reftest/mach_commands.py @@ -201,7 +201,7 @@ class ReftestRunner(MozbuildObject): raise Exception(ADB_NOT_FOUND % ('%s-remote' % suite, b2g_home)) options.b2gPath = b2g_home - options.logcat_dir = self.reftest_dir + options.logdir = self.reftest_dir options.httpdPath = os.path.join(self.topsrcdir, 'netwerk', 'test', 'httpserver') options.xrePath = xre_path options.ignoreWindowSize = True @@ -335,9 +335,9 @@ def B2GCommand(func): help='Path to busybox binary to install on device') func = busybox(func) - logcatdir = CommandArgument('--logcat-dir', default=None, - help='directory to store logcat dump files') - func = logcatdir(func) + logdir = CommandArgument('--logdir', default=None, + help='directory to store log files') + func = logdir(func) sdcard = CommandArgument('--sdcard', default="10MB", help='Define size of sdcard: 1MB, 50MB...etc') diff --git a/layout/tools/reftest/runreftestb2g.py b/layout/tools/reftest/runreftestb2g.py index dbc7ff55aad..44d0d9dcf83 100644 --- a/layout/tools/reftest/runreftestb2g.py +++ b/layout/tools/reftest/runreftestb2g.py @@ -58,9 +58,9 @@ class B2GOptions(ReftestOptions): defaults["noWindow"] = False self.add_option("--adbpath", action="store", - type = "string", dest = "adbPath", + type = "string", dest = "adb_path", help = "path to adb") - defaults["adbPath"] = "adb" + defaults["adb_path"] = "adb" self.add_option("--deviceIP", action="store", type = "string", dest = "deviceIP", @@ -101,10 +101,10 @@ class B2GOptions(ReftestOptions): help="the path to a gecko distribution that should " "be installed on the emulator prior to test") defaults["geckoPath"] = None - self.add_option("--logcat-dir", action="store", - type="string", dest="logcat_dir", - help="directory to store logcat dump files") - defaults["logcat_dir"] = None + self.add_option("--logdir", action="store", + type="string", dest="logdir", + help="directory to store log files") + defaults["logdir"] = None self.add_option('--busybox', action='store', type='string', dest='busybox', help="Path to busybox binary to install on device") @@ -166,8 +166,8 @@ class B2GOptions(ReftestOptions): if options.geckoPath and not options.emulator: self.error("You must specify --emulator if you specify --gecko-path") - if options.logcat_dir and not options.emulator: - self.error("You must specify --emulator if you specify --logcat-dir") + if options.logdir and not options.emulator: + self.error("You must specify --emulator if you specify --logdir") #if not options.emulator and not options.deviceIP: # print "ERROR: you must provide a device IP" @@ -497,8 +497,8 @@ def run_remote_reftests(parser, options, args): kwargs['noWindow'] = True if options.geckoPath: kwargs['gecko_path'] = options.geckoPath - if options.logcat_dir: - kwargs['logcat_dir'] = options.logcat_dir + if options.logdir: + kwargs['logdir'] = options.logdir if options.busybox: kwargs['busybox'] = options.busybox if options.symbolsPath: @@ -511,19 +511,21 @@ def run_remote_reftests(parser, options, args): host,port = options.marionette.split(':') kwargs['host'] = host kwargs['port'] = int(port) - marionette = Marionette.getMarionetteOrExit(**kwargs) + if options.adb_path: + kwargs['adb_path'] = options.adb_path + marionette = Marionette(**kwargs) auto.marionette = marionette if options.emulator: dm = marionette.emulator.dm else: # create the DeviceManager - kwargs = {'adbPath': options.adbPath, + kwargs = {'adbPath': options.adb_path, 'deviceRoot': options.remoteTestRoot} if options.deviceIP: kwargs.update({'host': options.deviceIP, 'port': options.devicePort}) - dm = DeviagerADB(**kwargs) + dm = DeviceManagerADB(**kwargs) auto.setDeviceManager(dm) options = parser.verifyRemoteOptions(options, auto) diff --git a/testing/config/mozharness/b2g_emulator_config.py b/testing/config/mozharness/b2g_emulator_config.py index da4882e036d..9d5ea735ae8 100644 --- a/testing/config/mozharness/b2g_emulator_config.py +++ b/testing/config/mozharness/b2g_emulator_config.py @@ -5,7 +5,7 @@ config = { "jsreftest_options": [ "--adbpath=%(adbpath)s", "--b2gpath=%(b2gpath)s", "--emulator=%(emulator)s", - "--emulator-res=800x1000", "--logcat-dir=%(logcat_dir)s", + "--emulator-res=800x1000", "--logdir=%(logcat_dir)s", "--remote-webserver=%(remote_webserver)s", "--ignore-window-size", "--xre-path=%(xre_path)s", "--symbols-path=%(symbols_path)s", "--busybox=%(busybox)s", "--total-chunks=%(total_chunks)s", "--this-chunk=%(this_chunk)s", @@ -15,7 +15,7 @@ config = { "mochitest_options": [ "--adbpath=%(adbpath)s", "--b2gpath=%(b2gpath)s", "--console-level=INFO", - "--emulator=%(emulator)s", "--logcat-dir=%(logcat_dir)s", + "--emulator=%(emulator)s", "--logdir=%(logcat_dir)s", "--remote-webserver=%(remote_webserver)s", "%(test_manifest)s", "--xre-path=%(xre_path)s", "--symbols-path=%(symbols_path)s", "--busybox=%(busybox)s", "--total-chunks=%(total_chunks)s", "--this-chunk=%(this_chunk)s", @@ -25,7 +25,7 @@ config = { "reftest_options": [ "--adbpath=%(adbpath)s", "--b2gpath=%(b2gpath)s", "--emulator=%(emulator)s", - "--emulator-res=800x1000", "--logcat-dir=%(logcat_dir)s", + "--emulator-res=800x1000", "--logdir=%(logcat_dir)s", "--remote-webserver=%(remote_webserver)s", "--ignore-window-size", "--xre-path=%(xre_path)s", "--symbols-path=%(symbols_path)s", "--busybox=%(busybox)s", "--total-chunks=%(total_chunks)s", "--this-chunk=%(this_chunk)s", "--enable-oop", @@ -34,7 +34,7 @@ config = { "crashtest_options": [ "--adbpath=%(adbpath)s", "--b2gpath=%(b2gpath)s", "--emulator=%(emulator)s", - "--emulator-res=800x1000", "--logcat-dir=%(logcat_dir)s", + "--emulator-res=800x1000", "--logdir=%(logcat_dir)s", "--remote-webserver=%(remote_webserver)s", "--ignore-window-size", "--xre-path=%(xre_path)s", "--symbols-path=%(symbols_path)s", "--busybox=%(busybox)s", "--total-chunks=%(total_chunks)s", "--this-chunk=%(this_chunk)s", @@ -43,7 +43,7 @@ config = { "xpcshell_options": [ "--adbpath=%(adbpath)s", "--b2gpath=%(b2gpath)s", "--emulator=%(emulator)s", - "--logcat-dir=%(logcat_dir)s", "--manifest=%(test_manifest)s", "--use-device-libs", + "--logdir=%(logcat_dir)s", "--manifest=%(test_manifest)s", "--use-device-libs", "--testing-modules-dir=%(modules_dir)s", "--symbols-path=%(symbols_path)s", "--busybox=%(busybox)s", "--total-chunks=%(total_chunks)s", "--this-chunk=%(this_chunk)s", ], diff --git a/testing/marionette/client/marionette/__init__.py b/testing/marionette/client/marionette/__init__.py index a4e35abc976..0f42de01017 100644 --- a/testing/marionette/client/marionette/__init__.py +++ b/testing/marionette/client/marionette/__init__.py @@ -6,21 +6,49 @@ from gestures import smooth_scroll, pinch from by import By from marionette import Marionette, HTMLElement, Actions, MultiActions from marionette_test import MarionetteTestCase, MarionetteJSTestCase, CommonTestCase, expectedFailure, skip, SkipTest -from emulator import Emulator from errors import ( - ErrorCodes, MarionetteException, InstallGeckoError, TimeoutException, InvalidResponseException, - JavascriptException, NoSuchElementException, XPathLookupException, NoSuchWindowException, - StaleElementException, ScriptTimeoutException, ElementNotVisibleException, - NoSuchFrameException, InvalidElementStateException, NoAlertPresentException, - InvalidCookieDomainException, UnableToSetCookieException, InvalidSelectorException, - MoveTargetOutOfBoundsException, FrameSendNotInitializedError, FrameSendFailureError - ) + ElementNotVisibleException, + ErrorCodes, + FrameSendFailureError, + FrameSendNotInitializedError, + InvalidCookieDomainException, + InvalidElementStateException, + InvalidResponseException, + InvalidSelectorException, + JavascriptException, + MarionetteException, + MoveTargetOutOfBoundsException, + NoAlertPresentException, + NoSuchElementException, + NoSuchFrameException, + NoSuchWindowException, + ScriptTimeoutException, + StaleElementException, + TimeoutException, + UnableToSetCookieException, + XPathLookupException, +) from runner import ( - B2GTestCaseMixin, B2GTestResultMixin, BaseMarionetteOptions, BaseMarionetteTestRunner, EnduranceOptionsMixin, - EnduranceTestCaseMixin, HTMLReportingOptionsMixin, HTMLReportingTestResultMixin, HTMLReportingTestRunnerMixin, - Marionette, MarionetteTest, MarionetteTestResult, MarionetteTextTestRunner, MemoryEnduranceTestCaseMixin, - MozHttpd, OptionParser, TestManifest, TestResult, TestResultCollection - ) + B2GTestCaseMixin, + B2GTestResultMixin, + BaseMarionetteOptions, + BaseMarionetteTestRunner, + EnduranceOptionsMixin, + EnduranceTestCaseMixin, + HTMLReportingOptionsMixin, + HTMLReportingTestResultMixin, + HTMLReportingTestRunnerMixin, + Marionette, + MarionetteTest, + MarionetteTestResult, + MarionetteTextTestRunner, + MemoryEnduranceTestCaseMixin, + MozHttpd, + OptionParser, + TestManifest, + TestResult, + TestResultCollection +) from wait import Wait from date_time_value import DateTimeValue import decorators diff --git a/testing/marionette/client/marionette/b2gbuild.py b/testing/marionette/client/marionette/b2gbuild.py deleted file mode 100644 index 32478e457be..00000000000 --- a/testing/marionette/client/marionette/b2gbuild.py +++ /dev/null @@ -1,98 +0,0 @@ -# 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/. - -import os -import platform -import subprocess -import sys - - -class B2GBuild(object): - - @classmethod - def find_b2g_dir(cls): - for env_var in ('B2G_DIR', 'B2G_HOME'): - if env_var in os.environ: - env_dir = os.environ[env_var] - env_dir = cls.check_b2g_dir(env_dir) - if env_dir: - return env_dir - - cwd = os.getcwd() - cwd = cls.check_b2g_dir(cwd) - if cwd: - return cwd - - return None - - @classmethod - def check_adb(cls, homedir): - if 'ADB' in os.environ: - env_adb = os.environ['ADB'] - if os.path.exists(env_adb): - return env_adb - - return cls.check_host_binary(homedir, 'adb') - - @classmethod - def check_b2g_dir(cls, dir): - if os.path.isfile(os.path.join(dir, 'load-config.sh')): - return dir - - oldstyle_dir = os.path.join(dir, 'glue', 'gonk-ics') - if os.access(oldstyle_dir, os.F_OK): - return oldstyle_dir - - return None - - @classmethod - def check_fastboot(cls, homedir): - return cls.check_host_binary(homedir, 'fastboot') - - @classmethod - def check_host_binary(cls, homedir, binary): - host_dir = "linux-x86" - if platform.system() == "Darwin": - host_dir = "darwin-x86" - binary_path = subprocess.Popen(['which', binary], - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) - if binary_path.wait() == 0: - return binary_path.stdout.read().strip() # remove trailing newline - binary_paths = [os.path.join(homedir, 'glue', 'gonk', 'out', 'host', - host_dir, 'bin', binary), - os.path.join(homedir, 'out', 'host', host_dir, - 'bin', binary), - os.path.join(homedir, 'bin', binary)] - for option in binary_paths: - if os.path.exists(option): - return option - raise Exception('%s not found!' % binary) - - def __init__(self, homedir=None, emulator=False): - if not homedir: - homedir = self.find_b2g_dir() - else: - homedir = self.check_b2g_dir(homedir) - - if not homedir: - raise EnvironmentError('Must define B2G_HOME or pass the homedir parameter') - - self.homedir = homedir - self.adb_path = self.check_adb(self.homedir) - self.update_tools = os.path.join(self.homedir, 'tools', 'update-tools') - self.fastboot_path = None if emulator else self.check_fastboot(self.homedir) - - def import_update_tools(self): - """Import the update_tools package from B2G""" - sys.path.append(self.update_tools) - import update_tools - sys.path.pop() - return update_tools - - def check_file(self, filePath): - if not os.access(filePath, os.F_OK): - raise Exception(('File not found: %s; did you pass the B2G home ' - 'directory as the homedir parameter, or set ' - 'B2G_HOME correctly?') % filePath) diff --git a/testing/marionette/client/marionette/b2ginstance.py b/testing/marionette/client/marionette/b2ginstance.py deleted file mode 100644 index 4e9e8323e63..00000000000 --- a/testing/marionette/client/marionette/b2ginstance.py +++ /dev/null @@ -1,70 +0,0 @@ -# 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/. - -from ConfigParser import ConfigParser -import posixpath -import shutil -import tempfile -import traceback - -from b2gbuild import B2GBuild -from mozdevice import DeviceManagerADB -import mozcrash - - -class B2GInstance(B2GBuild): - - def __init__(self, devicemanager=None, symbols_path=None, **kwargs): - B2GBuild.__init__(self, **kwargs) - - self._dm = devicemanager - self._remote_profiles = None - self.symbols_path = symbols_path - - @property - def dm(self): - if not self._dm: - self._dm = DeviceManagerADB(adbPath=self.adb_path) - return self._dm - - @property - def remote_profiles(self): - if not self._remote_profiles: - self.check_remote_profiles() - return self._remote_profiles - - def check_remote_profiles(self, remote_profiles_ini='/data/b2g/mozilla/profiles.ini'): - if not self.dm.fileExists(remote_profiles_ini): - raise Exception("Remote file '%s' not found" % remote_profiles_ini) - - local_profiles_ini = tempfile.NamedTemporaryFile() - self.dm.getFile(remote_profiles_ini, local_profiles_ini.name) - cfg = ConfigParser() - cfg.read(local_profiles_ini.name) - - remote_profiles = [] - for section in cfg.sections(): - if cfg.has_option(section, 'Path'): - if cfg.has_option(section, 'IsRelative') and cfg.getint(section, 'IsRelative'): - remote_profiles.append(posixpath.join(posixpath.dirname(remote_profiles_ini), cfg.get(section, 'Path'))) - else: - remote_profiles.append(cfg.get(section, 'Path')) - self._remote_profiles = remote_profiles - return remote_profiles - - def check_for_crashes(self): - remote_dump_dirs = [posixpath.join(p, 'minidumps') for p in self.remote_profiles] - crashed = False - for remote_dump_dir in remote_dump_dirs: - local_dump_dir = tempfile.mkdtemp() - self.dm.getDirectory(remote_dump_dir, local_dump_dir) - try: - if mozcrash.check_for_crashes(local_dump_dir, self.symbols_path): - crashed = True - except: - traceback.print_exc() - finally: - shutil.rmtree(local_dump_dir) - self.dm.removeDir(remote_dump_dir) - return crashed diff --git a/testing/marionette/client/marionette/emulator.py b/testing/marionette/client/marionette/emulator.py deleted file mode 100644 index 3e8c72ed8a5..00000000000 --- a/testing/marionette/client/marionette/emulator.py +++ /dev/null @@ -1,539 +0,0 @@ -# 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/. - -from b2ginstance import B2GInstance -import datetime -from mozdevice import devicemanagerADB, DMError -from mozprocess import ProcessHandlerMixin -import os -import re -import platform -import shutil -import socket -import subprocess -from telnetlib import Telnet -import tempfile -import time -import traceback - -from emulator_battery import EmulatorBattery -from emulator_geo import EmulatorGeo -from emulator_screen import EmulatorScreen -from decorators import uses_marionette - -from errors import ( - InstallGeckoError, - InvalidResponseException, - MarionetteException, - ScriptTimeoutException, - TimeoutException -) - - -class LogOutputProc(ProcessHandlerMixin): - """ - Process handler for processes which save all output to a logfile. - If no logfile is specified, output will still be consumed to prevent - the output pipe's from overflowing. - """ - - def __init__(self, cmd, logfile=None, **kwargs): - self.logfile = logfile - kwargs.setdefault('processOutputLine', []).append(self.log_output) - ProcessHandlerMixin.__init__(self, cmd, **kwargs) - - def log_output(self, line): - if not self.logfile: - return - - f = open(self.logfile, 'a') - f.write(line + "\n") - f.flush() - - -class Emulator(object): - - deviceRe = re.compile(r"^emulator-(\d+)(\s*)(.*)$") - _default_res = '320x480' - prefs = {'app.update.enabled': False, - 'app.update.staging.enabled': False, - 'app.update.service.enabled': False} - env = {'MOZ_CRASHREPORTER': '1', - 'MOZ_CRASHREPORTER_NO_REPORT': '1', - 'MOZ_CRASHREPORTER_SHUTDOWN': '1'} - - def __init__(self, homedir=None, noWindow=False, logcat_dir=None, - arch="x86", emulatorBinary=None, res=None, sdcard=None, - symbols_path=None, userdata=None): - self.port = None - self.dm = None - self._emulator_launched = False - self.proc = None - self.marionette_port = None - self.telnet = None - self._tmp_sdcard = None - self._tmp_userdata = None - self._adb_started = False - self.logcat_dir = logcat_dir - self.logcat_proc = None - self.arch = arch - self.binary = emulatorBinary - self.res = res or self._default_res - self.battery = EmulatorBattery(self) - self.geo = EmulatorGeo(self) - self.screen = EmulatorScreen(self) - self.homedir = homedir - self.sdcard = sdcard - self.symbols_path = symbols_path - self.noWindow = noWindow - if self.homedir is not None: - self.homedir = os.path.expanduser(homedir) - self.dataImg = userdata - self.copy_userdata = self.dataImg is None - - def _check_for_b2g(self): - self.b2g = B2GInstance(homedir=self.homedir, emulator=True, - symbols_path=self.symbols_path) - self.adb = self.b2g.adb_path - self.homedir = self.b2g.homedir - - if self.arch not in ("x86", "arm"): - raise Exception("Emulator architecture must be one of x86, arm, got: %s" % - self.arch) - - host_dir = "linux-x86" - if platform.system() == "Darwin": - host_dir = "darwin-x86" - - host_bin_dir = os.path.join("out", "host", host_dir, "bin") - - if self.arch == "x86": - binary = os.path.join(host_bin_dir, "emulator-x86") - kernel = "prebuilts/qemu-kernel/x86/kernel-qemu" - sysdir = "out/target/product/generic_x86" - self.tail_args = [] - else: - binary = os.path.join(host_bin_dir, "emulator") - kernel = "prebuilts/qemu-kernel/arm/kernel-qemu-armv7" - sysdir = "out/target/product/generic" - self.tail_args = ["-cpu", "cortex-a8"] - - if(self.sdcard): - self.mksdcard = os.path.join(self.homedir, host_bin_dir, "mksdcard") - self.create_sdcard(self.sdcard) - - if not self.binary: - self.binary = os.path.join(self.homedir, binary) - - self.b2g.check_file(self.binary) - - self.kernelImg = os.path.join(self.homedir, kernel) - self.b2g.check_file(self.kernelImg) - - self.sysDir = os.path.join(self.homedir, sysdir) - self.b2g.check_file(self.sysDir) - - if not self.dataImg: - self.dataImg = os.path.join(self.sysDir, 'userdata.img') - self.b2g.check_file(self.dataImg) - - def __del__(self): - if self.telnet: - self.telnet.write('exit\n') - self.telnet.read_all() - - @property - def args(self): - qemuArgs = [self.binary, - '-kernel', self.kernelImg, - '-sysdir', self.sysDir, - '-data', self.dataImg] - if self._tmp_sdcard: - qemuArgs.extend(['-sdcard', self._tmp_sdcard]) - if self.noWindow: - qemuArgs.append('-no-window') - qemuArgs.extend(['-memory', '512', - '-partition-size', '512', - '-verbose', - '-skin', self.res, - '-gpu', 'on', - '-qemu'] + self.tail_args) - return qemuArgs - - @property - def is_running(self): - if self._emulator_launched: - return self.proc is not None and self.proc.poll() is None - else: - return self.port is not None - - def check_for_crash(self): - """ - Checks if the emulator has crashed or not. Always returns False if - we've connected to an already-running emulator, since we can't track - the emulator's pid in that case. Otherwise, returns True iff - self.proc is not None (meaning the emulator hasn't been explicitly - closed), and self.proc.poll() is also not None (meaning the emulator - process has terminated). - """ - return self._emulator_launched and self.proc is not None \ - and self.proc.poll() is not None - - def check_for_minidumps(self): - return self.b2g.check_for_crashes() - - def create_sdcard(self, sdcard): - self._tmp_sdcard = tempfile.mktemp(prefix='sdcard') - sdargs = [self.mksdcard, "-l", "mySdCard", sdcard, self._tmp_sdcard] - sd = subprocess.Popen(sdargs, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - retcode = sd.wait() - if retcode: - raise Exception('unable to create sdcard : exit code %d: %s' - % (retcode, sd.stdout.read())) - return None - - def _run_adb(self, args): - args.insert(0, self.adb) - if self.port: - args.insert(1, '-s') - args.insert(2, 'emulator-%d' % self.port) - adb = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - retcode = adb.wait() - if retcode: - raise Exception('adb terminated with exit code %d: %s' - % (retcode, adb.stdout.read())) - return adb.stdout.read() - - def _get_telnet_response(self, command=None): - output = [] - assert(self.telnet) - if command is not None: - self.telnet.write('%s\n' % command) - while True: - line = self.telnet.read_until('\n') - output.append(line.rstrip()) - if line.startswith('OK'): - return output - elif line.startswith('KO:'): - raise Exception('bad telnet response: %s' % line) - - def _run_telnet(self, command): - if not self.telnet: - self.telnet = Telnet('localhost', self.port) - self._get_telnet_response() - return self._get_telnet_response(command) - - def _run_shell(self, args): - args.insert(0, 'shell') - return self._run_adb(args).split('\r\n') - - def close(self): - if self.is_running and self._emulator_launched: - self.proc.kill() - if self._adb_started: - self._run_adb(['kill-server']) - self._adb_started = False - if self.proc: - retcode = self.proc.poll() - self.proc = None - if self._tmp_userdata: - os.remove(self._tmp_userdata) - self._tmp_userdata = None - if self._tmp_sdcard: - os.remove(self._tmp_sdcard) - self._tmp_sdcard = None - return retcode - if self.logcat_proc and self.logcat_proc.proc.poll() is None: - self.logcat_proc.kill() - return 0 - - def _get_adb_devices(self): - offline = set() - online = set() - output = self._run_adb(['devices']) - for line in output.split('\n'): - m = self.deviceRe.match(line) - if m: - if m.group(3) == 'offline': - offline.add(m.group(1)) - else: - online.add(m.group(1)) - return (online, offline) - - def start_adb(self): - result = self._run_adb(['start-server']) - # We keep track of whether we've started adb or not, so we know - # if we need to kill it. - if 'daemon started successfully' in result: - self._adb_started = True - else: - self._adb_started = False - - @uses_marionette - def wait_for_system_message(self, marionette): - marionette.set_script_timeout(45000) - # Telephony API's won't be available immediately upon emulator - # boot; we have to wait for the syste-message-listener-ready - # message before we'll be able to use them successfully. See - # bug 792647. - print 'waiting for system-message-listener-ready...' - try: - marionette.execute_async_script(""" -waitFor( - function() { marionetteScriptFinished(true); }, - function() { return isSystemMessageListenerReady(); } -); - """) - except ScriptTimeoutException: - print 'timed out' - # We silently ignore the timeout if it occurs, since - # isSystemMessageListenerReady() isn't available on - # older emulators. 45s *should* be enough of a delay - # to allow telephony API's to work. - pass - except (InvalidResponseException, IOError): - self.check_for_minidumps() - raise - print '...done' - - def connect(self): - self.adb = B2GInstance.check_adb(self.homedir, emulator=True) - self.start_adb() - - online, offline = self._get_adb_devices() - now = datetime.datetime.now() - while online == set([]): - time.sleep(1) - if datetime.datetime.now() - now > datetime.timedelta(seconds=60): - raise Exception('timed out waiting for emulator to be available') - online, offline = self._get_adb_devices() - self.port = int(list(online)[0]) - - self.dm = devicemanagerADB.DeviceManagerADB(adbPath=self.adb, - deviceSerial='emulator-%d' % self.port) - - def start(self): - self._check_for_b2g() - self.start_adb() - - qemu_args = self.args[:] - if self.copy_userdata: - # Make a copy of the userdata.img for this instance of the emulator to use. - self._tmp_userdata = tempfile.mktemp(prefix='marionette') - shutil.copyfile(self.dataImg, self._tmp_userdata) - qemu_args[qemu_args.index('-data') + 1] = self._tmp_userdata - - original_online, original_offline = self._get_adb_devices() - - filename = None - if self.logcat_dir: - filename = os.path.join(self.logcat_dir, 'qemu.log') - if os.path.isfile(filename): - self.rotate_log(filename) - - self.proc = LogOutputProc(qemu_args, filename) - self.proc.run() - - online, offline = self._get_adb_devices() - now = datetime.datetime.now() - while online - original_online == set([]): - time.sleep(1) - if datetime.datetime.now() - now > datetime.timedelta(seconds=60): - raise TimeoutException('timed out waiting for emulator to start') - online, offline = self._get_adb_devices() - self.port = int(list(online - original_online)[0]) - self._emulator_launched = True - - self.dm = devicemanagerADB.DeviceManagerADB(adbPath=self.adb, - deviceSerial='emulator-%d' % self.port) - - # bug 802877 - time.sleep(10) - self.geo.set_default_location() - self.screen.initialize() - - if self.logcat_dir: - self.save_logcat() - - # setup DNS fix for networking - self._run_adb(['shell', 'setprop', 'net.dns1', '10.0.2.3']) - - @uses_marionette - def wait_for_homescreen(self, marionette): - print 'waiting for homescreen...' - - marionette.set_context(marionette.CONTEXT_CONTENT) - marionette.execute_async_script(""" -log('waiting for mozbrowserloadend'); -window.addEventListener('mozbrowserloadend', function loaded(aEvent) { - log('received mozbrowserloadend for ' + aEvent.target.src); - if (aEvent.target.src.indexOf('ftu') != -1 || aEvent.target.src.indexOf('homescreen') != -1) { - window.removeEventListener('mozbrowserloadend', loaded); - marionetteScriptFinished(); - } -});""", script_timeout=120000) - print '...done' - - def setup(self, marionette, gecko_path=None, busybox=None): - self.set_environment(marionette) - if busybox: - self.install_busybox(busybox) - - if gecko_path: - self.install_gecko(gecko_path, marionette) - - self.wait_for_system_message(marionette) - self.set_prefs(marionette) - - @uses_marionette - def set_environment(self, marionette): - for k, v in self.env.iteritems(): - marionette.execute_script(""" - let env = Cc["@mozilla.org/process/environment;1"]. - getService(Ci.nsIEnvironment); - env.set("%s", "%s"); - """ % (k, v)) - - @uses_marionette - def set_prefs(self, marionette): - for pref in self.prefs: - marionette.execute_script(""" - Components.utils.import("resource://gre/modules/Services.jsm"); - let argtype = typeof(arguments[1]); - switch(argtype) { - case 'boolean': - Services.prefs.setBoolPref(arguments[0], arguments[1]); - break; - case 'number': - Services.prefs.setIntPref(arguments[0], arguments[1]); - break; - default: - Services.prefs.setCharPref(arguments[0], arguments[1]); - } - """, [pref, self.prefs[pref]]) - - def restart_b2g(self): - print 'restarting B2G' - self.dm.shellCheckOutput(['stop', 'b2g']) - time.sleep(10) - self.dm.shellCheckOutput(['start', 'b2g']) - - if not self.wait_for_port(): - raise TimeoutException("Timeout waiting for marionette on port '%s'" % self.marionette_port) - - def install_gecko(self, gecko_path, marionette): - """ - Install gecko into the emulator using adb push. Restart b2g after the - installation. - """ - # See bug 800102. We use this particular method of installing - # gecko in order to avoid an adb bug in which adb will sometimes - # hang indefinitely while copying large files to the system - # partition. - print 'installing gecko binaries...' - - # see bug 809437 for the path that lead to this madness - try: - # need to remount so we can write to /system/b2g - self._run_adb(['remount']) - self.dm.removeDir('/data/local/b2g') - self.dm.mkDir('/data/local/b2g') - self.dm.pushDir(gecko_path, '/data/local/b2g', retryLimit=10) - - self.dm.shellCheckOutput(['stop', 'b2g']) - - for root, dirs, files in os.walk(gecko_path): - for filename in files: - rel_path = os.path.relpath(os.path.join(root, filename), gecko_path) - data_local_file = os.path.join('/data/local/b2g', rel_path) - system_b2g_file = os.path.join('/system/b2g', rel_path) - - print 'copying', data_local_file, 'to', system_b2g_file - self.dm.shellCheckOutput(['dd', - 'if=%s' % data_local_file, - 'of=%s' % system_b2g_file]) - self.restart_b2g() - - except (DMError, MarionetteException): - # Bug 812395 - raise a single exception type for these so we can - # explicitly catch them elsewhere. - - # print exception, but hide from mozharness error detection - exc = traceback.format_exc() - exc = exc.replace('Traceback', '_traceback') - print exc - - raise InstallGeckoError("unable to restart B2G after installing gecko") - - def install_busybox(self, busybox): - self._run_adb(['remount']) - - remote_file = "/system/bin/busybox" - print 'pushing %s' % remote_file - self.dm.pushFile(busybox, remote_file, retryLimit=10) - self._run_adb(['shell', 'cd /system/bin; chmod 555 busybox; for x in `./busybox --list`; do ln -s ./busybox $x; done']) - self.dm._verifyZip() - - def rotate_log(self, srclog, index=1): - """ Rotate a logfile, by recursively rotating logs further in the sequence, - deleting the last file if necessary. - """ - basename = os.path.basename(srclog) - basename = basename[:-len('.log')] - if index > 1: - basename = basename[:-len('.1')] - basename = '%s.%d.log' % (basename, index) - - destlog = os.path.join(self.logcat_dir, basename) - if os.path.isfile(destlog): - if index == 3: - os.remove(destlog) - else: - self.rotate_log(destlog, index+1) - shutil.move(srclog, destlog) - - def save_logcat(self): - """ Save the output of logcat to a file. - """ - filename = os.path.join(self.logcat_dir, "emulator-%d.log" % self.port) - if os.path.isfile(filename): - self.rotate_log(filename) - cmd = [self.adb, '-s', 'emulator-%d' % self.port, 'logcat', '-v', 'threadtime'] - - self.logcat_proc = LogOutputProc(cmd, filename) - self.logcat_proc.run() - - def setup_port_forwarding(self, remote_port): - """ Set up TCP port forwarding to the specified port on the device, - using any availble local port, and return the local port. - """ - s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - s.bind(("",0)) - local_port = s.getsockname()[1] - s.close() - - self._run_adb(['forward', - 'tcp:%d' % local_port, - 'tcp:%d' % remote_port]) - - self.marionette_port = local_port - - return local_port - - def wait_for_port(self, timeout=300): - assert(self.marionette_port) - starttime = datetime.datetime.now() - while datetime.datetime.now() - starttime < datetime.timedelta(seconds=timeout): - try: - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.connect(('localhost', self.marionette_port)) - data = sock.recv(16) - sock.close() - if ':' in data: - return True - except: - import traceback - print traceback.format_exc() - time.sleep(1) - return False diff --git a/testing/marionette/client/marionette/geckoinstance.py b/testing/marionette/client/marionette/geckoinstance.py index 483f3a46f89..9eea4ef3db6 100644 --- a/testing/marionette/client/marionette/geckoinstance.py +++ b/testing/marionette/client/marionette/geckoinstance.py @@ -25,21 +25,20 @@ class GeckoInstance(object): self.marionette_host = host self.marionette_port = port self.bin = bin - self.profile = profile + self.profile_path = profile self.app_args = app_args or [] self.runner = None self.symbols_path = symbols_path self.gecko_log = gecko_log def start(self): - profile_path = self.profile profile_args = {"preferences": self.required_prefs} - if not profile_path: - runner_class = Runner + if not self.profile_path: profile_args["restore"] = False + profile = Profile(**profile_args) else: - runner_class = CloneRunner - profile_args["path_from"] = profile_path + profile_args["path_from"] = self.profile_path + profile = Profile.clone(**profile_args) if self.gecko_log is None: self.gecko_log = 'gecko.log' @@ -57,13 +56,13 @@ class GeckoInstance(object): # https://developer.mozilla.org/docs/Environment_variables_affecting_crash_reporting env.update({ 'MOZ_CRASHREPORTER': '1', 'MOZ_CRASHREPORTER_NO_REPORT': '1', }) - self.runner = runner_class.create( + self.runner = Runner( binary=self.bin, - profile_args=profile_args, + profile=profile, cmdargs=['-no-remote', '-marionette'] + self.app_args, env=env, symbols_path=self.symbols_path, - kp_kwargs={ + process_args={ 'processOutputLine': [NullOutput()], 'logfile': self.gecko_log}) self.runner.start() @@ -72,24 +71,19 @@ class GeckoInstance(object): return self.runner.check_for_crashes() def close(self): - self.runner.stop() - self.runner.cleanup() + if self.runner: + self.runner.stop() + self.runner.cleanup() class B2GDesktopInstance(GeckoInstance): - required_prefs = {"focusmanager.testmode": True} -apps = {'b2g': B2GDesktopInstance, - 'b2gdesktop': B2GDesktopInstance} - - -class CloneRunner(Runner): - - profile_class = Profile.clone - class NullOutput(object): - def __call__(self, line): pass + + +apps = {'b2g': B2GDesktopInstance, + 'b2gdesktop': B2GDesktopInstance} diff --git a/testing/marionette/client/marionette/marionette.py b/testing/marionette/client/marionette/marionette.py index 645e7d56829..344e6087294 100644 --- a/testing/marionette/client/marionette/marionette.py +++ b/testing/marionette/client/marionette/marionette.py @@ -6,27 +6,20 @@ import ConfigParser import datetime import os import socket -import sys +import StringIO import time import traceback import base64 from application_cache import ApplicationCache from decorators import do_crash_check -from emulator import Emulator -from emulator_screen import EmulatorScreen -from errors import ( - ErrorCodes, MarionetteException, InstallGeckoError, TimeoutException, InvalidResponseException, - JavascriptException, NoSuchElementException, XPathLookupException, NoSuchWindowException, - StaleElementException, ScriptTimeoutException, ElementNotVisibleException, - NoSuchFrameException, InvalidElementStateException, NoAlertPresentException, - InvalidCookieDomainException, UnableToSetCookieException, InvalidSelectorException, - MoveTargetOutOfBoundsException, FrameSendNotInitializedError, FrameSendFailureError - ) from keys import Keys from marionette_transport import MarionetteTransport +from mozrunner import B2GEmulatorRunner + import geckoinstance +import errors class HTMLElement(object): """ @@ -451,32 +444,24 @@ class Marionette(object): TIMEOUT_SEARCH = 'implicit' TIMEOUT_SCRIPT = 'script' TIMEOUT_PAGE = 'page load' - SCREEN_ORIENTATIONS = {"portrait": EmulatorScreen.SO_PORTRAIT_PRIMARY, - "landscape": EmulatorScreen.SO_LANDSCAPE_PRIMARY, - "portrait-primary": EmulatorScreen.SO_PORTRAIT_PRIMARY, - "landscape-primary": EmulatorScreen.SO_LANDSCAPE_PRIMARY, - "portrait-secondary": EmulatorScreen.SO_PORTRAIT_SECONDARY, - "landscape-secondary": EmulatorScreen.SO_LANDSCAPE_SECONDARY} def __init__(self, host='localhost', port=2828, app=None, app_args=None, bin=None, - profile=None, emulator=None, sdcard=None, emulatorBinary=None, - emulatorImg=None, emulator_res=None, gecko_path=None, - connectToRunningEmulator=False, homedir=None, baseurl=None, - noWindow=False, logcat_dir=None, busybox=None, symbols_path=None, - timeout=None, device_serial=None, gecko_log=None): + profile=None, emulator=None, sdcard=None, emulator_img=None, + emulator_binary=None, emulator_res=None, connect_to_running_emulator=False, + gecko_log=None, homedir=None, baseurl=None, no_window=False, logdir=None, + busybox=None, symbols_path=None, timeout=None, device_serial=None, + adb_path=None): self.host = host self.port = self.local_port = port self.bin = bin self.instance = None - self.profile = profile self.session = None self.window = None + self.runner = None self.emulator = None self.extra_emulators = [] - self.homedir = homedir self.baseurl = baseurl - self.noWindow = noWindow - self.logcat_dir = logcat_dir + self.no_window = no_window self._test_name = None self.timeout = timeout self.device_serial = device_serial @@ -485,7 +470,7 @@ class Marionette(object): port = int(self.port) if not Marionette.is_port_available(port, host=self.host): ex_msg = "%s:%d is unavailable." % (self.host, port) - raise MarionetteException(message=ex_msg) + raise errors.MarionetteException(message=ex_msg) if app: # select instance class for the given app try: @@ -504,52 +489,56 @@ class Marionette(object): KeyError): instance_class = geckoinstance.GeckoInstance self.instance = instance_class(host=self.host, port=self.port, - bin=self.bin, profile=self.profile, + bin=self.bin, profile=profile, app_args=app_args, symbols_path=symbols_path, gecko_log=gecko_log) self.instance.start() assert(self.wait_for_port()), "Timed out waiting for port!" if emulator: - self.emulator = Emulator(homedir=homedir, - noWindow=self.noWindow, - logcat_dir=self.logcat_dir, - arch=emulator, - sdcard=sdcard, - symbols_path=symbols_path, - emulatorBinary=emulatorBinary, - userdata=emulatorImg, - res=emulator_res) + self.runner = B2GEmulatorRunner(b2g_home=homedir, + no_window=self.no_window, + logdir=logdir, + arch=emulator, + sdcard=sdcard, + symbols_path=symbols_path, + binary=emulator_binary, + userdata=emulator_img, + resolution=emulator_res, + profile=profile, + adb_path=adb_path) + self.emulator = self.runner.device self.emulator.start() self.port = self.emulator.setup_port_forwarding(self.port) - assert(self.emulator.wait_for_port()), "Timed out waiting for port!" + assert(self.emulator.wait_for_port(self.port)), "Timed out waiting for port!" - if connectToRunningEmulator: - self.emulator = Emulator(homedir=homedir, - logcat_dir=self.logcat_dir) + if connect_to_running_emulator: + self.runner = B2GEmulatorRunner(b2g_home=homedir, + logdir=logdir) + self.emulator = self.runner.device self.emulator.connect() self.port = self.emulator.setup_port_forwarding(self.port) - assert(self.emulator.wait_for_port()), "Timed out waiting for port!" + assert(self.emulator.wait_for_port(self.port)), "Timed out waiting for port!" self.client = MarionetteTransport(self.host, self.port) if emulator: - self.emulator.setup(self, - gecko_path=gecko_path, - busybox=busybox) + if busybox: + self.emulator.install_busybox(busybox=busybox) + self.emulator.wait_for_system_message(self) def cleanup(self): if self.session: try: self.delete_session() - except (MarionetteException, socket.error, IOError): + except (errors.MarionetteException, socket.error, IOError): # These exceptions get thrown if the Marionette server # hit an exception/died or the connection died. We can # do no further server-side cleanup in this case. pass self.session = None - if self.emulator: - self.emulator.close() + if self.runner: + self.runner.cleanup() if self.instance: self.instance.close() for qemu in self.extra_emulators: @@ -570,26 +559,6 @@ class Marionette(object): finally: s.close() - @classmethod - def getMarionetteOrExit(cls, *args, **kwargs): - try: - m = cls(*args, **kwargs) - return m - except InstallGeckoError: - # Bug 812395 - the process of installing gecko into the emulator - # and then restarting B2G tickles some bug in the emulator/b2g - # that intermittently causes B2G to fail to restart. To work - # around this in TBPL runs, we will fail gracefully from this - # error so that the mozharness script can try the run again. - - # This string will get caught by mozharness and will cause it - # to retry the tests. - print "Error installing gecko!" - - # Exit without a normal exception to prevent mozharness from - # flagging the error. - sys.exit() - def wait_for_port(self, timeout=60): starttime = datetime.datetime.now() while datetime.datetime.now() - starttime < datetime.timedelta(seconds=timeout): @@ -609,7 +578,7 @@ class Marionette(object): @do_crash_check def _send_message(self, command, response_key="ok", **kwargs): if not self.session and command != "newSession": - raise MarionetteException("Please start a session") + raise errors.MarionetteException("Please start a session") message = {"name": command} if self.session: @@ -623,8 +592,8 @@ class Marionette(object): self.session = None self.window = None self.client.close() - raise TimeoutException( - "Connection timed out", status=ErrorCodes.TIMEOUT) + raise errors.TimeoutException( + "Connection timed out", status=errors.ErrorCodes.TIMEOUT) # Process any emulator commands that are sent from a script # while it's executing. @@ -646,7 +615,7 @@ class Marionette(object): def _handle_emulator_cmd(self, response): cmd = response.get("emulator_cmd") if not cmd or not self.emulator: - raise MarionetteException( + raise errors.MarionetteException( "No emulator in this test to run command against") cmd = cmd.encode("ascii") result = self.emulator._run_telnet(cmd) @@ -657,9 +626,12 @@ class Marionette(object): def _handle_emulator_shell(self, response): args = response.get("emulator_shell") if not isinstance(args, list) or not self.emulator: - raise MarionetteException( + raise errors.MarionetteException( "No emulator in this test to run shell command against") - result = self.emulator._run_shell(args) + buf = StringIO.StringIO() + self.emulator.dm.shell(args, buf) + result = str(buf.getvalue()[0:-1]).rstrip().splitlines() + buf.close() return self.client.send({"name": "emulatorCmdResult", "id": response.get("id"), "result": result}) @@ -671,62 +643,59 @@ class Marionette(object): stacktrace = response['error'].get('stacktrace') # status numbers come from # http://code.google.com/p/selenium/wiki/JsonWireProtocol#Response_Status_Codes - if status == ErrorCodes.NO_SUCH_ELEMENT: - raise NoSuchElementException(message=message, status=status, stacktrace=stacktrace) - elif status == ErrorCodes.NO_SUCH_FRAME: - raise NoSuchFrameException(message=message, status=status, stacktrace=stacktrace) - elif status == ErrorCodes.STALE_ELEMENT_REFERENCE: - raise StaleElementException(message=message, status=status, stacktrace=stacktrace) - elif status == ErrorCodes.ELEMENT_NOT_VISIBLE: - raise ElementNotVisibleException(message=message, status=status, stacktrace=stacktrace) - elif status == ErrorCodes.INVALID_ELEMENT_STATE: - raise InvalidElementStateException(message=message, status=status, stacktrace=stacktrace) - elif status == ErrorCodes.UNKNOWN_ERROR: - raise MarionetteException(message=message, status=status, stacktrace=stacktrace) - elif status == ErrorCodes.ELEMENT_IS_NOT_SELECTABLE: - raise ElementNotSelectableException(message=message, status=status, stacktrace=stacktrace) - elif status == ErrorCodes.JAVASCRIPT_ERROR: - raise JavascriptException(message=message, status=status, stacktrace=stacktrace) - elif status == ErrorCodes.XPATH_LOOKUP_ERROR: - raise XPathLookupException(message=message, status=status, stacktrace=stacktrace) - elif status == ErrorCodes.TIMEOUT: - raise TimeoutException(message=message, status=status, stacktrace=stacktrace) - elif status == ErrorCodes.NO_SUCH_WINDOW: - raise NoSuchWindowException(message=message, status=status, stacktrace=stacktrace) - elif status == ErrorCodes.INVALID_COOKIE_DOMAIN: - raise InvalidCookieDomainException(message=message, status=status, stacktrace=stacktrace) - elif status == ErrorCodes.UNABLE_TO_SET_COOKIE: - raise UnableToSetCookieException(message=message, status=status, stacktrace=stacktrace) - elif status == ErrorCodes.NO_ALERT_OPEN: - raise NoAlertPresentException(message=message, status=status, stacktrace=stacktrace) - elif status == ErrorCodes.SCRIPT_TIMEOUT: - raise ScriptTimeoutException(message=message, status=status, stacktrace=stacktrace) - elif status == ErrorCodes.INVALID_SELECTOR \ - or status == ErrorCodes.INVALID_XPATH_SELECTOR \ - or status == ErrorCodes.INVALID_XPATH_SELECTOR_RETURN_TYPER: - raise InvalidSelectorException(message=message, status=status, stacktrace=stacktrace) - elif status == ErrorCodes.MOVE_TARGET_OUT_OF_BOUNDS: - raise MoveTargetOutOfBoundsException(message=message, status=status, stacktrace=stacktrace) - elif status == ErrorCodes.FRAME_SEND_NOT_INITIALIZED_ERROR: - raise FrameSendNotInitializedError(message=message, status=status, stacktrace=stacktrace) - elif status == ErrorCodes.FRAME_SEND_FAILURE_ERROR: - raise FrameSendFailureError(message=message, status=status, stacktrace=stacktrace) + if status == errors.ErrorCodes.NO_SUCH_ELEMENT: + raise errors.NoSuchElementException(message=message, status=status, stacktrace=stacktrace) + elif status == errors.ErrorCodes.NO_SUCH_FRAME: + raise errors.NoSuchFrameException(message=message, status=status, stacktrace=stacktrace) + elif status == errors.ErrorCodes.STALE_ELEMENT_REFERENCE: + raise errors.StaleElementException(message=message, status=status, stacktrace=stacktrace) + elif status == errors.ErrorCodes.ELEMENT_NOT_VISIBLE: + raise errors.ElementNotVisibleException(message=message, status=status, stacktrace=stacktrace) + elif status == errors.ErrorCodes.INVALID_ELEMENT_STATE: + raise errors.InvalidElementStateException(message=message, status=status, stacktrace=stacktrace) + elif status == errors.ErrorCodes.UNKNOWN_ERROR: + raise errors.MarionetteException(message=message, status=status, stacktrace=stacktrace) + elif status == errors.ErrorCodes.ELEMENT_IS_NOT_SELECTABLE: + raise errors.ElementNotSelectableException(message=message, status=status, stacktrace=stacktrace) + elif status == errors.ErrorCodes.JAVASCRIPT_ERROR: + raise errors.JavascriptException(message=message, status=status, stacktrace=stacktrace) + elif status == errors.ErrorCodes.XPATH_LOOKUP_ERROR: + raise errors.XPathLookupException(message=message, status=status, stacktrace=stacktrace) + elif status == errors.ErrorCodes.TIMEOUT: + raise errors.TimeoutException(message=message, status=status, stacktrace=stacktrace) + elif status == errors.ErrorCodes.NO_SUCH_WINDOW: + raise errors.NoSuchWindowException(message=message, status=status, stacktrace=stacktrace) + elif status == errors.ErrorCodes.INVALID_COOKIE_DOMAIN: + raise errors.InvalidCookieDomainException(message=message, status=status, stacktrace=stacktrace) + elif status == errors.ErrorCodes.UNABLE_TO_SET_COOKIE: + raise errors.UnableToSetCookieException(message=message, status=status, stacktrace=stacktrace) + elif status == errors.ErrorCodes.NO_ALERT_OPEN: + raise errors.NoAlertPresentException(message=message, status=status, stacktrace=stacktrace) + elif status == errors.ErrorCodes.SCRIPT_TIMEOUT: + raise errors.ScriptTimeoutException(message=message, status=status, stacktrace=stacktrace) + elif status == errors.ErrorCodes.INVALID_SELECTOR \ + or status == errors.ErrorCodes.INVALID_XPATH_SELECTOR \ + or status == errors.ErrorCodes.INVALID_XPATH_SELECTOR_RETURN_TYPER: + raise errors.InvalidSelectorException(message=message, status=status, stacktrace=stacktrace) + elif status == errors.ErrorCodes.MOVE_TARGET_OUT_OF_BOUNDS: + raise errors.MoveTargetOutOfBoundsException(message=message, status=status, stacktrace=stacktrace) + elif status == errors.ErrorCodes.FRAME_SEND_NOT_INITIALIZED_ERROR: + raise errors.FrameSendNotInitializedError(message=message, status=status, stacktrace=stacktrace) + elif status == errors.ErrorCodes.FRAME_SEND_FAILURE_ERROR: + raise errors.FrameSendFailureError(message=message, status=status, stacktrace=stacktrace) else: - raise MarionetteException(message=message, status=status, stacktrace=stacktrace) - raise MarionetteException(message=response, status=500) + raise errors.MarionetteException(message=message, status=status, stacktrace=stacktrace) + raise errors.MarionetteException(message=response, status=500) def check_for_crash(self): returncode = None name = None crashed = False - if self.emulator: - if self.emulator.check_for_crash(): + if self.runner: + if self.runner.check_for_crashes(): returncode = self.emulator.proc.returncode name = 'emulator' crashed = True - - if self.emulator.check_for_minidumps(): - crashed = True elif self.instance: if self.instance.check_for_crashes(): crashed = True @@ -1459,4 +1428,4 @@ class Marionette(object): """ self._send_message("setScreenOrientation", "ok", orientation=orientation) if self.emulator: - self.emulator.screen.orientation = self.SCREEN_ORIENTATIONS[orientation.lower()] + self.emulator.screen.orientation = orientation.lower() diff --git a/testing/marionette/client/marionette/runner/base.py b/testing/marionette/client/marionette/runner/base.py index 72a178da687..827dc5e4fb8 100644 --- a/testing/marionette/client/marionette/runner/base.py +++ b/testing/marionette/client/marionette/runner/base.py @@ -367,11 +367,11 @@ class BaseMarionetteOptions(OptionParser): 'specify which architecture to emulate for both cases') self.add_option('--emulator-binary', action='store', - dest='emulatorBinary', + dest='emulator_binary', help='launch a specific emulator binary rather than launching from the B2G built emulator') self.add_option('--emulator-img', action='store', - dest='emulatorImg', + dest='emulator_img', help='use a specific image file instead of a fresh one') self.add_option('--emulator-res', action='store', @@ -385,11 +385,11 @@ class BaseMarionetteOptions(OptionParser): help='size of sdcard to create for the emulator') self.add_option('--no-window', action='store_true', - dest='noWindow', + dest='no_window', default=False, help='when Marionette launches an emulator, start it with the -no-window argument') self.add_option('--logcat-dir', - dest='logcat_dir', + dest='logdir', action='store', help='directory to store logcat dump files') self.add_option('--address', @@ -441,10 +441,6 @@ class BaseMarionetteOptions(OptionParser): action='store', dest='xml_output', help='xml output') - self.add_option('--gecko-path', - dest='gecko_path', - action='store', - help='path to b2g gecko binaries that should be installed on the device or emulator') self.add_option('--testvars', dest='testvars', action='store', @@ -525,8 +521,8 @@ class BaseMarionetteOptions(OptionParser): 'elasticsearch-zlb.webapp.scl3.mozilla.com:9200'] # default to storing logcat output for emulator runs - if options.emulator and not options.logcat_dir: - options.logcat_dir = 'logcat' + if options.emulator and not options.logdir: + options.logdir = 'logcat' # check for valid resolution string, strip whitespaces try: @@ -562,11 +558,11 @@ class BaseMarionetteTestRunner(object): textrunnerclass = MarionetteTextTestRunner - def __init__(self, address=None, emulator=None, emulatorBinary=None, - emulatorImg=None, emulator_res='480x800', homedir=None, + def __init__(self, address=None, emulator=None, emulator_binary=None, + emulator_img=None, emulator_res='480x800', homedir=None, app=None, app_args=None, bin=None, profile=None, autolog=False, - revision=None, logger=None, testgroup="marionette", noWindow=False, - logcat_dir=None, xml_output=None, repeat=0, gecko_path=None, + revision=None, logger=None, testgroup="marionette", no_window=False, + logdir=None, xml_output=None, repeat=0, testvars=None, tree=None, type=None, device_serial=None, symbols_path=None, timeout=None, es_servers=None, shuffle=False, shuffle_seed=random.randint(0, sys.maxint), sdcard=None, @@ -575,8 +571,8 @@ class BaseMarionetteTestRunner(object): **kwargs): self.address = address self.emulator = emulator - self.emulatorBinary = emulatorBinary - self.emulatorImg = emulatorImg + self.emulator_binary = emulator_binary + self.emulator_img = emulator_img self.emulator_res = emulator_res self.homedir = homedir self.app = app @@ -587,13 +583,12 @@ class BaseMarionetteTestRunner(object): self.testgroup = testgroup self.revision = revision self.logger = logger - self.noWindow = noWindow + self.no_window = no_window self.httpd = None self.marionette = None - self.logcat_dir = logcat_dir + self.logdir = logdir self.xml_output = xml_output self.repeat = repeat - self.gecko_path = gecko_path self.testvars = {} self.test_kwargs = kwargs self.tree = tree @@ -640,9 +635,9 @@ class BaseMarionetteTestRunner(object): self.logger.setLevel(logging.INFO) self.logger.addHandler(logging.StreamHandler()) - if self.logcat_dir: - if not os.access(self.logcat_dir, os.F_OK): - os.mkdir(self.logcat_dir) + if self.logdir: + if not os.access(self.logdir, os.F_OK): + os.mkdir(self.logdir) # for XML output self.testvars['xml_output'] = self.xml_output @@ -717,8 +712,7 @@ class BaseMarionetteTestRunner(object): if self.emulator: kwargs.update({ 'homedir': self.homedir, - 'logcat_dir': self.logcat_dir, - 'gecko_path': self.gecko_path, + 'logdir': self.logdir, }) if self.address: @@ -741,10 +735,10 @@ class BaseMarionetteTestRunner(object): elif self.emulator: kwargs.update({ 'emulator': self.emulator, - 'emulatorBinary': self.emulatorBinary, - 'emulatorImg': self.emulatorImg, + 'emulator_binary': self.emulator_binary, + 'emulator_img': self.emulator_img, 'emulator_res': self.emulator_res, - 'noWindow': self.noWindow, + 'no_window': self.no_window, 'sdcard': self.sdcard, }) return kwargs @@ -757,7 +751,7 @@ class BaseMarionetteTestRunner(object): logfile = None if self.emulator: - filename = os.path.join(os.path.abspath(self.logcat_dir), + filename = os.path.join(os.path.abspath(self.logdir), "emulator-%d.log" % self.marionette.emulator.port) if os.access(filename, os.F_OK): logfile = filename diff --git a/testing/marionette/client/marionette/runner/mixins/b2g.py b/testing/marionette/client/marionette/runner/mixins/b2g.py index 194eb9bae73..5f651a7ed29 100644 --- a/testing/marionette/client/marionette/runner/mixins/b2g.py +++ b/testing/marionette/client/marionette/runner/mixins/b2g.py @@ -9,14 +9,10 @@ import re def get_dm(marionette=None,**kwargs): dm_type = os.environ.get('DM_TRANS', 'adb') - if marionette and marionette.emulator: - adb_path = marionette.emulator.b2g.adb_path - return mozdevice.DeviceManagerADB(adbPath=adb_path, - deviceSerial='emulator-%d' % marionette.emulator.port, - **kwargs) + if marionette and hasattr(marionette.runner, 'device'): + return marionette.runner.app_ctx.dm elif marionette and marionette.device_serial and dm_type == 'adb': - return mozdevice.DeviceManagerADB(deviceSerial=marionette.device_serial, - **kwargs) + return mozdevice.DeviceManagerADB(deviceSerial=marionette.device_serial, **kwargs) else: if dm_type == 'adb': return mozdevice.DeviceManagerADB(**kwargs) diff --git a/testing/marionette/client/marionette/tests/unit/test_clearing.py b/testing/marionette/client/marionette/tests/unit/test_clearing.py index 93d878d0a9f..53716ccbb2a 100644 --- a/testing/marionette/client/marionette/tests/unit/test_clearing.py +++ b/testing/marionette/client/marionette/tests/unit/test_clearing.py @@ -3,7 +3,7 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. from marionette_test import MarionetteTestCase -from marionette import InvalidElementStateException +from errors import InvalidElementStateException class TestClear(MarionetteTestCase): def testWriteableTextInputShouldClear(self): diff --git a/testing/marionette/client/marionette/tests/unit/test_element_touch.py b/testing/marionette/client/marionette/tests/unit/test_element_touch.py index 4ce0cd9e043..7b9f047a957 100644 --- a/testing/marionette/client/marionette/tests/unit/test_element_touch.py +++ b/testing/marionette/client/marionette/tests/unit/test_element_touch.py @@ -3,7 +3,7 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. from marionette_test import MarionetteTestCase -from marionette import MarionetteException +from errors import MarionetteException class testElementTouch(MarionetteTestCase): def test_touch(self): diff --git a/testing/marionette/client/marionette/tests/unit/test_emulator.py b/testing/marionette/client/marionette/tests/unit/test_emulator.py index 2c615c0a05f..f330d983dba 100644 --- a/testing/marionette/client/marionette/tests/unit/test_emulator.py +++ b/testing/marionette/client/marionette/tests/unit/test_emulator.py @@ -3,7 +3,7 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. from marionette_test import MarionetteTestCase -from marionette import JavascriptException, MarionetteException +from errors import JavascriptException, MarionetteException class TestEmulatorContent(MarionetteTestCase): @@ -19,7 +19,7 @@ class TestEmulatorContent(MarionetteTestCase): def test_emulator_shell(self): self.marionette.set_script_timeout(10000) - expected = ["Hello World!", ""] + expected = ["Hello World!"] result = self.marionette.execute_async_script(""" runEmulatorShell(["echo", "Hello World!"], marionetteScriptFinished) """); diff --git a/testing/marionette/client/marionette/tests/unit/test_execute_async_script.py b/testing/marionette/client/marionette/tests/unit/test_execute_async_script.py index 78dd57334a7..da4da50445c 100644 --- a/testing/marionette/client/marionette/tests/unit/test_execute_async_script.py +++ b/testing/marionette/client/marionette/tests/unit/test_execute_async_script.py @@ -3,7 +3,7 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. from marionette_test import MarionetteTestCase -from marionette import JavascriptException, MarionetteException, ScriptTimeoutException +from errors import JavascriptException, MarionetteException, ScriptTimeoutException import time diff --git a/testing/marionette/client/marionette/tests/unit/test_execute_isolate.py b/testing/marionette/client/marionette/tests/unit/test_execute_isolate.py index 9f8fbceec4f..016ce06de66 100644 --- a/testing/marionette/client/marionette/tests/unit/test_execute_isolate.py +++ b/testing/marionette/client/marionette/tests/unit/test_execute_isolate.py @@ -3,7 +3,7 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. from marionette_test import MarionetteTestCase, skip_if_b2g -from marionette import JavascriptException, MarionetteException, ScriptTimeoutException +from errors import JavascriptException, MarionetteException, ScriptTimeoutException class TestExecuteIsolationContent(MarionetteTestCase): def setUp(self): diff --git a/testing/marionette/client/marionette/tests/unit/test_execute_script.py b/testing/marionette/client/marionette/tests/unit/test_execute_script.py index fed5050274f..945ae215727 100644 --- a/testing/marionette/client/marionette/tests/unit/test_execute_script.py +++ b/testing/marionette/client/marionette/tests/unit/test_execute_script.py @@ -5,7 +5,7 @@ import urllib from by import By -from marionette import JavascriptException, MarionetteException +from errors import JavascriptException, MarionetteException from marionette_test import MarionetteTestCase def inline(doc): diff --git a/testing/marionette/client/marionette/tests/unit/test_findelement.py b/testing/marionette/client/marionette/tests/unit/test_findelement.py index 61d8d4a55b4..a8f2b603b43 100644 --- a/testing/marionette/client/marionette/tests/unit/test_findelement.py +++ b/testing/marionette/client/marionette/tests/unit/test_findelement.py @@ -5,7 +5,7 @@ from marionette_test import MarionetteTestCase from marionette import HTMLElement from by import By -from marionette import NoSuchElementException +from errors import NoSuchElementException class TestElements(MarionetteTestCase): diff --git a/testing/marionette/client/marionette/tests/unit/test_findelement_chrome.py b/testing/marionette/client/marionette/tests/unit/test_findelement_chrome.py index 5e8df2fc0f0..cb0d98eb4dc 100644 --- a/testing/marionette/client/marionette/tests/unit/test_findelement_chrome.py +++ b/testing/marionette/client/marionette/tests/unit/test_findelement_chrome.py @@ -5,7 +5,7 @@ from marionette_test import MarionetteTestCase from marionette import HTMLElement from by import By -from marionette import NoSuchElementException +from errors import NoSuchElementException class TestElementsChrome(MarionetteTestCase): diff --git a/testing/marionette/client/marionette/tests/unit/test_implicit_waits.py b/testing/marionette/client/marionette/tests/unit/test_implicit_waits.py index b0e764630b1..9cdd90d7dae 100644 --- a/testing/marionette/client/marionette/tests/unit/test_implicit_waits.py +++ b/testing/marionette/client/marionette/tests/unit/test_implicit_waits.py @@ -3,7 +3,7 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. from marionette_test import MarionetteTestCase -from marionette import NoSuchElementException +from errors import NoSuchElementException class TestImplicitWaits(MarionetteTestCase): def testShouldImplicitlyWaitForASingleElement(self): diff --git a/testing/marionette/client/marionette/tests/unit/test_navigation.py b/testing/marionette/client/marionette/tests/unit/test_navigation.py index 4a2e1605e52..300c392e698 100644 --- a/testing/marionette/client/marionette/tests/unit/test_navigation.py +++ b/testing/marionette/client/marionette/tests/unit/test_navigation.py @@ -3,8 +3,7 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. from marionette_test import MarionetteTestCase -from marionette import MarionetteException -from marionette import TimeoutException +from errors import MarionetteException, TimeoutException class TestNavigate(MarionetteTestCase): def test_navigate(self): diff --git a/testing/marionette/client/marionette/tests/unit/test_screen_orientation.py b/testing/marionette/client/marionette/tests/unit/test_screen_orientation.py index bdb76ef5b89..4e5c83a8b62 100644 --- a/testing/marionette/client/marionette/tests/unit/test_screen_orientation.py +++ b/testing/marionette/client/marionette/tests/unit/test_screen_orientation.py @@ -4,9 +4,9 @@ # 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/. -from emulator_screen import EmulatorScreen -from marionette import MarionetteException +from errors import MarionetteException from marionette_test import MarionetteTestCase +from mozrunner.devices.emulator_screen import EmulatorScreen default_orientation = "portrait-primary" unknown_orientation = "Unknown screen orientation: %s" diff --git a/testing/marionette/client/marionette/tests/unit/test_simpletest_sanity.py b/testing/marionette/client/marionette/tests/unit/test_simpletest_sanity.py index 3048ba1d618..d1d2d579cf9 100644 --- a/testing/marionette/client/marionette/tests/unit/test_simpletest_sanity.py +++ b/testing/marionette/client/marionette/tests/unit/test_simpletest_sanity.py @@ -3,7 +3,7 @@ # You can obtain one at http://mozilla.org/MPL/2.0/. from marionette_test import MarionetteTestCase -from marionette import JavascriptException, MarionetteException, ScriptTimeoutException +from errors import JavascriptException, MarionetteException, ScriptTimeoutException class SimpletestSanityTest(MarionetteTestCase): diff --git a/testing/marionette/client/marionette/tests/unit/test_single_finger.py b/testing/marionette/client/marionette/tests/unit/test_single_finger.py index a914ec00e4c..49a053e9518 100644 --- a/testing/marionette/client/marionette/tests/unit/test_single_finger.py +++ b/testing/marionette/client/marionette/tests/unit/test_single_finger.py @@ -4,7 +4,7 @@ from marionette_test import MarionetteTestCase from marionette import Actions -from marionette import MarionetteException +from errors import MarionetteException #add this directory to the path import os import sys diff --git a/testing/marionette/client/marionette/tests/unit/test_single_finger_desktop.py b/testing/marionette/client/marionette/tests/unit/test_single_finger_desktop.py index bbfa29b055d..d185b36fe08 100644 --- a/testing/marionette/client/marionette/tests/unit/test_single_finger_desktop.py +++ b/testing/marionette/client/marionette/tests/unit/test_single_finger_desktop.py @@ -1,6 +1,6 @@ from marionette_test import MarionetteTestCase from marionette import Actions -from marionette import MarionetteException +from errors import MarionetteException #add this directory to the path import os import sys diff --git a/testing/marionette/client/marionette/tests/unit/test_specialpowers.py b/testing/marionette/client/marionette/tests/unit/test_specialpowers.py index faa774437c6..aea11a878f0 100644 --- a/testing/marionette/client/marionette/tests/unit/test_specialpowers.py +++ b/testing/marionette/client/marionette/tests/unit/test_specialpowers.py @@ -3,7 +3,7 @@ # You can obtain one at http://mozilla.org/MPL/2.0/. from marionette_test import MarionetteTestCase -from marionette import JavascriptException, MarionetteException +from errors import JavascriptException, MarionetteException class TestSpecialPowersContent(MarionetteTestCase): diff --git a/testing/marionette/client/marionette/tests/unit/test_switch_frame.py b/testing/marionette/client/marionette/tests/unit/test_switch_frame.py index e38cb050dbb..0dceee717eb 100644 --- a/testing/marionette/client/marionette/tests/unit/test_switch_frame.py +++ b/testing/marionette/client/marionette/tests/unit/test_switch_frame.py @@ -3,7 +3,7 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. from marionette_test import MarionetteTestCase -from marionette import JavascriptException +from errors import JavascriptException class TestSwitchFrame(MarionetteTestCase): diff --git a/testing/marionette/client/marionette/tests/unit/test_switch_frame_chrome.py b/testing/marionette/client/marionette/tests/unit/test_switch_frame_chrome.py index ad4a154315b..e73d8138c34 100644 --- a/testing/marionette/client/marionette/tests/unit/test_switch_frame_chrome.py +++ b/testing/marionette/client/marionette/tests/unit/test_switch_frame_chrome.py @@ -3,7 +3,7 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. from marionette_test import MarionetteTestCase -from marionette import JavascriptException +from errors import JavascriptException class TestSwitchFrameChrome(MarionetteTestCase): def setUp(self): diff --git a/testing/marionette/client/marionette/tests/unit/test_timeouts.py b/testing/marionette/client/marionette/tests/unit/test_timeouts.py index fad0795dcf6..6e066851b0b 100644 --- a/testing/marionette/client/marionette/tests/unit/test_timeouts.py +++ b/testing/marionette/client/marionette/tests/unit/test_timeouts.py @@ -5,7 +5,7 @@ import os from marionette_test import MarionetteTestCase from marionette import HTMLElement -from marionette import NoSuchElementException, JavascriptException, MarionetteException, ScriptTimeoutException +from errors import NoSuchElementException, JavascriptException, MarionetteException, ScriptTimeoutException class TestTimeouts(MarionetteTestCase): def test_pagetimeout_notdefinetimeout_pass(self): diff --git a/testing/marionette/client/marionette/tests/unit/test_typing.py b/testing/marionette/client/marionette/tests/unit/test_typing.py index 79dd5cb3ca7..a6bad220d9d 100644 --- a/testing/marionette/client/marionette/tests/unit/test_typing.py +++ b/testing/marionette/client/marionette/tests/unit/test_typing.py @@ -4,7 +4,7 @@ from marionette_test import MarionetteTestCase from keys import Keys -from marionette import ElementNotVisibleException +from errors import ElementNotVisibleException class TestTyping(MarionetteTestCase): diff --git a/testing/marionette/client/requirements.txt b/testing/marionette/client/requirements.txt index 5083e921875..6e098e7ce93 100644 --- a/testing/marionette/client/requirements.txt +++ b/testing/marionette/client/requirements.txt @@ -3,8 +3,8 @@ manifestparser mozhttpd >= 0.5 mozinfo >= 0.7 mozprocess >= 0.9 -mozrunner >= 5.15 -mozdevice >= 0.22 +mozrunner >= 6.0 +mozdevice >= 0.37 moznetwork >= 0.21 mozcrash >= 0.5 mozprofile >= 0.7 diff --git a/testing/mochitest/mach_commands.py b/testing/mochitest/mach_commands.py index b3b9a13ee9a..17b47b468cd 100644 --- a/testing/mochitest/mach_commands.py +++ b/testing/mochitest/mach_commands.py @@ -178,7 +178,7 @@ class MochitestRunner(MozbuildObject): return 1 options.b2gPath = b2g_home - options.logcat_dir = self.mochitest_dir + options.logdir = self.mochitest_dir options.httpdPath = self.mochitest_dir options.xrePath = xre_path return mochitest.run_remote_mochitests(parser, options) @@ -555,9 +555,9 @@ def B2GCommand(func): help='Path to busybox binary to install on device') func = busybox(func) - logcatdir = CommandArgument('--logcat-dir', default=None, - help='directory to store logcat dump files') - func = logcatdir(func) + logdir = CommandArgument('--logdir', default=None, + help='directory to store log files') + func = logdir(func) profile = CommandArgument('--profile', default=None, help='for desktop testing, the path to the \ diff --git a/testing/mochitest/mochitest_options.py b/testing/mochitest/mochitest_options.py index bc1429dc481..c87b93c48a8 100644 --- a/testing/mochitest/mochitest_options.py +++ b/testing/mochitest/mochitest_options.py @@ -705,11 +705,11 @@ class B2GOptions(MochitestOptions): gaia profile to use", "default": None, }], - [["--logcat-dir"], + [["--logdir"], { "action": "store", "type": "string", - "dest": "logcat_dir", - "help": "directory to store logcat dump files", + "dest": "logdir", + "help": "directory to store log files", "default": None, }], [['--busybox'], @@ -738,7 +738,6 @@ class B2GOptions(MochitestOptions): defaults = {} defaults["httpPort"] = DEFAULT_PORTS['http'] defaults["sslPort"] = DEFAULT_PORTS['https'] - defaults["remoteTestRoot"] = "/data/local/tests" defaults["logFile"] = "mochitest.log" defaults["autorun"] = True defaults["closeWhenDone"] = True @@ -757,8 +756,8 @@ class B2GOptions(MochitestOptions): if options.geckoPath and not options.emulator: self.error("You must specify --emulator if you specify --gecko-path") - if options.logcat_dir and not options.emulator: - self.error("You must specify --emulator if you specify --logcat-dir") + if options.logdir and not options.emulator: + self.error("You must specify --emulator if you specify --logdir") if not os.path.isdir(options.xrePath): self.error("--xre-path '%s' is not a directory" % options.xrePath) diff --git a/testing/mochitest/runtests.py b/testing/mochitest/runtests.py index 94edd7d2867..1c28e1d1704 100644 --- a/testing/mochitest/runtests.py +++ b/testing/mochitest/runtests.py @@ -1258,9 +1258,9 @@ class Mochitest(MochitestUtilsMixin): self.lastTestSeen = self.test_name startTime = datetime.now() - # b2g desktop requires FirefoxRunner even though appname is b2g + # b2g desktop requires Runner even though appname is b2g if mozinfo.info.get('appname') == 'b2g' and mozinfo.info.get('toolkit') != 'gonk': - runner_cls = mozrunner.FirefoxRunner + runner_cls = mozrunner.Runner else: runner_cls = mozrunner.runners.get(mozinfo.info.get('appname', 'firefox'), mozrunner.Runner) @@ -1269,12 +1269,7 @@ class Mochitest(MochitestUtilsMixin): cmdargs=args, env=env, process_class=mozprocess.ProcessHandlerMixin, - kp_kwargs=kp_kwargs, - ) - - # XXX work around bug 898379 until mozrunner is updated for m-c; see - # https://bugzilla.mozilla.org/show_bug.cgi?id=746243#c49 - runner.kp_kwargs = kp_kwargs + process_args=kp_kwargs) # start the runner runner.start(debug_args=debug_args, diff --git a/testing/mochitest/runtestsb2g.py b/testing/mochitest/runtestsb2g.py index 53a565fef33..2c8eb2ef574 100644 --- a/testing/mochitest/runtestsb2g.py +++ b/testing/mochitest/runtestsb2g.py @@ -9,7 +9,6 @@ import shutil import sys import tempfile import threading -import time import traceback here = os.path.abspath(os.path.dirname(__file__)) @@ -17,7 +16,6 @@ sys.path.insert(0, here) from runtests import Mochitest from runtests import MochitestUtilsMixin -from runtests import MochitestOptions from runtests import MochitestServer from mochitest_options import B2GOptions, MochitestOptions @@ -25,20 +23,20 @@ from marionette import Marionette from mozdevice import DeviceManagerADB from mozprofile import Profile, Preferences -from mozrunner import B2GRunner import mozlog import mozinfo -import moznetwork log = mozlog.getLogger('Mochitest') class B2GMochitest(MochitestUtilsMixin): - def __init__(self, marionette, + marionette = None + + def __init__(self, marionette_args, out_of_process=True, profile_data_dir=None, locations=os.path.join(here, 'server-locations.txt')): super(B2GMochitest, self).__init__() - self.marionette = marionette + self.marionette_args = marionette_args self.out_of_process = out_of_process self.locations_file = locations self.preferences = [] @@ -121,11 +119,6 @@ class B2GMochitest(MochitestUtilsMixin): self.leak_report_file = os.path.join(options.profilePath, "runtests_leaks.log") manifest = self.build_profile(options) - self.startServers(options, None) - self.buildURLOptions(options, {'MOZ_HIDE_RESULTS_TABLE': '1'}) - self.test_script_args.append(not options.emulator) - self.test_script_args.append(options.wifi) - if options.debugger or not options.autorun: timeout = None else: @@ -139,15 +132,44 @@ class B2GMochitest(MochitestUtilsMixin): log.info("runtestsb2g.py | Running tests: start.") status = 0 try: - runner_args = { 'profile': self.profile, - 'devicemanager': self._dm, - 'marionette': self.marionette, - 'remote_test_root': self.remote_test_root, - 'symbols_path': options.symbolsPath, - 'test_script': self.test_script, - 'test_script_args': self.test_script_args } - self.runner = B2GRunner(**runner_args) + self.marionette_args['profile'] = self.profile + self.marionette = Marionette(**self.marionette_args) + self.runner = self.marionette.runner + self.app_ctx = self.runner.app_ctx + + self.remote_log = posixpath.join(self.app_ctx.remote_test_root, + 'log', 'mochitest.log') + if not self.app_ctx.dm.dirExists(posixpath.dirname(self.remote_log)): + self.app_ctx.dm.mkDirs(self.remote_log) + + self.startServers(options, None) + self.buildURLOptions(options, {'MOZ_HIDE_RESULTS_TABLE': '1'}) + self.test_script_args.append(not options.emulator) + self.test_script_args.append(options.wifi) + + self.runner.start(outputTimeout=timeout) + + self.marionette.wait_for_port() + self.marionette.start_session() + self.marionette.set_context(self.marionette.CONTEXT_CHROME) + + # Disable offline status management (bug 777145), otherwise the network + # will be 'offline' when the mochitests start. Presumably, the network + # won't be offline on a real device, so we only do this for emulators. + self.marionette.execute_script(""" + Components.utils.import("resource://gre/modules/Services.jsm"); + Services.io.manageOfflineStatus = false; + Services.io.offline = false; + """) + + if os.path.isfile(self.test_script): + with open(self.test_script, 'r') as script: + self.marionette.execute_script(script.read(), + script_args=self.test_script_args) + else: + self.marionette.execute_script(self.test_script, + script_args=self.test_script_args) status = self.runner.wait() if status is None: # the runner has timed out @@ -158,7 +180,8 @@ class B2GMochitest(MochitestUtilsMixin): except: traceback.print_exc() log.error("Automation Error: Received unexpected exception while running application\n") - self.runner.check_for_crashes() + if hasattr(self, 'runner'): + self.runner.check_for_crashes() status = 1 self.stopServers() @@ -171,27 +194,18 @@ class B2GMochitest(MochitestUtilsMixin): class B2GDeviceMochitest(B2GMochitest, Mochitest): + remote_log = None - _dm = None - - def __init__(self, marionette, devicemanager, profile_data_dir, + def __init__(self, marionette_args, profile_data_dir, local_binary_dir, remote_test_root=None, remote_log_file=None): - B2GMochitest.__init__(self, marionette, out_of_process=True, profile_data_dir=profile_data_dir) - Mochitest.__init__(self) - self._dm = devicemanager - self.remote_test_root = remote_test_root or self._dm.getDeviceRoot() - self.remote_profile = posixpath.join(self.remote_test_root, 'profile') - self.remote_log = remote_log_file or posixpath.join(self.remote_test_root, 'log', 'mochitest.log') + B2GMochitest.__init__(self, marionette_args, out_of_process=True, profile_data_dir=profile_data_dir) self.local_log = None self.local_binary_dir = local_binary_dir - if not self._dm.dirExists(posixpath.dirname(self.remote_log)): - self._dm.mkDirs(self.remote_log) - def cleanup(self, manifest, options): if self.local_log: - self._dm.getFile(self.remote_log, self.local_log) - self._dm.removeFile(self.remote_log) + self.app_ctx.dm.getFile(self.remote_log, self.local_log) + self.app_ctx.dm.removeFile(self.remote_log) if options.pidFile != "": try: @@ -202,6 +216,10 @@ class B2GDeviceMochitest(B2GMochitest, Mochitest): # stop and clean up the runner if getattr(self, 'runner', False): + if self.local_log: + self.app_ctx.dm.getFile(self.remote_log, self.local_log) + self.app_ctx.dm.removeFile(self.remote_log) + self.runner.cleanup() self.runner = None @@ -228,14 +246,14 @@ class B2GDeviceMochitest(B2GMochitest, Mochitest): self.setup_common_options(options) - options.profilePath = self.remote_profile + options.profilePath = self.app_ctx.remote_profile options.logFile = self.local_log class B2GDesktopMochitest(B2GMochitest, Mochitest): - def __init__(self, marionette, profile_data_dir): - B2GMochitest.__init__(self, marionette, out_of_process=False, profile_data_dir=profile_data_dir) + def __init__(self, marionette_args, profile_data_dir): + B2GMochitest.__init__(self, marionette_args, out_of_process=False, profile_data_dir=profile_data_dir) Mochitest.__init__(self) self.certdbNew = True @@ -255,6 +273,7 @@ class B2GDesktopMochitest(B2GMochitest, Mochitest): # This is run in a separate thread because otherwise, the app's # stdout buffer gets filled (which gets drained only after this # function returns, by waitForFinish), which causes the app to hang. + self.marionette = Marionette(**self.marionette_args) thread = threading.Thread(target=self.runMarionetteScript, args=(self.marionette, self.test_script, @@ -282,49 +301,27 @@ class B2GDesktopMochitest(B2GMochitest, Mochitest): def run_remote_mochitests(parser, options): # create our Marionette instance - kwargs = {} - if options.emulator: - kwargs['emulator'] = options.emulator - if options.noWindow: - kwargs['noWindow'] = True - if options.geckoPath: - kwargs['gecko_path'] = options.geckoPath - if options.logcat_dir: - kwargs['logcat_dir'] = options.logcat_dir - if options.busybox: - kwargs['busybox'] = options.busybox - if options.symbolsPath: - kwargs['symbols_path'] = options.symbolsPath - # needless to say sdcard is only valid if using an emulator - if options.sdcard: - kwargs['sdcard'] = options.sdcard - if options.b2gPath: - kwargs['homedir'] = options.b2gPath + marionette_args = { + 'adb_path': options.adbPath, + 'emulator': options.emulator, + 'no_window': options.noWindow, + 'logdir': options.logdir, + 'busybox': options.busybox, + 'symbols_path': options.symbolsPath, + 'sdcard': options.sdcard, + 'homedir': options.b2gPath, + } if options.marionette: host, port = options.marionette.split(':') - kwargs['host'] = host - kwargs['port'] = int(port) - - marionette = Marionette.getMarionetteOrExit(**kwargs) - - if options.emulator: - dm = marionette.emulator.dm - else: - # create the DeviceManager - kwargs = {'adbPath': options.adbPath, - 'deviceRoot': options.remoteTestRoot} - if options.deviceIP: - kwargs.update({'host': options.deviceIP, - 'port': options.devicePort}) - dm = DeviceManagerADB(**kwargs) + marionette_args['host'] = host + marionette_args['port'] = int(port) options = parser.verifyRemoteOptions(options) if (options == None): print "ERROR: Invalid options specified, use --help for a list of valid options" sys.exit(1) - mochitest = B2GDeviceMochitest(marionette, dm, options.profile_data_dir, options.xrePath, - remote_test_root=options.remoteTestRoot, + mochitest = B2GDeviceMochitest(marionette_args, options.profile_data_dir, options.xrePath, remote_log_file=options.remoteLogFile) options = parser.verifyOptions(options, mochitest) @@ -349,13 +346,12 @@ def run_remote_mochitests(parser, options): def run_desktop_mochitests(parser, options): # create our Marionette instance - kwargs = {} + marionette_args = {} if options.marionette: host, port = options.marionette.split(':') - kwargs['host'] = host - kwargs['port'] = int(port) - marionette = Marionette.getMarionetteOrExit(**kwargs) - mochitest = B2GDesktopMochitest(marionette, options.profile_data_dir) + marionette_args['host'] = host + marionette_args['port'] = int(port) + mochitest = B2GDesktopMochitest(marionette_args, options.profile_data_dir) # add a -bin suffix if b2g-bin exists, but just b2g was specified if options.app[-4:] != '-bin': diff --git a/testing/mozbase/docs/mozrunner.rst b/testing/mozbase/docs/mozrunner.rst new file mode 100644 index 00000000000..cca8d5da03f --- /dev/null +++ b/testing/mozbase/docs/mozrunner.rst @@ -0,0 +1,177 @@ +:mod:`mozrunner` --- Manage remote and local gecko processes +============================================================ + +Mozrunner provides an API to manage a gecko-based application with an +arbitrary configuration profile. It currently supports local desktop +binaries such as Firefox and Thunderbird, as well as Firefox OS on +mobile devices and emulators. + + +Basic usage +----------- + +The simplest way to use mozrunner, is to instantiate a runner, start it +and then wait for it to finish: + +.. code-block:: python + + from mozrunner import FirefoxRunner + binary = 'path/to/firefox/binary' + runner = FirefoxRunner(binary=binary) + runner.start() + runner.wait() + +This automatically creates and uses a default mozprofile object. If you +wish to use a specialized or pre-existing profile, you can create a +:doc:`mozprofile ` object and pass it in: + +.. code-block:: python + + from mozprofile import Profile + from mozrunner import FirefoxRunner + import os + + binary = 'path/to/firefox/binary' + profile_path = 'path/to/profile' + if os.path.exists(profile_path): + profile = Profile.clone(path_from=profile_path) + else: + profile = Profile(profile=profile_path) + runner = FirefoxRunner(binary=binary, profile=profile) + runner.start() + runner.wait() + + +Handling output +--------------- + +By default, mozrunner dumps the output of the gecko process to standard output. +It is possible to add arbitrary output handlers by passing them in via the +`process_args` argument. Be careful, passing in a handler overrides the default +behaviour. So if you want to use a handler in addition to dumping to stdout, you +need to specify that explicitly. For example: + +.. code-block:: python + + from mozrunner import FirefoxRunner + + def handle_output_line(line): + do_something(line) + + binary = 'path/to/firefox/binary' + process_args = { 'stream': sys.stdout, + 'processOutputLine': [handle_output_line] } + runner = FirefoxRunner(binary=binary, process_args=process_args) + +Mozrunner uses :doc:`mozprocess ` to manage the underlying gecko +process and handle output. See the :doc:`mozprocess documentation ` +for all available arguments accepted by `process_args`. + + +Handling timeouts +----------------- + +Sometimes gecko can hang, or maybe it is just taking too long. To handle this case you +may want to set a timeout. Mozrunner has two kinds of timeouts, the +traditional `timeout`, and the `outputTimeout`. These get passed into the +`runner.start()` method. Setting `timeout` will cause gecko to be killed after +the specified number of seconds, no matter what. Setting `outputTimeout` will cause +gecko to be killed after the specified number of seconds with no output. In both +cases the process handler's `onTimeout` callbacks will be triggered. + +.. code-block:: python + + from mozrunner import FirefoxRunner + + def on_timeout(): + print('timed out after 10 seconds with no output!') + + binary = 'path/to/firefox/binary' + process_args = { 'onTimeout': on_timeout } + runner = FirefoxRunner(binary=binary, process_args=process_args) + runner.start(outputTimeout=10) + runner.wait() + +The `runner.wait()` method also accepts a timeout argument. But unlike the arguments +to `runner.start()`, this one simply returns from the wait call and does not kill the +gecko process. + +.. code-block:: python + + runner.start(timeout=100) + + waiting = 0 + while runner.wait(timeout=1) is None: + waiting += 1 + print("Been waiting for %d seconds so far.." % waiting) + assert waiting <= 100 + + +Using a device runner +--------------------- + +The previous examples used a GeckoRuntimeRunner. If you want to control a +gecko process on a remote device, you need to use a DeviceRunner. The api is +nearly identical except you don't pass in a binary, instead you create a device +object. For example, for B2G (Firefox OS) emulators you might do: + +.. code-block:: python + + from mozrunner import B2GEmulatorRunner + + b2g_home = 'path/to/B2G' + runner = B2GEmulatorRunner(arch='arm', b2g_home=b2g_home) + runner.start() + runner.wait() + +Device runners have a `device` object. Remember that the gecko process runs on +the device. In the case of the emulator, it is possible to start the +device independently of the gecko process. + +.. code-block:: python + + runner.device.start() # launches the emulator (which also launches gecko) + runner.start() # stops the gecko process, installs the profile, restarts the gecko process + + +Runner API Documentation +------------------------ + +Application Runners +~~~~~~~~~~~~~~~~~~~ +.. automodule:: mozrunner.runners + :members: + +BaseRunner +~~~~~~~~~~ +.. autoclass:: mozrunner.base.BaseRunner + :members: + +GeckoRuntimeRunner +~~~~~~~~~~~~~~~~~~ +.. autoclass:: mozrunner.base.GeckoRuntimeRunner + :show-inheritance: + :members: + +DeviceRunner +~~~~~~~~~~~~ +.. autoclass:: mozrunner.base.DeviceRunner + :show-inheritance: + :members: + +Device API Documentation +------------------------ + +Generally using the device classes directly shouldn't be required, but in some +cases it may be desirable. + +Device +~~~~~~ +.. autoclass:: mozrunner.devices.Device + :members: + +Emulator +~~~~~~~~ +.. autoclass:: mozrunner.devices.Emulator + :show-inheritance: + :members: diff --git a/testing/mozbase/docs/setuprunning.rst b/testing/mozbase/docs/setuprunning.rst index eab82ba5056..da541e482d6 100644 --- a/testing/mozbase/docs/setuprunning.rst +++ b/testing/mozbase/docs/setuprunning.rst @@ -12,4 +12,5 @@ correctly handling the case where the system crashes. mozfile mozprofile mozprocess + mozrunner mozcrash diff --git a/testing/mozbase/mozdevice/mozdevice/devicemanager.py b/testing/mozbase/mozdevice/mozdevice/devicemanager.py index 8a79510599a..3f29318442e 100644 --- a/testing/mozbase/mozdevice/mozdevice/devicemanager.py +++ b/testing/mozbase/mozdevice/mozdevice/devicemanager.py @@ -4,7 +4,6 @@ import hashlib import mozlog -import socket import os import posixpath import re @@ -378,13 +377,15 @@ class DeviceManager(object): def shellCheckOutput(self, cmd, env=None, cwd=None, timeout=None, root=False): """ - Executes shell command on device and returns output as a string. + Executes shell command on device and returns output as a string. Raises if + the return code is non-zero. :param cmd: Commandline list to execute :param env: Environment to pass to exec command :param cwd: Directory to execute command from :param timeout: specified in seconds, defaults to 'default_timeout' :param root: Specifies whether command requires root privileges + :raises: DMError """ buf = StringIO.StringIO() retval = self.shell(cmd, buf, env=env, cwd=cwd, timeout=timeout, root=root) diff --git a/testing/mozbase/mozdevice/mozdevice/devicemanagerADB.py b/testing/mozbase/mozdevice/mozdevice/devicemanagerADB.py index 259e1e3a3c5..50fdf2a897f 100644 --- a/testing/mozbase/mozdevice/mozdevice/devicemanagerADB.py +++ b/testing/mozbase/mozdevice/mozdevice/devicemanagerADB.py @@ -29,11 +29,12 @@ class DeviceManagerADB(DeviceManager): _pollingInterval = 0.01 _packageName = None _tempDir = None + connected = False default_timeout = 300 def __init__(self, host=None, port=5555, retryLimit=5, packageName='fennec', adbPath='adb', deviceSerial=None, deviceRoot=None, - logLevel=mozlog.ERROR, **kwargs): + logLevel=mozlog.ERROR, autoconnect=True, **kwargs): DeviceManager.__init__(self, logLevel) self.host = host self.port = port @@ -58,28 +59,33 @@ class DeviceManagerADB(DeviceManager): # verify that we can run the adb command. can't continue otherwise self._verifyADB() - # try to connect to the device over tcp/ip if we have a hostname - if self.host: - self._connectRemoteADB() + if autoconnect: + self.connect() - # verify that we can connect to the device. can't continue - self._verifyDevice() + def connect(self): + if not self.connected: + # try to connect to the device over tcp/ip if we have a hostname + if self.host: + self._connectRemoteADB() - # set up device root - self._setupDeviceRoot() + # verify that we can connect to the device. can't continue + self._verifyDevice() - # Some commands require root to work properly, even with ADB (e.g. - # grabbing APKs out of /data). For these cases, we check whether - # we're running as root. If that isn't true, check for the - # existence of an su binary - self._checkForRoot() + # set up device root + self._setupDeviceRoot() - # can we use zip to speed up some file operations? (currently not - # required) - try: - self._verifyZip() - except DMError: - pass + # Some commands require root to work properly, even with ADB (e.g. + # grabbing APKs out of /data). For these cases, we check whether + # we're running as root. If that isn't true, check for the + # existence of an su binary + self._checkForRoot() + + # can we use zip to speed up some file operations? (currently not + # required) + try: + self._verifyZip() + except DMError: + pass def __del__(self): if self.host: diff --git a/testing/mozbase/mozdevice/setup.py b/testing/mozbase/mozdevice/setup.py index e468cf519aa..970e15edd5a 100644 --- a/testing/mozbase/mozdevice/setup.py +++ b/testing/mozbase/mozdevice/setup.py @@ -5,7 +5,7 @@ from setuptools import setup PACKAGE_NAME = 'mozdevice' -PACKAGE_VERSION = '0.36' +PACKAGE_VERSION = '0.37' deps = ['mozfile >= 1.0', 'mozlog', diff --git a/testing/mozbase/mozprocess/mozprocess/processhandler.py b/testing/mozbase/mozprocess/mozprocess/processhandler.py index 56fda7efbbd..2e9abcc780e 100644 --- a/testing/mozbase/mozprocess/mozprocess/processhandler.py +++ b/testing/mozbase/mozprocess/mozprocess/processhandler.py @@ -693,7 +693,7 @@ falling back to not using job objects for managing child processes""" return self.wait() except AttributeError: # Try to print a relevant error message. - if not self.proc: + if not hasattr(self, 'proc'): print >> sys.stderr, "Unable to kill Process because call to ProcessHandler constructor failed." else: raise diff --git a/testing/mozbase/mozrunner/mozrunner/__init__.py b/testing/mozbase/mozrunner/mozrunner/__init__.py index 5bc33dfc35d..903e8a4e799 100644 --- a/testing/mozbase/mozrunner/mozrunner/__init__.py +++ b/testing/mozbase/mozrunner/mozrunner/__init__.py @@ -1,11 +1,10 @@ # 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/. - +from .cli import * from .errors import * -from .local import * -from .local import LocalRunner as Runner -from .remote import * +from .runners import * -runners = local_runners -runners.update(remote_runners) +import base +import devices +import utils diff --git a/testing/mozbase/mozrunner/mozrunner/application.py b/testing/mozbase/mozrunner/mozrunner/application.py new file mode 100644 index 00000000000..95e309c6f4f --- /dev/null +++ b/testing/mozbase/mozrunner/mozrunner/application.py @@ -0,0 +1,129 @@ +# 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/. + +from distutils.spawn import find_executable +import glob +import os +import posixpath +import sys + +from mozdevice import DeviceManagerADB +from mozprofile import ( + Profile, + FirefoxProfile, + MetroFirefoxProfile, + ThunderbirdProfile +) + +here = os.path.abspath(os.path.dirname(__file__)) + +def get_app_context(appname): + context_map = { 'default': DefaultContext, + 'b2g': B2GContext, + 'firefox': FirefoxContext, + 'thunderbird': ThunderbirdContext, + 'metro': MetroContext } + if appname not in context_map: + raise KeyError("Application '%s' not supported!" % appname) + return context_map[appname] + + +class DefaultContext(object): + profile_class = Profile + + +class B2GContext(object): + _bindir = None + _dm = None + _remote_profile = None + profile_class = Profile + + def __init__(self, b2g_home=None, adb_path=None): + self.homedir = b2g_home or os.environ.get('B2G_HOME') + if not self.homedir: + raise EnvironmentError('Must define B2G_HOME or pass the b2g_home parameter') + + if not os.path.isdir(self.homedir): + raise OSError('Homedir \'%s\' does not exist!' % self.homedir) + + self._adb = adb_path + self.update_tools = os.path.join(self.homedir, 'tools', 'update-tools') + self.fastboot = self.which('fastboot') + + self.remote_binary = '/system/bin/b2g.sh' + self.remote_process = '/system/b2g/b2g' + self.remote_bundles_dir = '/system/b2g/distribution/bundles' + self.remote_busybox = '/system/bin/busybox' + self.remote_profiles_ini = '/data/b2g/mozilla/profiles.ini' + self.remote_test_root = '/data/local/tests' + + @property + def adb(self): + if not self._adb: + paths = [os.environ.get('ADB'), + os.environ.get('ADB_PATH'), + self.which('adb')] + paths = [p for p in paths if p is not None if os.path.isfile(p)] + if not paths: + raise OSError('Could not find the adb binary, make sure it is on your' \ + 'path or set the $ADB_PATH environment variable.') + self._adb = paths[0] + return self._adb + + @property + def bindir(self): + if not self._bindir: + # TODO get this via build configuration + path = os.path.join(self.homedir, 'out', 'host', '*', 'bin') + self._bindir = glob.glob(path)[0] + return self._bindir + + @property + def dm(self): + if not self._dm: + self._dm = DeviceManagerADB(adbPath=self.adb, autoconnect=False, deviceRoot=self.remote_test_root) + return self._dm + + @property + def remote_profile(self): + if not self._remote_profile: + self._remote_profile = posixpath.join(self.remote_test_root, 'profile') + return self._remote_profile + + + def which(self, binary): + if self.bindir not in sys.path: + sys.path.insert(0, self.bindir) + + return find_executable(binary, os.pathsep.join(sys.path)) + + def stop_application(self): + self.dm.shellCheckOutput(['stop', 'b2g']) + + # For some reason user.js in the profile doesn't get picked up. + # Manually copy it over to prefs.js. See bug 1009730 for more details. + self.dm.moveTree(posixpath.join(self.remote_profile, 'user.js'), + posixpath.join(self.remote_profile, 'prefs.js')) + + +class FirefoxContext(object): + profile_class = FirefoxProfile + + +class ThunderbirdContext(object): + profile_class = ThunderbirdProfile + + +class MetroContext(object): + profile_class = MetroFirefoxProfile + + def __init__(self, binary=None): + self.binary = binary or os.environ.get('BROWSER_PATH', None) + + def wrap_command(self, command): + immersive_helper_path = os.path.join(os.path.dirname(here), + 'resources', + 'metrotestharness.exe') + command[:0] = [immersive_helper_path, '-firefoxpath'] + return command diff --git a/testing/mozbase/mozrunner/mozrunner/base/__init__.py b/testing/mozbase/mozrunner/mozrunner/base/__init__.py new file mode 100644 index 00000000000..932d92bc956 --- /dev/null +++ b/testing/mozbase/mozrunner/mozrunner/base/__init__.py @@ -0,0 +1,3 @@ +from .runner import BaseRunner +from .device import DeviceRunner +from .browser import GeckoRuntimeRunner diff --git a/testing/mozbase/mozrunner/mozrunner/base/browser.py b/testing/mozbase/mozrunner/mozrunner/base/browser.py new file mode 100644 index 00000000000..b0580f5d068 --- /dev/null +++ b/testing/mozbase/mozrunner/mozrunner/base/browser.py @@ -0,0 +1,74 @@ +# 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/. + +import mozinfo +import os +import platform +import sys + +from .runner import BaseRunner + + +class GeckoRuntimeRunner(BaseRunner): + """ + The base runner class used for local gecko runtime binaries, + such as Firefox and Thunderbird. + """ + + def __init__(self, binary, cmdargs=None, **runner_args): + BaseRunner.__init__(self, **runner_args) + + self.binary = binary + self.cmdargs = cmdargs or [] + + # allows you to run an instance of Firefox separately from any other instances + self.env['MOZ_NO_REMOTE'] = '1' + # keeps Firefox attached to the terminal window after it starts + self.env['NO_EM_RESTART'] = '1' + + # set the library path if needed on linux + if sys.platform == 'linux2' and self.binary.endswith('-bin'): + dirname = os.path.dirname(self.binary) + if os.environ.get('LD_LIBRARY_PATH', None): + self.env['LD_LIBRARY_PATH'] = '%s:%s' % (os.environ['LD_LIBRARY_PATH'], dirname) + else: + self.env['LD_LIBRARY_PATH'] = dirname + + @property + def command(self): + command = [self.binary, '-profile', self.profile.profile] + + _cmdargs = [i for i in self.cmdargs + if i != '-foreground'] + if len(_cmdargs) != len(self.cmdargs): + # foreground should be last; see + # https://bugzilla.mozilla.org/show_bug.cgi?id=625614 + self.cmdargs = _cmdargs + self.cmdargs.append('-foreground') + if mozinfo.isMac and '-foreground' not in self.cmdargs: + # runner should specify '-foreground' on Mac; see + # https://bugzilla.mozilla.org/show_bug.cgi?id=916512 + self.cmdargs.append('-foreground') + + # Bug 775416 - Ensure that binary options are passed in first + command[1:1] = self.cmdargs + + # If running on OS X 10.5 or older, wrap |cmd| so that it will + # be executed as an i386 binary, in case it's a 32-bit/64-bit universal + # binary. + if mozinfo.isMac and hasattr(platform, 'mac_ver') and \ + platform.mac_ver()[0][:4] < '10.6': + command = ["arch", "-arch", "i386"] + command + + if hasattr(self.app_ctx, 'wrap_command'): + command = self.app_ctx.wrap_command(command) + return command + + def start(self, *args, **kwargs): + # ensure the profile exists + if not self.profile.exists(): + self.profile.reset() + assert self.profile.exists(), "%s : failure to reset profile" % self.__class__.__name__ + + BaseRunner.start(self, *args, **kwargs) diff --git a/testing/mozbase/mozrunner/mozrunner/base/device.py b/testing/mozbase/mozrunner/mozrunner/base/device.py new file mode 100644 index 00000000000..29eb664a626 --- /dev/null +++ b/testing/mozbase/mozrunner/mozrunner/base/device.py @@ -0,0 +1,111 @@ +# 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/. + +from __future__ import print_function + +import datetime +import re +import signal +import sys +import tempfile +import time + +from .runner import BaseRunner + +class DeviceRunner(BaseRunner): + """ + The base runner class used for running gecko on + remote devices (or emulators), such as B2G. + """ + def __init__(self, device_class, device_args=None, **kwargs): + process_args = kwargs.get('process_args', {}) + process_args.update({ 'stream': sys.stdout, + 'processOutputLine': self.on_output, + 'onTimeout': self.on_timeout }) + kwargs['process_args'] = process_args + BaseRunner.__init__(self, **kwargs) + + device_args = device_args or {} + self.device = device_class(**device_args) + + process_log = tempfile.NamedTemporaryFile(suffix='pidlog') + self._env = { 'MOZ_CRASHREPORTER': '1', + 'MOZ_CRASHREPORTER_NO_REPORT': '1', + 'MOZ_CRASHREPORTER_SHUTDOWN': '1', + 'MOZ_HIDE_RESULTS_TABLE': '1', + 'MOZ_PROCESS_LOG': process_log.name, + 'NSPR_LOG_MODULES': 'signaling:5,mtransport:3', + 'R_LOG_LEVEL': '5', + 'R_LOG_DESTINATION': 'stderr', + 'R_LOG_VERBOSE': '1', + 'NO_EM_RESTART': '1', } + if kwargs.get('env'): + self._env.update(kwargs['env']) + + # In this case we need to pass in env as part of the command. + # Make this empty so runner doesn't pass anything into the + # process class. + self.env = None + + @property + def command(self): + cmd = [self.app_ctx.adb] + if self.app_ctx.dm._deviceSerial: + cmd.extend(['-s', self.app_ctx.dm._deviceSerial]) + cmd.append('shell') + for k, v in self._env.iteritems(): + cmd.append('%s=%s' % (k, v)) + cmd.append(self.app_ctx.remote_binary) + return cmd + + def start(self, *args, **kwargs): + if not self.device.proc: + self.device.start() + self.device.setup_profile(self.profile) + self.app_ctx.stop_application() + + BaseRunner.start(self, *args, **kwargs) + + timeout = 10 # seconds + starttime = datetime.datetime.now() + while datetime.datetime.now() - starttime < datetime.timedelta(seconds=timeout): + if self.app_ctx.dm.processExist(self.app_ctx.remote_process): + break + time.sleep(1) + else: + print("timed out waiting for '%s' process to start" % self.app_ctx.remote_process) + + def on_output(self, line): + match = re.findall(r"TEST-START \| ([^\s]*)", line) + if match: + self.last_test = match[-1] + + def on_timeout(self, line): + self.dm.killProcess(self.app_ctx.remote_process, sig=signal.SIGABRT) + timeout = 10 # seconds + starttime = datetime.datetime.now() + while datetime.datetime.now() - starttime < datetime.timedelta(seconds=timeout): + if not self.app_ctx.dm.processExist(self.app_ctx.remote_process): + break + time.sleep(1) + else: + print("timed out waiting for '%s' process to exit" % self.app_ctx.remote_process) + + msg = "%s | application timed out after %s seconds" + if self.timeout: + timeout = self.timeout + else: + timeout = self.output_timeout + msg = "%s with no output" % msg + + self.log.testFail(msg % (self.last_test, timeout)) + self.check_for_crashes() + + def check_for_crashes(self): + dump_dir = self.device.pull_minidumps() + BaseRunner.check_for_crashes(self, dump_directory=dump_dir, test_name=self.last_test) + + def cleanup(self, *args, **kwargs): + BaseRunner.cleanup(self, *args, **kwargs) + self.device.cleanup() diff --git a/testing/mozbase/mozrunner/mozrunner/base.py b/testing/mozbase/mozrunner/mozrunner/base/runner.py similarity index 58% rename from testing/mozbase/mozrunner/mozrunner/base.py rename to testing/mozbase/mozrunner/mozrunner/base/runner.py index 2fccea2fcaa..a0142d1053d 100644 --- a/testing/mozbase/mozrunner/mozrunner/base.py +++ b/testing/mozbase/mozrunner/mozrunner/base/runner.py @@ -3,79 +3,88 @@ # 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/. +from abc import ABCMeta, abstractproperty import os import subprocess import traceback -from mozprocess.processhandler import ProcessHandler +from mozprocess import ProcessHandler import mozcrash -import mozlog -from .errors import RunnerNotStartedError +from ..application import DefaultContext +from ..errors import RunnerNotStartedError -# we can replace these methods with 'abc' -# (http://docs.python.org/library/abc.html) when we require Python 2.6+ -def abstractmethod(method): - line = method.func_code.co_firstlineno - filename = method.func_code.co_filename +class BaseRunner(object): + """ + The base runner class for all mozrunner objects, both local and remote. + """ + __metaclass__ = ABCMeta + last_test = 'automation' + process_handler = None + timeout = None + output_timeout = None - def not_implemented(*args, **kwargs): - raise NotImplementedError('Abstract method %s at File "%s", line %s ' - 'should be implemented by a concrete class' % - (repr(method), filename, line)) - return not_implemented + def __init__(self, app_ctx=None, profile=None, clean_profile=True, env=None, + process_class=None, process_args=None, symbols_path=None): + self.app_ctx = app_ctx or DefaultContext() + if isinstance(profile, basestring): + self.profile = self.app_ctx.profile_class(profile=profile) + else: + self.profile = profile or self.app_ctx.profile_class(**getattr(self.app_ctx, 'profile_args', {})) -class Runner(object): + # process environment + if env is None: + self.env = os.environ.copy() + else: + self.env = env.copy() - def __init__(self, profile, clean_profile=True, process_class=None, - kp_kwargs=None, env=None, symbols_path=None): self.clean_profile = clean_profile - self.env = env or {} - self.kp_kwargs = kp_kwargs or {} self.process_class = process_class or ProcessHandler - self.process_handler = None - self.profile = profile - self.log = mozlog.getLogger('MozRunner') + self.process_args = process_args or {} self.symbols_path = symbols_path def __del__(self): self.cleanup() - # Once we can use 'abc' it should become an abstract property - @property + @abstractproperty def command(self): + """Returns the command list to run.""" pass @property def returncode(self): + """ + The returncode of the process_handler. A value of None + indicates the process is still running. A negative + value indicates the process was killed with the + specified signal. + + :raises: RunnerNotStartedError + """ if self.process_handler: return self.process_handler.poll() else: - raise RunnerNotStartedError("returncode retrieved before process started") + raise RunnerNotStartedError("returncode accessed before runner started") def start(self, debug_args=None, interactive=False, timeout=None, outputTimeout=None): - """Run self.command in the proper environment + """ + Run self.command in the proper environment. - returns the process id - - :param debug_args: arguments for the debugger + :param debug_args: arguments for a debugger :param interactive: uses subprocess.Popen directly :param timeout: see process_handler.run() :param outputTimeout: see process_handler.run() - + :returns: the process id """ + self.timeout = timeout + self.output_timeout = outputTimeout + cmd = self.command + # ensure the runner is stopped self.stop() - # ensure the profile exists - if not self.profile.exists(): - self.profile.reset() - assert self.profile.exists(), "%s : failure to reset profile" % self.__class__.__name__ - - cmd = self.command - # attach a debugger, if specified if debug_args: cmd = list(debug_args) + cmd @@ -85,23 +94,21 @@ class Runner(object): # TODO: other arguments else: # this run uses the managed processhandler - self.process_handler = self.process_class(cmd, env=self.env, **self.kp_kwargs) - self.process_handler.run(timeout, outputTimeout) + self.process_handler = self.process_class(cmd, env=self.env, **self.process_args) + self.process_handler.run(self.timeout, self.output_timeout) return self.process_handler.pid def wait(self, timeout=None): - """Wait for the process to exit - - returns the process return code if the process exited, - returns - if the process was killed (Unix only) - returns None if the process is still running. + """ + Wait for the process to exit. :param timeout: if not None, will return after timeout seconds. - Use is_running() to determine whether or not a - timeout occured. Timeout is ignored if - interactive was set to True. - + Timeout is ignored if interactive was set to True. + :returns: the process return code if process exited normally, + - if process was killed (Unix only), + None if timeout was reached and the process is still running. + :raises: RunnerNotStartedError """ if self.is_running(): # The interactive mode uses directly a Popen process instance. It's @@ -117,29 +124,29 @@ class Runner(object): return self.returncode def is_running(self): - """Checks if the process is running - - returns True if the process is active + """ + Checks if the process is running. + :returns: True if the process is active """ return self.returncode is None def stop(self, sig=None): - """Kill the process - - returns - when the process got killed (Unix only) + """ + Kill the process. :param sig: Signal used to kill the process, defaults to SIGKILL (has no effect on Windows). - + :returns: the process return code if process was already stopped, + - if process was killed (Unix only) + :raises: RunnerNotStartedError """ try: if not self.is_running(): - return + return self.returncode except RunnerNotStartedError: return - # The interactive mode uses directly a Popen process instance. It's # kill() method doesn't have any parameters. So handle it separately. if isinstance(self.process_handler, subprocess.Popen): @@ -150,19 +157,22 @@ class Runner(object): return self.returncode def reset(self): - """Reset the runner to its default state""" - if getattr(self, 'profile', False): - self.profile.reset() + """ + Reset the runner to its default state. + """ + self.stop() + self.process_handler = None def check_for_crashes(self, dump_directory=None, dump_save_path=None, test_name=None, quiet=False): - """Check for a possible crash and output stack trace + """ + Check for a possible crash and output stack trace. :param dump_directory: Directory to search for minidump files :param dump_save_path: Directory to save the minidump files to :param test_name: Name to use in the crash output :param quiet: If `True` don't print the PROCESS-CRASH message to stdout - + :returns: True if a crash was detected, otherwise False """ if not dump_directory: dump_directory = os.path.join(self.profile.profile, 'minidumps') @@ -180,8 +190,7 @@ class Runner(object): return crashed def cleanup(self): - """Cleanup all runner state""" + """ + Cleanup all runner state + """ self.stop() - - if getattr(self, 'profile', False) and self.clean_profile: - self.profile.cleanup() diff --git a/testing/mozbase/mozrunner/mozrunner/cli.py b/testing/mozbase/mozrunner/mozrunner/cli.py new file mode 100644 index 00000000000..5fef70a63d1 --- /dev/null +++ b/testing/mozbase/mozrunner/mozrunner/cli.py @@ -0,0 +1,193 @@ +# 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/. + +import optparse +import os +import sys + +from mozprofile import MozProfileCLI, Profile +from .runners import ( + FirefoxRunner, + MetroRunner, + ThunderbirdRunner, +) + +from .utils import findInPath + +RUNNER_MAP = { + 'firefox': FirefoxRunner, + 'metro': MetroRunner, + 'thunderbird': ThunderbirdRunner, +} + +# Map of debugging programs to information about them +# from http://mxr.mozilla.org/mozilla-central/source/build/automationutils.py#59 +DEBUGGERS = {'gdb': {'interactive': True, + 'args': ['-q', '--args'],}, + 'valgrind': {'interactive': False, + 'args': ['--leak-check=full']} + } + +def debugger_arguments(debugger, arguments=None, interactive=None): + """Finds debugger arguments from debugger given and defaults + + :param debugger: name or path to debugger + :param arguments: arguments for the debugger, or None to use defaults + :param interactive: whether the debugger should run in interactive mode + + """ + # find debugger executable if not a file + executable = debugger + if not os.path.exists(executable): + executable = findInPath(debugger) + if executable is None: + raise Exception("Path to '%s' not found" % debugger) + + # if debugger not in dictionary of knowns return defaults + dirname, debugger = os.path.split(debugger) + if debugger not in DEBUGGERS: + return ([executable] + (arguments or []), bool(interactive)) + + # otherwise use the dictionary values for arguments unless specified + if arguments is None: + arguments = DEBUGGERS[debugger].get('args', []) + if interactive is None: + interactive = DEBUGGERS[debugger].get('interactive', False) + return ([executable] + arguments, interactive) + + +class CLI(MozProfileCLI): + """Command line interface""" + + module = "mozrunner" + + def __init__(self, args=sys.argv[1:]): + self.metadata = getattr(sys.modules[self.module], + 'package_metadata', + {}) + version = self.metadata.get('Version') + parser_args = {'description': self.metadata.get('Summary')} + if version: + parser_args['version'] = "%prog " + version + self.parser = optparse.OptionParser(**parser_args) + self.add_options(self.parser) + (self.options, self.args) = self.parser.parse_args(args) + + if getattr(self.options, 'info', None): + self.print_metadata() + sys.exit(0) + + # choose appropriate runner and profile classes + try: + self.runner_class = RUNNER_MAP[self.options.app] + except KeyError: + self.parser.error('Application "%s" unknown (should be one of "%s")' % + (self.options.app, ', '.join(RUNNER_MAP.keys()))) + + def add_options(self, parser): + """add options to the parser""" + + # add profile options + MozProfileCLI.add_options(self, parser) + + # add runner options + parser.add_option('-b', "--binary", + dest="binary", help="Binary path.", + metavar=None, default=None) + parser.add_option('--app', dest='app', default='firefox', + help="Application to use [DEFAULT: %default]") + parser.add_option('--app-arg', dest='appArgs', + default=[], action='append', + help="provides an argument to the test application") + parser.add_option('--debugger', dest='debugger', + help="run under a debugger, e.g. gdb or valgrind") + parser.add_option('--debugger-args', dest='debugger_args', + action='store', + help="arguments to the debugger") + parser.add_option('--interactive', dest='interactive', + action='store_true', + help="run the program interactively") + if self.metadata: + parser.add_option("--info", dest="info", default=False, + action="store_true", + help="Print module information") + + ### methods for introspecting data + + def get_metadata_from_egg(self): + import pkg_resources + ret = {} + dist = pkg_resources.get_distribution(self.module) + if dist.has_metadata("PKG-INFO"): + for line in dist.get_metadata_lines("PKG-INFO"): + key, value = line.split(':', 1) + ret[key] = value + if dist.has_metadata("requires.txt"): + ret["Dependencies"] = "\n" + dist.get_metadata("requires.txt") + return ret + + def print_metadata(self, data=("Name", "Version", "Summary", "Home-page", + "Author", "Author-email", "License", "Platform", "Dependencies")): + for key in data: + if key in self.metadata: + print key + ": " + self.metadata[key] + + ### methods for running + + def command_args(self): + """additional arguments for the mozilla application""" + return map(os.path.expanduser, self.options.appArgs) + + def runner_args(self): + """arguments to instantiate the runner class""" + return dict(cmdargs=self.command_args(), + binary=self.options.binary) + + def create_runner(self): + profile = Profile(**self.profile_args()) + return self.runner_class(profile=profile, **self.runner_args()) + + def run(self): + runner = self.create_runner() + self.start(runner) + runner.cleanup() + + def debugger_arguments(self): + """Get the debugger arguments + + returns a 2-tuple of debugger arguments: + (debugger_arguments, interactive) + + """ + debug_args = self.options.debugger_args + if debug_args is not None: + debug_args = debug_args.split() + interactive = self.options.interactive + if self.options.debugger: + debug_args, interactive = debugger_arguments(self.options.debugger, debug_args, interactive) + return debug_args, interactive + + def start(self, runner): + """Starts the runner and waits for the application to exit + + It can also happen via a keyboard interrupt. It should be + overwritten to provide custom running of the runner instance. + + """ + # attach a debugger if specified + debug_args, interactive = self.debugger_arguments() + runner.start(debug_args=debug_args, interactive=interactive) + print 'Starting: ' + ' '.join(runner.command) + try: + runner.wait() + except KeyboardInterrupt: + runner.stop() + + +def cli(args=sys.argv[1:]): + CLI(args).run() + + +if __name__ == '__main__': + cli() diff --git a/testing/mozbase/mozrunner/mozrunner/devices/__init__.py b/testing/mozbase/mozrunner/mozrunner/devices/__init__.py new file mode 100644 index 00000000000..ee126e1bc3c --- /dev/null +++ b/testing/mozbase/mozrunner/mozrunner/devices/__init__.py @@ -0,0 +1,10 @@ +# 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/. + +from emulator import Emulator +from base import Device + +import emulator_battery +import emulator_geo +import emulator_screen diff --git a/testing/mozbase/mozrunner/mozrunner/devices/base.py b/testing/mozbase/mozrunner/mozrunner/devices/base.py new file mode 100644 index 00000000000..750c1dc9669 --- /dev/null +++ b/testing/mozbase/mozrunner/mozrunner/devices/base.py @@ -0,0 +1,227 @@ +from ConfigParser import ( + ConfigParser, + RawConfigParser +) +import datetime +import os +import posixpath +import socket +import subprocess +import tempfile +import time +import traceback + +from mozdevice import DMError + +class Device(object): + def __init__(self, app_ctx, restore=True): + self.app_ctx = app_ctx + self.dm = self.app_ctx.dm + self.restore = restore + self.added_files = set() + self.backup_files = set() + + @property + def remote_profiles(self): + """ + A list of remote profiles on the device. + """ + remote_ini = self.app_ctx.remote_profiles_ini + if not self.dm.fileExists(remote_ini): + raise Exception("Remote file '%s' not found" % remote_ini) + + local_ini = tempfile.NamedTemporaryFile() + self.dm.getFile(remote_ini, local_ini.name) + cfg = ConfigParser() + cfg.read(local_ini.name) + + profiles = [] + for section in cfg.sections(): + if cfg.has_option(section, 'Path'): + if cfg.has_option(section, 'IsRelative') and cfg.getint(section, 'IsRelative'): + profiles.append(posixpath.join(posixpath.dirname(remote_ini), \ + cfg.get(section, 'Path'))) + else: + profiles.append(cfg.get(section, 'Path')) + return profiles + + def pull_minidumps(self): + """ + Saves any minidumps found in the remote profile on the local filesystem. + + :returns: Path to directory containing the dumps. + """ + remote_dump_dir = posixpath.join(self.app_ctx.remote_profile, 'minidumps') + local_dump_dir = tempfile.mkdtemp() + self.dm.getDirectory(remote_dump_dir, local_dump_dir) + self.dm.removeDir(remote_dump_dir) + return local_dump_dir + + def setup_profile(self, profile): + """ + Copy profile to the device and update the remote profiles.ini + to point to the new profile. + + :param profile: mozprofile object to copy over. + """ + self.dm.remount() + + if self.dm.dirExists(self.app_ctx.remote_profile): + self.dm.shellCheckOutput(['rm', '-r', self.app_ctx.remote_profile]) + + self.dm.pushDir(profile.profile, self.app_ctx.remote_profile) + + extension_dir = os.path.join(profile.profile, 'extensions', 'staged') + if os.path.isdir(extension_dir): + # Copy the extensions to the B2G bundles dir. + # need to write to read-only dir + for filename in os.listdir(extension_dir): + path = posixpath.join(self.app_ctx.remote_bundles_dir, filename) + if self.dm.fileExists(path): + self.dm.shellCheckOutput(['rm', '-rf', path]) + self.dm.pushDir(extension_dir, self.app_ctx.remote_bundles_dir) + + timeout = 5 # seconds + starttime = datetime.datetime.now() + while datetime.datetime.now() - starttime < datetime.timedelta(seconds=timeout): + if self.dm.fileExists(self.app_ctx.remote_profiles_ini): + break + time.sleep(1) + else: + print "timed out waiting for profiles.ini" + + local_profiles_ini = tempfile.NamedTemporaryFile() + self.dm.getFile(self.app_ctx.remote_profiles_ini, local_profiles_ini.name) + + config = ProfileConfigParser() + config.read(local_profiles_ini.name) + for section in config.sections(): + if 'Profile' in section: + config.set(section, 'IsRelative', 0) + config.set(section, 'Path', self.app_ctx.remote_profile) + + new_profiles_ini = tempfile.NamedTemporaryFile() + config.write(open(new_profiles_ini.name, 'w')) + + self.backup_file(self.app_ctx.remote_profiles_ini) + self.dm.pushFile(new_profiles_ini.name, self.app_ctx.remote_profiles_ini) + + def install_busybox(self, busybox): + """ + Installs busybox on the device. + + :param busybox: Path to busybox binary to install. + """ + self.dm.remount() + print 'pushing %s' % self.app_ctx.remote_busybox + self.dm.pushFile(busybox, self.app_ctx.remote_busybox, retryLimit=10) + # TODO for some reason using dm.shellCheckOutput doesn't work, + # while calling adb shell directly does. + args = [self.app_ctx.adb, '-s', self.dm._deviceSerial, + 'shell', 'cd /system/bin; chmod 555 busybox;' \ + 'for x in `./busybox --list`; do ln -s ./busybox $x; done'] + adb = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + adb.wait() + self.dm._verifyZip() + + def setup_port_forwarding(self, remote_port): + """ + Set up TCP port forwarding to the specified port on the device, + using any availble local port, and return the local port. + + :param remote_port: The remote port to wait on. + """ + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.bind(("",0)) + local_port = s.getsockname()[1] + s.close() + + self.dm.forward('tcp:%d' % local_port, 'tcp:%d' % remote_port) + return local_port + + def wait_for_port(self, port, timeout=300): + starttime = datetime.datetime.now() + while datetime.datetime.now() - starttime < datetime.timedelta(seconds=timeout): + try: + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.connect(('localhost', port)) + data = sock.recv(16) + sock.close() + if ':' in data: + return True + except: + traceback.print_exc() + time.sleep(1) + return False + + def backup_file(self, remote_path): + if not self.restore: + return + + if self.dm.fileExists(remote_path): + self.dm.copyTree(remote_path, '%s.orig' % remote_path) + self.backup_files.add(remote_path) + else: + self.added_files.add(remote_path) + + def cleanup(self): + """ + Cleanup the device. + """ + if not self.restore: + return + + try: + self.dm._verifyDevice() + except DMError: + return + + self.dm.remount() + # Restore the original profile + for added_file in self.added_files: + self.dm.removeFile(added_file) + + for backup_file in self.backup_files: + if self.dm.fileExists('%s.orig' % backup_file): + self.dm.moveTree('%s.orig' % backup_file, backup_file) + + # Delete any bundled extensions + extension_dir = posixpath.join(self.app_ctx.remote_profile, 'extensions', 'staged') + if self.dm.dirExists(extension_dir): + for filename in self.dm.listFiles(extension_dir): + try: + self.dm.removeDir(posixpath.join(self.app_ctx.remote_bundles_dir, filename)) + except DMError: + pass + # Remove the test profile + self.dm.removeDir(self.app_ctx.remote_profile) + + +class ProfileConfigParser(RawConfigParser): + """ + Class to create profiles.ini config files + + Subclass of RawConfigParser that outputs .ini files in the exact + format expected for profiles.ini, which is slightly different + than the default format. + """ + + def optionxform(self, optionstr): + return optionstr + + def write(self, fp): + if self._defaults: + fp.write("[%s]\n" % ConfigParser.DEFAULTSECT) + for (key, value) in self._defaults.items(): + fp.write("%s=%s\n" % (key, str(value).replace('\n', '\n\t'))) + fp.write("\n") + for section in self._sections: + fp.write("[%s]\n" % section) + for (key, value) in self._sections[section].items(): + if key == "__name__": + continue + if (value is not None) or (self._optcre == self.OPTCRE): + key = "=".join((key, str(value).replace('\n', '\n\t'))) + fp.write("%s\n" % (key)) + fp.write("\n") + diff --git a/testing/mozbase/mozrunner/mozrunner/devices/emulator.py b/testing/mozbase/mozrunner/mozrunner/devices/emulator.py new file mode 100644 index 00000000000..5ae11a8f8d2 --- /dev/null +++ b/testing/mozbase/mozrunner/mozrunner/devices/emulator.py @@ -0,0 +1,258 @@ +# 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/. + +from telnetlib import Telnet +import datetime +import os +import shutil +import subprocess +import tempfile +import time + +from mozprocess import ProcessHandler + +from .base import Device +from .emulator_battery import EmulatorBattery +from .emulator_geo import EmulatorGeo +from .emulator_screen import EmulatorScreen +from ..utils import uses_marionette +from ..errors import TimeoutException, ScriptTimeoutException + +class ArchContext(object): + def __init__(self, arch, context, binary=None): + kernel = os.path.join(context.homedir, 'prebuilts', 'qemu-kernel', '%s', '%s') + sysdir = os.path.join(context.homedir, 'out', 'target', 'product', '%s') + if arch == 'x86': + self.binary = os.path.join(context.bindir, 'emulator-x86') + self.kernel = kernel % ('x86', 'kernel-qemu') + self.sysdir = sysdir % 'generic_x86' + self.extra_args = [] + else: + self.binary = os.path.join(context.bindir, 'emulator') + self.kernel = kernel % ('arm', 'kernel-qemu-armv7') + self.sysdir = sysdir % 'generic' + self.extra_args = ['-cpu', 'cortex-a8'] + + if binary: + self.binary = binary + + +class Emulator(Device): + logcat_proc = None + port = None + proc = None + telnet = None + + def __init__(self, app_ctx, arch, resolution=None, sdcard=None, userdata=None, + logdir=None, no_window=None, binary=None): + Device.__init__(self, app_ctx) + + self.arch = ArchContext(arch, self.app_ctx, binary=binary) + self.resolution = resolution or '320x480' + self.sdcard = None + if sdcard: + self.sdcard = self.create_sdcard(sdcard) + self.userdata = os.path.join(self.arch.sysdir, 'userdata.img') + if userdata: + self.userdata = tempfile.NamedTemporaryFile(prefix='qemu-userdata') + shutil.copyfile(userdata, self.userdata) + self.logdir = logdir + self.no_window = no_window + + self.battery = EmulatorBattery(self) + self.geo = EmulatorGeo(self) + self.screen = EmulatorScreen(self) + + @property + def args(self): + """ + Arguments to pass into the emulator binary. + """ + qemu_args = [self.arch.binary, + '-kernel', self.arch.kernel, + '-sysdir', self.arch.sysdir, + '-data', self.userdata] + if self.no_window: + qemu_args.append('-no-window') + if self.sdcard: + qemu_args.extend(['-sdcard', self.sdcard]) + qemu_args.extend(['-memory', '512', + '-partition-size', '512', + '-verbose', + '-skin', self.resolution, + '-gpu', 'on', + '-qemu'] + self.arch.extra_args) + return qemu_args + + def _get_online_devices(self): + return set([d[0] for d in self.dm.devices() if d[1] != 'offline']) + + def start(self): + """ + Starts a new emulator. + """ + original_devices = self._get_online_devices() + + qemu_log = None + qemu_proc_args = {} + if self.logdir: + # save output from qemu to logfile + qemu_log = os.path.join(self.logdir, 'qemu.log') + if os.path.isfile(qemu_log): + self._rotate_log(qemu_log) + qemu_proc_args['logfile'] = qemu_log + else: + qemu_proc_args['processOutputLine'] = lambda line: None + self.proc = ProcessHandler(self.args, **qemu_proc_args) + self.proc.run() + + devices = self._get_online_devices() + now = datetime.datetime.now() + while (devices - original_devices) == set([]): + time.sleep(1) + if datetime.datetime.now() - now > datetime.timedelta(seconds=60): + raise TimeoutException('timed out waiting for emulator to start') + devices = self._get_online_devices() + self.connect(devices - original_devices) + + def connect(self, devices=None): + """ + Connects to an already running emulator. + """ + devices = list(devices or self._get_online_devices()) + serial = [d for d in devices if d.startswith('emulator')][0] + self.dm._deviceSerial = serial + self.dm.connect() + self.port = int(serial[serial.rindex('-')+1:]) + + self.geo.set_default_location() + self.screen.initialize() + + print self.logdir + if self.logdir: + # save logcat + logcat_log = os.path.join(self.logdir, '%s.log' % serial) + if os.path.isfile(logcat_log): + self._rotate_log(logcat_log) + logcat_args = [self.app_ctx.adb, '-s', '%s' % serial, + 'logcat', '-v', 'threadtime'] + self.logcat_proc = ProcessHandler(logcat_args, logfile=logcat_log) + self.logcat_proc.run() + + # setup DNS fix for networking + self.app_ctx.dm.shellCheckOutput(['setprop', 'net.dns1', '10.0.2.3']) + + def create_sdcard(self, sdcard_size): + """ + Creates an sdcard partition in the emulator. + + :param sdcard_size: Size of partition to create, e.g '10MB'. + """ + mksdcard = self.app_ctx.which('mksdcard') + path = tempfile.mktemp(prefix='sdcard') + sdargs = [mksdcard, '-l', 'mySdCard', sdcard_size, path] + sd = subprocess.Popen(sdargs, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + retcode = sd.wait() + if retcode: + raise Exception('unable to create sdcard: exit code %d: %s' + % (retcode, sd.stdout.read())) + return path + + def cleanup(self): + """ + Cleans up and kills the emulator. + """ + Device.cleanup(self) + if self.proc: + self.proc.kill() + self.proc = None + + # Remove temporary sdcard + if self.sdcard and os.path.isfile(self.sdcard): + os.remove(self.sdcard) + + def _rotate_log(self, srclog, index=1): + """ + Rotate a logfile, by recursively rotating logs further in the sequence, + deleting the last file if necessary. + """ + basename = os.path.basename(srclog) + basename = basename[:-len('.log')] + if index > 1: + basename = basename[:-len('.1')] + basename = '%s.%d.log' % (basename, index) + + destlog = os.path.join(self.logdir, basename) + if os.path.isfile(destlog): + if index == 3: + os.remove(destlog) + else: + self._rotate_log(destlog, index+1) + shutil.move(srclog, destlog) + + # TODO this function is B2G specific and shouldn't live here + @uses_marionette + def wait_for_system_message(self, marionette): + marionette.set_script_timeout(45000) + # Telephony API's won't be available immediately upon emulator + # boot; we have to wait for the syste-message-listener-ready + # message before we'll be able to use them successfully. See + # bug 792647. + print 'waiting for system-message-listener-ready...' + try: + marionette.execute_async_script(""" +waitFor( + function() { marionetteScriptFinished(true); }, + function() { return isSystemMessageListenerReady(); } +); + """) + except ScriptTimeoutException: + print 'timed out' + # We silently ignore the timeout if it occurs, since + # isSystemMessageListenerReady() isn't available on + # older emulators. 45s *should* be enough of a delay + # to allow telephony API's to work. + pass + print '...done' + + # TODO this function is B2G specific and shouldn't live here + @uses_marionette + def wait_for_homescreen(self, marionette): + print 'waiting for homescreen...' + + marionette.set_context(marionette.CONTEXT_CONTENT) + marionette.execute_async_script(""" +log('waiting for mozbrowserloadend'); +window.addEventListener('mozbrowserloadend', function loaded(aEvent) { + log('received mozbrowserloadend for ' + aEvent.target.src); + if (aEvent.target.src.indexOf('ftu') != -1 || aEvent.target.src.indexOf('homescreen') != -1) { + window.removeEventListener('mozbrowserloadend', loaded); + marionetteScriptFinished(); + } +});""", script_timeout=120000) + print '...done' + + def _get_telnet_response(self, command=None): + output = [] + assert(self.telnet) + if command is not None: + self.telnet.write('%s\n' % command) + while True: + line = self.telnet.read_until('\n') + output.append(line.rstrip()) + if line.startswith('OK'): + return output + elif line.startswith('KO:'): + raise Exception('bad telnet response: %s' % line) + + def _run_telnet(self, command): + if not self.telnet: + self.telnet = Telnet('localhost', self.port) + self._get_telnet_response() + return self._get_telnet_response(command) + + def __del__(self): + if self.telnet: + self.telnet.write('exit\n') + self.telnet.read_all() diff --git a/testing/marionette/client/marionette/emulator_battery.py b/testing/mozbase/mozrunner/mozrunner/devices/emulator_battery.py similarity index 100% rename from testing/marionette/client/marionette/emulator_battery.py rename to testing/mozbase/mozrunner/mozrunner/devices/emulator_battery.py diff --git a/testing/marionette/client/marionette/emulator_geo.py b/testing/mozbase/mozrunner/mozrunner/devices/emulator_geo.py similarity index 100% rename from testing/marionette/client/marionette/emulator_geo.py rename to testing/mozbase/mozrunner/mozrunner/devices/emulator_geo.py diff --git a/testing/marionette/client/marionette/emulator_screen.py b/testing/mozbase/mozrunner/mozrunner/devices/emulator_screen.py similarity index 85% rename from testing/marionette/client/marionette/emulator_screen.py rename to testing/mozbase/mozrunner/mozrunner/devices/emulator_screen.py index 1959cba55ba..592cc035dc2 100644 --- a/testing/marionette/client/marionette/emulator_screen.py +++ b/testing/mozbase/mozrunner/mozrunner/devices/emulator_screen.py @@ -62,6 +62,8 @@ class EmulatorScreen(object): SO_LANDSCAPE_PRIMARY - system buttons at the right SO_LANDSCAPE_SECONDARY - system buttons at the left """ + orientation = SCREEN_ORIENTATIONS[orientation] + if orientation == self.SO_PORTRAIT_PRIMARY: data = '0:-90:0' elif orientation == self.SO_PORTRAIT_SECONDARY: @@ -76,3 +78,12 @@ class EmulatorScreen(object): self._set_raw_orientation(data) orientation = property(get_orientation, set_orientation) + + +SCREEN_ORIENTATIONS = {"portrait": EmulatorScreen.SO_PORTRAIT_PRIMARY, + "landscape": EmulatorScreen.SO_LANDSCAPE_PRIMARY, + "portrait-primary": EmulatorScreen.SO_PORTRAIT_PRIMARY, + "landscape-primary": EmulatorScreen.SO_LANDSCAPE_PRIMARY, + "portrait-secondary": EmulatorScreen.SO_PORTRAIT_SECONDARY, + "landscape-secondary": EmulatorScreen.SO_LANDSCAPE_SECONDARY} + diff --git a/testing/mozbase/mozrunner/mozrunner/errors.py b/testing/mozbase/mozrunner/mozrunner/errors.py index 27eb085a10b..1db752f4ce8 100644 --- a/testing/mozbase/mozrunner/mozrunner/errors.py +++ b/testing/mozbase/mozrunner/mozrunner/errors.py @@ -6,6 +6,11 @@ class RunnerException(Exception): """Base exception handler for mozrunner related errors""" - class RunnerNotStartedError(RunnerException): """Exception handler in case the runner hasn't been started""" + +class TimeoutException(RunnerException): + """Raised on timeout waiting for targets to start.""" + +class ScriptTimeoutException(RunnerException): + """Raised on timeout waiting for execute_script to finish.""" diff --git a/testing/mozbase/mozrunner/mozrunner/local.py b/testing/mozbase/mozrunner/mozrunner/local.py deleted file mode 100644 index 97761fbee75..00000000000 --- a/testing/mozbase/mozrunner/mozrunner/local.py +++ /dev/null @@ -1,362 +0,0 @@ -#!/usr/bin/env 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/. - -import ConfigParser -import mozinfo -import optparse -import os -import platform -import subprocess -import sys - -if mozinfo.isMac: - from plistlib import readPlist - -from mozprofile import Profile, FirefoxProfile, MetroFirefoxProfile, ThunderbirdProfile, MozProfileCLI - -from .base import Runner -from .utils import findInPath, get_metadata_from_egg - - -__all__ = ['CLI', - 'cli', - 'LocalRunner', - 'local_runners', - 'package_metadata', - 'FirefoxRunner', - 'MetroFirefoxRunner', - 'ThunderbirdRunner'] - - -package_metadata = get_metadata_from_egg('mozrunner') - - -# Map of debugging programs to information about them -# from http://mxr.mozilla.org/mozilla-central/source/build/automationutils.py#59 -debuggers = {'gdb': {'interactive': True, - 'args': ['-q', '--args'],}, - 'valgrind': {'interactive': False, - 'args': ['--leak-check=full']} - } - - -def debugger_arguments(debugger, arguments=None, interactive=None): - """Finds debugger arguments from debugger given and defaults - - :param debugger: name or path to debugger - :param arguments: arguments for the debugger, or None to use defaults - :param interactive: whether the debugger should run in interactive mode - - """ - # find debugger executable if not a file - executable = debugger - if not os.path.exists(executable): - executable = findInPath(debugger) - if executable is None: - raise Exception("Path to '%s' not found" % debugger) - - # if debugger not in dictionary of knowns return defaults - dirname, debugger = os.path.split(debugger) - if debugger not in debuggers: - return ([executable] + (arguments or []), bool(interactive)) - - # otherwise use the dictionary values for arguments unless specified - if arguments is None: - arguments = debuggers[debugger].get('args', []) - if interactive is None: - interactive = debuggers[debugger].get('interactive', False) - return ([executable] + arguments, interactive) - - -class LocalRunner(Runner): - """Handles all running operations. Finds bins, runs and kills the process""" - - profile_class = Profile # profile class to use by default - - @classmethod - def create(cls, binary=None, cmdargs=None, env=None, kp_kwargs=None, profile_args=None, - clean_profile=True, process_class=None, **kwargs): - profile = cls.profile_class(**(profile_args or {})) - return cls(profile, binary=binary, cmdargs=cmdargs, env=env, kp_kwargs=kp_kwargs, - clean_profile=clean_profile, process_class=process_class, **kwargs) - - def __init__(self, profile, binary, cmdargs=None, env=None, - kp_kwargs=None, clean_profile=None, process_class=None, **kwargs): - - Runner.__init__(self, profile, clean_profile=clean_profile, kp_kwargs=kp_kwargs, - process_class=process_class, env=env, **kwargs) - - # find the binary - self.binary = binary - if not self.binary: - raise Exception("Binary not specified") - if not os.path.exists(self.binary): - raise OSError("Binary path does not exist: %s" % self.binary) - - # To be safe the absolute path of the binary should be used - self.binary = os.path.abspath(self.binary) - - # allow Mac binaries to be specified as an app bundle - plist = '%s/Contents/Info.plist' % self.binary - if mozinfo.isMac and os.path.exists(plist): - info = readPlist(plist) - self.binary = os.path.join(self.binary, "Contents/MacOS/", - info['CFBundleExecutable']) - - self.cmdargs = cmdargs or [] - _cmdargs = [i for i in self.cmdargs - if i != '-foreground'] - if len(_cmdargs) != len(self.cmdargs): - # foreground should be last; see - # https://bugzilla.mozilla.org/show_bug.cgi?id=625614 - self.cmdargs = _cmdargs - self.cmdargs.append('-foreground') - if mozinfo.isMac and '-foreground' not in self.cmdargs: - # runner should specify '-foreground' on Mac; see - # https://bugzilla.mozilla.org/show_bug.cgi?id=916512 - self.cmdargs.append('-foreground') - - # process environment - if env is None: - self.env = os.environ.copy() - else: - self.env = env.copy() - # allows you to run an instance of Firefox separately from any other instances - self.env['MOZ_NO_REMOTE'] = '1' - # keeps Firefox attached to the terminal window after it starts - self.env['NO_EM_RESTART'] = '1' - - # set the library path if needed on linux - if sys.platform == 'linux2' and self.binary.endswith('-bin'): - dirname = os.path.dirname(self.binary) - if os.environ.get('LD_LIBRARY_PATH', None): - self.env['LD_LIBRARY_PATH'] = '%s:%s' % (os.environ['LD_LIBRARY_PATH'], dirname) - else: - self.env['LD_LIBRARY_PATH'] = dirname - - @property - def command(self): - """Returns the command list to run""" - commands = [self.binary, '-profile', self.profile.profile] - - # Bug 775416 - Ensure that binary options are passed in first - commands[1:1] = self.cmdargs - - # If running on OS X 10.5 or older, wrap |cmd| so that it will - # be executed as an i386 binary, in case it's a 32-bit/64-bit universal - # binary. - if mozinfo.isMac and hasattr(platform, 'mac_ver') and \ - platform.mac_ver()[0][:4] < '10.6': - commands = ["arch", "-arch", "i386"] + commands - - return commands - - def get_repositoryInfo(self): - """Read repository information from application.ini and platform.ini""" - config = ConfigParser.RawConfigParser() - dirname = os.path.dirname(self.binary) - repository = { } - - for file, section in [('application', 'App'), ('platform', 'Build')]: - config.read(os.path.join(dirname, '%s.ini' % file)) - - for key, id in [('SourceRepository', 'repository'), - ('SourceStamp', 'changeset')]: - try: - repository['%s_%s' % (file, id)] = config.get(section, key); - except: - repository['%s_%s' % (file, id)] = None - - return repository - - -class FirefoxRunner(LocalRunner): - """Specialized LocalRunner subclass for running Firefox.""" - - profile_class = FirefoxProfile - - def __init__(self, profile, binary=None, **kwargs): - - # if no binary given take it from the BROWSER_PATH environment variable - binary = binary or os.environ.get('BROWSER_PATH') - LocalRunner.__init__(self, profile, binary, **kwargs) - - -class MetroFirefoxRunner(LocalRunner): - """Specialized LocalRunner subclass for running Firefox Metro""" - - profile_class = MetroFirefoxProfile - - # helper application to launch Firefox in Metro mode - here = os.path.dirname(os.path.abspath(__file__)) - immersiveHelperPath = os.path.sep.join([here, - 'resources', - 'metrotestharness.exe']) - - def __init__(self, profile, binary=None, **kwargs): - - # if no binary given take it from the BROWSER_PATH environment variable - binary = binary or os.environ.get('BROWSER_PATH') - LocalRunner.__init__(self, profile, binary, **kwargs) - - if not os.path.exists(self.immersiveHelperPath): - raise OSError('Can not find Metro launcher: %s' % self.immersiveHelperPath) - - if not mozinfo.isWin: - raise Exception('Firefox Metro mode is only supported on Windows 8 and onwards') - - @property - def command(self): - command = LocalRunner.command.fget(self) - command[:0] = [self.immersiveHelperPath, '-firefoxpath'] - - return command - - -class ThunderbirdRunner(LocalRunner): - """Specialized LocalRunner subclass for running Thunderbird""" - profile_class = ThunderbirdProfile - - -local_runners = {'firefox': FirefoxRunner, - 'metrofirefox' : MetroFirefoxRunner, - 'thunderbird': ThunderbirdRunner} - - -class CLI(MozProfileCLI): - """Command line interface""" - - module = "mozrunner" - - def __init__(self, args=sys.argv[1:]): - self.metadata = getattr(sys.modules[self.module], - 'package_metadata', - {}) - version = self.metadata.get('Version') - parser_args = {'description': self.metadata.get('Summary')} - if version: - parser_args['version'] = "%prog " + version - self.parser = optparse.OptionParser(**parser_args) - self.add_options(self.parser) - (self.options, self.args) = self.parser.parse_args(args) - - if getattr(self.options, 'info', None): - self.print_metadata() - sys.exit(0) - - # choose appropriate runner and profile classes - try: - self.runner_class = local_runners[self.options.app] - except KeyError: - self.parser.error('Application "%s" unknown (should be one of "%s")' % - (self.options.app, ', '.join(local_runners.keys()))) - - def add_options(self, parser): - """add options to the parser""" - - # add profile options - MozProfileCLI.add_options(self, parser) - - # add runner options - parser.add_option('-b', "--binary", - dest="binary", help="Binary path.", - metavar=None, default=None) - parser.add_option('--app', dest='app', default='firefox', - help="Application to use [DEFAULT: %default]") - parser.add_option('--app-arg', dest='appArgs', - default=[], action='append', - help="provides an argument to the test application") - parser.add_option('--debugger', dest='debugger', - help="run under a debugger, e.g. gdb or valgrind") - parser.add_option('--debugger-args', dest='debugger_args', - action='store', - help="arguments to the debugger") - parser.add_option('--interactive', dest='interactive', - action='store_true', - help="run the program interactively") - if self.metadata: - parser.add_option("--info", dest="info", default=False, - action="store_true", - help="Print module information") - - ### methods for introspecting data - - def get_metadata_from_egg(self): - import pkg_resources - ret = {} - dist = pkg_resources.get_distribution(self.module) - if dist.has_metadata("PKG-INFO"): - for line in dist.get_metadata_lines("PKG-INFO"): - key, value = line.split(':', 1) - ret[key] = value - if dist.has_metadata("requires.txt"): - ret["Dependencies"] = "\n" + dist.get_metadata("requires.txt") - return ret - - def print_metadata(self, data=("Name", "Version", "Summary", "Home-page", - "Author", "Author-email", "License", "Platform", "Dependencies")): - for key in data: - if key in self.metadata: - print key + ": " + self.metadata[key] - - ### methods for running - - def command_args(self): - """additional arguments for the mozilla application""" - return map(os.path.expanduser, self.options.appArgs) - - def runner_args(self): - """arguments to instantiate the runner class""" - return dict(cmdargs=self.command_args(), - binary=self.options.binary, - profile_args=self.profile_args()) - - def create_runner(self): - return self.runner_class.create(**self.runner_args()) - - def run(self): - runner = self.create_runner() - self.start(runner) - runner.cleanup() - - def debugger_arguments(self): - """Get the debugger arguments - - returns a 2-tuple of debugger arguments: - (debugger_arguments, interactive) - - """ - debug_args = self.options.debugger_args - if debug_args is not None: - debug_args = debug_args.split() - interactive = self.options.interactive - if self.options.debugger: - debug_args, interactive = debugger_arguments(self.options.debugger, debug_args, interactive) - return debug_args, interactive - - def start(self, runner): - """Starts the runner and waits for the application to exit - - It can also happen via a keyboard interrupt. It should be - overwritten to provide custom running of the runner instance. - - """ - # attach a debugger if specified - debug_args, interactive = self.debugger_arguments() - runner.start(debug_args=debug_args, interactive=interactive) - print 'Starting: ' + ' '.join(runner.command) - try: - runner.wait() - except KeyboardInterrupt: - runner.stop() - - -def cli(args=sys.argv[1:]): - CLI(args).run() - - -if __name__ == '__main__': - cli() diff --git a/testing/mozbase/mozrunner/mozrunner/remote.py b/testing/mozbase/mozrunner/mozrunner/remote.py deleted file mode 100644 index 434ff072a56..00000000000 --- a/testing/mozbase/mozrunner/mozrunner/remote.py +++ /dev/null @@ -1,382 +0,0 @@ -# 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/. - -import ConfigParser -import os -import posixpath -import re -import signal -from StringIO import StringIO -import subprocess -import sys -import tempfile -import time - -from mozdevice import DMError -import mozfile -import mozlog - -from .base import Runner - - -__all__ = ['B2GRunner', - 'RemoteRunner', - 'remote_runners'] - - -class RemoteRunner(Runner): - - def __init__(self, profile, - devicemanager, - clean_profile=None, - process_class=None, - env=None, - remote_test_root=None, - restore=True, - **kwargs): - - Runner.__init__(self, profile, clean_profile=clean_profile, - process_class=process_class, env=env, **kwargs) - self.log = mozlog.getLogger('RemoteRunner') - - self.dm = devicemanager - self.last_test = None - self.remote_test_root = remote_test_root or self.dm.getDeviceRoot() - self.log.info('using %s as test_root' % self.remote_test_root) - self.remote_profile = posixpath.join(self.remote_test_root, 'profile') - self.restore = restore - self.added_files = set() - self.backup_files = set() - - def backup_file(self, remote_path): - if not self.restore: - return - - if self.dm.fileExists(remote_path): - self.dm.shellCheckOutput(['dd', 'if=%s' % remote_path, 'of=%s.orig' % remote_path]) - self.backup_files.add(remote_path) - else: - self.added_files.add(remote_path) - - def check_for_crashes(self, last_test=None): - last_test = last_test or self.last_test - remote_dump_dir = posixpath.join(self.remote_profile, 'minidumps') - crashed = False - - self.log.info("checking for crashes in '%s'" % remote_dump_dir) - if self.dm.dirExists(remote_dump_dir): - local_dump_dir = tempfile.mkdtemp() - self.dm.getDirectory(remote_dump_dir, local_dump_dir) - - crashed = Runner.check_for_crashes(self, local_dump_dir, \ - test_name=last_test) - mozfile.remove(local_dump_dir) - self.dm.removeDir(remote_dump_dir) - - return crashed - - def cleanup(self): - if not self.restore: - return - - Runner.cleanup(self) - - self.dm.remount() - # Restore the original profile - for added_file in self.added_files: - self.dm.removeFile(added_file) - - for backup_file in self.backup_files: - if self.dm.fileExists('%s.orig' % backup_file): - self.dm.shellCheckOutput(['dd', 'if=%s.orig' % backup_file, 'of=%s' % backup_file]) - self.dm.removeFile("%s.orig" % backup_file) - - # Delete any bundled extensions - extension_dir = posixpath.join(self.remote_profile, 'extensions', 'staged') - if self.dm.dirExists(extension_dir): - for filename in self.dm.listFiles(extension_dir): - try: - self.dm.removeDir(posixpath.join(self.bundles_dir, filename)) - except DMError: - pass - # Remove the test profile - self.dm.removeDir(self.remote_profile) - - -class B2GRunner(RemoteRunner): - - def __init__(self, profile, devicemanager, marionette=None, context_chrome=True, - test_script=None, test_script_args=None, - marionette_port=None, emulator=None, **kwargs): - - remote_test_root = kwargs.get('remote_test_root') - if not remote_test_root: - kwargs['remote_test_root'] = '/data/local' - RemoteRunner.__init__(self, profile, devicemanager, **kwargs) - self.log = mozlog.getLogger('B2GRunner') - - tmpfd, processLog = tempfile.mkstemp(suffix='pidlog') - os.close(tmpfd) - tmp_env = self.env or {} - self.env = { 'MOZ_CRASHREPORTER': '1', - 'MOZ_CRASHREPORTER_NO_REPORT': '1', - 'MOZ_HIDE_RESULTS_TABLE': '1', - 'MOZ_PROCESS_LOG': processLog, - 'NSPR_LOG_MODULES': 'signaling:5,mtransport:3', - 'R_LOG_LEVEL': '5', - 'R_LOG_DESTINATION': 'stderr', - 'R_LOG_VERBOSE': '1', - 'NO_EM_RESTART': '1', } - self.env.update(tmp_env) - self.last_test = "automation" - - self.marionette = marionette - if self.marionette is not None: - if marionette_port is None: - marionette_port = self.marionette.port - elif self.marionette.port != marionette_port: - raise ValueError("Got a marionette object and a port but they don't match") - - if emulator is None: - emulator = marionette.emulator - elif marionette.emulator != emulator: - raise ValueError("Got a marionette object and an emulator argument but they don't match") - - self.marionette_port = marionette_port - self.emulator = emulator - - self.context_chrome = context_chrome - self.test_script = test_script - self.test_script_args = test_script_args - self.remote_profiles_ini = '/data/b2g/mozilla/profiles.ini' - self.bundles_dir = '/system/b2g/distribution/bundles' - - @property - def command(self): - cmd = [self.dm._adbPath] - if self.dm._deviceSerial: - cmd.extend(['-s', self.dm._deviceSerial]) - cmd.append('shell') - for k, v in self.env.iteritems(): - cmd.append("%s=%s" % (k, v)) - cmd.append('/system/bin/b2g.sh') - return cmd - - def start(self, timeout=None, outputTimeout=None): - self.timeout = timeout - self.outputTimeout = outputTimeout - self._setup_remote_profile() - # reboot device so it starts up with the proper profile - if not self.emulator: - self.dm.reboot(wait=True) - #wait for wlan to come up - if not self._wait_for_net(): - raise Exception("network did not come up, please configure the network" + - " prior to running before running the automation framework") - - self.dm.shellCheckOutput(['stop', 'b2g']) - - # For some reason user.js in the profile doesn't get picked up. - # Manually copy it over to prefs.js. See bug 1009730 for more details. - self.dm.moveTree(posixpath.join(self.remote_profile, 'user.js'), - posixpath.join(self.remote_profile, 'prefs.js')) - - self.kp_kwargs.update({'stream': sys.stdout, - 'processOutputLine': self.on_output, - 'onTimeout': self.on_timeout,}) - self.process_handler = self.process_class(self.command, **self.kp_kwargs) - self.process_handler.run(timeout=timeout, outputTimeout=outputTimeout) - - # Set up port forwarding again for Marionette, since any that - # existed previously got wiped out by the reboot. - if self.emulator is None: - subprocess.Popen([self.dm._adbPath, - 'forward', - 'tcp:%s' % self.marionette_port, - 'tcp:2828']).communicate() - - if self.marionette is not None: - self.start_marionette() - - if self.test_script is not None: - self.start_tests() - - def start_marionette(self): - self.marionette.wait_for_port() - - # start a marionette session - session = self.marionette.start_session() - if 'b2g' not in session: - raise Exception("bad session value %s returned by start_session" % session) - - if self.marionette.emulator: - # Disable offline status management (bug 777145), otherwise the network - # will be 'offline' when the mochitests start. Presumably, the network - # won't be offline on a real device, so we only do this for emulators. - self.marionette.set_context(self.marionette.CONTEXT_CHROME) - self.marionette.execute_script(""" - Components.utils.import("resource://gre/modules/Services.jsm"); - Services.io.manageOfflineStatus = false; - Services.io.offline = false; - """) - - if self.context_chrome: - self.marionette.set_context(self.marionette.CONTEXT_CHROME) - else: - self.marionette.set_context(self.marionette.CONTEXT_CONTENT) - - - def start_tests(self): - #self.marionette.execute_script(""" - # var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); - # var homeUrl = prefs.getCharPref("browser.homescreenURL"); - # dump(homeURL + "\n"); - #""") - - # run the script that starts the tests - if os.path.isfile(self.test_script): - script = open(self.test_script, 'r') - self.marionette.execute_script(script.read(), script_args=self.test_script_args) - script.close() - elif isinstance(self.test_script, basestring): - self.marionette.execute_script(self.test_script, script_args=self.test_script_args) - - def on_output(self, line): - match = re.findall(r"TEST-START \| ([^\s]*)", line) - if match: - self.last_test = match[-1] - - def on_timeout(self): - self.dm.killProcess('/system/b2g/b2g', sig=signal.SIGABRT) - - msg = "%s | application timed out after %s seconds" - - if self.timeout: - timeout = self.timeout - else: - timeout = self.outputTimeout - msg = "%s with no output" % msg - - self.log.testFail(msg % (self.last_test, timeout)) - self.check_for_crashes() - - def _get_device_status(self, serial=None): - # If we know the device serial number, we look for that, - # otherwise we use the (presumably only) device shown in 'adb devices'. - serial = serial or self.dm._deviceSerial - status = 'unknown' - - proc = subprocess.Popen([self.dm._adbPath, 'devices'], stdout=subprocess.PIPE) - line = proc.stdout.readline() - while line != '': - result = re.match('(.*?)\t(.*)', line) - if result: - thisSerial = result.group(1) - if not serial or thisSerial == serial: - serial = thisSerial - status = result.group(2) - break - line = proc.stdout.readline() - return (serial, status) - - def _wait_for_net(self): - active = False - time_out = 0 - while not active and time_out < 40: - proc = subprocess.Popen([self.dm._adbPath, 'shell', '/system/bin/netcfg'], stdout=subprocess.PIPE) - proc.stdout.readline() # ignore first line - line = proc.stdout.readline() - while line != "": - if (re.search(r'UP\s+(?:[0-9]{1,3}\.){3}[0-9]{1,3}', line)): - active = True - break - line = proc.stdout.readline() - time_out += 1 - time.sleep(1) - return active - - def _setup_remote_profile(self): - """Copy profile and update the remote profiles.ini to point to the new profile""" - self.dm.remount() - - # copy the profile to the device. - if self.dm.dirExists(self.remote_profile): - self.dm.shellCheckOutput(['rm', '-r', self.remote_profile]) - - try: - self.dm.pushDir(self.profile.profile, self.remote_profile) - except DMError: - self.log.error("Automation Error: Unable to copy profile to device.") - raise - - extension_dir = os.path.join(self.profile.profile, 'extensions', 'staged') - if os.path.isdir(extension_dir): - # Copy the extensions to the B2G bundles dir. - # need to write to read-only dir - for filename in os.listdir(extension_dir): - fpath = os.path.join(self.bundles_dir, filename) - if self.dm.fileExists(fpath): - self.dm.shellCheckOutput(['rm', '-rf', fpath]) - try: - self.dm.pushDir(extension_dir, self.bundles_dir) - except DMError: - self.log.error("Automation Error: Unable to copy extensions to device.") - raise - - if not self.dm.fileExists(self.remote_profiles_ini): - raise DMError("The profiles.ini file '%s' does not exist on the device" % self.remote_profiles_ini) - - local_profiles_ini = tempfile.NamedTemporaryFile() - self.dm.getFile(self.remote_profiles_ini, local_profiles_ini.name) - - config = ProfileConfigParser() - config.read(local_profiles_ini.name) - for section in config.sections(): - if 'Profile' in section: - config.set(section, 'IsRelative', 0) - config.set(section, 'Path', self.remote_profile) - - new_profiles_ini = tempfile.NamedTemporaryFile() - config.write(open(new_profiles_ini.name, 'w')) - - self.backup_file(self.remote_profiles_ini) - self.dm.pushFile(new_profiles_ini.name, self.remote_profiles_ini) - - def cleanup(self): - RemoteRunner.cleanup(self) - if getattr(self.marionette, 'instance', False): - self.marionette.instance.close() - del self.marionette - - -class ProfileConfigParser(ConfigParser.RawConfigParser): - """Class to create profiles.ini config files - - Subclass of RawConfigParser that outputs .ini files in the exact - format expected for profiles.ini, which is slightly different - than the default format. - - """ - - def optionxform(self, optionstr): - return optionstr - - def write(self, fp): - if self._defaults: - fp.write("[%s]\n" % ConfigParser.DEFAULTSECT) - for (key, value) in self._defaults.items(): - fp.write("%s=%s\n" % (key, str(value).replace('\n', '\n\t'))) - fp.write("\n") - for section in self._sections: - fp.write("[%s]\n" % section) - for (key, value) in self._sections[section].items(): - if key == "__name__": - continue - if (value is not None) or (self._optcre == self.OPTCRE): - key = "=".join((key, str(value).replace('\n', '\n\t'))) - fp.write("%s\n" % (key)) - fp.write("\n") - -remote_runners = {'b2g': 'B2GRunner', - 'fennec': 'FennecRunner'} diff --git a/testing/mozbase/mozrunner/mozrunner/runners.py b/testing/mozbase/mozrunner/mozrunner/runners.py new file mode 100644 index 00000000000..a2cd82deb26 --- /dev/null +++ b/testing/mozbase/mozrunner/mozrunner/runners.py @@ -0,0 +1,155 @@ +# 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/. + +""" +This module contains a set of shortcut methods that create runners for commonly +used Mozilla applications, such as Firefox or B2G emulator. +""" + +from .application import get_app_context +from .base import DeviceRunner, GeckoRuntimeRunner +from .devices import Emulator + + +def Runner(*args, **kwargs): + """ + Create a generic GeckoRuntime runner. + + :param binary: Path to binary. + :param cmdargs: Arguments to pass into binary. + :param profile: Profile object to use. + :param env: Environment variables to pass into the gecko process. + :param clean_profile: If True, restores profile back to original state. + :param process_class: Class used to launch the binary. + :param process_args: Arguments to pass into process_class. + :param symbols_path: Path to symbol files used for crash analysis. + :returns: A generic GeckoRuntimeRunner. + """ + return GeckoRuntimeRunner(*args, **kwargs) + + +def FirefoxRunner(*args, **kwargs): + """ + Create a desktop Firefox runner. + + :param binary: Path to Firefox binary. + :param cmdargs: Arguments to pass into binary. + :param profile: Profile object to use. + :param env: Environment variables to pass into the gecko process. + :param clean_profile: If True, restores profile back to original state. + :param process_class: Class used to launch the binary. + :param process_args: Arguments to pass into process_class. + :param symbols_path: Path to symbol files used for crash analysis. + :returns: A GeckoRuntimeRunner for Firefox. + """ + kwargs['app_ctx'] = get_app_context('firefox')() + return GeckoRuntimeRunner(*args, **kwargs) + + +def ThunderbirdRunner(*args, **kwargs): + """ + Create a desktop Thunderbird runner. + + :param binary: Path to Thunderbird binary. + :param cmdargs: Arguments to pass into binary. + :param profile: Profile object to use. + :param env: Environment variables to pass into the gecko process. + :param clean_profile: If True, restores profile back to original state. + :param process_class: Class used to launch the binary. + :param process_args: Arguments to pass into process_class. + :param symbols_path: Path to symbol files used for crash analysis. + :returns: A GeckoRuntimeRunner for Thunderbird. + """ + kwargs['app_ctx'] = get_app_context('thunderbird')() + return GeckoRuntimeRunner(*args, **kwargs) + + +def MetroRunner(*args, **kwargs): + """ + Create a Windows metro Firefox runner. + + :param binary: Path to metro Firefox binary. + :param cmdargs: Arguments to pass into binary. + :param profile: Profile object to use. + :param env: Environment variables to pass into the gecko process. + :param clean_profile: If True, restores profile back to original state. + :param process_class: Class used to launch the binary. + :param process_args: Arguments to pass into process_class. + :param symbols_path: Path to symbol files used for crash analysis. + :returns: A GeckoRuntimeRunner for metro Firefox. + """ + kwargs['app_ctx'] = get_app_context('metro')() + return GeckoRuntimeRunner(*args, **kwargs) + + +def B2GDesktopRunner(*args, **kwargs): + """ + Create a B2G desktop runner. + + :param binary: Path to b2g desktop binary. + :param cmdargs: Arguments to pass into binary. + :param profile: Profile object to use. + :param env: Environment variables to pass into the gecko process. + :param clean_profile: If True, restores profile back to original state. + :param process_class: Class used to launch the binary. + :param process_args: Arguments to pass into process_class. + :param symbols_path: Path to symbol files used for crash analysis. + :returns: A GeckoRuntimeRunner for b2g desktop. + """ + # There is no difference between a generic and b2g desktop runner, + # but expose a separate entry point for clarity. + return Runner(*args, **kwargs) + + +def B2GEmulatorRunner(arch='arm', + b2g_home=None, + adb_path=None, + logdir=None, + binary=None, + no_window=None, + resolution=None, + sdcard=None, + userdata=None, + **kwargs): + """ + Create a B2G emulator runner. + + :param arch: The architecture of the emulator, either 'arm' or 'x86'. Defaults to 'arm'. + :param b2g_home: Path to root B2G repository. + :param logdir: Path to save logfiles such as logcat and qemu output. + :param no_window: Run emulator without a window. + :param resolution: Screen resolution to set emulator to, e.g '800x1000'. + :param sdcard: Path to local emulated sdcard storage. + :param userdata: Path to custom userdata image. + :param profile: Profile object to use. + :param env: Environment variables to pass into the b2g.sh process. + :param clean_profile: If True, restores profile back to original state. + :param process_class: Class used to launch the b2g.sh process. + :param process_args: Arguments to pass into the b2g.sh process. + :param symbols_path: Path to symbol files used for crash analysis. + :returns: A DeviceRunner for B2G emulators. + """ + kwargs['app_ctx'] = get_app_context('b2g')(b2g_home, adb_path=adb_path) + device_args = { 'app_ctx': kwargs['app_ctx'], + 'arch': arch, + 'binary': binary, + 'resolution': resolution, + 'sdcard': sdcard, + 'userdata': userdata, + 'no_window': no_window, + 'logdir': logdir } + return DeviceRunner(device_class=Emulator, + device_args=device_args, + **kwargs) + + +runners = { + 'default': Runner, + 'b2g_desktop': B2GDesktopRunner, + 'b2g_emulator': B2GEmulatorRunner, + 'firefox': FirefoxRunner, + 'metro': MetroRunner, + 'thunderbird': ThunderbirdRunner, +} + diff --git a/testing/mozbase/mozrunner/mozrunner/utils.py b/testing/mozbase/mozrunner/mozrunner/utils.py index 0507ab937de..3848547f456 100644 --- a/testing/mozbase/mozrunner/mozrunner/utils.py +++ b/testing/mozbase/mozrunner/mozrunner/utils.py @@ -6,9 +6,10 @@ """Utility functions for mozrunner""" -__all__ = ['findInPath', 'get_metadata_from_egg'] +__all__ = ['findInPath', 'get_metadata_from_egg', 'uses_marionette'] +from functools import wraps import mozinfo import os import sys @@ -63,3 +64,33 @@ def findInPath(fileName, path=os.environ['PATH']): if __name__ == '__main__': for i in sys.argv[1:]: print findInPath(i) + + +def _find_marionette_in_args(*args, **kwargs): + try: + m = [a for a in args + tuple(kwargs.values()) if hasattr(a, 'session')][0] + except IndexError: + print("Can only apply decorator to function using a marionette object") + raise + return m + +def uses_marionette(func): + """Decorator which creates a marionette session and deletes it + afterwards if one doesn't already exist. + """ + @wraps(func) + def _(*args, **kwargs): + m = _find_marionette_in_args(*args, **kwargs) + delete_session = False + if not m.session: + delete_session = True + m.start_session() + + m.set_context(m.CONTEXT_CHROME) + ret = func(*args, **kwargs) + + if delete_session: + m.delete_session() + + return ret + return _ diff --git a/testing/mozbase/mozrunner/setup.py b/testing/mozbase/mozrunner/setup.py index 7f27a7c32b3..4c317821ce2 100644 --- a/testing/mozbase/mozrunner/setup.py +++ b/testing/mozbase/mozrunner/setup.py @@ -3,15 +3,15 @@ # You can obtain one at http://mozilla.org/MPL/2.0/. import sys -from setuptools import setup +from setuptools import setup, find_packages PACKAGE_NAME = 'mozrunner' -PACKAGE_VERSION = '5.37' +PACKAGE_VERSION = '6.0' desc = """Reliable start/stop/configuration of Mozilla Applications (Firefox, Thunderbird, etc.)""" deps = ['mozcrash >= 0.11', - 'mozdevice >= 0.30', + 'mozdevice >= 0.37', 'mozfile >= 1.0', 'mozinfo >= 0.7', 'mozlog >= 1.5', @@ -39,7 +39,7 @@ setup(name=PACKAGE_NAME, author_email='tools@lists.mozilla.org', url='https://wiki.mozilla.org/Auto-tools/Projects/Mozbase', license='MPL 2.0', - packages=['mozrunner'], + packages=find_packages(), package_data={'mozrunner': [ 'resources/metrotestharness.exe' ]}, diff --git a/testing/profiles/prefs_b2g_unittest.js b/testing/profiles/prefs_b2g_unittest.js index ac5e9ccba10..0e0c24546b0 100644 --- a/testing/profiles/prefs_b2g_unittest.js +++ b/testing/profiles/prefs_b2g_unittest.js @@ -1,10 +1,10 @@ // Prefs specific to b2g mochitests -user_pref("b2g.system_startup_url","app://test-container.gaiamobile.org/index.html"); user_pref("b2g.system_manifest_url","app://test-container.gaiamobile.org/manifest.webapp"); -user_pref("dom.mozBrowserFramesEnabled", "%(OOP)s"); -user_pref("dom.ipc.tabs.disabled", false); +user_pref("b2g.system_startup_url","app://test-container.gaiamobile.org/index.html"); user_pref("dom.ipc.browser_frames.oop_by_default", false); +user_pref("dom.ipc.tabs.disabled", false); +user_pref("dom.mozBrowserFramesEnabled", "%(OOP)s"); user_pref("dom.mozBrowserFramesWhitelist","app://test-container.gaiamobile.org,http://mochi.test:8888"); -user_pref("marionette.force-local", true); user_pref("dom.testing.datastore_enabled_for_hosted_apps", true); +user_pref("marionette.force-local", true); diff --git a/testing/tps/tps/firefoxrunner.py b/testing/tps/tps/firefoxrunner.py index e569e26e2c9..27369f9e197 100644 --- a/testing/tps/tps/firefoxrunner.py +++ b/testing/tps/tps/firefoxrunner.py @@ -79,17 +79,7 @@ class TPSFirefoxRunner(object): self.binary = self.download_build() if self.runner is None: - self.runner = FirefoxRunner(self.profile, binary=self.binary) + self.runner = FirefoxRunner(profile=self.profile, binary=self.binary, env=env, cmdargs=args) - self.runner.profile = self.profile - - if env is not None: - self.runner.env.update(env) - - if args is not None: - self.runner.cmdargs = copy.copy(args) - - self.runner.start() - returncode = self.runner.wait(timeout) - - return returncode + self.runner.start(timeout=timeout) + return self.runner.wait() diff --git a/testing/xpcshell/mach_commands.py b/testing/xpcshell/mach_commands.py index ab6850b9523..27c01c38773 100644 --- a/testing/xpcshell/mach_commands.py +++ b/testing/xpcshell/mach_commands.py @@ -356,7 +356,7 @@ class B2GXPCShellRunner(MozbuildObject): options.busybox = busybox or os.environ.get('BUSYBOX') options.localLib = self.bin_dir options.localBin = self.bin_dir - options.logcat_dir = self.xpcshell_dir + options.logdir = self.xpcshell_dir options.manifest = os.path.join(self.xpcshell_dir, 'xpcshell_b2g.ini') options.mozInfo = os.path.join(self.topobjdir, 'mozinfo.json') options.objdir = self.topobjdir diff --git a/testing/xpcshell/remotexpcshelltests.py b/testing/xpcshell/remotexpcshelltests.py index 37ec773242e..9640f0d5fef 100644 --- a/testing/xpcshell/remotexpcshelltests.py +++ b/testing/xpcshell/remotexpcshelltests.py @@ -126,13 +126,13 @@ class RemoteXPCShellTestThread(xpcshell.XPCShellTestThread): self.log.error("TEST-UNEXPECTED-FAIL | %s | Test timed out" % test_file) self.kill(proc) - def launchProcess(self, cmd, stdout, stderr, env, cwd): + def launchProcess(self, cmd, stdout, stderr, env, cwd, timeout=None): self.timedout = False cmd.insert(1, self.remoteHere) outputFile = "xpcshelloutput" with open(outputFile, 'w+') as f: try: - self.shellReturnCode = self.device.shell(cmd, f) + self.shellReturnCode = self.device.shell(cmd, f, timeout=timeout+10) except devicemanager.DMError as e: if self.timedout: # If the test timed out, there is a good chance the SUTagent also diff --git a/testing/xpcshell/runtestsb2g.py b/testing/xpcshell/runtestsb2g.py index 872982d3ae7..abe2acaeab4 100644 --- a/testing/xpcshell/runtestsb2g.py +++ b/testing/xpcshell/runtestsb2g.py @@ -19,10 +19,10 @@ from marionette import Marionette class B2GXPCShellTestThread(RemoteXPCShellTestThread): # Overridden - def launchProcess(self, cmd, stdout, stderr, env, cwd): + def launchProcess(self, cmd, stdout, stderr, env, cwd, timeout=None): try: # This returns 1 even when tests pass - hardcode returncode to 0 (bug 773703) - outputFile = RemoteXPCShellTestThread.launchProcess(self, cmd, stdout, stderr, env, cwd) + outputFile = RemoteXPCShellTestThread.launchProcess(self, cmd, stdout, stderr, env, cwd, timeout=timeout) self.shellReturnCode = 0 except DMError: self.shellReturnCode = -1 @@ -126,10 +126,10 @@ class B2GOptions(RemoteXPCShellOptions): help="the path to a gecko distribution that should " "be installed on the emulator prior to test") defaults["geckoPath"] = None - self.add_option("--logcat-dir", action="store", - type="string", dest="logcat_dir", - help="directory to store logcat dump files") - defaults["logcat_dir"] = None + self.add_option("--logdir", action="store", + type="string", dest="logdir", + help="directory to store log files") + defaults["logdir"] = None self.add_option('--busybox', action='store', type='string', dest='busybox', help="Path to busybox binary to install on device") @@ -149,8 +149,8 @@ class B2GOptions(RemoteXPCShellOptions): if options.geckoPath and not options.emulator: self.error("You must specify --emulator if you specify --gecko-path") - if options.logcat_dir and not options.emulator: - self.error("You must specify --emulator if you specify --logcat-dir") + if options.logdir and not options.emulator: + self.error("You must specify --emulator if you specify --logdir") return RemoteXPCShellOptions.verifyRemoteOptions(self, options) def run_remote_xpcshell(parser, options, args): @@ -164,8 +164,8 @@ def run_remote_xpcshell(parser, options, args): kwargs['noWindow'] = True if options.geckoPath: kwargs['gecko_path'] = options.geckoPath - if options.logcat_dir: - kwargs['logcat_dir'] = options.logcat_dir + if options.logdir: + kwargs['logdir'] = options.logdir if options.busybox: kwargs['busybox'] = options.busybox if options.symbolsPath: diff --git a/testing/xpcshell/runxpcshelltests.py b/testing/xpcshell/runxpcshelltests.py index 98c92ff143e..e3cc98c970d 100755 --- a/testing/xpcshell/runxpcshelltests.py +++ b/testing/xpcshell/runxpcshelltests.py @@ -232,11 +232,13 @@ class XPCShellTestThread(Thread): return proc.communicate() - def launchProcess(self, cmd, stdout, stderr, env, cwd): + def launchProcess(self, cmd, stdout, stderr, env, cwd, timeout=None): """ Simple wrapper to launch a process. On a remote system, this is more complex and we need to overload this function. """ + # timeout is needed by remote and b2g xpcshell to extend the + # devicemanager.shell() timeout. It is not used in this function. if HAVE_PSUTIL: popen_func = psutil.Popen else: @@ -623,7 +625,7 @@ class XPCShellTestThread(Thread): startTime = time.time() proc = self.launchProcess(completeCmd, - stdout=self.pStdout, stderr=self.pStderr, env=self.env, cwd=test_dir) + stdout=self.pStdout, stderr=self.pStderr, env=self.env, cwd=test_dir, timeout=testTimeoutInterval) if self.interactive: self.log.info("TEST-INFO | %s | Process ID: %d" % (name, proc.pid)) From a83d1bbd152b8ae8d015a50d301265afe2a43740 Mon Sep 17 00:00:00 2001 From: Birunthan Mohanathas Date: Thu, 19 Jun 2014 14:42:00 -0400 Subject: [PATCH 25/60] Bug 1026535 - Disable C4099 warning in 3rd party code. r=ehsan --- media/libstagefright/moz.build | 1 + toolkit/components/protobuf/moz.build | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/media/libstagefright/moz.build b/media/libstagefright/moz.build index d92e013948f..ba2295f4c23 100644 --- a/media/libstagefright/moz.build +++ b/media/libstagefright/moz.build @@ -110,6 +110,7 @@ if CONFIG['_MSC_VER']: '-wd4309', # '=' : truncation of constant value '-wd4355', # 'this' : used in base member initializer list '-wd4804', # '>' : unsafe use of type 'bool' in operation + '-wd4099', # mismatched class/struct tags ] elif CONFIG['GNU_CXX']: CFLAGS += [ diff --git a/toolkit/components/protobuf/moz.build b/toolkit/components/protobuf/moz.build index 79e1b6f3466..ff1da2cdfe9 100644 --- a/toolkit/components/protobuf/moz.build +++ b/toolkit/components/protobuf/moz.build @@ -53,3 +53,7 @@ if CONFIG['GNU_CXX']: '-Wno-null-conversion', '-Wno-sign-compare', ] +elif CONFIG['_MSC_VER']: + CXXFLAGS += [ + '-wd4099', # mismatched class/struct tags + ] From 3606f544aeed22a58c44468c54ff3d37fc1fd4a4 Mon Sep 17 00:00:00 2001 From: Birunthan Mohanathas Date: Thu, 19 Jun 2014 14:42:19 -0400 Subject: [PATCH 26/60] Bug 1026535 - Re-enable -Wmismatched-tags/C4099 warnings. r=ehsan --- build/autoconf/compiler-opts.m4 | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/build/autoconf/compiler-opts.m4 b/build/autoconf/compiler-opts.m4 index 3ed91b916c6..216edeb9a0f 100644 --- a/build/autoconf/compiler-opts.m4 +++ b/build/autoconf/compiler-opts.m4 @@ -197,11 +197,7 @@ if test "$CLANG_CXX"; then ## returned by C functions. This is possible because we use knowledge about the ABI ## to typedef it to a C type with the same layout when the headers are included ## from C. - ## - ## mismatched-tags is disabled (bug 780474) mostly because it's useless. - ## Worse, it's not supported by gcc, so it will cause tryserver bustage - ## without any easy way for non-Clang users to check for it. - _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-unknown-warning-option -Wno-return-type-c-linkage -Wno-mismatched-tags" + _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-unknown-warning-option -Wno-return-type-c-linkage" fi AC_MSG_CHECKING([whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) actually is a C++ compiler]) @@ -216,15 +212,6 @@ LIBS=$_SAVE_LIBS AC_LANG_RESTORE AC_MSG_RESULT([yes]) -if test -z "$GNU_CC"; then - case "$target" in - *-mingw*) - ## Warning 4099 (equivalent of mismatched-tags) is disabled (bug 780474) - ## for the same reasons as above. - _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -wd4099" - esac -fi - if test -n "$DEVELOPER_OPTIONS"; then MOZ_FORCE_GOLD=1 fi From 7b4738fb894c5f3a13d2f9624f6e5993faf93ab6 Mon Sep 17 00:00:00 2001 From: Shu-yu Guo Date: Thu, 19 Jun 2014 12:22:11 -0700 Subject: [PATCH 27/60] Bug 1026139 - Fix patching already patched frames in debug mode OSR. (r=jandem) --- js/src/jit/BaselineDebugModeOSR.cpp | 85 +++++++++++++++++++++-------- js/src/jit/IonFrames.cpp | 17 ++++-- js/src/jit/JitFrameIterator.h | 4 ++ 3 files changed, 77 insertions(+), 29 deletions(-) diff --git a/js/src/jit/BaselineDebugModeOSR.cpp b/js/src/jit/BaselineDebugModeOSR.cpp index 23e5544da4c..645476f0aff 100644 --- a/js/src/jit/BaselineDebugModeOSR.cpp +++ b/js/src/jit/BaselineDebugModeOSR.cpp @@ -50,23 +50,21 @@ struct DebugModeOSREntry #ifdef DEBUG MOZ_ASSERT(pcOffset == icEntry.pcOffset()); MOZ_ASSERT(frameKind == icEntry.kind()); +#endif + } - // Assert that if we have a NonOp ICEntry, that there are no unsynced - // slots, since such a recompile could have only been triggered from - // either an interrupt check or a debug trap handler. - // - // If triggered from an interrupt check, the stack should be fully - // synced. - // - // If triggered from a debug trap handler, we must be recompiling for - // toggling debug mode on->off, in which case the old baseline script - // should have fully synced stack at every bytecode. - if (frameKind == ICEntry::Kind_NonOp) { - PCMappingSlotInfo slotInfo; - jsbytecode *pc = script->offsetToPC(pcOffset); - oldBaselineScript->nativeCodeForPC(script, pc, &slotInfo); - MOZ_ASSERT(slotInfo.numUnsynced() == 0); - } + DebugModeOSREntry(JSScript *script, BaselineDebugModeOSRInfo *info) + : script(script), + oldBaselineScript(script->baselineScript()), + oldStub(nullptr), + newStub(nullptr), + recompInfo(nullptr), + pcOffset(script->pcToOffset(info->pc)), + frameKind(info->frameKind) + { +#ifdef DEBUG + MOZ_ASSERT(pcOffset == script->pcToOffset(info->pc)); + MOZ_ASSERT(frameKind == info->frameKind); #endif } @@ -99,7 +97,7 @@ struct DebugModeOSREntry } BaselineDebugModeOSRInfo *takeRecompInfo() { - MOZ_ASSERT(recompInfo); + MOZ_ASSERT(needsRecompileInfo() && recompInfo); BaselineDebugModeOSRInfo *tmp = recompInfo; recompInfo = nullptr; return tmp; @@ -175,11 +173,24 @@ CollectOnStackScripts(JSContext *cx, const JitActivationIterator &activation, switch (iter.type()) { case JitFrame_BaselineJS: { JSScript *script = iter.script(); - uint8_t *retAddr = iter.returnAddressToFp(); - ICEntry &entry = script->baselineScript()->icEntryFromReturnAddress(retAddr); - if (!entries.append(DebugModeOSREntry(script, entry))) - return false; + if (BaselineDebugModeOSRInfo *info = iter.baselineFrame()->getDebugModeOSRInfo()) { + // If patching a previously patched yet unpopped frame, we can + // use the BaselineDebugModeOSRInfo on the frame directly to + // patch. Indeed, we cannot use iter.returnAddressToFp(), as + // it points into the debug mode OSR handler and cannot be + // used to look up a corresponding ICEntry. + // + // See cases F and G in PatchBaselineFrameForDebugMode. + if (!entries.append(DebugModeOSREntry(script, info))) + return false; + } else { + // Otherwise, use the return address to look up the ICEntry. + uint8_t *retAddr = iter.returnAddressToFp(); + ICEntry &entry = script->baselineScript()->icEntryFromReturnAddress(retAddr); + if (!entries.append(DebugModeOSREntry(script, entry))) + return false; + } if (entries.back().needsRecompileInfo()) { if (!entries.back().allocateRecompileInfo(cx)) @@ -284,6 +295,13 @@ PatchBaselineFramesForDebugMode(JSContext *cx, const JitActivationIterator &acti // D. From the debug prologue. // E. From the debug epilogue. // + // Off to On to Off: + // F. Undo case B above on previously patched yet unpopped frames. + // + // On to Off to On: + // G. Undo cases B, C, D, or E above on previously patched yet unpopped + // frames. + // // In general, we patch the return address from the VM call to return to a // "continuation fixer" to fix up machine state (registers and stack // state). Specifics on what need to be done are documented below. @@ -291,7 +309,7 @@ PatchBaselineFramesForDebugMode(JSContext *cx, const JitActivationIterator &acti IonCommonFrameLayout *prev = nullptr; size_t entryIndex = *start; - DebugOnly expectedDebugMode = cx->compartment()->debugMode(); + bool expectedDebugMode = cx->compartment()->debugMode(); for (JitFrameIterator iter(activation); !iter.done(); ++iter) { DebugModeOSREntry &entry = entries[entryIndex]; @@ -332,12 +350,33 @@ PatchBaselineFramesForDebugMode(JSContext *cx, const JitActivationIterator &acti break; } - bool popFrameReg; + // Cases F and G above. + // + // We undo a previous recompile by handling cases B, C, D, and E + // like normal, except that we retrieved the pc information via + // the previous OSR debug info stashed on the frame. + if (BaselineDebugModeOSRInfo *info = iter.baselineFrame()->getDebugModeOSRInfo()) { + MOZ_ASSERT(info->pc == pc); + MOZ_ASSERT(info->frameKind == kind); + + // Case G, might need to undo B, C, D, or E. + MOZ_ASSERT_IF(expectedDebugMode, (kind == ICEntry::Kind_CallVM || + kind == ICEntry::Kind_DebugTrap || + kind == ICEntry::Kind_DebugPrologue || + kind == ICEntry::Kind_DebugEpilogue)); + // Case F, should only need to undo case B. + MOZ_ASSERT_IF(!expectedDebugMode, kind == ICEntry::Kind_CallVM); + + // We will have allocated a new recompile info, so delete the + // existing one. + iter.baselineFrame()->deleteDebugModeOSRInfo(); + } // The RecompileInfo must already be allocated so that this // function may be infallible. BaselineDebugModeOSRInfo *recompInfo = entry.takeRecompInfo(); + bool popFrameReg; switch (kind) { case ICEntry::Kind_CallVM: // Case B above. diff --git a/js/src/jit/IonFrames.cpp b/js/src/jit/IonFrames.cpp index 0e0ac67fa9a..b28d5fbe6d5 100644 --- a/js/src/jit/IonFrames.cpp +++ b/js/src/jit/IonFrames.cpp @@ -207,6 +207,16 @@ JitFrameIterator::script() const return script; } +uint8_t * +JitFrameIterator::resumeAddressToFp() const +{ + // If we are settled on a patched BaselineFrame due to debug mode OSR, get + // the real return address via the stashed DebugModeOSRInfo. + if (isBaselineJS() && baselineFrame()->getDebugModeOSRInfo()) + return baselineFrame()->debugModeOSRInfo()->resumeAddr; + return returnAddressToFp(); +} + void JitFrameIterator::baselineScriptAndPc(JSScript **scriptRes, jsbytecode **pcRes) const { @@ -214,7 +224,7 @@ JitFrameIterator::baselineScriptAndPc(JSScript **scriptRes, jsbytecode **pcRes) JSScript *script = this->script(); if (scriptRes) *scriptRes = script; - uint8_t *retAddr = returnAddressToFp(); + uint8_t *retAddr = resumeAddressToFp(); // If we have unwound the scope due to exception handling to a different // pc, the frame should behave as if it were settled on that pc. @@ -223,11 +233,6 @@ JitFrameIterator::baselineScriptAndPc(JSScript **scriptRes, jsbytecode **pcRes) return; } - // If we are in the middle of a recompile handler, get the real return - // address as stashed in the RecompileInfo. - if (BaselineDebugModeOSRInfo *info = baselineFrame()->getDebugModeOSRInfo()) - retAddr = info->resumeAddr; - if (pcRes) { // If the return address is into the prologue entry address or just // after the debug prologue, then assume start of script. diff --git a/js/src/jit/JitFrameIterator.h b/js/src/jit/JitFrameIterator.h index f720713c7eb..d304c642423 100644 --- a/js/src/jit/JitFrameIterator.h +++ b/js/src/jit/JitFrameIterator.h @@ -191,6 +191,10 @@ class JitFrameIterator return returnAddressToFp_; } + // Returns the resume address. As above, except taking + // BaselineDebugModeOSRInfo into account, if present. + uint8_t *resumeAddressToFp() const; + // Previous frame information extracted from the current frame. inline size_t prevFrameLocalSize() const; inline FrameType prevType() const; From 16f8799b22c2cfd7043033cfbfa425dedf7177ec Mon Sep 17 00:00:00 2001 From: Shu-yu Guo Date: Thu, 19 Jun 2014 12:22:11 -0700 Subject: [PATCH 28/60] Bug 1026139 - Test. (r=jimb) --- .../tests/debug/Debugger-debuggees-28.js | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 js/src/jit-test/tests/debug/Debugger-debuggees-28.js diff --git a/js/src/jit-test/tests/debug/Debugger-debuggees-28.js b/js/src/jit-test/tests/debug/Debugger-debuggees-28.js new file mode 100644 index 00000000000..f79ce2b9dcc --- /dev/null +++ b/js/src/jit-test/tests/debug/Debugger-debuggees-28.js @@ -0,0 +1,109 @@ +// Test that on->off->on and off->on->off toggles don't crash. + +function addRemove(dbg, g) { + dbg.addDebuggee(g); + var f = dbg.getNewestFrame(); + while (f) + f = f.older; + dbg.removeDebuggee(g); +} + +function removeAdd(dbg, g) { + dbg.removeDebuggee(g); + dbg.addDebuggee(g); + var f = dbg.getNewestFrame(); + while (f) + f = f.older; +} + +function newGlobalDebuggerPair(toggleSeq) { + var g = newGlobal(); + var dbg = new Debugger; + + if (toggleSeq == removeAdd) + dbg.addDebuggee(g); + + g.eval("" + function f() { return g(); }); + g.eval("" + function g() { return h(); }); + g.eval("line0 = Error().lineNumber;"); + g.eval("" + function h() { + for (var i = 0; i < 100; i++) + interruptIf(i == 95); + debugger; + return i; + }); + + setInterruptCallback(function () { return true; }); + + return [g, dbg]; +} + +function testInterrupt(toggleSeq) { + var [g, dbg] = newGlobalDebuggerPair(toggleSeq); + + setInterruptCallback(function () { + toggleSeq(dbg, g); + return true; + }); + + assertEq(g.f(), 100); +} + +function testPrologue(toggleSeq) { + var [g, dbg] = newGlobalDebuggerPair(toggleSeq); + + dbg.onEnterFrame = function (f) { + if (f.callee && f.callee.name == "h") + toggleSeq(dbg, g); + }; + + assertEq(g.f(), 100); +} + +function testEpilogue(toggleSeq) { + var [g, dbg] = newGlobalDebuggerPair(toggleSeq); + + dbg.onEnterFrame = function (f) { + if (f.callee && f.callee.name == "h") { + f.onPop = function () { + toggleSeq(dbg, g); + }; + } + }; + + assertEq(g.f(), 100); +} + +function testTrap(toggleSeq) { + var [g, dbg] = newGlobalDebuggerPair(toggleSeq); + + dbg.onEnterFrame = function (f) { + if (f.callee && f.callee.name == "h") { + var offs = f.script.getLineOffsets(g.line0 + 2); + assertEq(offs.length > 0, true); + f.script.setBreakpoint(offs[0], { hit: function () { + toggleSeq(dbg, g); + }}); + } + }; + + assertEq(g.f(), 100); +} + +function testDebugger(toggleSeq) { + var [g, dbg] = newGlobalDebuggerPair(toggleSeq); + + dbg.onDebuggerStatement = function () { + toggleSeq(dbg, g); + }; + + assertEq(g.f(), 100); +} + +testInterrupt(addRemove); +testInterrupt(removeAdd); + +testPrologue(removeAdd); +testEpilogue(removeAdd); +testTrap(removeAdd); +testDebugger(removeAdd); From e62cd5dd12048192d0cf2393f60b7b685c2889a1 Mon Sep 17 00:00:00 2001 From: Camilo Viecco Date: Mon, 2 Jun 2014 09:04:39 -0700 Subject: [PATCH 29/60] Bug 1015973 - Improve cert error decoding. r=keeler --HG-- extra : rebase_source : e812bc94b7c30727ef3a17fab0dac03633254083 --- .../manager/ssl/src/TransportSecurityInfo.cpp | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/security/manager/ssl/src/TransportSecurityInfo.cpp b/security/manager/ssl/src/TransportSecurityInfo.cpp index efb54c5dd1b..239edc251f4 100644 --- a/security/manager/ssl/src/TransportSecurityInfo.cpp +++ b/security/manager/ssl/src/TransportSecurityInfo.cpp @@ -20,6 +20,7 @@ #include "nsIProgrammingLanguage.h" #include "nsIArray.h" #include "nsComponentManagerUtils.h" +#include "nsReadableUtils.h" #include "nsServiceManagerUtils.h" #include "PSMRunnable.h" @@ -624,12 +625,21 @@ GetSubjectAltNames(CERTCertificate *nssCert, nsAutoString name; switch (current->type) { case certDNSName: - name.AssignASCII((char*)current->name.other.data, current->name.other.len); - if (!allNames.IsEmpty()) { - allNames.AppendLiteral(", "); + { + nsDependentCSubstring nameFromCert(reinterpret_cast + (current->name.other.data), + current->name.other.len); + // dNSName fields are defined as type IA5String and thus should + // be limited to ASCII characters. + if (IsASCII(nameFromCert)) { + name.Assign(NS_ConvertASCIItoUTF16(nameFromCert)); + if (!allNames.IsEmpty()) { + allNames.AppendLiteral(", "); + } + ++nameCount; + allNames.Append(name); + } } - ++nameCount; - allNames.Append(name); break; case certIPAddress: @@ -709,8 +719,15 @@ AppendErrorTextMismatch(const nsString &host, if (!useSAN) { char *certName = CERT_GetCommonName(&nssCert->subject); if (certName) { - ++nameCount; - allNames.Assign(NS_ConvertUTF8toUTF16(certName)); + nsDependentCSubstring commonName(certName, strlen(certName)); + if (IsUTF8(commonName)) { + // Bug 1024781 + // We should actually check that the common name is a valid dns name or + // ip address and not any string value before adding it to the display + // list. + ++nameCount; + allNames.Assign(NS_ConvertUTF8toUTF16(commonName)); + } PORT_Free(certName); } } From 22cbe6c2240c919ea6df3a0dff256f56b6065264 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 05:25:51 -0700 Subject: [PATCH 30/60] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/f9b9169b6d58 Author: Jan Jongboom Desc: Merge pull request #20499 from comoyo/bug970119 Bug 970119 - Do not autopunctuate after a newline. r=RudyL ======== https://hg.mozilla.org/integration/gaia-central/rev/f6782878cda1 Author: Jan Jongboom Desc: Bug 970119 - Do not autopunctuate after a newline --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 65f853aacd6..df196d6a3e5 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "507ca54e4c4da9d3e1b1af92d7a306a71875d066", + "revision": "f9b9169b6d58d56afeb60584eba0d871e70131e2", "repo_path": "/integration/gaia-central" } From b39bcd4174e152b422c585a86886232e76808dac Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 05:31:11 -0700 Subject: [PATCH 31/60] Bumping manifests a=b2g-bump --- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index dd4c2c33657..39c039b875d 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 7480ab7c163..1233c55877d 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 9e563bed78c..f3cd1cdfef9 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index dd4c2c33657..39c039b875d 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 4ab4da37cd6..b9c8c71e817 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 5741f97e24c..78a9e4eaf0b 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 876046062fb..851e3d16a57 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 09d3dff36c3..b2d88b6f2bb 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 918b2c877a2..e1cc98bf575 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From bcaf9333176ed71f15f385c4ead63c309e32e10a Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 05:40:51 -0700 Subject: [PATCH 32/60] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ======== https://hg.mozilla.org/integration/gaia-central/rev/c4522e394d12 Author: Jose M. Cantera Desc: Merge pull request #20605 from jmcanterafonseca/fix_sim_dups_final Bug 1026369 - In import, contacts are duplicated. ======== https://hg.mozilla.org/integration/gaia-central/rev/46e3882cdea1 Author: José Manuel Cantera Desc: Bug 1026369 - In import, contacts are duplicated. --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index df196d6a3e5..7da3a691743 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "f9b9169b6d58d56afeb60584eba0d871e70131e2", + "revision": "c4522e394d1228d0b37c10b1e0e02c8afa912a9d", "repo_path": "/integration/gaia-central" } From 19d531e72d2d1ecab9d6c030a7597dd566159171 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 05:42:23 -0700 Subject: [PATCH 33/60] Bumping manifests a=b2g-bump --- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 4 ++-- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index 39c039b875d..6cef7f608d0 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 1233c55877d..823b18ffce9 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index f3cd1cdfef9..a80f0a12ea8 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 39c039b875d..6cef7f608d0 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index b9c8c71e817..44d26fd747a 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 78a9e4eaf0b..c3f17a2ceac 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + @@ -96,7 +96,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 851e3d16a57..be1233601f6 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index b2d88b6f2bb..c6cbd6e247f 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index e1cc98bf575..fd8158f3233 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From 012314ddc7d0118cd5777942c09b07e566878897 Mon Sep 17 00:00:00 2001 From: Mike Habicher Date: Thu, 19 Jun 2014 09:20:49 -0400 Subject: [PATCH 34/60] Bug 990122 - move prefs used by camera to CameraPreferences, r=ehsan --- dom/camera/CameraPreferences.cpp | 243 ++++++++++++++++++++++++++ dom/camera/CameraPreferences.h | 67 +++++++ dom/camera/GonkCameraHwMgr.cpp | 6 +- dom/camera/GonkCameraManager.cpp | 7 +- dom/camera/TestGonkCameraControl.cpp | 15 +- dom/camera/TestGonkCameraHardware.cpp | 8 +- dom/camera/moz.build | 4 +- layout/build/nsLayoutStatics.cpp | 5 + 8 files changed, 333 insertions(+), 22 deletions(-) create mode 100644 dom/camera/CameraPreferences.cpp create mode 100644 dom/camera/CameraPreferences.h diff --git a/dom/camera/CameraPreferences.cpp b/dom/camera/CameraPreferences.cpp new file mode 100644 index 00000000000..82a6ff98be0 --- /dev/null +++ b/dom/camera/CameraPreferences.cpp @@ -0,0 +1,243 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "CameraPreferences.h" +#include "CameraCommon.h" +#include "mozilla/Monitor.h" +#include "mozilla/StaticPtr.h" +#include "mozilla/Preferences.h" + +using namespace mozilla; + +/* statics */ +static StaticAutoPtr sPrefMonitor; + +StaticAutoPtr CameraPreferences::sPrefTestEnabled; +StaticAutoPtr CameraPreferences::sPrefHardwareTest; +StaticAutoPtr CameraPreferences::sPrefGonkParameters; + +nsresult CameraPreferences::sPrefCameraControlMethodErrorOverride = NS_OK; +nsresult CameraPreferences::sPrefCameraControlAsyncErrorOverride = NS_OK; + +/* static */ +nsresult +CameraPreferences::UpdatePref(const char* aPref, nsresult& aVal) +{ + uint32_t val; + nsresult rv = Preferences::GetUint(aPref, &val); + if (NS_SUCCEEDED(rv)) { + aVal = static_cast(val); + } + return rv; +} + +/* static */ +nsresult +CameraPreferences::UpdatePref(const char* aPref, nsACString& aVal) +{ + nsCString val; + nsresult rv = Preferences::GetCString(aPref, &val); + if (NS_SUCCEEDED(rv)) { + aVal = val; + } + return rv; +} + +/* static */ +CameraPreferences::Pref CameraPreferences::sPrefs[] = { + { + "camera.control.test.enabled", + kPrefValueIsCString, + { &sPrefTestEnabled } + }, + { + "camera.control.test.hardware", + kPrefValueIsCString, + { &sPrefHardwareTest } + }, +#ifdef MOZ_B2G + { + "camera.control.test.hardware.gonk.parameters", + kPrefValueIsCString, + { &sPrefGonkParameters } + }, +#endif + { + "camera.control.test.method.error", + kPrefValueIsNSResult, + { &sPrefCameraControlMethodErrorOverride } + }, + { + "camera.control.test.async.error", + kPrefValueIsNSResult, + { &sPrefCameraControlAsyncErrorOverride } + }, +}; + +/* static */ +uint32_t +CameraPreferences::PrefToIndex(const char* aPref) +{ + for (uint32_t i = 0; i < ArrayLength(sPrefs); ++i) { + if (strcmp(aPref, sPrefs[i].mPref) == 0) { + return i; + } + } + return kPrefNotFound; +} + +/* static */ +void +CameraPreferences::PreferenceChanged(const char* aPref, void* aClosure) +{ + MonitorAutoLock mon(*sPrefMonitor); + + uint32_t i = PrefToIndex(aPref); + if (i == kPrefNotFound) { + DOM_CAMERA_LOGE("Preference '%s' is not tracked by CameraPreferences\n", aPref); + return; + } + + Pref& p = sPrefs[i]; + nsresult rv; + switch (p.mValueType) { + case kPrefValueIsNSResult: + { + nsresult& v = *p.mValue.mAsNsResult; + rv = UpdatePref(aPref, v); + if (NS_SUCCEEDED(rv)) { + DOM_CAMERA_LOGI("Preference '%s' has changed, 0x%x\n", aPref, v); + } + } + break; + + case kPrefValueIsCString: + { + nsCString& v = **p.mValue.mAsCString; + rv = UpdatePref(aPref, v); + if (NS_SUCCEEDED(rv)) { + DOM_CAMERA_LOGI("Preference '%s' has changed, '%s'\n", aPref, v.get()); + } + } + break; + + default: + MOZ_ASSERT_UNREACHABLE("Unhandled preference value type!"); + return; + } + +#ifdef DEBUG + if (NS_FAILED(rv)) { + nsCString msg; + msg.AppendPrintf("Failed to update pref '%s' (0x%x)\n", aPref, rv); + NS_WARNING(msg.get()); + } +#endif +} + +/* static */ +bool +CameraPreferences::Initialize() +{ + DOM_CAMERA_LOGI("Initializing camera preference callbacks\n"); + + nsresult rv; + + sPrefMonitor = new Monitor("CameraPreferences.sPrefMonitor"); + + sPrefTestEnabled = new nsCString(); + sPrefHardwareTest = new nsCString(); + sPrefGonkParameters = new nsCString(); + + for (uint32_t i = 0; i < ArrayLength(sPrefs); ++i) { + rv = Preferences::RegisterCallbackAndCall(CameraPreferences::PreferenceChanged, + sPrefs[i].mPref); + if (NS_WARN_IF(NS_FAILED(rv))) { + return false; + } + } + + DOM_CAMERA_LOGI("Camera preferences initialized\n"); + return true; +} + +/* static */ +void +CameraPreferences::Shutdown() +{ + DOM_CAMERA_LOGI("Shutting down camera preference callbacks\n"); + + for (uint32_t i = 0; i < ArrayLength(sPrefs); ++i) { + Preferences::UnregisterCallback(CameraPreferences::PreferenceChanged, + sPrefs[i].mPref); + } + + sPrefTestEnabled = nullptr; + sPrefHardwareTest = nullptr; + sPrefGonkParameters = nullptr; + sPrefMonitor = nullptr; + + DOM_CAMERA_LOGI("Camera preferences shut down\n"); +} + +/* static */ +bool +CameraPreferences::GetPref(const char* aPref, nsACString& aVal) +{ + MOZ_ASSERT(sPrefMonitor, "sPrefMonitor missing in CameraPreferences::GetPref()"); + MonitorAutoLock mon(*sPrefMonitor); + + uint32_t i = PrefToIndex(aPref); + if (i == kPrefNotFound || i >= ArrayLength(sPrefs)) { + DOM_CAMERA_LOGW("Preference '%s' is not tracked by CameraPreferences\n", aPref); + return false; + } + if (sPrefs[i].mValueType != kPrefValueIsCString) { + DOM_CAMERA_LOGW("Preference '%s' is not a string type\n", aPref); + return false; + } + + StaticAutoPtr* s = sPrefs[i].mValue.mAsCString; + if (!*s) { + DOM_CAMERA_LOGE("Preference '%s' cache is not initialized\n", aPref); + return false; + } + if ((*s)->IsEmpty()) { + DOM_CAMERA_LOGI("Preference '%s' is not set\n", aPref); + return false; + } + + DOM_CAMERA_LOGI("Preference '%s', got '%s'\n", aPref, (*s)->get()); + aVal = **s; + return true; +} + +/* static */ +bool +CameraPreferences::GetPref(const char* aPref, nsresult& aVal) +{ + MOZ_ASSERT(sPrefMonitor, "sPrefMonitor missing in CameraPreferences::GetPref()"); + MonitorAutoLock mon(*sPrefMonitor); + + uint32_t i = PrefToIndex(aPref); + if (i == kPrefNotFound || i >= ArrayLength(sPrefs)) { + DOM_CAMERA_LOGW("Preference '%s' is not tracked by CameraPreferences\n", aPref); + return false; + } + if (sPrefs[i].mValueType != kPrefValueIsNSResult) { + DOM_CAMERA_LOGW("Preference '%s' is not an nsresult type\n", aPref); + return false; + } + + nsresult v = *sPrefs[i].mValue.mAsNsResult; + if (v == NS_OK) { + DOM_CAMERA_LOGI("Preference '%s' is not set\n", aPref); + return false; + } + + DOM_CAMERA_LOGI("Preference '%s', got 0x%x\n", aPref, v); + aVal = v; + return true; +} diff --git a/dom/camera/CameraPreferences.h b/dom/camera/CameraPreferences.h new file mode 100644 index 00000000000..f1a59522ac2 --- /dev/null +++ b/dom/camera/CameraPreferences.h @@ -0,0 +1,67 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef DOM_CAMERA_CAMERAPREFERENCES_H +#define DOM_CAMERA_CAMERAPREFERENCES_H + +#include "nsString.h" + +namespace mozilla { + +template class StaticAutoPtr; + +class CameraPreferences +{ +public: + static bool Initialize(); + static void Shutdown(); + + static bool GetPref(const char* aPref, nsACString& aVal); + static bool GetPref(const char* aPref, nsresult& aVal); + +protected: + static const uint32_t kPrefNotFound = UINT32_MAX; + static uint32_t PrefToIndex(const char* aPref); + + static void PreferenceChanged(const char* aPref, void* aClosure); + static nsresult UpdatePref(const char* aPref, nsresult& aVar); + static nsresult UpdatePref(const char* aPref, nsACString& aVar); + + enum PrefValueType { + kPrefValueIsNSResult, + kPrefValueIsCString + }; + struct Pref { + const char* const mPref; + PrefValueType mValueType; + union { + // The 'mAsVoid' member must be first and is required to allow 'mValue' + // to be initialized with any pointer type, as not all of our platforms + // support the use of designated initializers; in their absence, only + // the first element of a union can be statically initialized, and + // 'void*' lets us stuff any pointer type into it. + void* mAsVoid; + StaticAutoPtr* mAsCString; + nsresult* mAsNsResult; + } mValue; + }; + static Pref sPrefs[]; + + static StaticAutoPtr sPrefTestEnabled; + static StaticAutoPtr sPrefHardwareTest; + static StaticAutoPtr sPrefGonkParameters; + + static nsresult sPrefCameraControlMethodErrorOverride; + static nsresult sPrefCameraControlAsyncErrorOverride; + +private: + // static class only + CameraPreferences(); + ~CameraPreferences(); +}; + +} // namespace mozilla + +#endif // DOM_CAMERA_CAMERAPREFERENCES_H diff --git a/dom/camera/GonkCameraHwMgr.cpp b/dom/camera/GonkCameraHwMgr.cpp index c1eb3dee8fc..96c3628c51a 100644 --- a/dom/camera/GonkCameraHwMgr.cpp +++ b/dom/camera/GonkCameraHwMgr.cpp @@ -23,7 +23,7 @@ #include "base/basictypes.h" #include "nsDebug.h" #include "mozilla/layers/TextureClient.h" -#include "mozilla/Preferences.h" +#include "CameraPreferences.h" #include "mozilla/RefPtr.h" #include "GonkCameraControl.h" #include "GonkNativeWindow.h" @@ -212,8 +212,8 @@ GonkCameraHardware::Connect(mozilla::nsGonkCameraControl* aTarget, uint32_t aCam return nullptr; } - const nsAdoptingCString& test = - mozilla::Preferences::GetCString("camera.control.test.enabled"); + nsCString test; + CameraPreferences::GetPref("camera.control.test.enabled", test); sp cameraHardware; if (test.EqualsASCII("hardware")) { NS_WARNING("Using test Gonk hardware layer"); diff --git a/dom/camera/GonkCameraManager.cpp b/dom/camera/GonkCameraManager.cpp index febb31a888a..41d0b6d7746 100644 --- a/dom/camera/GonkCameraManager.cpp +++ b/dom/camera/GonkCameraManager.cpp @@ -20,7 +20,7 @@ #include "CameraCommon.h" #include "GonkCameraControl.h" -#include "mozilla/Preferences.h" +#include "CameraPreferences.h" #include "TestGonkCameraControl.h" using namespace mozilla; @@ -117,13 +117,12 @@ ICameraControl::GetListOfCameras(nsTArray& aList) return NS_OK; } -static const char* sTestModeEnabled = "camera.control.test.enabled"; - // implementation-specific camera factory already_AddRefed ICameraControl::Create(uint32_t aCameraId) { - const nsAdoptingCString& test = Preferences::GetCString(sTestModeEnabled); + nsCString test; + CameraPreferences::GetPref("camera.control.test.enabled", test); nsRefPtr control; if (test.EqualsASCII("control")) { NS_WARNING("Using test CameraControl layer"); diff --git a/dom/camera/TestGonkCameraControl.cpp b/dom/camera/TestGonkCameraControl.cpp index d78504045a2..67518a23dac 100644 --- a/dom/camera/TestGonkCameraControl.cpp +++ b/dom/camera/TestGonkCameraControl.cpp @@ -15,13 +15,10 @@ */ #include "TestGonkCameraControl.h" -#include "mozilla/Preferences.h" +#include "CameraPreferences.h" using namespace mozilla; -static const char* sMethodErrorOverride = "camera.control.test.method.error"; -static const char* sAsyncErrorOverride = "camera.control.test.async.error"; - TestGonkCameraControl::TestGonkCameraControl(uint32_t aCameraId) : nsGonkCameraControl(aCameraId) { @@ -37,9 +34,8 @@ TestGonkCameraControl::~TestGonkCameraControl() nsresult TestGonkCameraControl::ForceMethodFailWithCodeInternal(const char* aFile, int aLine) { - nsresult rv = - static_cast(Preferences::GetInt(sMethodErrorOverride, - static_cast(NS_OK))); + nsresult rv = NS_OK; + CameraPreferences::GetPref("camera.control.test.method.error", rv); if (NS_FAILED(rv)) { DOM_CAMERA_LOGI("[%s:%d] CameraControl method error override: 0x%x\n", aFile, aLine, rv); @@ -50,9 +46,8 @@ TestGonkCameraControl::ForceMethodFailWithCodeInternal(const char* aFile, int aL nsresult TestGonkCameraControl::ForceAsyncFailWithCodeInternal(const char* aFile, int aLine) { - nsresult rv = - static_cast(Preferences::GetInt(sAsyncErrorOverride, - static_cast(NS_OK))); + nsresult rv = NS_OK; + CameraPreferences::GetPref("camera.control.test.async.error", rv); if (NS_FAILED(rv)) { DOM_CAMERA_LOGI("[%s:%d] CameraControl async error override: 0x%x\n", aFile, aLine, rv); diff --git a/dom/camera/TestGonkCameraHardware.cpp b/dom/camera/TestGonkCameraHardware.cpp index e4f83685151..418388e2247 100644 --- a/dom/camera/TestGonkCameraHardware.cpp +++ b/dom/camera/TestGonkCameraHardware.cpp @@ -16,7 +16,7 @@ #include "TestGonkCameraHardware.h" -#include "mozilla/Preferences.h" +#include "CameraPreferences.h" #include "nsThreadUtils.h" using namespace android; @@ -52,7 +52,8 @@ TestGonkCameraHardware::Init() const nsCString TestGonkCameraHardware::TestCase() { - const nsCString test = Preferences::GetCString("camera.control.test.hardware"); + nsCString test; + CameraPreferences::GetPref("camera.control.test.hardware", test); return test; } @@ -77,7 +78,8 @@ TestGonkCameraHardware::GetExtraParameters() * may contain equals signs or semicolons. We don't enforce that here * so that we can also test correct handling of improperly-formatted values. */ - const nsCString parameters = Preferences::GetCString("camera.control.test.hardware.gonk.parameters"); + nsCString parameters; + CameraPreferences::GetPref("camera.control.test.hardware.gonk.parameters", parameters); DOM_CAMERA_LOGA("TestGonkCameraHardware : extra-parameters '%s'\n", parameters.get()); return parameters; diff --git a/dom/camera/moz.build b/dom/camera/moz.build index 6acf7ded68c..148aa5d8d1d 100644 --- a/dom/camera/moz.build +++ b/dom/camera/moz.build @@ -9,13 +9,13 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk': EXPORTS += [ 'CameraCommon.h', - 'CameraPreviewMediaStream.h', + 'CameraPreferences.h', 'DOMCameraManager.h', - 'GonkCameraControl.h', ] SOURCES += [ 'CameraControlImpl.cpp', + 'CameraPreferences.cpp', 'CameraPreviewMediaStream.cpp', 'CameraRecorderProfiles.cpp', 'DOMCameraCapabilities.cpp', diff --git a/layout/build/nsLayoutStatics.cpp b/layout/build/nsLayoutStatics.cpp index 35a3756e817..716f0317035 100644 --- a/layout/build/nsLayoutStatics.cpp +++ b/layout/build/nsLayoutStatics.cpp @@ -132,6 +132,7 @@ using namespace mozilla::system; #include "mozilla/IMEStateManager.h" #include "nsDocument.h" #include "mozilla/dom/HTMLVideoElement.h" +#include "CameraPreferences.h" using namespace mozilla; using namespace mozilla::net; @@ -296,6 +297,8 @@ nsLayoutStatics::Initialize() CounterStyleManager::InitializeBuiltinCounterStyles(); + CameraPreferences::Initialize(); + return NS_OK; } @@ -426,4 +429,6 @@ nsLayoutStatics::Shutdown() nsDocument::XPCOMShutdown(); CacheObserver::Shutdown(); + + CameraPreferences::Shutdown(); } From bd04baab54c24ed680674c5bfd3f05abd9f6ccea Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 06:27:18 -0700 Subject: [PATCH 35/60] Bumping manifests a=b2g-bump --- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index 6cef7f608d0..e06c1b3b61e 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -98,7 +98,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 6cef7f608d0..e06c1b3b61e 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -98,7 +98,7 @@ - + From 39c35ea56c6b16261dd22b624df533811ae92c3a Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 06:52:15 -0700 Subject: [PATCH 36/60] Bumping manifests a=b2g-bump --- b2g/config/hamachi/sources.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index c3f17a2ceac..f043a3c1ded 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -96,7 +96,7 @@ - + From bf91e66eaca9945f0d2eb7376c2d87610f49acc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Jim=C3=A9nez?= Date: Thu, 19 Jun 2014 16:03:54 +0200 Subject: [PATCH 37/60] Bug 1006237 - Unify permissions check in nsIDataStore.checkPermission. r=baku, ehsan --- dom/apps/src/Webapps.jsm | 22 ++++----- dom/base/Navigator.cpp | 20 +-------- dom/datastore/DataStoreChangeNotifier.jsm | 28 +++++++----- dom/datastore/DataStoreImpl.js | 12 +++-- dom/datastore/DataStoreService.cpp | 54 ++++++++++++++++++----- dom/datastore/DataStoreService.h | 3 ++ dom/datastore/nsIDataStoreService.idl | 5 ++- 7 files changed, 89 insertions(+), 55 deletions(-) diff --git a/dom/apps/src/Webapps.jsm b/dom/apps/src/Webapps.jsm index 7ee54052c6f..df0d05f20e7 100755 --- a/dom/apps/src/Webapps.jsm +++ b/dom/apps/src/Webapps.jsm @@ -616,12 +616,13 @@ this.DOMApplicationRegistry = { }.bind(this)).then(null, Cu.reportError); }, - updateDataStore: function(aId, aOrigin, aManifestURL, aManifest, aAppStatus) { - // Just Certified Apps can use DataStores - let prefName = "dom.testing.datastore_enabled_for_hosted_apps"; - if (aAppStatus != Ci.nsIPrincipal.APP_STATUS_CERTIFIED && - (Services.prefs.getPrefType(prefName) == Services.prefs.PREF_INVALID || - !Services.prefs.getBoolPref(prefName))) { + updateDataStore: function(aId, aOrigin, aManifestURL, aManifest) { + let uri = Services.io.newURI(aOrigin, null, null); + let secMan = Cc["@mozilla.org/scriptsecuritymanager;1"] + .getService(Ci.nsIScriptSecurityManager); + let principal = secMan.getAppCodebasePrincipal(uri, aId, + /*mozbrowser*/ false); + if (!dataStoreService.checkPermission(principal)) { return; } @@ -1543,7 +1544,7 @@ this.DOMApplicationRegistry = { true); } this.updateDataStore(this.webapps[id].localId, app.origin, - app.manifestURL, newManifest, app.appStatus); + app.manifestURL, newManifest); this.broadcastMessage("Webapps:UpdateState", { app: app, manifest: newManifest, @@ -1961,7 +1962,7 @@ this.DOMApplicationRegistry = { } this.updateDataStore(this.webapps[aId].localId, aApp.origin, - aApp.manifestURL, aApp.manifest, aApp.appStatus); + aApp.manifestURL, aApp.manifest); aApp.name = manifest.name; aApp.csp = manifest.csp || ""; @@ -2494,8 +2495,7 @@ this.DOMApplicationRegistry = { } this.updateDataStore(this.webapps[id].localId, this.webapps[id].origin, - this.webapps[id].manifestURL, jsonManifest, - this.webapps[id].appStatus); + this.webapps[id].manifestURL, jsonManifest); } for each (let prop in ["installState", "downloadAvailable", "downloading", @@ -2631,7 +2631,7 @@ this.DOMApplicationRegistry = { } this.updateDataStore(this.webapps[aId].localId, aNewApp.origin, - aNewApp.manifestURL, aManifest, aNewApp.appStatus); + aNewApp.manifestURL, aManifest); this.broadcastMessage("Webapps:UpdateState", { app: app, diff --git a/dom/base/Navigator.cpp b/dom/base/Navigator.cpp index b4909e26790..2b262a9bf76 100644 --- a/dom/base/Navigator.cpp +++ b/dom/base/Navigator.cpp @@ -2264,25 +2264,7 @@ Navigator::HasDataStoreSupport(nsIPrincipal* aPrincipal) { workers::AssertIsOnMainThread(); - // First of all, the general pref has to be turned on. - bool enabled = false; - Preferences::GetBool("dom.datastore.enabled", &enabled); - if (!enabled) { - return false; - } - - // Just for testing, we can enable DataStore for any kind of app. - if (Preferences::GetBool("dom.testing.datastore_enabled_for_hosted_apps", false)) { - return true; - } - - uint16_t status; - if (NS_FAILED(aPrincipal->GetAppStatus(&status))) { - return false; - } - - // Only support DataStore API for certified apps for now. - return status == nsIPrincipal::APP_STATUS_CERTIFIED; + return DataStoreService::CheckPermission(aPrincipal); } // A WorkerMainThreadRunnable to synchronously dispatch the call of diff --git a/dom/datastore/DataStoreChangeNotifier.jsm b/dom/datastore/DataStoreChangeNotifier.jsm index ca12fc182e3..64951f3ca43 100644 --- a/dom/datastore/DataStoreChangeNotifier.jsm +++ b/dom/datastore/DataStoreChangeNotifier.jsm @@ -19,6 +19,10 @@ XPCOMUtils.defineLazyServiceGetter(this, "ppmm", "@mozilla.org/parentprocessmessagemanager;1", "nsIMessageBroadcaster"); +XPCOMUtils.defineLazyServiceGetter(this, "dataStoreService", + "@mozilla.org/datastore-service;1", + "nsIDataStoreService"); + this.DataStoreChangeNotifier = { children: [], messages: [ "DataStore:Changed", "DataStore:RegisterForMessages", @@ -65,17 +69,21 @@ this.DataStoreChangeNotifier = { receiveMessage: function(aMessage) { - debug("receiveMessage"); + debug("receiveMessage "); - // No check has to be done when the message is 'child-process-shutdown' - // because at this point the target is already disconnected from - // nsFrameMessageManager, so that assertAppHasStatus will always fail. - let prefName = 'dom.testing.datastore_enabled_for_hosted_apps'; - if (aMessage.name != 'child-process-shutdown' && - (Services.prefs.getPrefType(prefName) == Services.prefs.PREF_INVALID || - !Services.prefs.getBoolPref(prefName)) && - !aMessage.target.assertAppHasStatus(Ci.nsIPrincipal.APP_STATUS_CERTIFIED)) { - return; + // No check has to be done when the message is 'child-process-shutdown'. + if (aMessage.name != "child-process-shutdown") { + if (!("principal" in aMessage)) { + return; + } + let secMan = Cc["@mozilla.org/scriptsecuritymanager;1"] + .getService(Ci.nsIScriptSecurityManager); + let uri = Services.io.newURI(aMessage.principal.origin, null, null); + let principal = secMan.getAppCodebasePrincipal(uri, + aMessage.principal.appId, aMessage.principal.isInBrowserElement); + if (!principal || !dataStoreService.checkPermission(principal)) { + return; + } } switch (aMessage.name) { diff --git a/dom/datastore/DataStoreImpl.js b/dom/datastore/DataStoreImpl.js index 2146918c4a7..559e9a43e67 100644 --- a/dom/datastore/DataStoreImpl.js +++ b/dom/datastore/DataStoreImpl.js @@ -100,7 +100,9 @@ DataStore.prototype = { cpmm.addMessageListener("DataStore:Changed:Return:OK", this); cpmm.sendAsyncMessage("DataStore:RegisterForMessages", { store: this._name, owner: this._owner, - innerWindowID: this._innerWindowID }); + innerWindowID: this._innerWindowID }, + null, + this._window.document.nodePrincipal); }, observe: function(aSubject, aTopic, aData) { @@ -110,7 +112,9 @@ DataStore.prototype = { cpmm.removeMessageListener("DataStore:Changed:Return:OK", this); cpmm.sendAsyncMessage("DataStore:UnregisterForMessages", - { innerWindowID: this._innerWindowID }); + { innerWindowID: this._innerWindowID }, + null, + this._window.document.nodePrincipal); this._shuttingdown = true; this._db.close(); } @@ -336,7 +340,9 @@ DataStore.prototype = { cpmm.sendAsyncMessage("DataStore:Changed", { store: this.name, owner: this._owner, message: { revisionId: aRevisionId, id: aId, - operation: aOperation, owner: this._owner } } ); + operation: aOperation, owner: this._owner } }, + null, + this._window.document.nodePrincipal); }, receiveMessage: function(aMessage) { diff --git a/dom/datastore/DataStoreService.cpp b/dom/datastore/DataStoreService.cpp index 97d06f3c125..9ce80ba9299 100644 --- a/dom/datastore/DataStoreService.cpp +++ b/dom/datastore/DataStoreService.cpp @@ -899,7 +899,7 @@ DataStoreService::GetDataStores(nsIDOMWindow* aWindow, return NS_OK; } - rv = GetDataStoreInfos(aName, appId, stores); + rv = GetDataStoreInfos(aName, appId, principal, stores); if (NS_FAILED(rv)) { RejectPromise(window, promise, rv); promise.forget(aDataStores); @@ -1039,6 +1039,7 @@ DataStoreService::GetDataStoresResolve(nsPIDOMWindow* aWindow, nsresult DataStoreService::GetDataStoreInfos(const nsAString& aName, uint32_t aAppId, + nsIPrincipal* aPrincipal, nsTArray& aStores) { AssertIsInMainProcess(); @@ -1060,15 +1061,7 @@ DataStoreService::GetDataStoreInfos(const nsAString& aName, return NS_ERROR_DOM_SECURITY_ERR; } - uint16_t status; - rv = app->GetAppStatus(&status); - if (NS_WARN_IF(NS_FAILED(rv))) { - return rv; - } - - if (status != nsIPrincipal::APP_STATUS_CERTIFIED && - !Preferences::GetBool("dom.testing.datastore_enabled_for_hosted_apps", - false)) { + if (!DataStoreService::CheckPermission(aPrincipal)) { return NS_ERROR_DOM_SECURITY_ERR; } @@ -1091,6 +1084,45 @@ DataStoreService::GetDataStoreInfos(const nsAString& aName, return NS_OK; } +bool +DataStoreService::CheckPermission(nsIPrincipal* aPrincipal) +{ + // First of all, the general pref has to be turned on. + bool enabled = false; + Preferences::GetBool("dom.datastore.enabled", &enabled); + if (!enabled) { + return false; + } + + // Just for testing, we can enable DataStore for any kind of app. + if (Preferences::GetBool("dom.testing.datastore_enabled_for_hosted_apps", false)) { + return true; + } + + if (!aPrincipal) { + return false; + } + + uint16_t status; + if (NS_FAILED(aPrincipal->GetAppStatus(&status))) { + return false; + } + + // Only support DataStore API for certified apps for now. + return status == nsIPrincipal::APP_STATUS_CERTIFIED; +} + +NS_IMETHODIMP +DataStoreService::CheckPermission(nsIPrincipal* aPrincipal, + bool* aResult) +{ + MOZ_ASSERT(NS_IsMainThread()); + + *aResult = DataStoreService::CheckPermission(aPrincipal); + + return NS_OK; +} + // This method is called when an app with DataStores is deleted. void DataStoreService::DeleteDataStores(uint32_t aAppId) @@ -1307,7 +1339,7 @@ DataStoreService::GetDataStoresFromIPC(const nsAString& aName, } nsTArray stores; - rv = GetDataStoreInfos(aName, appId, stores); + rv = GetDataStoreInfos(aName, appId, aPrincipal, stores); if (NS_WARN_IF(NS_FAILED(rv))) { return rv; } diff --git a/dom/datastore/DataStoreService.h b/dom/datastore/DataStoreService.h index 73210ff1d7b..bde18e54e32 100644 --- a/dom/datastore/DataStoreService.h +++ b/dom/datastore/DataStoreService.h @@ -48,6 +48,8 @@ public: static void Shutdown(); + static bool CheckPermission(nsIPrincipal* principal); + nsresult GenerateUUID(nsAString& aID); nsresult GetDataStoresFromIPC(const nsAString& aName, @@ -82,6 +84,7 @@ private: const nsTArray& aStores); nsresult GetDataStoreInfos(const nsAString& aName, uint32_t aAppId, + nsIPrincipal* aPrincipal, nsTArray& aStores); void DeleteDataStores(uint32_t aAppId); diff --git a/dom/datastore/nsIDataStoreService.idl b/dom/datastore/nsIDataStoreService.idl index 1157164f380..90f3090d2f2 100644 --- a/dom/datastore/nsIDataStoreService.idl +++ b/dom/datastore/nsIDataStoreService.idl @@ -6,8 +6,9 @@ #include "nsISupports.idl" interface nsIDOMWindow; +interface nsIPrincipal; -[scriptable, uuid(0a050c4f-d292-4a14-8712-09bc1019840a)] +[scriptable, uuid(43a731b9-0b5d-400a-8711-8c912c3c3572)] interface nsIDataStoreService : nsISupports { void installDataStore(in unsigned long appId, @@ -24,4 +25,6 @@ interface nsIDataStoreService : nsISupports nsISupports getDataStores(in nsIDOMWindow window, in DOMString name); + + boolean checkPermission(in nsIPrincipal principal); }; From 59b422f9471edbaf8066a6d7c0ef152a9a9d3ad0 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 07:42:14 -0700 Subject: [PATCH 38/60] Bumping manifests a=b2g-bump --- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index e06c1b3b61e..63a16472959 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -25,7 +25,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 823b18ffce9..7f2f9edbaf4 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -20,7 +20,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index a80f0a12ea8..1a87fd79390 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -23,7 +23,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index e06c1b3b61e..63a16472959 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -25,7 +25,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 44d26fd747a..f9dec2df6ec 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -20,7 +20,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index f043a3c1ded..f2a28b0afcc 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -22,7 +22,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index c6cbd6e247f..d223aede95a 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -20,7 +20,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index fd8158f3233..d388c1d2746 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -22,7 +22,7 @@ - + From bc04e4862f55073cda69daeb041f23a39670f0b3 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 08:45:55 -0700 Subject: [PATCH 39/60] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/97e61fd58989 Author: Guillaume C. Marty Desc: Merge pull request #20619 from gmarty/Bug-1007948-no-multiple-calls Bug 1007948 - [SIM PIN] Error message disappears when receiving iccinfochange ======== https://hg.mozilla.org/integration/gaia-central/rev/9d58ba36a2f5 Author: Guillaume Marty Desc: Bug 1007948 - [SIM PIN] Error message disappears when receiving iccinfochange --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 7da3a691743..ada9e57f7d5 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "c4522e394d1228d0b37c10b1e0e02c8afa912a9d", + "revision": "97e61fd5898975f48162ac5a00dfdca745b354dd", "repo_path": "/integration/gaia-central" } From 462a2e219ffcf4155a2041f92f91689378bcada9 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 08:51:36 -0700 Subject: [PATCH 40/60] Bumping manifests a=b2g-bump --- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index 63a16472959..ea703a7ed8f 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 7f2f9edbaf4..f6bf3910805 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 1a87fd79390..417bdeb8850 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 63a16472959..ea703a7ed8f 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index f9dec2df6ec..1705d45ab0c 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index f2a28b0afcc..8d1089154be 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index be1233601f6..eb2416182a7 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index d223aede95a..a76a8e2b0f2 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index d388c1d2746..17c4aeb3407 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From 969943adf130ebbdae53da5d11404b075176e1f6 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 09:10:53 -0700 Subject: [PATCH 41/60] Bumping gaia.json for 3 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/a5c2e2bdbd7f Author: Dale Harvey Desc: Bug 1026269 - Encode search terms when constructing url. r=kgrandon ======== https://hg.mozilla.org/integration/gaia-central/rev/3cc54a218f60 Author: Timothy Guan-tin Chien Desc: Merge pull request #20728 from timdream/keyboard-update-l10nid Bug 1025633 - Update l10n ID of keyboard aria labels, r=rudyl ======== https://hg.mozilla.org/integration/gaia-central/rev/b464e37056cf Author: Timothy Guan-tin Chien Desc: Bug 1025633 - Update l10n ID of keyboard aria labels --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index ada9e57f7d5..7b89c382248 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "97e61fd5898975f48162ac5a00dfdca745b354dd", + "revision": "a5c2e2bdbd7f60637b74b862567eb298aaf80fb1", "repo_path": "/integration/gaia-central" } From de5fae5d5c522fd459b8778109459b2083b06df5 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 09:16:21 -0700 Subject: [PATCH 42/60] Bumping manifests a=b2g-bump --- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index ea703a7ed8f..1e73a3740f8 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index f6bf3910805..9796a88ba4c 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 417bdeb8850..70794fc441f 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index ea703a7ed8f..1e73a3740f8 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 1705d45ab0c..5d04e141669 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 8d1089154be..3c07cb5e5fb 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index eb2416182a7..1c3d4a3f63d 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index a76a8e2b0f2..109b4245b97 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 17c4aeb3407..953ef5c522d 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From 21480a41e5be1ef65caf0bb94ce73ae292da02dc Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 09:26:17 -0700 Subject: [PATCH 43/60] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/e3766b290f72 Author: Kevin Grandon Desc: Merge pull request #20729 from KevinGrandon/bug_1022985_collections_insertion_2 Bug 1026273 - [Vertical Homescreen] Smart collections are sometimes added in a random order ======== https://hg.mozilla.org/integration/gaia-central/rev/ff4439efa88a Author: Kevin Grandon Desc: Bug 1026273 - [Vertical Homescreen] Smart collections are sometimes added in a random order --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 7b89c382248..1f9a09fdbaf 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "a5c2e2bdbd7f60637b74b862567eb298aaf80fb1", + "revision": "e3766b290f7225a052a1b6c4894409148cdeca99", "repo_path": "/integration/gaia-central" } From c807f4edc7c7499cbeaf049128e2ee5d82618d04 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 09:36:30 -0700 Subject: [PATCH 44/60] Bumping manifests a=b2g-bump --- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index 1e73a3740f8..1dcd0844bfa 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 9796a88ba4c..cd006aa0427 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 70794fc441f..3b11439143e 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 1e73a3740f8..1dcd0844bfa 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 5d04e141669..4bdf7f80634 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 3c07cb5e5fb..936785f7f90 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 1c3d4a3f63d..797a46705eb 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 109b4245b97..639817f149e 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 953ef5c522d..db691f17a88 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From e39346c9d2172bbffa8b4debd18dda77e52d49be Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 09:40:40 -0700 Subject: [PATCH 45/60] Bumping gaia.json for 1 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/70117d0593f9 Author: Ed Morley Desc: Revert "Bug 1012663 - [SMS] Remove inline style for CSP compliance. r=julienw" for intermittent failures in sms/test/unit/attachment_test.js This reverts commit 1bce57578f6f7bf0a0f5d0c5129a1f4eda06ecc4. --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 1f9a09fdbaf..0e94dc9c8ad 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "e3766b290f7225a052a1b6c4894409148cdeca99", + "revision": "70117d0593f94bc7001851447d47991ca0c612e9", "repo_path": "/integration/gaia-central" } From 6d368d3a149e951c1adb38a7fb972f0441773973 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 09:46:36 -0700 Subject: [PATCH 46/60] Bumping manifests a=b2g-bump --- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index 1dcd0844bfa..3a2013289b8 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index cd006aa0427..3f0f4f838b9 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 3b11439143e..60a66fb760b 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 1dcd0844bfa..3a2013289b8 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 4bdf7f80634..825ce00c17b 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 936785f7f90..b4f75bc1955 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 797a46705eb..bfcff231652 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 639817f149e..a70a587c244 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index db691f17a88..657ebd7769f 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From 480358e88196d68d37da90bca4d7c0140f2b054e Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 10:22:14 -0700 Subject: [PATCH 47/60] Bumping manifests a=b2g-bump --- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index 3a2013289b8..991f958095f 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -25,7 +25,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 3f0f4f838b9..87b69a9bebf 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -20,7 +20,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 60a66fb760b..c7b759942fe 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -23,7 +23,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 3a2013289b8..991f958095f 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -25,7 +25,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 825ce00c17b..504fed1d513 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -20,7 +20,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index b4f75bc1955..5e776ae48cf 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -22,7 +22,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index a70a587c244..cbe2a9a2d09 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -20,7 +20,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 657ebd7769f..3431ba76607 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -22,7 +22,7 @@ - + From a86cfe9a2585a1a1b10c1d4fcfcb637e67c32958 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 11:05:47 -0700 Subject: [PATCH 48/60] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/a71c15ee6e62 Author: Kevin Grandon Desc: Merge pull request #20706 from KevinGrandon/bug_1016226_collection_update Bug 1016226 - [Vertical] Homescreen Icon should update when Collection's data changes ======== https://hg.mozilla.org/integration/gaia-central/rev/e6f14387acfe Author: Kevin Grandon Desc: Bug 1016226 - [Vertical] Homescreen Icon should update when Collection's data changes r=ranbena --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 0e94dc9c8ad..0f1153be0b0 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "70117d0593f94bc7001851447d47991ca0c612e9", + "revision": "a71c15ee6e62ebc00343265f10b0dee86dfc495d", "repo_path": "/integration/gaia-central" } From 1a03c3fb87ef6f3a1ed2d3d91df0091b53847aad Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 11:11:36 -0700 Subject: [PATCH 49/60] Bumping manifests a=b2g-bump --- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index 991f958095f..ed073383934 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 87b69a9bebf..1306e4dd946 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index c7b759942fe..0f38af8bb83 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 991f958095f..ed073383934 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 504fed1d513..ac9ee26c391 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 5e776ae48cf..a2bd084918c 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index bfcff231652..b977bcf5412 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index cbe2a9a2d09..b3141dfecf1 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 3431ba76607..1ac46edc2b2 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From 8350fae238b9e7d4e385a9f8fe58742805dba2cb Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 11:35:56 -0700 Subject: [PATCH 50/60] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/25c65e3bdbfb Author: James Burke Desc: Merge pull request #20727 from jrburke/bug1027185-email-certified Bug 1027185 - [email] switch manifest type back to certified r=mcav ======== https://hg.mozilla.org/integration/gaia-central/rev/c27d7cf45074 Author: jrburke Desc: Bug 1027185 - [email] switch manifest type back to certified --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 0f1153be0b0..fcba04c79c5 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "a71c15ee6e62ebc00343265f10b0dee86dfc495d", + "revision": "25c65e3bdbfbd89726f0cc7b9b9ec02a84092fc9", "repo_path": "/integration/gaia-central" } From 8a9b345ae3e1ff2b4d67da28a6d29cf2a09c9a23 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 11:41:14 -0700 Subject: [PATCH 51/60] Bumping manifests a=b2g-bump --- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index ed073383934..66062e30dad 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 1306e4dd946..ba226b919aa 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 0f38af8bb83..95ff596ce66 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index ed073383934..66062e30dad 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index ac9ee26c391..21d439d0bf8 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index a2bd084918c..3a66cb44d7b 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index b977bcf5412..55111a8b1bc 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index b3141dfecf1..9501d975d97 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 1ac46edc2b2..2b83a179381 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From 221b1892caeb8e4ee0cf3a87213eec58e71d2673 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 11:50:54 -0700 Subject: [PATCH 52/60] Bumping gaia.json for 3 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/7064f54c5631 Author: Kevin Grandon Desc: Merge pull request #20703 from KevinGrandon/bug_1020158_collections_iac_retry Retry: Bug 1020158 - Send IAC message to start the population process ======== https://hg.mozilla.org/integration/gaia-central/rev/ffd672941b06 Author: Kevin Grandon Desc: Bug 1027708 - Disable test_cleanup_gaia for mac r=me ======== https://hg.mozilla.org/integration/gaia-central/rev/b5d950b2db23 Author: Carmen Jimenez Cabezas Desc: Bug 1020158 - Send IAC message to start the population process --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index fcba04c79c5..ca86c7c3b3b 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "25c65e3bdbfbd89726f0cc7b9b9ec02a84092fc9", + "revision": "7064f54c5631635bc6340e7115c7491b534a9488", "repo_path": "/integration/gaia-central" } From 0eec5ca1f010dc7d83c3e4282272d1f93c92f5bb Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 11:56:14 -0700 Subject: [PATCH 53/60] Bumping manifests a=b2g-bump --- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index 66062e30dad..1d7ff924aec 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index ba226b919aa..548699fede9 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 95ff596ce66..e194844c597 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 66062e30dad..1d7ff924aec 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 21d439d0bf8..9322898c419 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 3a66cb44d7b..dd00ad6fae3 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 55111a8b1bc..0fef5bc50ea 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 9501d975d97..a6ff8bfb3c8 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 2b83a179381..94f6ab1f5f7 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From 68ea87437b0e4626158b52d5983f8dc0d31a538d Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 12:00:39 -0700 Subject: [PATCH 54/60] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/bb7c89814cf0 Author: Miller Medeiros Desc: Merge pull request #20717 from millermedeiros/1023784-offline-calendar-master Bug 1023784 - [7715][calendar] create/modify/view event L10n r=gaye ======== https://hg.mozilla.org/integration/gaia-central/rev/659422fec336 Author: Miller Medeiros Desc: Bug 1023784 - [7715][calendar] create/modify/view event L10n --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index ca86c7c3b3b..d29d4caa854 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "7064f54c5631635bc6340e7115c7491b534a9488", + "revision": "bb7c89814cf024d61b030e8c7302c74be02e097c", "repo_path": "/integration/gaia-central" } From 5aca32a2a99fd33f000256b0ec55db8df20710ba Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 12:06:33 -0700 Subject: [PATCH 55/60] Bumping manifests a=b2g-bump --- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index 1d7ff924aec..fb2fb0d1002 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 548699fede9..70b24545751 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index e194844c597..bec2d950ae2 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 1d7ff924aec..fb2fb0d1002 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 9322898c419..f736e68eff3 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index dd00ad6fae3..63ad33e38c2 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 0fef5bc50ea..ca7e775b717 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index a6ff8bfb3c8..fd7e76323e0 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 94f6ab1f5f7..9b126f902b7 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From 4eaaea73831491733775d5a767b54dbfc06b7e25 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 12:30:42 -0700 Subject: [PATCH 56/60] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/207ea09faee3 Author: Miller Medeiros Desc: Merge pull request #20641 from millermedeiros/1023777-account-warning Bug 1023777 - [B2G][Calendar] Account warning icon is bigger than it should r=gaye ======== https://hg.mozilla.org/integration/gaia-central/rev/745db4eb1bc3 Author: Miller Medeiros Desc: Bug 1023777 - [B2G][Calendar] Account warning icon is bigger than it should --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index d29d4caa854..c65c0bd7d96 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "bb7c89814cf024d61b030e8c7302c74be02e097c", + "revision": "207ea09faee39da936f13a4cf74c7fa879ac1137", "repo_path": "/integration/gaia-central" } From fe39bca08dd038342efa33799eb18e9c84fbc148 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 12:32:18 -0700 Subject: [PATCH 57/60] Bumping manifests a=b2g-bump --- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index fb2fb0d1002..9ecdd05281f 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 70b24545751..73dd285a0f2 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index bec2d950ae2..cd362700b4d 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index fb2fb0d1002..9ecdd05281f 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index f736e68eff3..c0968630527 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 63ad33e38c2..587a29cf918 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index ca7e775b717..41e26c193b2 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index fd7e76323e0..4c5e6ba35ee 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 9b126f902b7..47b807ded14 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From 6ee92a9fdc2c6e7c113116f76cdff361078baa64 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 13:00:50 -0700 Subject: [PATCH 58/60] Bumping gaia.json for 4 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/dcb55fbcaa9b Author: Jim Porter Desc: Merge pull request #20642 from jimporter/ringtones-manage-activity Bug 1024779 - [ringtones] edge gestures doesn't work ======== https://hg.mozilla.org/integration/gaia-central/rev/6360719e181d Author: Jim Porter Desc: Bug 1024779 - [ringtones] edge gestures doesn't work ======== https://hg.mozilla.org/integration/gaia-central/rev/5e2194fbe2c1 Author: Jared Hirsch Desc: Merge pull request #20762 from 6a68/bug-1027487-fmd-server-update Bug 1027487 - Point FMD Client to New Stage Server URLs ======== https://hg.mozilla.org/integration/gaia-central/rev/e832d6a01c32 Author: Jared Hirsch Desc: Bug 1027487 - Point FMD Client to New Stage Server URLs --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index c65c0bd7d96..4774f42e120 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "207ea09faee39da936f13a4cf74c7fa879ac1137", + "revision": "dcb55fbcaa9bd33e662a2c5e99cdb7e4c9d7ad51", "repo_path": "/integration/gaia-central" } From e48646ab95eaa15027dd2f2a74e631da59b67ab0 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Thu, 19 Jun 2014 13:06:42 -0700 Subject: [PATCH 59/60] Bumping manifests a=b2g-bump --- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index 9ecdd05281f..4c2cf763010 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 73dd285a0f2..914132b0b33 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index cd362700b4d..e61252f6282 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 9ecdd05281f..4c2cf763010 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index c0968630527..5717f5ae524 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 587a29cf918..2ee362613f1 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 41e26c193b2..ca27d7b4c99 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 4c5e6ba35ee..a37e3df00c1 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 47b807ded14..01573d38059 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From e99f6cd57dcd93ddf9e1d0cd204e79cc764a0e22 Mon Sep 17 00:00:00 2001 From: Benoit Girard Date: Thu, 19 Jun 2014 16:14:46 -0400 Subject: [PATCH 60/60] Bug 1027794 - Don't copy the visible region when rendering. r=bjacob --- gfx/layers/composite/ThebesLayerComposite.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gfx/layers/composite/ThebesLayerComposite.cpp b/gfx/layers/composite/ThebesLayerComposite.cpp index 896d4aa38fa..a5aa6d3bb0a 100644 --- a/gfx/layers/composite/ThebesLayerComposite.cpp +++ b/gfx/layers/composite/ThebesLayerComposite.cpp @@ -133,7 +133,7 @@ ThebesLayerComposite::RenderLayer(const nsIntRect& aClipRect) LayerManagerComposite::AutoAddMaskEffect autoMaskEffect(mMaskLayer, effectChain); AddBlendModeEffect(effectChain); - nsIntRegion visibleRegion = GetEffectiveVisibleRegion(); + const nsIntRegion& visibleRegion = GetEffectiveVisibleRegion(); TiledLayerProperties tiledLayerProps; if (mRequiresTiledProperties) {

#DXD)ED^lRmZ*JZeuH%xrLT_?>2H8 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