merge autoland to mozilla-central a=merge

This commit is contained in:
Carsten "Tomcat" Book 2016-07-05 16:00:37 +02:00
commit c5537a7c68
52 changed files with 697 additions and 578 deletions

View File

@ -147,8 +147,20 @@ var gMainPane = {
let msg = bundle.getFormattedString(e10sCheckbox.checked ?
"featureEnableRequiresRestart" : "featureDisableRequiresRestart",
[brandName]);
let restartText = bundle.getFormattedString("okToRestartButton", [brandName]);
let revertText = bundle.getString("revertNoRestartButton");
let title = bundle.getFormattedString("shouldRestartTitle", [brandName]);
let shouldProceed = Services.prompt.confirm(window, title, msg)
let prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"].getService(Ci.nsIPromptService);
let buttonFlags = (Services.prompt.BUTTON_POS_0 *
Services.prompt.BUTTON_TITLE_IS_STRING) +
(Services.prompt.BUTTON_POS_1 *
Services.prompt.BUTTON_TITLE_IS_STRING) +
Services.prompt.BUTTON_POS_0_DEFAULT;
let shouldProceed = prompts.confirmEx(window, title, msg,
buttonFlags, revertText, restartText,
null, null, {});
if (shouldProceed) {
let cancelQuit = Cc["@mozilla.org/supports-PRBool;1"]
.createInstance(Ci.nsISupportsPRBool);

View File

@ -1,11 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
<title></title>
</head>
<body>
<p id="content"></p>
</body>
</html>

View File

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
<title></title>
</head>
<body>
<p id="content"></p>
</body>
</html>

View File

@ -46,8 +46,6 @@ support-files =
bug578096LoadChromeScript.js
bug638112-response.txt
bug638112.sjs
bug682592-subframe-ref.html
bug682592-subframe.html
bug696301-script-1.js
bug696301-script-1.js^headers^
bug696301-script-2.js

View File

@ -13,7 +13,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=682592
<body>
<p id="display"></p>
<div id="content">
<iframe id="iframe-ref" src="bug682592-subframe-ref.html"></iframe>
<iframe id="iframe-ref"></iframe>
<iframe id="iframe-test"></iframe>
</div>
<pre id="test">
@ -39,11 +39,13 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=682592
*/
SimpleTest.waitForExplicitFinish();
SimpleTest.requestLongerTimeout(2);
SimpleTest.requestLongerTimeout(3);
if (navigator.platform.startsWith("Linux arm")) { /* bugs 982875, 999429 */
SimpleTest.expectAssertions(0, 4);
}
var page = `data:text/html;charset=UTF-8,<!DOCTYPE html>
<html><body><p id="content"></p></body></html>`;
var refFrame = document.getElementById("iframe-ref")
var testFrame = document.getElementById("iframe-test");
@ -60,8 +62,9 @@ refFrame.addEventListener("load", function() {
SimpleTest.finish();
}
}, false);
testFrame.src = "bug682592-subframe.html"
testFrame.src = page;
}, false);
refFrame.src = page;
var rtl = "עִבְרִית";
var non8bit = "ʃ";

View File

@ -71,24 +71,34 @@ GLScreenBuffer::CreateFactory(GLContext* gl,
const SurfaceCaps& caps,
const RefPtr<layers::CompositableForwarder>& forwarder,
const layers::TextureFlags& flags)
{
return CreateFactory(gl, caps, forwarder, forwarder->GetCompositorBackendType(), flags);
}
/* static */ UniquePtr<SurfaceFactory>
GLScreenBuffer::CreateFactory(GLContext* gl,
const SurfaceCaps& caps,
const RefPtr<layers::ClientIPCAllocator>& allocator,
const mozilla::layers::LayersBackend backend,
const layers::TextureFlags& flags)
{
UniquePtr<SurfaceFactory> factory = nullptr;
if (!gfxPrefs::WebGLForceLayersReadback()) {
switch (forwarder->GetCompositorBackendType()) {
switch (backend) {
case mozilla::layers::LayersBackend::LAYERS_OPENGL: {
#if defined(XP_MACOSX)
factory = SurfaceFactory_IOSurface::Create(gl, caps, forwarder, flags);
factory = SurfaceFactory_IOSurface::Create(gl, caps, allocator, flags);
#elif defined(MOZ_WIDGET_GONK)
factory = MakeUnique<SurfaceFactory_Gralloc>(gl, caps, forwarder, flags);
factory = MakeUnique<SurfaceFactory_Gralloc>(gl, caps, allocator, flags);
#elif defined(GL_PROVIDER_GLX)
if (sGLXLibrary.UseTextureFromPixmap())
factory = SurfaceFactory_GLXDrawable::Create(gl, caps, forwarder, flags);
factory = SurfaceFactory_GLXDrawable::Create(gl, caps, allocator, flags);
#elif defined(MOZ_WIDGET_UIKIT)
factory = MakeUnique<SurfaceFactory_GLTexture>(mGLContext, caps, forwarder, mFlags);
factory = MakeUnique<SurfaceFactory_GLTexture>(mGLContext, caps, allocator, mFlags);
#else
if (gl->GetContextType() == GLContextType::EGL) {
if (XRE_IsParentProcess()) {
factory = SurfaceFactory_EGLImage::Create(gl, caps, forwarder, flags);
factory = SurfaceFactory_EGLImage::Create(gl, caps, allocator, flags);
}
}
#endif
@ -102,11 +112,11 @@ GLScreenBuffer::CreateFactory(GLContext* gl,
(gl->IsWARP() == gfxWindowsPlatform::GetPlatform()->IsWARP()) &&
gfxWindowsPlatform::GetPlatform()->CompositorD3D11TextureSharingWorks())
{
factory = SurfaceFactory_ANGLEShareHandle::Create(gl, caps, forwarder, flags);
factory = SurfaceFactory_ANGLEShareHandle::Create(gl, caps, allocator, flags);
}
if (!factory && gfxPrefs::WebGLDXGLEnabled()) {
factory = SurfaceFactory_D3D11Interop::Create(gl, caps, forwarder, flags);
factory = SurfaceFactory_D3D11Interop::Create(gl, caps, allocator, flags);
}
#endif
break;
@ -117,7 +127,7 @@ GLScreenBuffer::CreateFactory(GLContext* gl,
#ifdef GL_PROVIDER_GLX
if (!factory && sGLXLibrary.UseTextureFromPixmap()) {
factory = SurfaceFactory_GLXDrawable::Create(gl, caps, forwarder, flags);
factory = SurfaceFactory_GLXDrawable::Create(gl, caps, allocator, flags);
}
#endif
}

View File

@ -139,6 +139,12 @@ public:
const SurfaceCaps& caps,
const RefPtr<layers::CompositableForwarder>& forwarder,
const layers::TextureFlags& flags);
static UniquePtr<SurfaceFactory>
CreateFactory(GLContext* gl,
const SurfaceCaps& caps,
const RefPtr<layers::ClientIPCAllocator>& allocator,
const mozilla::layers::LayersBackend backend,
const layers::TextureFlags& flags);
protected:
GLContext* const mGL; // Owns us.

View File

@ -795,13 +795,12 @@ struct nsCSSRendering {
static CompositionOp GetGFXCompositeMode(uint8_t aCompositeMode) {
switch (aCompositeMode) {
case NS_STYLE_MASK_COMPOSITE_ADD: return CompositionOp::OP_OVER;
case NS_STYLE_MASK_COMPOSITE_SUBSTRACT: return CompositionOp::OP_OUT;
case NS_STYLE_MASK_COMPOSITE_INTERSECT: return CompositionOp::OP_IN;
case NS_STYLE_MASK_COMPOSITE_EXCLUDE: return CompositionOp::OP_XOR;
default: MOZ_ASSERT(false); return CompositionOp::OP_OVER;
case NS_STYLE_MASK_COMPOSITE_ADD: return CompositionOp::OP_OVER;
case NS_STYLE_MASK_COMPOSITE_SUBTRACT: return CompositionOp::OP_OUT;
case NS_STYLE_MASK_COMPOSITE_INTERSECT: return CompositionOp::OP_IN;
case NS_STYLE_MASK_COMPOSITE_EXCLUDE: return CompositionOp::OP_XOR;
default: MOZ_ASSERT(false); return CompositionOp::OP_OVER;
}
}
protected:
static gfxRect GetTextDecorationRectInternal(

View File

@ -26,9 +26,9 @@
mask-composite: add;
}
div.substract {
div.subtract {
left: 120px;
mask-composite: substract;
mask-composite: subtract;
}
div.intersect {
@ -44,7 +44,7 @@
</head>
<body>
<div class="add"></div>
<div class="substract"></div>
<div class="subtract"></div>
<div class="intersect"></div>
<div class="exclude"></div>
</body>

View File

@ -26,9 +26,9 @@
mask-composite: add;
}
div.substract {
div.subtract {
left: 120px;
mask-composite: substract;
mask-composite: subtract;
}
div.intersect {
@ -44,7 +44,7 @@
</head>
<body>
<div class="add"></div>
<div class="substract"></div>
<div class="subtract"></div>
<div class="intersect"></div>
<div class="exclude"></div>
</body>

View File

@ -31,9 +31,9 @@
mask-composite: add;
}
div.substract {
div.subtract {
left: 120px;
mask-composite: substract;
mask-composite: subtract;
}
div.intersect {
@ -49,7 +49,7 @@
</head>
<body>
<div class="add"></div>
<div class="substract"></div>
<div class="subtract"></div>
<div class="intersect"></div>
<div class="exclude"></div>
</body>

View File

@ -20,7 +20,7 @@
background-color: blue;
}
div.substract {
div.subtract {
left: 120px;
background-image: url(support/blue-100x50-transparent-100x50.svg);
}
@ -33,7 +33,7 @@
</head>
<body>
<div class="add"></div>
<div class="substract"></div>
<div class="subtract"></div>
<div class="exclude"></div>
</body>
</html>

View File

@ -26,9 +26,9 @@
mask-composite: add;
}
div.substract {
div.subtract {
left: 120px;
mask-composite: substract;
mask-composite: subtract;
}
div.intersect {
@ -44,7 +44,7 @@
</head>
<body>
<div class="add"></div>
<div class="substract"></div>
<div class="subtract"></div>
<div class="intersect"></div>
<div class="exclude"></div>
</body>

View File

@ -26,9 +26,9 @@
mask-composite: add;
}
div.substract {
div.subtract {
left: 120px;
mask-composite: substract;
mask-composite: subtract;
}
div.intersect {
@ -44,7 +44,7 @@
</head>
<body>
<div class="add"></div>
<div class="substract"></div>
<div class="subtract"></div>
<div class="intersect"></div>
<div class="exclude"></div>
</body>

View File

@ -34,9 +34,9 @@
mask-composite: add;
}
div.substract {
div.subtract {
left: 120px;
mask-composite: substract;
mask-composite: subtract;
}
div.intersect {
@ -52,7 +52,7 @@
</head>
<body>
<div class="add"></div>
<div class="substract"></div>
<div class="subtract"></div>
<div class="intersect"></div>
<div class="exclude"></div>
</body>

View File

@ -561,7 +561,7 @@ CSS_KEY(styleset, styleset)
CSS_KEY(stylistic, stylistic)
CSS_KEY(sub, sub)
CSS_KEY(subgrid, subgrid)
CSS_KEY(substract, substract)
CSS_KEY(subtract, subtract)
CSS_KEY(super, super)
CSS_KEY(sw-resize, sw_resize)
CSS_KEY(swash, swash)

View File

@ -963,7 +963,7 @@ const KTableEntry nsCSSProps::kImageLayerModeKTable[] = {
const KTableEntry nsCSSProps::kImageLayerCompositeKTable[] = {
{ eCSSKeyword_add, NS_STYLE_MASK_COMPOSITE_ADD },
{ eCSSKeyword_substract, NS_STYLE_MASK_COMPOSITE_SUBSTRACT },
{ eCSSKeyword_subtract, NS_STYLE_MASK_COMPOSITE_SUBTRACT },
{ eCSSKeyword_intersect, NS_STYLE_MASK_COMPOSITE_INTERSECT },
{ eCSSKeyword_exclude, NS_STYLE_MASK_COMPOSITE_EXCLUDE },
{ eCSSKeyword_UNKNOWN, -1 }

View File

@ -1167,7 +1167,7 @@ enum class FillMode : uint32_t;
// composite
#define NS_STYLE_MASK_COMPOSITE_ADD 0
#define NS_STYLE_MASK_COMPOSITE_SUBSTRACT 1
#define NS_STYLE_MASK_COMPOSITE_SUBTRACT 1
#define NS_STYLE_MASK_COMPOSITE_INTERSECT 2
#define NS_STYLE_MASK_COMPOSITE_EXCLUDE 3

View File

@ -90,9 +90,6 @@ bdi, output {
unicode-bidi: isolate;
}
bdo, bdo[dir] {
unicode-bidi: bidi-override;
}
bdo[dir="auto"] {
unicode-bidi: isolate-override;
}
textarea[dir="auto"], pre[dir="auto"] { unicode-bidi: plaintext; }

View File

@ -6890,8 +6890,8 @@ if (SupportsMaskShorthand()) {
"repeat-y",
"no-repeat",
"none repeat-y alpha add 0% 0%",
"substract",
"0% top substract alpha repeat none",
"subtract",
"0% top subtract alpha repeat none",
"top",
"left",
"50% 50%",
@ -6918,9 +6918,9 @@ if (SupportsMaskShorthand()) {
"-moz-element(#test) alpha",
/* multiple mask-image */
"url(404.png), url(404.png)",
"repeat-x, substract, none",
"repeat-x, subtract, none",
"0% top url(404.png), url(404.png) 0% top",
"substract repeat-y top left url(404.png), repeat-x alpha",
"subtract repeat-y top left url(404.png), repeat-x alpha",
"url(404.png), -moz-linear-gradient(20px 20px -45deg, blue, green), -moz-element(#a) alpha",
"top left / contain, bottom right / cover",
/* test cases with clip+origin in the shorthand */
@ -6988,8 +6988,8 @@ if (SupportsMaskShorthand()) {
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "add" ],
other_values: [ "substract", "intersect", "exclude", "add, add", "substract, intersect", "substract, substract, add"],
invalid_values: [ "add substract", "intersect exclude" ]
other_values: [ "subtract", "intersect", "exclude", "add, add", "subtract, intersect", "subtract, subtract, add"],
invalid_values: [ "add subtract", "intersect exclude" ]
};
gCSSProperties["mask-origin"] = {
domProp: "maskOrigin",

View File

@ -49,11 +49,11 @@ var tests = [
['output', {'dir': 'auto'}, 'ltr', 'isolate'],
['output', {'dir': ''}, 'ltr', 'isolate'],
['bdo', {}, 'ltr', 'bidi-override'],
['bdo', {'dir': 'ltr'}, 'ltr', 'bidi-override'],
['bdo', {'dir': 'rtl'}, 'rtl', 'bidi-override'],
['bdo', {}, 'ltr', 'isolate-override'],
['bdo', {'dir': 'ltr'}, 'ltr', 'isolate-override'],
['bdo', {'dir': 'rtl'}, 'rtl', 'isolate-override'],
['bdo', {'dir': 'auto'}, 'ltr', 'isolate-override'],
['bdo', {'dir': ''}, 'ltr', 'bidi-override'],
['bdo', {'dir': ''}, 'ltr', 'isolate-override'],
['textarea', {}, 'ltr', 'normal'],
['textarea', {'dir': 'ltr'}, 'ltr', 'isolate'],

View File

@ -6,21 +6,19 @@ $inherits:
from: tasks/branches/base_jobs.yml
builds:
aries:
platforms:
- b2g
types:
debug:
task: tasks/builds/b2g_aries_spark_debug.yml
aries-eng:
platforms:
- b2g
types:
opt:
task: tasks/builds/b2g_aries_eng.yml
debug:
task: tasks/builds/b2g_aries_debug.yml
nexus-5l-eng:
platforms:
- b2g
types:
opt:
task: tasks/builds/b2g_nexus_5l_eng.yml
debug:
task: tasks/builds/b2g_nexus_5l_debug.yml

View File

@ -1,26 +0,0 @@
---
# For complete sample of all build and test jobs,
# see <gecko>/testing/taskcluster/tasks/branches/base_job_flags.yml
$inherits:
from: tasks/branches/base_jobs.yml
builds:
aries:
platforms:
- b2g
types:
debug:
task: tasks/builds/b2g_aries_spark_debug.yml
aries-eng:
platforms:
- b2g
types:
opt:
task: tasks/builds/b2g_aries_eng.yml
nexus-5l-eng:
platforms:
- b2g
types:
opt:
task: tasks/builds/b2g_nexus_5l_eng.yml

View File

@ -12,7 +12,6 @@ flags:
- macosx64_gecko # b2g desktop osx 64 bit
- win32_gecko # b2g desktop win 32 bit
- nexus-5l-eng
- aries
- aries-eng
- android-api-15
- android-api-15-frontend
@ -35,8 +34,10 @@ flags:
- crashtest
- crashtest-e10s
- external-media-tests
- firefox-ui-functional
- firefox-ui-functional-e10s
- firefox-ui-functional-local
- firefox-ui-functional-local-e10s
- firefox-ui-functional-remote
- firefox-ui-functional-remote-e10s
- gaia-build
- gaia-build-unit
- gaia-js-integration

View File

@ -261,22 +261,38 @@ tests:
task: tasks/tests/fx_linux64_external_media_tests_dbg.yml
tasks/builds/opt_linux64_pgo.yml:
task: tasks/tests/fx_linux64_external_media_tests_opt.yml
firefox-ui-functional:
firefox-ui-functional-local:
allowed_build_tasks:
tasks/builds/opt_linux64.yml:
task: tasks/tests/fx_linux64_firefox_ui_functional_opt.yml
task: tasks/tests/fx_linux64_fxui_functional_local_opt.yml
tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_firefox_ui_functional_dbg.yml
task: tasks/tests/fx_linux64_fxui_functional_local_dbg.yml
tasks/builds/opt_linux64_pgo.yml:
task: tasks/tests/fx_linux64_firefox_ui_functional_opt.yml
firefox-ui-functional-e10s:
task: tasks/tests/fx_linux64_fxui_functional_local_opt.yml
firefox-ui-functional-local-e10s:
allowed_build_tasks:
tasks/builds/opt_linux64.yml:
task: tasks/tests/fx_linux64_firefox_ui_functional_e10s_opt.yml
task: tasks/tests/fx_linux64_fxui_functional_local_e10s_opt.yml
tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_firefox_ui_functional_e10s_dbg.yml
task: tasks/tests/fx_linux64_fxui_functional_local_e10s_dbg.yml
tasks/builds/opt_linux64_pgo.yml:
task: tasks/tests/fx_linux64_firefox_ui_functional_e10s_opt.yml
task: tasks/tests/fx_linux64_fxui_functional_local_e10s_opt.yml
firefox-ui-functional-remote:
allowed_build_tasks:
tasks/builds/opt_linux64.yml:
task: tasks/tests/fx_linux64_fxui_functional_remote_opt.yml
tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_fxui_functional_remote_dbg.yml
tasks/builds/opt_linux64_pgo.yml:
task: tasks/tests/fx_linux64_fxui_functional_remote_opt.yml
firefox-ui-functional-remote-e10s:
allowed_build_tasks:
tasks/builds/opt_linux64.yml:
task: tasks/tests/fx_linux64_fxui_functional_remote_e10s_opt.yml
tasks/builds/dbg_linux64.yml:
task: tasks/tests/fx_linux64_fxui_functional_remote_e10s_dbg.yml
tasks/builds/opt_linux64_pgo.yml:
task: tasks/tests/fx_linux64_fxui_functional_remote_e10s_opt.yml
gtest:
allowed_build_tasks:
tasks/builds/opt_linux64.yml:

View File

@ -1,26 +0,0 @@
---
# For complete sample of all build and test jobs,
# see <gecko>/testing/taskcluster/tasks/branches/base_job_flags.yml
$inherits:
from: tasks/branches/base_jobs.yml
builds:
aries:
platforms:
- b2g
types:
debug:
task: tasks/builds/b2g_aries_spark_debug.yml
aries-eng:
platforms:
- b2g
types:
opt:
task: tasks/builds/b2g_aries_eng.yml
nexus-5l-eng:
platforms:
- b2g
types:
opt:
task: tasks/builds/b2g_nexus_5l_eng.yml

View File

@ -1,26 +0,0 @@
---
# For complete sample of all build and test jobs,
# see <gecko>/testing/taskcluster/tasks/branches/base_job_flags.yml
$inherits:
from: tasks/branches/base_jobs.yml
builds:
aries:
platforms:
- b2g
types:
debug:
task: tasks/builds/b2g_aries_spark_debug.yml
aries-eng:
platforms:
- b2g
types:
opt:
task: tasks/builds/b2g_aries_eng.yml
nexus-5l-eng:
platforms:
- b2g
types:
opt:
task: tasks/builds/b2g_nexus_5l_eng.yml

View File

@ -11,24 +11,22 @@ flags:
- simulator
builds:
aries:
platforms:
- b2g
types:
debug:
task: tasks/builds/b2g_aries_spark_debug.yml
aries-eng:
platforms:
- b2g
types:
opt:
task: tasks/builds/b2g_aries_eng.yml
debug:
task: tasks/builds/b2g_aries_debug.yml
nexus-5l-eng:
platforms:
- b2g
types:
opt:
task: tasks/builds/b2g_nexus_5l_eng.yml
debug:
task: tasks/builds/b2g_nexus_5l_debug.yml
tests:
gaia-build:

View File

@ -6,21 +6,19 @@ $inherits:
from: tasks/branches/base_jobs.yml
builds:
aries:
platforms:
- b2g
types:
debug:
task: tasks/builds/b2g_aries_spark_debug.yml
aries-eng:
platforms:
- b2g
types:
opt:
task: tasks/builds/b2g_aries_eng.yml
debug:
task: tasks/builds/b2g_aries_debug.yml
nexus-5l-eng:
platforms:
- b2g
types:
opt:
task: tasks/builds/b2g_nexus_5l_eng.yml
debug:
task: tasks/builds/b2g_nexus_5l_debug.yml

View File

@ -115,12 +115,16 @@ builds:
types:
opt:
task: tasks/builds/b2g_aries_eng.yml
debug:
task: tasks/builds/b2g_aries_debug.yml
nexus-5l-eng:
platforms:
- b2g
types:
opt:
task: tasks/builds/b2g_nexus_5l_eng.yml
debug:
task: tasks/builds/b2g_nexus_5l_debug.yml
post-build:
upload-symbols:

View File

@ -1,13 +1,14 @@
$inherits:
from: 'tasks/builds/b2g_phone_base.yml'
from: 'tasks/builds/b2g_phone_eng_base.yml'
variables:
build_name: 'aries'
build_type: 'debug'
task:
workerType: flame-kk
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-aries-debug'
- 'docker-worker:cache:level-{{level}}-{{project}}-build-aries-debug-objdir-gecko'
- 'docker-worker:relengapi-proxy:tooltool.download.internal'
- 'docker-worker:relengapi-proxy:tooltool.download.public'
metadata:
name: '[TC] B2G Aries Debug'
@ -15,20 +16,17 @@ task:
cache:
level-{{level}}-{{project}}-build-aries-debug: /home/worker/workspace
level-{{level}}-{{project}}-build-aries-debug-objdir-gecko: /home/worker/objdir-gecko
features:
relengAPIProxy: true
env:
TARGET: 'aries'
DEBUG: 0
VARIANT: userdebug
GAIA_OPTIMIZE: '1'
B2G_SYSTEM_APPS: '1'
MOZHARNESS_CONFIG: b2g/taskcluster-spark.py
command: ["/bin/bash", "-c", "checkout-gecko workspace && cd ./workspace/gecko/taskcluster/scripts/phone-builder && buildbot_step 'Build' ./build-phone.sh $HOME/workspace"]
B2G_DEBUG: 1
extra:
treeherderEnv:
- production
- staging
treeherder:
symbol: B
symbol: Bd
groupSymbol: Aries
groupName: Aries Device Image
machine:

View File

@ -0,0 +1,37 @@
$inherits:
from: 'tasks/builds/b2g_phone_eng_base.yml'
variables:
build_name: 'nexus-5-l-eng'
build_type: 'debug'
task:
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-nexus-5-l-debug'
- 'docker-worker:cache:level-{{level}}-{{project}}-build-nexus-5-l-debug-objdir-gecko'
- 'docker-worker:relengapi-proxy:tooltool.download.internal'
- 'docker-worker:relengapi-proxy:tooltool.download.public'
metadata:
name: '[TC] B2G Nexus 5-L Debug'
payload:
cache:
level-{{level}}-{{project}}-build-nexus-5-l-debug: /home/worker/workspace
level-{{level}}-{{project}}-build-nexus-5-l-debug-objdir-gecko: /home/worker/objdir-gecko
features:
relengAPIProxy: true
env:
TARGET: 'nexus-5-l'
B2G_DEBUG: 1
extra:
treeherderEnv:
- production
- staging
treeherder:
symbol: Bd
groupSymbol: Nexus 5-L
groupName: Nexus 5-L Device Image
machine:
platform: b2g-device-image
collection:
debug: true
locations:
img: 'private/build/nexus-5-l.zip'

View File

@ -4,7 +4,6 @@ $inherits:
build_name: 'nexus-5-l-eng'
build_type: 'opt'
task:
workerType: flame-kk
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-nexus-5-l-eng'
- 'docker-worker:cache:level-{{level}}-{{project}}-build-nexus-5-l-eng-objdir-gecko'
@ -12,6 +11,7 @@ task:
- 'docker-worker:relengapi-proxy:tooltool.download.public'
metadata:
name: '[TC] B2G Nexus 5-L Eng'
payload:
cache:
level-{{level}}-{{project}}-build-nexus-5-l-eng: /home/worker/object-folder

View File

@ -1,27 +0,0 @@
---
$inherits:
from: 'tasks/tests/fx_docker_desktop_generic.yml'
task:
payload:
command:
- {"task-reference": "--installer-url=https://queue.taskcluster.net/v1/task/<{{build_slugid}}>/artifacts/{{build_location}}"}
- {"task-reference": "--test-packages-url=https://queue.taskcluster.net/v1/task/<{{build_slugid}}>/artifacts/{{test_packages_location}}"}
- --e10s
env:
MOZHARNESS_SCRIPT: 'mozharness/scripts/firefox_ui_tests/functional.py'
MOZHARNESS_CONFIG: >
mozharness/configs/firefox_ui_tests/taskcluster.py
mozharness/configs/remove_executables.py
maxRunTime: 5400
metadata:
name: '[TC] Linux64 firefox-ui-tests functional e10s'
description: firefox-ui-tests functional e10s run
extra:
suite:
name: firefox-ui
flavor: functional
treeherder:
groupName: Desktop firefox-ui-tests
groupSymbol: tc-Fxfn-e10s
symbol: en-US
tier: 2

View File

@ -18,9 +18,7 @@ task:
extra:
suite:
name: firefox-ui
flavor: functional
treeherder:
groupName: Desktop firefox-ui-tests
groupSymbol: tc-Fxfn
symbol: en-US
tier: 2

View File

@ -0,0 +1,17 @@
---
$inherits:
from: 'tasks/tests/fx_linux64_fxui_functional.yml'
task:
payload:
command:
- --tag local
metadata:
name: '[TC] Linux64 firefox-ui-tests functional local'
description: firefox-ui-tests functional local run
extra:
suite:
name: firefox-ui
flavor: functional local
treeherder:
groupName: Desktop firefox-ui-tests (local)
groupSymbol: tc-Fxfn-l

View File

@ -1,6 +1,6 @@
---
$inherits:
from: 'tasks/tests/fx_linux64_firefox_ui_functional.yml'
from: 'tasks/tests/fx_linux64_fxui_functional_local.yml'
task:
payload:
command:

View File

@ -0,0 +1,13 @@
---
$inherits:
from: 'tasks/tests/fx_linux64_fxui_functional_local.yml'
task:
payload:
command:
- --e10s
metadata:
name: '[TC] Linux64 firefox-ui-tests functional local e10s'
description: firefox-ui-tests functional local e10s run
extra:
treeherder:
groupSymbol: tc-Fxfn-l-e10s

View File

@ -1,6 +1,6 @@
---
$inherits:
from: 'tasks/tests/fx_linux64_firefox_ui_functional_e10s.yml'
from: 'tasks/tests/fx_linux64_fxui_functional_local_e10s.yml'
task:
payload:
command:

View File

@ -1,6 +1,6 @@
---
$inherits:
from: 'tasks/tests/fx_linux64_firefox_ui_functional_e10s.yml'
from: 'tasks/tests/fx_linux64_fxui_functional_local_e10s.yml'
task:
payload:
command:

View File

@ -1,6 +1,6 @@
---
$inherits:
from: 'tasks/tests/fx_linux64_firefox_ui_functional.yml'
from: 'tasks/tests/fx_linux64_fxui_functional_local.yml'
task:
payload:
command:

View File

@ -0,0 +1,18 @@
---
$inherits:
from: 'tasks/tests/fx_linux64_fxui_functional.yml'
task:
payload:
command:
- --tag remote
metadata:
name: '[TC] Linux64 firefox-ui-tests functional remote'
description: firefox-ui-tests functional remote run
extra:
suite:
name: firefox-ui
flavor: functional remote
treeherder:
groupName: Desktop firefox-ui-tests (remote)
groupSymbol: tc-Fxfn-r
tier: 2

View File

@ -0,0 +1,7 @@
---
$inherits:
from: 'tasks/tests/fx_linux64_fxui_functional_remote.yml'
task:
payload:
command:
- --download-symbols=true

View File

@ -0,0 +1,13 @@
---
$inherits:
from: 'tasks/tests/fx_linux64_fxui_functional_remote.yml'
task:
payload:
command:
- --e10s
metadata:
name: '[TC] Linux64 firefox-ui-tests functional remote e10s'
description: firefox-ui-tests functional remote e10s run
extra:
treeherder:
groupSymbol: tc-Fxfn-r-e10s

View File

@ -0,0 +1,7 @@
---
$inherits:
from: 'tasks/tests/fx_linux64_fxui_functional_remote_e10s.yml'
task:
payload:
command:
- --download-symbols=true

View File

@ -0,0 +1,7 @@
---
$inherits:
from: 'tasks/tests/fx_linux64_fxui_functional_remote_e10s.yml'
task:
payload:
command:
- --download-symbols=ondemand

View File

@ -0,0 +1,7 @@
---
$inherits:
from: 'tasks/tests/fx_linux64_fxui_functional_remote.yml'
task:
payload:
command:
- --download-symbols=ondemand

View File

@ -47,6 +47,10 @@ firefox_ui_tests_config_options = [
'help': 'absolute path to directory containing breakpad '
'symbols, or the url of a zip file containing symbols.',
}],
[['--tag=TAG'], {
'dest': 'tag',
'help': 'Subset of tests to run (local, remote).',
}],
] + copy.deepcopy(testing_config_options)
# Command line arguments for update tests
@ -260,6 +264,9 @@ class FirefoxUITests(TestingMixin, VCSToolsScript):
if self.query_minidump_stackwalk():
env['MINIDUMP_STACKWALK'] = self.minidump_stackwalk_path
if self.config.get('tag'):
cmd.extend(['--tag', self.config['tag']])
parser = StructuredOutputParser(config=self.config,
log_obj=self.log_obj,
strict=False)

View File

@ -4878,6 +4878,11 @@ mozilla::BrowserTabsRemoteAutostart()
}
gBrowserTabsRemoteAutostartInitialized = true;
// If we're in the content process, we are running E10S.
if (XRE_IsContentProcess()) {
gBrowserTabsRemoteAutostart = true;
return gBrowserTabsRemoteAutostart;
}
bool optInPref = Preferences::GetBool("browser.tabs.remote.autostart", false);
bool trialPref = Preferences::GetBool("browser.tabs.remote.autostart.2", false);

View File

@ -93,6 +93,15 @@ public:
*/
bool IsComposing() const { return mIsComposing; }
/**
* IsInNativeInputTransaction() returns true if native IME handler began a
* transaction and it's not finished yet.
*/
bool IsInNativeInputTransaction() const
{
return mInputTransactionType == eNativeInputTransaction;
}
/**
* IsDispatchingEvent() returns true while this instance dispatching an event.
*/

File diff suppressed because it is too large Load Diff

View File

@ -53,6 +53,12 @@ class TSFTextStore final : public ITextStoreACP
, public ITfContextOwnerCompositionSink
, public ITfMouseTrackerACP
{
private:
typedef IMENotification::SelectionChangeDataBase SelectionChangeDataBase;
typedef IMENotification::SelectionChangeData SelectionChangeData;
typedef IMENotification::TextChangeDataBase TextChangeDataBase;
typedef IMENotification::TextChangeData TextChangeData;
public: /*IUnknown*/
STDMETHODIMP QueryInterface(REFIID, void**);
@ -109,7 +115,6 @@ public:
WPARAM& aWParam, LPARAM& aLParam,
MSGResult& aResult);
static void SetIMEOpenState(bool);
static bool GetIMEOpenState(void);
@ -276,9 +281,6 @@ protected:
bool InsertTextAtSelectionInternal(const nsAString& aInsertStr,
TS_TEXTCHANGE* aTextChange);
void CommitCompositionInternal(bool);
nsresult OnTextChangeInternal(const IMENotification& aIMENotification);
nsresult OnSelectionChangeInternal(const IMENotification& aIMENotification);
nsresult OnMouseButtonEventInternal(const IMENotification& aIMENotification);
HRESULT GetDisplayAttribute(ITfProperty* aProperty,
ITfRange* aRange,
TF_DISPLAYATTRIBUTE* aResult);
@ -310,10 +312,23 @@ protected:
// MaybeFlushPendingNotifications() performs pending notifications to TSF.
void MaybeFlushPendingNotifications();
nsresult OnTextChangeInternal(const IMENotification& aIMENotification);
nsresult OnSelectionChangeInternal(const IMENotification& aIMENotification);
nsresult OnMouseButtonEventInternal(const IMENotification& aIMENotification);
nsresult OnLayoutChangeInternal();
nsresult OnUpdateCompositionInternal();
void NotifyTSFOfTextChange(const TS_TEXTCHANGE& aTextChange);
// mPendingSelectionChangeData stores selection change data until notifying
// TSF of selection change. If two or more selection changes occur, this
// stores the latest selection change data because only it is necessary.
SelectionChangeData mPendingSelectionChangeData;
// mPendingTextChangeData stores one or more text change data until notifying
// TSF of text change. If two or more text changes occur, this merges
// every text change data.
TextChangeData mPendingTextChangeData;
void NotifyTSFOfTextChange();
void NotifyTSFOfSelectionChange();
bool NotifyTSFOfLayoutChange();
void NotifyTSFOfLayoutChangeAgain();
@ -407,6 +422,14 @@ protected:
// information.
Composition mComposition;
/**
* IsComposingInContent() returns true if there is a composition in the
* focused editor and it's caused by native IME (either TIP of TSF or IME of
* IMM). I.e., returns true between eCompositionStart and
* eCompositionCommit(AsIs).
*/
bool IsComposingInContent() const;
class Selection
{
public:
@ -531,22 +554,35 @@ protected:
return mWritingMode;
}
bool EqualsExceptDirection(const TS_SELECTION_ACP& aACP) const
{
if (mACP.style.ase == aACP.style.ase) {
return mACP.acpStart == aACP.acpStart &&
mACP.acpEnd == aACP.acpEnd;
}
return mACP.acpStart == aACP.acpEnd &&
mACP.acpEnd == aACP.acpStart;
}
private:
TS_SELECTION_ACP mACP;
WritingMode mWritingMode;
bool mDirty;
};
// Don't access mSelection directly except at calling MarkDirty().
// Use CurrentSelection() instead. This is marked as dirty when the
// selection or content is changed without document lock.
Selection mSelection;
// Use SelectionForTSFRef() instead. This is modified immediately when
// TSF requests to set selection and not updated by selection change in
// content until mContentForTSF is cleared.
Selection mSelectionForTSF;
// Get "current selection". If the document is locked, this initializes
// mSelection with the selection at the first call during a lock and returns
// it. However, mSelection is NOT modified immediately. When pending
// changes are flushed at unlocking the document, cached mSelection is
// modified. Note that this is also called by LockedContent().
Selection& CurrentSelection();
/**
* Get the selection expected by TSF. If mSelectionForTSF is already valid,
* this just return the reference to it. Otherwise, this initializes it
* with eQuerySelectedText. Please check if the result is valid before
* actually using it.
* Note that this is also called by ContentForTSFRef().
*/
Selection& SelectionForTSFRef();
struct PendingAction final
{
@ -785,18 +821,24 @@ protected:
bool mInitialized;
};
// mLockedContent starts to cache content of the document at first query of
// the content during a document lock. This is abandoned after document is
// unlocked and dispatched events are handled. This is initialized by
// LockedContent() automatically. So, don't access this member directly
// except at calling Clear(), IsInitialized(), IsLayoutChangedAfter() or
// IsLayoutChanged().
Content mLockedContent;
// mContentForTSF is cache of content. The information is expected by TSF
// and TIP. Therefore, this is useful for answering the query from TSF or
// TIP.
// This is initialized by ContentForTSFRef() automatically (therefore, don't
// access this member directly except at calling Clear(), IsInitialized(),
// IsLayoutChangeAfter() or IsLayoutChanged()).
// This is cleared when:
// - When there is no composition, the document is unlocked.
// - When there is a composition, all dispatched events are handled by
// the focused editor which may be in a remote process.
// So, if two compositions are created very quickly, this cache may not be
// cleared between eCompositionCommit(AsIs) and eCompositionStart.
Content mContentForTSF;
Content& LockedContent();
Content& ContentForTSFRef();
// While the documet is locked, this returns the text stored by
// mLockedContent. Otherwise, return the current text content.
// While mContentForTSF is valid, this returns the text stored by it.
// Otherwise, return the current text content retrieved by eQueryTextContent.
bool GetCurrentText(nsAString& aTextContent);
class MouseTracker final
@ -863,14 +905,6 @@ protected:
// If edit actions are being recorded without document lock, this is true.
// Otherwise, false.
bool mIsRecordingActionsWithoutLock;
// During recording actions, we shouldn't call mSink->OnSelectionChange()
// because it may cause TSF request new lock. This is a problem if the
// selection change is caused by a call of On*Composition() without document
// lock since RequestLock() tries to flush the pending actions again (which
// are flushing). Therefore, OnSelectionChangeInternal() sets this true
// during recoding actions and then, RequestLock() will call
// mSink->OnSelectionChange() after mLock becomes 0.
bool mPendingOnSelectionChange;
// If GetTextExt() or GetACPFromPoint() is called and the layout hasn't been
// calculated yet, these methods return TS_E_NOLAYOUT. At that time,
// mHasReturnedNoLayoutError is set to true.
@ -884,8 +918,8 @@ protected:
// If this is true, the instance will be destroyed after unlocked.
bool mPendingDestroy;
// If this is false, MaybeFlushPendingNotifications() will clear the
// mLockedContent.
bool mDeferClearingLockedContent;
// mContentForTSF.
bool mDeferClearingContentForTSF;
// While there is native caret, this is true. Otherwise, false.
bool mNativeCaretIsCreated;
// While the instance is dispatching events, the event may not be handled