Browse Source

import changes from `dev' branch of rmottola/Arctic-Fox:

- Bug 1159056. Don't store a value in CSS pixels in a variable with type nscoord in ScrollFrameHelper::SetCoordAttribute. r=dholbert (432f06158)
- Bug 1138442 - Disable reftests on Mulet in parity with B2G/B2G Desktop. r=ahal (8b5c55da7)
- Don't clip in ComputeFrameMetrics if the scrollframe won't be layerized. (bug 1148582 part 2, r=tn) (088b6ef29)
- Bug 1157579 - Make sure the visual scroll port size includes the area of scrollbars when used in TryLayout. r=tn (c35244374)
- Bug 1139306: Fix margin sides for right-to-left scrollbars depending on the actual position of the scrollbar as determined by layout.scrollbar.side, r=tn (34328312d)
- Fix some full zoom FrameMetrics changes not propagating to APZ. (bug 1147648, r=botond) (91f009ac4)
- Bug 1159405 - Fix "Found a non-root APZ with no handoff parent". r=botond (09b0ddf07)
- Bug 1161040 - Don't set a scrollparent on the root content document in the child process that points to itself. r=tn (d0dfbffb0)
- Bug 1161040 - Add some assertions to guard against infinite loops in the handoff chains. r=botond (e6bae82e8)
- Bug 1153539 patch 1 - Improve comments for nsLayoutUtils::ComputeSuitableScaleForAnimation. r=roc (1b2bc00cd)
- Bug 1153539 patch 2 - Compute scale for rasterizing off-main-thread transform animations based on ratio to display size in addition to maximum and minimum scale. r=roc (97d632d0f)
- Bug 1160250 - Extract a helper method from the triplicated comp-bounds function to determine if we need to deflate the scrollbars. r=botond,tn (8d79c845f)
- Bug 1160250 - Extract a helper function from the triplicated composition-bounds-updating code. r=botond,tn (5b3f71329)
- Bug 1160250 - Collapse the code from CalculateRootCompositionSize into UpdateCompositionBounds. r=botond,tn (db0f081d6)
- Bug 1160250 - Put in a missing transfomToAncestor scaling factor. r=botond,tn (14837aa3a)
- Bug 1160250 - Fix up the rect being used for the composition size calculation. r=tn (0ba58021f)
- Bug 1139575 - Reset velocity on axes when going from a pan to a pinch. r=botond (2e03d04ab)
- Bug 1136971 - Draw layer borders correctly in the presence of multi-FrameMetrics. r=kats (e72f5b171)
- Bug 1148871 - Only apply checkerboarding background color to opaque layers. r=botond (20e070b84)
- Bug 1157327 - Don't cull out container layers, because their prepared data might be null and cause crashes. r=nical (3d06c925f)
- Bug 1157327 follow-up to add a comment. r=me and DONTBUILD (4cd74c0a1)
- Bug 1160566 - Make FrameMetrics.mCompositionBounds private and add a getter/setter for it. r=botond (277dd9afd)
- Bug 1160566 - Change some return values to be reference-to-const. r=botond (2ce17b63f)
- Bug 1158933 - Prevent scrollbars from jumping while zoomed in the B2G browser. r=botond (eca8aae7d)
- Bug 1158933 - Replace the compositedHeight/scrollableHeight (and width) term with the adjusted scrollThumbRatio. r=botond (236af4c4a)
- Bug 1156401 - Fix painting when building fennec with apzc. r=kats, r=botond (be18764b9)
- Bug 1159305 - patch 1 - Provide logical accessors for nsStylePosition and nsStyleSides fields. r=dbaron (7a90c519d)
- Bug 1159305 - patch 2 - Clean up layout code by using the new accessors. r=smontagu (926eb7dd5)
- Bug 1164406 - Expose scrollbar-area deflation in nsLayoutUtils. r=kats (42e5e8784)
- Bug 1139895 - Add fuzz for 1062792-1.html. r=tn (e38d0ac73)
- Bug 1139893 - Disable reftest bugs/1062108-1.html on mulet. r=jfkthame (930590d73)
- Move the APZ scroll frame clip onto FrameMetrics. (bug 1148582 part 3, r=mstange,tn) (c8e05f8d7)
- Fix PostprocessRetainedLayers to not test occlusion with asynchronous clips. (bug 1148582 part 5, r=tn) (cc71cafe2)
- Bug 1146626 - Refresh the reftest snapshot after adjusting the async scroll offsets. r=roc (1f041955d)
- Bug 1160642. Add reftest-async-zoom to apply an async zoom before taking snapshot. r=dbaron (1e8e54d8d)
- Bug 1160285 - Add a staticruntime version of mfbt and link some stuff against it. r=glandium (c733c49c7)
- Bug 786520 - Install things to $(DIST)/branding from moz.build instead of manual rules in Makefile.ins. r=mshal (42d38eb26)
- Bug 1155776 - move USE_EXTENSION_MANIFEST to moz.build; r=mshal (a87ecc2ca)
- Bug 1155816 - part 0 - remove NO_JS_MANIFEST from testing/mochitest/Makefile.in; r=mshal (af90a362c)
- Bug 1155816 - part 1 - move NO_JS_MANIFEST to moz.build; r=mshal (3a55e99a0)
- Bug 978591 - Remove per-directory uses of MOZ_CHROME_FILE_FORMAT. r=glandium (5084d62b5)
- Bug 991983 - Set GARBAGE for GeneratedSources in the recursivemake backend. r=gps (b8ae57c14)
- Bug 991983 - Emit absolute paths for UnifiedSources. r=gps (4100640d0)
- Bug 991983 - Emit absolute paths for other sources. r=gps (f30ddd773)
- Bug 991983 - Remove commented code in gyp_reader.py. r=gps (0685eca6a)
- Bug 1167474 - Remove ELFHACK_BUILD hack. r=mshal (b9d56c0b2)
- Bug 1097804 - Part 1 - Create a library containing nsISocketTransportService and nsIDNS that can be used to support standalone WebRTC. r=mcmanus (d2f83eb1c)
- Bug 1097804 - Part 2 - Added xpcomrt build of library containing unicode util functions. r=gps (fa9306f34)
- Bug 1162852 - Remove EXTRA_COMPILE_FLAGS. r=gps (340312bc6)
- Bug 1162852 - Remove EXTRA_ASSEMBLER_FLAGS. r=gps (f124c902c)
- Bug 1162852 - Remove the VARIABLES method of GypContext now it is doing nothing. r=gps (b6c1c0246)
- accidental commit (a1bbb1ada)
- Bug 991983 - Define SOURCES as SourcePath. r=gps (678065bce)
- Bug 991983 - Use objdir-relative SOURCES instead of GENERATED_SOURCES. r=gps (b54db0304)
- Bug 991983 - Make TEST_HARNESS_FILES use the *Path classes instead of a separate set of methods to resolve paths. r=gps (025fe1ca9)
- Bug 991983 - Add a deprecation hint for GENERATED_SOURCES. r=gps (67c75f4ab)
- Bug 1172800 - Fixup after bug 991983. r=gps (ce6e8c7a3)
- Bug 1164218 - Allow running individual mochitests and reftests in chaos mode. r=roc,froydnj (f2ec1d9d8)
- Bug 1154231 - Part 1. Use LRU to manage remote layers. r=mattwoodrow (1fe47e64f)
- Bug 1128037 - Minimalist support for wildcards in jar manifests. r=gps (1b07a6ffc)
- Bug 1162569 - default engine files should be in the omni.ja file, r=markh,glandium. (b07e54881)
- Bug 1157279. Escaping CSS identifiers should use lowercase letters for hex digits, not uppercase ones. r=dbaron (6f220936e)
pm2710-fixes
roytam1 2 years ago
parent
commit
729a46113b
  1. 16
      accessible/interfaces/msaa/moz.build
  2. 4
      accessible/xpcom/moz.build
  3. 3
      b2g/app/b2g.js
  4. 11
      b2g/chrome/content/content.css
  5. 1
      browser/installer/package-manifest.in
  6. 19
      browser/locales/Makefile.in
  7. 2
      browser/locales/jar.mn
  8. 8
      build/Makefile.in
  9. 9
      build/docs/jar-manifests.rst
  10. 5
      build/moz.build
  11. 6
      build/unix/elfhack/inject/moz.build
  12. 2
      build/unix/elfhack/moz.build
  13. 10
      config/config.mk
  14. 10
      content/test/reftest/reftest.list
  15. 44
      dom/base/nsDOMWindowUtils.cpp
  16. 22
      dom/html/reftests/autofocus/reftest.list
  17. 5
      dom/indexedDB/test/extensions/Makefile.in
  18. 5
      dom/indexedDB/test/extensions/moz.build
  19. 23
      dom/interfaces/base/nsIDOMWindowUtils.idl
  20. 37
      dom/ipc/TabChild.cpp
  21. 1
      dom/ipc/TabChild.h
  22. 12
      dom/media/directshow/moz.build
  23. 4
      dom/plugins/ipc/moz.build
  24. 2
      dom/plugins/test/testplugin/javaplugin/moz.build
  25. 2
      dom/plugins/test/testplugin/secondplugin/moz.build
  26. 16
      dom/plugins/test/testplugin/testplugin.mozbuild
  27. 4
      dom/system/qt/moz.build
  28. 6
      dom/workers/test/extensions/bootstrap/Makefile.in
  29. 6
      dom/workers/test/extensions/bootstrap/moz.build
  30. 5
      dom/workers/test/extensions/traditional/Makefile.in
  31. 5
      dom/workers/test/extensions/traditional/moz.build
  32. 4
      editor/reftests/reftest.list
  33. 48
      editor/reftests/xul/reftest.list
  34. 2
      gfx/ipc/GfxMessageUtils.h
  35. 96
      gfx/layers/FrameMetrics.h
  36. 21
      gfx/layers/Layers.cpp
  37. 12
      gfx/layers/Layers.h
  38. 5
      gfx/layers/LayersLogging.cpp
  39. 11
      gfx/layers/apz/src/APZCTreeManager.cpp
  40. 31
      gfx/layers/apz/src/AsyncPanZoomController.cpp
  41. 9
      gfx/layers/apz/src/AsyncPanZoomController.h
  42. 4
      gfx/layers/apz/src/Axis.cpp
  43. 4
      gfx/layers/client/ClientTiledPaintedLayer.cpp
  44. 2
      gfx/layers/client/TiledContentClient.cpp
  45. 61
      gfx/layers/composite/AsyncCompositionManager.cpp
  46. 46
      gfx/layers/composite/ContainerLayerComposite.cpp
  47. 2
      gfx/layers/composite/LayerManagerComposite.cpp
  48. 30
      gfx/layers/ipc/CompositorChild.cpp
  49. 5
      gfx/layers/ipc/CompositorChild.h
  50. 101
      gfx/layers/ipc/CompositorLRU.cpp
  51. 61
      gfx/layers/ipc/CompositorLRU.h
  52. 22
      gfx/layers/ipc/CompositorParent.cpp
  53. 2
      gfx/layers/ipc/CompositorParent.h
  54. 16
      gfx/layers/ipc/LayerTransactionParent.cpp
  55. 2
      gfx/layers/ipc/LayerTransactionParent.h
  56. 14
      gfx/layers/ipc/PCompositor.ipdl
  57. 5
      gfx/layers/ipc/PLayerTransaction.ipdl
  58. 2
      gfx/layers/moz.build
  59. 12
      gfx/tests/gtest/TestAsyncPanZoomController.cpp
  60. 2
      gfx/tests/gtest/moz.build
  61. 2
      intl/unicharutil/util/moz.build
  62. 2
      intl/unicharutil/util/objs.mozbuild
  63. 16
      intl/unicharutil/util/standalone/moz.build
  64. 8
      ipc/chromium/moz.build
  65. 35
      ipc/glue/IPCMessageUtils.h
  66. 5
      ipc/ipdl/test/cxx/moz.build
  67. 35
      layout/base/FrameLayerBuilder.cpp
  68. 6
      layout/base/nsDisplayList.cpp
  69. 401
      layout/base/nsLayoutUtils.cpp
  70. 30
      layout/base/nsLayoutUtils.h
  71. 3
      layout/build/nsLayoutStatics.cpp
  72. 165
      layout/generic/WritingModes.h
  73. 34
      layout/generic/nsBlockFrame.cpp
  74. 4
      layout/generic/nsContainerFrame.cpp
  75. 24
      layout/generic/nsFrame.cpp
  76. 73
      layout/generic/nsGfxScrollFrame.cpp
  77. 15
      layout/generic/nsGfxScrollFrame.h
  78. 33
      layout/generic/nsHTMLReflowState.cpp
  79. 1
      layout/generic/nsIScrollableFrame.h
  80. 6
      layout/reftests/abs-pos/reftest.list
  81. 20
      layout/reftests/backgrounds/reftest.list
  82. 56
      layout/reftests/backgrounds/vector/reftest.list
  83. 10
      layout/reftests/bidi/reftest.list
  84. 12
      layout/reftests/border-radius/reftest.list
  85. 12
      layout/reftests/box-ordinal/reftest.list
  86. 12
      layout/reftests/box-properties/reftest.list
  87. 10
      layout/reftests/box-shadow/reftest.list
  88. 4
      layout/reftests/box/reftest.list
  89. 474
      layout/reftests/bugs/reftest.list
  90. 10
      layout/reftests/canvas/reftest.list
  91. 6
      layout/reftests/columns/reftest.list
  92. 2
      layout/reftests/counter-style/reftest.list
  93. 8
      layout/reftests/css-disabled/button/reftest.list
  94. 8
      layout/reftests/css-disabled/select/reftest.list
  95. 8
      layout/reftests/css-enabled/button/reftest.list
  96. 8
      layout/reftests/css-enabled/select/reftest.list
  97. 6
      layout/reftests/css-gradients/reftest.list
  98. 6
      layout/reftests/css-import/reftest.list
  99. 4
      layout/reftests/css-invalid/input/reftest.list
  100. 6
      layout/reftests/css-invalid/select/reftest.list
  101. Some files were not shown because too many files have changed in this diff Show More

16
accessible/interfaces/msaa/moz.build

@ -6,14 +6,14 @@
GeckoSharedLibrary('AccessibleMarshal', linkage=None)
GENERATED_SOURCES += [
'dlldata.c',
'ISimpleDOMDocument_i.c',
'ISimpleDOMDocument_p.c',
'ISimpleDOMNode_i.c',
'ISimpleDOMNode_p.c',
'ISimpleDOMText_i.c',
'ISimpleDOMText_p.c',
SOURCES += [
'!dlldata.c',
'!ISimpleDOMDocument_i.c',
'!ISimpleDOMDocument_p.c',
'!ISimpleDOMNode_i.c',
'!ISimpleDOMNode_p.c',
'!ISimpleDOMText_i.c',
'!ISimpleDOMText_p.c',
]
DEFINES['REGISTER_PROXY_DLL'] = True

4
accessible/xpcom/moz.build

@ -20,8 +20,8 @@ UNIFIED_SOURCES += [
'xpcAccessibleValue.cpp',
]
GENERATED_SOURCES += [
'xpcAccEvents.cpp',
SOURCES += [
'!xpcAccEvents.cpp',
]
LOCAL_INCLUDES += [

3
b2g/app/b2g.js

@ -1081,3 +1081,6 @@ pref("dom.activities.developer_mode_only", "import-app");
// mulet apparently loads firefox.js as well as b2g.js, so we have to explicitly
// disable serviceworkers here to get them disabled in mulet.
pref("dom.serviceWorkers.enabled", false);
// Retain at most 10 processes' layers buffers
pref("layers.compositor-lru-size", 10);

11
b2g/chrome/content/content.css

@ -30,19 +30,14 @@ html xul|scrollbar {
pointer-events: none;
}
/* Scrollbar code will reset the margin to the correct side depending on
where layout actually puts the scrollbar */
xul|scrollbar[orient="vertical"] {
-moz-margin-start: -8px;
margin-left: -8px;
min-width: 8px;
max-width: 8px;
}
/* workaround for bug 1119057: as -moz-margin-start may not work as expected,
* force a right margin value in RTL mode. */
[dir="rtl"] xul|scrollbar[root="true"][orient="vertical"] {
-moz-margin-start: unset;
margin-right: -8px;
}
xul|scrollbar[orient="vertical"] xul|thumb {
max-width: 6px !important;
min-width: 6px !important;

1
browser/installer/package-manifest.in

@ -56,7 +56,6 @@
#endif
@RESPATH@/hyphenation/*
@RESPATH@/browser/@PREF_DIR@/palemoon-l10n.js
@RESPATH@/browser/searchplugins/*
#ifdef HAVE_MAKENSISU
@BINPATH@/uninstall/helper.exe
#endif

19
browser/locales/Makefile.in

@ -5,9 +5,6 @@
include $(topsrcdir)/config/config.mk
vpath %.xml @srcdir@/en-US/searchplugins
vpath %.xml $(LOCALE_SRCDIR)/searchplugins
ifdef LOCALE_MERGEDIR
vpath book%.inc $(LOCALE_MERGEDIR)/browser/profile
endif
@ -65,7 +62,7 @@ STUB_HOOK = $(NSINSTALL) -D "$(_ABS_DIST)/$(PKG_INST_PATH)"; \
endif
SEARCHPLUGINS_NAMES = $(shell cat $(call MERGE_FILE,/searchplugins/list.txt))
SEARCHPLUGINS_PATH := $(FINAL_TARGET)/searchplugins
SEARCHPLUGINS_PATH := .deps/generated_$(AB_CD)
SEARCHPLUGINS_TARGET := libs searchplugins
SEARCHPLUGINS := $(foreach plugin,$(addsuffix .xml,$(SEARCHPLUGINS_NAMES)),$(or $(wildcard $(call EN_US_OR_L10N_FILE,searchplugins/$(plugin))),$(info Missing searchplugin: $(plugin))))
# Some locale-specific search plugins may have preprocessor directives, but the
@ -73,6 +70,11 @@ SEARCHPLUGINS := $(foreach plugin,$(addsuffix .xml,$(SEARCHPLUGINS_NAMES)),$(or
SEARCHPLUGINS_FLAGS := --silence-missing-directive-warnings
PP_TARGETS += SEARCHPLUGINS
list-txt = $(SEARCHPLUGINS_PATH)/list.txt
GARBAGE += $(list-txt)
libs:: searchplugins
# Required for l10n.mk - defines a list of app sub dirs that should
# be included in langpack xpis.
DIST_SUBDIRS = $(DIST_SUBDIR)
@ -81,6 +83,11 @@ include $(topsrcdir)/config/rules.mk
include $(topsrcdir)/toolkit/locales/l10n.mk
$(list-txt): $(call mkdir_deps,$(SEARCHPLUGINS_PATH)) $(if $(IS_LANGUAGE_REPACK),FORCE)
$(RM) $(list-txt)
$(foreach plugin,$(SEARCHPLUGINS_NAMES),printf '$(plugin)\n' >> $(list-txt);)
searchplugins:: $(list-txt)
$(STAGEDIST): $(DIST)/branding
$(DIST)/branding:
@ -125,6 +132,7 @@ libs-%:
@$(MAKE) -C ../../services/sync/locales AB_CD=$* XPI_NAME=locale-$*
@$(MAKE) -C ../../extensions/spellcheck/locales AB_CD=$* XPI_NAME=locale-$*
@$(MAKE) -C ../../intl/locales AB_CD=$* XPI_NAME=locale-$*
@$(MAKE) -B searchplugins AB_CD=$* XPI_NAME=locale-$*
@$(MAKE) libs AB_CD=$* XPI_NAME=locale-$* PREF_DIR=$(PREF_DIR)
@$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales AB_CD=$* XPI_NAME=locale-$*
@ -157,8 +165,7 @@ clobber-zip:
$(STAGEDIST)/webapprt/chrome/$(AB_CD).jar \
$(STAGEDIST)/webapprt/chrome/$(AB_CD).manifest \
$(STAGEDIST)/$(PREF_DIR)/palemoon-l10n.js
$(RM) -rf $(STAGEDIST)/searchplugins \
$(STAGEDIST)/dictionaries \
$(RM) -rf $(STAGEDIST)/dictionaries \
$(STAGEDIST)/hyphenation \
$(STAGEDIST)/defaults/profile \
$(STAGEDIST)/chrome/$(AB_CD) \

2
browser/locales/jar.mn

@ -89,6 +89,8 @@
locale/browser/syncQuota.dtd (%chrome/browser/syncQuota.dtd)
locale/browser/syncQuota.properties (%chrome/browser/syncQuota.properties)
#endif
locale/browser/searchplugins/list.txt (.deps/generated_@AB_CD@/list.txt)
locale/browser/searchplugins/ (.deps/generated_@AB_CD@/*.xml)
% locale browser-region @AB_CD@ %locale/browser-region/
locale/browser-region/region.properties (%chrome/browser-region/region.properties)
# the following files are browser-specific overrides

8
build/Makefile.in

@ -7,14 +7,6 @@ USE_RCS_MK := 1
include $(topsrcdir)/config/makefiles/makeutils.mk
ifdef MOZ_APP_BASENAME
DIST_FILES = $(srcdir)/application.ini
ifneq (android,$(MOZ_WIDGET_TOOLKIT))
ifdef MOZ_UPDATER
DIST_FILES += update-settings.ini
endif
endif
ifdef LIBXUL_SDK
APP_INI_DEPS = $(LIBXUL_DIST)/bin/platform.ini
else

9
build/docs/jar-manifests.rst

@ -59,6 +59,15 @@ file from the alternate localization source tree
locale/path/localized.dtd (%localized/path/localized.dtd)
The source tree location can also use wildcards, in which case the path in
jar is expected to be a base directory. Paths before the wildcard are not
made part of the destination path::
path/in/jar/ (source/tree/location/*.xul)
The above will install all xul files under ``source/tree/location`` as
``path/in/jar/*.xul``.
Register Chrome
===============

5
build/moz.build

@ -70,3 +70,8 @@ FINAL_TARGET_FILES += [TOPSRCDIR + '/.gdbinit']
# Install the clang-cl runtime library for ASAN next to the binaries we produce.
if CONFIG['MOZ_ASAN'] and CONFIG['CLANG_CL']:
FINAL_TARGET_FILES += [CONFIG['MOZ_CLANG_RT_ASAN_LIB_PATH']]
if CONFIG['MOZ_APP_BASENAME']:
DIST_FILES += ['application.ini']
if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'android' and CONFIG['MOZ_UPDATER']:
DIST_FILES += ['update-settings.ini']

6
build/unix/elfhack/inject/moz.build

@ -13,12 +13,10 @@ elif CONFIG['TARGET_CPU'].startswith('arm'):
else:
cpu = CONFIG['TARGET_CPU']
GENERATED_SOURCES += [
"%s.c" % cpu,
SOURCES += [
"!%s.c" % cpu,
]
DEFINES['ELFHACK_BUILD'] = True
NO_PGO = True
NO_VISIBILITY_FLAGS = True

2
build/unix/elfhack/moz.build

@ -25,6 +25,4 @@ HOST_SOURCES += [
HostProgram('elfhack')
DEFINES['ELFHACK_BUILD'] = True
NO_PGO = True

10
config/config.mk

@ -451,11 +451,11 @@ OS_COMPILE_CMMFLAGS += -fobjc-abi-version=2 -fobjc-legacy-dispatch
endif
endif
COMPILE_CFLAGS = $(VISIBILITY_FLAGS) $(DEFINES) $(INCLUDES) $(OS_INCLUDES) $(DSO_CFLAGS) $(DSO_PIC_CFLAGS) $(RTL_FLAGS) $(OS_CPPFLAGS) $(OS_COMPILE_CFLAGS) $(CFLAGS) $(MOZBUILD_CFLAGS) $(EXTRA_COMPILE_FLAGS)
COMPILE_CXXFLAGS = $(if $(DISABLE_STL_WRAPPING),,$(STL_FLAGS)) $(VISIBILITY_FLAGS) $(DEFINES) $(INCLUDES) $(OS_INCLUDES) $(DSO_CFLAGS) $(DSO_PIC_CFLAGS) $(RTL_FLAGS) $(OS_CPPFLAGS) $(OS_COMPILE_CXXFLAGS) $(CXXFLAGS) $(MOZBUILD_CXXFLAGS) $(EXTRA_COMPILE_FLAGS)
COMPILE_CMFLAGS = $(OS_COMPILE_CMFLAGS) $(MOZBUILD_CMFLAGS) $(EXTRA_COMPILE_FLAGS)
COMPILE_CMMFLAGS = $(OS_COMPILE_CMMFLAGS) $(MOZBUILD_CMMFLAGS) $(EXTRA_COMPILE_FLAGS)
ASFLAGS += $(MOZBUILD_ASFLAGS) $(EXTRA_ASSEMBLER_FLAGS)
COMPILE_CFLAGS = $(VISIBILITY_FLAGS) $(DEFINES) $(INCLUDES) $(OS_INCLUDES) $(DSO_CFLAGS) $(DSO_PIC_CFLAGS) $(RTL_FLAGS) $(OS_CPPFLAGS) $(OS_COMPILE_CFLAGS) $(CFLAGS) $(MOZBUILD_CFLAGS)
COMPILE_CXXFLAGS = $(if $(DISABLE_STL_WRAPPING),,$(STL_FLAGS)) $(VISIBILITY_FLAGS) $(DEFINES) $(INCLUDES) $(OS_INCLUDES) $(DSO_CFLAGS) $(DSO_PIC_CFLAGS) $(RTL_FLAGS) $(OS_CPPFLAGS) $(OS_COMPILE_CXXFLAGS) $(CXXFLAGS) $(MOZBUILD_CXXFLAGS)
COMPILE_CMFLAGS = $(OS_COMPILE_CMFLAGS) $(MOZBUILD_CMFLAGS)
COMPILE_CMMFLAGS = $(OS_COMPILE_CMMFLAGS) $(MOZBUILD_CMMFLAGS)
ASFLAGS += $(MOZBUILD_ASFLAGS)
ifndef CROSS_COMPILE
HOST_CFLAGS += $(RTL_FLAGS)

10
content/test/reftest/reftest.list

@ -3,11 +3,11 @@
== bug456008.xhtml bug456008-ref.html
== bug439965.html bug439965-ref.html
== bug427779.xml bug427779-ref.xml
skip-if(B2G) == bug559996.html bug559996-ref.html # bug 773482
skip-if(B2G) == bug591981-1.html bug591981-ref.html
skip-if(B2G||Mulet) == bug559996.html bug559996-ref.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) == bug591981-1.html bug591981-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
== bug591981-2.html bug591981-ref.html
== bug592366-1.html bug592366-ref.html
skip-if(B2G) == bug592366-2.html bug592366-ref.html
skip-if(B2G&&browserIsRemote) == bug592366-1.xhtml bug592366-ref.xhtml
skip-if(B2G) == bug592366-2.xhtml bug592366-ref.xhtml
skip-if(B2G||Mulet) == bug592366-2.html bug592366-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
skip-if((B2G&&browserIsRemote)||Mulet) == bug592366-1.xhtml bug592366-ref.xhtml # Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) == bug592366-2.xhtml bug592366-ref.xhtml # Initial mulet triage: parity with B2G/B2G Desktop
== bug798068.xhtml bug798068-ref.xhtml

44
dom/base/nsDOMWindowUtils.cpp

@ -39,6 +39,7 @@
#include "nsJSEnvironment.h"
#include "nsJSUtils.h"
#include "mozilla/ChaosMode.h"
#include "mozilla/EventStateManager.h"
#include "mozilla/MiscEvents.h"
#include "mozilla/MouseEvents.h"
@ -2448,6 +2449,33 @@ nsDOMWindowUtils::SetAsyncScrollOffset(nsIDOMNode* aNode,
return NS_OK;
}
NS_IMETHODIMP
nsDOMWindowUtils::SetAsyncZoom(nsIDOMNode* aRootElement, float aValue)
{
nsCOMPtr<Element> element = do_QueryInterface(aRootElement);
if (!element) {
return NS_ERROR_INVALID_ARG;
}
FrameMetrics::ViewID viewId;
if (!nsLayoutUtils::FindIDFor(element, &viewId)) {
return NS_ERROR_UNEXPECTED;
}
nsIWidget* widget = GetWidget();
if (!widget) {
return NS_ERROR_FAILURE;
}
LayerManager* manager = widget->GetLayerManager();
if (!manager) {
return NS_ERROR_FAILURE;
}
ShadowLayerForwarder* forwarder = manager->AsShadowForwarder();
if (!forwarder || !forwarder->HasShadowManager()) {
return NS_ERROR_UNEXPECTED;
}
forwarder->GetShadowManager()->SendSetAsyncZoom(viewId, aValue);
return NS_OK;
}
NS_IMETHODIMP
nsDOMWindowUtils::ComputeAnimationDistance(nsIDOMElement* aElement,
const nsAString& aProperty,
@ -3746,6 +3774,22 @@ nsDOMWindowUtils::GetServiceWorkersTestingEnabled(bool *aEnabled)
return NS_OK;
}
NS_IMETHODIMP
nsDOMWindowUtils::EnterChaosMode()
{
MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome());
ChaosMode::enterChaosMode();
return NS_OK;
}
NS_IMETHODIMP
nsDOMWindowUtils::LeaveChaosMode()
{
MOZ_RELEASE_ASSERT(nsContentUtils::IsCallerChrome());
ChaosMode::leaveChaosMode();
return NS_OK;
}
NS_INTERFACE_MAP_BEGIN(nsTranslationNodeList)
NS_INTERFACE_MAP_ENTRY(nsISupports)
NS_INTERFACE_MAP_ENTRY(nsITranslationNodeList)

22
dom/html/reftests/autofocus/reftest.list

@ -1,13 +1,13 @@
default-preferences pref(dom.forms.number,true)
skip-if(B2G) needs-focus == input-load.html input-ref.html # B2G timed out waiting for reftest-wait to be removed
skip-if(B2G) needs-focus == input-create.html input-ref.html # B2G timed out waiting for reftest-wait to be removed
skip-if(B2G) needs-focus == input-number.html input-number-ref.html # B2G timed out waiting for reftest-wait to be removed
skip-if(B2G) needs-focus == button-load.html button-ref.html # B2G timed out waiting for reftest-wait to be removed
skip-if(B2G) needs-focus == button-create.html button-ref.html # B2G timed out waiting for reftest-wait to be removed
skip-if(B2G) needs-focus == textarea-load.html textarea-ref.html # B2G timed out waiting for reftest-wait to be removed
skip-if(B2G) needs-focus == textarea-create.html textarea-ref.html # B2G timed out waiting for reftest-wait to be removed
skip-if(B2G) needs-focus == select-load.html select-ref.html # B2G timed out waiting for reftest-wait to be removed
skip-if(B2G) needs-focus == select-create.html select-ref.html # B2G timed out waiting for reftest-wait to be removed
skip-if(B2G||Mulet) needs-focus == input-load.html input-ref.html # B2G timed out waiting for reftest-wait to be removed # Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) needs-focus == input-create.html input-ref.html # B2G timed out waiting for reftest-wait to be removed # Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) needs-focus == input-number.html input-number-ref.html # B2G timed out waiting for reftest-wait to be removed # Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) needs-focus == button-load.html button-ref.html # B2G timed out waiting for reftest-wait to be removed # Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) needs-focus == button-create.html button-ref.html # B2G timed out waiting for reftest-wait to be removed # Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) needs-focus == textarea-load.html textarea-ref.html # B2G timed out waiting for reftest-wait to be removed # Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) needs-focus == textarea-create.html textarea-ref.html # B2G timed out waiting for reftest-wait to be removed # Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) needs-focus == select-load.html select-ref.html # B2G timed out waiting for reftest-wait to be removed # Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) needs-focus == select-create.html select-ref.html # B2G timed out waiting for reftest-wait to be removed # Initial mulet triage: parity with B2G/B2G Desktop
needs-focus == autofocus-after-load.html autofocus-after-load-ref.html
fails-if(B2G) needs-focus == autofocus-leaves-iframe.html autofocus-leaves-iframe-ref.html # B2G focus difference between test and reference
skip-if(B2G) needs-focus == autofocus-after-body-focus.html autofocus-after-body-focus-ref.html # bug 773482
fails-if(B2G||Mulet) needs-focus == autofocus-leaves-iframe.html autofocus-leaves-iframe-ref.html # B2G focus difference between test and reference # Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) needs-focus == autofocus-after-body-focus.html autofocus-after-body-focus-ref.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop

5
dom/indexedDB/test/extensions/Makefile.in

@ -2,11 +2,6 @@
# 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/.
DIST_FILES = \
bootstrap.js \
install.rdf \
$(NULL)
TEST_EXTENSIONS_DIR = $(DEPTH)/_tests/testing/mochitest/extensions
GENERATED_DIRS = $(TEST_EXTENSIONS_DIR)

5
dom/indexedDB/test/extensions/moz.build

@ -5,3 +5,8 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
XPI_NAME = 'indexedDB'
DIST_FILES += [
'bootstrap.js',
'install.rdf',
]

23
dom/interfaces/base/nsIDOMWindowUtils.idl

@ -49,7 +49,7 @@ interface nsIJSRAIIHelper;
interface nsIContentPermissionRequest;
interface nsIObserver;
[scriptable, uuid(34a42cdc-7a04-4e71-8a5c-63e092fba58e)]
[scriptable, uuid(098d9f0d-7809-4d3c-8fc6-e5b3fb71835b)]
interface nsIDOMWindowUtils : nsISupports {
/**
@ -1430,6 +1430,14 @@ interface nsIDOMWindowUtils : nsISupports {
*/
void setAsyncScrollOffset(in nsIDOMNode aNode, in int32_t aX, in int32_t aY);
/**
* Set async zoom value. aRootElement should be the document element of our
* document. The next composite will render with that zoom added to any
* existing zoom if async scrolling is enabled, and then the zoom will be
* removed. Only call this while test-controlled refreshes is enabled.
*/
void setAsyncZoom(in nsIDOMNode aRootElement, in float aValue);
/**
* Method for testing StyleAnimationValue::ComputeDistance.
*
@ -1806,6 +1814,19 @@ interface nsIDOMWindowUtils : nsISupports {
* Enable some service workers testing features.
*/
attribute boolean serviceWorkersTestingEnabled;
/**
* Increase the chaos mode activation level. An equivalent number of
* calls to leaveChaosMode must be made in order to restore the original
* chaos mode state. If the activation level is nonzero all chaos mode
* features are activated.
*/
void enterChaosMode();
/**
* Decrease the chaos mode activation level. See enterChaosMode().
*/
void leaveChaosMode();
};
[scriptable, uuid(c694e359-7227-4392-a138-33c0cc1f15a6)]

37
dom/ipc/TabChild.cpp

@ -192,9 +192,9 @@ TabChildBase::InitializeRootMetrics()
// be keeping, as well as putting the scroll offset back to
// the top-left of the page.
mLastRootMetrics.SetViewport(CSSRect(CSSPoint(), kDefaultViewportSize));
mLastRootMetrics.mCompositionBounds = ParentLayerRect(
mLastRootMetrics.SetCompositionBounds(ParentLayerRect(
ParentLayerPoint(),
ParentLayerSize(ViewAs<ParentLayerPixel>(mInnerSize, PixelCastJustification::ScreenIsParentLayerForRoot)));
ParentLayerSize(ViewAs<ParentLayerPixel>(mInnerSize, PixelCastJustification::ScreenIsParentLayerForRoot))));
mLastRootMetrics.SetZoom(CSSToParentLayerScale2D(mLastRootMetrics.CalculateIntrinsicScale()));
mLastRootMetrics.SetDevPixelsPerCSSPixel(WebWidget()->GetDefaultScale());
// We use ParentLayerToLayerScale(1) below in order to turn the
@ -330,9 +330,9 @@ TabChildBase::HandlePossibleViewportChange(const ScreenIntSize& aOldScreenSize)
FrameMetrics metrics(mLastRootMetrics);
metrics.SetViewport(CSSRect(CSSPoint(), viewport));
metrics.mCompositionBounds = ParentLayerRect(
metrics.SetCompositionBounds(ParentLayerRect(
ParentLayerPoint(),
ParentLayerSize(ViewAs<ParentLayerPixel>(mInnerSize, PixelCastJustification::ScreenIsParentLayerForRoot)));
ParentLayerSize(ViewAs<ParentLayerPixel>(mInnerSize, PixelCastJustification::ScreenIsParentLayerForRoot))));
metrics.SetRootCompositionSize(
ScreenSize(mInnerSize) * ScreenToLayoutDeviceScale(1.0f) / metrics.GetDevPixelsPerCSSPixel());
@ -2977,17 +2977,23 @@ TabChild::NotifyPainted()
void
TabChild::MakeVisible()
{
if (mWidget) {
mWidget->Show(true);
}
CompositorChild* compositor = CompositorChild::Get();
compositor->SendNotifyVisible(mLayersId);
if (mWidget) {
mWidget->Show(true);
}
}
void
TabChild::MakeHidden()
{
if (mWidget) {
mWidget->Show(false);
}
CompositorChild* compositor = CompositorChild::Get();
compositor->SendNotifyHidden(mLayersId);
if (mWidget) {
mWidget->Show(false);
}
}
void
@ -3131,6 +3137,17 @@ TabChild::DidComposite(uint64_t aTransactionId)
manager->DidComposite(aTransactionId);
}
void
TabChild::ClearCachedResources()
{
MOZ_ASSERT(mWidget);
MOZ_ASSERT(mWidget->GetLayerManager());
MOZ_ASSERT(mWidget->GetLayerManager()->GetBackendType() == LayersBackend::LAYERS_CLIENT);
ClientLayerManager *manager = static_cast<ClientLayerManager*>(mWidget->GetLayerManager());
manager->ClearCachedResources();
}
NS_IMETHODIMP
TabChild::OnShowTooltip(int32_t aXCoords, int32_t aYCoords, const char16_t *aTipText)
{

1
dom/ipc/TabChild.h

@ -475,6 +475,7 @@ public:
static TabChild* GetFrom(uint64_t aLayersId);
void DidComposite(uint64_t aTransactionId);
void ClearCachedResources();
static inline TabChild*
GetFrom(nsIDOMWindow* aWindow)

12
dom/media/directshow/moz.build

@ -28,12 +28,12 @@ SOURCES += [
# If WebRTC isn't being built, we need to compile the DirectShow base classes so that
# they're available at link time.
if not CONFIG['MOZ_WEBRTC']:
SOURCES += [ '%s/%s' % (TOPSRCDIR, p) for p in [
'media/webrtc/trunk/webrtc/modules/video_capture/windows/BaseFilter.cpp',
'media/webrtc/trunk/webrtc/modules/video_capture/windows/BaseInputPin.cpp',
'media/webrtc/trunk/webrtc/modules/video_capture/windows/BasePin.cpp',
'media/webrtc/trunk/webrtc/modules/video_capture/windows/MediaType.cpp',
]]
SOURCES += [
'/media/webrtc/trunk/webrtc/modules/video_capture/windows/BaseFilter.cpp',
'/media/webrtc/trunk/webrtc/modules/video_capture/windows/BaseInputPin.cpp',
'/media/webrtc/trunk/webrtc/modules/video_capture/windows/BasePin.cpp',
'/media/webrtc/trunk/webrtc/modules/video_capture/windows/MediaType.cpp',
]
FAIL_ON_WARNINGS = True

4
dom/plugins/ipc/moz.build

@ -68,10 +68,8 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
]
if CONFIG['MOZ_ENABLE_QT']:
GENERATED_SOURCES += [
'moc_NestedLoopTimer.cpp',
]
SOURCES += [
'!moc_NestedLoopTimer.cpp',
'NestedLoopTimer.cpp',
'PluginHelperQt.cpp',
]

2
dom/plugins/test/testplugin/javaplugin/moz.build

@ -6,5 +6,5 @@
SharedLibrary('nptestjava')
relative_path = '..'
relative_path = 'javaplugin'
include('../testplugin.mozbuild')

2
dom/plugins/test/testplugin/secondplugin/moz.build

@ -6,5 +6,5 @@
SharedLibrary('npsecondtest')
relative_path = '..'
relative_path = 'secondplugin'
include('../testplugin.mozbuild')

16
dom/plugins/test/testplugin/testplugin.mozbuild

@ -6,35 +6,35 @@
DIST_INSTALL = False
UNIFIED_SOURCES += [ '%s/%s' % (relative_path, p) for p in [
UNIFIED_SOURCES += [
'nptest.cpp',
'nptest_utils.cpp',
]]
]
UNIFIED_SOURCES += [
'nptest_name.cpp',
'%s/nptest_name.cpp' % relative_path,
]
toolkit = CONFIG['MOZ_WIDGET_TOOLKIT']
if toolkit == 'cocoa':
UNIFIED_SOURCES += [
relative_path + '/nptest_macosx.mm'
'nptest_macosx.mm'
]
elif toolkit in ('gtk2', 'gtk3'):
UNIFIED_SOURCES += [
relative_path + '/nptest_gtk2.cpp',
'nptest_gtk2.cpp',
]
elif toolkit == 'android':
UNIFIED_SOURCES += [
relative_path + '/nptest_droid.cpp',
'nptest_droid.cpp',
]
elif toolkit == 'qt':
UNIFIED_SOURCES += [
relative_path + '/nptest_qt.cpp',
'nptest_qt.cpp',
]
elif toolkit == 'windows':
UNIFIED_SOURCES += [
relative_path + '/nptest_windows.cpp',
'nptest_windows.cpp',
]
OS_LIBS += [
'msimg32',

4
dom/system/qt/moz.build

@ -5,10 +5,8 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
if CONFIG['MOZ_ENABLE_QT5GEOPOSITION']:
GENERATED_SOURCES += [
'moc_QTMLocationProvider.cpp',
]
SOURCES += [
'!moc_QTMLocationProvider.cpp',
'QTMLocationProvider.cpp',
]

6
dom/workers/test/extensions/bootstrap/Makefile.in

@ -2,12 +2,6 @@
# 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/.
DIST_FILES = \
bootstrap.js \
install.rdf \
worker.js \
$(NULL)
TEST_EXTENSIONS_DIR = $(DEPTH)/_tests/testing/mochitest/extensions
GENERATED_DIRS = $(TEST_EXTENSIONS_DIR)

6
dom/workers/test/extensions/bootstrap/moz.build

@ -5,3 +5,9 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
XPI_NAME = 'workerbootstrap'
DIST_FILES += [
'bootstrap.js',
'install.rdf',
'worker.js',
]

5
dom/workers/test/extensions/traditional/Makefile.in

@ -2,11 +2,6 @@
# 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/.
DIST_FILES = \
install.rdf \
worker.js \
$(NULL)
TEST_EXTENSIONS_DIR = $(DEPTH)/_tests/testing/mochitest/extensions
GENERATED_DIRS = $(TEST_EXTENSIONS_DIR)

5
dom/workers/test/extensions/traditional/moz.build

@ -16,3 +16,8 @@ EXTRA_COMPONENTS += [
]
XPI_NAME = 'worker'
DIST_FILES += [
'install.rdf',
'worker.js',
]

4
editor/reftests/reftest.list

@ -97,7 +97,7 @@ skip-if(Android||B2G) needs-focus == 462758-grabbers-resizers.html 462758-grabbe
== 694880-3.html 694880-ref.html
== 388980-1.html 388980-1-ref.html
needs-focus == spellcheck-superscript-1.html spellcheck-superscript-1-ref.html
skip-if(B2G) fails-if(Android) needs-focus != spellcheck-superscript-2.html spellcheck-superscript-2-ref.html # bug 783658
skip-if(B2G||Mulet) fails-if(Android) needs-focus != spellcheck-superscript-2.html spellcheck-superscript-2-ref.html # bug 783658 # Initial mulet triage: parity with B2G/B2G Desktop
needs-focus pref(selectioncaret.enabled,false) == 824080-1.html 824080-1-ref.html
needs-focus == 824080-2.html 824080-2-ref.html
needs-focus pref(selectioncaret.enabled,false) == 824080-3.html 824080-3-ref.html
@ -110,7 +110,7 @@ needs-focus pref(selectioncaret.enabled,false) == 824080-7.html 824080-7-ref.htm
needs-focus != 824080-6.html 824080-7.html
# Bug 674927: copy spellcheck-textarea tests to contenteditable
== spellcheck-contenteditable-attr.html spellcheck-contenteditable-nofocus-ref.html
fails-if(Android||B2G) needs-focus != spellcheck-contenteditable-attr.html spellcheck-contenteditable-ref.html # B2G no spellcheck underline
fails-if(Android||B2G||Mulet) needs-focus != spellcheck-contenteditable-attr.html spellcheck-contenteditable-ref.html # B2G no spellcheck underline # Initial mulet triage: parity with B2G/B2G Desktop
needs-focus == spellcheck-contenteditable-focused.html spellcheck-contenteditable-ref.html
needs-focus == spellcheck-contenteditable-focused-reframe.html spellcheck-contenteditable-ref.html
== spellcheck-contenteditable-nofocus.html spellcheck-contenteditable-disabled-ref.html

48
editor/reftests/xul/reftest.list

@ -1,29 +1,29 @@
fails-if(Android||B2G) skip-if(B2G&&browserIsRemote) == empty-1.xul empty-ref.xul # bug 783658
skip-if(B2G&&browserIsRemote) != empty-2.xul empty-ref.xul
fails-if(Android||B2G) skip-if((B2G&&browserIsRemote)||Mulet) == empty-1.xul empty-ref.xul # bug 783658 # Initial mulet triage: parity with B2G/B2G Desktop
skip-if((B2G&&browserIsRemote)||Mulet) != empty-2.xul empty-ref.xul # Initial mulet triage: parity with B2G/B2G Desktop
# There is no way to simulate an autocomplete textbox in windows XP/Vista/7 default theme using CSS.
# Therefore, the equlity tests below should be marked as failing.
fails-if(Android||B2G) fails-if(windowsDefaultTheme&&/^Windows\x20NT\x20(5\.[12]|6\.[012])/.test(http.oscpu)) skip-if(B2G&&browserIsRemote) == autocomplete-1.xul autocomplete-ref.xul # bug 783658
fails-if(Android||B2G) fails-if(windowsDefaultTheme&&/^Windows\x20NT\x20(5\.[12]|6\.[012])/.test(http.oscpu)) skip-if(B2G&&browserIsRemote) == emptyautocomplete-1.xul emptyautocomplete-ref.xul # bug 783658
skip-if(B2G&&browserIsRemote) != emptymultiline-1.xul emptymultiline-ref.xul
fails-if(Android||B2G) skip-if(B2G&&browserIsRemote) == emptymultiline-2.xul emptymultiline-ref.xul # bug 783658
fails-if(Android||B2G) skip-if(B2G&&browserIsRemote) == emptytextbox-1.xul emptytextbox-ref.xul # bug 783658
fails-if(Android||B2G) skip-if(B2G&&browserIsRemote) == emptytextbox-2.xul emptytextbox-ref.xul # bug 783658
skip-if(B2G&&browserIsRemote) != emptytextbox-3.xul emptytextbox-ref.xul
skip-if(B2G&&browserIsRemote) != emptytextbox-4.xul emptytextbox-ref.xul
fails-if(Android||B2G) skip-if(B2G&&browserIsRemote) == emptytextbox-5.xul emptytextbox-ref.xul # bug 783658
fails-if(Android||B2G) fails-if(windowsDefaultTheme&&/^Windows\x20NT\x20(5\.[12]|6\.[012])/.test(http.oscpu)) skip-if((B2G&&browserIsRemote)||Mulet) == autocomplete-1.xul autocomplete-ref.xul # bug 783658 # Initial mulet triage: parity with B2G/B2G Desktop
fails-if(Android||B2G) fails-if(windowsDefaultTheme&&/^Windows\x20NT\x20(5\.[12]|6\.[012])/.test(http.oscpu)) skip-if((B2G&&browserIsRemote)||Mulet) == emptyautocomplete-1.xul emptyautocomplete-ref.xul # bug 783658 # Initial mulet triage: parity with B2G/B2G Desktop
skip-if((B2G&&browserIsRemote)||Mulet) != emptymultiline-1.xul emptymultiline-ref.xul # Initial mulet triage: parity with B2G/B2G Desktop
fails-if(Android||B2G) skip-if((B2G&&browserIsRemote)||Mulet) == emptymultiline-2.xul emptymultiline-ref.xul # bug 783658 # Initial mulet triage: parity with B2G/B2G Desktop
fails-if(Android||B2G) skip-if((B2G&&browserIsRemote)||Mulet) == emptytextbox-1.xul emptytextbox-ref.xul # bug 783658 # Initial mulet triage: parity with B2G/B2G Desktop
fails-if(Android||B2G) skip-if((B2G&&browserIsRemote)||Mulet) == emptytextbox-2.xul emptytextbox-ref.xul # bug 783658 # Initial mulet triage: parity with B2G/B2G Desktop
skip-if((B2G&&browserIsRemote)||Mulet) != emptytextbox-3.xul emptytextbox-ref.xul # Initial mulet triage: parity with B2G/B2G Desktop
skip-if((B2G&&browserIsRemote)||Mulet) != emptytextbox-4.xul emptytextbox-ref.xul # Initial mulet triage: parity with B2G/B2G Desktop
fails-if(Android||B2G) skip-if((B2G&&browserIsRemote)||Mulet) == emptytextbox-5.xul emptytextbox-ref.xul # bug 783658 # Initial mulet triage: parity with B2G/B2G Desktop
# There is no way to simulate a number textbox in windows XP/Vista/7 default theme using CSS.
# Therefore, the equlity tests below should be marked as failing.
skip-if(B2G&&browserIsRemote) != number-1.xul number-ref.xul
skip-if(B2G&&browserIsRemote) != number-2.xul number-ref.xul
fails-if(Android||B2G) fails-if(windowsDefaultTheme&&/^Windows\x20NT\x20(5\.[12]|6\.[012])/.test(http.oscpu)) skip-if(B2G&&browserIsRemote) == number-3.xul number-ref.xul # bug 783658
skip-if(B2G&&browserIsRemote) != number-4.xul number-ref.xul
fails-if(Android||B2G) fails-if(windowsDefaultTheme&&/^Windows\x20NT\x20(5\.[12]|6\.[012])/.test(http.oscpu)) skip-if(B2G&&browserIsRemote) == number-5.xul number-ref.xul # bug 783658
fails-if(Android||B2G) fails-if(windowsDefaultTheme&&/^Windows\x20NT\x20(5\.[12]|6\.[012])/.test(http.oscpu)) skip-if(B2G&&browserIsRemote) == numberwithvalue-1.xul numberwithvalue-ref.xul # bug 783658
fails-if(Android||B2G) skip-if(B2G&&browserIsRemote) == passwd-1.xul passwd-ref.xul # bug 783658
fails-if(Android||B2G) skip-if(B2G&&browserIsRemote) == passwd-2.xul passwd-ref.xul # bug 783658
skip-if(B2G&&browserIsRemote) != passwd-3.xul passwd-ref.xul
fails-if(Android||B2G) skip-if(B2G&&browserIsRemote) == plain-1.xul plain-ref.xul # bug 783658
fails-if(Android||B2G) skip-if(B2G&&browserIsRemote) == textbox-1.xul textbox-ref.xul
skip-if(B2G&&browserIsRemote) != textbox-disabled.xul textbox-ref.xul
skip-if((B2G&&browserIsRemote)||Mulet) != number-1.xul number-ref.xul # Initial mulet triage: parity with B2G/B2G Desktop
skip-if((B2G&&browserIsRemote)||Mulet) != number-2.xul number-ref.xul # Initial mulet triage: parity with B2G/B2G Desktop
fails-if(Android||B2G) fails-if(windowsDefaultTheme&&/^Windows\x20NT\x20(5\.[12]|6\.[012])/.test(http.oscpu)) skip-if((B2G&&browserIsRemote)||Mulet) == number-3.xul number-ref.xul # bug 783658 # Initial mulet triage: parity with B2G/B2G Desktop
skip-if((B2G&&browserIsRemote)||Mulet) != number-4.xul number-ref.xul # Initial mulet triage: parity with B2G/B2G Desktop
fails-if(Android||B2G) fails-if(windowsDefaultTheme&&/^Windows\x20NT\x20(5\.[12]|6\.[012])/.test(http.oscpu)) skip-if((B2G&&browserIsRemote)||Mulet) == number-5.xul number-ref.xul # bug 783658 # Initial mulet triage: parity with B2G/B2G Desktop
fails-if(Android||B2G) fails-if(windowsDefaultTheme&&/^Windows\x20NT\x20(5\.[12]|6\.[012])/.test(http.oscpu)) skip-if((B2G&&browserIsRemote)||Mulet) == numberwithvalue-1.xul numberwithvalue-ref.xul # bug 783658 # Initial mulet triage: parity with B2G/B2G Desktop
fails-if(Android||B2G) skip-if((B2G&&browserIsRemote)||Mulet) == passwd-1.xul passwd-ref.xul # bug 783658 # Initial mulet triage: parity with B2G/B2G Desktop
fails-if(Android||B2G) skip-if((B2G&&browserIsRemote)||Mulet) == passwd-2.xul passwd-ref.xul # bug 783658 # Initial mulet triage: parity with B2G/B2G Desktop
skip-if((B2G&&browserIsRemote)||Mulet) != passwd-3.xul passwd-ref.xul # Initial mulet triage: parity with B2G/B2G Desktop
fails-if(Android||B2G) skip-if((B2G&&browserIsRemote)||Mulet) == plain-1.xul plain-ref.xul # bug 783658 # Initial mulet triage: parity with B2G/B2G Desktop
fails-if(Android||B2G) skip-if((B2G&&browserIsRemote)||Mulet) == textbox-1.xul textbox-ref.xul # Initial mulet triage: parity with B2G/B2G Desktop
skip-if((B2G&&browserIsRemote)||Mulet) != textbox-disabled.xul textbox-ref.xul # Initial mulet triage: parity with B2G/B2G Desktop
# Read-only textboxes look like normal textboxes in windows Vista/7 default theme
fails-if(windowsDefaultTheme&&/^Windows\x20NT\x206\.[012]/.test(http.oscpu)) skip-if(B2G&&browserIsRemote) != textbox-readonly.xul textbox-ref.xul
fails-if(windowsDefaultTheme&&/^Windows\x20NT\x206\.[012]/.test(http.oscpu)) skip-if((B2G&&browserIsRemote)||Mulet) != textbox-readonly.xul textbox-ref.xul # Initial mulet triage: parity with B2G/B2G Desktop

2
gfx/ipc/GfxMessageUtils.h

@ -732,6 +732,7 @@ struct ParamTraits<mozilla::layers::FrameMetrics>
WriteParam(aMsg, aParam.GetLineScrollAmount());
WriteParam(aMsg, aParam.GetPageScrollAmount());
WriteParam(aMsg, aParam.AllowVerticalScrollWithWheel());
WriteParam(aMsg, aParam.mClipRect);
WriteParam(aMsg, aParam.GetContentDescription());
}
@ -774,6 +775,7 @@ struct ParamTraits<mozilla::layers::FrameMetrics>
ReadParam(aMsg, aIter, &aResult->mLineScrollAmount) &&
ReadParam(aMsg, aIter, &aResult->mPageScrollAmount) &&
ReadParam(aMsg, aIter, &aResult->mAllowVerticalScrollWithWheel) &&
ReadParam(aMsg, aIter, &aResult->mClipRect) &&
ReadContentDescription(aMsg, aIter, aResult));
}
};

96
gfx/layers/FrameMetrics.h

@ -8,6 +8,7 @@
#include <stdint.h> // for uint32_t, uint64_t
#include "Units.h" // for CSSRect, CSSPixel, etc
#include "mozilla/Maybe.h"
#include "mozilla/gfx/BasePoint.h" // for BasePoint
#include "mozilla/gfx/Rect.h" // for RoundedIn
#include "mozilla/gfx/ScaleFactor.h" // for ScaleFactor
@ -39,8 +40,8 @@ public:
static const FrameMetrics sNullMetrics; // We often need an empty metrics
FrameMetrics()
: mCompositionBounds(0, 0, 0, 0)
, mPresShellResolution(1)
: mPresShellResolution(1)
, mCompositionBounds(0, 0, 0, 0)
, mDisplayPort(0, 0, 0, 0)
, mCriticalDisplayPort(0, 0, 0, 0)
, mScrollableRect(0, 0, 0, 0)
@ -98,7 +99,8 @@ public:
mDoSmoothScroll == aOther.mDoSmoothScroll &&
mLineScrollAmount == aOther.mLineScrollAmount &&
mPageScrollAmount == aOther.mPageScrollAmount &&
mAllowVerticalScrollWithWheel == aOther.mAllowVerticalScrollWithWheel;
mAllowVerticalScrollWithWheel == aOther.mAllowVerticalScrollWithWheel &&
mClipRect == aOther.mClipRect;
}
bool operator!=(const FrameMetrics& aOther) const
{
@ -239,27 +241,6 @@ public:
return copy;
}
// ---------------------------------------------------------------------------
// The following metrics are all in widget space/device pixels.
//
// This is the area within the widget that we're compositing to. It is in the
// same coordinate space as the reference frame for the scrolled frame.
//
// This is useful because, on mobile, the viewport and composition dimensions
// are not always the same. In this case, we calculate the displayport using
// an area bigger than the region we're compositing to. If we used the
// viewport dimensions to calculate the displayport, we'd run into situations
// where we're prerendering the wrong regions and the content may be clipped,
// or too much of it prerendered. If the composition dimensions are the same as the
// viewport dimensions, there is no need for this and we can just use the viewport
// instead.
//
// This value is valid for nested scrollable layers as well, and is still
// relative to the layer tree origin. This value is provided by Gecko at
// layout/paint time.
ParentLayerRect mCompositionBounds;
public:
void SetPresShellResolution(float aPresShellResolution)
{
@ -271,12 +252,22 @@ public:
return mPresShellResolution;
}
void SetCompositionBounds(const ParentLayerRect& aCompositionBounds)
{
mCompositionBounds = aCompositionBounds;
}
const ParentLayerRect& GetCompositionBounds() const
{
return mCompositionBounds;
}
void SetDisplayPort(const CSSRect& aDisplayPort)
{
mDisplayPort = aDisplayPort;
}
CSSRect GetDisplayPort() const
const CSSRect& GetDisplayPort() const
{
return mDisplayPort;
}
@ -286,7 +277,7 @@ public:
mCriticalDisplayPort = aCriticalDisplayPort;
}
CSSRect GetCriticalDisplayPort() const
const CSSRect& GetCriticalDisplayPort() const
{
return mCriticalDisplayPort;
}
@ -296,7 +287,7 @@ public:
mCumulativeResolution = aCumulativeResolution;
}
LayoutDeviceToLayerScale2D GetCumulativeResolution() const
const LayoutDeviceToLayerScale2D& GetCumulativeResolution() const
{
return mCumulativeResolution;
}
@ -306,7 +297,7 @@ public:
mDevPixelsPerCSSPixel = aDevPixelsPerCSSPixel;
}
CSSToLayoutDeviceScale GetDevPixelsPerCSSPixel() const
const CSSToLayoutDeviceScale& GetDevPixelsPerCSSPixel() const
{
return mDevPixelsPerCSSPixel;
}
@ -356,7 +347,7 @@ public:
mZoom = aZoom;
}
CSSToParentLayerScale2D GetZoom() const
const CSSToParentLayerScale2D& GetZoom() const
{
return mZoom;
}
@ -463,7 +454,7 @@ public:
mExtraResolution = aExtraResolution;
}
ScreenToLayerScale2D GetExtraResolution() const
const ScreenToLayerScale2D& GetExtraResolution() const
{
return mExtraResolution;
}
@ -528,6 +519,21 @@ public:
mAllowVerticalScrollWithWheel = true;
}
void SetClipRect(const Maybe<ParentLayerIntRect>& aClipRect)
{
mClipRect = aClipRect;
}
const Maybe<ParentLayerIntRect>& GetClipRect() const
{
return mClipRect;
}
bool HasClipRect() const {
return mClipRect.isSome();
}
const ParentLayerIntRect& ClipRect() const {
return mClipRect.ref();
}
private:
// The pres-shell resolution that has been induced on the document containing
@ -539,6 +545,23 @@ private:
// it does not convert between any coordinate spaces for which we have names.
float mPresShellResolution;
// This is the area within the widget that we're compositing to. It is in the
// same coordinate space as the reference frame for the scrolled frame.
//
// This is useful because, on mobile, the viewport and composition dimensions
// are not always the same. In this case, we calculate the displayport using
// an area bigger than the region we're compositing to. If we used the
// viewport dimensions to calculate the displayport, we'd run into situations
// where we're prerendering the wrong regions and the content may be clipped,
// or too much of it prerendered. If the composition dimensions are the same
// as the viewport dimensions, there is no need for this and we can just use
// the viewport instead.
//
// This value is valid for nested scrollable layers as well, and is still
// relative to the layer tree origin. This value is provided by Gecko at
// layout/paint time.
ParentLayerRect mCompositionBounds;
// The area of a frame's contents that has been painted, relative to
// mCompositionBounds.
//
@ -681,6 +704,19 @@ private:
// Whether or not the frame can be vertically scrolled with a mouse wheel.
bool mAllowVerticalScrollWithWheel;
// The clip rect to use when compositing a layer with this FrameMetrics.
Maybe<ParentLayerIntRect> mClipRect;
// WARNING!!!!
//
// When adding new fields to FrameMetrics, the following places should be
// updated to include them (as needed):
// FrameMetrics::operator ==
// AsyncPanZoomController::NotifyLayersUpdated
// The ParamTraits specialization in GfxMessageUtils.h
//
// Please add new fields above this comment.
};
/**

21
gfx/layers/Layers.cpp

@ -926,6 +926,27 @@ Layer::GetVisibleRegionRelativeToRootLayer(nsIntRegion& aResult,
return true;
}
Maybe<ParentLayerIntRect>
Layer::GetCombinedClipRect() const
{
Maybe<ParentLayerIntRect> clip = GetClipRect();
for (size_t i = 0; i < mFrameMetrics.Length(); i++) {
if (!mFrameMetrics[i].HasClipRect()) {
continue;
}
const ParentLayerIntRect& other = mFrameMetrics[i].ClipRect();
if (clip) {
clip = Some(clip.value().Intersect(other));
} else {
clip = Some(other);
}
}
return clip;
}
ContainerLayer::ContainerLayer(LayerManager* aManager, void* aImplData)
: Layer(aManager, aImplData),
mFirstChild(nullptr),

12
gfx/layers/Layers.h

@ -1249,6 +1249,12 @@ public:
bool IsScrollbarContainer() { return mIsScrollbarContainer; }
Layer* GetMaskLayer() const { return mMaskLayer; }
/*
* Get the combined clip rect of the Layer clip and all clips on FrameMetrics.
* This is intended for use in Layout. The compositor needs to apply async
* transforms to find the combined clip.
*/
Maybe<ParentLayerIntRect> GetCombinedClipRect() const;
/**
* Retrieve the root level visible region for |this| taking into account
@ -1704,8 +1710,10 @@ protected:
nsAutoPtr<StickyPositionData> mStickyPositionData;
FrameMetrics::ViewID mScrollbarTargetId;
ScrollDirection mScrollbarDirection;
float mScrollbarThumbRatio; // Ratio of the thumb position to the scroll
// position, in app units.
// The scrollbar thumb ratio is the ratio of the thumb position (in the CSS
// pixels of the scrollframe's parent's space) to the scroll position (in the
// CSS pixels of the scrollframe's space).
float mScrollbarThumbRatio;
bool mIsScrollbarContainer;
DebugOnly<uint32_t> mDebugColorIndex;
// If this layer is used for OMTA, then this counter is used to ensure we

5
gfx/layers/LayersLogging.cpp

@ -169,7 +169,7 @@ AppendToString(std::stringstream& aStream, const FrameMetrics& m,
const char* pfx, const char* sfx, bool detailed)
{
aStream << pfx;
AppendToString(aStream, m.mCompositionBounds, "{ [cb=");
AppendToString(aStream, m.GetCompositionBounds(), "{ [cb=");
AppendToString(aStream, m.GetScrollableRect(), "] [sr=");
AppendToString(aStream, m.GetScrollOffset(), "] [s=");
if (m.GetDoSmoothScroll()) {
@ -183,6 +183,9 @@ AppendToString(std::stringstream& aStream, const FrameMetrics& m,
if (m.GetScrollParentId() != FrameMetrics::NULL_SCROLL_ID) {
AppendToString(aStream, m.GetScrollParentId(), "] [scrollParent=");
}
if (m.HasClipRect()) {
AppendToString(aStream, m.ClipRect(), "] [clip=");
}
AppendToString(aStream, m.GetZoom(), "] [z=", "] }");
} else {
AppendToString(aStream, m.GetDisplayPortMargins(), " [dpm=");

11
gfx/layers/apz/src/APZCTreeManager.cpp

@ -209,7 +209,7 @@ ComputeClipRegion(GeckoContentController* aController,
// root scrollable layer in a process, or for some of the LayerMetrics
// expansions of a multi-metrics layer), fall back to using the comp
// bounds which should be equivalent.
clipRegion = RoundedToInt(aLayer.Metrics().mCompositionBounds);
clipRegion = RoundedToInt(aLayer.Metrics().GetCompositionBounds());
}
// Optionally, the GeckoContentController can provide a touch-sensitive
@ -244,7 +244,8 @@ APZCTreeManager::PrintAPZCInfo(const LayerMetricsWrapper& aLayer,
const AsyncPanZoomController* apzc)
{
const FrameMetrics& metrics = aLayer.Metrics();
mApzcTreeLog << "APZC " << apzc->GetGuid() << "\tcb=" << metrics.mCompositionBounds
mApzcTreeLog << "APZC " << apzc->GetGuid()
<< "\tcb=" << metrics.GetCompositionBounds()
<< "\tsr=" << metrics.GetScrollableRect()
<< (aLayer.IsScrollInfoLayer() ? "\tscrollinfo" : "")
<< (apzc->HasScrollgrab() ? "\tscrollgrab" : "") << "\t"
@ -272,7 +273,7 @@ GetEventRegions(const LayerMetricsWrapper& aLayer)
{
if (aLayer.IsScrollInfoLayer()) {
return EventRegions(nsIntRegion(ParentLayerIntRect::ToUntyped(
RoundedToInt(aLayer.Metrics().mCompositionBounds))));
RoundedToInt(aLayer.Metrics().GetCompositionBounds()))));
}
return aLayer.GetEventRegions();
}
@ -1302,6 +1303,10 @@ APZCTreeManager::BuildOverscrollHandoffChain(const nsRefPtr<AsyncPanZoomControll
continue;
}
// Guard against a possible infinite-loop condition. If we hit this, the
// layout code that generates the handoff parents did something wrong.
MOZ_ASSERT(apzc->GetScrollHandoffParentId() != apzc->GetGuid().mScrollId);
// Find the AsyncPanZoomController instance with a matching layersId and
// the scroll id that matches apzc->GetScrollHandoffParentId(). To do this
// search the subtree with the same layersId for the apzc with the specified

31
gfx/layers/apz/src/AsyncPanZoomController.cpp

@ -1282,7 +1282,9 @@ nsEventStatus AsyncPanZoomController::OnScaleBegin(const PinchGestureInput& aEve
}
SetState(PINCHING);
mLastZoomFocus = aEvent.mLocalFocusPoint - mFrameMetrics.mCompositionBounds.TopLeft();
mX.SetVelocity(0);
mY.SetVelocity(0);
mLastZoomFocus = aEvent.mLocalFocusPoint - mFrameMetrics.GetCompositionBounds().TopLeft();
return nsEventStatus_eConsumeNoDefault;
}
@ -1318,7 +1320,7 @@ nsEventStatus AsyncPanZoomController::OnScale(const PinchGestureInput& aEvent) {
ReentrantMonitorAutoEnter lock(mMonitor);
CSSToParentLayerScale userZoom = mFrameMetrics.GetZoom().ToScaleFactor();
ParentLayerPoint focusPoint = aEvent.mLocalFocusPoint - mFrameMetrics.mCompositionBounds.TopLeft();
ParentLayerPoint focusPoint = aEvent.mLocalFocusPoint - mFrameMetrics.GetCompositionBounds().TopLeft();
CSSPoint cssFocusPoint = focusPoint / mFrameMetrics.GetZoom();
CSSPoint focusChange = (mLastZoomFocus - focusPoint) / userZoom;
@ -1336,9 +1338,9 @@ nsEventStatus AsyncPanZoomController::OnScale(const PinchGestureInput& aEvent) {
CSSToParentLayerScale realMinZoom = mZoomConstraints.mMinZoom;
CSSToParentLayerScale realMaxZoom = mZoomConstraints.mMaxZoom;
realMinZoom.scale = std::max(realMinZoom.scale,
mFrameMetrics.mCompositionBounds.width / mFrameMetrics.GetScrollableRect().width);
mFrameMetrics.GetCompositionBounds().width / mFrameMetrics.GetScrollableRect().width);
realMinZoom.scale = std::max(realMinZoom.scale,
mFrameMetrics.mCompositionBounds.height / mFrameMetrics.GetScrollableRect().height);
mFrameMetrics.GetCompositionBounds().height / mFrameMetrics.GetScrollableRect().height);
if (realMaxZoom < realMinZoom) {
realMaxZoom = realMinZoom;
}
@ -1833,7 +1835,7 @@ bool AsyncPanZoomController::Contains(const ScreenIntPoint& aPoint) const
ParentLayerIntRect cb;
{
ReentrantMonitorAutoEnter lock(mMonitor);
GetFrameMetrics().mCompositionBounds.ToIntRect(&cb);
GetFrameMetrics().GetCompositionBounds().ToIntRect(&cb);
}
return cb.Contains(point);
}
@ -2738,9 +2740,11 @@ ViewTransform AsyncPanZoomController::GetCurrentAsyncTransform() const {
}
ParentLayerPoint translation = (currentScrollOffset - lastPaintScrollOffset)
* mFrameMetrics.GetZoom();
* mFrameMetrics.GetZoom() * mTestAsyncZoom.scale;
return ViewTransform(mFrameMetrics.GetAsyncZoom(), -translation);
return ViewTransform(
LayerToParentLayerScale(mFrameMetrics.GetAsyncZoom().scale * mTestAsyncZoom.scale),
-translation);
}
Matrix4x4 AsyncPanZoomController::GetCurrentAsyncTransformWithOverscroll() const {
@ -2797,8 +2801,8 @@ void AsyncPanZoomController::NotifyLayersUpdated(const FrameMetrics& aLayerMetri
mPaintThrottler.TaskComplete(GetFrameTime());
bool needContentRepaint = false;
bool viewportUpdated = false;
if (FuzzyEqualsAdditive(aLayerMetrics.mCompositionBounds.width, mFrameMetrics.mCompositionBounds.width) &&
FuzzyEqualsAdditive(aLayerMetrics.mCompositionBounds.height, mFrameMetrics.mCompositionBounds.height)) {
if (FuzzyEqualsAdditive(aLayerMetrics.GetCompositionBounds().width, mFrameMetrics.GetCompositionBounds().width) &&
FuzzyEqualsAdditive(aLayerMetrics.GetCompositionBounds().height, mFrameMetrics.GetCompositionBounds().height)) {
// Remote content has sync'd up to the composition geometry
// change, so we can accept the viewport it's calculated.
if (mFrameMetrics.GetViewport().width != aLayerMetrics.GetViewport().width ||
@ -2844,7 +2848,7 @@ void AsyncPanZoomController::NotifyLayersUpdated(const FrameMetrics& aLayerMetri
// in some things into our local mFrameMetrics because these things are
// determined by Gecko and our copy in mFrameMetrics may be stale.
if (FuzzyEqualsAdditive(mFrameMetrics.mCompositionBounds.width, aLayerMetrics.mCompositionBounds.width) &&
if (FuzzyEqualsAdditive(mFrameMetrics.GetCompositionBounds().width, aLayerMetrics.GetCompositionBounds().width)