import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo

This commit is contained in:
Roy Tam 2018-01-19 03:59:58 +08:00
commit dcd9973243
150858 changed files with 23884658 additions and 0 deletions

View file

@ -0,0 +1,13 @@
This directory is treated specially by the loaders.
In particular, when running in chrome, a resource like
"devtools/shared/platform/mumble" will be found in the chrome
subdirectory; and when running in content, it will be found in the
content subdirectory.
Outside of tests, it's not ok to require a specific version of a file;
and there is an eslint test to check for that. That is,
require("devtools/shared/platform/client/mumble") is an error.
When adding a new file, you must add two copies, one to chrome and one
to content. Otherwise, one case or the other will fail to work.

View file

@ -0,0 +1,28 @@
/* 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/. */
// Helpers for clipboard handling.
"use strict";
const {Cc, Ci} = require("chrome");
const clipboardHelper = Cc["@mozilla.org/widget/clipboardhelper;1"]
.getService(Ci.nsIClipboardHelper);
var clipboard = require("sdk/clipboard");
function copyString(string) {
clipboardHelper.copyString(string);
}
function getCurrentFlavors() {
return clipboard.currentFlavors;
}
function getData() {
return clipboard.get();
}
exports.copyString = copyString;
exports.getCurrentFlavors = getCurrentFlavors;
exports.getData = getData;

View file

@ -0,0 +1,10 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
DevToolsModules(
'clipboard.js',
'stack.js',
)

View file

@ -0,0 +1,75 @@
/* 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/. */
// A few wrappers for stack-manipulation. This version of the module
// is used in chrome code.
"use strict";
(function (factory) {
// This file might be require()d, but might also be loaded via
// Cu.import. Account for the differences here.
if (this.module && module.id.indexOf("stack") >= 0) {
// require.
const {components, Cu} = require("chrome");
factory.call(this, components, Cu, exports);
} else {
// Cu.import.
this.isWorker = false;
factory.call(this, Components, Components.utils, this);
this.EXPORTED_SYMBOLS = ["callFunctionWithAsyncStack", "describeNthCaller",
"getStack"];
}
}).call(this, function (components, Cu, exports) {
/**
* Return a description of the Nth caller, suitable for logging.
*
* @param {Number} n the caller to describe
* @return {String} a description of the nth caller.
*/
function describeNthCaller(n) {
if (isWorker) {
return "";
}
let caller = components.stack;
// Do one extra iteration to skip this function.
while (n >= 0) {
--n;
caller = caller.caller;
}
let func = caller.name;
let file = caller.filename;
if (file.includes(" -> ")) {
file = caller.filename.split(/ -> /)[1];
}
let path = file + ":" + caller.lineNumber;
return func + "() -> " + path;
}
/**
* Return a stack object that can be serialized and, when
* deserialized, passed to callFunctionWithAsyncStack.
*/
function getStack() {
return components.stack.caller;
}
/**
* Like Cu.callFunctionWithAsyncStack but handles the isWorker case
* -- |Cu| isn't defined in workers.
*/
function callFunctionWithAsyncStack(callee, stack, id) {
if (isWorker) {
return callee();
}
return Cu.callFunctionWithAsyncStack(callee, stack, id);
}
exports.callFunctionWithAsyncStack = callFunctionWithAsyncStack;
exports.describeNthCaller = describeNthCaller;
exports.getStack = getStack;
});

View file

@ -0,0 +1,12 @@
"use strict";
module.exports = {
// Extend from the devtools eslintrc.
"extends": "../../../.eslintrc.js",
"rules": {
/* eslint-disable max-len */
// All code in this directory must be content-clean.
"mozilla/reject-some-requires": ["error", "^(chrome|chrome:.*|resource:.*|devtools/server/.*|.*\\.jsm|devtools/shared/platform/(chome|content)/.*)$"],
},
};

View file

@ -0,0 +1,34 @@
/* 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/. */
// Helpers for clipboard handling.
/* globals document */
"use strict";
function copyString(string) {
let doCopy = function (e) {
e.clipboardData.setData("text/plain", string);
e.preventDefault();
};
document.addEventListener("copy", doCopy);
document.execCommand("copy", false, null);
document.removeEventListener("copy", doCopy);
}
function getCurrentFlavors() {
// See bug 1295692.
return [];
}
function getData() {
// See bug 1295692.
return null;
}
exports.copyString = copyString;
exports.getCurrentFlavors = getCurrentFlavors;
exports.getData = getData;

View file

@ -0,0 +1,16 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
DevToolsModules(
'clipboard.js',
'stack.js',
)
XPCSHELL_TESTS_MANIFESTS += ['test/xpcshell.ini']
MOCHITEST_MANIFESTS += [
'test/mochitest.ini',
]

View file

@ -0,0 +1,49 @@
/* 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/. */
// A few wrappers for stack-manipulation. This version of the module
// is used in content code. Note that this particular copy of the
// file can only be loaded via require(), because Cu.import doesn't
// exist in the content case. So, we don't need the code to handle
// both require and import here.
"use strict";
/**
* Looks like Cu.callFunctionWithAsyncStack, but just calls the callee.
*/
function callFunctionWithAsyncStack(callee, stack, id) {
return callee();
}
/**
* Return a description of the Nth caller, suitable for logging.
*
* @param {Number} n the caller to describe
* @return {String} a description of the nth caller.
*/
function describeNthCaller(n) {
if (isWorker) {
return "";
}
let stack = new Error().stack.split("\n");
// Add one here to skip this function.
return stack[n + 1];
}
/**
* Return a stack object that can be serialized and, when
* deserialized, passed to callFunctionWithAsyncStack.
*/
function getStack() {
// There's no reason for this to do anything fancy, since it's only
// used to pass back into callFunctionWithAsyncStack, which we can't
// implement.
return null;
}
exports.callFunctionWithAsyncStack = callFunctionWithAsyncStack;
exports.describeNthCaller = describeNthCaller;
exports.getStack = getStack;

View file

@ -0,0 +1,6 @@
"use strict";
module.exports = {
// Extend from the common devtools xpcshell eslintrc config.
"extends": "../../../../.eslintrc.xpcshell.js"
};

View file

@ -0,0 +1,5 @@
[DEFAULT]
support-files =
[test_clipboard.html]
subsuite = clipboard

View file

@ -0,0 +1,53 @@
<!DOCTYPE html>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=1290230
-->
<head>
<title>Test for Bug 1290230 - clipboard helpers</title>
<script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css"
href="chrome://mochikit/content/tests/SimpleTest/test.css">
<script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
<script type="application/javascript;version=1.8">
"use strict";
var exports = {}
</script>
<script type="application/javascript;version=1.8"
src="resource://devtools/shared/platform/content/clipboard.js"></script>
</head>
<body onload="do_tests()">
<script type="application/javascript;version=1.8">
"use strict";
const RESULT = "lark bunting";
function doCopy(e) {
console.log(e.isTrusted);
copyString(RESULT);
}
function do_tests() {
let elt = document.querySelector("#key");
elt.addEventListener("keydown", doCopy);
// Set the clipboard to something other than what we expect.
SpecialPowers.clipboardCopyString("snowy owl");
elt.focus();
synthesizeKey("x", {});
is(SpecialPowers.getClipboardData("text/unicode"), RESULT, "clipboard copying worked");
SimpleTest.finish();
}
SimpleTest.waitForExplicitFinish();
</script>
<div id="key" tabindex="-1">Type Here</div>
</body>

View file

@ -0,0 +1,48 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
// There isn't really very much about the content stack.js that we can
// test, but we'll do what we can.
"use strict";
var Cu = Components.utils;
const {require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
// Make sure to explicitly require the content version of this module.
// We have to use the ".." trick due to the way the loader remaps
// devtools/shared/platform.
const {
callFunctionWithAsyncStack,
getStack,
describeNthCaller
} = require("devtools/shared/platform/../content/stack");
function f3() {
return describeNthCaller(2);
}
function f2() {
return f3();
}
function f1() {
return f2();
}
function run_test() {
let value = 7;
const changeValue = () => {
value = 9;
};
callFunctionWithAsyncStack(changeValue, getStack(), "test_stack");
equal(value, 9, "callFunctionWithAsyncStack worked");
let stack = getStack();
equal(JSON.parse(JSON.stringify(stack)), stack, "stack is serializable");
let desc = f1();
ok(desc.includes("f1"), "stack description includes f1");
}

View file

@ -0,0 +1,7 @@
[DEFAULT]
tags = devtools
head =
tail =
firefox-appdir = browser
[test_stack.js]

View file

@ -0,0 +1,10 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
DIRS += [
'chrome',
'content',
]