List items
Items from the current list are shown below.
Gecko
9 Jan 2024 : Day 133 #
It's time to pick up from where we left off yesterday, hanging on a couple of breakpoints on two different phones, one running ESR 78 and the other running ESR 91.
It feels weird leaving the phones in this state of limbo overnight. Astonishingly, even though I put my laptop to sleep, the SSH connections weren't dropped. Returning to discover things in exactly the same state I left them in is disconcerting. But in a good way.
Before I get on to the next steps I also want to take the time to acknowledge the help of TrickyPR who sent this helpful message via Mastodon:
This is really helpful. I've not had a chance to look into the remote debugging (I think it'll be something for the weekend) so please bear with me, but it looks like this info will definitely make for reference material.
To recap, yesterday we were stepping through nsDisplayBackgroundImage::AppendBackgroundItemsToTop() because we know that on ESR 78 we eventually reach a call to nsDisplayBackgroundImage::GetInitData(), whereas on ESR 91 this method is never called. The two versions of AppendBackgroundItemsToTop() have changed between ESR 78 and ESR 91, but they're close enough to be able to follow them both side-by-side.
But stepping through didn't work as well as I'd hoped because for the first time the breakpoint is hit on both devices, the method returns early in both cases. The AppendBackgroundItemsToTop() method gets called multiple times during a render, so it's not surprising that in some cases it returns early and in others it goes all the way through to GetInitData(). I need a call on ESR 78 that goes all the way to GetInitData() and — and here's the tricky bit — I need the same call on ESR 91 that returns early.
To get closer to this situation I'm going to move the breakpoints closer to the call to GetInitData() on both systems.
Here's the relevant bit of code, which is pretty similar on both ESR 78 and ESR 91, but this copy happens to come from ESR 91:
The following line is the last statement before the loop around the image layers is entered.
However, if I leave the breakpoint on the start of the condition I notice that during rendering the breakpoint is hit precisely four times on ESR 91.
In contrast, when rendering the page on ESR 78 the breakpoint is hit 108 times. That's a red flag, because it really suggests that there are a lot of background images being rendered on ESR 78, and almost no attempt to even render backgrounds on ESR 91.
What's more, on ESR 91, even though we can't place a breakpoint on the return lines, we can infer the value that's being returned by looking at the values of the variables going in to the condition. Here's the condition again on ESR 91 for reference:
The method will then return with a value of AppendedBackgroundType::None.
In contrast we know that on ESR 78 execution gets beyond this condition in order to actually render background images, just as we would expect for any relatively complex page.
Given all of the above it looks to me very much like the problem isn't happening in the render loop. Rendering is happening, there just isn't anything to render. There could be multiple reasons for this. One possibility is that the page is being received but somehow lost or dropped. The other is that the page isn't being sent in full. It could be JavaScript related.
To return to something discussed earlier, this behaviour distinguishes the problem from the issue we experience with Amazon on ESR 78. In that case, rendering most definitely occurs because we briefly see a copy of the page. The page visibly disappears in front of our eyes. In that case we'd expect there to be many breakpoint hits with rendering of multiple background images all prior to the page disappearing.
To make more sense of what's going on I need to go back down to the other end of the stack: the networking end. I realised after some thought that the experiments I ran earlier with EMBED_CONSOLE="network" set were not very effective. What I really want is a list of all the network access requests made from the browser in order to understand where the problem is happening. For example, are there any images being downloaded?
The last time I did this there weren't any images downloaded, but in retrospect that might have been because they were being cached. I should do this more robustly, and because I'm really only interested in the URLs, I can filter out all of the other details to make my life easier.
There are two reasons for doing this. First to compare with the URLs accessed using ESR 78, which is something I also failed to do previously. Second because if I have all the URLs, that might also help me piece together a full version of the page without all of the mysterious transformations that happen when I save the page manually from the desktop browser.
So to kick things off, here are all of the URLs accessed for ESR 78 when requesting the mobile version of the site. Note that the first thing I do is delete the profile entirely. That's to avoid anything being cached.
Mobile version of the site on ESR 78
It's also worth noting that some of the requests are to Mozilla servers rather than DuckDuckGo servers. I suspect that's a consequence of having wiped the profile: the browser is making accesses to retrieve some of the data that I deleted. We should ignore those requests.
Next up the desktop version of the same site. These were generated by selecting the "Desktop Mode" button in the browser immediately after downloading the mobile site. Consequently it's possible some data was cached.
Desktop version of the site on ESR 78
So now using ESR 91, here are the URLs accessed with an empty profile and the mobile version of the site.
Mobile version of the site on ESR 91
Desktop version of the site on ESR 91
If you'd like to read any of my other gecko diary entries, they're all available on my Gecko-dev Diary page.
It feels weird leaving the phones in this state of limbo overnight. Astonishingly, even though I put my laptop to sleep, the SSH connections weren't dropped. Returning to discover things in exactly the same state I left them in is disconcerting. But in a good way.
Before I get on to the next steps I also want to take the time to acknowledge the help of TrickyPR who sent this helpful message via Mastodon:
my knowledge of the fancy debugger is a lot more modern, but here are some tips. For the server:
- make sure you are building devtools/ (you probably already are)
- you can launch the devtools server through js: https://github.com/ajvincent/motherhen/blob/main/cleanroom/source/modules/DevtoolsServer.jsm
- you will have better luck with about:debugging on a similar version browser
- you need to set MOZ_DEVTOOLS to all
- you will need to implement a command line handler for -chrome (you can steal this, but it’s esm (needs esr +100?): https://github.com/ajvincent/motherhen/pull/34 ) Feel free to ping if you want clarification or get stuck.
This is really helpful. I've not had a chance to look into the remote debugging (I think it'll be something for the weekend) so please bear with me, but it looks like this info will definitely make for reference material.
To recap, yesterday we were stepping through nsDisplayBackgroundImage::AppendBackgroundItemsToTop() because we know that on ESR 78 we eventually reach a call to nsDisplayBackgroundImage::GetInitData(), whereas on ESR 91 this method is never called. The two versions of AppendBackgroundItemsToTop() have changed between ESR 78 and ESR 91, but they're close enough to be able to follow them both side-by-side.
But stepping through didn't work as well as I'd hoped because for the first time the breakpoint is hit on both devices, the method returns early in both cases. The AppendBackgroundItemsToTop() method gets called multiple times during a render, so it's not surprising that in some cases it returns early and in others it goes all the way through to GetInitData(). I need a call on ESR 78 that goes all the way to GetInitData() and — and here's the tricky bit — I need the same call on ESR 91 that returns early.
To get closer to this situation I'm going to move the breakpoints closer to the call to GetInitData() on both systems.
Here's the relevant bit of code, which is pretty similar on both ESR 78 and ESR 91, but this copy happens to come from ESR 91:
if (!bg || !drawBackgroundImage) { if (!bgItemList.IsEmpty()) { aList->AppendToTop(&bgItemList); return AppendedBackgroundType::Background; } return AppendedBackgroundType::None; } const ActiveScrolledRoot* asr = aBuilder->CurrentActiveScrolledRoot(); bool needBlendContainer = false; // Passing bg == nullptr in this macro will result in one iteration with // i = 0. NS_FOR_VISIBLE_IMAGE_LAYERS_BACK_TO_FRONT(i, bg->mImage) { if (bg->mImage.mLayers[i].mImage.IsNone()) { continue; } [...] nsDisplayList thisItemList; nsDisplayBackgroundImage::InitData bgData = nsDisplayBackgroundImage::GetInitData(aBuilder, aFrame, i, bgOriginRect, bgSC);I've chopped a bit out, but there's no way for the method to return in the part I've removed, so the bits shown here are the important pieces for our purposes today.
The following line is the last statement before the loop around the image layers is entered.
bool needBlendContainer = false;If I place a breakpoint on this line, on ESR 91 the breakpoint remains untouched:
(gdb) info break Num Type Disp Enb Address What 1 breakpoint keep n 0x0000007fbc3511d4 in nsDisplayBackgroundImage:: GetInitData(nsDisplayListBuilder*, nsIFrame*, unsigned short, nsRect const&, mozilla::ComputedStyle*) at layout/painting/nsDisplayList.cpp:3409 2 breakpoint keep y 0x0000007fbc3a8730 in nsDisplayBackgroundImage:: AppendBackgroundItemsToTop(nsDisplayListBuilder*, nsIFrame*, nsRect const&, nsDisplayList*, bool, mozilla::ComputedStyle*, nsRect const&, nsIFrame*, mozilla::Maybe<nsDisplayListBuilder::AutoBuildingDisplayList>*) at layout/painting/nsDisplayList.cpp:3632 breakpoint already hit 2 times (gdb) handle SIGPIPE nostop Signal Stop Print Pass to program Description SIGPIPE No Yes Yes Broken pipe (gdb) disable break 2 (gdb) break nsDisplayList.cpp:3766 Breakpoint 3 at 0x7fbc3a9344: file layout/painting/nsDisplayList.cpp, line 3766. (gdb) c [...]So the method must be being exited — in all cases — before this line occurs. From my recollection of stepping through the method earlier I'm pretty sure we reached this condition:
if (!bg || !drawBackgroundImage) {So I'll put a breakpoint there and try again.
(gdb) disable break 3 (gdb) break nsDisplayList.cpp:3755 Breakpoint 4 at 0x7fbc3a8dac: file layout/painting/nsDisplayList.cpp, line 3755. (gdb) c Continuing. [New LWP 28203] [LWP 27764 exited] [LWP 28203 exited] [Switching to LWP 31016] Thread 10 "GeckoWorkerThre" hit Breakpoint 4, nsDisplayBackgroundImage:: AppendBackgroundItemsToTop (aBuilder=0x7f9efa2378, aFrame=0x7f803c9eb8, aBackgroundRect=..., aList=0x7f9ef9ff08, aAllowWillPaintBorderOptimization= <optimized out>, aComputedStyle=<optimized out>, aBackgroundOriginRect=..., aSecondaryReferenceFrame=0x0, aAutoBuildingDisplayList=0x0) at layout/painting/nsDisplayList.cpp:3755 3755 if (!bg || !drawBackgroundImage) { (gdb)Now it hits. Let's try putting some breakpoints on the return calls.
(gdb) disable break 4 (gdb) break nsDisplayList.cpp:3758 Note: breakpoint 3 (disabled) also set at pc 0x7fbc3a9344. Breakpoint 5 at 0x7fbc3a9344: file layout/painting/nsDisplayList.cpp, line 3766. (gdb) break nsDisplayList.cpp:3761 Note: breakpoints 3 (disabled) and 5 also set at pc 0x7fbc3a9344. Breakpoint 6 at 0x7fbc3a9344: file layout/painting/nsDisplayList.cpp, line 3766. (gdb)That's not helpful: the debugger won't let me place a breakpoint on either of these lines, presumably because after compilation to machine code it's no longer possible to distinguish between the lines properly.
However, if I leave the breakpoint on the start of the condition I notice that during rendering the breakpoint is hit precisely four times on ESR 91.
In contrast, when rendering the page on ESR 78 the breakpoint is hit 108 times. That's a red flag, because it really suggests that there are a lot of background images being rendered on ESR 78, and almost no attempt to even render backgrounds on ESR 91.
What's more, on ESR 91, even though we can't place a breakpoint on the return lines, we can infer the value that's being returned by looking at the values of the variables going in to the condition. Here's the condition again on ESR 91 for reference:
if (!bg || !drawBackgroundImage) { if (!bgItemList.IsEmpty()) { aList->AppendToTop(&bgItemList); return AppendedBackgroundType::Background; } return AppendedBackgroundType::None; }And here are the values the debugger will give us access to:
Thread 10 "GeckoWorkerThre" hit Breakpoint 9, nsDisplayBackgroundImage:: AppendBackgroundItemsToTop (aBuilder=0x7f9efa2378, aFrame=0x7f80b5fa48, aBackgroundRect=..., aList=0x7f9ef9ff08, aAllowWillPaintBorderOptimization= <optimized out>, aComputedStyle=<optimized out>, aBackgroundOriginRect=..., aSecondaryReferenceFrame=0x0, aAutoBuildingDisplayList=0x0) at layout/painting/nsDisplayList.cpp:3755 3755 if (!bg || !drawBackgroundImage) { (gdb) p bg $8 = <optimized out> (gdb) p drawBackgroundImage $9 = false (gdb) p bgItemList.mLength $19 = 0 (gdb) c Continuing.I get the same results for all four cases and working through the logic, if drawBackgroundImage is set to false then !drawBackgroundImage will be set to true, hence (!bg || !drawBackgroundImage) will be set to true, hence the condition will be entered into. At that point we know that bgItemList has no members and so will be empty, so the nested condition won't be entered.
The method will then return with a value of AppendedBackgroundType::None.
In contrast we know that on ESR 78 execution gets beyond this condition in order to actually render background images, just as we would expect for any relatively complex page.
Given all of the above it looks to me very much like the problem isn't happening in the render loop. Rendering is happening, there just isn't anything to render. There could be multiple reasons for this. One possibility is that the page is being received but somehow lost or dropped. The other is that the page isn't being sent in full. It could be JavaScript related.
To return to something discussed earlier, this behaviour distinguishes the problem from the issue we experience with Amazon on ESR 78. In that case, rendering most definitely occurs because we briefly see a copy of the page. The page visibly disappears in front of our eyes. In that case we'd expect there to be many breakpoint hits with rendering of multiple background images all prior to the page disappearing.
To make more sense of what's going on I need to go back down to the other end of the stack: the networking end. I realised after some thought that the experiments I ran earlier with EMBED_CONSOLE="network" set were not very effective. What I really want is a list of all the network access requests made from the browser in order to understand where the problem is happening. For example, are there any images being downloaded?
The last time I did this there weren't any images downloaded, but in retrospect that might have been because they were being cached. I should do this more robustly, and because I'm really only interested in the URLs, I can filter out all of the other details to make my life easier.
There are two reasons for doing this. First to compare with the URLs accessed using ESR 78, which is something I also failed to do previously. Second because if I have all the URLs, that might also help me piece together a full version of the page without all of the mysterious transformations that happen when I save the page manually from the desktop browser.
So to kick things off, here are all of the URLs accessed for ESR 78 when requesting the mobile version of the site. Note that the first thing I do is delete the profile entirely. That's to avoid anything being cached.
Mobile version of the site on ESR 78
$ rm -rf ~/.local/share/org.sailfishos/browser $ EMBED_CONSOLE="network" sailfish-browser https://duckduckgo.com/ 2>&1 | grep "URL: " URL: https://duckduckgo.com/ URL: https://duckduckgo.com/dist/s.b49dcfb5899df4f917ee.css URL: https://duckduckgo.com/dist/o.2988a52fdfb14b7eff16.css URL: https://duckduckgo.com/dist/tl.3db2557c9f124f3ebf92.js URL: https://duckduckgo.com/dist/b.9e45618547aaad15b744.js URL: https://duckduckgo.com/dist/lib/l.656ceb337d61e6c36064.js URL: https://firefox.settings.services.mozilla.com/v1/buckets/monitor/ collections/changes/records?collection=hijack-blocklists&bucket=main URL: https://duckduckgo.com/locale/en_GB/duckduckgo85.js URL: https://firefox.settings.services.mozilla.com/v1/buckets/monitor/ collections/changes/records?collection=anti-tracking-url-decoration&bucket=main URL: https://firefox.settings.services.mozilla.com/v1/buckets/monitor/ collections/changes/records?collection=url-classifier-skip-urls&bucket=main URL: https://duckduckgo.com/dist/util/u.a3c3a6d4d7bf9244744d.js URL: https://duckduckgo.com/dist/d.01ff355796b8725c8dad.js URL: https://firefox.settings.services.mozilla.com/v1/buckets/main/ collections/hijack-blocklists/changeset?_expected=1605801189258 URL: https://firefox.settings.services.mozilla.com/v1/buckets/main/ collections/url-classifier-skip-urls/changeset?_expected=1701090424142 URL: https://firefox.settings.services.mozilla.com/v1/buckets/main/ collections/anti-tracking-url-decoration/changeset?_expected=1564511755134 URL: https://duckduckgo.com/dist/h.2d6522d4f29f5b108aed.js URL: https://duckduckgo.com/dist/ti.b07012e30f6971ff71d3.js URL: https://duckduckgo.com/font/ProximaNova-Reg-webfont.woff2 URL: https://content-signature-2.cdn.mozilla.net/chains/ remote-settings.content-signature.mozilla.org-2024-02-08-20-06-04.chain URL: https://duckduckgo.com/post3.html URL: https://duckduckgo.com/assets/logo_homepage.normal.v109.svg URL: https://duckduckgo.com/font/ProximaNova-Sbold-webfont.woff2 URL: https://duckduckgo.com/assets/onboarding/bathroomguy/teaser-2@2x.png URL: https://duckduckgo.com/assets/onboarding/arrow.svg URL: https://duckduckgo.com/assets/logo_homepage.alt.v109.svg URL: https://duckduckgo.com/font/ProximaNova-ExtraBold-webfont.woff2 URL: https://duckduckgo.com/assets/onboarding/bathroomguy/ 1-monster-v2--no-animation.svg URL: https://duckduckgo.com/assets/onboarding/bathroomguy/2-ghost-v2.svg URL: https://duckduckgo.com/assets/onboarding/bathroomguy/ 3-bathtub-v2--no-animation.svg URL: https://duckduckgo.com/assets/onboarding/bathroomguy/4-alpinist-v2.svg URL: https://duckduckgo.com/dist/p.f5b58579149e7488209f.js URL: https://improving.duckduckgo.com/t/hi?7857271&b=firefox&ei=true&i=false& d=m&l=en-GB&p=other&pre_atb=v411-5&ax=false&ak=false&pre_va=_&pre_atbva=_Now that's a lot more accesses than I had last time, which is a good sign. That's 32 URL accesses in total. Interestingly all bar one of the images are SVG format: all vector apart from a single bitmap.
It's also worth noting that some of the requests are to Mozilla servers rather than DuckDuckGo servers. I suspect that's a consequence of having wiped the profile: the browser is making accesses to retrieve some of the data that I deleted. We should ignore those requests.
Next up the desktop version of the same site. These were generated by selecting the "Desktop Mode" button in the browser immediately after downloading the mobile site. Consequently it's possible some data was cached.
Desktop version of the site on ESR 78
URL: https://duckduckgo.com/ URL: https://duckduckgo.com/_next/static/css/c89114cfe55133c4.css URL: https://duckduckgo.com/_next/static/css/6a4833195509cc3d.css URL: https://duckduckgo.com/_next/static/css/a2a29f84956f2aac.css URL: https://duckduckgo.com/_next/static/css/f0b3f7da285c9dbd.css URL: https://duckduckgo.com/_next/static/css/ed8494aa71104fdc.css URL: https://duckduckgo.com/_next/static/css/703c9a9a057785a9.css URL: https://duckduckgo.com/_next/static/chunks/webpack-7358ea7cdec0aecf.js URL: https://duckduckgo.com/_next/static/chunks/framework-f8115f7fae64930e.js URL: https://duckduckgo.com/_next/static/chunks/main-17a05b704438cdd6.js URL: https://duckduckgo.com/_next/static/chunks/pages/_app-ce0b94ea69138577.js URL: https://duckduckgo.com/_next/static/chunks/41966-c9d76895b4f9358f.js URL: https://duckduckgo.com/_next/static/chunks/93432-ebd443fe69061b19.js URL: https://duckduckgo.com/_next/static/chunks/18040-1287342b1f839f70.js URL: https://duckduckgo.com/_next/static/chunks/81125-b74d1b6f4908497b.js URL: https://duckduckgo.com/_next/static/chunks/39337-cd8caeeff0afb1c4.js URL: https://duckduckgo.com/_next/static/chunks/94623-d5bfa67fc3bada59.js URL: https://duckduckgo.com/_next/static/chunks/95665-30dd494bea911abd.js URL: https://duckduckgo.com/_next/static/chunks/55015-29fec414530c2cf6.js URL: https://duckduckgo.com/_next/static/chunks/61754-29df12bb83d71c7b.js URL: https://duckduckgo.com/_next/static/chunks/55672-19856920a309aea5.js URL: https://duckduckgo.com/_next/static/chunks/38407-070351ade350c8e4.js URL: https://duckduckgo.com/_next/static/chunks/pages/%5Blocale%5D/ home-34dda07336cb6ee1.js URL: https://duckduckgo.com/_next/static/ZNJGkb3SCV-nLlzz3kvNx/_buildManifest.js URL: https://duckduckgo.com/_next/static/ZNJGkb3SCV-nLlzz3kvNx/_ssgManifest.js URL: https://improving.duckduckgo.com/t/page_home_commonImpression?2448534& b=firefox&d=d&l=en-GB&p=linux&atb=v411-5&pre_va=_&pre_atbva=_&atbi=true& i=false&ak=false&ax=false URL: https://duckduckgo.com/_next/static/media/set-as-default.d95c3465.svg URL: https://duckduckgo.com/static-assets/image/pages/legacy-home/ devices-dark.png URL: https://duckduckgo.com/static-assets/backgrounds/ legacy-homepage-btf-mobile-dark.png URL: https://duckduckgo.com/_next/static/media/macos.61889438.png URL: https://duckduckgo.com/_next/static/media/windows.477fa143.png URL: https://duckduckgo.com/_next/static/media/app-store.501fe17a.png URL: https://duckduckgo.com/_next/static/media/play-store.e5d5ed36.png URL: https://duckduckgo.com/_next/static/media/chrome-lg.a4859fb2.png URL: https://duckduckgo.com/_next/static/media/edge-lg.36af7682.png URL: https://duckduckgo.com/_next/static/media/firefox-lg.8efad702.png URL: https://duckduckgo.com/_next/static/media/opera-lg.237c4418.png URL: https://duckduckgo.com/_next/static/media/safari-lg.8406694a.png URL: https://duckduckgo.com/_next/static/chunks/48292.8c8d6cb394d25a15.js URL: https://duckduckgo.com/static-assets/backgrounds/legacy-homepage-btf-dark.png URL: https://duckduckgo.com/static-assets/font/ProximaNova-Reg-webfont.woff2 URL: https://duckduckgo.com/static-assets/font/ProximaNova-ExtraBold-webfont.woff2 URL: https://duckduckgo.com/static-assets/font/ProximaNova-Bold-webfont.woff2 URL: https://duckduckgo.com/static-assets/font/ProximaNova-Sbold-webfont.woff2 URL: https://duckduckgo.com/static-assets/font/ProximaNova-RegIt-webfont.woff2 URL: https://duckduckgo.com/static-assets/image/pages/home/devices/how-it-works/ desktop/search-protection-back-light.png URL: https://duckduckgo.com/static-assets/image/pages/home/devices/how-it-works/ desktop/search-protection-front-dark.png URL: https://duckduckgo.com/_next/static/media/flame.1241f020.png URL: https://duckduckgo.com/_next/static/media/burn@2x.be0bd36d.png URL: https://duckduckgo.com/_next/static/media/flame@2x.40e1cfa0.png URL: https://duckduckgo.com/_next/static/media/widget-big@2x.a260ccf6.png URL: https://duckduckgo.com/_next/static/media/night@2x.4ca79636.png URL: https://duckduckgo.com/_next/static/media/dark-mode@2x.3e150d01.png URL: https://duckduckgo.com/static-assets/image/pages/home/devices/how-it-works/ desktop/email-protection-front-light.png URL: https://duckduckgo.com/static-assets/image/pages/home/devices/how-it-works/ desktop/app-protection-back-dark.png URL: https://duckduckgo.com/static-assets/image/pages/home/devices/how-it-works/ desktop/app-protection-front-dark.png URL: https://duckduckgo.com/_next/static/media/flame-narrow.70589b7c.png URL: https://duckduckgo.com/_next/static/media/widget-small@2x.07c865df.png URL: https://duckduckgo.com/static-assets/image/pages/home/devices/how-it-works/ search-protection-ios-dark.png URL: https://duckduckgo.com/static-assets/image/pages/home/devices/how-it-works/ web-protection-ios-dark.png URL: https://duckduckgo.com/static-assets/image/pages/home/devices/how-it-works/ email-protection-ios-dark.png URL: https://duckduckgo.com/static-assets/image/pages/home/devices/how-it-works/ desktop/web-protection-back-dark.png URL: https://duckduckgo.com/static-assets/image/pages/home/devices/how-it-works/ desktop/web-protection-front-dark.png URL: https://duckduckgo.com/static-assets/image/pages/home/devices/how-it-works/ desktop/email-protection-back-dark.png URL: https://duckduckgo.com/static-assets/image/pages/home/devices/how-it-works/ app-protection-ios-dark.png URL: https://duckduckgo.com/_next/static/media/add-firefox.f0890a6c.svg URL: https://duckduckgo.com/_next/static/media/WIRED-DARK-DEFAULT.b4d48a49.png URL: https://duckduckgo.com/_next/static/media/VERGE-DARK-DEFAULT.8850a2d2.png URL: https://duckduckgo.com/_next/static/media/UT-DARK-DEFAULT.6cd0020d.png URL: https://duckduckgo.com/_next/static/media/CNET-DARK.e3fd496e.png URL: https://improving.duckduckgo.com/t/atb_home_impression?9836955&b=firefox& d=d&l=en-GB&p=linux&atb=v411-5&pre_va=_&pre_atbva=_&atbi=true&i=false& ak=false&ax=falseThe desktop version generates many more access requests, 71 in total, including a large number of PNG files (I count 36 in total). These are the results for ESR 78, so that's a working copy of the site. On the face of it there shouldn't be any reason for ESR 91 to be served anything different to this.
So now using ESR 91, here are the URLs accessed with an empty profile and the mobile version of the site.
Mobile version of the site on ESR 91
$ rm -rf ~/.local/share/org.sailfishos/browser $ EMBED_CONSOLE="network" sailfish-browser https://duckduckgo.com/ 2>&1 | grep "URL: " URL: http://detectportal.firefox.com/success.txt?ipv4 URL: https://duckduckgo.com/ URL: https://location.services.mozilla.com/v1/country?key=no-mozilla-api-key URL: https://duckduckgo.com/static-assets/font/ProximaNova-RegIt-webfont.woff2 URL: https://duckduckgo.com/static-assets/font/ProximaNova-ExtraBold-webfont.woff2 URL: https://duckduckgo.com/static-assets/font/ProximaNova-Reg-webfont.woff2 URL: https://duckduckgo.com/static-assets/font/ProximaNova-Sbold-webfont.woff2 URL: https://duckduckgo.com/static-assets/font/ProximaNova-Bold-webfont.woff2 URL: https://duckduckgo.com/_next/static/css/c89114cfe55133c4.css URL: https://duckduckgo.com/_next/static/css/6a4833195509cc3d.css URL: https://duckduckgo.com/_next/static/css/a2a29f84956f2aac.css URL: https://duckduckgo.com/_next/static/css/f0b3f7da285c9dbd.css URL: https://duckduckgo.com/_next/static/css/ed8494aa71104fdc.css URL: https://duckduckgo.com/_next/static/css/703c9a9a057785a9.css URL: https://duckduckgo.com/_next/static/chunks/webpack-7358ea7cdec0aecf.js URL: https://duckduckgo.com/_next/static/chunks/framework-f8115f7fae64930e.js URL: https://firefox.settings.services.mozilla.com/v1/buckets/monitor/ collections/changes/changeset?collection=anti-tracking-url-decoration& bucket=main&_expected=0 URL: https://firefox.settings.services.mozilla.com/v1/buckets/monitor/ collections/changes/changeset?collection=query-stripping&bucket=main& _expected=0 URL: https://firefox.settings.services.mozilla.com/v1/buckets/monitor/ collections/changes/changeset?collection=hijack-blocklists& bucket=main&_expected=0 URL: https://firefox.settings.services.mozilla.com/v1/buckets/monitor/ collections/changes/changeset?collection=url-classifier-skip-urls& bucket=main&_expected=0 URL: https://duckduckgo.com/_next/static/chunks/main-17a05b704438cdd6.js URL: https://duckduckgo.com/_next/static/chunks/pages/_app-ce0b94ea69138577.js URL: https://duckduckgo.com/_next/static/chunks/41966-c9d76895b4f9358f.js URL: https://duckduckgo.com/_next/static/chunks/93432-ebd443fe69061b19.js URL: https://firefox.settings.services.mozilla.com/v1/buckets/monitor/ collections/changes/changeset?collection=password-recipes&bucket=main& _expected=0 URL: https://duckduckgo.com/_next/static/chunks/18040-1287342b1f839f70.js URL: https://duckduckgo.com/_next/static/chunks/81125-b74d1b6f4908497b.js URL: https://duckduckgo.com/_next/static/chunks/39337-cd8caeeff0afb1c4.js URL: https://duckduckgo.com/_next/static/chunks/94623-d5bfa67fc3bada59.js URL: https://duckduckgo.com/_next/static/chunks/95665-30dd494bea911abd.js URL: https://duckduckgo.com/_next/static/chunks/55015-29fec414530c2cf6.js URL: https://duckduckgo.com/_next/static/chunks/61754-29df12bb83d71c7b.js URL: https://duckduckgo.com/_next/static/chunks/55672-19856920a309aea5.js URL: https://duckduckgo.com/_next/static/chunks/38407-070351ade350c8e4.js URL: https://duckduckgo.com/_next/static/chunks/pages/%5Blocale%5D/ home-34dda07336cb6ee1.js URL: https://duckduckgo.com/_next/static/ZNJGkb3SCV-nLlzz3kvNx/_buildManifest.js URL: https://duckduckgo.com/_next/static/ZNJGkb3SCV-nLlzz3kvNx/_ssgManifest.js URL: https://firefox.settings.services.mozilla.com/v1/buckets/monitor/ collections/changes/changeset?collection=search-config&bucket=main& _expected=0 URL: https://firefox.settings.services.mozilla.com/v1/buckets/main/collections/ anti-tracking-url-decoration/changeset?_expected=1564511755134 URL: https://firefox.settings.services.mozilla.com/v1/buckets/main/collections/ query-stripping/changeset?_expected=1694689843914 URL: https://firefox.settings.services.mozilla.com/v1/buckets/main/collections/ hijack-blocklists/changeset?_expected=1605801189258 URL: https://firefox.settings.services.mozilla.com/v1/buckets/main/collections/ password-recipes/changeset?_expected=1674595048726 URL: https://firefox.settings.services.mozilla.com/v1/buckets/main/collections/ url-classifier-skip-urls/changeset?_expected=1701090424142 URL: https://firefox.settings.services.mozilla.com/v1/buckets/main/collections/ search-config/changeset?_expected=1701806851414 URL: https://content-signature-2.cdn.mozilla.net/chains/ remote-settings.content-signature.mozilla.org-2024-02-08-20-06-04.chainNow that's certainly more files than I thought previously were being accessed using ESR 91. In fact its 45 access requests, which is more than we saw for ESR 78. What about the desktop version.
Desktop version of the site on ESR 91
URL: https://duckduckgo.com/ URL: https://duckduckgo.com/static-assets/font/ProximaNova-RegIt-webfont.woff2 URL: https://duckduckgo.com/static-assets/font/ProximaNova-ExtraBold-webfont.woff2 URL: https://duckduckgo.com/static-assets/font/ProximaNova-Reg-webfont.woff2 URL: https://duckduckgo.com/static-assets/font/ProximaNova-Sbold-webfont.woff2 URL: https://duckduckgo.com/_next/static/css/c89114cfe55133c4.css URL: https://duckduckgo.com/_next/static/css/6a4833195509cc3d.css URL: https://duckduckgo.com/_next/static/css/a2a29f84956f2aac.css URL: https://duckduckgo.com/_next/static/css/f0b3f7da285c9dbd.css URL: https://duckduckgo.com/_next/static/css/ed8494aa71104fdc.css URL: https://duckduckgo.com/_next/static/css/703c9a9a057785a9.css URL: https://duckduckgo.com/static-assets/font/ProximaNova-Bold-webfont.woff2 URL: https://duckduckgo.com/_next/static/chunks/webpack-7358ea7cdec0aecf.js URL: https://duckduckgo.com/_next/static/chunks/framework-f8115f7fae64930e.js URL: https://duckduckgo.com/_next/static/chunks/main-17a05b704438cdd6.js URL: https://duckduckgo.com/_next/static/chunks/pages/_app-ce0b94ea69138577.js URL: https://duckduckgo.com/_next/static/chunks/41966-c9d76895b4f9358f.js URL: https://duckduckgo.com/_next/static/chunks/93432-ebd443fe69061b19.js URL: https://duckduckgo.com/_next/static/chunks/18040-1287342b1f839f70.js URL: https://duckduckgo.com/_next/static/chunks/81125-b74d1b6f4908497b.js URL: https://duckduckgo.com/_next/static/chunks/39337-cd8caeeff0afb1c4.js URL: https://duckduckgo.com/_next/static/chunks/94623-d5bfa67fc3bada59.js URL: https://duckduckgo.com/_next/static/chunks/95665-30dd494bea911abd.js URL: https://duckduckgo.com/_next/static/chunks/55015-29fec414530c2cf6.js URL: https://duckduckgo.com/_next/static/chunks/61754-29df12bb83d71c7b.js URL: https://duckduckgo.com/_next/static/chunks/55672-19856920a309aea5.js URL: https://duckduckgo.com/_next/static/chunks/38407-070351ade350c8e4.js URL: https://duckduckgo.com/_next/static/chunks/pages/%5Blocale%5D/ home-34dda07336cb6ee1.js URL: https://duckduckgo.com/_next/static/ZNJGkb3SCV-nLlzz3kvNx/_buildManifest.js URL: https://duckduckgo.com/_next/static/ZNJGkb3SCV-nLlzz3kvNx/_ssgManifest.jsOnly 30 accesses. That's really unexpected. I'm also going to collect myself a version of the full log output in case I need to refer back to it. First on ESR 78:
$ rm -rf ~/.local/share/org.sailfishos/browser $ EMBED_CONSOLE="network" sailfish-browser https://duckduckgo.com/ \ 2>&1 > log-ddg-78.txtThen also on ESR 91:
$ rm -rf ~/.local/share/org.sailfishos/browser $ EMBED_CONSOLE="network" sailfish-browser https://duckduckgo.com/ \ 2>&1 > log-ddg-91.txtThe next step will be to compare the results from ESR 78 with those from ESR 91 properly. That's where I'll pick this up tomorrow.
If you'd like to read any of my other gecko diary entries, they're all available on my Gecko-dev Diary page.
Comments
Uncover Disqus comments