mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-26 05:11:03 +00:00
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)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -20,8 +20,8 @@ UNIFIED_SOURCES += [
|
||||
'xpcAccessibleValue.cpp',
|
||||
]
|
||||
|
||||
GENERATED_SOURCES += [
|
||||
'xpcAccEvents.cpp',
|
||||
SOURCES += [
|
||||
'!xpcAccEvents.cpp',
|
||||
]
|
||||
|
||||
LOCAL_INCLUDES += [
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) \
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
===============
|
||||
|
||||
|
||||
@@ -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']
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -25,6 +25,4 @@ HOST_SOURCES += [
|
||||
|
||||
HostProgram('elfhack')
|
||||
|
||||
DEFINES['ELFHACK_BUILD'] = True
|
||||
|
||||
NO_PGO = True
|
||||
|
||||
+5
-5
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,3 +5,8 @@
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
XPI_NAME = 'indexedDB'
|
||||
|
||||
DIST_FILES += [
|
||||
'bootstrap.js',
|
||||
'install.rdf',
|
||||
]
|
||||
|
||||
@@ -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)]
|
||||
|
||||
+27
-10
@@ -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)
|
||||
{
|
||||
|
||||
@@ -475,6 +475,7 @@ public:
|
||||
static TabChild* GetFrom(uint64_t aLayersId);
|
||||
|
||||
void DidComposite(uint64_t aTransactionId);
|
||||
void ClearCachedResources();
|
||||
|
||||
static inline TabChild*
|
||||
GetFrom(nsIDOMWindow* aWindow)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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',
|
||||
]
|
||||
|
||||
@@ -6,5 +6,5 @@
|
||||
|
||||
SharedLibrary('nptestjava')
|
||||
|
||||
relative_path = '..'
|
||||
relative_path = 'javaplugin'
|
||||
include('../testplugin.mozbuild')
|
||||
|
||||
@@ -6,5 +6,5 @@
|
||||
|
||||
SharedLibrary('npsecondtest')
|
||||
|
||||
relative_path = '..'
|
||||
relative_path = 'secondplugin'
|
||||
include('../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',
|
||||
|
||||
@@ -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',
|
||||
]
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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',
|
||||
]
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -16,3 +16,8 @@ EXTRA_COMPONENTS += [
|
||||
]
|
||||
|
||||
XPI_NAME = 'worker'
|
||||
|
||||
DIST_FILES += [
|
||||
'install.rdf',
|
||||
'worker.js',
|
||||
]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
};
|
||||
|
||||
+66
-30
@@ -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.
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -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),
|
||||
|
||||
+10
-2
@@ -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
|
||||
|
||||
@@ -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=");
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) &&
|
||||
mFrameMetrics.GetDevPixelsPerCSSPixel() == aLayerMetrics.GetDevPixelsPerCSSPixel() &&
|
||||
!viewportUpdated) {
|
||||
// Any change to the pres shell resolution was requested by APZ and is
|
||||
@@ -2870,11 +2874,14 @@ void AsyncPanZoomController::NotifyLayersUpdated(const FrameMetrics& aLayerMetri
|
||||
mFrameMetrics.SetScrollableRect(aLayerMetrics.GetScrollableRect());
|
||||
needContentRepaint = true;
|
||||
}
|
||||
mFrameMetrics.mCompositionBounds = aLayerMetrics.mCompositionBounds;
|
||||
mFrameMetrics.SetCompositionBounds(aLayerMetrics.GetCompositionBounds());
|
||||
mFrameMetrics.SetRootCompositionSize(aLayerMetrics.GetRootCompositionSize());
|
||||
mFrameMetrics.SetPresShellResolution(aLayerMetrics.GetPresShellResolution());
|
||||
mFrameMetrics.SetCumulativeResolution(aLayerMetrics.GetCumulativeResolution());
|
||||
mFrameMetrics.SetHasScrollgrab(aLayerMetrics.GetHasScrollgrab());
|
||||
mFrameMetrics.SetLineScrollAmount(aLayerMetrics.GetLineScrollAmount());
|
||||
mFrameMetrics.SetPageScrollAmount(aLayerMetrics.GetPageScrollAmount());
|
||||
mFrameMetrics.SetClipRect(aLayerMetrics.GetClipRect());
|
||||
|
||||
if (scrollOffsetUpdated) {
|
||||
APZC_LOG("%p updating scroll offset from %s to %s\n", this,
|
||||
@@ -2971,7 +2978,7 @@ void AsyncPanZoomController::ZoomToRect(CSSRect aRect) {
|
||||
{
|
||||
ReentrantMonitorAutoEnter lock(mMonitor);
|
||||
|
||||
ParentLayerRect compositionBounds = mFrameMetrics.mCompositionBounds;
|
||||
ParentLayerRect compositionBounds = mFrameMetrics.GetCompositionBounds();
|
||||
CSSRect cssPageRect = mFrameMetrics.GetScrollableRect();
|
||||
CSSPoint scrollOffset = mFrameMetrics.GetScrollOffset();
|
||||
CSSToParentLayerScale currentZoom = mFrameMetrics.GetZoom().ToScaleFactor();
|
||||
|
||||
@@ -1058,6 +1058,13 @@ public:
|
||||
{
|
||||
mTestAsyncScrollOffset = aPoint;
|
||||
}
|
||||
/**
|
||||
* Set an extra offset for testing async scrolling.
|
||||
*/
|
||||
void SetTestAsyncZoom(const LayerToParentLayerScale& aZoom)
|
||||
{
|
||||
mTestAsyncZoom = aZoom;
|
||||
}
|
||||
|
||||
void MarkAsyncTransformAppliedToContent()
|
||||
{
|
||||
@@ -1072,6 +1079,8 @@ public:
|
||||
private:
|
||||
// Extra offset to add in SampleContentTransformForFrame for testing
|
||||
CSSPoint mTestAsyncScrollOffset;
|
||||
// Extra zoom to include in SampleContentTransformForFrame for testing
|
||||
LayerToParentLayerScale mTestAsyncZoom;
|
||||
// Flag to track whether or not the APZ transform is not used. This
|
||||
// flag is recomputed for every composition frame.
|
||||
bool mAsyncTransformAppliedToContent;
|
||||
|
||||
@@ -496,7 +496,7 @@ ParentLayerCoord Axis::GetOrigin() const {
|
||||
}
|
||||
|
||||
ParentLayerCoord Axis::GetCompositionLength() const {
|
||||
return GetRectLength(GetFrameMetrics().mCompositionBounds);
|
||||
return GetRectLength(GetFrameMetrics().GetCompositionBounds());
|
||||
}
|
||||
|
||||
ParentLayerCoord Axis::GetPageStart() const {
|
||||
@@ -511,7 +511,7 @@ ParentLayerCoord Axis::GetPageLength() const {
|
||||
|
||||
bool Axis::ScaleWillOverscrollBothSides(float aScale) const {
|
||||
const FrameMetrics& metrics = GetFrameMetrics();
|
||||
ParentLayerRect screenCompositionBounds = metrics.mCompositionBounds
|
||||
ParentLayerRect screenCompositionBounds = metrics.GetCompositionBounds()
|
||||
/ ParentLayerToParentLayerScale(aScale);
|
||||
return GetRectLength(screenCompositionBounds) - GetPageLength() > COORDINATE_EPSILON;
|
||||
}
|
||||
|
||||
@@ -176,7 +176,7 @@ ClientTiledPaintedLayer::BeginPaint()
|
||||
if (!hasTransformAnimation) {
|
||||
ParentLayerRect criticalDisplayPort =
|
||||
(displayportMetrics.GetCriticalDisplayPort() * displayportMetrics.GetZoom())
|
||||
+ displayportMetrics.mCompositionBounds.TopLeft();
|
||||
+ displayportMetrics.GetCompositionBounds().TopLeft();
|
||||
mPaintData.mCriticalDisplayPort = RoundedToInt(
|
||||
ApplyParentLayerToLayerTransform(transformDisplayPortToLayer, criticalDisplayPort));
|
||||
}
|
||||
@@ -193,7 +193,7 @@ ClientTiledPaintedLayer::BeginPaint()
|
||||
gfx::Matrix4x4 transformToBounds = mPaintData.mTransformToCompBounds;
|
||||
transformToBounds.Invert();
|
||||
mPaintData.mCompositionBounds = ApplyParentLayerToLayerTransform(
|
||||
transformToBounds, scrollMetrics.mCompositionBounds);
|
||||
transformToBounds, scrollMetrics.GetCompositionBounds());
|
||||
TILING_LOG("TILING %p: Composition bounds %s\n", this, Stringify(mPaintData.mCompositionBounds).c_str());
|
||||
|
||||
// Calculate the scroll offset since the last transaction
|
||||
|
||||
@@ -1330,7 +1330,7 @@ GetCompositorSideCompositionBounds(const LayerMetricsWrapper& aScrollAncestor,
|
||||
{
|
||||
Matrix4x4 transform = aTransformToCompBounds * Matrix4x4(aAPZTransform);
|
||||
return TransformTo<LayerPixel>(transform.Inverse(),
|
||||
aScrollAncestor.Metrics().mCompositionBounds);
|
||||
aScrollAncestor.Metrics().GetCompositionBounds());
|
||||
}
|
||||
|
||||
bool
|
||||
|
||||
@@ -600,12 +600,34 @@ AsyncCompositionManager::ApplyAsyncContentTransformToTree(Layer *aLayer)
|
||||
// When doing so, it might be useful to look at how it was called here before
|
||||
// bug 1036967 removed the (dead) call.
|
||||
|
||||
#if defined(MOZ_ANDROID_APZ)
|
||||
if (mIsFirstPaint) {
|
||||
CSSToLayerScale geckoZoom = metrics.LayersPixelsPerCSSPixel().ToScaleFactor();
|
||||
LayerIntPoint scrollOffsetLayerPixels = RoundedToInt(metrics.GetScrollOffset() * geckoZoom);
|
||||
mContentRect = metrics.GetScrollableRect();
|
||||
SetFirstPaintViewport(scrollOffsetLayerPixels,
|
||||
geckoZoom,
|
||||
mContentRect);
|
||||
}
|
||||
#endif
|
||||
|
||||
mIsFirstPaint = false;
|
||||
mLayersUpdated = false;
|
||||
|
||||
// Apply the render offset
|
||||
mLayerManager->GetCompositor()->SetScreenRenderOffset(offset);
|
||||
|
||||
// See the comment below - the first FrameMetrics has the clip computed
|
||||
// by layout (currently, effectively the composition bounds), which we
|
||||
// intersect here to include the layer clip.
|
||||
if (i == 0 && metrics.HasClipRect()) {
|
||||
if (clipRect) {
|
||||
clipRect = Some(clipRect.value().Intersect(metrics.ClipRect()));
|
||||
} else {
|
||||
clipRect = Some(metrics.ClipRect());
|
||||
}
|
||||
}
|
||||
|
||||
combinedAsyncTransformWithoutOverscroll *= asyncTransformWithoutOverscroll;
|
||||
combinedAsyncTransform *= (Matrix4x4(asyncTransformWithoutOverscroll) * overscrollTransform);
|
||||
if (i > 0 && clipRect) {
|
||||
@@ -625,7 +647,7 @@ AsyncCompositionManager::ApplyAsyncContentTransformToTree(Layer *aLayer)
|
||||
ParentLayerRect transformed = TransformTo<ParentLayerPixel>(
|
||||
(Matrix4x4(asyncTransformWithoutOverscroll) * overscrollTransform),
|
||||
ParentLayerRect(*clipRect));
|
||||
clipRect = Some(RoundedOut(transformed.Intersect(metrics.mCompositionBounds)));
|
||||
clipRect = Some(RoundedOut(transformed.Intersect(metrics.GetCompositionBounds())));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -717,11 +739,13 @@ ApplyAsyncTransformToScrollbarForContent(Layer* aScrollbar,
|
||||
// |metrics.CalculateCompositedSizeInCssPixels()| would not give a correct
|
||||
// result.
|
||||
const CSSToParentLayerScale effectiveZoom(metrics.GetZoom().yScale * asyncZoomY);
|
||||
const CSSCoord compositedHeight = (metrics.mCompositionBounds / effectiveZoom).height;
|
||||
const CSSCoord scrollableHeight = metrics.GetScrollableRect().height;
|
||||
|
||||
// The scrollbar thumb ratio is in AppUnits.
|
||||
const float ratio = aScrollbar->GetScrollbarThumbRatio();
|
||||
const LayoutDeviceToParentLayerScale nonLayoutScale = effectiveZoom /
|
||||
metrics.GetDevPixelsPerCSSPixel();
|
||||
// Here we convert the scrollbar thumb ratio into a true unitless ratio by
|
||||
// dividing out the conversion factor from the scrollframe's parent's space
|
||||
// to the scrollframe's space.
|
||||
const float ratio = aScrollbar->GetScrollbarThumbRatio() / nonLayoutScale.scale;
|
||||
ParentLayerCoord yTranslation = -asyncScrollY * ratio;
|
||||
|
||||
// The scroll thumb additionally needs to be translated to compensate for
|
||||
@@ -735,7 +759,7 @@ ApplyAsyncTransformToScrollbarForContent(Layer* aScrollbar,
|
||||
// a change of basis. We have a method to help with that,
|
||||
// Matrix4x4::ChangeBasis(), but it wouldn't necessarily make the code
|
||||
// cleaner in this case).
|
||||
const CSSCoord thumbOrigin = (metrics.GetScrollOffset().y / scrollableHeight) * compositedHeight;
|
||||
const CSSCoord thumbOrigin = (metrics.GetScrollOffset().y * ratio);
|
||||
const CSSCoord thumbOriginScaled = thumbOrigin * yScale;
|
||||
const CSSCoord thumbOriginDelta = thumbOriginScaled - thumbOrigin;
|
||||
const ParentLayerCoord thumbOriginDeltaPL = thumbOriginDelta * effectiveZoom;
|
||||
@@ -764,14 +788,13 @@ ApplyAsyncTransformToScrollbarForContent(Layer* aScrollbar,
|
||||
const float xScale = 1.f / asyncZoomX;
|
||||
|
||||
const CSSToParentLayerScale effectiveZoom(metrics.GetZoom().xScale * asyncZoomX);
|
||||
const CSSCoord compositedWidth = (metrics.mCompositionBounds / effectiveZoom).width;
|
||||
const CSSCoord scrollableWidth = metrics.GetScrollableRect().width;
|
||||
|
||||
// The scrollbar thumb ratio is in AppUnits.
|
||||
const float ratio = aScrollbar->GetScrollbarThumbRatio();
|
||||
const LayoutDeviceToParentLayerScale nonLayoutScale = effectiveZoom /
|
||||
metrics.GetDevPixelsPerCSSPixel();
|
||||
const float ratio = aScrollbar->GetScrollbarThumbRatio() / nonLayoutScale.scale;
|
||||
ParentLayerCoord xTranslation = -asyncScrollX * ratio;
|
||||
|
||||
const CSSCoord thumbOrigin = (metrics.GetScrollOffset().x / scrollableWidth) * compositedWidth;
|
||||
const CSSCoord thumbOrigin = (metrics.GetScrollOffset().x * ratio);
|
||||
const CSSCoord thumbOriginScaled = thumbOrigin * xScale;
|
||||
const CSSCoord thumbOriginDelta = thumbOriginScaled - thumbOrigin;
|
||||
const ParentLayerCoord thumbOriginDeltaPL = thumbOriginDelta * effectiveZoom;
|
||||
@@ -981,28 +1004,28 @@ AsyncCompositionManager::TransformScrollableLayer(Layer* aLayer)
|
||||
Point3D overscrollTranslation;
|
||||
if (userScroll.x < contentScreenRect.x) {
|
||||
overscrollTranslation.x = contentScreenRect.x - userScroll.x;
|
||||
} else if (userScroll.x + metrics.mCompositionBounds.width > contentScreenRect.XMost()) {
|
||||
} else if (userScroll.x + metrics.GetCompositionBounds().width > contentScreenRect.XMost()) {
|
||||
overscrollTranslation.x = contentScreenRect.XMost() -
|
||||
(userScroll.x + metrics.mCompositionBounds.width);
|
||||
(userScroll.x + metrics.GetCompositionBounds().width);
|
||||
}
|
||||
if (userScroll.y < contentScreenRect.y) {
|
||||
overscrollTranslation.y = contentScreenRect.y - userScroll.y;
|
||||
} else if (userScroll.y + metrics.mCompositionBounds.height > contentScreenRect.YMost()) {
|
||||
} else if (userScroll.y + metrics.GetCompositionBounds().height > contentScreenRect.YMost()) {
|
||||
overscrollTranslation.y = contentScreenRect.YMost() -
|
||||
(userScroll.y + metrics.mCompositionBounds.height);
|
||||
(userScroll.y + metrics.GetCompositionBounds().height);
|
||||
}
|
||||
oldTransform.PreTranslate(overscrollTranslation.x,
|
||||
overscrollTranslation.y,
|
||||
overscrollTranslation.z);
|
||||
|
||||
gfx::Size underZoomScale(1.0f, 1.0f);
|
||||
if (mContentRect.width * userZoom.scale < metrics.mCompositionBounds.width) {
|
||||
if (mContentRect.width * userZoom.scale < metrics.GetCompositionBounds().width) {
|
||||
underZoomScale.width = (mContentRect.width * userZoom.scale) /
|
||||
metrics.mCompositionBounds.width;
|
||||
metrics.GetCompositionBounds().width;
|
||||
}
|
||||
if (mContentRect.height * userZoom.scale < metrics.mCompositionBounds.height) {
|
||||
if (mContentRect.height * userZoom.scale < metrics.GetCompositionBounds().height) {
|
||||
underZoomScale.height = (mContentRect.height * userZoom.scale) /
|
||||
metrics.mCompositionBounds.height;
|
||||
metrics.GetCompositionBounds().height;
|
||||
}
|
||||
oldTransform.PreScale(underZoomScale.width, underZoomScale.height, 1);
|
||||
|
||||
|
||||
@@ -240,17 +240,21 @@ ContainerPrepare(ContainerT* aContainer,
|
||||
for (uint32_t i = 0; i < children.Length(); i++) {
|
||||
LayerComposite* layerToRender = static_cast<LayerComposite*>(children.ElementAt(i)->ImplData());
|
||||
|
||||
if (layerToRender->GetLayer()->GetEffectiveVisibleRegion().IsEmpty() &&
|
||||
!layerToRender->GetLayer()->AsContainerLayer()) {
|
||||
CULLING_LOG("Sublayer %p has no effective visible region\n", layerToRender->GetLayer());
|
||||
continue;
|
||||
}
|
||||
|
||||
RenderTargetIntRect clipRect = layerToRender->GetLayer()->
|
||||
CalculateScissorRect(aClipRect);
|
||||
if (clipRect.IsEmpty()) {
|
||||
CULLING_LOG("Sublayer %p has an empty world clip rect\n", layerToRender->GetLayer());
|
||||
continue;
|
||||
|
||||
// We don't want to skip container layers because otherwise their mPrepared
|
||||
// may be null which is not allowed.
|
||||
if (!layerToRender->GetLayer()->AsContainerLayer()) {
|
||||
if (layerToRender->GetLayer()->GetEffectiveVisibleRegion().IsEmpty()) {
|
||||
CULLING_LOG("Sublayer %p has no effective visible region\n", layerToRender->GetLayer());
|
||||
continue;
|
||||
}
|
||||
|
||||
if (clipRect.IsEmpty()) {
|
||||
CULLING_LOG("Sublayer %p has an empty world clip rect\n", layerToRender->GetLayer());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
CULLING_LOG("Preparing sublayer %p\n", layerToRender->GetLayer());
|
||||
@@ -318,7 +322,8 @@ RenderLayers(ContainerT* aContainer,
|
||||
Layer* layer = layerToRender->GetLayer();
|
||||
|
||||
gfxRGBA color;
|
||||
if (LayerHasCheckerboardingAPZC(layer, &color)) {
|
||||
if ((layer->GetContentFlags() & Layer::CONTENT_OPAQUE) &&
|
||||
LayerHasCheckerboardingAPZC(layer, &color)) {
|
||||
// Ideally we would want to intersect the checkerboard region from the APZ with the layer bounds
|
||||
// and only fill in that area. However the layer bounds takes into account the base translation
|
||||
// for the painted layer whereas the checkerboard region does not. One does not simply
|
||||
@@ -358,17 +363,26 @@ RenderLayers(ContainerT* aContainer,
|
||||
}
|
||||
|
||||
// Draw a border around scrollable layers.
|
||||
for (uint32_t i = 0; i < layer->GetFrameMetricsCount(); i++) {
|
||||
// A layer can be scrolled by multiple scroll frames. Draw a border
|
||||
// for each.
|
||||
if (layer->GetFrameMetrics(i).IsScrollable()) {
|
||||
// A layer can be scrolled by multiple scroll frames. Draw a border
|
||||
// for each.
|
||||
// Within the list of scroll frames for a layer, the layer border for a
|
||||
// scroll frame lower down is affected by the async transforms on scroll
|
||||
// frames higher up, so loop from the top down, and accumulate an async
|
||||
// transform as we go along.
|
||||
Matrix4x4 asyncTransform;
|
||||
for (uint32_t i = layer->GetFrameMetricsCount(); i > 0; --i) {
|
||||
if (layer->GetFrameMetrics(i - 1).IsScrollable()) {
|
||||
// Since the composition bounds are in the parent layer's coordinates,
|
||||
// use the parent's effective transform rather than the layer's own.
|
||||
ParentLayerRect compositionBounds = layer->GetFrameMetrics(i).mCompositionBounds;
|
||||
ParentLayerRect compositionBounds = layer->GetFrameMetrics(i - 1).GetCompositionBounds();
|
||||
aManager->GetCompositor()->DrawDiagnostics(DiagnosticFlags::CONTAINER,
|
||||
compositionBounds.ToUnknownRect(),
|
||||
gfx::Rect(aClipRect.ToUnknownRect()),
|
||||
aContainer->GetEffectiveTransform());
|
||||
asyncTransform * aContainer->GetEffectiveTransform());
|
||||
if (AsyncPanZoomController* apzc = layer->GetAsyncPanZoomController(i - 1)) {
|
||||
asyncTransform = apzc->GetCurrentAsyncTransformWithOverscroll()
|
||||
* asyncTransform;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1075,7 +1075,7 @@ LayerManagerComposite::ComputeRenderIntegrity()
|
||||
// the root layer.
|
||||
rootMetrics = LayerMetricsWrapper(root).Metrics();
|
||||
}
|
||||
ParentLayerIntRect bounds = RoundedToInt(rootMetrics.mCompositionBounds);
|
||||
ParentLayerIntRect bounds = RoundedToInt(rootMetrics.GetCompositionBounds());
|
||||
IntRect screenRect(bounds.x,
|
||||
bounds.y,
|
||||
bounds.width,
|
||||
|
||||
@@ -373,6 +373,16 @@ CompositorChild::AddOverfillObserver(ClientLayerManager* aLayerManager)
|
||||
mOverfillObservers.AppendElement(aLayerManager);
|
||||
}
|
||||
|
||||
bool
|
||||
CompositorChild::RecvClearCachedResources(const uint64_t& aId)
|
||||
{
|
||||
dom::TabChild* child = dom::TabChild::GetFrom(aId);
|
||||
if (child) {
|
||||
child->ClearCachedResources();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
CompositorChild::ActorDestroy(ActorDestroyReason aWhy)
|
||||
{
|
||||
@@ -550,6 +560,26 @@ CompositorChild::SendResume()
|
||||
return PCompositorChild::SendResume();
|
||||
}
|
||||
|
||||
bool
|
||||
CompositorChild::SendNotifyHidden(const uint64_t& id)
|
||||
{
|
||||
MOZ_ASSERT(mCanSend);
|
||||
if (!mCanSend) {
|
||||
return true;
|
||||
}
|
||||
return PCompositorChild::SendNotifyHidden(id);
|
||||
}
|
||||
|
||||
bool
|
||||
CompositorChild::SendNotifyVisible(const uint64_t& id)
|
||||
{
|
||||
MOZ_ASSERT(mCanSend);
|
||||
if (!mCanSend) {
|
||||
return true;
|
||||
}
|
||||
return PCompositorChild::SendNotifyVisible(id);
|
||||
}
|
||||
|
||||
bool
|
||||
CompositorChild::SendNotifyChildCreated(const uint64_t& id)
|
||||
{
|
||||
|
||||
@@ -70,6 +70,9 @@ public:
|
||||
|
||||
void AddOverfillObserver(ClientLayerManager* aLayerManager);
|
||||
|
||||
virtual bool
|
||||
RecvClearCachedResources(const uint64_t& id) override;
|
||||
|
||||
virtual bool
|
||||
RecvDidComposite(const uint64_t& aId, const uint64_t& aTransactionId) override;
|
||||
|
||||
@@ -106,6 +109,8 @@ public:
|
||||
bool SendWillStop();
|
||||
bool SendPause();
|
||||
bool SendResume();
|
||||
bool SendNotifyHidden(const uint64_t& id);
|
||||
bool SendNotifyVisible(const uint64_t& id);
|
||||
bool SendNotifyChildCreated(const uint64_t& id);
|
||||
bool SendAdoptChild(const uint64_t& id);
|
||||
bool SendMakeSnapshot(const SurfaceDescriptor& inSnapshot, const gfx::IntRect& dirtyRect);
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
* vim: sw=2 ts=8 et :
|
||||
*/
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "CompositorLRU.h"
|
||||
|
||||
#include "mozilla/ClearOnShutdown.h"
|
||||
#include "mozilla/DebugOnly.h"
|
||||
#include "mozilla/Preferences.h"
|
||||
#include "mozilla/unused.h"
|
||||
|
||||
#include "CompositorParent.h"
|
||||
|
||||
namespace mozilla {
|
||||
namespace layers {
|
||||
|
||||
mozilla::StaticRefPtr<CompositorLRU> CompositorLRU::sSingleton;
|
||||
|
||||
void
|
||||
CompositorLRU::Init()
|
||||
{
|
||||
unused << GetSingleton();
|
||||
}
|
||||
|
||||
CompositorLRU*
|
||||
CompositorLRU::GetSingleton()
|
||||
{
|
||||
if (sSingleton) {
|
||||
return sSingleton;
|
||||
}
|
||||
sSingleton = new CompositorLRU();
|
||||
ClearOnShutdown(&sSingleton);
|
||||
|
||||
return sSingleton;
|
||||
}
|
||||
|
||||
CompositorLRU::CompositorLRU()
|
||||
{
|
||||
mLRUSize = Preferences::GetUint("layers.compositor-lru-size", uint32_t(0));
|
||||
}
|
||||
|
||||
CompositorLRU::~CompositorLRU()
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
CompositorLRU::Add(PCompositorParent* aCompositor, const uint64_t& aId)
|
||||
{
|
||||
auto index = mLRU.IndexOf(std::make_pair(aCompositor, aId));
|
||||
if (index != nsTArray<CompositorLayerPair>::NoIndex) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mLRUSize == 0) {
|
||||
unused << aCompositor->SendClearCachedResources(aId);
|
||||
return;
|
||||
}
|
||||
|
||||
if (mLRU.Length() == mLRUSize) {
|
||||
CompositorLayerPair victim = mLRU.LastElement();
|
||||
unused << victim.first->SendClearCachedResources(victim.second);
|
||||
mLRU.RemoveElement(victim);
|
||||
}
|
||||
mLRU.InsertElementAt(0, std::make_pair(aCompositor, aId));
|
||||
}
|
||||
|
||||
void
|
||||
CompositorLRU::Remove(PCompositorParent* aCompositor, const uint64_t& aId)
|
||||
{
|
||||
if (mLRUSize == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto index = mLRU.IndexOf(std::make_pair(aCompositor, aId));
|
||||
|
||||
if (index == nsTArray<PCompositorParent*>::NoIndex) {
|
||||
return;
|
||||
}
|
||||
|
||||
mLRU.RemoveElementAt(index);
|
||||
}
|
||||
|
||||
void
|
||||
CompositorLRU::Remove(PCompositorParent* aCompositor)
|
||||
{
|
||||
if (mLRUSize == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (int32_t i = mLRU.Length() - 1; i >= 0; --i) {
|
||||
if (mLRU[i].first == aCompositor) {
|
||||
mLRU.RemoveElementAt(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace layers
|
||||
} // namespace mozilla
|
||||
@@ -0,0 +1,61 @@
|
||||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
* vim: sw=2 ts=8 et :
|
||||
*/
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifndef mozilla_CompositorLRU_h
|
||||
#define mozilla_CompositorLRU_h
|
||||
|
||||
#include "mozilla/StaticPtr.h"
|
||||
|
||||
#include "nsISupportsImpl.h"
|
||||
#include "nsTArray.h"
|
||||
|
||||
#include <utility>
|
||||
|
||||
namespace mozilla {
|
||||
namespace layers {
|
||||
|
||||
class PCompositorParent;
|
||||
|
||||
class CompositorLRU final
|
||||
{
|
||||
typedef std::pair<PCompositorParent*, uint64_t> CompositorLayerPair;
|
||||
public:
|
||||
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(CompositorLRU)
|
||||
|
||||
static void Init();
|
||||
static CompositorLRU* GetSingleton();
|
||||
|
||||
/**
|
||||
* Adds the (PCompositorParent, LayerId) pair to the LRU pool. If
|
||||
* the pool size grows over mLRUSize, the oldest PCompositorParent
|
||||
* is evicted.
|
||||
*/
|
||||
void Add(PCompositorParent* aCompositor, const uint64_t& id);
|
||||
|
||||
/**
|
||||
* Remove the (PCompositorParent, LayersId) pair from the LRU pool.
|
||||
*/
|
||||
void Remove(PCompositorParent* aCompositor, const uint64_t& id);
|
||||
|
||||
/**
|
||||
* Remove all PCompositorParents from the LRU pool.
|
||||
*/
|
||||
void Remove(PCompositorParent* aCompositor);
|
||||
|
||||
private:
|
||||
static StaticRefPtr<CompositorLRU> sSingleton;
|
||||
|
||||
CompositorLRU();
|
||||
~CompositorLRU();
|
||||
uint32_t mLRUSize;
|
||||
nsTArray<CompositorLayerPair> mLRU;
|
||||
};
|
||||
|
||||
} // namespace layers
|
||||
} // namespace mozilla
|
||||
|
||||
#endif // mozilla_CompositorLRU_h
|
||||
@@ -34,6 +34,7 @@
|
||||
#include "mozilla/layers/AsyncCompositionManager.h"
|
||||
#include "mozilla/layers/BasicCompositor.h" // for BasicCompositor
|
||||
#include "mozilla/layers/Compositor.h" // for Compositor
|
||||
#include "mozilla/layers/CompositorLRU.h" // for CompositorLRU
|
||||
#include "mozilla/layers/CompositorOGL.h" // for CompositorOGL
|
||||
#include "mozilla/layers/CompositorTypes.h"
|
||||
#include "mozilla/layers/LayerManagerComposite.h"
|
||||
@@ -1670,6 +1671,8 @@ public:
|
||||
virtual bool RecvStop() override { return true; }
|
||||
virtual bool RecvPause() override { return true; }
|
||||
virtual bool RecvResume() override { return true; }
|
||||
virtual bool RecvNotifyHidden(const uint64_t& id) override;
|
||||
virtual bool RecvNotifyVisible(const uint64_t& id) override;
|
||||
virtual bool RecvNotifyChildCreated(const uint64_t& child) override;
|
||||
virtual bool RecvAdoptChild(const uint64_t& child) override { return false; }
|
||||
virtual bool RecvMakeSnapshot(const SurfaceDescriptor& aInSnapshot,
|
||||
@@ -1825,6 +1828,22 @@ CompositorParent::GetIndirectShadowTree(uint64_t aId)
|
||||
return &cit->second;
|
||||
}
|
||||
|
||||
bool
|
||||
CrossProcessCompositorParent::RecvNotifyHidden(const uint64_t& id)
|
||||
{
|
||||
nsRefPtr<CompositorLRU> lru = CompositorLRU::GetSingleton();
|
||||
lru->Add(this, id);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
CrossProcessCompositorParent::RecvNotifyVisible(const uint64_t& id)
|
||||
{
|
||||
nsRefPtr<CompositorLRU> lru = CompositorLRU::GetSingleton();
|
||||
lru->Remove(this, id);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
CrossProcessCompositorParent::RecvRequestNotifyAfterRemotePaint()
|
||||
{
|
||||
@@ -1835,6 +1854,9 @@ CrossProcessCompositorParent::RecvRequestNotifyAfterRemotePaint()
|
||||
void
|
||||
CrossProcessCompositorParent::ActorDestroy(ActorDestroyReason aWhy)
|
||||
{
|
||||
nsRefPtr<CompositorLRU> lru = CompositorLRU::GetSingleton();
|
||||
lru->Remove(this);
|
||||
|
||||
MessageLoop::current()->PostTask(
|
||||
FROM_HERE,
|
||||
NewRunnableMethod(this, &CrossProcessCompositorParent::DeferredDestroy));
|
||||
|
||||
@@ -234,6 +234,8 @@ public:
|
||||
virtual bool RecvStop() override;
|
||||
virtual bool RecvPause() override;
|
||||
virtual bool RecvResume() override;
|
||||
virtual bool RecvNotifyHidden(const uint64_t& id) override { return true; }
|
||||
virtual bool RecvNotifyVisible(const uint64_t& id) override { return true; }
|
||||
virtual bool RecvNotifyChildCreated(const uint64_t& child) override;
|
||||
virtual bool RecvAdoptChild(const uint64_t& child) override;
|
||||
virtual bool RecvMakeSnapshot(const SurfaceDescriptor& aInSnapshot,
|
||||
|
||||
@@ -783,6 +783,22 @@ LayerTransactionParent::RecvSetAsyncScrollOffset(const FrameMetrics::ViewID& aSc
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
LayerTransactionParent::RecvSetAsyncZoom(const FrameMetrics::ViewID& aScrollID,
|
||||
const float& aValue)
|
||||
{
|
||||
if (mDestroyed || !layer_manager() || layer_manager()->IsDestroyed()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
AsyncPanZoomController* controller = GetAPZCForViewID(mRoot, aScrollID);
|
||||
if (!controller) {
|
||||
return false;
|
||||
}
|
||||
controller->SetTestAsyncZoom(LayerToParentLayerScale(aValue));
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
LayerTransactionParent::RecvGetAPZTestData(APZTestData* aOutData)
|
||||
{
|
||||
|
||||
@@ -133,6 +133,8 @@ protected:
|
||||
override;
|
||||
virtual bool RecvSetAsyncScrollOffset(const FrameMetrics::ViewID& aId,
|
||||
const int32_t& aX, const int32_t& aY) override;
|
||||
virtual bool RecvSetAsyncZoom(const FrameMetrics::ViewID& aId,
|
||||
const float& aValue) override;
|
||||
virtual bool RecvGetAPZTestData(APZTestData* aOutData) override;
|
||||
virtual bool RecvRequestProperty(const nsString& aProperty, float* aValue) override;
|
||||
virtual bool RecvSetConfirmedTargetAPZC(const uint64_t& aBlockId,
|
||||
|
||||
@@ -70,6 +70,12 @@ child:
|
||||
*/
|
||||
async UpdatePluginVisibility(uintptr_t[] aVisibleIdList);
|
||||
|
||||
/**
|
||||
* Drop any buffers that might be retained on the child compositor
|
||||
* side.
|
||||
*/
|
||||
async ClearCachedResources(uint64_t id);
|
||||
|
||||
parent:
|
||||
// Child sends the parent a request for fill ratio numbers.
|
||||
async RequestOverfill();
|
||||
@@ -85,6 +91,14 @@ parent:
|
||||
sync Pause();
|
||||
sync Resume();
|
||||
|
||||
// The child layer tree is hidden. id is the layers id of the child
|
||||
// layer tree.
|
||||
async NotifyHidden(uint64_t id);
|
||||
|
||||
// The child layer tree is visible. id is the layers id of the child
|
||||
// layer tree.
|
||||
async NotifyVisible(uint64_t id);
|
||||
|
||||
async NotifyChildCreated(uint64_t id);
|
||||
async AdoptChild(uint64_t id);
|
||||
|
||||
|
||||
@@ -89,6 +89,11 @@ parent:
|
||||
// Useful for testing rendering of async scrolling.
|
||||
sync SetAsyncScrollOffset(ViewID id, int32_t x, int32_t y);
|
||||
|
||||
// The next time the layer tree is composited, include this async zoom in
|
||||
// for the given ViewID.
|
||||
// Useful for testing rendering of async zooming.
|
||||
sync SetAsyncZoom(ViewID id, float zoom);
|
||||
|
||||
// Drop any front buffers that might be retained on the compositor
|
||||
// side.
|
||||
async ClearCachedResources();
|
||||
|
||||
@@ -136,6 +136,7 @@ EXPORTS.mozilla.layers += [
|
||||
'ipc/CompositableForwarder.h',
|
||||
'ipc/CompositableTransactionParent.h',
|
||||
'ipc/CompositorChild.h',
|
||||
'ipc/CompositorLRU.h',
|
||||
'ipc/CompositorParent.h',
|
||||
'ipc/FenceUtils.h',
|
||||
'ipc/ImageBridgeChild.h',
|
||||
@@ -288,6 +289,7 @@ UNIFIED_SOURCES += [
|
||||
'ipc/CompositableTransactionParent.cpp',
|
||||
'ipc/CompositorBench.cpp',
|
||||
'ipc/CompositorChild.cpp',
|
||||
'ipc/CompositorLRU.cpp',
|
||||
'ipc/CompositorParent.cpp',
|
||||
'ipc/FenceUtils.cpp',
|
||||
'ipc/ImageBridgeChild.cpp',
|
||||
|
||||
@@ -228,7 +228,7 @@ TestFrameMetrics()
|
||||
FrameMetrics fm;
|
||||
|
||||
fm.SetDisplayPort(CSSRect(0, 0, 10, 10));
|
||||
fm.mCompositionBounds = ParentLayerRect(0, 0, 10, 10);
|
||||
fm.SetCompositionBounds(ParentLayerRect(0, 0, 10, 10));
|
||||
fm.SetCriticalDisplayPort(CSSRect(0, 0, 10, 10));
|
||||
fm.SetScrollableRect(CSSRect(0, 0, 100, 100));
|
||||
|
||||
@@ -610,7 +610,7 @@ protected:
|
||||
FrameMetrics GetPinchableFrameMetrics()
|
||||
{
|
||||
FrameMetrics fm;
|
||||
fm.mCompositionBounds = ParentLayerRect(200, 200, 100, 200);
|
||||
fm.SetCompositionBounds(ParentLayerRect(200, 200, 100, 200));
|
||||
fm.SetScrollableRect(CSSRect(0, 0, 980, 1000));
|
||||
fm.SetScrollOffset(CSSPoint(300, 300));
|
||||
fm.SetZoom(CSSToParentLayerScale2D(2.0, 2.0));
|
||||
@@ -754,7 +754,7 @@ TEST_F(APZCPinchGestureDetectorTester, Pinch_PreventDefault) {
|
||||
TEST_F(APZCBasicTester, Overzoom) {
|
||||
// the visible area of the document in CSS pixels is x=10 y=0 w=100 h=100
|
||||
FrameMetrics fm;
|
||||
fm.mCompositionBounds = ParentLayerRect(0, 0, 100, 100);
|
||||
fm.SetCompositionBounds(ParentLayerRect(0, 0, 100, 100));
|
||||
fm.SetScrollableRect(CSSRect(0, 0, 125, 150));
|
||||
fm.SetScrollOffset(CSSPoint(10, 0));
|
||||
fm.SetZoom(CSSToParentLayerScale2D(1.0, 1.0));
|
||||
@@ -822,7 +822,7 @@ TEST_F(APZCBasicTester, ComplexTransform) {
|
||||
nsRefPtr<Layer> root = CreateLayerTree(layerTreeSyntax, layerVisibleRegion, transforms, lm, layers);
|
||||
|
||||
FrameMetrics metrics;
|
||||
metrics.mCompositionBounds = ParentLayerRect(0, 0, 24, 24);
|
||||
metrics.SetCompositionBounds(ParentLayerRect(0, 0, 24, 24));
|
||||
metrics.SetDisplayPort(CSSRect(-1, -1, 6, 6));
|
||||
metrics.SetScrollOffset(CSSPoint(10, 10));
|
||||
metrics.SetScrollableRect(CSSRect(0, 0, 50, 50));
|
||||
@@ -1689,8 +1689,8 @@ protected:
|
||||
FrameMetrics metrics;
|
||||
metrics.SetScrollId(aScrollId);
|
||||
IntRect layerBound = aLayer->GetVisibleRegion().GetBounds();
|
||||
metrics.mCompositionBounds = ParentLayerRect(layerBound.x, layerBound.y,
|
||||
layerBound.width, layerBound.height);
|
||||
metrics.SetCompositionBounds(ParentLayerRect(layerBound.x, layerBound.y,
|
||||
layerBound.width, layerBound.height));
|
||||
metrics.SetScrollableRect(aScrollableRect);
|
||||
metrics.SetScrollOffset(CSSPoint(0, 0));
|
||||
aLayer->SetFrameMetrics(metrics);
|
||||
|
||||
@@ -29,7 +29,7 @@ UNIFIED_SOURCES += [
|
||||
# Because of gkmedia on windows we won't find these
|
||||
# symbols in xul.dll.
|
||||
if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'windows':
|
||||
UNIFIED_SOURCES += [ '%s/gfx/2d/unittest/%s' % (TOPSRCDIR, p) for p in [
|
||||
UNIFIED_SOURCES += [ '/gfx/2d/unittest/%s' % p for p in [
|
||||
'TestBase.cpp',
|
||||
'TestBugs.cpp',
|
||||
'TestPoint.cpp',
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
# internal linkage. Components that use frozen (external) linkage should use
|
||||
# unicharutil_external_s.
|
||||
|
||||
DIRS += ['internal']
|
||||
DIRS += ['internal', 'standalone']
|
||||
|
||||
EXPORTS += [
|
||||
'GreekCasing.h',
|
||||
|
||||
@@ -22,6 +22,6 @@ intl_unicharutil_util_lcppsrcs += [
|
||||
]
|
||||
|
||||
intl_unicharutil_util_cppsrcs = [
|
||||
'%s/intl/unicharutil/util/%s' % (TOPSRCDIR, s) \
|
||||
'/intl/unicharutil/util/%s' % s
|
||||
for s in intl_unicharutil_util_lcppsrcs
|
||||
]
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
# -*- Mode: python; c-basic-offset: 4; 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/.
|
||||
|
||||
if CONFIG['OS_TARGET'] != 'WINNT' and CONFIG['MOZ_WIDGET_TOOLKIT'] != 'gonk':
|
||||
Library('unicharutil_standalone')
|
||||
|
||||
UNIFIED_SOURCES += [
|
||||
'../nsUnicodeProperties.cpp',
|
||||
]
|
||||
|
||||
for var in ('MOZILLA_INTERNAL_API', 'MOZILLA_XPCOMRT_API', 'MOZILLA_EXTERNAL_LINKAGE',
|
||||
'NR_SOCKET_IS_VOID_PTR', 'HAVE_STRDUP'):
|
||||
DEFINES[var] = True
|
||||
@@ -198,11 +198,9 @@ if os_linux:
|
||||
]
|
||||
if CONFIG['MOZ_ENABLE_QT']:
|
||||
SOURCES += [
|
||||
'!moc_message_pump_qt.cc',
|
||||
'src/base/message_pump_qt.cc',
|
||||
]
|
||||
GENERATED_SOURCES += [
|
||||
'moc_message_pump_qt.cc',
|
||||
]
|
||||
if not CONFIG['MOZ_NATIVE_LIBEVENT']:
|
||||
if CONFIG['OS_TARGET'] != 'Android':
|
||||
SOURCES += [
|
||||
@@ -235,11 +233,9 @@ if os_bsd:
|
||||
]
|
||||
if CONFIG['MOZ_ENABLE_QT']:
|
||||
SOURCES += [
|
||||
'!moc_message_pump_qt.cc',
|
||||
'src/base/message_pump_qt.cc',
|
||||
]
|
||||
GENERATED_SOURCES += [
|
||||
'moc_message_pump_qt.cc',
|
||||
]
|
||||
if not CONFIG['MOZ_NATIVE_LIBEVENT']:
|
||||
SOURCES += [
|
||||
'src/third_party/libevent/kqueue.c',
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
#include "mozilla/ArrayUtils.h"
|
||||
#include "mozilla/DebugOnly.h"
|
||||
#include "mozilla/Maybe.h"
|
||||
#include "mozilla/TimeStamp.h"
|
||||
#ifdef XP_WIN
|
||||
#include "mozilla/TimeStamp_windows.h"
|
||||
@@ -805,6 +806,40 @@ struct ParamTraits<nsIWidget::TouchPointerState>
|
||||
{
|
||||
};
|
||||
|
||||
template<class T>
|
||||
struct ParamTraits< mozilla::Maybe<T> >
|
||||
{
|
||||
typedef mozilla::Maybe<T> paramType;
|
||||
|
||||
static void Write(Message* msg, const paramType& param)
|
||||
{
|
||||
if (param.isSome()) {
|
||||
WriteParam(msg, true);
|
||||
WriteParam(msg, param.value());
|
||||
} else {
|
||||
WriteParam(msg, false);
|
||||
}
|
||||
}
|
||||
|
||||
static bool Read(const Message* msg, void** iter, paramType* result)
|
||||
{
|
||||
bool isSome;
|
||||
if (!ReadParam(msg, iter, &isSome)) {
|
||||
return false;
|
||||
}
|
||||
if (isSome) {
|
||||
T tmp;
|
||||
if (!ReadParam(msg, iter, &tmp)) {
|
||||
return false;
|
||||
}
|
||||
*result = mozilla::Some(mozilla::Move(tmp));
|
||||
} else {
|
||||
*result = mozilla::Nothing();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
} /* namespace IPC */
|
||||
|
||||
#endif /* __IPC_GLUE_IPCMESSAGEUTILS_H__ */
|
||||
|
||||
@@ -55,14 +55,11 @@ if CONFIG['OS_ARCH'] == 'Linux':
|
||||
]
|
||||
|
||||
SOURCES += [
|
||||
'!IPDLUnitTests.cpp',
|
||||
'IPDLUnitTestProcessChild.cpp',
|
||||
'IPDLUnitTestSubprocess.cpp',
|
||||
]
|
||||
|
||||
GENERATED_SOURCES += [
|
||||
'IPDLUnitTests.cpp',
|
||||
]
|
||||
|
||||
IPDL_SOURCES += [
|
||||
'PTestActorPunning.ipdl',
|
||||
'PTestActorPunningPunned.ipdl',
|
||||
|
||||
@@ -4262,8 +4262,6 @@ ContainerState::SetupScrollingMetadata(NewLayerEntry* aEntry)
|
||||
}
|
||||
uint32_t baseLength = metricsArray.Length();
|
||||
|
||||
ParentLayerIntRect tmpClipRect;
|
||||
const ParentLayerIntRect* layerClip = aEntry->mLayer->GetClipRect().ptrOr(nullptr);
|
||||
nsIFrame* fParent;
|
||||
for (const nsIFrame* f = aEntry->mAnimatedGeometryRoot;
|
||||
f != mContainerAnimatedGeometryRoot;
|
||||
@@ -4288,23 +4286,9 @@ ContainerState::SetupScrollingMetadata(NewLayerEntry* aEntry)
|
||||
continue;
|
||||
}
|
||||
|
||||
Maybe<nsRect> clipRect;
|
||||
scrollFrame->ComputeFrameMetrics(aEntry->mLayer, mContainerReferenceFrame,
|
||||
mParameters, &clipRect, &metricsArray);
|
||||
if (clipRect) {
|
||||
ParentLayerIntRect pixClip = ViewAs<ParentLayerPixel>(ScaleToNearestPixels(*clipRect));
|
||||
if (layerClip) {
|
||||
tmpClipRect.IntersectRect(pixClip, *layerClip);
|
||||
} else {
|
||||
tmpClipRect = pixClip;
|
||||
}
|
||||
layerClip = &tmpClipRect;
|
||||
// XXX this could cause IPC churn due to cliprects being updated
|
||||
// twice during layer building --- for non-PaintedLayers that have
|
||||
// both CSS and scroll clipping.
|
||||
}
|
||||
mParameters, &metricsArray);
|
||||
}
|
||||
aEntry->mLayer->SetClipRect(ToMaybe(layerClip));
|
||||
// Watch out for FrameMetrics copies in profiles
|
||||
aEntry->mLayer->SetFrameMetrics(metricsArray);
|
||||
}
|
||||
@@ -4342,6 +4326,15 @@ InvalidateVisibleBoundsChangesForScrolledLayer(PaintedLayer* aLayer)
|
||||
}
|
||||
}
|
||||
|
||||
static inline const Maybe<ParentLayerIntRect>&
|
||||
GetStationaryClipInContainer(Layer* aLayer)
|
||||
{
|
||||
if (size_t metricsCount = aLayer->GetFrameMetricsCount()) {
|
||||
return aLayer->GetFrameMetrics(metricsCount - 1).GetClipRect();
|
||||
}
|
||||
return aLayer->GetClipRect();
|
||||
}
|
||||
|
||||
void
|
||||
ContainerState::PostprocessRetainedLayers(nsIntRegion* aOpaqueRegionForContainer)
|
||||
{
|
||||
@@ -4368,7 +4361,7 @@ ContainerState::PostprocessRetainedLayers(nsIntRegion* aOpaqueRegionForContainer
|
||||
if (hideAll) {
|
||||
e->mVisibleRegion.SetEmpty();
|
||||
} else if (!e->mLayer->IsScrollbarContainer()) {
|
||||
const Maybe<ParentLayerIntRect>& clipRect = e->mLayer->GetClipRect();
|
||||
const Maybe<ParentLayerIntRect>& clipRect = GetStationaryClipInContainer(e->mLayer);
|
||||
if (clipRect && opaqueRegionForContainer >= 0 &&
|
||||
opaqueRegions[opaqueRegionForContainer].mOpaqueRegion.Contains(ParentLayerIntRect::ToUntyped(*clipRect))) {
|
||||
e->mVisibleRegion.SetEmpty();
|
||||
@@ -4408,7 +4401,7 @@ ContainerState::PostprocessRetainedLayers(nsIntRegion* aOpaqueRegionForContainer
|
||||
}
|
||||
|
||||
nsIntRegion clippedOpaque = e->mOpaqueRegion;
|
||||
const Maybe<ParentLayerIntRect>& clipRect = e->mLayer->GetClipRect();
|
||||
Maybe<ParentLayerIntRect> clipRect = e->mLayer->GetCombinedClipRect();
|
||||
if (clipRect) {
|
||||
clippedOpaque.AndWith(ParentLayerIntRect::ToUntyped(*clipRect));
|
||||
}
|
||||
@@ -4597,7 +4590,9 @@ ChooseScaleAndSetTransform(FrameLayerBuilder* aLayerBuilder,
|
||||
if (aContainerFrame->GetContent() &&
|
||||
nsLayoutUtils::HasAnimationsForCompositor(
|
||||
aContainerFrame->GetContent(), eCSSProperty_transform)) {
|
||||
scale = nsLayoutUtils::ComputeSuitableScaleForAnimation(aContainerFrame->GetContent());
|
||||
scale = nsLayoutUtils::ComputeSuitableScaleForAnimation(
|
||||
aContainerFrame->GetContent(), aVisibleRect.Size(),
|
||||
aContainerFrame->PresContext()->GetVisibleArea().Size());
|
||||
} else {
|
||||
// Scale factors are normalized to a power of 2 to reduce the number of resolution changes
|
||||
scale = RoundToFloatPrecision(ThebesMatrix(transform2d).ScaleFactors(true));
|
||||
|
||||
@@ -1558,7 +1558,7 @@ already_AddRefed<LayerManager> nsDisplayList::PaintRoot(nsDisplayListBuilder* aB
|
||||
presShell->GetRootScrollFrame(),
|
||||
content,
|
||||
aBuilder->FindReferenceFrameFor(frame),
|
||||
root, FrameMetrics::NULL_SCROLL_ID, viewport,
|
||||
root, FrameMetrics::NULL_SCROLL_ID, viewport, Nothing(),
|
||||
isRoot, containerParameters));
|
||||
}
|
||||
|
||||
@@ -4139,7 +4139,7 @@ nsDisplaySubDocument::ComputeFrameMetrics(Layer* aLayer,
|
||||
return MakeUnique<FrameMetrics>(
|
||||
nsLayoutUtils::ComputeFrameMetrics(
|
||||
mFrame, rootScrollFrame, rootScrollFrame->GetContent(), ReferenceFrame(),
|
||||
aLayer, mScrollParentId, viewport,
|
||||
aLayer, mScrollParentId, viewport, Nothing(),
|
||||
isRootContentDocument, params));
|
||||
}
|
||||
|
||||
@@ -4411,7 +4411,7 @@ nsDisplayScrollInfoLayer::ComputeFrameMetrics(Layer* aLayer,
|
||||
nsLayoutUtils::ComputeFrameMetrics(
|
||||
mScrolledFrame, mScrollFrame, mScrollFrame->GetContent(),
|
||||
ReferenceFrame(), aLayer,
|
||||
mScrollParentId, viewport, false, params)));
|
||||
mScrollParentId, viewport, Nothing(), false, params)));
|
||||
}
|
||||
|
||||
|
||||
|
||||
+197
-204
@@ -480,18 +480,16 @@ GetScaleForValue(const StyleAnimationValue& aValue, nsIFrame* aFrame)
|
||||
}
|
||||
|
||||
static float
|
||||
GetSuitableScale(float aMaxScale, float aMinScale)
|
||||
GetSuitableScale(float aMaxScale, float aMinScale,
|
||||
nscoord aVisibleDimension, nscoord aDisplayDimension)
|
||||
{
|
||||
// If the minimum scale >= 1.0f, use it; if the maximum <= 1.0f, use it;
|
||||
// otherwise use 1.0f.
|
||||
if (aMinScale >= 1.0f) {
|
||||
return aMinScale;
|
||||
}
|
||||
else if (aMaxScale <= 1.0f) {
|
||||
return aMaxScale;
|
||||
}
|
||||
|
||||
return 1.0f;
|
||||
float displayVisibleRatio = float(aDisplayDimension) /
|
||||
float(aVisibleDimension);
|
||||
// We want to rasterize based on the largest scale used during the
|
||||
// transform animation, unless that would make us rasterize something
|
||||
// larger than the screen. But we never want to go smaller than the
|
||||
// minimum scale over the animation.
|
||||
return std::max(std::min(aMaxScale, displayVisibleRatio), aMinScale);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -530,7 +528,9 @@ GetMinAndMaxScaleForAnimationProperty(nsIContent* aContent,
|
||||
}
|
||||
|
||||
gfxSize
|
||||
nsLayoutUtils::ComputeSuitableScaleForAnimation(nsIContent* aContent)
|
||||
nsLayoutUtils::ComputeSuitableScaleForAnimation(nsIContent* aContent,
|
||||
const nsSize& aVisibleSize,
|
||||
const nsSize& aDisplaySize)
|
||||
{
|
||||
gfxSize maxScale(std::numeric_limits<gfxFloat>::min(),
|
||||
std::numeric_limits<gfxFloat>::min());
|
||||
@@ -555,11 +555,13 @@ nsLayoutUtils::ComputeSuitableScaleForAnimation(nsIContent* aContent)
|
||||
|
||||
if (maxScale.width == std::numeric_limits<gfxFloat>::min()) {
|
||||
// We didn't encounter a transform
|
||||
maxScale = minScale = gfxSize(1.0, 1.0);
|
||||
return gfxSize(1.0, 1.0);
|
||||
}
|
||||
|
||||
return gfxSize(GetSuitableScale(maxScale.width, minScale.width),
|
||||
GetSuitableScale(maxScale.height, minScale.height));
|
||||
return gfxSize(GetSuitableScale(maxScale.width, minScale.width,
|
||||
aVisibleSize.width, aDisplaySize.width),
|
||||
GetSuitableScale(maxScale.height, minScale.height,
|
||||
aVisibleSize.height, aDisplaySize.height));
|
||||
}
|
||||
|
||||
bool
|
||||
@@ -2847,10 +2849,10 @@ CalculateFrameMetricsForDisplayPort(nsIScrollableFrame* aScrollFrame) {
|
||||
} else {
|
||||
compBoundsScale = cumulativeResolution * layerToParentLayerScale;
|
||||
}
|
||||
metrics.mCompositionBounds
|
||||
= LayoutDeviceRect::FromAppUnits(nsRect(nsPoint(0, 0), compositionSize),
|
||||
metrics.SetCompositionBounds(
|
||||
LayoutDeviceRect::FromAppUnits(nsRect(nsPoint(0, 0), compositionSize),
|
||||
presContext->AppUnitsPerDevPixel())
|
||||
* compBoundsScale;
|
||||
* compBoundsScale);
|
||||
|
||||
metrics.SetRootCompositionSize(
|
||||
nsLayoutUtils::CalculateRootCompositionSize(frame, false, metrics));
|
||||
@@ -3054,6 +3056,19 @@ nsLayoutUtils::PaintFrame(nsRenderingContext* aRenderingContext, nsIFrame* aFram
|
||||
}
|
||||
}
|
||||
}
|
||||
#if !defined(MOZ_WIDGET_ANDROID) || defined(MOZ_ANDROID_APZ)
|
||||
else if (presShell->GetDocument() && presShell->GetDocument()->IsRootDisplayDocument()
|
||||
&& !presShell->GetRootScrollFrame()) {
|
||||
// In cases where the root document is a XUL document, we want to take
|
||||
// the ViewID from the root element, as that will be the ViewID of the
|
||||
// root APZC in the tree. Skip doing this in cases where we know
|
||||
// nsGfxScrollFrame::BuilDisplayList will do it instead.
|
||||
if (dom::Element* element = presShell->GetDocument()->GetDocumentElement()) {
|
||||
id = nsLayoutUtils::FindOrCreateIDFor(element);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
nsDisplayListBuilder::AutoCurrentScrollParentIdSetter idSetter(&builder, id);
|
||||
|
||||
PROFILER_LABEL("nsLayoutUtils", "PaintFrame::BuildDisplayList",
|
||||
@@ -4069,10 +4084,10 @@ GetPercentBSize(const nsStyleCoord& aStyle,
|
||||
f = f->GetParent();
|
||||
}
|
||||
|
||||
bool isVertical = f->GetWritingMode().IsVertical();
|
||||
WritingMode wm = f->GetWritingMode();
|
||||
|
||||
const nsStylePosition *pos = f->StylePosition();
|
||||
const nsStyleCoord bSizeCoord = isVertical ? pos->mWidth : pos->mHeight;
|
||||
const nsStyleCoord& bSizeCoord = pos->BSize(wm);
|
||||
nscoord h;
|
||||
if (!GetAbsoluteCoord(bSizeCoord, h) &&
|
||||
!GetPercentBSize(bSizeCoord, f, h)) {
|
||||
@@ -4093,16 +4108,15 @@ GetPercentBSize(const nsStyleCoord& aStyle,
|
||||
NS_ASSERTION(bSizeCoord.GetUnit() == eStyleUnit_Auto,
|
||||
"Unexpected block-size unit for viewport or canvas or page-content");
|
||||
// For the viewport, canvas, and page-content kids, the percentage
|
||||
// basis is just the parent height.
|
||||
h = isVertical ? f->GetSize().width : f->GetSize().height;
|
||||
// basis is just the parent block-size.
|
||||
h = f->BSize(wm);
|
||||
if (h == NS_UNCONSTRAINEDSIZE) {
|
||||
// We don't have a percentage basis after all
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
const nsStyleCoord& maxBSizeCoord =
|
||||
isVertical ? pos->mMaxWidth : pos->mMaxHeight;
|
||||
const nsStyleCoord& maxBSizeCoord = pos->MaxBSize(wm);
|
||||
|
||||
nscoord maxh;
|
||||
if (GetAbsoluteCoord(maxBSizeCoord, maxh) ||
|
||||
@@ -4115,8 +4129,7 @@ GetPercentBSize(const nsStyleCoord& aStyle,
|
||||
"unknown max block-size unit");
|
||||
}
|
||||
|
||||
const nsStyleCoord& minBSizeCoord =
|
||||
isVertical ? pos->mMinWidth : pos->mMinHeight;
|
||||
const nsStyleCoord& minBSizeCoord = pos->MinBSize(wm);
|
||||
|
||||
nscoord minh;
|
||||
if (GetAbsoluteCoord(minBSizeCoord, minh) ||
|
||||
@@ -4267,12 +4280,9 @@ nsLayoutUtils::IntrinsicForContainer(nsRenderingContext *aRenderingContext,
|
||||
const nsStylePosition *stylePos = aFrame->StylePosition();
|
||||
uint8_t boxSizing = stylePos->mBoxSizing;
|
||||
|
||||
const nsStyleCoord &styleISize =
|
||||
isVertical ? stylePos->mHeight : stylePos->mWidth;
|
||||
const nsStyleCoord &styleMinISize =
|
||||
isVertical ? stylePos->mMinHeight : stylePos->mMinWidth;
|
||||
const nsStyleCoord &styleMaxISize =
|
||||
isVertical ? stylePos->mMaxHeight : stylePos->mMaxWidth;
|
||||
const nsStyleCoord& styleISize = stylePos->ISize(wm);
|
||||
const nsStyleCoord& styleMinISize = stylePos->MinISize(wm);
|
||||
const nsStyleCoord& styleMaxISize = stylePos->MaxISize(wm);
|
||||
|
||||
// We build up two values starting with the content box, and then
|
||||
// adding padding, border and margin. The result is normally
|
||||
@@ -4351,12 +4361,9 @@ nsLayoutUtils::IntrinsicForContainer(nsRenderingContext *aRenderingContext,
|
||||
// since that's what it means in all cases except for on flex items -- and
|
||||
// even there, we're supposed to ignore it (i.e. treat it as 0) until the
|
||||
// flex container explicitly considers it.
|
||||
const nsStyleCoord &styleBSize =
|
||||
isVertical ? stylePos->mWidth : stylePos->mHeight;
|
||||
const nsStyleCoord &styleMinBSize =
|
||||
isVertical ? stylePos->mMinWidth : stylePos->mMinHeight;
|
||||
const nsStyleCoord &styleMaxBSize =
|
||||
isVertical ? stylePos->mMaxWidth : stylePos->mMaxHeight;
|
||||
const nsStyleCoord& styleBSize = stylePos->BSize(wm);
|
||||
const nsStyleCoord& styleMinBSize = stylePos->MinBSize(wm);
|
||||
const nsStyleCoord& styleMaxBSize = stylePos->MaxBSize(wm);
|
||||
|
||||
if (styleBSize.GetUnit() != eStyleUnit_Auto ||
|
||||
!(styleMinBSize.GetUnit() == eStyleUnit_Auto ||
|
||||
@@ -4372,23 +4379,16 @@ nsLayoutUtils::IntrinsicForContainer(nsRenderingContext *aRenderingContext,
|
||||
case NS_STYLE_BOX_SIZING_BORDER: {
|
||||
const nsStyleBorder* styleBorder = aFrame->StyleBorder();
|
||||
bSizeTakenByBoxSizing +=
|
||||
isVertical ? styleBorder->GetComputedBorder().LeftRight()
|
||||
: styleBorder->GetComputedBorder().TopBottom();
|
||||
wm.IsVertical() ? styleBorder->GetComputedBorder().LeftRight()
|
||||
: styleBorder->GetComputedBorder().TopBottom();
|
||||
// fall through
|
||||
}
|
||||
case NS_STYLE_BOX_SIZING_PADDING: {
|
||||
if (!(aFlags & IGNORE_PADDING)) {
|
||||
const nsStylePadding* stylePadding = aFrame->StylePadding();
|
||||
const nsStyleCoord& paddingStart =
|
||||
isVertical ? wm.IsVerticalRL()
|
||||
? stylePadding->mPadding.GetRight()
|
||||
: stylePadding->mPadding.GetLeft()
|
||||
: stylePadding->mPadding.GetTop();
|
||||
const nsStyleCoord& paddingEnd =
|
||||
isVertical ? wm.IsVerticalRL()
|
||||
? stylePadding->mPadding.GetLeft()
|
||||
: stylePadding->mPadding.GetRight()
|
||||
: stylePadding->mPadding.GetBottom();
|
||||
const nsStyleSides& stylePadding =
|
||||
aFrame->StylePadding()->mPadding;
|
||||
const nsStyleCoord& paddingStart = stylePadding.GetBStart(wm);
|
||||
const nsStyleCoord& paddingEnd = stylePadding.GetBEnd(wm);
|
||||
nscoord pad;
|
||||
if (GetAbsoluteCoord(paddingStart, pad) ||
|
||||
GetPercentBSize(paddingStart, aFrame, pad)) {
|
||||
@@ -4723,10 +4723,8 @@ nsLayoutUtils::ComputeSizeWithIntrinsicDimensions(WritingMode aWM,
|
||||
|
||||
// If we're a flex item, we'll compute our size a bit differently.
|
||||
bool isVertical = aWM.IsVertical();
|
||||
const nsStyleCoord* inlineStyleCoord =
|
||||
isVertical ? &stylePos->mHeight : &stylePos->mWidth;
|
||||
const nsStyleCoord* blockStyleCoord =
|
||||
isVertical ? &stylePos->mWidth : &stylePos->mHeight;
|
||||
const nsStyleCoord* inlineStyleCoord = &stylePos->ISize(aWM);
|
||||
const nsStyleCoord* blockStyleCoord = &stylePos->BSize(aWM);
|
||||
|
||||
bool isFlexItem = aFrame->IsFlexItem();
|
||||
bool isInlineFlexItem = false;
|
||||
@@ -4819,8 +4817,7 @@ nsLayoutUtils::ComputeSizeWithIntrinsicDimensions(WritingMode aWM,
|
||||
boxSizingToMarginEdgeISize, *inlineStyleCoord);
|
||||
}
|
||||
|
||||
const nsStyleCoord& maxISizeCoord =
|
||||
isVertical ? stylePos->mMaxHeight : stylePos->mMaxWidth;
|
||||
const nsStyleCoord& maxISizeCoord = stylePos->MaxISize(aWM);
|
||||
|
||||
if (maxISizeCoord.GetUnit() != eStyleUnit_None &&
|
||||
!(isFlexItem && isInlineFlexItem)) {
|
||||
@@ -4835,8 +4832,7 @@ nsLayoutUtils::ComputeSizeWithIntrinsicDimensions(WritingMode aWM,
|
||||
// flex container's main-axis. (Those properties get applied later in
|
||||
// the flexbox algorithm.)
|
||||
|
||||
const nsStyleCoord& minISizeCoord =
|
||||
isVertical ? stylePos->mMinHeight : stylePos->mMinWidth;
|
||||
const nsStyleCoord& minISizeCoord = stylePos->MinISize(aWM);
|
||||
|
||||
if (minISizeCoord.GetUnit() != eStyleUnit_Auto &&
|
||||
!(isFlexItem && isInlineFlexItem)) {
|
||||
@@ -4858,8 +4854,7 @@ nsLayoutUtils::ComputeSizeWithIntrinsicDimensions(WritingMode aWM,
|
||||
*blockStyleCoord);
|
||||
}
|
||||
|
||||
const nsStyleCoord& maxBSizeCoord =
|
||||
isVertical ? stylePos->mMaxWidth : stylePos->mMaxHeight;
|
||||
const nsStyleCoord& maxBSizeCoord = stylePos->MaxBSize(aWM);
|
||||
|
||||
if (!IsAutoBSize(maxBSizeCoord, aCBSize.BSize(aWM)) &&
|
||||
!(isFlexItem && !isInlineFlexItem)) {
|
||||
@@ -4869,8 +4864,7 @@ nsLayoutUtils::ComputeSizeWithIntrinsicDimensions(WritingMode aWM,
|
||||
maxBSize = nscoord_MAX;
|
||||
}
|
||||
|
||||
const nsStyleCoord& minBSizeCoord =
|
||||
isVertical ? stylePos->mMinWidth : stylePos->mMinHeight;
|
||||
const nsStyleCoord& minBSizeCoord = stylePos->MinBSize(aWM);
|
||||
|
||||
if (!IsAutoBSize(minBSizeCoord, aCBSize.BSize(aWM)) &&
|
||||
!(isFlexItem && !isInlineFlexItem)) {
|
||||
@@ -7604,71 +7598,125 @@ nsLayoutUtils::GetContentViewerSize(nsPresContext* aPresContext,
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool
|
||||
UpdateCompositionBoundsForRCDRSF(ParentLayerRect& aCompBounds,
|
||||
nsPresContext* aPresContext,
|
||||
const nsRect& aFrameBounds,
|
||||
bool aScaleContentViewerSize,
|
||||
const LayoutDeviceToLayerScale2D& aCumulativeResolution)
|
||||
{
|
||||
nsIFrame* rootFrame = aPresContext->PresShell()->GetRootFrame();
|
||||
if (!rootFrame) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// On Android, we need to do things a bit differently to get things
|
||||
// right (see bug 983208, bug 988882). We use the bounds of the nearest
|
||||
// widget, but clamp the height to the frame bounds height. This clamping
|
||||
// is done to get correct results for a page where the page is sized to
|
||||
// the screen and thus the dynamic toolbar never disappears. In such a
|
||||
// case, we want the composition bounds to exclude the toolbar height,
|
||||
// but the widget bounds includes it. We don't currently have a good way
|
||||
// of knowing about the toolbar height, but clamping to the frame bounds
|
||||
// height gives the correct answer in the cases we care about.
|
||||
#ifdef MOZ_WIDGET_ANDROID
|
||||
nsIWidget* widget = rootFrame->GetNearestWidget();
|
||||
#else
|
||||
nsView* view = rootFrame->GetView();
|
||||
nsIWidget* widget = view ? view->GetWidget() : nullptr;
|
||||
#endif
|
||||
|
||||
if (widget) {
|
||||
nsIntRect widgetBounds;
|
||||
widget->GetBounds(widgetBounds);
|
||||
widgetBounds.MoveTo(0, 0);
|
||||
aCompBounds = ParentLayerRect(ViewAs<ParentLayerPixel>(widgetBounds));
|
||||
#ifdef MOZ_WIDGET_ANDROID
|
||||
ParentLayerRect frameBounds =
|
||||
LayoutDeviceRect::FromAppUnits(aFrameBounds, aPresContext->AppUnitsPerDevPixel())
|
||||
* aCumulativeResolution
|
||||
* LayerToParentLayerScale(1.0);
|
||||
if (frameBounds.height < aCompBounds.height) {
|
||||
aCompBounds.height = frameBounds.height;
|
||||
}
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
LayoutDeviceIntSize contentSize;
|
||||
if (nsLayoutUtils::GetContentViewerSize(aPresContext, contentSize)) {
|
||||
LayoutDeviceToParentLayerScale scale;
|
||||
if (aScaleContentViewerSize && aPresContext->GetParentPresContext()) {
|
||||
scale = LayoutDeviceToParentLayerScale(
|
||||
aPresContext->GetParentPresContext()->PresShell()->GetCumulativeResolution());
|
||||
}
|
||||
aCompBounds.SizeTo(contentSize * scale);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/* static */ nsMargin
|
||||
nsLayoutUtils::ScrollbarAreaToExcludeFromCompositionBoundsFor(nsIFrame* aScrollFrame)
|
||||
{
|
||||
if (!aScrollFrame || !aScrollFrame->GetScrollTargetFrame()) {
|
||||
return nsMargin();
|
||||
}
|
||||
nsPresContext* presContext = aScrollFrame->PresContext();
|
||||
nsIPresShell* presShell = presContext->GetPresShell();
|
||||
if (!presShell) {
|
||||
return nsMargin();
|
||||
}
|
||||
bool isRootScrollFrame = aScrollFrame == presShell->GetRootScrollFrame();
|
||||
bool isRootContentDocRootScrollFrame = isRootScrollFrame
|
||||
&& presContext->IsRootContentDocument();
|
||||
if (!isRootContentDocRootScrollFrame) {
|
||||
return nsMargin();
|
||||
}
|
||||
if (LookAndFeel::GetInt(LookAndFeel::eIntID_UseOverlayScrollbars)) {
|
||||
return nsMargin();
|
||||
}
|
||||
nsIScrollableFrame* scrollableFrame = aScrollFrame->GetScrollTargetFrame();
|
||||
if (!scrollableFrame) {
|
||||
return nsMargin();
|
||||
}
|
||||
return scrollableFrame->GetActualScrollbarSizes();
|
||||
}
|
||||
|
||||
/* static */ nsSize
|
||||
nsLayoutUtils::CalculateCompositionSizeForFrame(nsIFrame* aFrame)
|
||||
nsLayoutUtils::CalculateCompositionSizeForFrame(nsIFrame* aFrame, bool aSubtractScrollbars)
|
||||
{
|
||||
// If we have a scrollable frame, restrict the composition bounds to its
|
||||
// scroll port. The scroll port excludes the frame borders and the scroll
|
||||
// bars, which we don't want to be part of the composition bounds.
|
||||
nsIScrollableFrame* scrollableFrame = aFrame->GetScrollTargetFrame();
|
||||
nsSize size = scrollableFrame ? scrollableFrame->GetScrollPortRect().Size() : aFrame->GetSize();
|
||||
nsRect rect = scrollableFrame ? scrollableFrame->GetScrollPortRect() : aFrame->GetRect();
|
||||
nsSize size = rect.Size();
|
||||
|
||||
nsPresContext* presContext = aFrame->PresContext();
|
||||
nsIPresShell* presShell = presContext->PresShell();
|
||||
|
||||
// See the comments in the code that calculates the root
|
||||
// composition bounds in ComputeFrameMetrics.
|
||||
// TODO: Reuse that code here.
|
||||
bool isRootContentDocRootScrollFrame = presContext->IsRootContentDocument()
|
||||
&& aFrame == presShell->GetRootScrollFrame();
|
||||
if (isRootContentDocRootScrollFrame) {
|
||||
if (nsIFrame* rootFrame = presShell->GetRootFrame()) {
|
||||
#ifdef MOZ_WIDGET_ANDROID
|
||||
nsIWidget* widget = rootFrame->GetNearestWidget();
|
||||
#else
|
||||
nsView* view = rootFrame->GetView();
|
||||
nsIWidget* widget = view ? view->GetWidget() : nullptr;
|
||||
#endif
|
||||
ParentLayerRect compBounds;
|
||||
LayoutDeviceToLayerScale2D cumulativeResolution(
|
||||
presShell->GetCumulativeResolution()
|
||||
* nsLayoutUtils::GetTransformToAncestorScale(aFrame));
|
||||
if (UpdateCompositionBoundsForRCDRSF(compBounds, presContext, rect,
|
||||
false, cumulativeResolution)) {
|
||||
int32_t auPerDevPixel = presContext->AppUnitsPerDevPixel();
|
||||
if (widget) {
|
||||
nsIntRect widgetBounds;
|
||||
widget->GetBounds(widgetBounds);
|
||||
size = nsSize(widgetBounds.width * auPerDevPixel,
|
||||
widgetBounds.height * auPerDevPixel);
|
||||
#ifdef MOZ_WIDGET_ANDROID
|
||||
nsRect frameRect = aFrame->GetRect();
|
||||
float cumulativeResolution = presShell->GetCumulativeResolution();
|
||||
LayoutDeviceToParentLayerScale layoutToParentLayerScale =
|
||||
// The ScreenToParentLayerScale should be mTransformScale which is
|
||||
// not calculated yet, but we don't yet handle CSS transforms, so we
|
||||
// assume it's 1 here.
|
||||
LayoutDeviceToLayerScale(cumulativeResolution) *
|
||||
LayerToScreenScale(1.0) * ScreenToParentLayerScale(1.0);
|
||||
ParentLayerRect frameRectPixels =
|
||||
LayoutDeviceRect::FromAppUnits(frameRect, auPerDevPixel)
|
||||
* layoutToParentLayerScale;
|
||||
if (frameRectPixels.height < ParentLayerRect(ViewAs<ParentLayerPixel>(widgetBounds)).height) {
|
||||
// Our return value is in appunits of the parent, so we need to
|
||||
// include the resolution.
|
||||
size.height =
|
||||
NSToCoordRound(frameRect.height * cumulativeResolution);
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
LayoutDeviceIntSize contentSize;
|
||||
if (nsLayoutUtils::GetContentViewerSize(presContext, contentSize)) {
|
||||
size = LayoutDevicePixel::ToAppUnits(contentSize, auPerDevPixel);
|
||||
}
|
||||
}
|
||||
|
||||
if (scrollableFrame && !LookAndFeel::GetInt(LookAndFeel::eIntID_UseOverlayScrollbars)) {
|
||||
nsMargin margins = scrollableFrame->GetActualScrollbarSizes();
|
||||
size.width -= margins.LeftRight();
|
||||
size.height -= margins.TopBottom();
|
||||
}
|
||||
size = nsSize(compBounds.width * auPerDevPixel, compBounds.height * auPerDevPixel);
|
||||
}
|
||||
}
|
||||
|
||||
if (aSubtractScrollbars) {
|
||||
nsMargin margins = ScrollbarAreaToExcludeFromCompositionBoundsFor(aFrame);
|
||||
size.width -= margins.LeftRight();
|
||||
size.height -= margins.TopBottom();
|
||||
}
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
@@ -7679,7 +7727,7 @@ nsLayoutUtils::CalculateRootCompositionSize(nsIFrame* aFrame,
|
||||
{
|
||||
|
||||
if (aIsRootContentDocRootScrollFrame) {
|
||||
return ViewAs<LayerPixel>(aMetrics.mCompositionBounds.Size(),
|
||||
return ViewAs<LayerPixel>(aMetrics.GetCompositionBounds().Size(),
|
||||
PixelCastJustification::ParentLayerToLayerForRootComposition)
|
||||
* LayerToScreenScale(1.0f)
|
||||
/ aMetrics.DisplayportPixelsPerCSSPixel();
|
||||
@@ -7693,44 +7741,22 @@ nsLayoutUtils::CalculateRootCompositionSize(nsIFrame* aFrame,
|
||||
}
|
||||
nsIPresShell* rootPresShell = nullptr;
|
||||
if (rootPresContext) {
|
||||
// See the comments in the code that calculates the root
|
||||
// composition bounds in RecordFrameMetrics.
|
||||
// TODO: Reuse that code here.
|
||||
nsIPresShell* rootPresShell = rootPresContext->PresShell();
|
||||
rootPresShell = rootPresContext->PresShell();
|
||||
if (nsIFrame* rootFrame = rootPresShell->GetRootFrame()) {
|
||||
LayoutDeviceToLayerScale2D cumulativeResolution(
|
||||
rootPresShell->GetCumulativeResolution()
|
||||
* nsLayoutUtils::GetTransformToAncestorScale(rootFrame));
|
||||
int32_t rootAUPerDevPixel = rootPresContext->AppUnitsPerDevPixel();
|
||||
LayerSize frameSize =
|
||||
(LayoutDeviceRect::FromAppUnits(rootFrame->GetRect(), rootAUPerDevPixel)
|
||||
* cumulativeResolution).Size();
|
||||
rootCompositionSize = frameSize * LayerToScreenScale(1.0f);
|
||||
#ifdef MOZ_WIDGET_ANDROID
|
||||
nsIWidget* widget = rootFrame->GetNearestWidget();
|
||||
#else
|
||||
nsView* view = rootFrame->GetView();
|
||||
nsIWidget* widget = view ? view->GetWidget() : nullptr;
|
||||
#endif
|
||||
if (widget) {
|
||||
nsIntRect widgetBounds;
|
||||
widget->GetBounds(widgetBounds);
|
||||
rootCompositionSize = ScreenSize(ViewAs<ScreenPixel>(widgetBounds.Size()));
|
||||
#ifdef MOZ_WIDGET_ANDROID
|
||||
if (frameSize.height < rootCompositionSize.height) {
|
||||
rootCompositionSize.height = frameSize.height;
|
||||
}
|
||||
#endif
|
||||
ParentLayerRect compBounds;
|
||||
if (UpdateCompositionBoundsForRCDRSF(compBounds, rootPresContext,
|
||||
rootFrame->GetRect(), true, cumulativeResolution)) {
|
||||
rootCompositionSize = ViewAs<ScreenPixel>(compBounds.Size(),
|
||||
PixelCastJustification::ScreenIsParentLayerForRoot);
|
||||
} else {
|
||||
LayoutDeviceIntSize contentSize;
|
||||
if (nsLayoutUtils::GetContentViewerSize(rootPresContext, contentSize)) {
|
||||
LayoutDeviceToLayerScale scale;
|
||||
if (rootPresContext->GetParentPresContext()) {
|
||||
float res = rootPresContext->GetParentPresContext()->PresShell()->GetCumulativeResolution();
|
||||
scale = LayoutDeviceToLayerScale(res);
|
||||
}
|
||||
rootCompositionSize = contentSize * scale * LayerToScreenScale(1.0f);
|
||||
}
|
||||
int32_t rootAUPerDevPixel = rootPresContext->AppUnitsPerDevPixel();
|
||||
LayerSize frameSize =
|
||||
(LayoutDeviceRect::FromAppUnits(rootFrame->GetRect(), rootAUPerDevPixel)
|
||||
* cumulativeResolution).Size();
|
||||
rootCompositionSize = frameSize * LayerToScreenScale(1.0f);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -7742,16 +7768,11 @@ nsLayoutUtils::CalculateRootCompositionSize(nsIFrame* aFrame,
|
||||
|
||||
// Adjust composition size for the size of scroll bars.
|
||||
nsIFrame* rootRootScrollFrame = rootPresShell ? rootPresShell->GetRootScrollFrame() : nullptr;
|
||||
nsIScrollableFrame* rootScrollableFrame = nullptr;
|
||||
if (rootRootScrollFrame) {
|
||||
rootScrollableFrame = rootRootScrollFrame->GetScrollTargetFrame();
|
||||
}
|
||||
if (rootScrollableFrame && !LookAndFeel::GetInt(LookAndFeel::eIntID_UseOverlayScrollbars)) {
|
||||
CSSMargin margins = CSSMargin::FromAppUnits(rootScrollableFrame->GetActualScrollbarSizes());
|
||||
// Scrollbars are not subject to scaling, so CSS pixels = layer pixels for them.
|
||||
rootCompositionSize.width -= margins.LeftRight();
|
||||
rootCompositionSize.height -= margins.TopBottom();
|
||||
}
|
||||
nsMargin scrollbarMargins = ScrollbarAreaToExcludeFromCompositionBoundsFor(rootRootScrollFrame);
|
||||
CSSMargin margins = CSSMargin::FromAppUnits(scrollbarMargins);
|
||||
// Scrollbars are not subject to scaling, so CSS pixels = layer pixels for them.
|
||||
rootCompositionSize.width -= margins.LeftRight();
|
||||
rootCompositionSize.height -= margins.TopBottom();
|
||||
|
||||
return rootCompositionSize / aMetrics.DisplayportPixelsPerCSSPixel();
|
||||
}
|
||||
@@ -8143,6 +8164,7 @@ nsLayoutUtils::ComputeFrameMetrics(nsIFrame* aForFrame,
|
||||
Layer* aLayer,
|
||||
ViewID aScrollParentId,
|
||||
const nsRect& aViewport,
|
||||
const Maybe<nsRect>& aClipRect,
|
||||
bool aIsRoot,
|
||||
const ContainerLayerParameters& aContainerParameters)
|
||||
{
|
||||
@@ -8215,6 +8237,10 @@ nsLayoutUtils::ComputeFrameMetrics(nsIFrame* aForFrame,
|
||||
}
|
||||
}
|
||||
|
||||
// If we have the scrollparent being the same as the scroll id, the
|
||||
// compositor-side code could get into an infinite loop while building the
|
||||
// overscroll handoff chain.
|
||||
MOZ_ASSERT(aScrollParentId == FrameMetrics::NULL_SCROLL_ID || scrollId != aScrollParentId);
|
||||
metrics.SetScrollId(scrollId);
|
||||
metrics.SetIsRoot(aIsRoot);
|
||||
metrics.SetScrollParentId(aScrollParentId);
|
||||
@@ -8265,7 +8291,13 @@ nsLayoutUtils::ComputeFrameMetrics(nsIFrame* aForFrame,
|
||||
ParentLayerRect frameBounds = LayoutDeviceRect::FromAppUnits(compositionBounds, auPerDevPixel)
|
||||
* metrics.GetCumulativeResolution()
|
||||
* layerToParentLayerScale;
|
||||
metrics.mCompositionBounds = frameBounds;
|
||||
|
||||
if (aClipRect) {
|
||||
ParentLayerRect rect = LayoutDeviceRect::FromAppUnits(*aClipRect, auPerDevPixel)
|
||||
* metrics.GetCumulativeResolution()
|
||||
* layerToParentLayerScale;
|
||||
metrics.SetClipRect(Some(RoundedToInt(rect)));
|
||||
}
|
||||
|
||||
// For the root scroll frame of the root content document (RCD-RSF), the above calculation
|
||||
// will yield the size of the viewport frame as the composition bounds, which
|
||||
@@ -8279,56 +8311,17 @@ nsLayoutUtils::ComputeFrameMetrics(nsIFrame* aForFrame,
|
||||
bool isRootContentDocRootScrollFrame = isRootScrollFrame
|
||||
&& presContext->IsRootContentDocument();
|
||||
if (isRootContentDocRootScrollFrame) {
|
||||
if (nsIFrame* rootFrame = presShell->GetRootFrame()) {
|
||||
// On Android, we need to do things a bit differently to get things
|
||||
// right (see bug 983208, bug 988882). We use the bounds of the nearest
|
||||
// widget, but clamp the height to the frame bounds height. This clamping
|
||||
// is done to get correct results for a page where the page is sized to
|
||||
// the screen and thus the dynamic toolbar never disappears. In such a
|
||||
// case, we want the composition bounds to exclude the toolbar height,
|
||||
// but the widget bounds includes it. We don't currently have a good way
|
||||
// of knowing about the toolbar height, but clamping to the frame bounds
|
||||
// height gives the correct answer in the cases we care about.
|
||||
#ifdef MOZ_WIDGET_ANDROID
|
||||
nsIWidget* widget = rootFrame->GetNearestWidget();
|
||||
#else
|
||||
nsView* view = rootFrame->GetView();
|
||||
nsIWidget* widget = view ? view->GetWidget() : nullptr;
|
||||
#endif
|
||||
if (widget) {
|
||||
nsIntRect widgetBounds;
|
||||
widget->GetBounds(widgetBounds);
|
||||
widgetBounds.MoveTo(0,0);
|
||||
metrics.mCompositionBounds = ParentLayerRect(ViewAs<ParentLayerPixel>(widgetBounds));
|
||||
#ifdef MOZ_WIDGET_ANDROID
|
||||
if (frameBounds.height < metrics.mCompositionBounds.height) {
|
||||
metrics.mCompositionBounds.height = frameBounds.height;
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
LayoutDeviceIntSize contentSize;
|
||||
if (nsLayoutUtils::GetContentViewerSize(presContext, contentSize)) {
|
||||
LayoutDeviceToParentLayerScale scale;
|
||||
if (presContext->GetParentPresContext()) {
|
||||
float res = presContext->GetParentPresContext()->PresShell()->GetCumulativeResolution();
|
||||
scale = LayoutDeviceToParentLayerScale(res);
|
||||
}
|
||||
metrics.mCompositionBounds.SizeTo(contentSize * scale);
|
||||
}
|
||||
}
|
||||
|
||||
// Exclude any non-overlay scroll bars from the composition bounds.
|
||||
// This is only done for the RCD-RSF case, because otherwise the scroll
|
||||
// port size is used and that already excludes the scroll bars.
|
||||
if (scrollableFrame && !LookAndFeel::GetInt(LookAndFeel::eIntID_UseOverlayScrollbars)) {
|
||||
nsMargin sizes = scrollableFrame->GetActualScrollbarSizes();
|
||||
// Scrollbars are not subject to scaling, so CSS pixels = layer pixels for them.
|
||||
ParentLayerMargin boundMargins = CSSMargin::FromAppUnits(sizes) * CSSToParentLayerScale(1.0f);
|
||||
metrics.mCompositionBounds.Deflate(boundMargins);
|
||||
}
|
||||
}
|
||||
UpdateCompositionBoundsForRCDRSF(frameBounds, presContext,
|
||||
compositionBounds, true, metrics.GetCumulativeResolution());
|
||||
}
|
||||
|
||||
nsMargin sizes = ScrollbarAreaToExcludeFromCompositionBoundsFor(aScrollFrame);
|
||||
// Scrollbars are not subject to scaling, so CSS pixels = layer pixels for them.
|
||||
ParentLayerMargin boundMargins = CSSMargin::FromAppUnits(sizes) * CSSToParentLayerScale(1.0f);
|
||||
frameBounds.Deflate(boundMargins);
|
||||
|
||||
metrics.SetCompositionBounds(frameBounds);
|
||||
|
||||
metrics.SetRootCompositionSize(
|
||||
nsLayoutUtils::CalculateRootCompositionSize(aScrollFrame ? aScrollFrame : aForFrame,
|
||||
isRootContentDocRootScrollFrame, metrics));
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
#include "mozilla/MemoryReporting.h"
|
||||
#include "mozilla/ArrayUtils.h"
|
||||
#include "mozilla/Maybe.h"
|
||||
#include "nsBoundingMetrics.h"
|
||||
#include "nsChangeHint.h"
|
||||
#include "nsAutoPtr.h"
|
||||
@@ -2168,13 +2169,18 @@ public:
|
||||
|
||||
/**
|
||||
* Find a suitable scale for an element (aContent) over the course of any
|
||||
* animations and transitions on the element.
|
||||
* animations and transitions of the CSS transform property on the
|
||||
* element that run on the compositor thread.
|
||||
* It will check the maximum and minimum scale during the animations and
|
||||
* transitions and return a suitable value for performance and quality.
|
||||
* Will return scale(1,1) if there is no animated scaling.
|
||||
* Always return positive value.
|
||||
* Will return scale(1,1) if there are no such animations.
|
||||
* Always returns a positive value.
|
||||
* @param aVisibleSize is the size of the area we want to paint
|
||||
* @param aDisplaySize is the size of the display area of the pres context
|
||||
*/
|
||||
static gfxSize ComputeSuitableScaleForAnimation(nsIContent* aContent);
|
||||
static gfxSize ComputeSuitableScaleForAnimation(nsIContent* aContent,
|
||||
const nsSize& aVisibleSize,
|
||||
const nsSize& aDisplaySize);
|
||||
|
||||
/**
|
||||
* Checks if we should forcibly use nearest pixel filtering for the
|
||||
@@ -2486,7 +2492,7 @@ public:
|
||||
* are likely to need special-case handling of the RCD-RSF.
|
||||
*/
|
||||
static nsSize
|
||||
CalculateCompositionSizeForFrame(nsIFrame* aFrame);
|
||||
CalculateCompositionSizeForFrame(nsIFrame* aFrame, bool aSubtractScrollbars = true);
|
||||
|
||||
/**
|
||||
* Calculate the composition size for the root scroll frame of the root
|
||||
@@ -2635,9 +2641,23 @@ public:
|
||||
Layer* aLayer,
|
||||
ViewID aScrollParentId,
|
||||
const nsRect& aViewport,
|
||||
const mozilla::Maybe<nsRect>& aClipRect,
|
||||
bool aIsRoot,
|
||||
const ContainerLayerParameters& aContainerParameters);
|
||||
|
||||
/**
|
||||
* If the given scroll frame needs an area excluded from its composition
|
||||
* bounds due to scrollbars, return that area, otherwise return an empty
|
||||
* margin.
|
||||
* There is no need to exclude scrollbars in the following cases:
|
||||
* - If the scroll frame is not the RCD-RSF; in that case, the composition
|
||||
* bounds is calculated based on the scroll port which already excludes
|
||||
* the scrollbar area.
|
||||
* - If the scrollbars are overlay, since then they are drawn on top of the
|
||||
* scrollable content.
|
||||
*/
|
||||
static nsMargin ScrollbarAreaToExcludeFromCompositionBoundsFor(nsIFrame* aScrollFrame);
|
||||
|
||||
private:
|
||||
static uint32_t sFontSizeInflationEmPerLine;
|
||||
static uint32_t sFontSizeInflationMinTwips;
|
||||
|
||||
@@ -135,6 +135,7 @@ using namespace mozilla::system;
|
||||
#include "CameraPreferences.h"
|
||||
#include "TouchManager.h"
|
||||
#include "MediaDecoder.h"
|
||||
#include "mozilla/layers/CompositorLRU.h"
|
||||
|
||||
using namespace mozilla;
|
||||
using namespace mozilla::net;
|
||||
@@ -311,6 +312,8 @@ nsLayoutStatics::Initialize()
|
||||
|
||||
PromiseDebugging::Init();
|
||||
|
||||
layers::CompositorLRU::Init();
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
+149
-16
@@ -36,22 +36,6 @@ enum PhysicalAxis {
|
||||
eAxisHorizontal = 0x1
|
||||
};
|
||||
|
||||
// Logical axis, edge and side constants for use in various places.
|
||||
enum LogicalAxis {
|
||||
eLogicalAxisBlock = 0x0,
|
||||
eLogicalAxisInline = 0x1
|
||||
};
|
||||
enum LogicalEdge {
|
||||
eLogicalEdgeStart = 0x0,
|
||||
eLogicalEdgeEnd = 0x1
|
||||
};
|
||||
enum LogicalSide {
|
||||
eLogicalSideBStart = (eLogicalAxisBlock << 1) | eLogicalEdgeStart, // 0x0
|
||||
eLogicalSideBEnd = (eLogicalAxisBlock << 1) | eLogicalEdgeEnd, // 0x1
|
||||
eLogicalSideIStart = (eLogicalAxisInline << 1) | eLogicalEdgeStart, // 0x2
|
||||
eLogicalSideIEnd = (eLogicalAxisInline << 1) | eLogicalEdgeEnd // 0x3
|
||||
};
|
||||
|
||||
inline bool IsInline(LogicalSide aSide) { return aSide & 0x2; }
|
||||
inline bool IsBlock(LogicalSide aSide) { return !IsInline(aSide); }
|
||||
inline bool IsEnd(LogicalSide aSide) { return aSide & 0x1; }
|
||||
@@ -1802,4 +1786,153 @@ private:
|
||||
|
||||
} // namespace mozilla
|
||||
|
||||
// Definitions of inline methods for nsStyleSides, declared in nsStyleCoord.h
|
||||
// but not defined there because they need WritingMode.
|
||||
inline nsStyleUnit nsStyleSides::GetUnit(mozilla::WritingMode aWM,
|
||||
mozilla::LogicalSide aSide) const
|
||||
{
|
||||
return GetUnit(aWM.PhysicalSide(aSide));
|
||||
}
|
||||
|
||||
inline nsStyleUnit nsStyleSides::GetIStartUnit(mozilla::WritingMode aWM) const
|
||||
{
|
||||
return GetUnit(aWM, mozilla::eLogicalSideIStart);
|
||||
}
|
||||
|
||||
inline nsStyleUnit nsStyleSides::GetBStartUnit(mozilla::WritingMode aWM) const
|
||||
{
|
||||
return GetUnit(aWM, mozilla::eLogicalSideBStart);
|
||||
}
|
||||
|
||||
inline nsStyleUnit nsStyleSides::GetIEndUnit(mozilla::WritingMode aWM) const
|
||||
{
|
||||
return GetUnit(aWM, mozilla::eLogicalSideIEnd);
|
||||
}
|
||||
|
||||
inline nsStyleUnit nsStyleSides::GetBEndUnit(mozilla::WritingMode aWM) const
|
||||
{
|
||||
return GetUnit(aWM, mozilla::eLogicalSideBEnd);
|
||||
}
|
||||
|
||||
inline nsStyleCoord nsStyleSides::Get(mozilla::WritingMode aWM,
|
||||
mozilla::LogicalSide aSide) const
|
||||
{
|
||||
return Get(aWM.PhysicalSide(aSide));
|
||||
}
|
||||
|
||||
inline nsStyleCoord nsStyleSides::GetIStart(mozilla::WritingMode aWM) const
|
||||
{
|
||||
return Get(aWM, mozilla::eLogicalSideIStart);
|
||||
}
|
||||
|
||||
inline nsStyleCoord nsStyleSides::GetBStart(mozilla::WritingMode aWM) const
|
||||
{
|
||||
return Get(aWM, mozilla::eLogicalSideBStart);
|
||||
}
|
||||
|
||||
inline nsStyleCoord nsStyleSides::GetIEnd(mozilla::WritingMode aWM) const
|
||||
{
|
||||
return Get(aWM, mozilla::eLogicalSideIEnd);
|
||||
}
|
||||
|
||||
inline nsStyleCoord nsStyleSides::GetBEnd(mozilla::WritingMode aWM) const
|
||||
{
|
||||
return Get(aWM, mozilla::eLogicalSideBEnd);
|
||||
}
|
||||
|
||||
// Definitions of inline methods for nsStylePosition, declared in
|
||||
// nsStyleStruct.h but not defined there because they need WritingMode.
|
||||
inline nsStyleCoord& nsStylePosition::ISize(mozilla::WritingMode aWM)
|
||||
{
|
||||
return aWM.IsVertical() ? mHeight : mWidth;
|
||||
}
|
||||
inline nsStyleCoord& nsStylePosition::MinISize(mozilla::WritingMode aWM)
|
||||
{
|
||||
return aWM.IsVertical() ? mMinHeight : mMinWidth;
|
||||
}
|
||||
inline nsStyleCoord& nsStylePosition::MaxISize(mozilla::WritingMode aWM)
|
||||
{
|
||||
return aWM.IsVertical() ? mMaxHeight : mMaxWidth;
|
||||
}
|
||||
inline nsStyleCoord& nsStylePosition::BSize(mozilla::WritingMode aWM)
|
||||
{
|
||||
return aWM.IsVertical() ? mWidth : mHeight;
|
||||
}
|
||||
inline nsStyleCoord& nsStylePosition::MinBSize(mozilla::WritingMode aWM)
|
||||
{
|
||||
return aWM.IsVertical() ? mMinWidth : mMinHeight;
|
||||
}
|
||||
inline nsStyleCoord& nsStylePosition::MaxBSize(mozilla::WritingMode aWM)
|
||||
{
|
||||
return aWM.IsVertical() ? mMaxWidth : mMaxHeight;
|
||||
}
|
||||
|
||||
inline const nsStyleCoord&
|
||||
nsStylePosition::ISize(mozilla::WritingMode aWM) const
|
||||
{
|
||||
return aWM.IsVertical() ? mHeight : mWidth;
|
||||
}
|
||||
inline const nsStyleCoord&
|
||||
nsStylePosition::MinISize(mozilla::WritingMode aWM) const
|
||||
{
|
||||
return aWM.IsVertical() ? mMinHeight : mMinWidth;
|
||||
}
|
||||
inline const nsStyleCoord&
|
||||
nsStylePosition::MaxISize(mozilla::WritingMode aWM) const
|
||||
{
|
||||
return aWM.IsVertical() ? mMaxHeight : mMaxWidth;
|
||||
}
|
||||
inline const nsStyleCoord&
|
||||
nsStylePosition::BSize(mozilla::WritingMode aWM) const
|
||||
{
|
||||
return aWM.IsVertical() ? mWidth : mHeight;
|
||||
}
|
||||
inline const nsStyleCoord&
|
||||
nsStylePosition::MinBSize(mozilla::WritingMode aWM) const
|
||||
{
|
||||
return aWM.IsVertical() ? mMinWidth : mMinHeight;
|
||||
}
|
||||
inline const nsStyleCoord&
|
||||
nsStylePosition::MaxBSize(mozilla::WritingMode aWM) const
|
||||
{
|
||||
return aWM.IsVertical() ? mMaxWidth : mMaxHeight;
|
||||
}
|
||||
|
||||
inline bool
|
||||
nsStylePosition::ISizeDependsOnContainer(mozilla::WritingMode aWM) const
|
||||
{
|
||||
return aWM.IsVertical() ? HeightDependsOnContainer()
|
||||
: WidthDependsOnContainer();
|
||||
}
|
||||
inline bool
|
||||
nsStylePosition::MinISizeDependsOnContainer(mozilla::WritingMode aWM) const
|
||||
{
|
||||
return aWM.IsVertical() ? MinHeightDependsOnContainer()
|
||||
: MinWidthDependsOnContainer();
|
||||
}
|
||||
inline bool
|
||||
nsStylePosition::MaxISizeDependsOnContainer(mozilla::WritingMode aWM) const
|
||||
{
|
||||
return aWM.IsVertical() ? MaxHeightDependsOnContainer()
|
||||
: MaxWidthDependsOnContainer();
|
||||
}
|
||||
inline bool
|
||||
nsStylePosition::BSizeDependsOnContainer(mozilla::WritingMode aWM) const
|
||||
{
|
||||
return aWM.IsVertical() ? WidthDependsOnContainer()
|
||||
: HeightDependsOnContainer();
|
||||
}
|
||||
inline bool
|
||||
nsStylePosition::MinBSizeDependsOnContainer(mozilla::WritingMode aWM) const
|
||||
{
|
||||
return aWM.IsVertical() ? MinWidthDependsOnContainer()
|
||||
: MinHeightDependsOnContainer();
|
||||
}
|
||||
inline bool
|
||||
nsStylePosition::MaxBSizeDependsOnContainer(mozilla::WritingMode aWM) const
|
||||
{
|
||||
return aWM.IsVertical() ? MaxWidthDependsOnContainer()
|
||||
: MaxHeightDependsOnContainer();
|
||||
}
|
||||
|
||||
#endif // WritingModes_h_
|
||||
|
||||
@@ -2999,38 +2999,22 @@ nsBlockFrame::IsSelfEmpty()
|
||||
return false;
|
||||
}
|
||||
|
||||
WritingMode wm = GetWritingMode();
|
||||
const nsStylePosition* position = StylePosition();
|
||||
bool vertical = GetWritingMode().IsVertical();
|
||||
|
||||
if (vertical) {
|
||||
if (IsNonAutoNonZeroBSize(position->mMinWidth) ||
|
||||
IsNonAutoNonZeroBSize(position->mWidth)) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (IsNonAutoNonZeroBSize(position->mMinHeight) ||
|
||||
IsNonAutoNonZeroBSize(position->mHeight)) {
|
||||
return false;
|
||||
}
|
||||
if (IsNonAutoNonZeroBSize(position->MinBSize(wm)) ||
|
||||
IsNonAutoNonZeroBSize(position->BSize(wm))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const nsStyleBorder* border = StyleBorder();
|
||||
const nsStylePadding* padding = StylePadding();
|
||||
|
||||
if (vertical) {
|
||||
if (border->GetComputedBorderWidth(NS_SIDE_LEFT) != 0 ||
|
||||
border->GetComputedBorderWidth(NS_SIDE_RIGHT) != 0 ||
|
||||
!nsLayoutUtils::IsPaddingZero(padding->mPadding.GetLeft()) ||
|
||||
!nsLayoutUtils::IsPaddingZero(padding->mPadding.GetRight())) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (border->GetComputedBorderWidth(NS_SIDE_TOP) != 0 ||
|
||||
border->GetComputedBorderWidth(NS_SIDE_BOTTOM) != 0 ||
|
||||
!nsLayoutUtils::IsPaddingZero(padding->mPadding.GetTop()) ||
|
||||
!nsLayoutUtils::IsPaddingZero(padding->mPadding.GetBottom())) {
|
||||
return false;
|
||||
}
|
||||
if (border->GetComputedBorderWidth(wm.PhysicalSide(eLogicalSideBStart)) != 0 ||
|
||||
border->GetComputedBorderWidth(wm.PhysicalSide(eLogicalSideBEnd)) != 0 ||
|
||||
!nsLayoutUtils::IsPaddingZero(padding->mPadding.GetBStart(wm)) ||
|
||||
!nsLayoutUtils::IsPaddingZero(padding->mPadding.GetBEnd(wm))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (HasOutsideBullet() && !BulletIsEmpty()) {
|
||||
|
||||
@@ -899,9 +899,7 @@ nsContainerFrame::ComputeAutoSize(nsRenderingContext* aRenderingContext,
|
||||
// replaced elements always shrink-wrap
|
||||
if (aShrinkWrap || IsFrameOfType(eReplaced)) {
|
||||
// don't bother setting it if the result won't be used
|
||||
const nsStyleCoord& inlineStyleCoord =
|
||||
aWM.IsVertical() ? StylePosition()->mHeight : StylePosition()->mWidth;
|
||||
if (inlineStyleCoord.GetUnit() == eStyleUnit_Auto) {
|
||||
if (StylePosition()->ISize(aWM).GetUnit() == eStyleUnit_Auto) {
|
||||
result.ISize(aWM) = ShrinkWidthToFit(aRenderingContext, availBased);
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -4207,12 +4207,8 @@ nsFrame::ComputeSize(nsRenderingContext *aRenderingContext,
|
||||
aMargin.ISize(aWM) + aBorder.ISize(aWM) + aPadding.ISize(aWM) -
|
||||
boxSizingAdjust.ISize(aWM);
|
||||
|
||||
bool isVertical = aWM.IsVertical();
|
||||
|
||||
const nsStyleCoord* inlineStyleCoord =
|
||||
isVertical ? &(stylePos->mHeight) : &(stylePos->mWidth);
|
||||
const nsStyleCoord* blockStyleCoord =
|
||||
isVertical ? &(stylePos->mWidth) : &(stylePos->mHeight);
|
||||
const nsStyleCoord* inlineStyleCoord = &stylePos->ISize(aWM);
|
||||
const nsStyleCoord* blockStyleCoord = &stylePos->BSize(aWM);
|
||||
|
||||
bool isFlexItem = IsFlexItem();
|
||||
bool isInlineFlexItem = false;
|
||||
@@ -4258,8 +4254,7 @@ nsFrame::ComputeSize(nsRenderingContext *aRenderingContext,
|
||||
*inlineStyleCoord);
|
||||
}
|
||||
|
||||
const nsStyleCoord& maxISizeCoord =
|
||||
isVertical ? stylePos->mMaxHeight : stylePos->mMaxWidth;
|
||||
const nsStyleCoord& maxISizeCoord = stylePos->MaxISize(aWM);
|
||||
|
||||
// Flex items ignore their min & max sizing properties in their
|
||||
// flex container's main-axis. (Those properties get applied later in
|
||||
@@ -4273,8 +4268,7 @@ nsFrame::ComputeSize(nsRenderingContext *aRenderingContext,
|
||||
result.ISize(aWM) = std::min(maxISize, result.ISize(aWM));
|
||||
}
|
||||
|
||||
const nsStyleCoord& minISizeCoord =
|
||||
isVertical ? stylePos->mMinHeight : stylePos->mMinWidth;
|
||||
const nsStyleCoord& minISizeCoord = stylePos->MinISize(aWM);
|
||||
|
||||
nscoord minISize;
|
||||
if (minISizeCoord.GetUnit() != eStyleUnit_Auto &&
|
||||
@@ -4305,8 +4299,7 @@ nsFrame::ComputeSize(nsRenderingContext *aRenderingContext,
|
||||
*blockStyleCoord);
|
||||
}
|
||||
|
||||
const nsStyleCoord& maxBSizeCoord =
|
||||
isVertical ? stylePos->mMaxWidth : stylePos->mMaxHeight;
|
||||
const nsStyleCoord& maxBSizeCoord = stylePos->MaxBSize(aWM);
|
||||
|
||||
if (result.BSize(aWM) != NS_UNCONSTRAINEDSIZE) {
|
||||
if (!nsLayoutUtils::IsAutoBSize(maxBSizeCoord, aCBSize.BSize(aWM)) &&
|
||||
@@ -4318,8 +4311,7 @@ nsFrame::ComputeSize(nsRenderingContext *aRenderingContext,
|
||||
result.BSize(aWM) = std::min(maxBSize, result.BSize(aWM));
|
||||
}
|
||||
|
||||
const nsStyleCoord& minBSizeCoord =
|
||||
isVertical ? stylePos->mMinWidth : stylePos->mMinHeight;
|
||||
const nsStyleCoord& minBSizeCoord = stylePos->MinBSize(aWM);
|
||||
|
||||
if (!nsLayoutUtils::IsAutoBSize(minBSizeCoord, aCBSize.BSize(aWM)) &&
|
||||
!(isFlexItem && !isInlineFlexItem)) {
|
||||
@@ -4415,9 +4407,7 @@ nsFrame::ComputeAutoSize(nsRenderingContext *aRenderingContext,
|
||||
LogicalSize result(aWM, 0xdeadbeef, NS_UNCONSTRAINEDSIZE);
|
||||
|
||||
// don't bother setting it if the result won't be used
|
||||
const nsStyleCoord& inlineStyleCoord =
|
||||
aWM.IsVertical() ? StylePosition()->mHeight : StylePosition()->mWidth;
|
||||
if (inlineStyleCoord.GetUnit() == eStyleUnit_Auto) {
|
||||
if (StylePosition()->ISize(aWM).GetUnit() == eStyleUnit_Auto) {
|
||||
nscoord availBased = aAvailableISize - aMargin.ISize(aWM) -
|
||||
aBorder.ISize(aWM) - aPadding.ISize(aWM);
|
||||
result.ISize(aWM) = ShrinkWidthToFit(aRenderingContext, availBased);
|
||||
|
||||
@@ -55,6 +55,7 @@
|
||||
#include "gfxPlatform.h"
|
||||
#include "gfxPrefs.h"
|
||||
#include "AsyncScrollBase.h"
|
||||
#include "UnitTransforms.h"
|
||||
#include <mozilla/layers/AxisPhysicsModel.h>
|
||||
#include <mozilla/layers/AxisPhysicsMSDModel.h>
|
||||
#include <algorithm>
|
||||
@@ -351,10 +352,16 @@ nsHTMLScrollFrame::TryLayout(ScrollReflowState* aState,
|
||||
ComputeInsideBorderSize(aState, desiredInsideBorderSize);
|
||||
nsSize scrollPortSize = nsSize(std::max(0, aState->mInsideBorderSize.width - vScrollbarDesiredWidth),
|
||||
std::max(0, aState->mInsideBorderSize.height - hScrollbarDesiredHeight));
|
||||
|
||||
nsSize visualScrollPortSize = scrollPortSize;
|
||||
nsIPresShell* presShell = PresContext()->PresShell();
|
||||
if (mHelper.mIsRoot && presShell->IsScrollPositionClampingScrollPortSizeSet()) {
|
||||
visualScrollPortSize = presShell->GetScrollPositionClampingScrollPortSize();
|
||||
nsSize compositionSize = nsLayoutUtils::CalculateCompositionSizeForFrame(this, false);
|
||||
float resolution = presShell->GetResolution();
|
||||
compositionSize.width /= resolution;
|
||||
compositionSize.height /= resolution;
|
||||
visualScrollPortSize = nsSize(std::max(0, compositionSize.width - vScrollbarDesiredWidth),
|
||||
std::max(0, compositionSize.height - hScrollbarDesiredHeight));
|
||||
}
|
||||
|
||||
if (!aForce) {
|
||||
@@ -394,7 +401,7 @@ nsHTMLScrollFrame::TryLayout(ScrollReflowState* aState,
|
||||
aState->mShowVScrollbar = aAssumeVScroll;
|
||||
nsPoint scrollPortOrigin(aState->mComputedBorder.left,
|
||||
aState->mComputedBorder.top);
|
||||
if (!mHelper.IsScrollbarOnRight()) {
|
||||
if (!IsScrollbarOnRight()) {
|
||||
scrollPortOrigin.x += vScrollbarActualWidth;
|
||||
}
|
||||
mHelper.mScrollPort = nsRect(scrollPortOrigin, scrollPortSize);
|
||||
@@ -3036,17 +3043,30 @@ void
|
||||
ScrollFrameHelper::ComputeFrameMetrics(Layer* aLayer,
|
||||
nsIFrame* aContainerReferenceFrame,
|
||||
const ContainerLayerParameters& aParameters,
|
||||
Maybe<nsRect>* aClipRect,
|
||||
nsTArray<FrameMetrics>* aOutput) const
|
||||
{
|
||||
if (!mShouldBuildScrollableLayer || mIsScrollableLayerInRootContainer) {
|
||||
return;
|
||||
}
|
||||
|
||||
bool needsParentLayerClip = true;
|
||||
if (gfxPrefs::LayoutUseContainersForRootFrames() && !mAddClipRectToLayer) {
|
||||
// For containerful frames, the clip is on the container frame.
|
||||
needsParentLayerClip = false;
|
||||
}
|
||||
|
||||
// Note: Do not apply clips to the scroll ports of metrics above the first
|
||||
// one on a given layer. They will be applied by the compositor instead,
|
||||
// with async transforms for the scrollframes interspersed between them.
|
||||
if (aOutput->Length() > 0) {
|
||||
needsParentLayerClip = false;
|
||||
}
|
||||
|
||||
nsPoint toReferenceFrame = mOuter->GetOffsetToCrossDoc(aContainerReferenceFrame);
|
||||
bool isRoot = mIsRoot && mOuter->PresContext()->IsRootContentDocument();
|
||||
// If APZ is enabled, do not apply clips to the scroll ports of metrics
|
||||
// above the first one on a given layer. They will be applied by the
|
||||
// compositor instead, with async transforms for the scrollframes interspersed
|
||||
// between them.
|
||||
bool omitClip = gfxPrefs::AsyncPanZoomEnabled() && aOutput->Length() > 0;
|
||||
if (!omitClip && (!gfxPrefs::LayoutUseContainersForRootFrames() || mAddClipRectToLayer)) {
|
||||
|
||||
Maybe<nsRect> parentLayerClip;
|
||||
if (needsParentLayerClip) {
|
||||
nsRect clip = nsRect(mScrollPort.TopLeft() + toReferenceFrame,
|
||||
nsLayoutUtils::CalculateCompositionSizeForFrame(mOuter));
|
||||
if (isRoot) {
|
||||
@@ -3054,12 +3074,31 @@ ScrollFrameHelper::ComputeFrameMetrics(Layer* aLayer,
|
||||
clip.width = NSToCoordRound(clip.width / res);
|
||||
clip.height = NSToCoordRound(clip.height / res);
|
||||
}
|
||||
// When using containers, the container layer contains the clip. Otherwise
|
||||
// we always include the clip.
|
||||
*aClipRect = Some(clip);
|
||||
|
||||
parentLayerClip = Some(clip);
|
||||
}
|
||||
|
||||
if (!mShouldBuildScrollableLayer || mIsScrollableLayerInRootContainer) {
|
||||
if (!gfxPrefs::AsyncPanZoomEnabled()) {
|
||||
if (parentLayerClip) {
|
||||
// If APZ is not enabled, we still need the displayport to be clipped
|
||||
// in the compositor.
|
||||
ParentLayerIntRect displayportClip =
|
||||
ViewAs<ParentLayerPixel>(
|
||||
parentLayerClip->ScaleToNearestPixels(
|
||||
aParameters.mXScale,
|
||||
aParameters.mYScale,
|
||||
mScrolledFrame->PresContext()->AppUnitsPerDevPixel()));
|
||||
|
||||
ParentLayerIntRect layerClip;
|
||||
if (const ParentLayerIntRect* origClip = aLayer->GetClipRect().ptrOr(nullptr)) {
|
||||
layerClip = displayportClip.Intersect(*origClip);
|
||||
} else {
|
||||
layerClip = displayportClip;
|
||||
}
|
||||
aLayer->SetClipRect(Some(layerClip));
|
||||
}
|
||||
|
||||
// Return early, since if we don't use APZ we don't need FrameMetrics.
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -3070,7 +3109,7 @@ ScrollFrameHelper::ComputeFrameMetrics(Layer* aLayer,
|
||||
nsLayoutUtils::ComputeFrameMetrics(
|
||||
mScrolledFrame, mOuter, mOuter->GetContent(),
|
||||
aContainerReferenceFrame, aLayer, mScrollParentID,
|
||||
scrollport, isRoot, aParameters);
|
||||
scrollport, parentLayerClip, isRoot, aParameters);
|
||||
}
|
||||
|
||||
bool
|
||||
@@ -4269,7 +4308,7 @@ ScrollFrameHelper::IsScrollingActive(nsDisplayListBuilder* aBuilder) const
|
||||
nsresult
|
||||
nsXULScrollFrame::Layout(nsBoxLayoutState& aState)
|
||||
{
|
||||
bool scrollbarRight = mHelper.IsScrollbarOnRight();
|
||||
bool scrollbarRight = IsScrollbarOnRight();
|
||||
bool scrollbarBottom = true;
|
||||
|
||||
// get the content rect
|
||||
@@ -4888,12 +4927,12 @@ ScrollFrameHelper::SetCoordAttribute(nsIContent* aContent, nsIAtom* aAtom,
|
||||
DebugOnly<nsWeakPtr> weakShell(
|
||||
do_GetWeakReference(mOuter->PresContext()->PresShell()));
|
||||
// convert to pixels
|
||||
aSize = nsPresContext::AppUnitsToIntCSSPixels(aSize);
|
||||
int32_t pixelSize = nsPresContext::AppUnitsToIntCSSPixels(aSize);
|
||||
|
||||
// only set the attribute if it changed.
|
||||
|
||||
nsAutoString newValue;
|
||||
newValue.AppendInt(aSize);
|
||||
newValue.AppendInt(pixelSize);
|
||||
|
||||
if (aContent->AttrValueIs(kNameSpaceID_None, aAtom, newValue, eCaseMatters))
|
||||
return;
|
||||
|
||||
@@ -378,7 +378,6 @@ public:
|
||||
bool WantAsyncScroll() const;
|
||||
void ComputeFrameMetrics(Layer* aLayer, nsIFrame* aContainerReferenceFrame,
|
||||
const ContainerLayerParameters& aParameters,
|
||||
mozilla::Maybe<nsRect>* aClipRect,
|
||||
nsTArray<FrameMetrics>* aOutput) const;
|
||||
|
||||
// nsIScrollbarMediator
|
||||
@@ -833,10 +832,9 @@ public:
|
||||
}
|
||||
virtual void ComputeFrameMetrics(Layer* aLayer, nsIFrame* aContainerReferenceFrame,
|
||||
const ContainerLayerParameters& aParameters,
|
||||
mozilla::Maybe<nsRect>* aClipRect,
|
||||
nsTArray<FrameMetrics>* aOutput) const override {
|
||||
mHelper.ComputeFrameMetrics(aLayer, aContainerReferenceFrame,
|
||||
aParameters, aClipRect, aOutput);
|
||||
aParameters, aOutput);
|
||||
}
|
||||
virtual bool IsIgnoringViewportClipping() const override {
|
||||
return mHelper.IsIgnoringViewportClipping();
|
||||
@@ -898,6 +896,10 @@ public:
|
||||
virtual void ScrollbarActivityStarted() const override;
|
||||
virtual void ScrollbarActivityStopped() const override;
|
||||
|
||||
virtual bool IsScrollbarOnRight() const override {
|
||||
return mHelper.IsScrollbarOnRight();
|
||||
}
|
||||
|
||||
virtual void SetTransformingByAPZ(bool aTransforming) override {
|
||||
mHelper.SetTransformingByAPZ(aTransforming);
|
||||
}
|
||||
@@ -1222,10 +1224,9 @@ public:
|
||||
}
|
||||
virtual void ComputeFrameMetrics(Layer* aLayer, nsIFrame* aContainerReferenceFrame,
|
||||
const ContainerLayerParameters& aParameters,
|
||||
mozilla::Maybe<nsRect>* aClipRect,
|
||||
nsTArray<FrameMetrics>* aOutput) const override {
|
||||
mHelper.ComputeFrameMetrics(aLayer, aContainerReferenceFrame,
|
||||
aParameters, aClipRect, aOutput);
|
||||
aParameters, aOutput);
|
||||
}
|
||||
virtual bool IsIgnoringViewportClipping() const override {
|
||||
return mHelper.IsIgnoringViewportClipping();
|
||||
@@ -1295,6 +1296,10 @@ public:
|
||||
virtual void ScrollbarActivityStarted() const override;
|
||||
virtual void ScrollbarActivityStopped() const override;
|
||||
|
||||
virtual bool IsScrollbarOnRight() const override {
|
||||
return mHelper.IsScrollbarOnRight();
|
||||
}
|
||||
|
||||
virtual void SetTransformingByAPZ(bool aTransforming) override {
|
||||
mHelper.SetTransformingByAPZ(aTransforming);
|
||||
}
|
||||
|
||||
@@ -386,11 +386,8 @@ nsHTMLReflowState::Init(nsPresContext* aPresContext,
|
||||
// An SVG foreignObject frame is inherently constrained block-size.
|
||||
frame->AddStateBits(NS_FRAME_IN_CONSTRAINED_BSIZE);
|
||||
} else {
|
||||
const bool vertical = mWritingMode.IsVertical();
|
||||
const nsStyleCoord& bSizeCoord =
|
||||
vertical ? mStylePosition->mWidth : mStylePosition->mHeight;
|
||||
const nsStyleCoord& maxBSizeCoord =
|
||||
vertical ? mStylePosition->mMaxWidth : mStylePosition->mMaxHeight;
|
||||
const nsStyleCoord& bSizeCoord = mStylePosition->BSize(mWritingMode);
|
||||
const nsStyleCoord& maxBSizeCoord = mStylePosition->MaxBSize(mWritingMode);
|
||||
if ((bSizeCoord.GetUnit() != eStyleUnit_Auto ||
|
||||
maxBSizeCoord.GetUnit() != eStyleUnit_None) &&
|
||||
// Don't set NS_FRAME_IN_CONSTRAINED_BSIZE on body or html elements.
|
||||
@@ -404,10 +401,8 @@ nsHTMLReflowState::Init(nsPresContext* aPresContext,
|
||||
nsIFrame* containingBlk = frame;
|
||||
while (containingBlk) {
|
||||
const nsStylePosition* stylePos = containingBlk->StylePosition();
|
||||
const nsStyleCoord& bSizeCoord =
|
||||
vertical ? stylePos->mWidth : stylePos->mHeight;
|
||||
const nsStyleCoord& maxBSizeCoord =
|
||||
vertical ? stylePos->mMaxWidth : stylePos->mMaxHeight;
|
||||
const nsStyleCoord& bSizeCoord = stylePos->BSize(mWritingMode);
|
||||
const nsStyleCoord& maxBSizeCoord = stylePos->MaxBSize(mWritingMode);
|
||||
if ((bSizeCoord.IsCoordPercentCalcUnit() &&
|
||||
!bSizeCoord.HasPercent()) ||
|
||||
(maxBSizeCoord.IsCoordPercentCalcUnit() &&
|
||||
@@ -2422,25 +2417,9 @@ nsHTMLReflowState::CalculateBlockSideMargins(nsIAtom* aFrameType)
|
||||
|
||||
// The css2 spec clearly defines how block elements should behave
|
||||
// in section 10.3.3.
|
||||
bool isAutoStartMargin, isAutoEndMargin;
|
||||
const nsStyleSides& styleSides = mStyleMargin->mMargin;
|
||||
if (cbWM.IsVertical()) {
|
||||
if (cbWM.IsBidiLTR()) {
|
||||
isAutoStartMargin = eStyleUnit_Auto == styleSides.GetTopUnit();
|
||||
isAutoEndMargin = eStyleUnit_Auto == styleSides.GetBottomUnit();
|
||||
} else {
|
||||
isAutoStartMargin = eStyleUnit_Auto == styleSides.GetBottomUnit();
|
||||
isAutoEndMargin = eStyleUnit_Auto == styleSides.GetTopUnit();
|
||||
}
|
||||
} else {
|
||||
if (cbWM.IsBidiLTR()) {
|
||||
isAutoStartMargin = eStyleUnit_Auto == styleSides.GetLeftUnit();
|
||||
isAutoEndMargin = eStyleUnit_Auto == styleSides.GetRightUnit();
|
||||
} else {
|
||||
isAutoStartMargin = eStyleUnit_Auto == styleSides.GetRightUnit();
|
||||
isAutoEndMargin = eStyleUnit_Auto == styleSides.GetLeftUnit();
|
||||
}
|
||||
}
|
||||
bool isAutoStartMargin = eStyleUnit_Auto == styleSides.GetIStartUnit(cbWM);
|
||||
bool isAutoEndMargin = eStyleUnit_Auto == styleSides.GetIEndUnit(cbWM);
|
||||
if (!isAutoStartMargin && !isAutoEndMargin) {
|
||||
// Neither margin is 'auto' so we're over constrained. Use the
|
||||
// 'direction' property of the parent to tell which margin to
|
||||
|
||||
@@ -418,7 +418,6 @@ public:
|
||||
virtual void ComputeFrameMetrics(mozilla::layers::Layer* aLayer,
|
||||
nsIFrame* aContainerReferenceFrame,
|
||||
const ContainerLayerParameters& aParameters,
|
||||
mozilla::Maybe<nsRect>* aOutClipRect,
|
||||
nsTArray<FrameMetrics>* aOutput) const = 0;
|
||||
|
||||
/**
|
||||
|
||||
@@ -9,7 +9,7 @@ fuzzy-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)&&!layersGPUAccelerated&&!azur
|
||||
== table-caption-2.html table-internal-2-ref.html
|
||||
== table-caption-3.html table-internal-3-ref.html
|
||||
== table-caption-4.html table-internal-8-ref.html
|
||||
skip-if(B2G&&browserIsRemote) != table-caption-5.html table-print-1-ref.html # TODO: change to == when bug 967870 is fixed
|
||||
skip-if((B2G&&browserIsRemote)||Mulet) != table-caption-5.html table-print-1-ref.html # TODO: change to == when bug 967870 is fixed # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== table-cell-1.html table-internal-1-ref.html
|
||||
== table-cell-2.html table-internal-2-ref.html
|
||||
== table-cell-3.html table-internal-3-ref.html
|
||||
@@ -17,7 +17,7 @@ skip-if(B2G&&browserIsRemote) != table-caption-5.html table-print-1-ref.html # T
|
||||
== table-cell-5.html table-internal-5-ref.html
|
||||
== table-cell-6.html table-internal-6-ref.html
|
||||
== table-cell-7.html table-internal-7-ref.html
|
||||
skip-if(B2G&&browserIsRemote) != table-cell-8.html table-print-1-ref.html # TODO: change to == when bug 967870 is fixed
|
||||
skip-if((B2G&&browserIsRemote)||Mulet) != table-cell-8.html table-print-1-ref.html # TODO: change to == when bug 967870 is fixed # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== table-row-1.html table-internal-1-ref.html
|
||||
== table-row-2.html table-internal-2-ref.html
|
||||
== table-row-3.html table-internal-3-ref.html
|
||||
@@ -49,7 +49,7 @@ skip-if(B2G&&browserIsRemote) != table-cell-8.html table-print-1-ref.html # TODO
|
||||
== continuation-positioned-inline-1.html continuation-positioned-inline-ref.html
|
||||
== continuation-positioned-inline-2.html continuation-positioned-inline-ref.html
|
||||
== scrollframe-1.html scrollframe-1-ref.html
|
||||
skip-if(B2G) fuzzy-if(Android,9,185) == scrollframe-2.html scrollframe-2-ref.html #bug 756530
|
||||
skip-if(B2G||Mulet) fuzzy-if(Android,9,185) == scrollframe-2.html scrollframe-2-ref.html #bug 756530 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
fuzzy-if(gtk2Widget,1,8) == select-1.html select-1-ref.html
|
||||
fuzzy-if(gtk2Widget,1,8) == select-1-dynamic.html select-1-ref.html
|
||||
== select-2.html select-2-ref.html
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
include gradient/reftest.list
|
||||
include vector/reftest.list
|
||||
|
||||
skip-if(B2G) == layers-stacking-order.xhtml layers-stacking-order-ref.xhtml
|
||||
skip-if(B2G) == layers-layer-count-cascade-1.xhtml layers-layer-count-1-ref.xhtml
|
||||
skip-if(B2G||Mulet) == layers-stacking-order.xhtml layers-stacking-order-ref.xhtml # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if(B2G||Mulet) == layers-layer-count-cascade-1.xhtml layers-layer-count-1-ref.xhtml # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== layers-layer-count-inheritance-1.xhtml layers-layer-count-1-ref.xhtml
|
||||
== layers-layer-count-cascade-2.xhtml layers-layer-count-2-ref.xhtml
|
||||
== layers-layer-count-inheritance-2.xhtml layers-layer-count-2-ref.xhtml
|
||||
@@ -15,7 +15,7 @@ fuzzy-if(Android,9,600000) == viewport-translucent-color-1.html viewport-translu
|
||||
== translucent-color-2.html translucent-color-ref.html
|
||||
== translucent-color-3.html translucent-color-ref.html
|
||||
!= translucent-color-ref.html about:blank
|
||||
skip-if(B2G) == root-element-display-none-1.html root-element-display-none-ref.html
|
||||
skip-if(B2G||Mulet) == root-element-display-none-1.html root-element-display-none-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== continuous-inline-1a.html continuous-inline-1ab-ref.html
|
||||
== continuous-inline-1b.html continuous-inline-1ab-ref.html
|
||||
== continuous-inline-1c.html continuous-inline-1cd-ref.html
|
||||
@@ -23,8 +23,8 @@ skip-if(B2G) == root-element-display-none-1.html root-element-display-none-ref.h
|
||||
== continuous-inline-2a.html continuous-inline-2-ref.html
|
||||
== continuous-inline-2b.html continuous-inline-2-ref.html
|
||||
== continuous-inline-3.html continuous-inline-3-ref.html
|
||||
skip-if(B2G) == continuous-inline-4a.html continuous-inline-4-ref.html
|
||||
skip-if(B2G) == continuous-inline-4b.html continuous-inline-4-ref.html
|
||||
skip-if(B2G||Mulet) == continuous-inline-4a.html continuous-inline-4-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if(B2G||Mulet) == continuous-inline-4b.html continuous-inline-4-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== continuous-inline-5a.html continuous-inline-5-ref.html
|
||||
== continuous-inline-5b.html continuous-inline-5-ref.html
|
||||
== background-redraw-237766.html background-redraw-237766-ref.html
|
||||
@@ -32,7 +32,7 @@ skip-if(B2G) == continuous-inline-4b.html continuous-inline-4-ref.html
|
||||
== background-clip-1.html background-clip-1-ref.html
|
||||
== background-clip-2.html background-clip-2-ref.html
|
||||
|
||||
skip-if(B2G) == background-position-1a.html background-position-1-ref.html
|
||||
skip-if(B2G||Mulet) == background-position-1a.html background-position-1-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== background-position-1b.html background-position-1-ref.html
|
||||
== background-position-1c.html background-position-1-ref.html
|
||||
== background-position-2a.html background-position-2-ref.html
|
||||
@@ -61,7 +61,7 @@ skip-if(B2G) == background-position-1a.html background-position-1-ref.html
|
||||
== background-size-percent-length.html background-size-length-percent-ref.html
|
||||
== background-size-percent-percent.html background-size-percent-percent-ref.html
|
||||
== background-size-length-length.html background-size-length-length-ref.html
|
||||
skip-if(B2G) == background-size-percent-percent-stretch.html background-size-percent-percent-stretch-ref.html # bug 773482
|
||||
skip-if(B2G||Mulet) == background-size-percent-percent-stretch.html background-size-percent-percent-stretch-ref.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
|
||||
== background-size-body-percent-percent.html background-size-body-percent-percent-ref.html
|
||||
== background-size-body-percent-percent-no-repeat.html background-size-body-percent-percent-ref.html
|
||||
@@ -87,7 +87,7 @@ fails-if(smallScreen&&Android) != background-size-body-contain-no-repeat.html ba
|
||||
== background-size-contain-clip-padding-origin-border.html background-size-contain-clip-padding-origin-border-ref.html
|
||||
== background-size-contain-clip-padding-origin-border-padding.html background-size-contain-clip-padding-origin-border-padding-ref.html
|
||||
|
||||
skip-if(B2G) == background-layers-1a.html background-layers-1-ref.html # bug 773482
|
||||
skip-if(B2G||Mulet) == background-layers-1a.html background-layers-1-ref.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
fuzzy-if(OSX,1,324) == background-layers-1b.html background-layers-1-ref.html
|
||||
|
||||
# box-decoration-break's effect on backgrounds is touchy and hard to test due to stretching
|
||||
@@ -121,12 +121,12 @@ fails == background-size-zoom-repeat.html background-size-zoom-repeat-ref.html
|
||||
# -moz-default-background-color and -moz-default-color (bug 591341)
|
||||
== background-moz-default-background-color.html background-moz-default-background-color-ref.html
|
||||
|
||||
random-if(B2G) == fixed-bg-with-transform-outside-viewport-1.html fixed-bg-with-transform-outside-viewport-ref.html
|
||||
random-if(B2G||Mulet) == fixed-bg-with-transform-outside-viewport-1.html fixed-bg-with-transform-outside-viewport-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
|
||||
HTTP == root-background-1.html root-background-ref.html
|
||||
HTTP != root-background-1.html about:blank
|
||||
|
||||
random-if(B2G) == really-big-background.html really-big-background-ref.html
|
||||
random-if(B2G||Mulet) == really-big-background.html really-big-background-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== body-background.html body-background-ref.html
|
||||
== table-background.html table-background-ref.html
|
||||
== table-background-print.html table-background-print-ref.html
|
||||
|
||||
@@ -12,27 +12,27 @@ include empty/reftest.list
|
||||
== tall--32px-auto--nonpercent-width-nonpercent-height.html ref-tall-lime32x64-aqua32x64.html
|
||||
== tall--32px-auto--nonpercent-width-nonpercent-height-viewbox.html ref-tall-lime32x64-aqua32x64.html
|
||||
== tall--32px-auto--nonpercent-width-omitted-height.html ref-tall-lime32x384-aqua32x384.html
|
||||
skip-if(B2G) == tall--32px-auto--nonpercent-width-omitted-height-viewbox.html ref-tall-lime32x256-aqua32x256.html # bug 773482
|
||||
skip-if(B2G) == tall--32px-auto--nonpercent-width-percent-height.html ref-tall-lime32x384-aqua32x384.html # bug 773482
|
||||
skip-if(B2G||Mulet) == tall--32px-auto--nonpercent-width-omitted-height-viewbox.html ref-tall-lime32x256-aqua32x256.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if(B2G||Mulet) == tall--32px-auto--nonpercent-width-percent-height.html ref-tall-lime32x384-aqua32x384.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== tall--32px-auto--nonpercent-width-percent-height-viewbox.html ref-tall-lime32x256-aqua32x256.html
|
||||
skip-if(B2G) == tall--32px-auto--omitted-width-nonpercent-height.html ref-tall-lime32x16-aqua32x16.html # bug 773482
|
||||
skip-if(B2G||Mulet) == tall--32px-auto--omitted-width-nonpercent-height.html ref-tall-lime32x16-aqua32x16.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== tall--32px-auto--omitted-width-nonpercent-height-viewbox.html ref-tall-lime32x256-aqua32x256.html
|
||||
== tall--32px-auto--omitted-width-omitted-height.html ref-tall-lime32x384-aqua32x384.html
|
||||
== tall--32px-auto--omitted-width-omitted-height-viewbox.html ref-tall-lime32x256-aqua32x256.html
|
||||
skip-if(B2G) == tall--32px-auto--omitted-width-percent-height.html ref-tall-lime32x384-aqua32x384.html # bug 773482
|
||||
skip-if(B2G) == tall--32px-auto--omitted-width-percent-height-viewbox.html ref-tall-lime32x256-aqua32x256.html # bug 773482
|
||||
skip-if(B2G||Mulet) == tall--32px-auto--omitted-width-percent-height.html ref-tall-lime32x384-aqua32x384.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if(B2G||Mulet) == tall--32px-auto--omitted-width-percent-height-viewbox.html ref-tall-lime32x256-aqua32x256.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== tall--32px-auto--percent-width-nonpercent-height.html ref-tall-lime32x16-aqua32x16.html
|
||||
== tall--32px-auto--percent-width-nonpercent-height-viewbox.html ref-tall-lime32x256-aqua32x256.html
|
||||
== tall--32px-auto--percent-width-omitted-height.html ref-tall-lime32x384-aqua32x384.html
|
||||
skip-if(B2G) == tall--32px-auto--percent-width-omitted-height-viewbox.html ref-tall-lime32x256-aqua32x256.html # bug 773482
|
||||
skip-if(B2G||Mulet) == tall--32px-auto--percent-width-omitted-height-viewbox.html ref-tall-lime32x256-aqua32x256.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== tall--32px-auto--percent-width-percent-height.html ref-tall-lime32x384-aqua32x384.html
|
||||
skip-if(B2G) == tall--32px-auto--percent-width-percent-height-viewbox.html ref-tall-lime32x256-aqua32x256.html # bug 773482
|
||||
skip-if(B2G||Mulet) == tall--32px-auto--percent-width-percent-height-viewbox.html ref-tall-lime32x256-aqua32x256.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
|
||||
== tall--auto-32px--nonpercent-width-nonpercent-height.html ref-tall-lime8x16-aqua8x16.html
|
||||
== tall--auto-32px--nonpercent-width-nonpercent-height-viewbox.html ref-tall-lime8x16-aqua8x16.html
|
||||
skip-if(B2G) == tall--auto-32px--nonpercent-width-omitted-height.html ref-tall-lime8x16-aqua8x16.html # bug 773482
|
||||
skip-if(B2G||Mulet) == tall--auto-32px--nonpercent-width-omitted-height.html ref-tall-lime8x16-aqua8x16.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== tall--auto-32px--nonpercent-width-omitted-height-viewbox.html ref-tall-lime2x16-aqua2x16.html
|
||||
skip-if(B2G) == tall--auto-32px--nonpercent-width-percent-height.html ref-tall-lime8x16-aqua8x16.html
|
||||
skip-if(B2G||Mulet) == tall--auto-32px--nonpercent-width-percent-height.html ref-tall-lime8x16-aqua8x16.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== tall--auto-32px--nonpercent-width-percent-height-viewbox.html ref-tall-lime2x16-aqua2x16.html
|
||||
== tall--auto-32px--omitted-width-nonpercent-height.html ref-tall-lime256x16-aqua256x16.html
|
||||
== tall--auto-32px--omitted-width-nonpercent-height-viewbox.html ref-tall-lime2x16-aqua2x16.html
|
||||
@@ -47,7 +47,7 @@ skip-if(B2G) == tall--auto-32px--nonpercent-width-percent-height.html ref-tall-l
|
||||
== tall--auto-32px--percent-width-percent-height.html ref-tall-lime256x16-aqua256x16.html
|
||||
== tall--auto-32px--percent-width-percent-height-viewbox.html ref-tall-lime2x16-aqua2x16.html
|
||||
|
||||
skip-if(B2G) == tall--auto--nonpercent-width-nonpercent-height.html ref-tall-lime8x16-aqua8x16.html # bug 773482
|
||||
skip-if(B2G||Mulet) == tall--auto--nonpercent-width-nonpercent-height.html ref-tall-lime8x16-aqua8x16.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== tall--auto--nonpercent-width-nonpercent-height-viewbox.html ref-tall-lime8x16-aqua8x16.html
|
||||
== tall--auto--nonpercent-width-omitted-height.html ref-tall-lime8x384-aqua8x384.html
|
||||
== tall--auto--nonpercent-width-omitted-height-viewbox.html ref-tall-lime8x64-aqua8x64.html
|
||||
@@ -56,7 +56,7 @@ skip-if(B2G) == tall--auto--nonpercent-width-nonpercent-height.html ref-tall-lim
|
||||
== tall--auto--omitted-width-nonpercent-height.html ref-tall-lime256x16-aqua256x16.html
|
||||
== tall--auto--omitted-width-nonpercent-height-viewbox.html ref-tall-lime2x16-aqua2x16.html
|
||||
== tall--auto--omitted-width-omitted-height.html ref-tall-lime256x384-aqua256x384.html
|
||||
skip-if(B2G) == tall--auto--omitted-width-omitted-height-viewbox.html ref-tall-lime48x384-aqua48x384.html # bug 773482
|
||||
skip-if(B2G||Mulet) == tall--auto--omitted-width-omitted-height-viewbox.html ref-tall-lime48x384-aqua48x384.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== tall--auto--omitted-width-percent-height.html ref-tall-lime256x384-aqua256x384.html
|
||||
== tall--auto--omitted-width-percent-height-viewbox.html ref-tall-lime48x384-aqua48x384.html
|
||||
== tall--auto--percent-width-nonpercent-height.html ref-tall-lime256x16-aqua256x16.html
|
||||
@@ -68,8 +68,8 @@ skip-if(B2G) == tall--auto--omitted-width-omitted-height-viewbox.html ref-tall-l
|
||||
|
||||
== tall--contain--nonpercent-width-nonpercent-height.html ref-tall-lime192x384-aqua192x384.html
|
||||
== tall--contain--nonpercent-width-nonpercent-height-viewbox.html ref-tall-lime192x384-aqua192x384.html
|
||||
skip-if(B2G) == tall--contain--nonpercent-width-omitted-height.html ref-tall-lime256x384-aqua256x384.html # bug 773482
|
||||
skip-if(B2G) == tall--contain--nonpercent-width-omitted-height-viewbox.html ref-tall-lime48x384-aqua48x384.html # bug 773482
|
||||
skip-if(B2G||Mulet) == tall--contain--nonpercent-width-omitted-height.html ref-tall-lime256x384-aqua256x384.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if(B2G||Mulet) == tall--contain--nonpercent-width-omitted-height-viewbox.html ref-tall-lime48x384-aqua48x384.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== tall--contain--nonpercent-width-percent-height.html ref-tall-lime256x384-aqua256x384.html
|
||||
== tall--contain--nonpercent-width-percent-height-viewbox.html ref-tall-lime48x384-aqua48x384.html
|
||||
== tall--contain--omitted-width-nonpercent-height.html ref-tall-lime256x384-aqua256x384.html
|
||||
@@ -107,12 +107,12 @@ skip-if(B2G) == tall--contain--nonpercent-width-omitted-height-viewbox.html ref-
|
||||
|
||||
== wide--12px-auto--nonpercent-width-nonpercent-height.html ref-wide-lime12x24-aqua12x24.html
|
||||
== wide--12px-auto--nonpercent-width-nonpercent-height-viewbox.html ref-wide-lime12x24-aqua12x24.html
|
||||
skip-if(B2G) == wide--12px-auto--nonpercent-width-omitted-height.html ref-wide-lime12x128-aqua12x128.html
|
||||
skip-if(B2G) == wide--12px-auto--nonpercent-width-omitted-height-viewbox.html ref-wide-lime12x96-aqua12x96.html # bug 773482
|
||||
skip-if(B2G||Mulet) == wide--12px-auto--nonpercent-width-omitted-height.html ref-wide-lime12x128-aqua12x128.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if(B2G||Mulet) == wide--12px-auto--nonpercent-width-omitted-height-viewbox.html ref-wide-lime12x96-aqua12x96.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== wide--12px-auto--nonpercent-width-percent-height.html ref-wide-lime12x128-aqua12x128.html
|
||||
== wide--12px-auto--nonpercent-width-percent-height-viewbox.html ref-wide-lime12x96-aqua12x96.html
|
||||
skip-if(B2G) == wide--12px-auto--omitted-width-nonpercent-height.html ref-wide-lime12x16-aqua12x16.html # bug 773482
|
||||
skip-if(B2G) == wide--12px-auto--omitted-width-nonpercent-height-viewbox.html ref-wide-lime12x96-aqua12x96.html # bug 773482
|
||||
skip-if(B2G||Mulet) == wide--12px-auto--omitted-width-nonpercent-height.html ref-wide-lime12x16-aqua12x16.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if(B2G||Mulet) == wide--12px-auto--omitted-width-nonpercent-height-viewbox.html ref-wide-lime12x96-aqua12x96.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== wide--12px-auto--omitted-width-omitted-height.html ref-wide-lime12x128-aqua12x128.html
|
||||
== wide--12px-auto--omitted-width-omitted-height-viewbox.html ref-wide-lime12x96-aqua12x96.html
|
||||
== wide--12px-auto--omitted-width-percent-height.html ref-wide-lime12x128-aqua12x128.html
|
||||
@@ -120,15 +120,15 @@ skip-if(B2G) == wide--12px-auto--omitted-width-nonpercent-height-viewbox.html re
|
||||
== wide--12px-auto--percent-width-nonpercent-height.html ref-wide-lime12x16-aqua12x16.html
|
||||
== wide--12px-auto--percent-width-nonpercent-height-viewbox.html ref-wide-lime12x96-aqua12x96.html
|
||||
== wide--12px-auto--percent-width-omitted-height.html ref-wide-lime12x128-aqua12x128.html
|
||||
skip-if(B2G) == wide--12px-auto--percent-width-omitted-height-viewbox.html ref-wide-lime12x96-aqua12x96.html # bug 773482
|
||||
skip-if(B2G) == wide--12px-auto--percent-width-percent-height.html ref-wide-lime12x128-aqua12x128.html # bug 773482
|
||||
skip-if(B2G||Mulet) == wide--12px-auto--percent-width-omitted-height-viewbox.html ref-wide-lime12x96-aqua12x96.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if(B2G||Mulet) == wide--12px-auto--percent-width-percent-height.html ref-wide-lime12x128-aqua12x128.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== wide--12px-auto--percent-width-percent-height-viewbox.html ref-wide-lime12x96-aqua12x96.html
|
||||
|
||||
== wide--auto-32px--nonpercent-width-nonpercent-height.html ref-wide-lime8x16-aqua8x16.html
|
||||
== wide--auto-32px--nonpercent-width-nonpercent-height-viewbox.html ref-wide-lime8x16-aqua8x16.html
|
||||
== wide--auto-32px--nonpercent-width-omitted-height.html ref-wide-lime8x16-aqua8x16.html
|
||||
== wide--auto-32px--nonpercent-width-omitted-height-viewbox.html ref-wide-lime2x16-aqua2x16.html
|
||||
skip-if(B2G) == wide--auto-32px--nonpercent-width-percent-height.html ref-wide-lime8x16-aqua8x16.html # bug 773482
|
||||
skip-if(B2G||Mulet) == wide--auto-32px--nonpercent-width-percent-height.html ref-wide-lime8x16-aqua8x16.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== wide--auto-32px--nonpercent-width-percent-height-viewbox.html ref-wide-lime2x16-aqua2x16.html
|
||||
== wide--auto-32px--omitted-width-nonpercent-height.html ref-wide-lime768x16-aqua768x16.html
|
||||
== wide--auto-32px--omitted-width-nonpercent-height-viewbox.html ref-wide-lime2x16-aqua2x16.html
|
||||
@@ -143,16 +143,16 @@ skip-if(B2G) == wide--auto-32px--nonpercent-width-percent-height.html ref-wide-l
|
||||
== wide--auto-32px--percent-width-percent-height.html ref-wide-lime768x16-aqua768x16.html
|
||||
== wide--auto-32px--percent-width-percent-height-viewbox.html ref-wide-lime2x16-aqua2x16.html
|
||||
|
||||
skip-if(B2G) == wide--auto--nonpercent-width-nonpercent-height.html ref-wide-lime8x16-aqua8x16.html
|
||||
skip-if(B2G) == wide--auto--nonpercent-width-nonpercent-height-viewbox.html ref-wide-lime8x16-aqua8x16.html # bug 773482
|
||||
skip-if(B2G||Mulet) == wide--auto--nonpercent-width-nonpercent-height.html ref-wide-lime8x16-aqua8x16.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if(B2G||Mulet) == wide--auto--nonpercent-width-nonpercent-height-viewbox.html ref-wide-lime8x16-aqua8x16.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== wide--auto--nonpercent-width-omitted-height.html ref-wide-lime8x128-aqua8x128.html
|
||||
== wide--auto--nonpercent-width-omitted-height-viewbox.html ref-wide-lime8x64-aqua8x64.html
|
||||
== wide--auto--nonpercent-width-percent-height.html ref-wide-lime8x128-aqua8x128.html
|
||||
skip-if(B2G) == wide--auto--nonpercent-width-percent-height-viewbox.html ref-wide-lime8x64-aqua8x64.html # bug 773482
|
||||
skip-if(B2G||Mulet) == wide--auto--nonpercent-width-percent-height-viewbox.html ref-wide-lime8x64-aqua8x64.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== wide--auto--omitted-width-nonpercent-height.html ref-wide-lime768x16-aqua768x16.html
|
||||
== wide--auto--omitted-width-nonpercent-height-viewbox.html ref-wide-lime2x16-aqua2x16.html
|
||||
== wide--auto--omitted-width-omitted-height.html ref-wide-lime768x128-aqua768x128.html
|
||||
skip-if(B2G) == wide--auto--omitted-width-omitted-height-viewbox.html ref-wide-lime16x128-aqua16x128.html # bug 773482
|
||||
skip-if(B2G||Mulet) == wide--auto--omitted-width-omitted-height-viewbox.html ref-wide-lime16x128-aqua16x128.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== wide--auto--omitted-width-percent-height.html ref-wide-lime768x128-aqua768x128.html
|
||||
== wide--auto--omitted-width-percent-height-viewbox.html ref-wide-lime16x128-aqua16x128.html
|
||||
== wide--auto--percent-width-nonpercent-height.html ref-wide-lime768x16-aqua768x16.html
|
||||
@@ -164,7 +164,7 @@ skip-if(B2G) == wide--auto--omitted-width-omitted-height-viewbox.html ref-wide-l
|
||||
|
||||
== wide--contain--nonpercent-width-nonpercent-height.html ref-wide-lime64x128-aqua64x128.html
|
||||
== wide--contain--nonpercent-width-nonpercent-height-viewbox.html ref-wide-lime64x128-aqua64x128.html
|
||||
skip-if(B2G) == wide--contain--nonpercent-width-omitted-height.html ref-wide-lime768x128-aqua768x128.html # bug 773482
|
||||
skip-if(B2G||Mulet) == wide--contain--nonpercent-width-omitted-height.html ref-wide-lime768x128-aqua768x128.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== wide--contain--nonpercent-width-omitted-height-viewbox.html ref-wide-lime16x128-aqua16x128.html
|
||||
== wide--contain--nonpercent-width-percent-height.html ref-wide-lime768x128-aqua768x128.html
|
||||
== wide--contain--nonpercent-width-percent-height-viewbox.html ref-wide-lime16x128-aqua16x128.html
|
||||
@@ -182,13 +182,13 @@ skip-if(B2G) == wide--contain--nonpercent-width-omitted-height.html ref-wide-lim
|
||||
== wide--contain--percent-width-percent-height-viewbox.html ref-wide-lime16x128-aqua16x128.html
|
||||
|
||||
== wide--cover--nonpercent-width-nonpercent-height.html ref-wide-lime768x256.html
|
||||
skip-if(B2G) == wide--cover--nonpercent-width-nonpercent-height-viewbox.html ref-wide-lime768x256.html # bug 773482
|
||||
skip-if(B2G||Mulet) == wide--cover--nonpercent-width-nonpercent-height-viewbox.html ref-wide-lime768x256.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== wide--cover--nonpercent-width-omitted-height.html ref-wide-lime768x128-aqua768x128.html
|
||||
== wide--cover--nonpercent-width-omitted-height-viewbox.html ref-wide-lime768x256.html
|
||||
== wide--cover--nonpercent-width-percent-height.html ref-wide-lime768x128-aqua768x128.html
|
||||
== wide--cover--nonpercent-width-percent-height-viewbox.html ref-wide-lime768x256.html
|
||||
== wide--cover--omitted-width-nonpercent-height.html ref-wide-lime768x128-aqua768x128.html
|
||||
skip-if(B2G) == wide--cover--omitted-width-nonpercent-height-viewbox.html ref-wide-lime768x256.html # bug 773482
|
||||
skip-if(B2G||Mulet) == wide--cover--omitted-width-nonpercent-height-viewbox.html ref-wide-lime768x256.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== wide--cover--omitted-width-omitted-height.html ref-wide-lime768x128-aqua768x128.html
|
||||
== wide--cover--omitted-width-omitted-height-viewbox.html ref-wide-lime768x256.html
|
||||
== wide--cover--omitted-width-percent-height.html ref-wide-lime768x128-aqua768x128.html
|
||||
@@ -201,4 +201,4 @@ skip-if(B2G) == wide--cover--omitted-width-nonpercent-height-viewbox.html ref-wi
|
||||
== wide--cover--percent-width-percent-height-viewbox.html ref-wide-lime768x256.html
|
||||
|
||||
== diagonal-percentage-vector-background.html diagonal-percentage-vector-background-ref.html
|
||||
== no-aspect-ratio-wide.html no-aspect-ratio-normal.html
|
||||
== no-aspect-ratio-wide.html no-aspect-ratio-normal.html
|
||||
|
||||
@@ -87,8 +87,8 @@ random-if(winWidget) == 305643-1.html 305643-1-ref.html # depends on windows ver
|
||||
== 409375.html 409375-ref.html
|
||||
== 413542-1.html 413542-1-ref.html
|
||||
== 413542-2.html 413542-2-ref.html
|
||||
random-if(B2G&&browserIsRemote) == 413928-1.html 413928-1-ref.html
|
||||
random-if(B2G&&browserIsRemote) == 413928-2.html 413928-2-ref.html
|
||||
random-if((B2G&&browserIsRemote)||Mulet) == 413928-1.html 413928-1-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
random-if((B2G&&browserIsRemote)||Mulet) == 413928-2.html 413928-2-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== 425338-1a.html 425338-1-ref.html
|
||||
== 425338-1b.html 425338-1-ref.html
|
||||
== 489517-1.html 489517-1-ref.html
|
||||
@@ -119,7 +119,7 @@ fuzzy-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)&&!layersGPUAccelerated&&!azur
|
||||
== 662288-1.html 662288-1-ref.html
|
||||
== 670226-1.html 670226-1-ref.html
|
||||
== 676245-1.html 676245-1-ref.html
|
||||
skip-if(B2G) == 698291-1.html 698291-1-ref.html
|
||||
skip-if(B2G||Mulet) == 698291-1.html 698291-1-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== 698706-1.html 698706-1-ref.html
|
||||
== 704837-1.html 704837-1-ref.html
|
||||
== 712600-1.html 712600-1-ref.html
|
||||
@@ -129,7 +129,7 @@ skip-if(B2G) == 698291-1.html 698291-1-ref.html
|
||||
== 718236-1.html 718236-1-ref.html
|
||||
== 718236-2.html 718236-2-ref.html
|
||||
== 718236-3.html 718236-3-ref.html
|
||||
skip-if(B2G) == 726420-1.html 726420-1-ref.html
|
||||
skip-if(B2G||Mulet) == 726420-1.html 726420-1-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== 726460-1.html 726460-1-ref.html
|
||||
== 729047-1.html 729047-1-ref.html
|
||||
== 730562-1.html 730562-1-ref.html
|
||||
@@ -140,7 +140,7 @@ skip-if(B2G) == 726420-1.html 726420-1-ref.html
|
||||
== 779003-1.html 779003-1-ref.html
|
||||
== 779003-1-dynamic.html 779003-1-ref.html
|
||||
== 847242-1.html 847242-1-ref.html
|
||||
skip-if(B2G&&browserIsRemote) == 869833-1.xul 869833-1-ref.xul
|
||||
skip-if((B2G&&browserIsRemote)||Mulet) == 869833-1.xul 869833-1-ref.xul # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== 922530-1.html 922530-1-ref.html
|
||||
== 922550-1.html 922550-1-ref.html
|
||||
== 1067268-1.html 1067268-1-ref.html
|
||||
|
||||
@@ -67,18 +67,18 @@ fuzzy-if(true,1,33) fuzzy-if(cocoaWidget,1,332) fuzzy-if(Android&&browserIsRemot
|
||||
== table-collapse-1.html table-collapse-1-ref.html # border-radius is ignored on internal table elements
|
||||
# when border-collapse: collapse
|
||||
|
||||
fuzzy-if(azureQuartz,1,3) skip-if(B2G) == invalidate-1a.html invalidate-1-ref.html
|
||||
fuzzy-if(azureQuartz,1,3) skip-if(B2G) == invalidate-1b.html invalidate-1-ref.html
|
||||
fuzzy-if(azureQuartz,1,3) skip-if(B2G||Mulet) == invalidate-1a.html invalidate-1-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
fuzzy-if(azureQuartz,1,3) skip-if(B2G||Mulet) == invalidate-1b.html invalidate-1-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
|
||||
# test that border-radius is reduced for scrollbars
|
||||
skip-if(B2G) fails-if(Android) == scrollbar-clamping-1.html scrollbar-clamping-1-ref.html
|
||||
skip-if(B2G) fails-if(Android) == scrollbar-clamping-2.html scrollbar-clamping-2-ref.html
|
||||
skip-if(B2G||Mulet) fails-if(Android) == scrollbar-clamping-1.html scrollbar-clamping-1-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if(B2G||Mulet) fails-if(Android) == scrollbar-clamping-2.html scrollbar-clamping-2-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
|
||||
# Test for bad corner joins.
|
||||
fuzzy-if(true,1,1) == corner-joins-1.xhtml corner-joins-1-ref.xhtml
|
||||
skip-if(B2G) random-if(winWidget) HTTP(..) == corner-joins-2.xhtml corner-joins-2-ref.xhtml
|
||||
skip-if(B2G||Mulet) random-if(winWidget) HTTP(..) == corner-joins-2.xhtml corner-joins-2-ref.xhtml # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
|
||||
skip-if(B2G) fuzzy-if(/^Windows\x20NT\x206\.2/.test(http.oscpu),1,20) fuzzy-if(Android&&browserIsRemote,7,146) fuzzy-if(Android&&!browserIsRemote,166,400) fails-if(Android&&AndroidVersion==15) == scroll-1.html scroll-1-ref.html # see bug 732535 #Bug 959166
|
||||
skip-if(B2G||Mulet) fuzzy-if(/^Windows\x20NT\x206\.2/.test(http.oscpu),1,20) fuzzy-if(Android&&browserIsRemote,7,146) fuzzy-if(Android&&!browserIsRemote,166,400) fails-if(Android&&AndroidVersion==15) == scroll-1.html scroll-1-ref.html # see bug 732535 #Bug 959166 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
|
||||
== transforms-1.html transforms-1-ref.html
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
== box-ordinal-with-out-of-flow-1.html box-ordinal-with-out-of-flow-1-ref.html
|
||||
skip-if(B2G&&browserIsRemote) == dynamic-1-remove-to-none-grouped.xul dynamic-1-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) == dynamic-1-add-to-one-grouped.xul dynamic-1-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) == dynamic-1-remove-to-one-grouped-1.xul dynamic-1-ref.xul
|
||||
fails skip-if(B2G&&browserIsRemote) == dynamic-1-remove-to-one-grouped-2.xul dynamic-1-ref.xul # bug 575500
|
||||
skip-if(B2G&&browserIsRemote) == dynamic-1-add-to-two-grouped-1.xul dynamic-1-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) == dynamic-1-add-to-two-grouped-2.xul dynamic-1-ref.xul
|
||||
skip-if((B2G&&browserIsRemote)||Mulet) == dynamic-1-remove-to-none-grouped.xul dynamic-1-ref.xul # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if((B2G&&browserIsRemote)||Mulet) == dynamic-1-add-to-one-grouped.xul dynamic-1-ref.xul # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if((B2G&&browserIsRemote)||Mulet) == dynamic-1-remove-to-one-grouped-1.xul dynamic-1-ref.xul # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
fails skip-if((B2G&&browserIsRemote)||Mulet) == dynamic-1-remove-to-one-grouped-2.xul dynamic-1-ref.xul # bug 575500 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if((B2G&&browserIsRemote)||Mulet) == dynamic-1-add-to-two-grouped-1.xul dynamic-1-ref.xul # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if((B2G&&browserIsRemote)||Mulet) == dynamic-1-add-to-two-grouped-2.xul dynamic-1-ref.xul # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
|
||||
@@ -19,12 +19,12 @@
|
||||
== box-sizing-minmax-height.html box-sizing-minmax-height-ref.html
|
||||
== box-sizing-minmax-width.html box-sizing-minmax-width-ref.html
|
||||
== box-sizing-mozbox-minmax-height.html box-sizing-mozbox-minmax-height-ref.html
|
||||
skip-if(B2G) == abspos-non-replaced-width-offset-margin.html abspos-non-replaced-width-offset-margin-ref.html
|
||||
skip-if(B2G) == abspos-replaced-width-offset-margin.html abspos-replaced-width-offset-margin-ref.html
|
||||
skip-if(B2G) HTTP(..) == CSS21-t100301.xhtml CSS21-t100301-ref.xhtml
|
||||
random-if(B2G) == CSS21-t100303.xhtml CSS21-t100303-ref.xhtml
|
||||
random-if(B2G) == CSS21-t100303-simple.xhtml CSS21-t100303-ref.xhtml
|
||||
random-if(B2G) == CSS21-t100801-vertical-align.xhtml CSS21-t100801-vertical-align-ref.xhtml
|
||||
skip-if(B2G||Mulet) == abspos-non-replaced-width-offset-margin.html abspos-non-replaced-width-offset-margin-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if(B2G||Mulet) == abspos-replaced-width-offset-margin.html abspos-replaced-width-offset-margin-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if(B2G||Mulet) HTTP(..) == CSS21-t100301.xhtml CSS21-t100301-ref.xhtml # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
random-if(B2G||Mulet) == CSS21-t100303.xhtml CSS21-t100303-ref.xhtml # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
random-if(B2G||Mulet) == CSS21-t100303-simple.xhtml CSS21-t100303-ref.xhtml # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
random-if(B2G||Mulet) == CSS21-t100801-vertical-align.xhtml CSS21-t100801-vertical-align-ref.xhtml # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== clip-auto.html clip-auto-ref.html
|
||||
== clip-rect-auto.html clip-rect-auto-ref.html
|
||||
== width-rounding.html width-rounding-ref.html
|
||||
|
||||
@@ -9,12 +9,12 @@ random != boxshadow-blur-2.html boxshadow-blur-2-notref.html # fixedpoint divisi
|
||||
== tableboxshadow-trshadow.html tableboxshadow-trshadow-ref.html
|
||||
== tableboxshadow-tdshadow.html tableboxshadow-tdshadow-ref.html
|
||||
== boxshadow-rounding.html boxshadow-rounding-ref.html
|
||||
fails-if(Android||B2G) == boxshadow-button.html boxshadow-button-ref.html
|
||||
fails-if(Android||B2G) == boxshadow-fileupload.html boxshadow-fileupload-ref.html
|
||||
fails-if(Android||B2G||Mulet) == boxshadow-button.html boxshadow-button-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
fails-if(Android||B2G||Mulet) == boxshadow-fileupload.html boxshadow-fileupload-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== boxshadow-inner-basic.html boxshadow-inner-basic-ref.svg
|
||||
random-if(layersGPUAccelerated) == boxshadow-mixed.html boxshadow-mixed-ref.html
|
||||
random-if(d2d) fuzzy-if(B2G,12,18) == boxshadow-rounded-spread.html boxshadow-rounded-spread-ref.html
|
||||
skip-if(B2G&&browserIsRemote) HTTP(..) == boxshadow-dynamic.xul boxshadow-dynamic-ref.xul
|
||||
skip-if((B2G&&browserIsRemote)||Mulet) HTTP(..) == boxshadow-dynamic.xul boxshadow-dynamic-ref.xul # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
random-if(d2d) == boxshadow-onecorner.html boxshadow-onecorner-ref.html
|
||||
random-if(d2d) == boxshadow-twocorners.html boxshadow-twocorners-ref.html
|
||||
random-if(d2d) == boxshadow-threecorners.html boxshadow-threecorners-ref.html
|
||||
@@ -25,7 +25,7 @@ random-if(d2d) == boxshadow-threecorners.html boxshadow-threecorners-ref.html
|
||||
== overflow-not-scrollable-1.html overflow-not-scrollable-1-ref.html
|
||||
== overflow-not-scrollable-1.html overflow-not-scrollable-1-ref2.html
|
||||
== overflow-not-scrollable-2.html overflow-not-scrollable-2-ref.html
|
||||
fails-if(B2G) == 611574-1.html 611574-1-ref.html
|
||||
fails-if(B2G) == 611574-2.html 611574-2-ref.html
|
||||
fails-if(B2G||Mulet) == 611574-1.html 611574-1-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
fails-if(B2G||Mulet) == 611574-2.html 611574-2-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
fuzzy-if(winWidget,5,30) == fieldset.html fieldset-ref.html # minor anti-aliasing problem on Windows
|
||||
fuzzy-if(winWidget,5,30) == fieldset-inset.html fieldset-inset-ref.html # minor anti-aliasing problem on Windows
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
== flexbox-abspos-container-2.html flexbox-abspos-container-2-ref.html
|
||||
== flexbox-attributes-no-box-horizontal.xhtml flexbox-attributes-no-box-horizontal-ref.xhtml
|
||||
== flexbox-attributes-no-box-vertical.xhtml flexbox-attributes-no-box-vertical-ref.xhtml
|
||||
skip-if(B2G) == flexbox-attributes-no-input-horizontal.xhtml flexbox-attributes-no-input-horizontal-ref.xhtml
|
||||
skip-if(B2G) == flexbox-attributes-no-input-vertical.xhtml flexbox-attributes-no-input-vertical-ref.xhtml
|
||||
skip-if(B2G||Mulet) == flexbox-attributes-no-input-horizontal.xhtml flexbox-attributes-no-input-horizontal-ref.xhtml # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if(B2G||Mulet) == flexbox-attributes-no-input-vertical.xhtml flexbox-attributes-no-input-vertical-ref.xhtml # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== flexbox-child-is-abspos-container-1.html flexbox-child-is-abspos-container-1-ref.html
|
||||
== flexbox-child-is-abspos-container-2.html flexbox-child-is-abspos-container-2-ref.html
|
||||
|
||||
+237
-237
File diff suppressed because it is too large
Load Diff
@@ -1,12 +1,12 @@
|
||||
== default-size.html default-size-ref.html
|
||||
skip-if(B2G) fuzzy-if(Android&&AndroidVersion>=15,8,1000) == size-1.html size-1-ref.html
|
||||
skip-if(B2G||Mulet) fuzzy-if(Android&&AndroidVersion>=15,8,1000) == size-1.html size-1-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
|
||||
== empty-transaction-1.html empty-transaction-1-ref.html
|
||||
|
||||
== image-rendering-test.html image-rendering-ref.html
|
||||
== image-shadow.html image-shadow-ref.html
|
||||
|
||||
skip-if(B2G) asserts-if(cocoaWidget,0-2) == size-change-1.html size-change-1-ref.html
|
||||
skip-if(B2G||Mulet) asserts-if(cocoaWidget,0-2) == size-change-1.html size-change-1-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
|
||||
random-if(cocoaWidget) == subpixel-1.html about:blank
|
||||
|
||||
@@ -27,8 +27,8 @@ random-if(cocoaWidget) == subpixel-1.html about:blank
|
||||
== text-ltr-alignment-test.html text-ltr-alignment-ref.html
|
||||
== text-rtl-alignment-test.html text-rtl-alignment-ref.html
|
||||
|
||||
fuzzy-if(B2G&&azureSkiaGL,1,256) == text-horzline-with-bottom.html text-horzline.html
|
||||
fuzzy-if(B2G&&azureSkiaGL,1,256) == text-horzline-with-top.html text-horzline.html
|
||||
fuzzy-if((B2G||Mulet)&&azureSkiaGL,1,256) == text-horzline-with-bottom.html text-horzline.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
fuzzy-if((B2G||Mulet)&&azureSkiaGL,1,256) == text-horzline-with-top.html text-horzline.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
|
||||
!= text-big-stroke.html text-blank.html
|
||||
!= text-big-stroke.html text-big-fill.html
|
||||
@@ -45,7 +45,7 @@ fuzzy-if(azureSkiaGL,10,400) == text-not-in-doc-test.html text-not-in-doc-ref.ht
|
||||
!= text-bidi-ltr-test.html text-bidi-ltr-notref.html # for bug 698185
|
||||
== text-bidi-rtl-test.html text-bidi-rtl-ref.html
|
||||
|
||||
skip-if(B2G) != text-font-lang.html text-font-lang-notref.html
|
||||
skip-if(B2G||Mulet) != text-font-lang.html text-font-lang-notref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
|
||||
== text-measure.html text-measure-ref.html
|
||||
== text-small-caps-1.html text-small-caps-1-ref.html
|
||||
|
||||
@@ -22,11 +22,11 @@ HTTP(..) == columnfill-balance.html columnfill-balance-ref.html
|
||||
HTTP(..) == columnfill-auto.html columnfill-auto-ref.html
|
||||
HTTP(..) == columnfill-auto-2.html columnfill-auto-2-ref.html
|
||||
HTTP(..) == columnfill-auto-3.html columnfill-auto-2-ref.html
|
||||
skip-if(B2G) == columnrule-basic.html columnrule-basic-ref.html # bug 773482
|
||||
skip-if(B2G) == columnrule-complex.html columnrule-complex-ref.html # bug 773482
|
||||
skip-if(B2G||Mulet) == columnrule-basic.html columnrule-basic-ref.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if(B2G||Mulet) == columnrule-complex.html columnrule-complex-ref.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
!= columnrule-linestyles.html columnrule-linestyles-notref.html
|
||||
== columnrule-padding.html columnrule-padding-ref.html
|
||||
skip-if(B2G) == columnfill-overflow.html columnfill-overflow-ref.html # bug 773482
|
||||
skip-if(B2G||Mulet) == columnfill-overflow.html columnfill-overflow-ref.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== margin-collapsing-bug616722-1.html margin-collapsing-bug616722-1-ref.html
|
||||
== margin-collapsing-bug616722-2.html margin-collapsing-bug616722-2-ref.html
|
||||
== column-balancing-nested-000.html column-balancing-nested-000-ref.html
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
== system-extends-invalid.html system-extends-invalid-ref.html
|
||||
== descriptor-negative.html descriptor-negative-ref.html
|
||||
== descriptor-prefix.html descriptor-prefix-ref.html
|
||||
fails-if(B2G) == descriptor-suffix.html descriptor-suffix-ref.html # B2G kerning
|
||||
fails-if(B2G||Mulet) == descriptor-suffix.html descriptor-suffix-ref.html # B2G kerning # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== descriptor-range.html descriptor-range-ref.html
|
||||
== descriptor-pad.html descriptor-pad-ref.html
|
||||
== descriptor-fallback.html descriptor-fallback-ref.html
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
== button-fieldset-1.html button-fieldset-ref.html
|
||||
fails-if(Android||B2G) == button-fieldset-2.html button-fieldset-ref.html
|
||||
fails-if(Android||B2G) == button-fieldset-3.html button-fieldset-ref.html
|
||||
fails-if(Android||B2G||Mulet) == button-fieldset-2.html button-fieldset-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
fails-if(Android||B2G||Mulet) == button-fieldset-3.html button-fieldset-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== button-fieldset-4.html button-fieldset-ref.html
|
||||
== button-fieldset-legend-1.html button-fieldset-legend-ref-1.html
|
||||
fails-if(Android||B2G) == button-fieldset-legend-2.html button-fieldset-legend-ref-2.html
|
||||
fails-if(Android||B2G) == button-fieldset-legend-3.html button-fieldset-legend-ref-3.html
|
||||
fails-if(Android||B2G||Mulet) == button-fieldset-legend-2.html button-fieldset-legend-ref-2.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
fails-if(Android||B2G||Mulet) == button-fieldset-legend-3.html button-fieldset-legend-ref-3.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== button-fieldset-legend-4.html button-fieldset-legend-ref-4.html
|
||||
== button-fieldset-legend-5.html button-fieldset-legend-ref-5.html
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
== select-fieldset-1.html select-fieldset-ref.html
|
||||
fails-if(Android||B2G) == select-fieldset-2.html select-fieldset-ref-disabled.html
|
||||
fails-if(Android||B2G) == select-fieldset-3.html select-fieldset-ref-disabled.html
|
||||
fails-if(Android||B2G||Mulet) == select-fieldset-2.html select-fieldset-ref-disabled.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
fails-if(Android||B2G||Mulet) == select-fieldset-3.html select-fieldset-ref-disabled.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== select-fieldset-4.html select-fieldset-ref.html
|
||||
== select-fieldset-legend-1.html select-fieldset-legend-ref-1.html
|
||||
fails-if(Android||B2G) == select-fieldset-legend-2.html select-fieldset-legend-ref-2.html
|
||||
fails-if(Android||B2G) == select-fieldset-legend-3.html select-fieldset-legend-ref-3.html
|
||||
fails-if(Android||B2G||Mulet) == select-fieldset-legend-2.html select-fieldset-legend-ref-2.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
fails-if(Android||B2G||Mulet) == select-fieldset-legend-3.html select-fieldset-legend-ref-3.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== select-fieldset-legend-4.html select-fieldset-legend-ref-4.html
|
||||
== select-fieldset-legend-5.html select-fieldset-legend-ref-5.html
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
== button-fieldset-1.html button-fieldset-ref.html
|
||||
fails-if(Android||B2G) == button-fieldset-2.html button-fieldset-ref.html
|
||||
fails-if(Android||B2G) == button-fieldset-3.html button-fieldset-ref.html
|
||||
fails-if(Android||B2G||Mulet) == button-fieldset-2.html button-fieldset-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
fails-if(Android||B2G||Mulet) == button-fieldset-3.html button-fieldset-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== button-fieldset-4.html button-fieldset-ref.html
|
||||
== button-fieldset-legend-1.html button-fieldset-legend-ref-1.html
|
||||
fails-if(Android||B2G) == button-fieldset-legend-2.html button-fieldset-legend-ref-2.html
|
||||
fails-if(Android||B2G) == button-fieldset-legend-3.html button-fieldset-legend-ref-3.html
|
||||
fails-if(Android||B2G||Mulet) == button-fieldset-legend-2.html button-fieldset-legend-ref-2.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
fails-if(Android||B2G||Mulet) == button-fieldset-legend-3.html button-fieldset-legend-ref-3.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== button-fieldset-legend-4.html button-fieldset-legend-ref-4.html
|
||||
== button-fieldset-legend-5.html button-fieldset-legend-ref-5.html
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
== select-fieldset-1.html select-fieldset-ref.html
|
||||
fails-if(B2G) == select-fieldset-2.html select-fieldset-ref-disabled.html
|
||||
fails-if(B2G) == select-fieldset-3.html select-fieldset-ref-disabled.html
|
||||
fails-if(B2G||Mulet) == select-fieldset-2.html select-fieldset-ref-disabled.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
fails-if(B2G||Mulet) == select-fieldset-3.html select-fieldset-ref-disabled.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== select-fieldset-4.html select-fieldset-ref.html
|
||||
== select-fieldset-legend-1.html select-fieldset-legend-ref-1.html
|
||||
fails-if(B2G) == select-fieldset-legend-2.html select-fieldset-legend-ref-2.html
|
||||
fails-if(B2G) == select-fieldset-legend-3.html select-fieldset-legend-ref-3.html
|
||||
fails-if(B2G||Mulet) == select-fieldset-legend-2.html select-fieldset-legend-ref-2.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
fails-if(B2G||Mulet) == select-fieldset-legend-3.html select-fieldset-legend-ref-3.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== select-fieldset-legend-4.html select-fieldset-legend-ref-4.html
|
||||
== select-fieldset-legend-5.html select-fieldset-legend-ref-5.html
|
||||
|
||||
@@ -130,9 +130,9 @@ fuzzy-if(!contentSameGfxBackendAsCanvas,2,20000) fuzzy-if(azureSkiaGL,8,20000) f
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,2,20000) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz&&OSX==1006,2,7878) == aja-linear-5a.html aja-linear-5-ref.html
|
||||
fuzzy-if(!contentSameGfxBackendAsCanvas,2,16477) fuzzy-if(azureSkiaGL,8,20000) fuzzy-if(azureQuartz,2,10163) == aja-linear-6a.html aja-linear-6-ref.html # bug 526708
|
||||
fails == aja-linear-6b.html aja-linear-6-ref.html # bug 522607
|
||||
skip-if(B2G) == height-dependence-1.html height-dependence-1-ref.html
|
||||
skip-if(B2G) fuzzy-if(cocoaWidget,1,40000) == height-dependence-2.html height-dependence-2-ref.html
|
||||
skip-if(B2G) == height-dependence-3.html height-dependence-3-ref.html
|
||||
skip-if(B2G||Mulet) == height-dependence-1.html height-dependence-1-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if(B2G||Mulet) fuzzy-if(cocoaWidget,1,40000) == height-dependence-2.html height-dependence-2-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if(B2G||Mulet) == height-dependence-3.html height-dependence-3-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
|
||||
== linear-onestopposition-1.html linear-onestopposition-1-ref.html
|
||||
fuzzy-if(d2d,47,400) == linear-onestopposition-1.html linear-onestopposition-1-ref2.html # d2d interpolates the hard stop
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
skip-if(B2G) == 290018-1.html 290018-ref.html
|
||||
skip-if(B2G||Mulet) == 290018-1.html 290018-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== 436261-1.html 436261-ref.html
|
||||
== 436261-2.html 436261-ref.html
|
||||
== 436261-3.html 436261-ref.html
|
||||
@@ -6,5 +6,5 @@ skip-if(B2G) == 290018-1.html 290018-ref.html
|
||||
== 444723-2.html 444723-ref.html
|
||||
== 445415-1a.xhtml 445415-1-ref.xhtml
|
||||
== 445415-1b.xhtml 445415-1-ref.xhtml
|
||||
skip-if(B2G) == 445415-2a.xhtml 445415-2-ref.xhtml # bug 773482
|
||||
skip-if(B2G) == 445415-2b.xhtml 445415-2-ref.xhtml # bug 773482
|
||||
skip-if(B2G||Mulet) == 445415-2a.xhtml 445415-2-ref.xhtml # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if(B2G||Mulet) == 445415-2b.xhtml 445415-2-ref.xhtml # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
== input-valid.html input-ref.html
|
||||
fuzzy(11,4) == input-customerror.html input-ref.html
|
||||
skip-if(B2G) == input-disabled.html input-ref.html
|
||||
skip-if(B2G) == input-dyn-disabled.html input-ref.html
|
||||
skip-if(B2G||Mulet) == input-disabled.html input-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if(B2G||Mulet) == input-dyn-disabled.html input-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
== input-dyn-not-disabled.html input-ref.html
|
||||
== input-readonly.html input-ref.html
|
||||
== input-dyn-readonly.html input-ref.html
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
needs-focus == select-valid.html select-ref.html
|
||||
needs-focus == select-invalid.html select-ref.html
|
||||
needs-focus == select-disabled.html select-disabled-ref.html
|
||||
skip-if(B2G) needs-focus == select-dyn-disabled.html select-disabled-ref.html
|
||||
skip-if(B2G||Mulet) needs-focus == select-dyn-disabled.html select-disabled-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
needs-focus == select-dyn-not-disabled.html select-ref.html
|
||||
needs-focus == select-required-invalid.html select-required-ref.html
|
||||
needs-focus == select-required-valid.html select-required-ref.html
|
||||
needs-focus == select-required-multiple-invalid.html select-required-multiple-ref.html
|
||||
needs-focus == select-required-multiple-valid.html select-required-multiple-ref.html
|
||||
skip-if(B2G) fails-if(Android) needs-focus == select-disabled-fieldset-1.html select-fieldset-ref.html
|
||||
skip-if(B2G) fails-if(Android) needs-focus == select-disabled-fieldset-2.html select-fieldset-ref.html
|
||||
skip-if(B2G||Mulet) fails-if(Android) needs-focus == select-disabled-fieldset-1.html select-fieldset-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
skip-if(B2G||Mulet) fails-if(Android) needs-focus == select-disabled-fieldset-2.html select-fieldset-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
|
||||
needs-focus == select-fieldset-legend.html select-fieldset-legend-ref.html
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user