1 poin oleh GN⁺ 2023-10-11 | 1 komentar | Bagikan ke WhatsApp
  • Bug tooltip-ghost yang membuat tooltip tetap berada di depan meski Firefox ada di latar belakang telah lama dilacak di Bugzilla, dan statusnya menjadi VERIFIED FIXED di branch Firefox 119
  • Reproduksi awalnya adalah dengan mengarahkan mouse ke tautan atau ikon toolbar untuk memunculkan tooltip, lalu berpindah ke aplikasi lain dengan Command-Tab atau Alt-Tab sehingga tooltip tidak menghilang
  • Kasus serupa terus muncul tidak hanya di Mac OS X, Windows, dan Linux, tetapi juga di Thunderbird, Sunbird, dan Lightning, dan di Firefox 5.0.1 bahkan cukup dengan mouse melintas di atas jendela latar belakang untuk memicu tooltip dan status mouseover
  • Patch akhirnya adalah only show tooltip when document has focus, sehingga tooltip kini hanya ditampilkan saat dokumen memiliki fokus, dan diterapkan ke mozilla-central dengan revisi 8ae372dc88d1
  • QA mereproduksi masalah ini dengan Firefox 106.0.1 dan Ubuntu 22.04 menggunakan langkah asli, lalu memastikan masalah tidak lagi berlanjut di build Nightly 120.0a1, setelah itu beberapa bug regresi terkait ditautkan secara terpisah

Tooltip yang tetap tertinggal di atas Firefox latar belakang

  • Bug 148624 membahas masalah tooltip yang tetap berada di depan meski Firefox ada di latar belakang
  • Judul aslinya adalah Tooltips persist in foreground when Firefox is in background, dengan alias tooltip-ghost
  • Statusnya VERIFIED FIXED, dan milestone targetnya adalah 119 Branch
  • Klasifikasinya Core :: XUL, tipenya defect, dan tingkat keparahannya S3

Langkah reproduksi awal dan perilaku yang diharapkan

  • Lingkungan laporan pertama adalah Mozilla/5.0 ... Mac OS X ... Gecko/20020602 BuildID: 2002060203
  • Langkah reproduksinya sederhana
    • Arahkan mouse ke ikon toolbar atau tautan
    • Tunggu sampai tooltip muncul
    • Gunakan Command-Tab untuk memindahkan Mozilla ke latar belakang
  • Yang benar-benar terjadi, kotak tooltip kuning kecil tetap berada di depan
  • Perilaku yang diharapkan adalah tooltip menghilang saat Mozilla berpindah ke latar belakang
  • Pelapor awal menulis bahwa tooltip baru hilang setelah Firefox dibawa kembali ke depan dan mouse dipindahkan keluar dari toolbar

Kasus reproduksi yang berlanjut di berbagai platform

  • Setelah konfirmasi awal, cakupan platform diubah dari Mac OS X menjadi All, dan masalah yang sama juga direproduksi di Windows XP dan Windows 98
  • Kasus serupa terus muncul di Linux GTK2, Firefox 0.8, Firefox 2.0.0.14, Firefox 4 nightly, Firefox 5.0.1, Firefox 36.0, Firefox 49.0.2, Firefox 106.0.1, Firefox 113.0.2, Firefox 115.0.2, dan Firefox 117.0
  • Fenomena serupa juga muncul di lingkungan Thunderbird, Sunbird, dan Lightning
    • Di Thunderbird 2.0.0.17 dan Lightning 0.9, ada lampiran kasus di mana tooltip jendela tugas tetap berada di atas jendela notifikasi
    • Kombinasi Thunderbird 102.4.1 dan Firefox 106.0.1 juga direproduksi di GNU/Linux
    • Langkah reproduksi juga diajukan untuk Firefox 117.0 dan Thunderbird 115.2.0 di lingkungan xfce dan xfwm
  • Seorang pengguna mengatakan masalah ini masih terjadi di Firefox 115.0.2 dan GNOME 44, lalu memakai solusi sementara berupa menonaktifkan tooltip sepenuhnya lewat pengaturan browser.chrome.toolbar_tips

Dampak yang melampaui tooltip yang tertinggal

  • Bukan hanya tooltip yang sudah muncul tetap tertinggal, tetapi juga terkonfirmasi adanya tooltip baru yang muncul saat mouse melewati area terkait di jendela Firefox ketika Firefox sedang di latar belakang
  • Di Firefox 5.0.1, ada lampiran kasus ketika Transmission berada di depan dan Firefox di belakang, lalu menggerakkan mouse di atas jendela Transmission Inspector memicu tooltip Firefox
  • Ada juga kasus tooltip besar dari tombol toolbar Adblock Plus muncul di atas Transmission
  • Tercatat pula kasus tooltip Options milik Transmission dan tooltip kotak pencarian Google milik Firefox tampil bersamaan dan saling bertumpuk
  • Pada item toolbar bookmark, bukan hanya tooltip tetapi juga status mouseover ikut terpicu
    • Status tombol bookmark berubah lebih dulu, lalu sesaat kemudian tooltip URL muncul
    • Tombol + untuk Open a New Tab juga dicatat sebagai pengecualian yang memunculkan status mouseover dan tooltip saat berada di latar belakang

Arah perbaikan dan patch yang diterapkan

  • Dalam diskusi awal 2010-an, diusulkan pendekatan agar tooltip tidak ditampilkan jika jendela tidak memiliki fokus saat timer tooltip berjalan
  • Safari dan Google Chrome digunakan sebagai contoh pembanding karena di Mac keduanya tidak menampilkan tooltip saat bukan aplikasi yang berada di depan
  • Penjelasan patch akhirnya adalah only show tooltip when document has focus
  • Patch diunggah sebagai lampiran Phabricator, lalu diterapkan ke autoland dan mozilla-central
  • Status berubah dari ASSIGNED menjadi RESOLVED, dan resolusinya menjadi FIXED

Verifikasi QA dan regresi lanjutan

  • QA memverifikasi isu ini di Firefox 106.0.1 dan Ubuntu 22.04 dengan langkah reproduksi asli
  • Di konfigurasi yang sama, masalah tidak lagi berlanjut di Nightly 120.0a1 terbaru sehingga statusnya berubah menjadi VERIFIED
  • Status firefox119 diubah dari fixed menjadi verified
  • Seorang pengguna menulis bahwa masalah hanya muncul saat MOZ_ENV_XINPUT2=1 dan hilang saat MOZ_ENV_XINPUT2=0, yang kemudian dikaitkan dengan bug 1809029
  • Setelah itu, bug-bug berikut ditautkan sebagai regresi terkait
    • 1857513: tooltip sidebar bookmark tidak lagi muncul saat hover jika sidebar tidak memiliki fokus
    • 1861427: tooltip tidak lagi muncul saat hover ketika aplikasi lain yang memiliki fokus
    • 2043757: di Windows 11, judul tab tidak lagi muncul saat hover ketika Firefox sebagian tertutup oleh jendela lain

1 komentar

 
GN⁺ 2023-10-11
Opini Hacker News
  • Kalau penasaran bagaimana bug ditemukan dan diperbaiki di codebase Firefox, Mike Conley sudah beberapa tahun melakukan live streaming mingguan pekerjaan pengembangan yang ia lakukan di Mozilla
    Sebagian besar rekamannya berisi proses memilih satu bug dari backlog lalu melacaknya dengan sangat teliti hingga ketemu penyebabnya
    Terutama kalau baru mulai belajar pemrograman dan ingin melihat seperti apa bekerja di codebase sungguhan, ini direkomendasikan: https://youtube.com/@mikeconleytoronto

    • Saat kuliah, kira-kira hampir selama usia bug ini tercatat, saya banyak menjadi sukarelawan di Mozilla
      Awalnya saya melakukan triage bug di tim QA, memeriksa apakah komponen Bugzilla-nya tepat, apakah langkah reproduksinya masuk akal, dan sebagainya
      Meski sama sekali belum punya pengalaman kerja, hanya dengan melihat bagaimana proyek berskala besar dijalankan dan bagaimana developer sungguhan menangani perbaikan serta fitur saja sudah memberi banyak pelajaran, dan saya juga mengenal konsep seperti diff, patch, serta CI/CD. Waktu itu masih berupa nightly build, jadi secara ketat belum bisa disebut continuous integration, tetapi arahnya sudah benar
      Belakangan saya belajar cara membangun aplikasinya, yang terutama di Windows benar-benar sulit. Saya membangun Firefox, Thunderbird, dan Mozilla Suite yang saat itu masih ada, yang merupakan bentuk terintegrasi dari browser, mail, editor HTML, dan lainnya
      Pada akhirnya saya juga menyumbangkan beberapa perbaikan bug sendiri. Hanya sebatas memperbaiki typo atau ikon yang meleset, tetapi rasanya luar biasa mengetahui kode yang benar-benar dipakai jutaan orang akan dirilis
      Pengalaman ini langsung berguna di pekerjaan pertama setelah lulus. Saya mulai di sebuah startup sebagai dukungan IT dan QA, tetapi sama sekali tidak ada otomatisasi build dan deployment. Kalau seseorang melakukan push ke SVN, bisa saja selama beberapa hari tidak ada yang tahu apakah build rusak
      Berdasarkan hal yang saya pelajari dari Mozilla, saya membuat server build dengan sesuatu seperti Buildbot, CruiseControl, atau Hudson, yang melakukan build saat ada push dan mengirim email ke tim jika kompilasi atau tes gagal
      Cukup lucu ketika developer berpengalaman bertanya, “bagaimana orang IT kita bisa tahu hal seperti ini,” dan bahkan sebelum istilah DevOps muncul, saya bisa menciptakan peran semacam itu sendiri. Semuanya berkat belajar dengan mengutak-atik Mozilla di waktu luang
      Jadi saya sepenuhnya setuju bahwa meng-hack proyek Mozilla adalah cara yang bagus untuk mendapatkan pengalaman praktis
  • Akhirnya diperbaiki juga. Saya berharap Mozilla lebih banyak melakukan hal seperti ini
    Salah satu bentuk paling menyebalkan dari bug ini adalah ketika menjalankan game layar penuh, mouse diposisikan ulang lalu tooltip muncul, dan tooltip itu melayang di atas game
    Game tidak suka kehilangan fokus dan harus Alt-Tab untuk menangani Firefox, jadi kadang akhirnya game harus dimulai ulang

    • Kebetulan saya sedang mendengarkan presentasi Jonathan Blow di DevGAMM 4 tahun lalu, dan cacat semacam ini muncul sebagai motif yang berulang
      https://www.youtube.com/watch?v=ZSRHeXYDLko&t=2729s
    • Saya masih menunggu perilaku tab kontainer dasar diperbaiki. Rasanya sulit untuk tidak berpikir bahwa manajemen produknya benar-benar kacau
      [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1479858
    • Saya ingat beberapa tahun lalu pernah berkomentar di bug itu dengan gaya “saya juga mengalami ini dan punya informasi seperti ini”
      Pada akhirnya sekitar 10 tahun lalu saya benar-benar berhenti memakai Firefox, terutama karena bug ini mengganggu berkali-kali setiap hari selama bertahun-tahun, dan pada saat itu Chrome sudah cukup bagus untuk menjadi pengganti
      Isi tooltip-nya juga sering cukup umum seperti “Previous”, sehingga untuk mencari asalnya saya hampir harus memfokuskan ulang hampir semua jendela Firefox, dan selalu menyiksa harus mencarinya sampai tooltip itu menghilang. Ditambah lagi, tooltip itu melayang di atas semua jendela
  • Yang lebih mengejutkan adalah selama bertahun-tahun di antaranya, perilaku ini bahkan tidak berubah secara kebetulan. Kompatibilitas mundur bug yang mengesankan

  • Saya selalu menyalahkan berbagai window manager desktop Linux untuk bug ini, dan baru sekarang tahu pelakunya ternyata selalu sama
    Di layar kecil, ini kadang cukup menjengkelkan karena bisa menutupi tampilan form atau elemen penting lain
    Saya menantikan pembaruan ini, dan berharap selama 22 tahun ke depan Firefox bukan hanya bebas bug, tetapi juga kembali menjadi aplikasi berpengaruh seperti dulu

    • Meski begitu, sepertinya saya akan tetap menyalahkan window manager. Saya jelas pernah melihatnya juga di luar Firefox, bahkan di luar Linux
    • Ini juga terjadi di Windows, dan terus terjadi di aplikasi lain lintas sistem operasi. Tidak bisa hanya menyalahkan satu komponen atau satu lapisan GUI tertentu
    • Sepertinya saya juga pernah melihatnya di LibreOffice
    • Ini juga terjadi di tempat lain. Saya sering melihatnya di DBeaver
    • Saya juga rutin mengalaminya di Chrome pada Fedora/GNOME/X.Org
  • https://phabricator.services.mozilla.com/rMOZILLACENTRAL8ae3...
    Kalau melihat perubahan lima baris untuk memperbaiki bug ini lalu berpikir “aku juga bisa melakukannya!”, memang benar kamu bisa
    Pertanyaan sebenarnya adalah “kenapa tidak melakukannya?”
    Kalau dijawab sendiri, kuncinya adalah seberapa mudah mengompilasi Firefox dan menjalankan rangkaian pengujian
    Proses panjang pelacakan bug setelah itu justru bagian yang menarik

    • Saya sering berkontribusi ke perangkat lunak yang biasa saya pakai dan pernah mencoba melakukan sesuatu untuk Firefox, tapi akhirnya menyerah karena terlalu sulit bagi orang luar
      Seluruh sistem yang melibatkan hg, banyak repositori, wiki lama, build yang sangat kompleks, Bugzilla, dan sebagainya terlalu sulit dimasuki
      Kalau Firefox ada di GitHub, atau setidaknya GitLab yang di-host sendiri, sehingga bisa tinggal fork, utak-atik, dan menjalankan CI yang sama, ceritanya akan sangat berbeda. Andai semudah itu
    • Sepertinya perbaikan ini diremehkan. Jujur saja, ada cukup banyak baris yang dihapus, dan sebelum benar-benar memahami apa yang semula ingin dilakukan baris-baris itu, saya tidak akan berani menekan tombol Delete
    • Perbaikan sebenarnya terlihat bahkan lebih sederhana dari itu. Benar-benar hanya menambahkan satu pemeriksaan ini: !doc->HasFocus(IgnoreErrors())
  • Wah, selama ini saya selalu merasa entah bagaimana itu salah saya. Bug ini mengikuti saya selama bertahun-tahun, melewati berbagai versi Windows dan instalasi ulang
    Tidak sering terjadi, tapi cukup konsisten sampai membekas di ingatan

    • Semua toolkit UI non-native sepertinya punya perilaku tooltip yang bug-nya sangat halus
    • Saya jadi bertanya-tanya berapa banyak uang yang bisa diperoleh Mozilla kalau selama 22 tahun terakhir mereka menjual ruang iklan di tooltip yang macet. Seharusnya mereka memonetisasi bug mereka sendiri sebelum orang lain melakukannya
    • Benar. Saya kira saya mulai gila, atau sedang memakai instalasi yang rusak
    • Saya juga begitu. Saya kira cuma saya, tapi itu terjadi di semua mesin saya, baik Linux maupun Windows
    • Di macOS juga sama, setidaknya selama beberapa tahun
  • Bug yang cukup menarik. Sepertinya banyak orang mengalaminya, dan ada yang bilang melihatnya setidaknya sekali sehari, tapi saya tidak ingat pernah melihat perilaku ini sekali pun selama 15 tahun terakhir
    Tampaknya juga tidak terbatas pada sistem operasi tertentu, jadi saya penasaran kondisi apa sebenarnya yang membuat bug ini muncul
    Satu-satunya tempat saya melihat bug serupa adalah LibreWolf, yaitu Firefox kustom yang diperkuat untuk privasi. Namun saya hampir yakin itu karena flatpak, bukan karena browsernya sendiri. Firefox lain yang saya jalankan tidak pernah menunjukkan perilaku seperti itu

    • Bug seperti ini tampaknya cukup umum di berbagai sistem GUI. Misalnya, saya sering melihat perilaku ini di taskbar Windows 10, dan satu-satunya cara keluar adalah mengarahkan kursor ke tombol multi-jendela lalu membawanya keluar dari taskbar
      Banyak situs web juga mengalami masalah serupa jika kondisinya pas
      Penyebab utamanya tampaknya ketidaksesuaian penerusan event. Saat kursor keluar, seharusnya ada event yang diterima, tapi karena suatu hal event itu tidak diterima, misalnya karena jendela kehilangan fokus sehingga event mouse tidak lagi dikirim
      Jika tidak ada cara khusus untuk mendeteksi kasus seperti ini secara andal, misalnya DOM onmouseleave atau onmouseout, maka diperlukan workaround dan hack. Contohnya membuat event sintetis saat jendela kehilangan fokus
    • Saya memakainya secara native di OpenSuse Tumbleweed dengan Linux KDE Plasma, dan melihatnya setiap hari, kebanyakan beberapa kali dalam sehari
      Penjelasan terbaiknya, ini terjadi ketika berpindah ke desktop virtual lain dengan pintasan keyboard tepat pada frame saat tooltip muncul
      Sepertinya ini race condition yang membutuhkan timing sangat presisi, sehingga sulit dipersempit. Karena terutama mengenai orang yang banyak memakai pintasan keyboard, besar kemungkinan banyak orang tidak terdampak
      Saya sangat senang mendengar ini sudah diperbaiki, dan menantikan versi Firefox yang memuatnya
      Baru saja saya uji, untuk mereproduksinya cukup arahkan mouse ke atas target tooltip lalu, sebelum popup muncul, berpindah ke desktop virtual lain saat Firefox bukan aplikasi aktif yang baru
    • Ini bug yang sangat spesifik pada alur kerja. Saya hampir hanya mengalaminya saat bermain video game
      Saat bermain, saya sering memutar video YouTube di satu tab browser, dan mencari informasi terkait game di tab lain
      Jadi tepat sebelum Alt-Tab ke game, saya sering berinteraksi dengan tab bar, dan saat itulah tooltip terpicu
      Dalam penggunaan browser sehari-hari, kursor hampir selalu berada di atas konten situs web, dan di sana tooltip jarang muncul
    • Saya sering mengalami bug ini saat berinteraksi dengan video YouTube yang disematkan di halaman web lain
      Alurnya begini. Saat kursor diarahkan ke kontrol layar penuh pada pemutar sematan, tooltip “Full screen (f)” muncul, dan ketika kontrol diklik, video masuk layar penuh tetapi tooltip tetap tertinggal di atas video yang sedang diputar
      Saya menggunakan window manager Marco dari MATE di Linux X11
    • Di game juga mirip. Saat sebuah studio yang terkenal dengan judul-judul “rusak” merilis game, orang-orang mengunggah kompilasi hal-hal aneh yang terjadi, tapi di pihak saya hal seperti itu sama sekali tidak terjadi. Mungkin saya punya ketahanan bug bawaan
      Namun saya sering mengalami bug tidak berbahaya ketika membuka menu ekstensi di toolbar bookmark, yaitu ikon >> di kanan atas: yang muncul sebagai daftar dropdown bukan bookmark yang tidak tampil di toolbar, melainkan semua bookmark
  • Menariknya, bug ini didaftarkan bahkan sebelum versi pertama Firefox dirilis: https://en.wikipedia.org/wiki/Firefox_early_version_history
    Mengesankan bahwa mereka mempertahankan riwayat bug tracker tetap berfungsi selama itu

    • Mungkin saja riwayat bug tracker itu berlanjut sejak era Phoenix/Firebird
  • Oh, akhirnya. Bug terkait, https://bugzilla.mozilla.org/show_bug.cgi?id=1569439, sudah ditutup 9 bulan lalu, dan berkat itu keadaannya jadi sedikit lebih baik
    Bug itu hanya soal tooltip yang tidak hilang saat beralih ke aplikasi lain. Namun saat beralih ke workspace lain, tooltip masih tetap muncul, jadi sangat mengecewakan
    Kekurangannya, ini sampai batas tertentu adalah perbaikan yang “keliru”. Tooltip seharusnya tetap muncul meski jendela tidak punya fokus. Setidaknya begitu pada aplikasi GTK di Linux, dan Firefox juga berusaha meniru perilaku itu
    Yang perlu diperbaiki adalah akar penyebab tooltip tidak hilang ketika workspace berubah sehingga pointer mouse sebenarnya sudah tidak lagi berada di atas jendela

    • Yang paling sering saya temui bukan bug di TFA, melainkan bug terkait itu. Sudah lama tidak melihatnya, dan sekarang saya tahu alasannya
  • Tautan langsung patch: https://hg.mozilla.org/mozilla-central/rev/8ae372dc88d1

    • Apakah ini commit?
      Kalau begitu, apakah umum memasukkan perubahan indentasi dan perubahan kode sungguhan dalam commit yang sama?
      Secara pribadi, saya mungkin akan membuat commit perubahan indentasi terlebih dahulu, lalu melakukan perubahan kode di commit kedua
    • Wah, kalau mengecualikan baris yang berubah karena perubahan indentasi dalam commit ini, perubahan ini hanya berisi lima baris kode baru!