Bug tooltip Firefox diperbaiki setelah 22 tahun
(bugzilla.mozilla.org)- Bug
tooltip-ghostyang membuat tooltip tetap berada di depan meski Firefox ada di latar belakang telah lama dilacak di Bugzilla, dan statusnya menjadiVERIFIED FIXEDdi 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 kemozilla-centraldengan revisi8ae372dc88d1 - 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 aliastooltip-ghost - Statusnya
VERIFIED FIXED, dan milestone targetnya adalah 119 Branch - Klasifikasinya
Core :: XUL, tipenyadefect, dan tingkat keparahannyaS3
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
xfcedanxfwm
- 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
Optionsmilik 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
+untukOpen a New Tabjuga 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
autolanddanmozilla-central - Status berubah dari
ASSIGNEDmenjadiRESOLVED, 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
firefox119diubah darifixedmenjadiverified - Seorang pengguna menulis bahwa masalah hanya muncul saat
MOZ_ENV_XINPUT2=1dan hilang saatMOZ_ENV_XINPUT2=0, yang kemudian dikaitkan denganbug 1809029 - Setelah itu, bug-bug berikut ditautkan sebagai regresi terkait
1857513: tooltip sidebar bookmark tidak lagi muncul saat hover jika sidebar tidak memiliki fokus1861427: tooltip tidak lagi muncul saat hover ketika aplikasi lain yang memiliki fokus2043757: di Windows 11, judul tab tidak lagi muncul saat hover ketika Firefox sebagian tertutup oleh jendela lain
1 komentar
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
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
https://www.youtube.com/watch?v=ZSRHeXYDLko&t=2729s
[1] https://bugzilla.mozilla.org/show_bug.cgi?id=1479858
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
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
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
!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
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
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
onmouseleaveatauonmouseout, maka diperlukan workaround dan hack. Contohnya membuat event sintetis saat jendela kehilangan fokusPenjelasan 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
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
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
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 bookmarkMenariknya, 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
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
Tautan langsung patch: https://hg.mozilla.org/mozilla-central/rev/8ae372dc88d1
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