[tbb-commits] [tor-browser] 19/36: Bug 1786521 - Fix AppearanceValueAffectsFrames. r=TYLin, a=RyanVM

gitolite role git at cupani.torproject.org
Thu Oct 13 07:51:07 UTC 2022


This is an automated email from the git hooks/post-receive script.

pierov pushed a commit to annotated tag FIREFOX_102_4_0esr_BUILD1
in repository tor-browser.

commit 3e6532cd0aac527f6dd03661b50c8c011ffcd37b
Author: Emilio Cobos Álvarez <emilio at crisal.io>
AuthorDate: Mon Sep 12 17:30:16 2022 +0000

    Bug 1786521 - Fix AppearanceValueAffectsFrames. r=TYLin, a=RyanVM
    
    We had zero tests for this, and when I implemented the optimization to
    avoid reframing in most cases I apparently swapped the arguments ;_;
    
    Fix <input type=search> which suffered from the same issue, but we don't
    ship by default.
    
    Differential Revision: https://phabricator.services.mozilla.com/D155394
---
 .../forms/input/number/appearance-textfield-dynamic.html |  7 +++++++
 .../forms/input/number/appearance-textfield.html         |  2 ++
 layout/reftests/forms/input/number/reftest.list          |  3 +++
 layout/reftests/forms/input/number/text.html             |  2 ++
 .../forms/input/search/appearance-textfield-dynamic.html |  7 +++++++
 .../forms/input/search/appearance-textfield.html         |  2 ++
 layout/reftests/forms/input/search/reftest.list          |  3 +++
 layout/reftests/forms/input/search/text.html             |  2 ++
 layout/style/nsStyleStruct.cpp                           | 16 ++++++++--------
 9 files changed, 36 insertions(+), 8 deletions(-)

diff --git a/layout/reftests/forms/input/number/appearance-textfield-dynamic.html b/layout/reftests/forms/input/number/appearance-textfield-dynamic.html
new file mode 100644
index 000000000000..813add54e428
--- /dev/null
+++ b/layout/reftests/forms/input/number/appearance-textfield-dynamic.html
@@ -0,0 +1,7 @@
+<!doctype html>
+<input type=number>
+<script>
+  let input = document.querySelector("input");
+  input.getBoundingClientRect();
+  input.style.appearance = "textfield";
+</script>
diff --git a/layout/reftests/forms/input/number/appearance-textfield.html b/layout/reftests/forms/input/number/appearance-textfield.html
new file mode 100644
index 000000000000..8ab3fdc67fe1
--- /dev/null
+++ b/layout/reftests/forms/input/number/appearance-textfield.html
@@ -0,0 +1,2 @@
+<!doctype html>
+<input type=number style="appearance: textfield">
diff --git a/layout/reftests/forms/input/number/reftest.list b/layout/reftests/forms/input/number/reftest.list
index c5b6f139ad39..30e4dcc7585b 100644
--- a/layout/reftests/forms/input/number/reftest.list
+++ b/layout/reftests/forms/input/number/reftest.list
@@ -62,6 +62,9 @@ fuzzy(0-128,0-4) == number-reframe-anon-text-field.html number-reframe-anon-text
 != padding-001.html padding-001-notref.html
 == padding-002.html padding-002-ref.html
 
+== appearance-textfield.html text.html
+== appearance-textfield-dynamic.html appearance-textfield.html
+
 fuzzy-if(winWidget&&!nativeThemePref,0-35,0-17) fuzzy-if(!nativeThemePref,0-14,0-4) == clipped-text.html clipped-text-ref.html
 
 fails-if(useDrawSnapshot) needs-focus != caret-right.html caret-right-notref.html
diff --git a/layout/reftests/forms/input/number/text.html b/layout/reftests/forms/input/number/text.html
new file mode 100644
index 000000000000..a46c54a7b7b5
--- /dev/null
+++ b/layout/reftests/forms/input/number/text.html
@@ -0,0 +1,2 @@
+<!doctype html>
+<input type=text>
diff --git a/layout/reftests/forms/input/search/appearance-textfield-dynamic.html b/layout/reftests/forms/input/search/appearance-textfield-dynamic.html
new file mode 100644
index 000000000000..db17afd707ea
--- /dev/null
+++ b/layout/reftests/forms/input/search/appearance-textfield-dynamic.html
@@ -0,0 +1,7 @@
+<!doctype html>
+<input type=search>
+<script>
+  let input = document.querySelector("input");
+  input.getBoundingClientRect();
+  input.style.appearance = "textfield";
+</script>
diff --git a/layout/reftests/forms/input/search/appearance-textfield.html b/layout/reftests/forms/input/search/appearance-textfield.html
new file mode 100644
index 000000000000..24ce084dae40
--- /dev/null
+++ b/layout/reftests/forms/input/search/appearance-textfield.html
@@ -0,0 +1,2 @@
+<!doctype html>
+<input type=search style="appearance: textfield">
diff --git a/layout/reftests/forms/input/search/reftest.list b/layout/reftests/forms/input/search/reftest.list
index c422365434c0..9fd0a13c49eb 100644
--- a/layout/reftests/forms/input/search/reftest.list
+++ b/layout/reftests/forms/input/search/reftest.list
@@ -3,3 +3,6 @@
 != 3.html ref.html
 pref(layout.forms.input-type-search.enabled,true) == search-basic.html ref.html
 pref(layout.forms.input-type-search.enabled,true) != search-with-value.html text-with-value.html
+
+== appearance-textfield.html text.html
+== appearance-textfield-dynamic.html appearance-textfield.html
diff --git a/layout/reftests/forms/input/search/text.html b/layout/reftests/forms/input/search/text.html
new file mode 100644
index 000000000000..a46c54a7b7b5
--- /dev/null
+++ b/layout/reftests/forms/input/search/text.html
@@ -0,0 +1,2 @@
+<!doctype html>
+<input type=text>
diff --git a/layout/style/nsStyleStruct.cpp b/layout/style/nsStyleStruct.cpp
index 667e1b273ad5..1f62fc4d9b2a 100644
--- a/layout/style/nsStyleStruct.cpp
+++ b/layout/style/nsStyleStruct.cpp
@@ -2358,16 +2358,16 @@ static bool ScrollbarGenerationChanged(const nsStyleDisplay& aOld,
          changed(aOld.mOverflowY, aNew.mOverflowY);
 }
 
-static bool AppearanceValueAffectsFrames(StyleAppearance aDefaultAppearance,
-                                         StyleAppearance aAppearance) {
+static bool AppearanceValueAffectsFrames(StyleAppearance aAppearance,
+                                         StyleAppearance aDefaultAppearance) {
   switch (aAppearance) {
     case StyleAppearance::Textfield:
-      // This is for <input type=number> where we allow authors to specify a
-      // |-moz-appearance:textfield| to get a control without a spinner. (The
-      // spinner is present for |-moz-appearance:number-input| but also other
-      // values such as 'none'.) We need to reframe since this affects the
-      // spinbox creation in nsNumberControlFrame::CreateAnonymousContent.
-      return aDefaultAppearance == StyleAppearance::NumberInput;
+      // This is for <input type=number/search> where we allow authors to
+      // specify a |-moz-appearance:textfield| to get a control without buttons.
+      // We need to reframe since this affects the spinbox creation in
+      // nsNumber/SearchControlFrame::CreateAnonymousContent.
+      return aDefaultAppearance == StyleAppearance::NumberInput ||
+             aDefaultAppearance == StyleAppearance::Searchfield;
     case StyleAppearance::Menulist:
       // This affects the menulist button creation.
       return aDefaultAppearance == StyleAppearance::Menulist;

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the tbb-commits mailing list