Merge inbound to mozilla-central a=merge

This commit is contained in:
arthur.iakab 2018-12-25 11:51:08 +02:00
commit da45a6b1c5
16 changed files with 193 additions and 36 deletions

View File

@ -60,7 +60,7 @@ skip-if = (debug && os == 'linux' && bits == 32) || (os == 'win' && !debug) # Bu
[browser_ext_browserAction_popup_preload.js]
skip-if = (os == 'win' && !debug) || (verify && debug && (os == 'mac')) # bug 1352668
[browser_ext_browserAction_popup_resize.js]
skip-if = (os == 'mac' && debug) # Bug 1482004, also fails in test-verify
skip-if = (os == 'mac' || os == 'win' || os == 'linux') || (verify && debug) #Bug 1482004,1483701
[browser_ext_browserAction_simple.js]
[browser_ext_browserAction_telemetry.js]
[browser_ext_browserAction_theme_icons.js]

View File

@ -592,6 +592,7 @@ support-files =
examples/fetch.js
examples/doc-xhr.html
examples/doc-xhr-run-to-completion.html
examples/doc-scroll-run-to-completion.html
examples/sum/sum.js
examples/sum/sum.min.js
examples/sum/sum.min.js.map
@ -650,6 +651,8 @@ support-files =
examples/script-switching-02.js
examples/script-switching-01.js
examples/times2.js
examples/doc-windowless-workers.html
examples/simple-worker.js
examples/doc_rr_basic.html
examples/doc_rr_continuous.html
examples/doc_rr_logs.html
@ -662,6 +665,7 @@ support-files =
skip-if = (os == "win" && ccov) # Bug 1453549
[browser_dbg-xhr-breakpoints.js]
[browser_dbg-xhr-run-to-completion.js]
[browser_dbg-scroll-run-to-completion.js]
[browser_dbg-sourcemapped-scopes.js]
skip-if = ccov || (verify && debug && (os == 'linux')) # Bug 1441545
[browser_dbg-sourcemapped-stepping.js]
@ -762,6 +766,7 @@ skip-if = os == "win"
skip-if = os == "win"
[browser_dbg-wasm-sourcemaps.js]
skip-if = true
[browser_dbg-windowless-workers.js]
[browser_dbg_rr_breakpoints-01.js]
skip-if = os != "mac" || debug || !nightly_build
[browser_dbg_rr_breakpoints-02.js]

View File

@ -0,0 +1,19 @@
/* 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/>. */
add_task(async function() {
const dbg = await initDebugger("doc-scroll-run-to-completion.html");
invokeInTab("pauseOnce", "doc-scroll-run-to-completion.html");
await waitForPaused(dbg);
assertPausedLocation(dbg);
const threadClient = dbg.toolbox.threadClient;
await checkEvaluateInTopFrame(threadClient, 'window.scrollBy(0, 10);', undefined);
// checkEvaluateInTopFrame does an implicit resume for some reason.
await waitForPaused(dbg);
resume(dbg);
await once(Services.ppmm, "test passed");
});

View File

@ -0,0 +1,45 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
// Test basic windowless worker functionality: the main thread and worker can be
// separately controlled from the same debugger.
add_task(async function() {
await pushPref("devtools.debugger.features.windowless-workers", true);
const dbg = await initDebugger("doc-windowless-workers.html");
const mainThread = dbg.toolbox.threadClient.actor;
const workers = await getWorkers(dbg);
ok(workers.length == 1, "Got one worker");
const workerThread = workers[0].actor;
const mainThreadSource = findSource(dbg, "doc-windowless-workers.html");
const workerSource = findSource(dbg, "simple-worker.js");
assertNotPaused(dbg);
await dbg.actions.breakOnNext();
await waitForPaused(dbg, "doc-windowless-workers.html");
// We should be paused at the timer in doc-windowless-workers.html
assertPausedAtSourceAndLine(dbg, mainThreadSource.id, 9);
await dbg.actions.selectThread(workerThread);
assertNotPaused(dbg);
await dbg.actions.breakOnNext();
await waitForPaused(dbg, "simple-worker.js");
// We should be paused at the timer in simple-worker.js
assertPausedAtSourceAndLine(dbg, workerSource.id, 3);
await stepOver(dbg);
assertPausedAtSourceAndLine(dbg, workerSource.id, 4);
await dbg.actions.selectThread(mainThread);
await stepOver(dbg);
assertPausedAtSourceAndLine(dbg, mainThreadSource.id, 10);
});

View File

@ -0,0 +1,27 @@
<!-- 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/. -->
<!DOCTYPE html>
<meta charset=UTF-8>
<body></body>
<script>
const cpmm = SpecialPowers.Services.cpmm;
var result;
for (var i = 0; i < 100; i++) {
var div = document.createElement("div");
div.innerHTML = "Hello World!";
document.body.insertBefore(div, document.body.firstChild);
}
async function pauseOnce() {
window.addEventListener('scroll', done);
result = "test failed";
debugger;
result = "test passed";
}
function done() {
cpmm.sendAsyncMessage(result);
}
</script>

View File

@ -0,0 +1,19 @@
<!DOCTYPE HTML>
<html>
<script>
var worker = new Worker("simple-worker.js");
var count = 0;
function timer() {
var n = ++count;
console.log("MAIN THREAD SAYS HELLO! " + n);
}
setInterval(timer, 1000);
</script>
<body>
Hello World!
</body>
</html>

View File

@ -0,0 +1,7 @@
var count = 0;
function timer() {
var n = ++count;
console.log("WORKER SAYS HELLO! " + n);
}
setInterval(timer, 1000);

View File

@ -405,6 +405,34 @@ function isPaused(dbg) {
return !!isPaused(getState());
}
// Make sure the debugger is paused at a certain source ID and line.
function assertPausedAtSourceAndLine(dbg, expectedSourceId, expectedLine) {
assertPaused(dbg);
const {
selectors: { getWorkers, getFrames },
getState
} = dbg;
const frames = getFrames(getState());
ok(frames.length >= 1, "Got at least one frame");
const { sourceId, line } = frames[0].location;
ok(sourceId == expectedSourceId, "Frame has correct source");
ok(line == expectedLine, "Frame has correct line");
}
// Get any workers associated with the debugger.
async function getWorkers(dbg) {
await dbg.actions.updateWorkers();
const {
selectors: { getWorkers },
getState
} = dbg;
return getWorkers(getState()).toJS();
}
async function waitForLoadedScopes(dbg) {
const scopes = await waitForElement(dbg, "scopes");
// Since scopes auto-expand, we can assume they are loaded when there is a tree node

View File

@ -168,7 +168,7 @@ support-files =
skip-if = true # Bug 1437843
[browser_console_consolejsm_output.js]
[browser_console_context_menu_entries.js]
skip-if = (os == "linux" && (debug || ccov)) # Bug 1440059
skip-if = os == "linux" # Bug 1440059, disabled for all build types
[browser_console_dead_objects.js]
[browser_console_devtools_loader_exception.js]
[browser_console_error_source_click.js]

View File

@ -8202,7 +8202,7 @@ bool nsContentUtils::IsThirdPartyWindowOrChannel(nsPIDOMWindowInner* aWindow,
if (aWindow) {
nsresult rv = thirdPartyUtil->IsThirdPartyWindow(aWindow->GetOuterWindow(),
aURI, &thirdParty);
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
// Ideally we would do something similar to the channel code path here,
// but existing code depends on this behaviour.
return false;

View File

@ -536,7 +536,7 @@ skip-if = toolkit == 'android' #bug 811644
[test_bug340017.xhtml]
[test_bug359657.html]
[test_bug369370.html]
skip-if = toolkit == "android" || toolkit == "windows" # disabled on Windows because of bug 1234520
skip-if = toolkit == "android" || toolkit == "windows" || os == 'linux' # disabled on Windows because of bug 1234520, disabled on linux bug 1258103
[test_bug380383.html]
[test_bug402680.html]
[test_bug403868.html]

View File

@ -4,51 +4,52 @@
* 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 "nsSMILFloatType.h"
#include "SMILFloatType.h"
#include "nsSMILValue.h"
#include "nsDebug.h"
#include <math.h>
void nsSMILFloatType::Init(nsSMILValue& aValue) const {
namespace mozilla {
void SMILFloatType::Init(nsSMILValue& aValue) const {
MOZ_ASSERT(aValue.IsNull(), "Unexpected value type");
aValue.mU.mDouble = 0.0;
aValue.mType = this;
}
void nsSMILFloatType::Destroy(nsSMILValue& aValue) const {
void SMILFloatType::Destroy(nsSMILValue& aValue) const {
MOZ_ASSERT(aValue.mType == this, "Unexpected SMIL value");
aValue.mU.mDouble = 0.0;
aValue.mType = nsSMILNullType::Singleton();
}
nsresult nsSMILFloatType::Assign(nsSMILValue& aDest,
const nsSMILValue& aSrc) const {
nsresult SMILFloatType::Assign(nsSMILValue& aDest,
const nsSMILValue& aSrc) const {
MOZ_ASSERT(aDest.mType == aSrc.mType, "Incompatible SMIL types");
MOZ_ASSERT(aDest.mType == this, "Unexpected SMIL value");
aDest.mU.mDouble = aSrc.mU.mDouble;
return NS_OK;
}
bool nsSMILFloatType::IsEqual(const nsSMILValue& aLeft,
const nsSMILValue& aRight) const {
bool SMILFloatType::IsEqual(const nsSMILValue& aLeft,
const nsSMILValue& aRight) const {
MOZ_ASSERT(aLeft.mType == aRight.mType, "Incompatible SMIL types");
MOZ_ASSERT(aLeft.mType == this, "Unexpected type for SMIL value");
return aLeft.mU.mDouble == aRight.mU.mDouble;
}
nsresult nsSMILFloatType::Add(nsSMILValue& aDest,
const nsSMILValue& aValueToAdd,
uint32_t aCount) const {
nsresult SMILFloatType::Add(nsSMILValue& aDest, const nsSMILValue& aValueToAdd,
uint32_t aCount) const {
MOZ_ASSERT(aValueToAdd.mType == aDest.mType, "Trying to add invalid types");
MOZ_ASSERT(aValueToAdd.mType == this, "Unexpected source type");
aDest.mU.mDouble += aValueToAdd.mU.mDouble * aCount;
return NS_OK;
}
nsresult nsSMILFloatType::ComputeDistance(const nsSMILValue& aFrom,
const nsSMILValue& aTo,
double& aDistance) const {
nsresult SMILFloatType::ComputeDistance(const nsSMILValue& aFrom,
const nsSMILValue& aTo,
double& aDistance) const {
MOZ_ASSERT(aFrom.mType == aTo.mType, "Trying to compare different types");
MOZ_ASSERT(aFrom.mType == this, "Unexpected source type");
@ -60,10 +61,10 @@ nsresult nsSMILFloatType::ComputeDistance(const nsSMILValue& aFrom,
return NS_OK;
}
nsresult nsSMILFloatType::Interpolate(const nsSMILValue& aStartVal,
const nsSMILValue& aEndVal,
double aUnitDistance,
nsSMILValue& aResult) const {
nsresult SMILFloatType::Interpolate(const nsSMILValue& aStartVal,
const nsSMILValue& aEndVal,
double aUnitDistance,
nsSMILValue& aResult) const {
MOZ_ASSERT(aStartVal.mType == aEndVal.mType,
"Trying to interpolate different types");
MOZ_ASSERT(aStartVal.mType == this, "Unexpected types for interpolation");
@ -76,3 +77,5 @@ nsresult nsSMILFloatType::Interpolate(const nsSMILValue& aStartVal,
return NS_OK;
}
} // namespace mozilla

View File

@ -10,11 +10,13 @@
#include "mozilla/Attributes.h"
#include "nsISMILType.h"
class nsSMILFloatType : public nsISMILType {
namespace mozilla {
class SMILFloatType : public nsISMILType {
public:
// Singleton for nsSMILValue objects to hold onto.
static nsSMILFloatType* Singleton() {
static nsSMILFloatType sSingleton;
static SMILFloatType* Singleton() {
static SMILFloatType sSingleton;
return &sSingleton;
}
@ -38,7 +40,9 @@ class nsSMILFloatType : public nsISMILType {
private:
// Private constructor: prevent instances beyond my singleton.
constexpr nsSMILFloatType() {}
constexpr SMILFloatType() {}
};
} // namespace mozilla
#endif // NS_SMILFLOATTYPE_H_

View File

@ -44,7 +44,6 @@ UNIFIED_SOURCES += [
'nsSMILCompositor.cpp',
'nsSMILCSSProperty.cpp',
'nsSMILCSSValueType.cpp',
'nsSMILFloatType.cpp',
'nsSMILInstanceTime.cpp',
'nsSMILInterval.cpp',
'nsSMILKeySpline.cpp',
@ -59,6 +58,7 @@ UNIFIED_SOURCES += [
'nsSMILValue.cpp',
'SMILBoolType.cpp',
'SMILEnumType.cpp',
'SMILFloatType.cpp',
'SMILIntegerType.cpp',
'SMILStringType.cpp',
'TimeEvent.cpp',

View File

@ -11,7 +11,7 @@
#include "mozilla/dom/SVGViewportElement.h"
#include "nsContentUtils.h" // NS_ENSURE_FINITE
#include "nsIFrame.h"
#include "nsSMILFloatType.h"
#include "SMILFloatType.h"
#include "nsSMILValue.h"
#include "nsSVGAttrTearoffTable.h"
#include "nsSVGIntegrationUtils.h"
@ -436,7 +436,7 @@ nsresult nsSVGLength2::SMILLength::ValueFromString(
return NS_ERROR_DOM_SYNTAX_ERR;
}
nsSMILValue val(nsSMILFloatType::Singleton());
nsSMILValue val(SMILFloatType::Singleton());
val.mU.mDouble = value * mVal->GetPixelsPerUnit(mSVGElement, unitType);
aValue = val;
aPreventCachingOfSandwich =
@ -448,7 +448,7 @@ nsresult nsSVGLength2::SMILLength::ValueFromString(
}
nsSMILValue nsSVGLength2::SMILLength::GetBaseValue() const {
nsSMILValue val(nsSMILFloatType::Singleton());
nsSMILValue val(SMILFloatType::Singleton());
val.mU.mDouble = mVal->GetBaseValue(mSVGElement);
return val;
}
@ -462,9 +462,9 @@ void nsSVGLength2::SMILLength::ClearAnimValue() {
}
nsresult nsSVGLength2::SMILLength::SetAnimValue(const nsSMILValue& aValue) {
NS_ASSERTION(aValue.mType == nsSMILFloatType::Singleton(),
NS_ASSERTION(aValue.mType == SMILFloatType::Singleton(),
"Unexpected type to assign animated value");
if (aValue.mType == nsSMILFloatType::Singleton()) {
if (aValue.mType == SMILFloatType::Singleton()) {
return mVal->SetAnimValue(float(aValue.mU.mDouble), mSVGElement);
}
return NS_OK;

View File

@ -7,7 +7,7 @@
#include "nsSVGNumber2.h"
#include "mozilla/Attributes.h"
#include "nsContentUtils.h" // NS_ENSURE_FINITE
#include "nsSMILFloatType.h"
#include "SMILFloatType.h"
#include "nsSMILValue.h"
#include "nsSVGAttrTearoffTable.h"
#include "SVGContentUtils.h"
@ -126,7 +126,7 @@ nsresult nsSVGNumber2::SMILNumber::ValueFromString(
return NS_ERROR_DOM_SYNTAX_ERR;
}
nsSMILValue val(nsSMILFloatType::Singleton());
nsSMILValue val(SMILFloatType::Singleton());
val.mU.mDouble = value;
aValue = val;
aPreventCachingOfSandwich = false;
@ -135,7 +135,7 @@ nsresult nsSVGNumber2::SMILNumber::ValueFromString(
}
nsSMILValue nsSVGNumber2::SMILNumber::GetBaseValue() const {
nsSMILValue val(nsSMILFloatType::Singleton());
nsSMILValue val(SMILFloatType::Singleton());
val.mU.mDouble = mVal->mBaseVal;
return val;
}
@ -149,9 +149,9 @@ void nsSVGNumber2::SMILNumber::ClearAnimValue() {
}
nsresult nsSVGNumber2::SMILNumber::SetAnimValue(const nsSMILValue& aValue) {
NS_ASSERTION(aValue.mType == nsSMILFloatType::Singleton(),
NS_ASSERTION(aValue.mType == SMILFloatType::Singleton(),
"Unexpected type to assign animated value");
if (aValue.mType == nsSMILFloatType::Singleton()) {
if (aValue.mType == SMILFloatType::Singleton()) {
mVal->SetAnimValue(float(aValue.mU.mDouble), mSVGElement);
}
return NS_OK;